]> 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 11:49:12 +0000 (12:49 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 20 Mar 2025 11:49:12 +0000 (12:49 +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 3b9681dc913415a5d3b73801a85cef8eaf39d822..aec596997d5daa7f1336d464723ac3d51b88d16b 100644 (file)
@@ -481,7 +481,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 << domain_max_paddr_bits(d)) - 1);
     rc |= irqs_permit_access(d, 1, nr_irqs_gsi - 1);
 
     /* Modify I/O port access permissions. */