From: Ian Campbell Date: Fri, 30 Nov 2012 12:20:22 +0000 (+0000) Subject: arm: handle xenheap which isn't at the start of RAM. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~7582 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3b62c033e1abe76a8e77c2de2e4d8e8b06d8a8bf;p=xen.git arm: handle xenheap which isn't at the start of RAM. Signed-off-by: Ian Campbell Acked-by: Tim Deegan Committed-by: Ian Campbell --- diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index c0f5b1f847..260af35c77 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -214,17 +214,15 @@ static inline struct page_info *virt_to_page(const void *v) ASSERT(va >= XENHEAP_VIRT_START); ASSERT(va < xenheap_virt_end); - return frame_table + ((va - XENHEAP_VIRT_START) >> PAGE_SHIFT); + return frame_table + + ((va - XENHEAP_VIRT_START) >> PAGE_SHIFT) + + xenheap_mfn_start + - frametable_base_mfn; } static inline void *page_to_virt(const struct page_info *pg) { - ASSERT((unsigned long)pg - FRAMETABLE_VIRT_START < frametable_virt_end); - return (void *)(XENHEAP_VIRT_START + - ((unsigned long)pg - FRAMETABLE_VIRT_START) / - (sizeof(*pg) / (sizeof(*pg) & -sizeof(*pg))) * - (PAGE_SIZE / (sizeof(*pg) & -sizeof(*pg)))); - + return mfn_to_virt(page_to_mfn(pg)); } struct domain *page_get_owner_and_reference(struct page_info *page);