On 9/21/26 18:18, S. Ross Gohlke wrote:
On 9/15/26 07:12, S. Ross Gohlke wrote:
On 9/14/26 11:31, Kevin Bowling wrote:
On Sun, Sep 13, 2026 at 9:41 AM S. Ross Gohlke<[email protected]> wrote:
On 9/13/26 08:10, Abdelkader Boudih wrote:
Hi Again
The last round endup with 80% of the Diffs merged and 50% already MFCed.
imp@ still want to try one diff in a Netflix server...
So if there is an outage that spoil your favorite show, I'm the one to
blame. :)
Marcin Cieslak reported a wedge in Apple S3x . (I still trying to
reproduce it, but maybe this stack fix it)
New round of NVME testing :
D59637 nvme: do not touch INTMS/INTMC when configured for MSI-X
D59636 nvme: enforce the Abort Command Limit
D59634 nvme: do not complete a command when its Abort is not performed
D59633 nvme: delete the I/O queues in the system shutdown path
D59631 nvme: honor CRTO for the controller ready timeout
D59628 nvme: derive CC.CSS from CAP.CSS instead of hardcoding the NVM set
D59627 nvme: honor FLBAS Format Index Upper when selecting the LBA format
D59626 nvme: bound the AER error log byte-swap by the fetched length
D59625 nvme: reject namespaces formatted with metadata
This all extracted fromhttps://nvmexpress.org/specifications/ (Spec
2.4 , August 2026)
Link to the top of the stackhttps://reviews.freebsd.org/D59636
Mostly Spec review, previous versions of the spec was either vague, or
non-existant and nobody touched the code since then.
I request more people to test it so we add Quirks to drives that are
not spec compliant, but first we need to get the driver to spec
complianciancy first.
I tested this on my fleet for 10 days, and the machines are daily
building kernels and running as CI.
Best,
Abdelkader
I upgraded CURRENT via pkgbase last night, from 1600021 to 1600025.
* FreeBSD-src-16.snap20260912223212
* FreeBSD-utilities-16.snap20260912182422
I run a custom kernel based on MINIMAL_MMCCAM, but nvme is in the kernel.
```
% sysctl kern.conftxt | grep nvm
device nvme
```
Also, I tested with GENERIC kernel and got the same result.
System is ThinkPad L14 Gen 2 Tiger Lake.
I have everything working as expected, but intr shows unusually high
utilization, around
50% of a core, constantly, in top(1).
Did you identify _which_ intr? It sounds like it could be a22eb754c4bb.
I guess I don't know how to identify _which_ intr.
I am seeing no output in the usual places -- dmesg, /var/log/messages.
I tried enabling hw.nvme.verbose_cmd_dump: 1, but that makes no
difference.
Maybe I am wrong about nvme being the cause, I just ran out of things
to check.
All I know is, this is definitely new behavior and I have exhausted
my troubleshooting playbook.
From "top -PCS":
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
COMMAND
11 root 8 199 ki31 0B 128K RUN 0 60.2H
788.76% idle
12 root 29 -54 - 0B 464K WAIT 0 290:43
60.54% intr
If there is something else to check related to intr, please let me
know which manual page to start reading.
Also, I will look for a22eb754c4bb. Thanks for the pointer.
I tried everything I could think of, with no change.
* unload kernel modules
* stop all services
Then remembered the nvme upgrades.
I think this is the cause of the problem.
I don't know anything substantial about storage hardware in general or
nvme in specific.
I tried different values in loader.conf(5) for some tunables mentioned
in nvme(4) that
seemed plausibly related.
* hw.nvme.apst_enable
* hw.nvme.force_intx
They do not even show up in sysctl(8) after reboot.
```
% doas nvmecontrol devlist
nvme0: SAMSUNG MZALQ256HBJD-00BL2
nvme0ns1 (244198MB)
% doas pciconf -lv
...
nvme0@pci0:2:0:0: class=0x010802 rev=0x00 hdr=0x00 vendor=0x144d
device=0xa809 subvendor=0x144d subdevice=0xa801
vendor = 'Samsung Electronics Co Ltd'
device = 'NVMe SSD Controller 980 (DRAM-less)'
class = mass storage
subclass = NVM
...
% doas nvmecontrol identify nvme0
Controller Capabilities/Features
================================
Vendor ID: 144d
Subsystem Vendor ID: 144d
Serial Number: S65FNE1R713832
Model Number: SAMSUNG MZALQ256HBJD-00BL2
Firmware Version: 7L2QFXM7
Recommended Arb Burst: 2
IEEE OUI Identifier: 00 25 38
Multi-Path I/O Capabilities: Not Supported
Max Data Transfer Size: 2097152 bytes
Sanitize Crypto Erase: Not Supported
Sanitize Block Erase: Supported
Sanitize Overwrite: Not Supported
Sanitize NDI: Supported
Sanitize NODMMAS: No
Controller ID: 0x0005
Version: 1.4.0
Traffic Based Keep Alive: Not Supported
Controller Type: I/O Controller
Keep Alive Timer Not Supported
Maximum Outstanding Commands Not Specified
Admin Command Set Attributes
============================
Security Send/Receive: Supported
Format NVM: Supported
Firmware Activate/Download: Supported
Namespace Management: Not Supported
Device Self-test: Supported
Directives: Not Supported
NVMe-MI Send/Receive: Not Supported
Virtualization Management: Not Supported
Doorbell Buffer Config: Not Supported
Get LBA Status: Not Supported
Sanitize: block,
Abort Command Limit: 8
Async Event Request Limit: 4
Number of Firmware Slots: 3
Firmware Slot 1 Read-Only: No
Per-Namespace SMART Log: Yes
Error Log Page Entries: 64
Number of Power States: 5
Total NVM Capacity: 256060514304 bytes
Unallocated NVM Capacity: 0 bytes
Firmware Update Granularity: 04 (16384 bytes)
Host Buffer Preferred Size: 67108864 bytes
Host Buffer Minimum Size: 16777216 bytes
NVM Command Set Attributes
==========================
Submission Queue Entry Size
Max: 64
Min: 64
Completion Queue Entry Size
Max: 16
Min: 16
Number of Namespaces: 1
Compare Command: Supported
Write Uncorrectable Command: Supported
Dataset Management Command: Supported
Write Zeroes Command: Not Supported
Save Features: Supported
Reservations: Not Supported
Timestamp feature: Supported
Verify feature: Not Supported
Fused Operation Support: Not Supported
Format NVM Attributes: Per-NS Erase, Per-NS Format
Volatile Write Cache: Present, flush all
NVM Subsystem Name: nqn.1994-11.com.samsung:nvme:PM991a:M.2:S65FNE1R713832
% doas nvmecontrol identify nvme0ns1
Size: 500118192 blocks
Capacity: 500118192 blocks
Utilization: 484394000 blocks
Thin Provisioning: Not Supported
Number of LBA Formats: 1
Current LBA Format: LBA Format #00
Metadata Capabilities
Extended: Not Supported
Separate: Not Supported
Data Protection Caps: Not Supported
Data Protection Settings: Not Enabled
Multi-Path I/O Capabilities: Not Supported
Reservation Capabilities: Not Supported
Format Progress Indicator: 0% remains
Deallocate Logical Block: Read Not Reported
Optimal I/O Boundary: 0 blocks
NVM Capacity: 256060514304 bytes
Preferred Write Granularity: 32 blocks
Preferred Write Alignment: 8 blocks
Preferred Deallocate Granul: 10368 blocks
Preferred Deallocate Align: 10368 blocks
Optimal Write Size: 256 blocks
Globally Unique Identifier: 00000000000000000000000000000000
IEEE EUI64: 002538d711133242
LBA Format #00: Data Size: 512 Metadata Size: 0 Performance: Best
% sysctl hw.nvme
hw.nvme.verbose_cmd_dump: 1
hw.nvme.use_nvd: 0
% sysctl dev.nvme
dev.nvme.0.alignment_splits: 0
dev.nvme.0.ioq.3.dump_debug: 0
dev.nvme.0.ioq.3.recovery: 0
dev.nvme.0.ioq.3.num_recovery_nolock: 0
dev.nvme.0.ioq.3.num_ignored: 0
dev.nvme.0.ioq.3.num_failures: 0
dev.nvme.0.ioq.3.num_retries: 0
dev.nvme.0.ioq.3.num_intr_handler_calls: 10915
dev.nvme.0.ioq.3.num_cmds: 11049
dev.nvme.0.ioq.3.cq_head: 41
dev.nvme.0.ioq.3.sq_tail: 41
dev.nvme.0.ioq.3.sq_head: 41
dev.nvme.0.ioq.3.num_trackers: 128
dev.nvme.0.ioq.3.num_entries: 256
dev.nvme.0.ioq.2.dump_debug: 0
dev.nvme.0.ioq.2.recovery: 0
dev.nvme.0.ioq.2.num_recovery_nolock: 0
dev.nvme.0.ioq.2.num_ignored: 0
dev.nvme.0.ioq.2.num_failures: 0
dev.nvme.0.ioq.2.num_retries: 0
dev.nvme.0.ioq.2.num_intr_handler_calls: 5321
dev.nvme.0.ioq.2.num_cmds: 5410
dev.nvme.0.ioq.2.cq_head: 34
dev.nvme.0.ioq.2.sq_tail: 34
dev.nvme.0.ioq.2.sq_head: 34
dev.nvme.0.ioq.2.num_trackers: 128
dev.nvme.0.ioq.2.num_entries: 256
dev.nvme.0.ioq.1.dump_debug: 0
dev.nvme.0.ioq.1.recovery: 0
dev.nvme.0.ioq.1.num_recovery_nolock: 0
dev.nvme.0.ioq.1.num_ignored: 0
dev.nvme.0.ioq.1.num_failures: 0
dev.nvme.0.ioq.1.num_retries: 0
dev.nvme.0.ioq.1.num_intr_handler_calls: 10896
dev.nvme.0.ioq.1.num_cmds: 11014
dev.nvme.0.ioq.1.cq_head: 6
dev.nvme.0.ioq.1.sq_tail: 6
dev.nvme.0.ioq.1.sq_head: 6
dev.nvme.0.ioq.1.num_trackers: 128
dev.nvme.0.ioq.1.num_entries: 256
dev.nvme.0.ioq.0.dump_debug: 0
dev.nvme.0.ioq.0.recovery: 0
dev.nvme.0.ioq.0.num_recovery_nolock: 0
dev.nvme.0.ioq.0.num_ignored: 0
dev.nvme.0.ioq.0.num_failures: 0
dev.nvme.0.ioq.0.num_retries: 0
dev.nvme.0.ioq.0.num_intr_handler_calls: 10407
dev.nvme.0.ioq.0.num_cmds: 10503
dev.nvme.0.ioq.0.cq_head: 7
dev.nvme.0.ioq.0.sq_tail: 7
dev.nvme.0.ioq.0.sq_head: 7
dev.nvme.0.ioq.0.num_trackers: 128
dev.nvme.0.ioq.0.num_entries: 256
dev.nvme.0.adminq.dump_debug: 0
dev.nvme.0.adminq.recovery: 0
dev.nvme.0.adminq.num_recovery_nolock: 0
dev.nvme.0.adminq.num_ignored: 0
dev.nvme.0.adminq.num_failures: 0
dev.nvme.0.adminq.num_retries: 0
dev.nvme.0.adminq.num_intr_handler_calls: 225
dev.nvme.0.adminq.num_cmds: 229
dev.nvme.0.adminq.cq_head: 97
dev.nvme.0.adminq.sq_tail: 101
dev.nvme.0.adminq.sq_head: 101
dev.nvme.0.adminq.num_trackers: 16
dev.nvme.0.adminq.num_entries: 128
dev.nvme.0.fail_on_reset: 0
dev.nvme.0.cap_hi: 48
dev.nvme.0.cap_lo: 1006845951
dev.nvme.0.reset_stats: 0
dev.nvme.0.num_recovery_nolock: 0
dev.nvme.0.num_ignored: 0
dev.nvme.0.num_failures: 0
dev.nvme.0.num_retries: 0
dev.nvme.0.num_intr_handler_calls: 37764
dev.nvme.0.num_cmds: 38205
dev.nvme.0.timeout_period: 30
dev.nvme.0.admin_timeout_period: 60
dev.nvme.0.int_coal_threshold: 0
dev.nvme.0.int_coal_time: 0
dev.nvme.0.num_io_queues: 4
dev.nvme.0.wake: 0
dev.nvme.0.%iommu: rid=0x200
dev.nvme.0.%parent: pci1
dev.nvme.0.%pnpinfo: vendor=0x144d device=0xa809 subvendor=0x144d
subdevice=0xa801 class=0x010802
dev.nvme.0.%location: slot=0 function=0 dbsf=pci0:2:0:0
handle=\_SB_.PC00.PEG0.PEGP
dev.nvme.0.%driver: nvme
dev.nvme.0.%desc: Generic NVMe Device
dev.nvme.%parent:
```
If there is more information I need to provide, let me know.
I usually just wait for such things to work themselves out, and they
usually do over time, but given the call for testers I thought this
feedback might be useful... and it would be nice to have my power
sipping setup back.
Regards,
Ross
I upgraded pkgbase yesterday, from 1600025 to 1600026.
* FreeBSD-src-16.snap20260920013406
* FreeBSD-utilities-16.snap20260919182608
intr utilization is down to 3-5% from 50-60%.
Thanks.
Regards,
Ross
I forgot my tests. I am happy to run more.
doas nvmecontrol perftest -n 16 -o read -s 4096 -t 30 nvme0ns1
Threads: 16 Size: 4096 READ Time: 30 IO/s: 34572 MB/s: 135
doas nvmecontrol perftest -n 16 -o read -s 131072 -t 30 nvme0ns1
Threads: 16 Size: 131072 READ Time: 30 IO/s: 5019 MB/s: 627
doas nvmecontrol perftest -n 32 -o read -s 4096 -t 30 nvme0ns1
Threads: 32 Size: 4096 READ Time: 30 IO/s: 33295 MB/s: 130
doas nvmecontrol perftest -n 32 -o read -s 131072 -t 30 nvme0ns1
Threads: 32 Size: 131072 READ Time: 30 IO/s: 5538 MB/s: 692
doas nvmecontrol perftest -n 64 -o read -s 4096 -t 30 nvme0ns1
Threads: 64 Size: 4096 READ Time: 30 IO/s: 33066 MB/s: 129
doas nvmecontrol perftest -n 64 -o read -s 131072 -t 30 nvme0ns1
Threads: 64 Size: 131072 READ Time: 30 IO/s: 5833 MB/s: 729