dtrace: Avoid excessive pcpu allocations
We were previously allocating MAXCPU structures for several purposes,
but this is generally unnecessary and is quite excessive, especially
after MAXCPU was bumped to 1024 on amd64 and arm64. We already are
careful to allocate only as many per-CPU tracing buffers as are needed;
extend this to other allocations.
For example, in a 2-vCPU VM, the size of a consumer state structure
drops from 64KB to 128B. The size of the per-consumer `dts_buffer` and
`dts_aggbuffer` arrays shrink similarly. Ditto for pre-allocations of
local and global D variable storage space.
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D47667
dtrace/amd64: Make invop providers usable with KMSAN enabled
- Use a fresh context when entering dtrace_invop() via a breakpoint
exception.
- Mark the #BP trapframe as initialized.
MFC after: 2 weeks
netlink/route: Fix the argument list for rtnl_handle_iflink()
This function is registered as a ifnet_link_event and so should have the
corresponding argument list.
PR: 282870
Reported by: nakayamakenjiro at gmail.com
MFC after: 1 week
pfctl: clear statistic for specified addresses
The ioctl DIOCRCLRASTATS provides the functionality of clearing stats
not only for the whole table for for addresses stored in that table. The
functionality was missing from pfctl, though. Add it now.
PR: 282877
Obtained from: OpenBSD, kirill <kirill at openbsd.org>, e496dff3a7
MFC after: 3 weeks
libthr: allow very early atfork registration
LSan wants to be able to register atfork handlers at __lsan_init time,
which can happen either at the first intercepted function call or in a
.preinit_array function. Both of these end up being very early in rtld
and executed with the bind lock held, which ends up causing problems
when we go to _libpthread_init().
Instead of requiring libpthread to be initialized, just insert the new
atfork handler straight into the list if it's not ready yet. The
critical section and locking should not be necessary if we're really
executing this early, as there won't be any threads to contend with.
Reviewed by: kib (earlier version), markj
(cherry picked from commit 4b202f4faf40fd7af8b84491360186aed8ce5733)
libthr: add some tests for pthread_atfork() handling
Test that it generally functions, and also that registering multiple
times calls each handler in the order that it's documented to call them
in.
Reviewed by: kib, markj
(cherry picked from commit 7e6ac503ffeb81733272d54af367db58e45e57ca)
_utmx_op: don't recurse on chain busy
In handling a PP mutex, we'll busy it as soon as we enter the loop and
unbusy it either prior to sleeping or at exit time. In this particular
case, if we fail to transition the mutex from OWNERDEAD -> owned because
of casueword(9) failure and the suspend check fails, we'll start over
and attempt to busy an already-busied chain and irrecoverably lock up
both this thread and anything else that tries to busy the chain.
Unbusy the chain prior to restarting because I couldn't decide if that
was a better or worse idea than just keeping track of whether we dirtied
it in do_lock_pp() and avoiding re-dirty. This is marginally easier to
reason about as it returns us to expected state on entry to the loop.
While we're here, simplify the code a bit as `error` will be clobbered
right after the branch anyways.
Reviewed by: kib, olce (both earlier version)
(cherry picked from commit f660777865fcc28e147b51362412e0286e7df78e)
timedef: remove redundancy in Catalan date_fmt definitions
This is already factored into the month names, resulting in an awkward
construction:
$ env LC_ALL=ca_ES.UTF-8 date
dimecres, 6 de de novembre de 2024, 21:21:18 CST
This would now render as:
$ env LC_ALL=ca_ES.UTF-8 date
dimecres, 6 de novembre de 2024, 21:22:41 CST
Reviewed by: bapt, royger
Sponsored by: Klara, Inc.
(cherry picked from commit a4b7367eb027a99b9eb48bf18951049434a9e189)
sed: fix commandline-given expression when -e is not used
Make explicit sed commands (first on commandline) behave the same
as those given with -e.
Without this patch the following two commands behave differently,
the second one being wrong:
echo ab | sed -e $'1 i\\\n--'
echo ab | sed $'1 i\\\n--'
Reviewed by: 0mp, des, kevans
Sponsored by: Klara, Inc.
(cherry picked from commit 0552fdc62caf034397ffd5b07dfbad853aef5aa8)
localedata: add some exceptions to utf8proc widths
Hangul Jamo medial vowels and final consonants are reportedly combining
characters that won't take up any columns on their own and should be
reported as zero-width, so add an exception for these as well to reflect
how they work in practice. This conforms to how other implementations
(e.g., glibc) treat these characters.
Reviewed by: bapt (earlier version), jkim
Sponsored by: Klara, Inc.
(cherry picked from commit 160c36eae41afa3c4944ed44778c2b48db8fbb77)
_utmx_op: don't recurse on chain busy
In handling a PP mutex, we'll busy it as soon as we enter the loop and
unbusy it either prior to sleeping or at exit time. In this particular
case, if we fail to transition the mutex from OWNERDEAD -> owned because
of casueword(9) failure and the suspend check fails, we'll start over
and attempt to busy an already-busied chain and irrecoverably lock up
both this thread and anything else that tries to busy the chain.
Unbusy the chain prior to restarting because I couldn't decide if that
was a better or worse idea than just keeping track of whether we dirtied
it in do_lock_pp() and avoiding re-dirty. This is marginally easier to
reason about as it returns us to expected state on entry to the loop.
While we're here, simplify the code a bit as `error` will be clobbered
right after the branch anyways.
Reviewed by: kib, olce (both earlier version)
(cherry picked from commit f660777865fcc28e147b51362412e0286e7df78e)
timedef: remove redundancy in Catalan date_fmt definitions
This is already factored into the month names, resulting in an awkward
construction:
$ env LC_ALL=ca_ES.UTF-8 date
dimecres, 6 de de novembre de 2024, 21:21:18 CST
This would now render as:
$ env LC_ALL=ca_ES.UTF-8 date
dimecres, 6 de novembre de 2024, 21:22:41 CST
Reviewed by: bapt, royger
Sponsored by: Klara, Inc.
(cherry picked from commit a4b7367eb027a99b9eb48bf18951049434a9e189)
localedata: add some exceptions to utf8proc widths
Hangul Jamo medial vowels and final consonants are reportedly combining
characters that won't take up any columns on their own and should be
reported as zero-width, so add an exception for these as well to reflect
how they work in practice. This conforms to how other implementations
(e.g., glibc) treat these characters.
Reviewed by: bapt (earlier version), jkim
Sponsored by: Klara, Inc.
(cherry picked from commit 160c36eae41afa3c4944ed44778c2b48db8fbb77)
sed: fix commandline-given expression when -e is not used
Make explicit sed commands (first on commandline) behave the same
as those given with -e.
Without this patch the following two commands behave differently,
the second one being wrong:
echo ab | sed -e $'1 i\\\n--'
echo ab | sed $'1 i\\\n--'
Reviewed by: 0mp, des, kevans
Sponsored by: Klara, Inc.
(cherry picked from commit 0552fdc62caf034397ffd5b07dfbad853aef5aa8)
release: Don't break if firmware install fails
On some platforms (e.g. powerpc) we don't have packages, so we can't
install them onto the ISOs. Proceed with building the images anyway.
Reported by: Weekly snapshot builds
Fixes: 7e2996c1f5b4 ("release: install wireless firmware onto disc1 and dvd")
Approved by: re (cperciva)
(cherry picked from commit e8263ace39c8ecf11233c0a10d0b1839e6813046)
(cherry picked from commit 9431091ee021eca9eb4c768b566e623ba9333b41)
release: install wireless firmware onto disc1 and dvd
Wireless driver firmware is no longer added to the src tree.
In order to have wireless support in the installer for the new drivers
we install the firmware packages onto disc1 (and memstick) and dvd
if built on FreeBSD and NOPKG is not defined (to not break cross-builds
from Linux or OSX and to allow people to opt-out).
Sponsored by: The FreeBSD Foundation
Submitted by: cperciva (the orig. commands and where to place them)
Reviewed by: jrtc27
Approved by: re (cperciva)
Differential Revision: https://reviews.freebsd.org/D47407
(cherry picked from commit 7e2996c1f5b4e684cae40c2418b68061df9997d9)
(cherry picked from commit b62012538e967b22736e8c2214b222f21146bddc)
bsdinstall: wlanconfig: fix interface UP on (re-)starting wpa_supplicant
Make sure an interface is back up before (re-)starting wpa_supplicant
in wlanconfig not relying on wpa to UP the interface (though we fixed
that).
Sponsored by: The FreeBSD Foundation
Reviewed by: emaste (in D47491)
Approved by: re (cperciva)
Differential Revision: https://reviews.freebsd.org/D47491
(cherry picked from commit 5399052c63a7a3d2f54615d31bfd092ab887a600)
(cherry picked from commit 7d0c12e1f907ddf9be6668449a966703c0f781d1)
bsdinstall: add menu to install firmware
Add a menu to the installer to run fwget(8) inside the newly installed
system to install firmware known to be needed.
This requires working netowrking.
This is needed at least for wireless currently for when we entirely
stop shipping new firmware in src.git to have working networking on
the installed system (we already do need this for at least rtw89).
Sponsored by: The FreeBSD Foundation
Tested with: 4 different iwlwifi chipsets in a system (earlier version)
Suggested improvments by: jrtc27
Approved by: re (cperciva)
Differential Revision: https://reviews.freebsd.org/D47491
(cherry picked from commit bbe2a1da2df639c616869aa838244c8094779bd4)
(cherry picked from commit 15f6edf20e4e1542f2385a9cbd6e996e23252858)
efirt: mark dynamic region executing the RT code with the TDP_EFIRT flag
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D47694
device_pager: user iterators to free device pages
Change cdev_mgtdev_page_free_page to take an iterator, rather than an
object and page, so that removing the page from the object radix tree
can take advantage of locality with iterators. Define a
general-purpose function to free all pages, which can be used in
several places.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D47692