• K
    xen: set IO permission early (before early_cpu_init()) · ec35a69c
    Konrad Rzeszutek Wilk 提交于
    This patch is based off "xen dom0: Set up basic IO permissions for dom0."
    by Juan Quintela <quintela@redhat.com>.
    
    On AMD machines when we boot the kernel as Domain 0 we get this nasty:
    
    mapping kernel into physical memory
    Xen: setup ISA identity maps
    about to get started...
    (XEN) traps.c:475:d0 Unhandled general protection fault fault/trap [#13] on VCPU 0 [ec=0000]
    (XEN) domain_crash_sync called from entry.S
    (XEN) Domain 0 (vcpu#0) crashed on cpu#0:
    (XEN) ----[ Xen-4.1-101116  x86_64  debug=y  Not tainted ]----
    (XEN) CPU:    0
    (XEN) RIP:    e033:[<ffffffff8130271b>]
    (XEN) RFLAGS: 0000000000000282   EM: 1   CONTEXT: pv guest
    (XEN) rax: 000000008000c068   rbx: ffffffff8186c680   rcx: 0000000000000068
    (XEN) rdx: 0000000000000cf8   rsi: 000000000000c000   rdi: 0000000000000000
    (XEN) rbp: ffffffff81801e98   rsp: ffffffff81801e50   r8:  ffffffff81801eac
    (XEN) r9:  ffffffff81801ea8   r10: ffffffff81801eb4   r11: 00000000ffffffff
    (XEN) r12: ffffffff8186c694   r13: ffffffff81801f90   r14: ffffffffffffffff
    (XEN) r15: 0000000000000000   cr0: 000000008005003b   cr4: 00000000000006f0
    (XEN) cr3: 0000000221803000   cr2: 0000000000000000
    (XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: e02b   cs: e033
    (XEN) Guest stack trace from rsp=ffffffff81801e50:
    
    RIP points to read_pci_config() function.
    
    The issue is that we don't set IO permissions for the Linux kernel early enough.
    
    The call sequence used to be:
    
        xen_start_kernel()
    	x86_init.oem.arch_setup = xen_setup_arch;
            setup_arch:
               - early_cpu_init
                   - early_init_amd
                      - read_pci_config
               - x86_init.oem.arch_setup [ xen_arch_setup ]
                   - set IO permissions.
    
    We need to set the IO permissions earlier on, which this patch does.
    Acked-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ec35a69c
setup.c 9.4 KB