]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
fix(kernel-modules): include xhci-pci-prom21 for early USB
authorJihong Min <hurryman2212@gmail.com>
Tue, 7 Jul 2026 22:07:05 +0000 (07:07 +0900)
committerdevkontrol <dev@kontrol.dev>
Thu, 23 Jul 2026 10:31:29 +0000 (06:31 -0400)
Since Linux 7.2-rc1, AMD PROM21 xHCI controllers may be handled by the
separate xhci-pci-prom21 PCI glue driver.

When CONFIG_USB_XHCI_PCI_PROM21=m, plain xhci-pci intentionally returns
-ENODEV for the PROM21 PCI IDs so that xhci-pci-prom21 can bind them.
However, xhci-pci-prom21 is not a dependency of xhci-pci, so an
initramfs can include xhci-pci.ko while missing xhci-pci-prom21.ko.

On systems where USB keyboard or storage is attached through a PROM21
controller, this can make USB unavailable during initrd, for example at
Plymouth/LUKS unlock.

This is the same class of issue as xhci-pci-renesas, which dracut
already includes explicitly.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=221721
Signed-off-by: Jihong Min <hurryman2212@gmail.com>
modules.d/70kernel-modules/module-setup.sh

index dfd472ab3b0b1bb38e8c4c7fb1b675c430b6c907..716a5b5ea3f67b661c8f2baa51fb3024707618bb 100755 (executable)
@@ -39,15 +39,15 @@ installkernel() {
         hostonly='' instmods \
             hid_generic unix
 
-        # xhci-pci-renesas is needed for the USB to be available during
-        # initrd on platforms with such USB controllers since Linux
-        # 6.12-rc1 (commit 25f51b76f90f).
+        # Some xHCI PCI controllers are handled by sibling glue drivers
+        # instead of plain xhci-pci. Include them so USB is available
+        # during initrd when those drivers are built as modules.
         hostonly=$(optional_hostonly) instmods \
             ehci-hcd ehci-pci ehci-platform \
             ohci-hcd ohci-pci \
             uhci-hcd \
             usbhid \
-            xhci-hcd xhci-pci xhci-pci-renesas xhci-plat-hcd \
+            xhci-hcd xhci-pci xhci-pci-prom21 xhci-pci-renesas xhci-plat-hcd \
             "=drivers/hid" \
             "=drivers/tty/serial" \
             "=drivers/input/serio" \