]> xenbits.xensource.com Git - people/tklengyel/xen.git/commitdiff
x86/PVH: deny Dom0 access to the ISA DMA controller
authorJan Beulich <jbeulich@suse.com>
Thu, 2 Nov 2023 09:44:46 +0000 (10:44 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 2 Nov 2023 09:44:46 +0000 (10:44 +0100)
Unlike PV, a PVH Dom0 has no sensible way of driving the address and
page registers correctly, as it would need to translate guest physical
addresses to host ones. Rather than allowing data corruption to occur
from e.g. the use of a legacy floppy drive, disallow access altogether.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
xen/arch/x86/dom0_build.c

index c31afc734fdc30650ceb90f387e58c4281b57857..640e666685bbad68297d0aae46d71891872b54ed 100644 (file)
@@ -505,6 +505,13 @@ int __init dom0_setup_permissions(struct domain *d)
 #ifdef CONFIG_HVM
     if ( is_hvm_domain(d) )
     {
+        /* ISA DMA controller, channels 0-3 (incl possible aliases). */
+        rc |= ioports_deny_access(d, 0x00, 0x1F);
+        /* ISA DMA controller, page registers (incl various reserved ones). */
+        rc |= ioports_deny_access(d, 0x80 + !!hvm_port80_allowed, 0x8F);
+        /* ISA DMA controller, channels 4-7 (incl usual aliases). */
+        rc |= ioports_deny_access(d, 0xC0, 0xDF);
+
         /* HVM debug console IO port. */
         rc |= ioports_deny_access(d, XEN_HVM_DEBUGCONS_IOPORT,
                                   XEN_HVM_DEBUGCONS_IOPORT);