Messages in this thread Patch in this message | | | From | Boris Ostrovsky <> | Subject | [PATCH] x86/EISA: Don't probe EISA bus for Xen PV guests | Date | Tue, 11 Sep 2018 15:55:38 -0400 |
| |
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@strugglers.net> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.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 f260e452e4f8..fcf3de1712c8 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.17.1
| |