xen/arm: account IO handler for emulated PCI host bridge
authorOleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Thu, 9 Dec 2021 07:29:17 +0000 (09:29 +0200)
committerJulien Grall <jgrall@amazon.com>
Wed, 15 Dec 2021 17:39:56 +0000 (17:39 +0000)
At the moment, we always allocate an extra 16 slots for IO handlers
(see MAX_IO_HANDLER). So while adding an IO trap handler for the emulated
PCI host bridge we are not breaking anything, but we have a latent bug
as the maximum number of IOs may be exceeded.
Fix this by explicitly telling that we have an additional IO handler, so it is
accounted.

Fixes: d59168dc05a5 ("xen/arm: Enable the existing x86 virtual PCI support for ARM")
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Rahul Singh <rahul.singh@arm.com>
Tested-by: Rahul Singh <rahul.singh@arm.com>
xen/arch/arm/vpci.c

index ebc4c8398bff3c84bc7a1b3d1405b26aa90c25c6..a9fc5817f94e85b462729b203a7e098d1a17f0e9 100644 (file)
@@ -130,7 +130,11 @@ unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
         return ret;
     }
 
-    return 0;
+    /*
+     * For guests each host bridge requires one region to cover the
+     * configuration space. At the moment, we only expose a single host bridge.
+     */
+    return 1;
 }
 
 /*