Commit graph

43012 commits

Author SHA1 Message Date
Wei Hu
64610df593 mana: remove redundant doorbell in mana_poll_rx_cq()
With the last commit to refill the rx mbuf in batch, the doorbell
in mana_poll_rx_cq() becomes redundant. Remove it to save a few
microseconds spent in mmio call.

Reported by:	NetApp
Reviewed by:	Tallamraju, Sai
Tested by:	whu
Fixes:		9b8701b8 ("mana: refill the rx mbuf in batch")
MFC after:	3 days
Sponsored by:	Microsoft

(cherry picked from commit 47f4137e44b8079c7784604d220a298db07a19a1)
2025-03-18 04:53:56 +00:00
Slava Shwartsman
8a78a9aa99 mlx5: Fix BlueField-4 device description
(cherry picked from commit 7008b9fab5552fd6dcf5a00cd2c62144d54ef3a0)
2025-03-18 03:41:18 +02:00
Christos Margiolis
4ed0ca91a3 sound: Make feed_mixer_apply() __always_inline
Reported by:	mav
Fixes:		4021fa32d92d ("sound: Simplify pcm/feeder_mixer.c")
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 717adecbbb5293d8386caa866c21421ef9eeb22c)
2025-03-17 19:29:17 +01:00
Christos Margiolis
caa06360e6 sound: Update COPYRIGHT notices
Only to files I've currently made significant contributions to.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week

(cherry picked from commit c824383b269d8abe175ea4751194660716d5600e)
2025-03-17 19:29:17 +01:00
Christos Margiolis
65dec16946 sound: Make dev.pcm.X.mode dynamic
Currently dev.pcm.X.mode is calculated only once in pcm_sysinit(), which
is called by pcm_register() during attach, but this can result in
inconsistencies.

For some context, what pcm_mode_init() does is, it checks if "playcount"
is positive, in which case we assume the device supports playback. The
same is done for "reccount" for recording, and if "mixer_dev" is not
NULL, we know the device has a mixer.

The "playcount" and "reccount" variables correspond to the number of
_primary_ playback/recording channels, so we can assume that the primary
channels have been created before reaching pcm_mode_init(). However, for
the mixer that's not always the case. If the mixer is created _after_
pcm_register(), as is the case for snd_dummy(4) for example,
pcm_mode_init() will see that "mixer_dev" is NULL, and report that the
device does not have a mixer, whereas in reality we just created it
afterwards.

While this could be fixed by simply creating the mixers always before
pcm_register(), it is better to be robust and calculate the mode
dynamically.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D49024

(cherry picked from commit ab95710f30f7255d3a6be22a1a2c375ee0f96868)
2025-03-17 19:29:17 +01:00
Christos Margiolis
31ddfe9d9c sound: Retire SD_F_AUTOVCHAN
This flag is redundant and essentially a no-op, as it is set when the
device supports at least playback or recording, which is almost always
the case. But even if the device is mixer-only (i.e., 0 channels), there
is no reason to keep this flag; it is only used to bail out of the vchan
sysctl handlers, but we already bail out anyway if we try to use the
sysctl in a vchan direction that is not supported.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D49021

(cherry picked from commit b768f2c7773b6e306fb43687657414f9f42a27d4)
2025-03-17 19:29:15 +01:00
Christos Margiolis
42889e8e2f sound: Take dsp_cdevsw out of header file
Not used outside of pcm/dsp.c.

MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Reviewed by:	imp, markj
Differential Revision:	https://reviews.freebsd.org/D49217

(cherry picked from commit 2fda8597116e760c32f07af43d260041f975b650)
2025-03-17 19:28:54 +01:00
Christos Margiolis
a33356100b sound: Simplify pcm/feeder_mixer.c
- Get rid of macro magic.
- Make feed_mixer_info handling similar to most feeders.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48394

(cherry picked from commit 4021fa32d92d656d3d43186cc231695c7ad53d33)
2025-03-17 19:28:54 +01:00
Christos Margiolis
15dc84ba5f sound: Remove feed_matrix_apply_generic()
It does what feed_matrix_apply() already does, so it is redundant.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48036

(cherry picked from commit b73b5f70e9f6be951e66531f6f57249eea4ba4dc)
2025-03-17 19:28:54 +01:00
Christos Margiolis
a25f84cf09 sound: Remove macro magic from pcm/feeder_matrix.c
Turn the FEEDMATRIX_DECLARE macro into a single inline function
(feed_matrix_apply()). There is no reason to have this as a macro, it
only complicated the code. An advantage of this patch is that, because
we no longer call the functions created by the macro through function
pointers (apply field of feed_matrix_info), we can call
feed_matrix_apply() directly in feed_matrix_feed().

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48035

(cherry picked from commit ac24c9da8bb7af731646dd7924841a28e2ad7ad7)
2025-03-17 19:28:54 +01:00
Christos Margiolis
b2adb71308 sound: Remove macro magic from pcm/feeder_eq.c
Turn the FEEDEQ_DECLARE macro into a single inline function
(feed_eq_biquad()). There is no reason to have this as a macro, and it
only complicates the code. An advantage of this patch is that, because
we no longer call the functions created by the macro through function
pointers (biquad_op), we can call feed_eq_biquad() directly in
feed_eq_feed().

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48032

(cherry picked from commit e18d66d9c515abc729f5c4740b9b999d28abc333)
2025-03-17 19:28:54 +01:00
Christos Margiolis
d8c3c6752b sound: Turn clamp macros into a function
This makes some subsequent feeder refactors easier to implement.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48421

(cherry picked from commit 4918fc2e238b581aaf1f63e20003d5fa957f0b09)
2025-03-17 19:28:54 +01:00
Christos Margiolis
33529d6ad4 sound: Refactor the format conversion framework
Merge the PCM_READ|WRITE_* macros defined in pcm/pcm.h, as well as the
intpcm_read|write_* macros defined in pcm/feeder_format.c, into six
inline functions: pcm_sample_read|write[_norm|calc](). The absence of
macro magic makes the code significantly easier to read, use and modify.

Since these functions take the input/output format as a parameter, get
rid of the read() and write() function pointers defined in struct
feed_format_info, as well as the feeder_format_read|write_op()
functions, and use the new read/write functions directly.

Sponsored by:	The FreeBSD Fondation
MFC after:	1 week
Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D47932

(cherry picked from commit 433e270f341cf660b2fe125c2e0f733073829188)
2025-03-17 19:28:54 +01:00
Kyle Evans
7215aed797 kern: wg: remove overly-restrictive address family check
IPv4 packets can be routed via an IPv6 nexthop, so the handling of the
parsed address family is more strict than it needs to be.  If we have a
valid header that matches a known peer, then we have no reason to
decline the packet.

Convert it to an assertion that it matches the destination as viewed by
the stack below it, instead.  `dst` may be the gateway instead of the
destination in the case of a nexthop, so the `af` assignment must be
switched to use the destination in all cases.

Add a test case that approximates a setup like in the PR and
demonstrates the issue.

PR:		284857
Reviewed by:	markj (earlier version), zlei

(cherry picked from commit 2bef0d54f74dad6962ef7d1dfa407e95cb4fb4ad)
2025-03-14 21:52:02 -05:00
Wei Hu
5c97b7c296 mana: refill the rx mbuf in batch
Set the default refill threshod to be one quarter of the rx queue
length. User can change this value with hw.mana.rx_refill_thresh
in loader.conf. It improves the rx completion handling by saving
10% to 15% of overall time with this change.

Tested by:	whu
MFC after:	2 weeks
Sponsored by:	Microsoft

(cherry picked from commit 9b8701b81f14f0fa0787425eb9761b765d5faab0)
2025-03-12 09:09:32 +00:00
Wei Hu
dae67894b4 mana: Increase default tx and rx ring size to 1024
Tcp perfomance tests show high number of retries under heave tx
traffic. The numbers of queue stops and wakeups also increase.
Further analysis suggests the FreeBSD network stack tends to send
TSO packets with multiple sg entries, typically ranging from
10 to 16. On mana, every two sgs takes one unit of tx ring.
Therefore, adding up one unit for the head, it takes 6 to 9 units
of tx ring to send a typical TSO packet.

Current default tx ring size is 256, which can get filled up
quickly under heavy load. When tx ring is full, the send queue
is stopped waiting for the ring space to be freed. This could
cause the network stack to drop packets, and lead to tcp
retransmissions.

Increase the default tx and rx ring size to 1024 units. Also
introduce two tuneables allowing users to request tx and rx ring
size in loader.conf:
        hw.mana.rx_req_size
        hw.mana.tx_req_size
When mana is loading, the driver checks these two values and
round them up to power of 2. If these two are not set or
the request values are out of the allowable range, it sets the
default ring size instead.

Also change the tx and rx single loop completion budget to 8.

Tested by:	whu
MFC after:	2 weeks
Sponsored by:	Microsoft

(cherry picked from commit a18e99945414fb1f9d455b780c6fcf2d09cc68d8)
2025-03-12 08:40:56 +00:00
Wei Hu
ec0c098369 Hyper-V: hn: rewrite hn rsc swtich to avoid sysctl hang
Changing the rsc_switch flag using sysctl to turn rsc on or off
could hang. The orignal code sends request to host to get the
mtu setting. Sometimes the host fails to reply, causing
the thread to sleep forever waiting for the host response.

Use existing cached mtu from hn device instead to avoid calling
host.

Reported by:	whu
Tested by:	whu
MFC after:	1 week

(cherry picked from commit da1deb784d9ad3a4015a3f91fa1a5ce394fd3fdb)
2025-03-12 08:18:01 +00:00
Warner Losh
642fc04eda usb: Kill left-over cdefs.h includes
These includes were for __FBSD_RCSID() macro. They weren't formatted
like the rest of the tree so weren't trimmed automatically when that
script was run. Trim them now.

MFC After: 1 week
Sponsored by:		Netflix

(cherry picked from commit ca48e43ba9ee73a07cdbad8365117793b01273bb)
2025-03-11 09:41:19 -06:00
Slava Shwartsman
b328b79f6f mlx5en: Fix domain set usage in TLS tag import functions
(cherry picked from commit 85af37e15958bd050093e6368afe6afe8e7a5ced)
2025-03-11 02:59:11 +02:00
Vladimir Kondratyev
e7d1f208fd gpioaei: Add support for ACPI _EVT method
This method is often used to process GPIO "Power on" button press on
modern x86 laptops with S0ix sleep mode.

Tested with patch from https://reviews.freebsd.org/D26407

Sponsored by:	Future Crew LLC
MFC after:	2 month

(cherry picked from commit adc2c156acb50bac6e8ec66b72cadc8910ce4975)
2025-03-09 23:42:35 +03:00
Ahmad Khalifa
f05f6d9373 acpi_gpiobus: assume GPIO_PIN_INPUT for interrupt pins
Different drivers respond differently to having neither GPIO_PIN_INPUT
or GPIO_PIN_OUTPUT set, this stops the unpredictable results.

(cherry picked from commit 6aab381a498f1a43ba372f4ae9f57ef88b4767b5)
2025-03-09 23:42:13 +03:00
Jasper Tran O'Leary
875ec35c06 gve: Fix qpl_buf_head being initialized improperly
Currently, for DQO QPL our MPASS assertion on qpl_buf_head for available
pending_pkts (i.e. not holding a packet) fails due to incorrect
initialization. The MPASS fails on the first run of packets through the
ring when INVARIANTS is on, and when INVARIANTS is off, things work
without a bug.

The MPASS guards against improper reaping of "pending_pkt" objects,
and thus was failing for the first run through the ring. By correctly
initializing the objects in this patch we make the MPASS not fail on the
first run too.

Signed-off-by: Vee Agarwal <veethebee@google.com>
Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>

Reviewed by:	delphij, markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D48968

(cherry picked from commit 73c3fe4db3ebc2bd6cb732aae77ea017fd376d22)
2025-03-07 22:51:48 +00:00
Jasper Tran O'Leary
28ba212a95 gve: Do minor cleanup and bump version
This commit fixes several minor issues:

- Removes an unnecessary function pointer parameter on gve_start_tx_ring
- Adds a presubmit check against style(9)
- Replaces mb() and rmb() macros with native
  atomic_thread_fence_seq_cst() and atomic_thread_fence_acq()
  respectively
- Fixes various typos throughout
- Increments the version number to 1.3.2

Co-authored-by: Vee Agarwal <veethebee@google.com>
Signed-off-by: Vee Agarwal <veethebee@google.com>
Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>

Reviewed by:	delphij, markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D48969

(cherry picked from commit 031800c786823a9ad4c4d2f79f217d42dad3f5d1)
2025-03-07 22:51:48 +00:00
Jasper Tran O'Leary
65f5027e38 gve: Fix memory leak during reset
Before this change, during reset we were allocating new memory for
priv->ptype_lut_dqo, irq_db_array and the counter_array over the old
memory. This change ensures we do not allocate new memory during reset
and avoid memory leaks.

Signed-off-by: Vee Agarwal <veethebee@google.com>
Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>

Reviewed by:	delphij, markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D48970

(cherry picked from commit 62b2d0c3f4add3bb87081a96412056e17eed31ea)
2025-03-07 22:51:48 +00:00
Jasper Tran O'Leary
9d4823824d gve: Disallow MTUs within a problematic range
If hardware LRO is enabled with GVE, then setting the driver's MTU to a
range of values around 8000 will cause dropped packets and drastically
degraded performance. While this issue is being investigated, we need
to prohibit the driver's MTU being set to a value within this range.

Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>

Reviewed by:	delphij, markj
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D48971

(cherry picked from commit 909e2d7b691f7418a78b1289a51d3b6c46860a9b)
2025-03-07 22:51:48 +00:00
Christos Margiolis
858504a1d8 sound: Call chn_kill() in chn_init() failure
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48966

(cherry picked from commit bc7e65e950154572d8c9a04dc033075bf37aae40)
2025-03-04 16:46:06 +01:00
Christos Margiolis
127a39c54c sound: Update comment and channel insertion in vchan_create()
The comment and rationale behind choosing CHN_INSERT_SORT_DESCEND()
instead of CHN_INSERT_SORT_ASCEND() are no longer relevant as of FILLME
("sound: Allocate vchans on-demand").

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D48962

(cherry picked from commit 2868776c9c6f5313a5676786f642b766f103d780)
2025-03-04 16:46:06 +01:00
Christos Margiolis
cd4615c223 sound: Simplify locking during device creation
The mechanism of acquiring SD_F_BUSY in pcm_init() and releasing it in
pcm_register() is a leftover from the previous device creation scheme,
where pcm_init() (previously pcm_register()) would create the sysctl
nodes, as well as the device node. In this scenario, acquiring SD_F_BUSY
was necessary, in order to avoid races in case the device was accessed
before it was ready for use. Commit 66f3eb14e955 ("sound: Move sysctl
and /dev/dspX creation to pcm_setstatus()") fixed this issue, so we can
simplify things now. Only acquire SD_F_BUSY in pcm_addchan(), because
chn_init() expects to be called with SD_F_BUSY acquired.

While here, move the sndstat_register() call further down to be more
robust.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D48482

(cherry picked from commit fd906e47b18f53b09524647bf8431dc6170b8dfd)
2025-03-04 16:46:06 +01:00
Christos Margiolis
bd9a9c0019 snd_uaudio: Remove undefined functions
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch, markj, emaste
Differential Revision:	https://reviews.freebsd.org/D48424

(cherry picked from commit 352aa9ad1d77a8ea8e4afef66691dc1a06344618)
2025-03-04 16:46:06 +01:00
Christos Margiolis
21e0d2aa35 sound: Return if the new speed/format is the same as the current one
This gives us a slight performance boost since we do not have to go
through chn_setparam() and the driver functions.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch, emaste
Differential Revision:	https://reviews.freebsd.org/D48012

(cherry picked from commit 40616b7e41ff96b6d7522445b00f27f26d593a85)
2025-03-04 16:46:06 +01:00
Christos Margiolis
9091f61d2f sound: Get rid of redundant variables in chn_setspeed() and chn_setformat()
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch, emaste
Differential Revision:	https://reviews.freebsd.org/D48011

(cherry picked from commit 4e1b75bebf41b6e446d72c755fa420836341ade2)
2025-03-04 16:46:06 +01:00
Christos Margiolis
5dc0c867c8 sound: Remove SNDBUF_LOCKASSERT()
It's a no-op. There is no lock associated with the buffer.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch, markj
Differential Revision:	https://reviews.freebsd.org/D48008

(cherry picked from commit 6524d2a5affd02623e6909fff0ca03ba21882a0c)
2025-03-04 16:46:06 +01:00
Christos Margiolis
905ae2bc6a sound: Handle multiple primary channel cases in vchan sysctls
vchan_getparentchannel() is used by various vchan sysctl functions to
fetch the first primary channel. However, this assumes that all devices
have only one primary channel per direction. If a device does not meet
this assumption, then the sysctl functions will be applying the
configurations on the first primary channel only.

Since we now have the "primary" channel sublist, we can retire
vchan_getparentchannel() and iterate through the "primary" list in each
sysctl function and apply the settings to all primary channels.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48336

(cherry picked from commit 1cbafcd13796934a7896064cdb23fd4e37d58821)
2025-03-04 16:46:06 +01:00
Christos Margiolis
58e17fd3c4 sound: Cache vchanmode
We already cache vchanrate and vchanformat.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48335

(cherry picked from commit b50f53cf872eca6b9a174a51fa183e8c2f88d97c)
2025-03-04 16:46:06 +01:00
Christos Margiolis
960ee80949 sound: Allocate vchans on-demand
Refactor pcm_chnalloc() and merge with parts of vchan_setnew() (now
removed) and dsp_open()’s channel creation into a new dsp_chn_alloc()
function. The function is responsible for either using a free HW channel
(if vchans are disabled), or allocating a new vchan.

Clean up allocated vchans associated with a given dsp_cdevpriv on
dsp_close() instead of leaving them unused.

hw.snd.vchans_enable (previously hw.snd.maxautovchans) and
dev.pcm.X.{play|rec}.vchans now work as tunables to only enable/disable
vchans, as opposed to setting their number and/or (de-)allocating
vchans. Since these sysctls do not trigger any (de-)allocations anymore,
their effect is instantaneous, whereas before we could have frozen the
machine (when trying to allocate new vchans) when setting
dev.pcm.X.{play|rec}.vchans to a very large value.

Create a new "primary" channel sublist so that we do not waste time
looping through all channels in dsp_chn_alloc(), since we are only
looking for a parent channel to either use, or add a new vchan to. This
guarantees a steady traversal speed, as the parent channels are most
likely going to be just a handful (2). What was currently in place was a
loop through the whole channel list, which meant that the traversal
would take longer the more channels were added to that list.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D47917

(cherry picked from commit 02d4eeabfd73e6a827f5d42601e99aad92060b04)
2025-03-04 16:46:05 +01:00
Christos Margiolis
a8fc617701 sound: Report actual vchanrate and vchanformat in sysctl
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48435

(cherry picked from commit d39be38a353323d05744eeb3e08267108e55b9b1)
2025-03-04 16:46:05 +01:00
Christos Margiolis
8be87b77e4 sound: Initialize channels with sane default rate and format
There is no good reason to initialize with AFMT_U8 at 8000Hz.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48434

(cherry picked from commit e89ee05b7cf1a54d0d6ed56e4d451fdd9a10db43)
2025-03-04 16:46:05 +01:00
Christos Margiolis
5fc710ae2d sound: Call vchan_destroy() on vchan_create() failure
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48183

(cherry picked from commit 2546ab1b3632a9ebfe88d9d5dc55700e653bff5d)
2025-03-04 16:46:05 +01:00
Christos Margiolis
8233ccc3bc sound: Do not fail from vchan_destroy() if children list is empty
vchan_destroy() should be able to call chn_kill() regardless of whether
the channel has been added to the children list yet or not. Also remove
the CHN_F_BUSY check. There is no reason we shouldn't execute the code
below if the parent is not busy.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48185

(cherry picked from commit 405b1e50926d4162fb9503644073c0184a8b37d9)
2025-03-04 16:46:05 +01:00
Christos Margiolis
a86dfa4296 sound: Do not return an error from chn_notify() if the children list is empty
An empty children list does not mean that there is an error.

Reported by:	Florian Walpen <dev@submerge.ch>
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Reviewed by:	dev_submerge.ch
Differential Revision:	https://reviews.freebsd.org/D48156

(cherry picked from commit 164651f16c860049a4ad2098206def8ca7a39b4a)
2025-03-04 16:46:05 +01:00
Kevin Lo
8ac7c651db ixgbe: Fix a logic error in ixgbe_read_mailbox_vf()
Reviewed by:	kbowling
Differential Revision:	https://reviews.freebsd.org/D49156

(cherry picked from commit 5c7087c349fc1d826807aa1a11912c9e774e3321)
2025-03-01 10:28:58 +08:00
John Baldwin
08f22bb41f cxgbe tom: Make t4_push_frames static to t4_cpl_io.c
This function is not used outside of this file.

Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D47760

(cherry picked from commit c2cd12b7ae28a34e551d1b96906620249a860bc0)
2025-02-27 12:17:51 -05:00
John Baldwin
513cd54856 Use bus_generic_detach directly instead of a wrapper
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D47386

(cherry picked from commit d62d10eb1229c9aa0b3cf1b18872df59c18155db)
2025-02-27 12:08:57 -05:00
John Baldwin
0f1708d857 cxgbe: Tidy TOE tunables under hw.cxgbe
- Only two of these tunables are used for RATELIMIT without
  TCP_OFFLOAD.

- Mark t4_tmr_idx_ofld and t4_pktc_idx_ofld static.

- Move hw.cxgbe.cop_managed_offloading under hw.cxgbe.toe since it is
  specific to TOE.

Reviewed by:	np
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D47765

(cherry picked from commit 90652188232458891a2922fb5a542971aa58055d)
2025-02-27 12:03:06 -05:00
John Baldwin
d57dc2d6a0 cxgbe tom: Enable TLS offload support by default
Reviewed by:	np
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D47764

(cherry picked from commit 8b1788118a1af586ed056a00b32a287c41095e7a)
2025-02-27 12:03:00 -05:00
John Baldwin
2266614d07 hifn/safe: Remove dummy calls to bus_generic_detach
These drivers do not add child devices, so there's no need to try to
detach children.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D47390

(cherry picked from commit 8b54d874c70d9fb3ed2e059f65c91b3e0eaadbd7)
2025-02-27 10:18:05 -05:00
John Baldwin
7a88ac783b dpaa2_mc: Check for error the first time bus_generic_detach is called
This removes the need for the second call.

Reviewed by:	dsl
Differential Revision:	https://reviews.freebsd.org/D47388

(cherry picked from commit 24d5a8e6eec2b9eed9591971f223d79b8d7044c9)
2025-02-27 10:17:57 -05:00
John Baldwin
1ab14e185a Check for errors when detaching children first, not last
These detach routines in these drivers all ended with 'return
(bus_generic_detach())' meaning that if any child device failed to
detach, the parent driver was left in a mostly destroyed state, but
still marked attached.  Instead, bus drivers should detach child
drivers first and return errors before destroying driver state in the
parent.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D47387

(cherry picked from commit d412c07617eb35435668b024bc2cecda05f57f1f)
2025-02-27 10:17:49 -05:00
John Baldwin
38ed49b0f9 sound: Use bus_child_deleted methods to free ivars for children
Note that hdsp and hdspe were just leaking the ivars on detach
previously.

While here, use M_WAITOK to allocate ivars since attach routines are
sleepable.  hdsp and hdspe were using M_NOWAIT without checking the
return value.

Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D47366

(cherry picked from commit a17a41ffde0d1c579dcd7cef7900c3b44be0ec81)

hsdp(4) doesn't exist in stable/14 so is not patched
2025-02-27 10:16:56 -05:00
Andrew Turner
32de28db23 acpi_gpiobus: Fix cleanup on set flags failure
When GPIOBUS_PIN_SETFLAGS fails we called gpiobus_free_ivars to clean
up the contents of the ivar, then would free the ivar. This lead to a
use-after-free as the ivar had already been set on the child so
gpiobus_child_deleted would try to free it again.

Fix this by removing the early cleanup and letting
gpiobus_child_deleted handle it.

Fixes:	c9e880c0ceef ("gpiobus: Use a bus_child_deleted method to free ivars for children")
Sponsored by:	Arm Ltd
Differential Revision:	https://reviews.freebsd.org/D47670
(cherry picked from commit bb8c68b25333638a20838500ccffee23b4291427)
2025-02-27 10:10:09 -05:00