[SLP] More accurately cost RISCV scalar splats (#213104)
Backends may have a fast path for splatting scalar operands (i.e. rather
than generating the splat vector, the vector instruction may be able to
take a scalar operand), for example RISCV `vfoo.vx` instructions. Pass a
hint to the TTI when costing the insert/shuffle sequence in such cases.
Fixes #212413.
Assisted By: Codex
zio_crypt: free the key unwrap uios when decryption fails
zio_crypt_key_unwrap() allocates a pair of iovec buffers through
zio_crypt_uios_init_os() and releases them with zio_crypt_uios_fini_os()
once the keys have been decrypted. When zio_decrypt_os() fails it jumps
straight to the error label, which skips that release, so both buffers
are leaked.
The failure is reachable from userland: any key unwrap that does not
authenticate leaks 64 bytes twice, so a loop of "zfs load-key" calls
with the wrong passphrase grows kernel memory without bound. It is not
Linux specific -- the FreeBSD implementation allocates these buffers as
well.
Release the uios as soon as the crypto operation returns and check the
result afterwards, matching zio_crypt_key_wrap(), which already frees
them unconditionally on both paths. The buffers are then released
exactly once, and the error label continues to own nothing.
[7 lines not shown]
ZTS: fix test-runner crashing immediately under -m
sudo has no -c option, so it exits with a usage error and the run dies
before the first test case.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Alexander Moch <mail at alexmoch.com>
Closes #19117
zpool: Add zpool status -vv error ranges
Print the byte error ranges with 'zpool status -vv'. This works
with the normal zpool status formatting flags (-p, -j, --json-int).
In addition:
- Modify ZFS_IOC_OBJ_TO_STATS ioctl to optionally return "extended"
object stats.
- Let zinject corrupt zvol data.
- Add test case.
- Add DIOCGPHYSPATH geom attribute to FreeBSD zvols. This works
basically the same as Linux's BLKZNAME ioctl, and returns the
dataset name for a zvol (like "tank/vol"). This is used by zinject.
This commit takes code from these PRs: #17502 #9781 #8902
Reviewed-by: Alek Pinchuk <Alek.Pinchuk at connectwise.com>
Reviewed-by: Akash B <akash-b at hpe.com>
[5 lines not shown]
[ORC] Add ConnectionSpec for connection string parsing (#224000)
A ConnectionSpec is the parsed form of a string describing one
connection a process should establish with its peer:
<transport>[:<action>]=<descriptor>
E.g. "fd=3" or "tcp:connect=localhost:20000". The parser only checks
punctuation: transport and action names are opaque tokens, and the
descriptor's syntax is left to the transport, which lets a descriptor
contain ':' and '=' unescaped (e.g. "tcp:listen=[::1]:0").
This will be used by llvm-jitlink and llvm-jitlink-executor to
generalize out-of-process executor connection setup beyond the current
fd/TCP-only options.
x86/sysbeep(4): Don't detach at shutdown.
This reverts sys/arch/x86/isa/clock.c rev. 1.32, which was the first
of a spate of changes to sprinkle DVF_DETACH_SHUTDOWN for reasons
that were unclear and apparently interfere with other functionality:
> Module Name: src
> Committed By: dyoung
> Date: Tue Apr 7 17:51:46 UTC 2009
>
> Modified Files:
> src/sys/arch/x86/isa: clock.c
>
> Log Message:
> Detach sysbeep0 at shutdown.
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.31 -r1.32 src/sys/arch/x86/isa/clock.c
[18 lines not shown]
adjtime.2 & gettimeofday.2: minor wording and style tweaks
(Various man pages can't decide between "super user", "super-user", and
"superuser"; let's at least be consistent from line to line in one
man page.)
[clang][flang][OpenMP] Correct OpenMP context selector matching and scoring
Context selector ranking is shared by DECLARE VARIANT and metadirective
lowering. Incorrect construct matches, context-dependent device weights, or
overflowing scores can select a different variant and cause Flang to skip
required loop diagnostics.
Preserve the highest-scoring ordered construct matches and derive device
weights from the enclosing context. Widen score arithmetic as needed, and
retain selector identity and scores for unknown properties so MATCH_ANY and
MATCH_NONE handle dynamic conditions and implicit NOTHING correctly. Bound
lowering contexts at TARGET and include SIMD traits so Clang and Flang use
the same context for selection.
Assisted with codex.
NAS-143880 / 27.0.0-BETA.1 / Add S3 protocol tests under tests/sharing_protocols/s3 (#19776)
A bucket's stored options are almost all unobservable through the API:
what object_ownership means, what a DENY grant does, whether a
manage_buckets key can create a bucket. Provision through the API,
observe over the protocol.
Assets split in two. The middleware half is assets/s3.py -- accounts,
access keys, buckets, grants, the service -- and imports no client
library, so it stays usable on a runner without one. The client half is
s3_client.py in the test directory rather than tests/protocols/, whose
`__init__` imports every client it re-exports and would make an S3 case
need samba and pynfs to reach boto3.
The session stands up two principals and nine buckets, one per thing
that is only answerable per bucket, and skips rather than proving
something weaker where it could not make one.
Beside the bucket plane: the object surfaces. Metadata and the content
[20 lines not shown]
libbsdconf: independent version macros
sysconf(8) --version now prints the library version alongside its
own so each can move on its own clock. Assigning a bitmask to
bool already converts zero/nonzero; drop the redundant != 0 (fuz).
Reviewed by: fuz, kfv
Differential Revision: https://reviews.freebsd.org/D59720
[SPARC] Fix SelectForceADDRrr for global addresses and non-reg operands (#220013)
When lowering byte-swapped memory operations on SPARC V9, LLVM emits
ASI-tagged memory instructions (such as STHArr, STArr, LDArr, etc.) that
require register+register addressing modes matched via ForceADDRrr.
SelectForceADDRrr previously forwarded 2-operand address nodes directly
to SelectADDRrr. However, SelectADDRrr explicitly returns false when
encountering SPISD::Lo (used in %hi/%lo global address calculations) or
small constant offsets in order to allow standard ADDRri patterns to
match. Because SelectForceADDRrr returned the result of SelectADDRrr
directly instead of falling back to Base = Addr, Disp = %g0, any
endian-adjusted load or store targeting a global variable failed to
select and caused a backend compiler crash:
"Cannot select: SPISD::STORE_LITTLE ..."
Fix SelectForceADDRrr so that if SelectADDRrr fails to match, it falls
back to evaluating the full address into a base register and using %g0
as the offset register. Also add tests for global variable byte-swapped
[7 lines not shown]
[libc++] Don't assume a valid range in find_if for empty inputs (#213752)
Iterators for empty ranges are sometimes implemented using a
non-aligned sentinel value. Requiring proper alignment in that
case (which is part of the valid range assumption) causes a
hardening failure. Instead, don't make the assumption of a
valid range when the input range is empty in find_if.
(cherry picked from commit 83290d61f6ead40a5c38297a0442b63291ce7a48)
[libc++] Opt `std::*set` out of map key extraction optimization (#220452)
PR #154512 (relanded by #155565) removed `__can_extract_map_key`, which
had a blanket opt-out for `std::*set`s. The new logic does not have that
opt-out, leading to `std::set`s being incorrectly constructed.
The new regression tests demonstrate this, but essentially the idea is:
1. Have `std::set<T> foo;`
2. Call `foo.emplace(some_t,
arg_that_influences_comparisons_or_hashes);`
3. The emplace will internally search using `some_t` as the key, *not*
`T(some_t, arg_that_influences_comparisons_or_hashes);`
This opts out `std::*set` from this optimization to match previous
behavior.
Tests and fix were produced by an LLM. I reviewed them and they seem
reasonable to me, though I don't have a strong background in libc++
testing conventions.
[7 lines not shown]
[DirectX] Make DXILOpLowering split vector coordinates, offsets, and gradient operands (#223091)
Fixes https://github.com/llvm/llvm-project/issues/217777
DXILOpLowering didn't split vector coordinates, offsets, and gradient
operands into scalars for textureLoad, textureStore, and sample
intrinsics like it did for store data. This PR fixes that.
This PR also removes inconsistencies where the DXILOpLowering pass
emitted a mix of i64 and i32 indices for `extractelement`. It now just
emits i32 indices.
Assisted by: Claude Opus 5
Add sysconf(8) and libbsdconf(3)
Complete the native configuration trinity: sysctl(8) for live kernel
state, sysrc(8) for rc.conf(5), and sysconf(8) for the remaining base
configuration -- loader.conf(5), sysctl.conf(5), and the make.conf(5)
family -- atop libbsdconf(3).
libbsdconf resurrects figpar as a unified reader/writer. Callbacks own
semantics; statements may span multiple lines via backslash continuation;
non-seekable input is spooled; writes are atomic (mkstemp, fsync, rename)
with mode/owner preservation. Format descriptors name each target, its
files, and quoting rules without private parsers. Multi-file targets
follow boot sourcing order; loader chases loader_conf_files as the boot
loader does.
sysconf(8) is the operator-facing tool: name / name=value on a required
target, sysrc-style list edits, make append and list-strike where they
belong, jail/altroot, and a capsicum sandbox for read-only use.
[21 lines not shown]