<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>virtio: Accept VIRTIO_F_RING_RESET in the modern PCI transport</title>
<updated>2026-07-15T06:57:40+00:00</updated>
<author>
<name>Faraz Vahedi</name>
<email>kfv@kfv.io</email>
</author>
<published>2026-07-09T20:01:44+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=8bdc312dac550c292c58a6a3243b08bc8c944b74'/>
<id>8bdc312dac550c292c58a6a3243b08bc8c944b74</id>
<content type='text'>
Accept per-virtqueue reset when the device offers it, alongside
the V1 flag.  Negotiating the feature merely permits the use of
per-virtqueue reset and imposes no obligation on a driver that
never uses it, while refusing capability-only transport features
can make strict devices reject the feature set altogether.

No functional change on hosts that do not offer RING_RESET.

Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Accept per-virtqueue reset when the device offers it, alongside
the V1 flag.  Negotiating the feature merely permits the use of
per-virtqueue reset and imposes no obligation on a driver that
never uses it, while refusing capability-only transport features
can make strict devices reject the feature set altogether.

No functional change on hosts that do not offer RING_RESET.

Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</pre>
</div>
</content>
</entry>
<entry>
<title>virtio: Report feature masks on negotiation failure</title>
<updated>2026-07-15T06:57:40+00:00</updated>
<author>
<name>Faraz Vahedi</name>
<email>kfv@kfv.io</email>
</author>
<published>2026-07-09T20:01:20+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=5d0488b29dc5b3e8201d04cf7a015dce9e774d5d'/>
<id>5d0488b29dc5b3e8201d04cf7a015dce9e774d5d</id>
<content type='text'>
Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</pre>
</div>
</content>
</entry>
<entry>
<title>virtio: Add feature bit definitions up to VirtIO v1.3</title>
<updated>2026-07-15T06:57:40+00:00</updated>
<author>
<name>Faraz Vahedi</name>
<email>kfv@kfv.io</email>
</author>
<published>2026-07-09T20:00:07+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=f9a4dd60b0cf4ce920a83b125f81ee401fc471ce'/>
<id>f9a4dd60b0cf4ce920a83b125f81ee401fc471ce</id>
<content type='text'>
Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Faraz Vahedi &lt;kfv@kfv.io&gt;
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319
</pre>
</div>
</content>
</entry>
<entry>
<title>snd_uaudio: Initialize mixer_lock with MTX_RECURSE</title>
<updated>2026-07-14T21:16:28+00:00</updated>
<author>
<name>Christos Margiolis</name>
<email>christos@FreeBSD.org</email>
</author>
<published>2026-07-11T12:57:35+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=954001a9dd363da9184706657eb34f9622bb220f'/>
<id>954001a9dd363da9184706657eb34f9622bb220f</id>
<content type='text'>
Fixes:		fc9dc8482396 ("snd_uaudio: Lock usbd_transfer_start() in uaudio_mixer_ctl_set()")
PR:		296682
Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes:		fc9dc8482396 ("snd_uaudio: Lock usbd_transfer_start() in uaudio_mixer_ctl_set()")
PR:		296682
Sponsored by:	The FreeBSD Foundation
MFC after:	3 days
</pre>
</div>
</content>
</entry>
<entry>
<title>mlx5ib: use the eventfd_ctx API for DEVX event subscriptions</title>
<updated>2026-07-14T19:25:48+00:00</updated>
<author>
<name>Ariel Ehrenberg</name>
<email>aehrenberg@nvidia.com</email>
</author>
<published>2026-06-15T08:27:56+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=40cc9de950f7e6ba2049467fa05c46b9161f49a5'/>
<id>40cc9de950f7e6ba2049467fa05c46b9161f49a5</id>
<content type='text'>
The DEVX_SUBSCRIBE_EVENT redirect path resolved the user's eventfd with
fdget(), which on FreeBSD only finds LinuxKPI files.  rdma-core creates
the eventfd with the native FreeBSD eventfd(2), so the lookup failed and
subscription returned EBADF; the delivery side likewise assumed a
LinuxKPI-pollable file.

Use the LinuxKPI eventfd_ctx API instead: eventfd_ctx_fdget() resolves
the native eventfd, eventfd_signal() notifies it, and eventfd_ctx_put()
releases it.  DEVX async events can then be delivered through a redirect
eventfd.

Reviewed by: kib
Sponsored by: Nvidia networking
MFC after: 1 month
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The DEVX_SUBSCRIBE_EVENT redirect path resolved the user's eventfd with
fdget(), which on FreeBSD only finds LinuxKPI files.  rdma-core creates
the eventfd with the native FreeBSD eventfd(2), so the lookup failed and
subscription returned EBADF; the delivery side likewise assumed a
LinuxKPI-pollable file.

Use the LinuxKPI eventfd_ctx API instead: eventfd_ctx_fdget() resolves
the native eventfd, eventfd_signal() notifies it, and eventfd_ctx_put()
releases it.  DEVX async events can then be delivered through a redirect
eventfd.

Reviewed by: kib
Sponsored by: Nvidia networking
MFC after: 1 month
</pre>
</div>
</content>
</entry>
<entry>
<title>mlx5ib: initialize DEVX subscription state before the eventfd fdget()</title>
<updated>2026-07-14T10:39:54+00:00</updated>
<author>
<name>Ariel Ehrenberg</name>
<email>aehrenberg@nvidia.com</email>
</author>
<published>2026-06-15T08:16:30+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=9c7629d69cebafba3eea6787d3bfc100d60c3b19'/>
<id>9c7629d69cebafba3eea6787d3bfc100d60c3b19</id>
<content type='text'>
In the DEVX_SUBSCRIBE_EVENT handler the eventfd path can fail and
"goto err" before the subscription's xa keys and ev_file have been set;
they are still zeroed from kzalloc().  The cleanup then looks up a
level-1 xa entry with key 0, gets NULL, and faults dereferencing it.

Initialize the fields the cleanup path relies on right after the
subscription is allocated, before it is linked and before the fallible
fdget(), so a later failure unwinds cleanly.

Reviewed by: kib
Sponsored by: Nvidia networking
MFC after: 1 month
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the DEVX_SUBSCRIBE_EVENT handler the eventfd path can fail and
"goto err" before the subscription's xa keys and ev_file have been set;
they are still zeroed from kzalloc().  The cleanup then looks up a
level-1 xa entry with key 0, gets NULL, and faults dereferencing it.

Initialize the fields the cleanup path relies on right after the
subscription is allocated, before it is linked and before the fallible
fdget(), so a later failure unwinds cleanly.

Reviewed by: kib
Sponsored by: Nvidia networking
MFC after: 1 month
</pre>
</div>
</content>
</entry>
<entry>
<title>ena: Put taskqueues into correct domain if !RSS</title>
<updated>2026-07-14T01:19:48+00:00</updated>
<author>
<name>Colin Percival</name>
<email>cperciva@FreeBSD.org</email>
</author>
<published>2026-06-27T23:33:46+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=2e21f7e8140447c2dcbc964ff3482f12f9bd6683'/>
<id>2e21f7e8140447c2dcbc964ff3482f12f9bd6683</id>
<content type='text'>
When compiled without 'options RSS', the ena driver created taskqueues
using taskqueue_start_threads_cpuset passing a mask value of NULL,
both in the ena_setup_tx_resources path (for enqueues) and in the
ena_create_io_queues path (for the completion-processing).

In the default configuration, on most EC2 instances, this results in
taskqueues running in the right NUMA domain, but only by accident; in
non-default configurations (e.g. with with multiple EBS volumes
attached and associated NVMe taskqueues) the taskqueues may land in
the wrong NUMA domain even on instance types where the one-EBS-one-ENA
case produces the desired results.

Set (struct ena_que)-&gt;domain and use that to inform the choice of CPU
sets.  On a c8gn.48xlarge EC2 instance this doubles throughput on a
32-TCP-stream benchmark.

Reviewed by:	akiyano
MFC after:	7 days
Sponsored by:	Amazon
Differential Revision:	https://reviews.freebsd.org/D57918
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When compiled without 'options RSS', the ena driver created taskqueues
using taskqueue_start_threads_cpuset passing a mask value of NULL,
both in the ena_setup_tx_resources path (for enqueues) and in the
ena_create_io_queues path (for the completion-processing).

In the default configuration, on most EC2 instances, this results in
taskqueues running in the right NUMA domain, but only by accident; in
non-default configurations (e.g. with with multiple EBS volumes
attached and associated NVMe taskqueues) the taskqueues may land in
the wrong NUMA domain even on instance types where the one-EBS-one-ENA
case produces the desired results.

Set (struct ena_que)-&gt;domain and use that to inform the choice of CPU
sets.  On a c8gn.48xlarge EC2 instance this doubles throughput on a
32-TCP-stream benchmark.

Reviewed by:	akiyano
MFC after:	7 days
Sponsored by:	Amazon
Differential Revision:	https://reviews.freebsd.org/D57918
</pre>
</div>
</content>
</entry>
<entry>
<title>smp: remove unused hlt_cpus_mask</title>
<updated>2026-07-13T19:40:42+00:00</updated>
<author>
<name>Mitchell Horne</name>
<email>mhorne@FreeBSD.org</email>
</author>
<published>2026-07-13T19:15:19+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=df0aca0d73064a1a199dbae3857012951f96cf2d'/>
<id>df0aca0d73064a1a199dbae3857012951f96cf2d</id>
<content type='text'>
It is a relic, apparently once populated by a machdep.hlt_cpus sysctl.
The sysctl was removed, and ULE has never honored this mask. It is now
safe to remove.

Remove the mask, and its few remaining references in: sched_4bsd(4),
hwpmc(4), and hwt(4).

Reviewed by:	olce, kib
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D58158
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is a relic, apparently once populated by a machdep.hlt_cpus sysctl.
The sysctl was removed, and ULE has never honored this mask. It is now
safe to remove.

Remove the mask, and its few remaining references in: sched_4bsd(4),
hwpmc(4), and hwt(4).

Reviewed by:	olce, kib
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D58158
</pre>
</div>
</content>
</entry>
<entry>
<title>FDT: implement fdt_ether_get_addr()</title>
<updated>2026-07-13T08:35:47+00:00</updated>
<author>
<name>Michal Meloun</name>
<email>mmel@FreeBSD.org</email>
</author>
<published>2026-07-13T08:34:22+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=920518cf2e75012135104886d92814c048baa2fb'/>
<id>920518cf2e75012135104886d92814c048baa2fb</id>
<content type='text'>
Introduce fdt_ether_get_addr() in fdt_common.c/h that tries standard
DT properties in the correct order and falls back to a random address
when needed. This should be used by ethernet drivers instead of open-coding
the same logic.

MFC after:	2 weeks

Reviewed by:	mhorne, adrian, bz, jrtc27
Differential Revision:	https://reviews.freebsd.org/D58104
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce fdt_ether_get_addr() in fdt_common.c/h that tries standard
DT properties in the correct order and falls back to a random address
when needed. This should be used by ethernet drivers instead of open-coding
the same logic.

MFC after:	2 weeks

Reviewed by:	mhorne, adrian, bz, jrtc27
Differential Revision:	https://reviews.freebsd.org/D58104
</pre>
</div>
</content>
</entry>
<entry>
<title>hidwacom: Add Wacom ExpressKey Remote driver</title>
<updated>2026-07-12T17:11:10+00:00</updated>
<author>
<name>Abdelkader Boudih</name>
<email>freebsd@seuros.com</email>
</author>
<published>2026-07-12T17:11:07+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=4085d1991e2a9e155e3d928955ce8ba53512b8da'/>
<id>4085d1991e2a9e155e3d928955ce8ba53512b8da</id>
<content type='text'>
The Wacom ExpressKey Remote (ACK-411050) is a wireless button pad
with 18 programmable buttons and a touch ring, used as a companion
device with Wacom tablets.

It communicates via a USB wireless receiver (0x056a:0x0331) using a
vendor-specific HID report (ID 0x11).

This driver exposes the device via evdev:
  - 18 buttons: BTN_0–BTN_Z, BTN_BASE, BTN_BASE2
  - Touch ring position via ABS_WHEEL (0–71; reports 0 on release)
  - Pad activity marker via ABS_MISC (set to 15/PAD_DEVICE_ID when
    any input is active, 0 when idle that matches Linux wacom driver
    convention)
  - Remote serial number via MSC_SERIAL (for userland per-remote
    identification)

Battery level, charging state, and touch ring mode (3 LEDs, values 0–2)
are exposed as per-device sysctls (dev.hidwacom.0.battery, .charging,
.ring_mode) rather than overloading evdev misc codes. The ring mode
sysctl is preserved across device idle periods.

Protocol was decoded from USB traffic analysis and cross-referenced
against the Linux wacom_remote_irq() implementation in
drivers/hid/wacom_wac.c.

Reviewed by:	adrian
Differential Revision:	https://reviews.freebsd.org/D56729
Discussed with:	ziaee
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Wacom ExpressKey Remote (ACK-411050) is a wireless button pad
with 18 programmable buttons and a touch ring, used as a companion
device with Wacom tablets.

It communicates via a USB wireless receiver (0x056a:0x0331) using a
vendor-specific HID report (ID 0x11).

This driver exposes the device via evdev:
  - 18 buttons: BTN_0–BTN_Z, BTN_BASE, BTN_BASE2
  - Touch ring position via ABS_WHEEL (0–71; reports 0 on release)
  - Pad activity marker via ABS_MISC (set to 15/PAD_DEVICE_ID when
    any input is active, 0 when idle that matches Linux wacom driver
    convention)
  - Remote serial number via MSC_SERIAL (for userland per-remote
    identification)

Battery level, charging state, and touch ring mode (3 LEDs, values 0–2)
are exposed as per-device sysctls (dev.hidwacom.0.battery, .charging,
.ring_mode) rather than overloading evdev misc codes. The ring mode
sysctl is preserved across device idle periods.

Protocol was decoded from USB traffic analysis and cross-referenced
against the Linux wacom_remote_irq() implementation in
drivers/hid/wacom_wac.c.

Reviewed by:	adrian
Differential Revision:	https://reviews.freebsd.org/D56729
Discussed with:	ziaee
</pre>
</div>
</content>
</entry>
</feed>
