lkml.org 
[lkml]   [2008]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 33 of 55] xen64: use arbitrary_virt_to_machine for xen_set_pmd
    Date
    From
    When building initial pagetables in 64-bit kernel the pud/pmd pointer may
    be in ioremap/fixmap space, so we need to walk the pagetable to look up the
    physical address.

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    ---
    arch/x86/xen/mmu.c | 9 ++++++---
    include/asm-x86/xen/page.h | 2 +-
    2 files changed, 7 insertions(+), 4 deletions(-)

    diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
    --- a/arch/x86/xen/mmu.c
    +++ b/arch/x86/xen/mmu.c
    @@ -178,8 +178,9 @@
    p2m_top[topidx][idx] = mfn;
    }

    -xmaddr_t arbitrary_virt_to_machine(unsigned long address)
    +xmaddr_t arbitrary_virt_to_machine(void *vaddr)
    {
    + unsigned long address = (unsigned long)vaddr;
    unsigned int level;
    pte_t *pte = lookup_address(address, &level);
    unsigned offset = address & ~PAGE_MASK;
    @@ -253,7 +254,8 @@

    xen_mc_batch();

    - u.ptr = virt_to_machine(ptr).maddr;
    + /* ptr may be ioremapped for 64-bit pagetable setup */
    + u.ptr = arbitrary_virt_to_machine(ptr).maddr;
    u.val = pmd_val_ma(val);
    extend_mmu_update(&u);

    @@ -415,7 +417,8 @@

    xen_mc_batch();

    - u.ptr = virt_to_machine(ptr).maddr;
    + /* ptr may be ioremapped for 64-bit pagetable setup */
    + u.ptr = arbitrary_virt_to_machine(ptr).maddr;
    u.val = pud_val_ma(val);
    extend_mmu_update(&u);

    diff --git a/include/asm-x86/xen/page.h b/include/asm-x86/xen/page.h
    --- a/include/asm-x86/xen/page.h
    +++ b/include/asm-x86/xen/page.h
    @@ -158,7 +158,7 @@
    #define pgd_val_ma(x) ((x).pgd)


    -xmaddr_t arbitrary_virt_to_machine(unsigned long address);
    +xmaddr_t arbitrary_virt_to_machine(void *address);
    void make_lowmem_page_readonly(void *vaddr);
    void make_lowmem_page_readwrite(void *vaddr);




    \
     
     \ /
      Last update: 2008-07-09 01:23    [W:0.040 / U:0.272 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site