|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen stable-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#stable-4.21
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |