[SRU][Bionic][PATCH 1/1] x86/EISA: Don't probe EISA bus for Xen PV guests
Joseph Salisbury
joseph.salisbury at canonical.com
Thu Sep 20 10:20:24 UTC 2018
From: Boris Ostrovsky <boris.ostrovsky at oracle.com>
BugLink: https://bugs.launchpad.net/bugs/1789118
For unprivileged Xen PV guests this is normal memory and ioremap will
not be able to properly map it.
While at it, since ioremap may return NULL, add a test for pointer's
validity.
Reported-by: Andy Smith <andy at strugglers.net>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky at oracle.com>
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
Cc: hpa at zytor.com
Cc: xen-devel at lists.xenproject.org
Cc: jgross at suse.com
Cc: stable at vger.kernel.org
Link: https://lkml.kernel.org/r/20180911195538.23289-1-boris.ostrovsky@oracle.com
(cherry picked from commit 6a92b11169a65b3f8cc512c75a252cbd0d096ba0)
Signed-off-by: Joseph Salisbury <joseph.salisbury at canonical.com>
---
arch/x86/kernel/eisa.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/eisa.c b/arch/x86/kernel/eisa.c
index f260e45..e8c8c5d 100644
--- a/arch/x86/kernel/eisa.c
+++ b/arch/x86/kernel/eisa.c
@@ -7,11 +7,17 @@
#include <linux/eisa.h>
#include <linux/io.h>
+#include <xen/xen.h>
+
static __init int eisa_bus_probe(void)
{
- void __iomem *p = ioremap(0x0FFFD9, 4);
+ void __iomem *p;
+
+ if (xen_pv_domain() && !xen_initial_domain())
+ return 0;
- if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
+ p = ioremap(0x0FFFD9, 4);
+ if (p && readl(p) == 'E' + ('I' << 8) + ('S' << 16) + ('A' << 24))
EISA_bus = 1;
iounmap(p);
return 0;
--
2.7.4
More information about the kernel-team
mailing list