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

[xen staging-4.21] vPCI: avoid bogus "overlap in extended cap list" warnings



commit 11f94271000cc1d92741184e0a38e5f2750e0dfc
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Jan 13 15:40:44 2026 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Jan 13 15:40:44 2026 +0100

    vPCI: avoid bogus "overlap in extended cap list" warnings
    
    Legacy PCI devices don't have any extended config space. Reading any part
    thereof may very well return all ones. That then necessarily means we
    would think we found a "loop", when there simply is nothing.
    
    Fixes: a845b50c12f3 ("vpci/header: Emulate extended capability list for 
dom0")
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    master commit: ed4e690ae11a60792f722729abb9ec68e64ffea3
    master date: 2025-12-29 09:34:41 +0100
---
 xen/drivers/vpci/header.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 469f497744..aae663bbf5 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -839,6 +839,15 @@ static int vpci_init_ext_capability_list(const struct 
pci_dev *pdev)
         uint32_t header = pci_conf_read32(pdev->sbdf, pos);
         int rc;
 
+        if ( header == 0xffffffffU )
+        {
+            if ( pos != PCI_CFG_SPACE_SIZE )
+                printk(XENLOG_WARNING
+                       "%pd %pp: broken extended cap list, offset %#x\n",
+                       pdev->domain, &pdev->sbdf, pos);
+            return 0;
+        }
+
         rc = vpci_add_register(pdev->vpci, vpci_read_val, NULL,
                                pos, 4, (void *)(uintptr_t)header);
         if ( rc == -EEXIST )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.21



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.