]> xenbits.xensource.com Git - xen.git/commitdiff
x86/dom0: correctly set the maximum ->iomem_caps bound for PVH
authorRoger Pau Monné <roger.pau@citrix.com>
Thu, 20 Mar 2025 12:30:30 +0000 (13:30 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 20 Mar 2025 12:30:30 +0000 (13:30 +0100)
The logic in dom0_setup_permissions() sets the maximum bound in
->iomem_caps unconditionally using paddr_bits, which is not correct for HVM
based domains.  Instead use domain_max_paddr_bits() to get the correct
maximum paddr bits for each possible domain type.

Switch to using PFN_DOWN() instead of PAGE_SHIFT, as that's shorter.

Fixes: 53de839fb409 ('x86: constrain MFN range Dom0 may access')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
master commit: a00e08799cc7657d2a1aca158f4ad43d4c9103e7
master date: 2025-03-05 10:26:46 +0100

xen/arch/x86/dom0_build.c

index 09fb8b063ae75d552216758d1c1b7d655bfb570d..7a3e07c37bbb95aaa52a7493bcca054ec9478c5f 100644 (file)
@@ -475,7 +475,8 @@ int __init dom0_setup_permissions(struct domain *d)
 
     /* The hardware domain is initially permitted full I/O capabilities. */
     rc = ioports_permit_access(d, 0, 0xFFFF);
-    rc |= iomem_permit_access(d, 0UL, (1UL << (paddr_bits - PAGE_SHIFT)) - 1);
+    rc |= iomem_permit_access(d, 0UL,
+                              PFN_DOWN(1UL << paging_max_paddr_bits(d)) - 1);
     rc |= irqs_permit_access(d, 1, nr_irqs_gsi - 1);
 
     /* Modify I/O port access permissions. */