geom: Document existing --libxo support in the manual pages
The standard list and status subcommands of every GEOM class emit
through libxo, and so does geom -p, but only geom.8 (list, status) and
gpart.8 (show) mentioned it. Mark the list and status forms with
--libxo in all class manual pages, add the option description, and
cross-reference xo_options(7). Also mark geom -p in geom.8.
Only forms whose output already goes through libxo are marked;
class-specific verbs such as gmirror dump still print directly and are
left alone.
Reviewed by: adrian, bcr, carlavilla, des
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D59574
tpm: Do not use timed tsleep() while polling during cold boot
Commit 4e0f283fb97a made tpm_tis12_init() wait for TPM_STS_CMD_READY
after aborting any command. The wait is implemented by the driver's
existing tpm_waitfor_poll() loop, which sleeps with a one-tick tsleep()
between status reads. Until now, that loop only ran from the resume and
command paths after boot. From tpm_attach() it can panic with "timed
sleep before timers are working" when the TPM is attached from ACPI
during cold boot and the chip does not report ready on the first status
read.
Before 4e0f283fb97a, tpm_tis12_init() wrote TPM_STS_CMD_READY and
returned without waiting, so the polling loops only ran after boot.
tpm_request_locality() had the same latent hazard but its fast path
returns before sleeping whenever locality is already active.
Nothing calls wakeup() on the channels used by these polling loops, so
the sleeps are pure delays. Use pause_sig(), which falls back to
DELAY() while the kernel is cold and returns EWOULDBLOCK, a value these
[10 lines not shown]
evdev: map ChromeOS "Vivaldi" top-row action keys
Chromebook keyboards driven by the ChromeOS EC emit the top-row action
keys as scancode set 1 codes 0xE0 0x11 - 0xE0 0x1E (see the codeset 1
comments on the SCANCODE_* enum in chrome-ec
include/keyboard_8042_sharedlib.h). The e0 half of the
evdev_scancode2key() translation table leaves eleven of those at NONE,
so on FreeBSD those keys emit no evdev event at all and userspace
remappers such as keyd have nothing to bind to:
e0 11 fullscreen KEY_ZOOM
e0 12 overview KEY_SCALE
e0 13 screenshot KEY_SYSRQ
e0 14 brightness down KEY_BRIGHTNESSDOWN
e0 15 brightness up KEY_BRIGHTNESSUP
e0 16 privacy screen toggle KEY_PRIVACY_SCREEN_TOGGLE
e0 17 kbd backlight down KEY_KBDILLUMDOWN
e0 18 kbd backlight up KEY_KBDILLUMUP
e0 1a play/pause KEY_PLAYPAUSE
[15 lines not shown]
ig4(4): fix attach of ACPI-enumerated LPSS controllers
Intel LPSS I2C controllers enumerated through ACPI rather than PCI never
attach on Haswell and Broadwell, so every device behind those buses is
lost. On a Dell XPS 13 9343 that hides the I2C HID touchpad and leaves
only the PS/2 fallback, which the firmware does not restore after S3.
Three causes, all on the ACPI path:
Firmware may leave an LPSS function in D3, where its registers read as
all-ones and set_controller() fails with "controller error during
attach-1". Run _PS0 before mapping them. The PCI path does not need
this, which is why the gap went unnoticed.
INT33C2, INT33C3, INT3432 and INT3433 are Lynx Point-LP and Wildcat
Point-LP, which ig4_pci.c already classifies as IG4_HASWELL; the ACPI
path called everything but APMC0D0F an Atom SoC.
The functional clock stays gated until bit 0 of IG4_REG_CLK_PARMS is
[14 lines not shown]
tests/sys/vfs: add ABI-root absolute symlink tests
Pin the overlay namei(9) uses for Linux ABI processes: a target under
the ABI root wins (PR 289739), a native-only target should retry from
the native root (PR 297426), an ENOENT past a resolved ABI target is
not retried, and the plain no-symlink native fallback is unchanged.
Skip without a Linux userland so CI stays green. The two native-only
cases use atf_expect_fail until the retry lands.
PR: 297426
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D59990
whereis(1): Simplify code
Simplify the way we build paths.
Avoid decolonification of source paths.
Remove gnu directories and add non-tracked ones.
Fix a memory leak while here.
Approved by: ngie@
Differential Revision: https://reviews.freebsd.org/D59846
vm_page: Replace PGA_EXECUTABLE with PGA_PMAP_PRIV1
At present, PGA_EXECUTABLE is only used by the powerpc mmu_oea64 pmap.
The MI layer only accesses this flag to assert that it is clear when a
managed page is freed. Soon, we will need a similar, but not identical,
machine-dependent flag in the arm64 pmap. So, we rename this flag to
PGA_PMAP_PRIV1, simply saying that it is reserved for use by the pmap.
Each pmap can then define a name that best reflects its own meaning.
However, we still assert that this flag is clear when a managed page is
freed.
No functional change.
Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D59995
arm64 pmap: Eliminate redundant icache synchronization
Creating an executable user-space mapping to write-back memory
synchronizes the icache with the page's contents, whether or not those
contents have changed since the previous synchronization. Use the pmap
private page flag PGA_ICACHE_SYNCED to record that the icache has been
synchronized with a managed page's contents and that the page has no
writable mappings. When the flag is set, the creation of another
executable mapping to the page can skip the synchronization. The flag
is cleared when a writable mapping to the page is created, using a
single atomic operation that keeps PGA_WRITEABLE and PGA_ICACHE_SYNCED
from ever being simultaneously set, and when the page's last mapping is
destroyed.
Assisted-by: Claude Code (Fable 5.1)
Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D59865
amd64: gate WRMSRNS immediate form on compiler support
This support was introduced in LLVM 20 and we still support releases
with LLVM 19 so it's too early to require LLVM 20. Decay to the
non-immediate form when the compiler it too old. This makes the ifunc
pointless, but limits the need for other ifdefs.
Reviewed by: kib
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D60023
uio: make *copyinuio take a void *
This aligns with copyinuio_t and avoids some hypothetical undefined
behavor around calling functions with mismatched types.
Reviewed by: kib
Effort: CHERI upstreaming
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D60024
dpaa2: Don't return simplebus devinfo for a non-simplebus child
dpaa2_mc_simplebus_get_devinfo() must not treat the MC resource-container
device as a simplebus child. Return NULL when child is sc->rcdev instead
of forwarding OFW_BUS_GET_DEVINFO() for that device.
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D59836