* [Bug 221130] New: [BUG] PCI: vmd: Missing Mode 3 (Dynamic Bus Offset) support for Intel Arrow Lake-S (0x09ab)
@ 2026-02-25 23:34 Bjorn Helgaas
0 siblings, 0 replies; only message in thread
From: Bjorn Helgaas @ 2026-02-25 23:34 UTC (permalink / raw)
To: Nirmal Patel, Jonathan Derrick; +Cc: linux-pci
Forwarding to VMD maintainers since they may not follow bugzilla. I
guess this problem only happens when VMD/RST enabled in BIOS.
From https://bugzilla.kernel.org/show_bug.cgi?id=221130 (reporter
bcc'd):
> [PROBLEM]
> On Intel Arrow Lake-S (Core Ultra 200S) platforms, the VMD controller
> (8086:09ab) fails to initialize on Linux 6.19.3. All storage devices
> (NVMe/SATA) under the VMD domain are invisible.
>
> [DMESG LOG]
> vmd 0000:00:0e.0: Unknown Bus Offset Setting (3)
> vmd 0000:00:0e.0: probe with driver vmd failed with error -19
>
> [ROOT CAUSE]
> Based on Intel documentation, Arrow Lake-S introduces "Mode 3"
> (BUS_RESTRICT_CFG == 3) for dynamic bus range allocation.
> Currently, drivers/pci/controller/vmd.c only handles Case 0, 1, and 2 (static
> offsets).
> The switch statement in vmd_get_bus_number_start() lacks Case 3, causing the
> driver to return -ENODEV and abort the probe.
>
> [REPRODUCTION]
>
> Enable VMD/RST mode in BIOS.
>
> Boot Linux kernel 6.19 or later.
>
> Check dmesg for "Unknown Bus Offset Setting (3)".
>
> [PROPOSED FIXES]
>
> Add Case 3 to vmd_get_bus_number_start() to read busn_start from config
> registers (e.g., offset 0xC8).
>
> Implement Quirk to override Class ID 0880 to 0106 for SATA controllers behind
> VMD.
>
> Ensure compatibility with dual-VMD domain resource allocation.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-02-25 23:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25 23:34 [Bug 221130] New: [BUG] PCI: vmd: Missing Mode 3 (Dynamic Bus Offset) support for Intel Arrow Lake-S (0x09ab) Bjorn Helgaas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox