[SRU][R][PATCH 0/2] PCI: vmd: support Arrow Lake second rootbus and ARL004 workaround

Vladimir Nedoshivin gvozd188 at mail.ru
Tue Sep 8 22:00:45 UTC 2026


BugLink: https://bugs.launchpad.net/bugs/2166325

SRU Justification:

[Impact]

On an affected Intel Arrow Lake system with VMD device 8086:ad0b,
the stock VMD driver reports:

  vmd 0000:00:0e.0: Unknown Bus Offset Setting (3)

and the internal NVMe SSD is not enumerated.

Adding Intel VMD second-rootbus support makes the NVMe device visible,
but exposes a second problem: NVMe completions repeatedly stall for
approximately 30 seconds and the kernel reports "timeout, completion
polled".

[Fix]

Patch 1 adds Intel VMD second-rootbus support required for the Arrow Lake
Bus Offset 3 topology.

Patch 2 adds a narrowly scoped ARL004 workaround for NVMe devices behind
Intel VMD 8086:ad0b. Before dispatching the interrupt, it performs a PCI
configuration-space read from the MSI initiator to flush preceding posted
writes.

[Test Plan]

The patchset was tested on an MSI Vector 17 HX AI with Intel Arrow Lake,
VMD 8086:ad0b and a Phison PS5029-E29T NVMe controller.

With the stock VMD driver the internal NVMe SSD is not exposed.

With second-rootbus support alone the SSD is exposed, but a 1 GiB
sequential diagnostic read takes approximately 121 seconds and repeated
NVMe completion timeout messages are observed.

With both patches applied the same diagnostic read completes in
approximately 0.88 seconds, a subsequent 10 GiB read completes normally,
and no matching "timeout" or "completion polled" messages are observed.

The same patched VMD source has also been built successfully against
Ubuntu 7.0.0-31-generic and is currently in use on that system.

[Where problems could occur]

The second-rootbus change modifies VMD resource and bus handling on Intel
client platforms, so regressions could affect PCI device enumeration or
resource assignment behind VMD.

The ARL004 workaround changes interrupt handling only for NVMe endpoints
behind VMD device 8086:ad0b. A regression in this path could affect NVMe
interrupt latency or I/O operation on affected Arrow Lake systems.

[Other Info]

The ARL004 implementation is intentionally limited to VMD 8086:ad0b and
NVMe endpoints. It is submitted as a platform-specific SAUCE workaround
rather than being combined with workarounds for other VMD device IDs or
other Intel platform errata.


Szymon Durawa (1):
  UBUNTU: SAUCE: PCI: vmd: Add second rootbus support

Vladimir Nedoshivin (1):
  UBUNTU: SAUCE: PCI: vmd: Work around ARL004 on 8086:ad0b

 drivers/pci/controller/vmd.c | 503 +++++++++++++++++++++++++++--------
 1 file changed, 389 insertions(+), 114 deletions(-)

-- 
2.53.0




More information about the kernel-team mailing list