xen/m2p: No need to catch exceptions when we know that there is no RAM
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 14 Jan 2011 22:55:44 +0000 (17:55 -0500)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 14 Mar 2011 15:17:13 +0000 (11:17 -0400)
.. beyound what we think is the end of memory. However there might
be more System RAM - but assigned to a guest. Hence jump to the
M2P override check and consult.

[v1: Added Review-by tag]

Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/include/asm/xen/page.h

index 78ebbeb..1957070 100644 (file)
@@ -85,6 +85,10 @@ static inline unsigned long mfn_to_pfn(unsigned long mfn)
        if (xen_feature(XENFEAT_auto_translated_physmap))
                return mfn;
 
+       if (unlikely((mfn >> machine_to_phys_order) != 0)) {
+               pfn = ~0;
+               goto try_override;
+       }
        pfn = 0;
        /*
         * The array access can fail (e.g., device space beyond end of RAM).
@@ -92,7 +96,7 @@ static inline unsigned long mfn_to_pfn(unsigned long mfn)
         * but we must handle the fault without crashing!
         */
        __get_user(pfn, &machine_to_phys_mapping[mfn]);
-
+try_override:
        /*
         * If this appears to be a foreign mfn (because the pfn
         * doesn't map back to the mfn), then check the local override