• Jeremy Fitzhardinge's avatar
    x86/paravirt: groundwork for 64-bit Xen support, fix · 457da70e
    Jeremy Fitzhardinge authored
    Ingo Molnar wrote:
    > * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
    >
    >
    >>> It quickly broke the build in testing:
    
    > >>>  include/asm/pgalloc.h: In function ‘paravirt_pgd_free':
    > >>>  include/asm/pgalloc.h:14: error: parameter name omitted
    > >>>  arch/x86/kernel/entry_64.S: In file included from
    > >>> arch/x86/kernel/traps_64.c:51:include/asm/pgalloc.h: In function
    > >>> ‘paravirt_pgd_free':
    > >>>  include/asm/pgalloc.h:14: error: parameter name omitted
    
    >>>
    >> No, looks like my fault.  The non-PARAVIRT version of
    >> paravirt_pgd_free() is:
    >>
    >> static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *) {}
    >>
    >> but C doesn't like missing parameter names, even if unused.
    >>
    >> This should fix it:
    >>
    >
    > that fixed the build but now we've got a boot crash with this config:
    >
    >  time.c: Detected 2010.304 MHz processor.
    >  spurious 8259A interrupt: IRQ7.
    >  BUG: unable to handle kernel NULL pointer dereference at  0000000000000000
    >  IP: [<0000000000000000>]
    >  PGD 0
    >  Thread overran stack, or stack corrupted
    >  Oops: 0010 [1] SMP
    >  CPU 0
    >
    > with:
    >
    >   http://redhat.com/~mingo/misc/config-Thu_Jun_26_12_46_46_CEST_2008.bad
    >
    
    Use SWAPGS_UNSAFE_STACK in ia32entry.S in the places where the active
    stack is the usermode stack.
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Cc: xen-devel <xen-devel@lists.xensource.com>
    Cc: Stephen Tweedie <sct@redhat.com>
    Cc: Eduardo Habkost <ehabkost@redhat.com>
    Cc: Mark McLoughlin <markmc@redhat.com>
    Cc: Vegard Nossum <vegard.nossum@gmail.com>
    Cc: Nick Piggin <npiggin@suse.de>
    Cc: Yinghai Lu <yhlu.kernel@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    457da70e
ia32entry.S 19 KB