|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] vPCI: avoid bogus "overlap in extended cap list" warnings
commit ed4e690ae11a60792f722729abb9ec68e64ffea3
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Dec 29 09:34:41 2025 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Dec 29 09:34:41 2025 +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>
---
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#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |