aboutsummaryrefslogtreecommitdiff
path: root/emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch')
-rw-r--r--emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch b/emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch
new file mode 100644
index 000000000000..9ff23290678d
--- /dev/null
+++ b/emulators/xen-kernel/files/0002-x86-pvh-trap-access-to-sensitive-IO-ports.patch
@@ -0,0 +1,52 @@
+From 72d5acdc1d5b83107066e25054f9119e7771cf70 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
+Date: Wed, 20 May 2015 13:27:23 +0200
+Subject: [PATCH 2/2] x86/pvh: trap access to sensitive IO ports
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is needed so Xen can properly trap 4 byte accesses to 0xcf8 in order to
+keep consistency with accesses to 0xcfc.
+
+The access to RTC ports also needs to be trapped in order to keep
+consistency, this includes RTC_PORT(0) and RTC_PORT(1) (0x70 and 0x71
+respectively).
+
+Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
+---
+ xen/arch/x86/setup.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
+index cd333f9..2cc9185 100644
+--- a/xen/arch/x86/setup.c
++++ b/xen/arch/x86/setup.c
+@@ -49,6 +49,7 @@
+ #include <xen/cpu.h>
+ #include <asm/nmi.h>
+ #include <asm/alternative.h>
++#include <asm/mc146818rtc.h>
+
+ /* opt_nosmp: If true, secondary processors are ignored. */
+ static bool_t __initdata opt_nosmp;
+@@ -1534,6 +1535,16 @@ void __hwdom_init setup_io_bitmap(struct domain *d)
+ rc = rangeset_report_ranges(d->arch.ioport_caps, 0, 0x10000,
+ io_bitmap_cb, d);
+ BUG_ON(rc);
++ /*
++ * NB: we need to trap accesses to 0xcf8 in order to intercept
++ * 4 byte accesses, that need to be handled by Xen in order to
++ * keep consistency.
++ * Access to 1 byte RTC ports also needs to be trapped in order
++ * to keep consistency with PV.
++ */
++ __set_bit(0xcf8, d->arch.hvm_domain.io_bitmap);
++ __set_bit(RTC_PORT(0), d->arch.hvm_domain.io_bitmap);
++ __set_bit(RTC_PORT(1), d->arch.hvm_domain.io_bitmap);
+ }
+ }
+
+--
+2.5.4 (Apple Git-61)
+