On 08/29/2018 08:51 PM, Andy Smith wrote:
> Hi,
>
> I'm sorry this is a long email, but I wanted to explain everything
> that I have tried, because it seems like quite a few different
> versions of 32-bit upstream Linux kernel no longer boot as PV guest
> and I'm surprised I am the first to encounter this. Probably I
> have done something wrong.
>
> I cannot get any of the Ubuntu packaged 32-bit mainline kernels
> after v4.13.16 that are found at
> http://kernel.ubuntu.com/~kernel-ppa/mainline/ to boot in 32-bit PV
> mode. All of them from v4.14.0rc1 onwards crash on xl create either
> saying "error: no XEN note found." 

Don't know what this error is, perhaps kernel was not compiled with
CONFIG_XEN.


> or else immediately producing a
> kernel panic like:
>
> .
> .
> .
> [ 0.114370] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, 
> max_idle_ns: 7645041785100000 ns
> [ 0.114382] futex hash table entries: 256 (order: 2, 16384 bytes)
> [ 0.114423] pinctrl core: initialized pinctrl subsystem
> [ 0.134326] RTC time: 165:165:165, date: 165/165/65
> [ 0.134442] NET: Registered protocol family 16
> [ 0.134457] xen:grant_table: Grant tables using version 1 layout
> [ 0.134502] Grant table initialized
> [ 0.134544] audit: initializing netlink subsys (disabled)
> [ 0.134611] audit: type=2000 audit(1535307799.132:1): state=initialized 
> audit_enabled=0 res=1
> [ 0.134678] EISA bus registered
> [ 0.136019] PCI: setting up Xen PCI frontend stub
> [ 0.136073] BUG: unable to handle kernel paging request at edc21fd9
> [ 0.136084] IP: eisa_bus_probe+0x19/0x36
> [ 0.136089] *pdpt = 0000000001ee6027 *pde = 0000000029cc6067 *pte = 
> 0000000000000000
> [ 0.136100] Oops: 0000 [#1] SMP
> [ 0.136105] Modules linked in:
> [ 0.136111] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0-33-generic 
> #36-Ubuntu
> [ 0.136120] EIP: eisa_bus_probe+0x19/0x36
> [ 0.136125] EFLAGS: 00010246 CPU: 0
> [ 0.136130] EAX: edc21fd9 EBX: 00000000 ECX: 01e0d000 EDX: 00000200
> [ 0.136138] ESI: c1d0d452 EDI: c1dd34a4 EBP: e9c89f24 ESP: e9c89f24
> [ 0.136145] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: e021
> [ 0.136154] CR0: 80050033 CR2: edc21fd9 CR3: 01e10000 CR4: 00042660
> [ 0.136166] Call Trace:
> [ 0.136173] do_one_initcall+0x49/0x174
> [ 0.136179] ? parse_args+0x143/0x390
> [ 0.136187] ? set_debug_rodata+0x14/0x14
> [ 0.136193] kernel_init_freeable+0x149/0x1c5
> [ 0.136201] ? rest_init+0xa0/0xa0
> [ 0.136207] kernel_init+0xd/0xf0
> [ 0.136213] ret_from_fork+0x2e/0x38
> [ 0.140000] Code: ff b8 df 43 ae c1 e8 35 1b 88 ff e8 20 12 88 ff c9 c3 3e 8d 
> 74 26 00 55 b9 04 00 00 00 31 d2 b8 d9 ff 0f 00 89 e5 e8 35 8d 35 ff <8b> 10 
> 81 fa 45 49 53 41 75 0a c7 05 a0 76 ed c1 01 00 00 00 e8
> [ 0.140000] EIP: eisa_bus_probe+0x19/0x36 SS:ESP: e021:e9c89f24
> [ 0.140000] CR2: 00000000edc21fd9
> [ 0.140000] ---[ end trace 8c00b3cb7d4f06ba ]---
> [ 0.140013] Kernel panic - not syncing: Attempted to kill init! 
> exitcode=0x00000009
>
> (that one was from the currently-packaged linux-image-generic in
> Ubuntu 18.04 LTS).


Yes, this looks like it was broken by f7eaf6e00fd5 ("x86/boot: Move EISA
setup to a separate file").

We used to use fixmap for EISA addresses, but not anymore. If you can
build your own kernel you could try the patch below (may be
whitespace-damaged)

-boris

diff --git a/arch/x86/kernel/eisa.c b/arch/x86/kernel/eisa.c
index f260e452e4f8..133e16c2fbc6 100644
--- a/arch/x86/kernel/eisa.c
+++ b/arch/x86/kernel/eisa.c
@@ -9,7 +9,12 @@
 
 static __init int eisa_bus_probe(void)
 {
-       void __iomem *p = ioremap(0x0FFFD9, 4);
+       void __iomem *p;
+
+       if (EISA_bus == -1)
+               return 0;
+
+       p = ioremap(0x0FFFD9, 4);
 
        if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
                EISA_bus = 1;
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 1163e33121fb..b78ef1a67943 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -12,6 +12,10 @@
 #include <linux/memblock.h>
 #include <linux/cpuidle.h>
 #include <linux/cpufreq.h>
+#ifdef CONFIG_EISA
+#include <linux/eisa.h>
+#endif
+
 
 #include <asm/elf.h>
 #include <asm/vdso.h>
@@ -854,6 +858,10 @@ char * __init xen_memory_setup(void)
 
        e820__update_table(e820_table);
 
+#ifdef CONFIG_EISA
+       EISA_bus = -1;
+#endif
+


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to