]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
x86/dom0: correctly set the maximum ->iomem_caps bound for PVH
authorRoger Pau Monne <roger.pau@citrix.com>
Tue, 18 Feb 2025 16:57:49 +0000 (17:57 +0100)
committerRoger Pau Monne <roger.pau@citrix.com>
Wed, 5 Mar 2025 09:26:46 +0000 (10:26 +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>
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. */