• Suresh Siddha's avatar
    x86, cpa: make the kernel physical mapping initialization a two pass sequence, fix · b27a43c1
    Suresh Siddha authored
    Jeremy Fitzhardinge wrote:
    
    > I'd noticed that current tip/master hasn't been booting under Xen, and I
    > just got around to bisecting it down to this change.
    >
    > commit 065ae73c5462d42e9761afb76f2b52965ff45bd6
    > Author: Suresh Siddha <suresh.b.siddha@intel.com>
    >
    >    x86, cpa: make the kernel physical mapping initialization a two pass sequence
    >
    > This patch is causing Xen to fail various pagetable updates because it
    > ends up remapping pagetables to RW, which Xen explicitly prohibits (as
    > that would allow guests to make arbitrary changes to pagetables, rather
    > than have them mediated by the hypervisor).
    
    Instead of making init a two pass sequence, to satisfy the Intel's TLB
    Application note (developer.intel.com/design/processor/applnots/317080.pdf
    Section 6 page 26), we preserve the original page permissions
    when fragmenting the large mappings and don't touch the existing memory
    mapping (which satisfies Xen's requirements).
    
    Only open issue is: on a native linux kernel, we will go back to mapping
    the first 0-1GB kernel identity mapping as executable (because of the
    static mapping setup in head_64.S). We can fix this in a different
    patch if needed.
    Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
    Acked-by: default avatarJeremy Fitzhardinge <jeremy@goop.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    b27a43c1
init_64.c 29.1 KB