t_signal_and_fpu: Fix XMM register trashing.
The units we read from memory into registers are 16 bytes (128 bits)
each, not 32 bytes (256 bits).
Fortunately, this mistake didn't prevent the test from generally
working: reading past the end of our stack frame will just give us
other garbage that is unlikely to coincide with the register content
that the interrupted code expects.
PR kern/60426: Signal handler corrupts AVX (YMM) registers
nvmm: Add support for extended CPU state (XSAVE) beyond x87/SSE.
New machine-dependent x86 vCPU configuration command
NVMM_VCPU_CONF_XCR0_MASK sets the vCPU's XCR0 mask, that is, the set
of XSAVE features that the guest sees as supported in the vCPU. This
command is advertised by the new machine capability
NVMM_CAP_ARCH_VCPU_CONF_XCR0_MASK. (Changing the XCR0 mask after the
guest has begun execution will clear all extended CPU state for now;
it is unlikely that hypervisor software will do this anyway.)
This change doesn't expose the XSAVE area to userland in the comm
page -- there are already machine-independent members in struct
nvmm_comm_page at fixed offsets past the machine-dependent state so
we can't just extend struct nvmm_vcpu_state without breaking the ABI.
And the XSAVE area may exceed a page, but the address space for the
virtual machine uvm object packs comm areas in consecutive pages, so
we can't put it in the comm page at all without breaking the ABI
another way.
[10 lines not shown]
meta_ignore use :N with .MAKE.META.IGNORE_PATTERNS
By using :N .MAKE.META.IGNORE_PATTERNS is just a special case
of .MAKE.META.IGNORE_FILTER and processed the same way.
Now that bad144 handling is isolated to the places that care about it,
garbage-collect it from all of the various machine-dependent files that
have been cargo-culting it around needlessly for 20+ years.
Version bump to 11.99.7 because this changes the size of struct cpu_disklabel
on some platforms, and that structure is exposed in the module ABI.
Apply changes between 2026b and 2026c
Release 2026c - 2026-07-08 10:23:58 -0700
Briefly:
Alberta moved to permanent -06 on 2026-06-18.
Morocco moves to permanent +00 on 2026-09-20.
More integer overflow bugs have been fixed in zic.
Changes to future timestamps
Alberta's 2026-03-08 spring forward was its last foreseeable clock
change, as it moved to permanent -06 thereafter. (Thanks to Roozbeh
Pournader and others.) Model this with its traditional abbreviation
CST. Although the change to permanent -06 legally took place on
2026-06-18, temporarily model the change to occur on 2026-11-01 at
02:00 instead, for the same reason we introduced a similarly
temporary hack for British Columbia in 2026b.
[45 lines not shown]
sh - read - handle read errors in read builtin
It used to be (incorrectly) that a read error was treated
the same as EOF in the read builtin utility. They should
be errors, with a message, and exit status > 1. Now they are.
Ooops, previous commit log should have been:
Fix conditional avaiability of code to convert between partitioning
schemes. It is needed if extended partitioning is available
(where we have a menu entry to invoke it manually) or we
compile in the "this disk is too big for disklabel" checks.
Define a "BI_MACH_FDT" machine type. The value for this record type
is 0x46445400 ('FDT\0') and unlikely to collide with any other new
machine types that Linux/m68k might decide to allocate.
This machine type has 3 machine-type-specific bootinfo record types:
- BI_FDT_PLATFORM -- a C string providing more detail about the specific
machine / platform.
- BI_FDT_BLOB -- a data record containing a Flattened Device Tree blob.
- BI_FDT_ELF_SYMS -- a memory record pointing to the location of any
loaded ELF symbols, assumed to be contiguous with the kernel +
bootinfo data. This record is needed early, possibly before virtual
memory has been bootstrapped, so that the symbols can be preserved.
Support 8-bit PIO if the front-end indicates that it's necessary:
- In wdc_drvprobe(), if neither ATAC_CAP_DATA16 nor ATAC_CAP_DATA32
is set in the controller capabilities, then attempt to enable 8-bit
PIO on the drive. If that command fails, ignore the drive.
- In wdc_datain_pio(), if we're doing 8-bit PIO, check for ATA_DRIVE_NOSTREAM
and simulate a NOSTREAM 16-bit PIO. This is necessary because we
treat the IDENTIFY command as "special" for historical (and almost
certainly bad) reasons.
- wdc_dataout_pio() gets the same NOSTREAM shenanigans for 8-bit PIO,
although I would be surprised if it is ever requested.