OpenBSD
7.3
![]() |
Released Apr 10, 2023. (54th OpenBSD release) Copyright 1997-2023, Theo de Raadt. 7.3 Song: “The Wizard and the Fish“
All applicable copyrights and credits are in the src.tar.gz, |
What’s New
This is a partial list of new features and systems included in OpenBSD 7.3.
For a comprehensive list, see the changelog leading
to 7.3.
- Various kernel improvements:
- Added waitid(2),
wait for process state change. - Added pinsyscall(2),
specify the call stub for a specific system call. - Added getthrname(2) and
setthrname(2),
get or set thread name. - Added WTRAPPED option for waitid(2) to control
whether CLD_TRAPPED state changes, i.e., ptrace(2) on a process, are reported. - Introduced clockintr(9), a
machine-independent clock interrupt scheduler. Switched all
architectures to use the new subsystem. - Introduced a new kern.autoconf_serial sysctl(8) that can be used
by userland to monitor state changes of the kernel device tree. - Fixed pmap(9) bugs
involving entering an executable mapping for a page before
synchronizing the data and instruction cache on arm64 and riscv64. - Removed copystr(9) from the public API.
- Added getnsecruntime(9).
Offers fast access to the system runtime clock at the cost of precision. - Prevent detaching (“bioctl -d detach”) of a boot volume on a RAID managed by bioctl(8).
- On arm64, avoid using 1GB mappings for the identity map in the
early kernel bootstrap phase and when booting the secondary CPUs. This
avoids accidentally mapping memory regions that should not be mapped
(i.e. secure memory) as all mapped memory can be accessed
speculatively. - On arm64, add a machdep.lidaction sysctl(8) for aplsmc(4) Apple Silicon
laptops.
The arm64 default for the machdep.lidaction is 1, making the
system suspend when the lid is closed. aplsmc(4) provides support
for the lid position sensor. - Changed arm64 suspend idle loop from WFE to WFI, avoiding spurious
wakeups while other CPUs are still active. - Added new dt(4) tracing ioctl
DTIOCARGS to get the type of probe arguments.
- Added waitid(2),
- SMP Improvements
- Unlocked mmap(2), munmap(2), and mprotect(2).
- Unlocked sched_yield(2).
- Added support for per-CPU counters to
evcount(9).
Useful for counting events that are prone to occur simultaneously
across multiple CPUs, like clock interrupts and IPIs. - Moved pf(4) purge
tasks out from under the kernel lock. - Unlocked ioctl(2)
SIOCGIFCONF, SIOCGIFGMEMB, SIOCGIFGATTR, and SIOCGIFGLIST. - Protected interface tables in pf(4) with PF_LOCK(), allowing
removal of NET_LOCK() protection from the ioctl(2) code path in pf. - Unlocked getsockopt(2) and setsockopt(2).
- Completed removing kernel lock from IPv6 read ioctls.
- Unlocked minherit(2).
- Made tun(4) and tap(4) event filters MP-safe.
- Unlocked utrace(2).
- Stopped holding the vm_map lock while flushing pages in msync(2) and madvise(2). Prevents a
3-thread deadlock between msync(2), page-fault and mmap(2). - Unlocked select(2), pselect(2), poll(2), and ppoll(2).
- Direct Rendering Manager and graphics drivers
- Updated drm(4)
to Linux 6.1.15 - amdgpu(4): Added
support for Ryzen 7000 “Raphael”, Ryzen 7020 series “Mendocino”,
Ryzen 7045 series “Dragon Range”,
Radeon RX 7900 XT/XTX “Navi 31”,
Radeon RX 7600M (XT), 7700S, and 7600S “Navi 33.” - Fixed frame buffer corruption and additional bugs after wakeup
on Apple Silicon laptops and the Lenovo x13s. - Added support for the backlight connector property to amdgpu(4) as in inteldrm(4), making xbacklight(1) work
when using the Xorg modesetting driver.
- Updated drm(4)
- VMM/VMD improvements
- Updated vmm(4) to
permit SVM guests read access to MSR_HWCR and MSR_PSTATEDEF.
Guests can use these registers on AMD 17h and 19h hosts to
determine the TSC frequency without calibrating against a
second clock. - Allocated reference for vm and vcpu SLISTs in vmm(4), keeping vmm from
triggering excessive wakeup calls while iterating through the list of
vms while servicing an ioctl(2). - Set vmm(4) RAX guest
register state based on VMCB. - Removed locking in vmm(4) vmm_intr_pending,
reducing slowdowns due to requests for a lock held while the VM is
running. - Increased speed of delivery of interrupts to a running vcpu in vmm(4).
- Made vmm(4) treat vcpu
lists as immutable, removing the need to reference count individual
vcpu objects and use a rwlock. - Implemented zero-copy operations on virtqueues in vmd(8).
- Provided a detailed e820 memory map when booting vmd(8) guests with SeaBIOS.
When a vm initializes memory ranges, we now track what each range
represents. This information can be used to supply the e820 memory map
to SeaBIOS via the fw_cfg interface allowing it to properly
communicate memory ranges to a guest operating system. With this
special cases in ports can be removed. - Added thread names to vm processes in vmd(8), visible in ps(1).
- Hid the WAITPKG cpu feature from vmm(4) guests, preventing
invalid instruction exceptions. Also added WAITPKG feature
identification to i386 and amd64. - Changed vmd(8) to
only open /dev/vmm once, having the parent process send the fd to the
vmm child process. - Restricted vmm(4)
exposed cpuid extended feature flags. - Adjusted vmd(8) error
paths to avoid removal of configuration-defined (known) VMs on error. - Stopped being paranoid about hypervisor correct PKU handling.
Added saving and restoring guest PKRU to vmm(4). Expose the PKU cpuid
bit to the guest if in use on the host. - Made vmd(8) scan the
PCI bus to determine bootorder strings.
- Updated vmm(4) to
- Various new userland features:
- Added kdump(1)
argument support for msyscall, pledge, unveil, __realpath, ypconnect
and __tmpfd. - Added mimmutable(2) and munmap(2) reporting to kdump(1).
- Added lastcomm(1) reporting
for process kills due to execve(2) from non-pinned
syscall address.
- Added kdump(1)
- Various bugfixes and tweaks in userland:
- Allow TZ to contain absolute paths starting with /usr/share/zoneinfo.
All absolute paths were ignored in 7.2 to avoid
unveil(2) violations. - Made ldomctl(8)
accept more descriptive name-based paths in addition to number-based
paths in ldom.conf(5). - Dropped support for $rc_exec in rc.subr(8). The rc_exec
function should be used instead. - Excluded /tmp/*.shm files from /tmp cleaning in daily(8). Removing them
interferes with programs that use shared memory via shm_open(3). - Added zap-to-char and zap-up-to-char to mg(1). Bound zap-to-char to
M-z. - Fixed handling of escaped backslashes in vi(1) ex_range.
- Added support to gunzip(1) for zip files
that contain a single member. - Fixed ed(1) to print
bytes read/written and the ? prompt to stdout, not stderr. - Changed the vmstat view in systat(1) to measure
elapsed time with clock_gettime(2)
instead of statclock ticks. - Improved the periodic display in iostat(8).
- Fixed an edge case in top(1)
where summary statistics for offline CPUs were displayed. - Added support for a personal units(1) library by passing
-f multiple times. - Changed df(1) to
round up fractional percentages. - Fixed unbounded variable expansion in pkg-config(1).
- Switched to use llvm-strip(1) on
architectures that use ld.lld(1). - Made rc(8) reorder
libraries in parallel to netstart(8), as this
does not depend on network access. - Made rc(8) print the
name of each library before relinking as a signal to the operator that
boot has not stalled. - Added a -w flag to audioctl(8) for
displaying variables periodically. - Added short options for timeout(1) –foreground
and –preserve-status. - Added signal as a full argument name for timeout(1) -s.
- Fixed .wav files generated by aucat(1) by using extended
header format. - In disklabel(8), use the
size of the largest chunk of free space, not the total of all such
chunks, when checking for sufficient space to add a partition. - Extended disklabel(8) template
parsing to allow “[mount point] *” as the specification for putting
the maximum available free space into a partition. Extended
command line parsing to allow “T-” as the specification to read the
template from stdin. - Repaired disklabel(8)
to check for D_VENDOR flag in d_flags, not d_secpercyl. - Removed remnants of DEC standard 144 bad sector code from
disklabel(8)
and
disktab(5). - Removed last references to d_drivedata field from disklabel(8)
- Enhanced disklabel(8)
auto allocation to use all possible free space. - Enhanced disklabel(8)
to ensure valid partition offsets and sizes after rounding. - Enhanced disklabel(8)
simple editor to allow ‘*’ when the action is ‘delete’. - Removed disklabel(8)
code related to defunct disk types ‘hd’ and ‘svnd’. - Repaired fdisk(8)
to set the correct ‘bootable’ bit in GPT partitions. - Repaired fdisk(8)
to use GPT_UUID_NBSD_UFS for NetBSD GPT partition entries. - Added UEFI defined GPT partition type GPT_UUID_LEGACY_MBR to
the partition types
fdisk(8)
recognizes. - Enhanced fdisk(8)
to avoid spurious warnings when editing unused GPT partition. - Fixed cdio(1)
error displays and plugged a leak in the error path. - Removed pointless :ob#0:pb#0:[tb=swap:] and
:pb#N:ob#0: lines from various disktab(5)
entries.
- Allow TZ to contain absolute paths starting with /usr/share/zoneinfo.
- Improved hardware support and driver bugfixes, including:
- Suspend/Resume improvements
- Extended arm64 suspend/resume to include support for parking
CPUs in a WFE/WFI loop. - Put CPUs in the lowest P-state before the final suspend step,
needed for systems where we park CPUs in a low-power idle state
ourselves.
- Extended arm64 suspend/resume to include support for parking
- system-on-chip devices
- Added support for the Rockchip RK3566/RK3568 SoCs.
- Added support for the Rockchip RK3568 processor.
- Added support for the RK3568 PCIe controller to dwpcie(4).
- Added qcdwusb(4), a driver
controlling the interface logic for the Synopsys DesignWare USB 3.0
controller found on various Qualcomm Snapdragon SoCs. - Added support for the PCIe controller on the Qualcomm SC8280XP
to dwpcie(4). - Added qcpmicgpio(4), a
driver for the GPIO block inside the Qualcomm PMICs. - Added qcpmic(4),
a driver for the SPMI-connected PMICs found on Qualcomm SoCs. - Added qcspmi(4),
a driver for the SPMI PMIC Arbiter found on Qualcomm SoCs. - Added qcpdc(4), a
driver for the Qualcomm Power Domain controller found on Qualcomm
SoCs. - Added qcpwm(4), a
driver for the PWM found on Qualcomm SoCs. - Added qcpon(4), a
driver for the Qualcomm PMIC block that hosts the powerkey and reset
input. - In rkgpio(4),
handled different register layouts in modern Rockchip SoCs as seen in
the RK356x and RK3588. - Added support for RK356x TSADC clocks to rkclock(4).
- Added GMAC-related RK356x clocks to rkclock(4).
- Added RK3588 support to rkclock(4) and rkpinctrl(4).
- Added mvortc(4),
a driver for the RTC on the ARMADA 38x series. - Added mvodog(4),
a driver for the watchdog on the ARMADA 38x series. - Implemented rkpinctrl(4) support
for explicit routing to use alternative pin muxings. - Added ytphy(4), a
driver for the MotorComm YT8511 PHY. - Made rktemp(4)
work on RK356x with U-Boot. - Added initialization code for RK356x in dwpcie(4) to prevent
kernel hangs. - Implemented setting the parent clock for RK356x in rkclock(4).
- Added dwpcie(4)
code to bring up the PCIe controller on the RK356x. - Added rkpciephy(4), a driver
for the PCIe 3.0 PHY found on the RK356x. - Added rkcomphy(4), a driver
for the “naneng” combo PHY found on the RK356x (and RK3588). Only
PCIe, SATA and USB3 support are implemented.
- Improved support for Apple arm64 hardware
- Made aplhidev(4) recognize M1
laptops with touchbars and translated Fn+(1-10,-,=) keys to F1-F12 on
these systems. - Added suspend/resume support to aplns(4).
- Implemented wakeup interrupt support in aplintc(4).
- Added suspend/resume support to control the power domain to aplsart(4).
- Made the power button function as a wakeup button during suspend
in aplsmc(4). - Added aplpwm(4),
a driver for the PWM controller found on Apple Silicon. - Improve Apple support by increasing the apliic(4) transfer
completion timeout to 100ms to accommodate USB Type-C PD chips. - Added tipd(4), a
driver fixing USB hotplug of type-C connectors on Apple Silicon
hardware. - Improved aplpmu(4) range check to
protect against overflow. - Added aplefuse(4), a driver
for the eFuses on Apple Silicon SoCs. - Enabled aplpcie(4) power
management for PCI devices. - Disable the screen backlight with aplsmc(4) on Apple Silicon
laptops when the lid is closed.
- Made aplhidev(4) recognize M1
- X13s support
- Worked around incomplete ACPI tables on the Lenovo x13s by
loading the alternate device tree binaries from disk. - Set console output to the framebuffer on Lenovo x13s machines.
- Made the USB ports work after a suspend/resume cycle on the x13s.
- Worked around incomplete ACPI tables on the Lenovo x13s by
- Improved audio devices
- Made aplaudio(4) calculate
the bit clock based on numbers of channels, bytes/sample and sample
rate. - Set sncodec(4)
and tascodec(4)
default volume to -30dB instead of the hardware default of 0dB
(maximum). - Added sncodec(4), a driver for
the TI SNO12776/TAS2764 digital amplifier.
- Made aplaudio(4) calculate
- Other changes
- Added support for the Wacom One M CTL-672 tablet to uwacom(4).
- Hooked up the same USB device drivers on riscv64 as done in the
arm64 architecture kernel.
Enabled access to usb(4), ugen(4), ulpt(4), ucom(4) and ujoy(4). - Added uftdi(4)
support for FTDI FT232R. - Added uhidpp(4)
support for Bolt receivers and the Unified Battery feature often found
on newer Logitech HID++ hardware. - Converted more RTC drivers to use todr_attach(). Quality of the
RTC is set such that “discrete” RTC chips are preferred over RTCs
integrated on a SoC. - Added support for the DS1339 RTC as found on the PiJuice.
- Added qcrtc(4), a
driver for the RTC found on Qualcomm PMICs. - Improved qcrtc(4)
RTC reliability. - Added cursor back tab support to wscons(4) VT100
emulation.
Added aixterm bright color sequences (SGR 90-97 and
100-107). - Added missing wscons(4) bounds checks
when processing terminal escape sequences. - Replaced broken UTF-8 logic in wscons(4) with a better
one borrowed from Citrus. - Introduced pijuice(4), an apm/sensor
driver for the PiJuice HAT UPS. - Added pwmleds(4), a driver for
PWM controlled LEDs. - Implemented dwpcie(4) support for the
(optional) MSI controller of the Synopsys DesignWare PCIe host bridge. - Added icc(4) driver for
I2C Consumer Control devices. - Prevented a possible crash when a ugen(4) device is detached.
- Implemented wakeup interrupt handling in agintc(4).
- Enabled pcagpio(4) and pcamux(4), making the SFP
port on the ClearFog Base (CN9130) work. - Adopted a workaround for a bug in the ARM generic timer on the
A64, disabling userland timecounter support on affected hardware
pending a similar libc workaround. - Made amd64 cpuid recognize protection keys for Protection Key Supervisor (PKS).
- Implemented access to EFI variables ESRT through an ioctl(2) interface
compatible with what FreeBSD and NetBSD have.
Created /dev/efi on amd64 and arm64. - Added dwge(4) support
for “enhanced descriptor” mode found on some variants of the Synopsys
DesignWare GMAC. - Removed the elansc(4)
driver for AMD Elan SC520 System Controller. - Made ppb(4) bus
range available after detaching, fixing unplugging and replugging
thunderbolt devices that were plugged in when the machine was booted. - Reworked the arm64 architecture cpu_init_secondary() function to
allow use for both initial powerup and wakeup from deeper sleep
states. - Added ufshci(4),
a driver for Universal Flash Storage (UFS) Host Controllers. - Added scmi(4), a
driver for the ARM System Control and Management Interface. - Added support for the Shenzhen Tangcheng Technology TCS4525
voltage regulator to fanpwr(4). - Added psci(4) (ARM
Power State Coordination Interface) support for available deep idle
states as advertised in device trees. - Added eephy(4),
found on the Turris Omnia WAN port, to armv7. - Added polling to tipmic(4) driver when
starting from a cold boot, fixing a hang on boot. - Added a workaround for Intel Braswell/Cherry Trail mwait hang.
- Added the Armada 380 temperature sensor to mvtemp(4) and enabled the
driver on armv7.
- Suspend/Resume improvements
- New or improved network hardware support:
- Enabled em(4) IPv4,
TCP and UDP checksum offloading and hardware VLAN tagging on devices
with 82575, 82576, i350 and i210 chipsets. - Improved mcx(4)
performance by using interrupt-based command completion. - Fixed a panic seen with rge(4) RTL8125 with MCLGETL.
- Add dwqe(4), a
driver for the Synopsys DesignWare Ethernet QoS controller used on the
NXP i.MX8MP, the Rockchip RK35xx series and Intel Elkhart Lake. - Worked around an issue on the StarFive JH7100 SoC to make dwge(4) Ethernet work
reliably on the StarFive VisionFive 1 board. - In mvneta(4),
passed MII flags depending on the phy mode specified in the device
tree, making the WAN port work on the Turris Omnia.
- Enabled em(4) IPv4,
- Added or improved wireless network drivers:
- Increased the timeout for bwfm(4) PCI devices to
avoid spurious firmware load failures, particularly on Apple M2 laptops. - Implemented alternative mailbox handling mechanism required by
newer bwfm(4) firmware. - Fixed bwfm(4)
issues with suspend/resume and possible firmware crashes on the M2
MacBook Air. - Prevented an iwx(4)
firmware error when authentication to the AP times out. - Fixed a crash in iwx(4) when connecting to WEP
networks via ifconfig(8) join. - Fixed an alignment issue in iwx(4) Rx descriptors.
- Avoided trying to remove keys while doing crypto in hardware if
the station is not active in iwx(4) firmware, fixing a
firmware panic. - Prevented potential panics by disallowing the iwx(4) init task from running
in parallel to wakeup code during resume. - Switched all iwx(4)
devices to -77 firmware images. - Upgraded firmware images for iwm(4) 9260 and 9560 devices.
- Made iwx(4) get the
primary channel number from AP beacon info, preventing problems on
40/80Mhz channels if there is a mismatch. - Fixed iwx(4) session
protection event duration.
- Increased the timeout for bwfm(4) PCI devices to
- IEEE 802.11 wireless stack improvements and bugfixes:
- Installer, upgrade and bootloader improvements:
- Made installer answers
!
and(S)hell
drop into a ksh(1) environment rather
than the more limited sh(1). - Added support for configuring interfaces by lladdr (MAC).
- Made the installer skip interface configuration questions when no interfaces are available.
- Fixed resizing partitions on an auto-allocated disk that had a boot partition.
- Stopped the installer from asking to initialize disks that have
softraid(4) chunks. - Made efiboot fdt support device trees with NOPs in them (like the kernel version).
- Improved the default choice for the installer’s install media
disk question to show the first disk that (a) is not the root disk and (b)
is not a disk with softraid chunks (hosting the root disk, for example). - Stopped offering WEP in the installer if not supported.
- Fixed lock file error on installer exit/abort.
- Made installboot(8)
-p
support softraid(4). - Made installboot(8) silently skip
softraid(4) keydisks. - Fixed passing explicit stages files to
installboot(8). - Added mount_nfs(8) to the
sparc64 installer, to fetch sets over NFS. - Copy the apple-boot firmware to EFI system partition, enabling
automatic bootloader updates on Apple Silicon computers. - Made the installer stop printing MD post installation instructions on upgrades.
- Made it possible to set keyboard layout(s) in arm64’s installer.
- Added initial support in the installer
- Made installer answers