When traversing the list of pci devices assigned to a domain cope with
some of them not having the vpci struct allocated. It should be
possible for the hardware domain to have read-only devices assigned
that are not handled by vPCI, such support will be added by further
patches.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
- Do not mention domU plans.
---
xen/drivers/vpci/header.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index ec2e978a4e6b..766fd98b2196 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -289,6 +289,14 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
*/
for_each_pdev ( pdev->domain, tmp )
{
+ if ( !tmp->vpci )
+ /*
+ * For the hardware domain it's possible to have devices assigned
+ * to it that are not handled by vPCI, either because those are
+ * read-only devices, or because vPCI setup has failed.
+ */
+ continue;
+
if ( tmp == pdev )
{
/*
--
2.40.0