]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 months agoukswitch: fix non-debug build
Ed Maste [Fri, 10 May 2024 12:52:06 +0000 (08:52 -0400)]
ukswitch: fix non-debug build

PR: 278847
Sponsored by: The FreeBSD Foundation

4 months agocat: Missed a couple.
Dag-Erling Smørgrav [Fri, 10 May 2024 11:04:56 +0000 (13:04 +0200)]
cat: Missed a couple.

MFC after: 3 days
Sponsored by: Klara, Inc.

4 months agocat: Check for lack of success rather than a specific failure.
Dag-Erling Smørgrav [Fri, 10 May 2024 10:59:18 +0000 (12:59 +0200)]
cat: Check for lack of success rather than a specific failure.

MFC after: 3 days
Sponsored by: Klara, Inc.
Reviewed by: oshogbo
Differential Revision: https://reviews.freebsd.org/D45149

4 months agoarm64: Update the page table list in locore
Andrew Turner [Wed, 24 Apr 2024 10:23:42 +0000 (11:23 +0100)]
arm64: Update the page table list in locore

The comment describing the page tables was out of date. Update it with
the current list.

Sponsored by: Arm Ltd

4 months agoarm64: Merge common page table creation code
Andrew Turner [Thu, 25 Apr 2024 13:06:23 +0000 (14:06 +0100)]
arm64: Merge common page table creation code

Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D45061

4 months agoarm64/gicv3: Check if the hardware supports LPIs
Andrew Turner [Tue, 23 Apr 2024 11:28:23 +0000 (12:28 +0100)]
arm64/gicv3: Check if the hardware supports LPIs

Some simulators have the ITS in the DTB passed to the kernel, however
it is a runtime configuration option to enable it.

Check the GICD_TYPER register to see if LPIs are enabled before
attaching the ITS driver.

Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D44914

4 months agodev/psci: Check all compat strings
Andrew Turner [Tue, 23 Apr 2024 11:27:09 +0000 (12:27 +0100)]
dev/psci: Check all compat strings

When searching for the PSCI FDT node we only check a few compat strings.
Use the existing compat_data array to check all strings the driver may
attach to.

Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D44913

4 months agoarm64: Flush the spintable release address
Andrew Turner [Fri, 3 May 2024 16:17:25 +0000 (17:17 +0100)]
arm64: Flush the spintable release address

Ensure the spintable release address is written back from the cache
to memory. The other CPUs reading this may not be reading it with the
cache enabled so ensure it is written to the point of coherency
before issuing the wakeup sev.

As cpu_dcache_wbinv_range includes the needed barrier remove it from
the inline asm before the sev instruction.

Reviewed by: jhibbits, kevans
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D45083

4 months agoarm64: Support a shared release for spin-table
Andrew Turner [Mon, 29 Apr 2024 14:23:42 +0000 (15:23 +0100)]
arm64: Support a shared release for spin-table

When releasing multiple CPUs that share a release address we need them
to wait for their turn to boot. Add a mechanism to do this by booting
them until they enable the TLB before waiting their turn to enter
init_secondary.

Reviewed by: jhibbits, kevans
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D45082

4 months agoam64: Allow cpu.h to be included from assembly
Andrew Turner [Fri, 3 May 2024 16:07:29 +0000 (17:07 +0100)]
am64: Allow cpu.h to be included from assembly

Reviewed by: jhibbits, kevans
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D45081

4 months agoAdd man page for nfslockd.
Dag-Erling Smørgrav [Fri, 10 May 2024 09:23:13 +0000 (11:23 +0200)]
Add man page for nfslockd.

PR: 130238
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D45139

4 months agomdconfig: Print options when listing devices
Ricardo Branco [Fri, 10 May 2024 04:42:22 +0000 (22:42 -0600)]
mdconfig: Print options when listing devices

PR: 278624
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1210

4 months agoExplain cron.d
Paweł Krawczyk [Fri, 10 May 2024 04:21:18 +0000 (22:21 -0600)]
Explain cron.d

Add details on the format of system cron files, which are mentioned in
cron(8) which refers here but barely explained here.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1106

4 months agoat cron file is now in /etc/cron.d
Paweł Krawczyk [Fri, 10 May 2024 04:21:18 +0000 (22:21 -0600)]
at cron file is now in /etc/cron.d

PR: 243380
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1106

4 months agosysexits: Tidy deprecated header and manual
Alexander Ziaee [Fri, 10 May 2024 02:43:39 +0000 (20:43 -0600)]
sysexits: Tidy deprecated header and manual

<sysexits.h> was deprecated in the base system in a1432b4 for FreeBSD
8.0 and is retained only for backwards compatibility.  Make that clear,
since sysexits(3) suggested using it since it was in style(9) prior
to this.

MFC after: 1 week
Co-authored-by: imp
Fixes: a1432b4
Reviewed by: imp, pauamma (previous version)
Pull Request https://github.com/freebsd/freebsd-src/pull/1195

4 months agoUpdate README.md to add pointer to release page.
Lukas R. Jackson [Fri, 10 May 2024 02:36:19 +0000 (20:36 -0600)]
Update README.md to add pointer to release page.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1151

4 months agoahc(4): Default to memory mapped IO
HP van Braam [Fri, 10 May 2024 02:13:03 +0000 (20:13 -0600)]
ahc(4): Default to memory mapped IO

When this driver was written it made sense to make this default to off,
but these days almost all BIOSses will do the right thing. Furthermore
non-mmio communication only works on Intel architectures.

So lets default to allowing mmio, but not change the semantics of the
AHC_ALLOW_MEMIO flag to not break existing installs. Also document the
already existing hint.ahc.<unit>.allow_memio.

Signed-off-by: HP van Braam <hp@tmm.cx>
Reviewed by: imp (small style tweak)
Pull Request: https://github.com/freebsd/freebsd-src/pull/1219

4 months agoipfw: correctly report table manipulation errors
Ben Wilber [Fri, 10 May 2024 02:08:15 +0000 (20:08 -0600)]
ipfw: correctly report table manipulation errors

Let ipfw(8) report the actual error instead of the error that
may have come from calling printf().

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1221

4 months agoFix memory corruption in C++ demangler
Justine Tunney [Fri, 10 May 2024 01:55:45 +0000 (19:55 -0600)]
Fix memory corruption in C++ demangler

The __cxa_demangle_gnu3() and cpp_demangle_gnu3() functions segfault on
various libcxxabi test cases due to a copy and paste error. This change
fixes that.

This is a subset of https://github.com/libcxxrt/libcxxrt/pull/34 which
fixes the immediate problem.

Reviewed by: imp, emaste (I think)
Pull Request: https://github.com/freebsd/freebsd-src/pull/1222

4 months agonfscl: Do not do readahead for directories
Rick Macklem [Fri, 10 May 2024 01:33:13 +0000 (18:33 -0700)]
nfscl: Do not do readahead for directories

For a very long time, the NFS client has done readahead for
directory blocks.  Unlike data blocks, the readahead cannot
begin until the Readdir RPC reply has been received, since
the directory offset cookie in that Readdir RPC reply is needed.
As such, the readahead is serialized and does not seem to
provide any real benefit.

Recent testing/benchmarking shows that removing this
readahead code for Readdir does not have a negative impact
on performance.

Therefore, this patch deletes the readahead code for Readdir,
which simplifies the code and may make future changes simpler.

MFC after: 1 month

4 months agoAllow -DNO_STRICT_REGEX to restore historic regex behavior
Simon J. Gerraty [Fri, 10 May 2024 01:29:43 +0000 (18:29 -0700)]
Allow -DNO_STRICT_REGEX to restore historic regex behavior

Allow restoring the behavior of '{' as described in regex(3).
Ie. only treat it as start of bounds if followed by a digit.

If NO_STRICT_REGEX is not defined, the behavior introduced by
commit a4a801688c909ef39cbcbc3488bc4fdbabd69d66 is retained,
otherwise the previous behavior is restored.

Differential Revision: https://reviews.freebsd.org/D45134

4 months agoNew sysctl to disable NOMATCH until devmatch runs
Isaac Cilia Attard [Mon, 29 Apr 2024 20:44:27 +0000 (22:44 +0200)]
New sysctl to disable NOMATCH until devmatch runs

Introduce hw.bus.devctl_nomatch_enabled and use it to suppress NOMATCH
until devmatch runs

There's a lot of NOMATCH events generated at boot. We also run devmatch
once during early boot to load unmatched devices. To avoid redundant
work, don't start generating NOMATCH events until after devmatch runs.
Set hw.bus.devctl_nomatch_enabled=1 just before we run devmatch. The
kernel will suppress NOMATCH events until this is set to true.

This saves about 170ms from the boot on aarch64 running atop Apple
M-series processors and the VMWare Fusion hypervisor.

Reviewed by:    imp, cperciva
MFC after:      3 days
Sponsored by:   Google Summer of Code
Pull Request:   https://github.com/freebsd/freebsd-src/pull/1213

4 months agoAddress module reproducibility issues
Dan McGregor [Thu, 9 May 2024 23:37:52 +0000 (17:37 -0600)]
Address module reproducibility issues

Use .PATH & bare filename. This prevents the real source path from
being included in the built object, which improves reproducibility.

Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1211

4 months agoarp.8: don't document a syntax that doesn't exist
Lexi Winter [Thu, 9 May 2024 23:26:41 +0000 (17:26 -0600)]
arp.8: don't document a syntax that doesn't exist

The arp.8 manpage documents 'arp -d <addr> pub', but the 'pub' flag is
not accepted by the arp command.  Remove this incorrect documentation.

Reviewed by: imp, gleb, mp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1215

4 months agointr/x86: replace use of vector in interface with intsrc
Elliott Mitchell [Thu, 9 May 2024 23:04:35 +0000 (17:04 -0600)]
intr/x86: replace use of vector in interface with intsrc

Several x86 interrupt core functions were already operating on intsrc
structures.  Now switch the remaining 3 to intsrc for consistency.

Swap the order of intr_add_handler()'s first two arguments.  This
matches INTRNG and is more consistent with other functions in this
interface.

Differential Revision: https://reviews.freebsd.org/D35386
Reviewed by: imp, markj (previous version)
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agoarm: add missing atomic-pointer functions
Elliott Mitchell [Thu, 9 May 2024 23:04:35 +0000 (17:04 -0600)]
arm: add missing atomic-pointer functions

The pointer function types were missing for these functions, so add
them.  Valuable for places where type sizes vary by architecture.

Differential Revision: https://reviews.freebsd.org/D37778
Reviewed by: imp, andrew
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agosys: declare bit sets unsigned
Elliott Mitchell [Thu, 9 May 2024 23:04:35 +0000 (17:04 -0600)]
sys: declare bit sets unsigned

Substantially reduce the number of signed/unsigned issues (warnings if
enabled).  While these are presently disabled for FreeBSD, being able to
enable another warning would be good.

Differential Revision: https://reviews.freebsd.org/D32793
Reviewed by: imp, jhibbits
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agointrng: switch flag arguments to unsigned
Elliott Mitchell [Thu, 9 May 2024 23:04:35 +0000 (17:04 -0600)]
intrng: switch flag arguments to unsigned

The flag variables behind these are all unsigned.  As such adjust the
declarations to match reality and reduce the number of mismatches.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agokern/intr: redeclare intr_setaffinity()'s third arg constant
Elliott Mitchell [Thu, 9 May 2024 23:04:35 +0000 (17:04 -0600)]
kern/intr: redeclare intr_setaffinity()'s third arg constant

This matches reality and allows removal of a __DECONST().

Fixes: 4c72d075a57 ("LinuxKPI: const argument to irq_set_affinity_hint()")
Fixes: 9b33b154b53 ("Add support to cpuset for binding hardware interrupts")
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agokern/intr: change ->ie_irq to unsigned
Elliott Mitchell [Thu, 9 May 2024 23:04:34 +0000 (17:04 -0600)]
kern/intr: change ->ie_irq to unsigned

All architecture implementations actually want this to be unsigned.
INTRNG the equivalent is overtly unsigned.  x86 and PowerPC merely avoid
the need to explicitly convert at several points.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agoarm/pmu: remove passing trap frame as argument
Elliott Mitchell [Thu, 9 May 2024 23:04:34 +0000 (17:04 -0600)]
arm/pmu: remove passing trap frame as argument

While otherwise a handy potential approach, getting the trap frame via
the argument isn't documented and isn't supposed to be used.  Adjust
pmu_intr() to instead use curthread->td_intr_frame, which is the proper
way.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1126

4 months agosound: Rename oss_audioinfo->real_device to oss_audioinfo->legacy_device
Christos Margiolis [Thu, 9 May 2024 19:08:17 +0000 (21:08 +0200)]
sound: Rename oss_audioinfo->real_device to oss_audioinfo->legacy_device

The OSS manual now documents this field as "legacy_device".

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45138

4 months agosound: Add missing oss_mixerinfo devnode and legacy_device fields
Christos Margiolis [Thu, 9 May 2024 19:08:11 +0000 (21:08 +0200)]
sound: Add missing oss_mixerinfo devnode and legacy_device fields

They are missing from soundcard.h and are in fact used by some
applications, such as OSS' ossinfo(1):
http://manuals.opensound.com/developer/ossinfo.c.html

The new size for filler is chosen according to the most recent official
version of soundcard.h, which includes those 2 fields.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45137

4 months agosound: Fix oss_sysinfo->numcards
Christos Margiolis [Thu, 9 May 2024 19:08:01 +0000 (21:08 +0200)]
sound: Fix oss_sysinfo->numcards

According to the OSS manual, oss_sysinfo->numcards holds the number of
detected audio devices in the system, while the current ncards variable,
whose value is assigned to oss_sysinfo->numcards, holds the number of
currently registered devices only.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch, emaste
Differential Revision: https://reviews.freebsd.org/D45136

4 months agosound: Remove nmix variable from mixer_oss_mixerinfo()
Christos Margiolis [Thu, 9 May 2024 19:07:48 +0000 (21:07 +0200)]
sound: Remove nmix variable from mixer_oss_mixerinfo()

nmix is used to compare against oss_mixerinfo->dev, which is a
user-supplied value to select the mixer device (if not -1, in which case
we'll select the default one) we want to fetch the information of. It is
also used to set oss_mixerinfo->dev in case it is -1.

However, nmix is at best redundant, since we have the loop counter
already (i), and confusing at worst.

For example, suppose a system with 3 mixer devices. We call
SNDCTL_MIXERINFO with oss_mixerinfo->dev=1, meaning we want to get
information for /dev/mixer1. Suppose /dev/mixer0 detaches while inside
the loop, so we'll hit the loop's "continue" case, and nmix won't get
incremented (i.e will stay 0 for now). At this point nmix counts 1
device less, so when it reaches 1, we'll be fetching /dev/mixer2's
information instead of /dev/mixer1's.

This is also true in case the mixer device disappears prior to the call
to mixer_oss_mixerinfo().

Simply remove nmix and use the loop counter to both set
oss_mixerinfo->dev and check against it in case a non -1 value is
supplied.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Reviewed by: dev_submerge.ch
Differential Revision: https://reviews.freebsd.org/D45135

4 months agosnd_hdsp(4): RME HDSP 9632 and HDSP 9652 sound card driver.
Florian Walpen [Thu, 9 May 2024 18:36:40 +0000 (19:36 +0100)]
snd_hdsp(4): RME HDSP 9632 and HDSP 9652 sound card driver.

Add a sound(4) bridge device driver for the RME HDSP 9632 and HDSP 9652
sound cards. These cards require a nowadays rare PCI 32bit (not PCIe)
slot, but still see use due to their value and wealth of features.
The HDSP 9632 is mostly comparable to the newer HDSPe AIO, while the
HDSP 9652 is similar to the HDSPe RayDAT. These HDSPe PCIe cards are
supported by the snd_hdspe(4) driver which was taken as a starting point
for development of snd_hdsp(4).

Implementation is kept separately due to substantial differences in
hardware configuration and to allow easy removal in case PCI 32bit
support would be phased out in the future.

The snd_hdsp(4) kernel module is not enabled by default, and can be
loaded at runtime with kldload(8) or during boot via loader.conf(5).
Basic operation was tested with both cards, not including all optional
cable connectors and expansion boards. Features should be roughly on par
with the snd_hdspe(4) supported cards.

Reviewed by: christos, br
Differential Revision: https://reviews.freebsd.org/D45112

4 months agoip17x: fix non-debug build
Ed Maste [Wed, 8 May 2024 13:20:44 +0000 (09:20 -0400)]
ip17x: fix non-debug build

PR: 278847
Reviewed by: jhibbits
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45133

4 months agofusefs: make the tests more robust to changes to maxphys
Alan Somers [Thu, 9 May 2024 14:40:21 +0000 (08:40 -0600)]
fusefs: make the tests more robust to changes to maxphys

Remove assumptions in two test cases that maxphys won't be huge.

Reported by: kib
MFC after: 2 weeks
Sponsored by: Axcient

4 months agosctp: minor cleanup
Michael Tuexen [Wed, 8 May 2024 22:51:09 +0000 (00:51 +0200)]
sctp: minor cleanup

No functional chnage intended.
MFC after: 3 days

4 months agosctp: allow stcb == NULL in sctp_shutdown()
Michael Tuexen [Wed, 8 May 2024 22:43:28 +0000 (00:43 +0200)]
sctp: allow stcb == NULL in sctp_shutdown()

Consistently handle this case.
Reported by: Coverity Scan
CID: 1533813
MFC after: 3 days

4 months agosctp: don't provide uninitialized memory to process_chunk_drop()
Michael Tuexen [Wed, 8 May 2024 22:17:13 +0000 (00:17 +0200)]
sctp: don't provide uninitialized memory to process_chunk_drop()

Right now, the code in process_chunk_drop() does not look the
the corresponding fields.
Therefore, no functional change intended.
Reported by: Coverity Scan
CID: 1472476
MFC after: 3 days

4 months agosctp: fix sctp_sendall() when an mbuf chain is provided
Michael Tuexen [Wed, 8 May 2024 21:41:17 +0000 (23:41 +0200)]
sctp: fix sctp_sendall() when an mbuf chain is provided

In this case uio is NULL, which needs to be checked and m must
be copied into the sctp_copy_all structure.
Reported by: Coverity Scan
CID: 1400449
MFC after: 3 days

4 months agoUpdate example from gcc6 to gcc13
Warner Losh [Thu, 9 May 2024 14:16:15 +0000 (08:16 -0600)]
Update example from gcc6 to gcc13

We only "support" gcc12 and gcc13 for cross building, for some value of
"support". Update the example from gcc6 to gcc13.

Sponsored by: Netflix

4 months agosctp: add missing check
Michael Tuexen [Wed, 8 May 2024 21:01:06 +0000 (23:01 +0200)]
sctp: add missing check

If memory allocation fails, m is NULL. Since this is possible,
check for it.
Reported by: Coverity Scan
CID: 1086866
MFC after: 3 days

4 months agolibpfctl: fix file descriptor leak
Kristof Provost [Thu, 9 May 2024 11:52:22 +0000 (13:52 +0200)]
libpfctl: fix file descriptor leak

pfctl_get_rules_info() opened a netlink socket, but failed to close it again.
Fix this by factoring out the netlink-based function into a _h variant that
takes struct pfctl_handle, and implement pfctl_get_rules_info() based on that,
remembering to close the fd.

While here migrate all in-tree consumers to the _h variant.

MFC after: 3 days
Sponsored by: Rubicon Communications, LLC ("Netgate")

4 months agoxen/debug: remove usage of sbuf_{clear,finish}() on drained sbuf
Roger Pau Monné [Thu, 2 May 2024 13:12:16 +0000 (15:12 +0200)]
xen/debug: remove usage of sbuf_{clear,finish}() on drained sbuf

Using sbuf_clear() on a drained sbuf is explicitly prohibited, and using
sbuf_finish() after printing a trace leads to a single trace being printed, as
after calling sbuf_finish() further attempts to use the same sbuf will lead to
a panic.

While there also switch to using xen_emergency_print() instead of attempting to
write directly to the hypervisor console.  xen_emergency_print() can be
implemented per-arch to use a different mechanism than the console hypercall
(note the default implementation still uses the console hypercall).

Fixes: df62b8a25f47 ('xen: add a handler for the debug interrupt')
Sponsored by: Cloud Software Group
Reviewed by: markj
Differential review: https://reviews.freebsd.org/D45060

4 months agorelease: make dependencies, not recursive make
Colin Percival [Thu, 9 May 2024 07:52:25 +0000 (00:52 -0700)]
release: make dependencies, not recursive make

For historical reasons, the vm-release and cloudware-release targets
were written as recursive makes of ${VMTARGETS} and ${CLOUDTARGETS};
this worked fine until we started running `make release -jN` and
had both VM and cloud targets depending on ${QEMUTGT}, at which
point things exploded when we tried to build the port twice at the
same time.

Switch vm-release and cloudware-release to have make dependencies on
their individual components; this way a single make process runs and
is aware of the duplicate dependency (and only runs it once).

MFC after: 5 days

4 months agonet80211: add new ciphers and RSN flags
Adrian Chadd [Fri, 19 Apr 2024 14:05:44 +0000 (07:05 -0700)]
net80211: add new ciphers and RSN flags

These are the rest of the ciphers and RSN flags from 802.11-2016.

* add the rest of the ciphers from 802.11-2016
* add the rest of the RSN flags from 802.11-2016

Of special interest here are the extended key ID field for supporting
>1 unicast key (to support seamless rekeying w/out dropping frames)
and the MFP (management frame protection) config bits.

This is a no-op; no code is using these new fields.
(In particular, no code in net80211 uses the RSN capability bits;
but that will change when we start on MFP support.)

Differential Revision: https://reviews.freebsd.org/D44864

4 months agonet80211: add driver / crypto methods to set the hardware / software cipher suites
Adrian Chadd [Thu, 18 Apr 2024 01:47:07 +0000 (18:47 -0700)]
net80211: add driver / crypto methods to set the hardware / software cipher suites

Drivers currently announce hardware crypto cipher support by
setting up ic_cryptocaps.

This adds two public function calls:

* ieee80211_set_software_ciphers() - set the software cipher set;
* ieee80211_set_hardware_ciphers() - set the hardware cipher set.

For now these just call into the newly crypto routines to set the ciphers.

This then adds the two crypto routines, similarly named, to set
the hardware/software cipher suite.

This is a no-op right now - wep/tkip/ccmp are already set by default
so drivers aren't required to call these routines for software
encryption, and drivers already set ic_cryptocaps for hardware
encryption.

Differential Revision: https://reviews.freebsd.org/D44827

4 months agowpa: Remove the now not-needed local logic to hard-code cipher support
Adrian Chadd [Wed, 17 Apr 2024 01:55:28 +0000 (18:55 -0700)]
wpa: Remove the now not-needed local logic to hard-code cipher support

A previous commit now exposes the supported net80211 ciphers for the
given NIC, rather than the hardware cipher list.  This is going to be
especially important moving forward when we add more cipher and key
management support.

Differential Revision: https://reviews.freebsd.org/D44821

4 months agonet80211: add a new field specifically for announcing specific ciphers
Adrian Chadd [Wed, 17 Apr 2024 01:53:52 +0000 (18:53 -0700)]
net80211: add a new field specifically for announcing specific ciphers

This dates way, way back with the original net80211 support w/ atheros chips.

The earliest chip (AR5210) had limitations supporting software encryption.
It only had the four WEP slots, and not any keycache entries.  So when
trying to do CCMP/TKIP encryption would be enabled and the key slots
would have nothing useful in them, resulting in garbage encryption/decryption.

I changed this back in 2012 to disable supporting hardware WEP for AR5210
so if_ath(4) / net80211 crypto is all done in software and yes,
I could do CCMP/TKIP on AR5210 in software.

Fast-forward to newer-ish hardware - the Qualcomm 11ac hardware.
Those also don't support pass-through keycache slots! Well, the hardware
does at that layer, but then there's a whole offload data path encap/decap
layer that's turning the frames from raw wifi into ethernet frames (for
"dumb" AP behaviours) or "wifi direct" frames (ie, "windows".)
This hides a bunch of header frame contents required for doing the software
encryption / decryption path.

But then if you enable the raw transmit/receive frame format it ALSO
bypasses the hardware encryption/decryption engine!

So for those NICs:

* If you want to do encryption, you can only use the firmware supported
  ciphers w/ wifi direct or ethernet;
* If you want to use software encrypt/decrypt, you MUST disable all encryption
  and instead use 100% software encryption.

The wpa_supplicant bsd driver code has a specific comment about this and
flips on supporting WEP/TKIP/CCMP, which is understandable but it doesn't
fix the ACTUAL intention of all of this stuff.

So:

* create a new field, ic_sw_cryptocaps
* populate it with the default supported set of ciphers for net80211
  (right now wep, tkip, ccmp)
* Communicate the combination of both ic_sw_cryptocaps and ic_cryptocaps
  to wpa_supplicant via the relevant devcap ioctl.
* Update manpage.

I'll follow this up with a driver_bsd.c change in wpa_supplicant to
trust this again, and then start adding the other cipher support there.

Differential Revision: https://reviews.freebsd.org/D44820

4 months agonvme: Explicitly align struct nvme_command on an 8 byte boundary
John Baldwin [Wed, 8 May 2024 23:05:39 +0000 (16:05 -0700)]
nvme: Explicitly align struct nvme_command on an 8 byte boundary

This was already true for most architectures due to uint64_t structure
members.  However, i386 is special in that it only requires 4 byte
alignment for uint64_t.  As a result, casts from struct nvme_command
to struct nvmf_fabric_cmd were raising a "cast increases alignment"
warning on i386.  Explicitly aligning struct nvme_command pacifies
this warning on i386.

Reported by: rscheff
Sponsored by: Chelsio Communications

4 months agolinuxkpi: Make arch_io_*_memtype_wc amd64-only
Tijl Coosemans [Wed, 8 May 2024 18:49:56 +0000 (20:49 +0200)]
linuxkpi: Make arch_io_*_memtype_wc amd64-only

Linux only implements these functions on x86.  They return 0 on other
architectures.  The FreeBSD implementation calls PHYS_TO_DMAP but this
panics on i386 because it does not have a direct map so return 0 on i386
as well for now.  These functions are only used by graphics/drm-*-kmod
to mark the VRAM aperture write-combining but this is also accomplished
by a call to vm_phys_fictitious_reg_range so this change is sufficient
to fix drm-*-kmod on i386 for FreeBSD 14.1.

Reviewed by: kib
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D45125

4 months agoMerge commit 73bb8d9d92f6 from llvm-project (by Jonathan Peyton):
Dimitry Andric [Wed, 8 May 2024 18:44:28 +0000 (20:44 +0200)]
Merge commit 73bb8d9d92f6 from llvm-project (by Jonathan Peyton):

  [OpenMP] Fix child processes to use affinity_none (#91391)

  When a child process is forked with OpenMP already initialized, the
  child process resets its affinity mask and sets proc-bind-var to false
  so that the entire original affinity mask is used. This patch corrects
  an issue with the affinity initialization code setting affinity to
  compact instead of none for this special case of forked children.

  The test trying to catch this only testing explicit setting of
  KMP_AFFINITY=none. Add test run for no KMP_AFFINITY setting.

Fixes: #91098
This should fix OpenMP processes sometimes getting stuck on a single CPU
core.

PR: 278845
Reported by: Cassidy B. Larson <cbl@cbl.us>
MFC after: 3 days

4 months agoMerge commit 5300a6731e98 from llvm-project (by Jonathan Peyton):
Dimitry Andric [Wed, 8 May 2024 16:55:08 +0000 (18:55 +0200)]
Merge commit 5300a6731e98 from llvm-project (by Jonathan Peyton):

  [OpenMP] Fix re-locking hang found in issue 86684 (#88539)

  This was initially reported here (including stacktraces):
  https://stackoverflow.com/questions/78183545/does-compiling-imagick-with-openmp-enabled-in-freebsd-13-2-cause-sched-yield

  If `__kmp_register_library_startup()` detects that another instance of
  the library is present, `__kmp_is_address_mapped()` is eventually
  called. which uses `kmpc_alloc()` to allocate memory. This function
  calls `__kmp_entry_thread()` to access the thread-local memory pool,
  which is a bad idea during initialization. This macro internally calls
  `__kmp_get_global_thread_id_reg()` which sets the bootstrap lock at the
  beginning (before calling `__kmp_register_library_startup()`).

  The fix is to use `KMP_INTERNAL_MALLOC()`/`KMP_INTERNAL_FREE()` instead
  of `kmpc_malloc()`/`kmpc_free()`. `KMP_INTERNAL_MALLOC` and
  `KMP_INTERNAL_FREE` do not use any bootstrap locks. They just translate
  to `malloc()`/`free()` and are meant to be used during library
  initialization before other library-specific allocators have been
  initialized.

Fixes: #86684
This should fix OpenMP processes sometimes getting locked with 100% CPU
usage, endlessly calling sched_yield(2).

PR: 278845
Reported by: Cassidy B. Larson <cbl@cbl.us>
MFC after: 3 days

4 months agosmsc(4): update to mention Microchip
Ed Maste [Tue, 7 May 2024 15:33:45 +0000 (11:33 -0400)]
smsc(4): update to mention Microchip

Microchip Technology acquired SMSC in 2012, and all current products
and datasheets refer to the devices supported by this driver as
Microchip parts.  Mention SMSC in a parenthetical comment to explain
the driver's name.

Reviewed by: imp
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45115

4 months agobhyve: Do not define GDB_LOG
Mark Johnston [Wed, 8 May 2024 16:06:22 +0000 (12:06 -0400)]
bhyve: Do not define GDB_LOG

This had been added for debugging and shouldn't have been committed.

Fixes: f81cdf24ba54 ("bhyve: Add support for XML register definitions")
MFC after: 3 days

4 months agovmm: Start reconciling amd64 and arm64 copies of vmm_dev.c
Mark Johnston [Wed, 8 May 2024 16:02:38 +0000 (12:02 -0400)]
vmm: Start reconciling amd64 and arm64 copies of vmm_dev.c

Most of the code in vmm_dev.c and vmm.c can and should be shared between
amd64 and arm64 (and eventually riscv) rather than being duplicated.  To
the end of adding a shared implementation in sys/dev/vmm, this patch
eliminates most of the differences between the two copies of vmm_dev.c.

- Remove an unneeded cdefs.h include.
- Simplify the amd64 implementation of vcpu_unlock_one().
- Simplify the arm64 implementation of vcpu_lock_one().
- Pass buffer sizes to alloc_memseg() and get_memseg() on arm64.  On
  amd64 this is needed for compat ioctls, but these functions should be
  merged.
- Make devmem_mmap_single() stricter on arm64.

Reviewed by: corvink, jhb
Differential Revision: https://reviews.freebsd.org/D44995

4 months agobsdinstall: Stop loading cryptodev for ZFS installations
Mark Johnston [Wed, 8 May 2024 16:01:52 +0000 (12:01 -0400)]
bsdinstall: Stop loading cryptodev for ZFS installations

- zfs depends on the crypto module, not cryptodev, and most arm64 kernel
  configs include std.dev, which includes "device crypto" anyway.
- This config works around a problem with kldxref lacking cross-target
  support, but that has since been fixed.
- Loading cryptodev creates /dev/crypto, which gives unprivileged users
  access to the kernel's opencrypto framework.  Very few applications
  need it, so we're needlessly increasing the kernel's surface area.

Thus, stop auto-loading cryptodev.

Reviewed by: kevans, allanjude, des
Differential Revision: https://reviews.freebsd.org/D45127

4 months agoofed: don't expose symbols twice
Brooks Davis [Wed, 8 May 2024 14:52:00 +0000 (15:52 +0100)]
ofed: don't expose symbols twice

ibv_init_wq and ibv_cleanup_wq are made visible with the
default_symver which puts them in the IBVERBS_1.1 ABI.  Don't
try to expose them as IBVERBS_PRIVATE_14 symbols as GNU ld
complains with --no-undefined-symbol.

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D45090

4 months agosoxstack: slience 32-bit gcc warning
Brooks Davis [Wed, 8 May 2024 14:51:17 +0000 (15:51 +0100)]
soxstack: slience 32-bit gcc warning

Modern GCC complains when casting pointers to integers of a different
size (even a larger one).  Switch from uint64_t to uintptr_t which will
always be the right size for a stack address instead of maybe being too
big.

Reviewed by: dchagin, emaste
Differential Revision: https://reviews.freebsd.org/D45087

4 months agolibthr: avoid varargs in fcntl and openat interposers
Brooks Davis [Wed, 8 May 2024 14:49:13 +0000 (15:49 +0100)]
libthr: avoid varargs in fcntl and openat interposers

Align these signatures with the ones in syscalls.master (and thus
libsys.h).  There's no reason to do va_args twice and in some ABIs
(e.g,, CheriABI) you can't access fixed arguments as varargs if you
weren't called with varargs signature.

Reviewed by: imp, kib, jhibbits
Obtained from: CheriBSD
Differential Revision: https://reviews.freebsd.org/D45126

4 months agotcp: add counter to track when SACK loss recovery uses TSO
Richard Scheffenegger [Wed, 8 May 2024 12:36:53 +0000 (14:36 +0200)]
tcp: add counter to track when SACK loss recovery uses TSO

Add a counter to track how frequently SACK has transmitted
more than one MSS using TSO. Instances when this will be
beneficial is the use of PRR, or when ACK thinning due to
GRO/LRO or ACK discards by the network are present.

Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D45070

4 months agotcp: add sysctl to allow/disallow TSO during SACK loss recovery
Richard Scheffenegger [Wed, 8 May 2024 12:33:12 +0000 (14:33 +0200)]
tcp: add sysctl to allow/disallow TSO during SACK loss recovery

Introduce net.inet.tcp.sack.tso for future use when TSO is ready
to be used during loss recovery.

Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D45068

4 months agotcp: filter small SACK blocks
Richard Scheffenegger [Sat, 4 May 2024 19:47:29 +0000 (21:47 +0200)]
tcp: filter small SACK blocks

While the SACK Scoreboard in the base stack limits
the number of holes by default to only 128 per connection
in order to prevent CPU load attacks by splitting SACKs,
filtering out SACK blocks of unusually small size can
further improve the actual processing of SACK loss recovery.

Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D45075

4 months agopf: always mark states as unlinked before detaching them
Kristof Provost [Mon, 6 May 2024 07:43:49 +0000 (09:43 +0200)]
pf: always mark states as unlinked before detaching them

Users have reported crashes in pf_test_state_udp() where at least one state key
is NULL.

That suggests that pf_detach_state() ran concurrently with pf_test_state_udp().
pf_test_state_udp() holds the state lock (aka the id lock), but
pf_detach_state() does not.
The intent is that detached states are not returned by STATE_LOOKUP/
pf_find_state(), as the state's timeout is set to PFTM_UNLINKED and thus
pf_find_state() does not find the state.

There are other paths to pf_detach_state() (outside of pf_unlink_state())
though, where we did not set the timeout to PFTM_UNLINKED. Fix those, and assert
that the timeout is set correctly when we enter pf_detach_state().

MFC after: 1 week
See also: https://redmine.pfsense.org/issues/15413
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D45101

4 months agocarp: document the new VRRPv3 support
Kristof Provost [Fri, 12 Apr 2024 14:09:04 +0000 (16:09 +0200)]
carp: document the new VRRPv3 support

Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D44776

4 months agonetinet tests: basic VRRP tests
Kristof Provost [Thu, 11 Apr 2024 16:40:19 +0000 (18:40 +0200)]
netinet tests: basic VRRP tests

Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D44775

4 months agocarp: isolate VRRP from CARP
Gleb Smirnoff [Tue, 30 Apr 2024 02:58:25 +0000 (19:58 -0700)]
carp: isolate VRRP from CARP

There is only one functional change here - we don't allow SIOCSVH (or
netlink request) to change sc->sc_version.  I'm convinced that allowing
such a change doesn't brings any practical value, but creates enless
minefields in front of both developers and end users (sysadmins).  If
you want to switch from VRRP to CARP or vice versa, you'd need to recreate
the VHID.

Oh, one tiny funtional change: carp_ioctl_set() won't modify any fields
if it returns EINVAL.  Previously you could provide valid advbase with
invalid advskew - that used to modify advbase and return EINVAL.

All other changes is a sweep around not ever using CARP fields when
we are in VRRP mode and vice versa.  Also adding assertions on sc_version
where necessary.

Do not send VRRP vars in CARP mode via NetLink and vice versa.  However
in compat ioctl SIOCGVH for VRRP mode the CARP fields would be zeroes.

This allows to declare softc as union and thus prevent any future logic
deterioration wrt to mixing VRRP and CARP.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D45039

4 months agocarp: refactor packet tagging for ether_output()
Gleb Smirnoff [Tue, 30 Apr 2024 02:36:42 +0000 (19:36 -0700)]
carp: refactor packet tagging for ether_output()

- Separate HMAC preparation (CARP specific) from tagging.
- In unicast mode (CARP specific) don't put tag at all.
- Don't put pointer to software context into the tag.  Putting just vhid,
  an integer value, is a safer design.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D45038

4 months agocarp: assert that we are calling correct input function. We are.
Gleb Smirnoff [Mon, 29 Apr 2024 22:54:57 +0000 (15:54 -0700)]
carp: assert that we are calling correct input function. We are.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D45037

4 months agocarp: don't chain call vrrp_send_ad via carp_send_ad
Gleb Smirnoff [Mon, 29 Apr 2024 22:33:51 +0000 (15:33 -0700)]
carp: don't chain call vrrp_send_ad via carp_send_ad

Provide inline send_ad_locked() that switches between protocol
specific sending function.

Rename carp_send_ad() to carp_callout() to avoid getting lost in
all these multiple foo_send_ad.

No functional change intended.

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D45036

4 months agocarp: support VRRPv3
Kristof Provost [Tue, 2 Apr 2024 16:13:54 +0000 (18:13 +0200)]
carp: support VRRPv3

Allow carp(4) to use the VRRPv3 protocol (RFC 5798). We can distinguish carp and
VRRP based on the protocol version number (carp is 2, VRRPv3 is 3), and support
both from the carp(4) code.

Reviewed by: glebius
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D44774

4 months agomii: Add support for Realtek RTL8211F-VD PHY
Peter Jeremy [Wed, 8 May 2024 08:17:00 +0000 (18:17 +1000)]
mii: Add support for Realtek RTL8211F-VD PHY

The RTL8211F-VD is a replacement/upgrade for the RTL8211F. Based on
https://github.com/torvalds/linux/commit/bb726b753f75a4eeda291438f89dfd9b94783569,
the only difference is the lack of the PCR2 register, which FreeBSD
doesn't use.

This fixes autonegotiation problems using the RTL8211F with ukphy(4).
Reviewed by: manu, bz
MFC after: 1 month
Differential Revision:  <https://reviews.freebsd.org/D45109

4 months agodtb: rockchip: Add Radxa ROCK 4C Plus to the build.
Peter Jeremy [Wed, 8 May 2024 08:06:42 +0000 (18:06 +1000)]
dtb: rockchip: Add Radxa ROCK 4C Plus to the build.

The ROCK 4C Plus is a cost-reduced variant of the ROCK Pi 4 based on
the RockChip RK3399-T.

Reviewed by: manu
MFC after: 1 week
Differential Revision: <https://reviews.freebsd.org/D45110

4 months agoObsoleteFiles.inc: Remove /var/db/portsnap
Olivier Certner [Sat, 4 May 2024 11:35:46 +0000 (20:35 +0900)]
ObsoleteFiles.inc: Remove /var/db/portsnap

This is a followup to commit "Remove remnants of portsnap(8)"
(9b30b96c1fa4).  I wasn't aware of OLD_DIRS.

Approved by:            markj (mentor)
MFC after:              1 day
MFC with:               9b30b96c1fa4
Sponsored by:           The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D45023

4 months agoarm64 pmap: Add ATTR_CONTIGUOUS support [Part 3]
Alan Cox [Wed, 17 Apr 2024 16:39:46 +0000 (11:39 -0500)]
arm64 pmap: Add ATTR_CONTIGUOUS support [Part 3]

Introduce L3C promotion of base page mappings.  When the base page size
is 4KB, use ATTR_CONTIGUOUS to promote 16 aligned, contiguous base page
mappings to a 64KB mapping.  Alternatively, when the base page size is
16KB, use ATTR_CONTIGUOUS to promote 128 aligned, contiguous base page
mappings to a 2MB mapping.

Given the frequency of L3C counter updates, switch to per-CPU counters
to avoid cache line ping ponging.

Revise the L3C counter descriptions to reflect the fact that the size
of an L3C mapping varies depending on the base page size.

Co-authored-by: Eliot Solomon <ehs3@rice.edu>
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D44983

4 months agoin6_rmx: remove unnecessary socketvar.h
Gleb Smirnoff [Tue, 7 May 2024 21:15:56 +0000 (14:15 -0700)]
in6_rmx: remove unnecessary socketvar.h

4 months agotcp_hostcache: remove unnecessary socketvar.h
Gleb Smirnoff [Tue, 7 May 2024 21:15:49 +0000 (14:15 -0700)]
tcp_hostcache: remove unnecessary socketvar.h

4 months agosockets: garbage collect PRCOREQUESTS and stale comment
Gleb Smirnoff [Tue, 7 May 2024 21:15:49 +0000 (14:15 -0700)]
sockets: garbage collect PRCOREQUESTS and stale comment

The code deleted predates FreeBSD history.  The comment deleted is 99%
outdated.  Why KAME decided to use these constants instead of normal ones
also lost in centuries.

4 months agonvme: Bump the alignment of struct nvme_health_information_page to 8
John Baldwin [Tue, 7 May 2024 20:48:06 +0000 (13:48 -0700)]
nvme: Bump the alignment of struct nvme_health_information_page to 8

This ensures that embedded uint64_t values used for statistics
counters are aligned when allocating a structure on the stack or as
part of a containing structure.  In particular this quiets
-Waddress-of-packed-member warnings from GCC when compiling the code
in nvmfd to update the stats.

Reported by: GCC

4 months agonvmecontrol: Fix a sign compare mismatch
John Baldwin [Tue, 7 May 2024 20:45:51 +0000 (13:45 -0700)]
nvmecontrol: Fix a sign compare mismatch

Even though mqes (uint16_t) and queue_size (u_int) are both unsigned,
the expression 'mqes + 1' gets promoted to int which is signed.  Keep
the value unsigned by explicitly promoting mqes to u_int before
incrementing the value.

Reported by: GCC

4 months agolibzpool: Disable -Wpointer-to-int-cast warnings for GCC
John Baldwin [Tue, 7 May 2024 19:32:58 +0000 (12:32 -0700)]
libzpool: Disable -Wpointer-to-int-cast warnings for GCC

This warning is already disabled for zfs.ko.

4 months agotcp: clean up macro useage in tcp_fixed_maxseg()
Richard Scheffenegger [Sat, 4 May 2024 08:42:42 +0000 (10:42 +0200)]
tcp: clean up macro useage in tcp_fixed_maxseg()

Replace local PAD macro with PADTCPOLEN macro
No functional change.

Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D45076

4 months agolibcbor: Ignore errors for unknown #pragmas
John Baldwin [Tue, 7 May 2024 18:44:52 +0000 (11:44 -0700)]
libcbor: Ignore errors for unknown #pragmas

libcbor embeds clang-specific #pragmas that GCC then warns about.

Reviewed by: emaste

4 months agojh7110: Add StarFive JH7110 clock/reset generator drivers
Jari Sihvola [Tue, 7 May 2024 16:06:20 +0000 (13:06 -0300)]
jh7110: Add StarFive JH7110 clock/reset generator drivers

Implement a core clknode driver for the JH7110 (StarFive VisionFive v2)
platform.

Add clock/reset generator drivers for the PLL, SYS, and AON clock
groupings.

Co-authored-by: mhorne
Reviewed by:    mhorne
Sponsored by:   The FreeBSD Foundation (mhorne's contributions)
Differential Revision:  https://reviews.freebsd.org/D43037

4 months agoRevert "jh7110: Add StarFive JH7110 clock/reset generator drivers"
Mitchell Horne [Tue, 7 May 2024 16:05:31 +0000 (13:05 -0300)]
Revert "jh7110: Add StarFive JH7110 clock/reset generator drivers"

I did not set the author field properly; revert to fix this.

This reverts commit 5d6d6278979b9eab598a23c804d23e930d2f7268.

4 months agojh7110: enable MMC driver
Mitchell Horne [Mon, 4 Mar 2024 18:38:43 +0000 (14:38 -0400)]
jh7110: enable MMC driver

Add a variant of the existing dwmmc driver, and enable it in the GENERIC
kernel.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D44026

4 months agojh7110: Add StarFive JH7110 clock/reset generator drivers
Mitchell Horne [Mon, 6 May 2024 17:10:01 +0000 (14:10 -0300)]
jh7110: Add StarFive JH7110 clock/reset generator drivers

Implement a core clknode driver for the JH7110 (StarFive VisionFive v2)
platform.

Add clock/reset generator drivers for the PLL, SYS, and AON clock
groupings.

Co-authored-by: mhorne
Reviewed by: mhorne
Sponsored by: The FreeBSD Foundation (mhorne's contributions)
Differential Revision: https://reviews.freebsd.org/D43037

4 months agostarfive: add a syscon driver
Mitchell Horne [Tue, 5 Mar 2024 23:57:30 +0000 (19:57 -0400)]
starfive: add a syscon driver

It serves the purpose of attaching syscon devices as early as possible;
this is required for early attachment of the PLL clock driver.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D44270

4 months agobusdma: better handling of small segment bouncing
Mitchell Horne [Wed, 14 Feb 2024 16:56:13 +0000 (12:56 -0400)]
busdma: better handling of small segment bouncing

Typically, when a DMA transaction requires bouncing, we will break up
the request into segments that are, at maximum, page-sized.

However, in the atypical case of a driver whose maximum segment size is
smaller than PAGE_SIZE, we end up inefficiently assigning each segment
its own bounce page. For example, the dwmmc driver has a maximum segment
size of 2048 (PAGE_SIZE / 2); a 4-page transfer ends up requiring 8
bounce pages in the current scheme.

We should attempt to batch segments into bounce pages more efficiently.
This is achieved by pushing all considerations of the maximum segment
size into the new _bus_dmamap_addsegs() function, which wraps
_bus_dmamap_addseg(). Thus we allocate the minimal number of bounce
pages required to complete the entire transfer, while still performing
the transfer with smaller-sized transactions.

For most drivers with a segment size >= PAGE_SIZE, this will have no
impact. For drivers like dwmmc mentioned above, this improves the memory
and performance efficiency when bouncing a large transfer.

Co-authored-by: jhb
Reviewed by: jhb
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45048

4 months agobusdma: deduplicate _bus_dmamap_addseg() function
Mitchell Horne [Wed, 14 Feb 2024 17:01:15 +0000 (13:01 -0400)]
busdma: deduplicate _bus_dmamap_addseg() function

It is functionally identical in all implementations, so move the
function to subr_busdma_bounce.c. The KASSERT present in the x86 version
is now enabled for all architectures. It should be universally
applicable.

Reviewed by: jhb
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45047

4 months agofib_dxr: set fib_data field in struct dxr_aux early enough
Marko Zec [Tue, 7 May 2024 15:44:09 +0000 (17:44 +0200)]
fib_dxr: set fib_data field in struct dxr_aux early enough

Previously it was possible for dxr_build() to return with da->fd
unset in case of range_tbl or x_tbl malloc() failures.  This
may have led to NULL ptr dereferencing in dxr_change_rib_batch().

MFC after: 1 week

PR: 278422

4 months agofib_dxr: s/KASSERT/MPASS/
Marko Zec [Tue, 7 May 2024 15:33:23 +0000 (17:33 +0200)]
fib_dxr: s/KASSERT/MPASS/

MFC after: 1 week

4 months agofib_dxr: KASSERTs for chasing NULL ptr and runaway refcount suspects
Marko Zec [Tue, 7 May 2024 15:22:00 +0000 (17:22 +0200)]
fib_dxr: KASSERTs for chasing NULL ptr and runaway refcount suspects

MFC after: 1 week

4 months agofib_dxr: move the bulko of malloc() failure logging into dxr_build()
Marko Zec [Tue, 7 May 2024 15:11:30 +0000 (17:11 +0200)]
fib_dxr: move the bulko of malloc() failure logging into dxr_build()

4 months agoboot1.efi: Don't redundantly include devpath.c
Warner Losh [Tue, 7 May 2024 02:06:54 +0000 (20:06 -0600)]
boot1.efi: Don't redundantly include devpath.c

devpath.c is on both the comand line and in libefi. This is redundant
and was a mistake in 4cf36aa1017f9. It never should have been here. In
practice, this just means that the devpath.o from libefi.a goes unused.
This will cause problems with some upcoming changes (D44872) to enable
LTO to reduce the size of the binaries, so go ahead and make the change
now to reduce the changeset for that. No functional change indended.

Fixes: 4cf36aa1017f9
Co-authored-by: sobomax
Sponsored by: Netflix

4 months agodlopen(3): mention fdlopen for capsicum(4)
Ed Maste [Tue, 7 May 2024 01:45:50 +0000 (21:45 -0400)]
dlopen(3): mention fdlopen for capsicum(4)

Capsicum-sandboxed applications generally cannot use dlopen, as absolute
and cwd-relative paths cannot be accessed.  Mention that fdlopen is
useful for sandboxed applications.

PR: 277169
Reviewed by: markj, oshogbo
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D45108

4 months agoRemove lingering geom_bde references.
Poul-Henning Kamp [Tue, 7 May 2024 09:25:23 +0000 (09:25 +0000)]
Remove lingering geom_bde references.

4 months agoRemove final cross-reference to GBDE
Poul-Henning Kamp [Tue, 7 May 2024 07:40:20 +0000 (07:40 +0000)]
Remove final cross-reference to GBDE