Re: [GIT PULL v2] PCI changes for v6.17

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ammar Faizi <ammarfaizi2@xxxxxxxxxxx> writes:
> Here's the result after reverting those two commits and applied the diff.
>
>   https://gist.github.com/ammarfaizi2/03c7a9c0fec2a11f206931f1b7790709#file-dmesg_pci_debug_002-txt
>
> Let's see if this one is enough for you to diagnose the problem.

Thanks, I think the problem is clear now. 

The diff I sent you has a mistake, it should be
    if (pci_msix_vec_count(pci_dev) < 0)
not
    if (!pci_msix_vec_count(pci_dev))

So the log is wrong, it printed "MSI-X, looking good...". It should have
printed the other one.

But no need to re-run it, the backtrace is enough.

    MSI-X, looking good... <-------- wrong log
    CPU: 3 UID: 0 PID: 183 Comm: systemd-udevd Not tainted 6.16.0-afh2-dbg-2025-08-09-gb622ab28bcac #13 PREEMPT(full)  28137b57996795286f6544f071ec852674a057d4
    Hardware name: HP HP Laptop 14s-dq2xxx/87FD, BIOS F.21 03/21/2022
    Call Trace:
     <TASK>
    dump_stack_lvl
    vmd_msi_init
    msi_domain_alloc
    irq_domain_alloc_irqs_locked
    __irq_domain_alloc_irqs
    __msi_domain_alloc_irqs
    msi_domain_alloc_irqs_all_locked
    __msi_capability_init
    __pci_enable_msi_range
    pci_alloc_irq_vectors_affinity
    pcie_portdrv_probe

So unlike what VMD doc says, it actually can have non-MSI-X children devices!

Please discard the reverts and the diff I sent you, and try the diff
below. I believe your machine will work now.

diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c
index b679c7f28f51..1bd5bf4a6097 100644
--- a/drivers/pci/controller/vmd.c
+++ b/drivers/pci/controller/vmd.c
@@ -306,9 +306,6 @@ static bool vmd_init_dev_msi_info(struct device *dev, struct irq_domain *domain,
 				  struct irq_domain *real_parent,
 				  struct msi_domain_info *info)
 {
-	if (WARN_ON_ONCE(info->bus_token != DOMAIN_BUS_PCI_DEVICE_MSIX))
-		return false;
-
 	if (!msi_lib_init_dev_msi_info(dev, domain, real_parent, info))
 		return false;
 




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux