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

[xen staging] PCI: don't look for ext-caps when there's no extended cfg space



commit b1543cf5751b30fea77ecac2fe70b095c09f754d
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Feb 2 09:07:46 2026 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Feb 2 10:20:54 2026 +0100

    PCI: don't look for ext-caps when there's no extended cfg space
    
    Avoid interpreting as extended capabilities what may be about anything. In
    doing so, vPCI then also won't mis-interpret data from beyond base config
    space anymore.
    
    Fixes: 3b35911d709e ("Enable pci mmcfg and ATS for x86_64")
    Fixes: a845b50c12f3 ("vpci/header: Emulate extended capability list for 
dom0")
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
    Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 xen/drivers/pci/pci.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/drivers/pci/pci.c b/xen/drivers/pci/pci.c
index 572cb9b21c..084be3880c 100644
--- a/xen/drivers/pci/pci.c
+++ b/xen/drivers/pci/pci.c
@@ -113,6 +113,12 @@ unsigned int pci_find_next_ext_capability(const struct 
pci_dev *pdev,
     int ttl = 480; /* 3840 bytes, minimum 8 bytes per capability */
     unsigned int pos = max(start, PCI_CFG_SPACE_SIZE + 0U);
 
+    if ( !pdev->ext_cfg )
+    {
+        ASSERT(!start);
+        return 0;
+    }
+
     header = pci_conf_read32(pdev->sbdf, pos);
 
     /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

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