summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMukesh Rathor <mukesh.rathor@oracle.com>2013-12-13 12:09:28 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2014-01-06 10:43:56 -0500
commitfc590efe667338f7da250cf2d2eb6fdd486e1b97 (patch)
tree98b2188816d12912c94442d8ecbd6ea4f258efd4 /arch
parent1fe565517b57676884349dccfd6ce853ec338636 (diff)
downloadlinux-fc590efe667338f7da250cf2d2eb6fdd486e1b97.tar.gz
linux-fc590efe667338f7da250cf2d2eb6fdd486e1b97.tar.bz2
linux-fc590efe667338f7da250cf2d2eb6fdd486e1b97.zip
xen/p2m: Check for auto-xlat when doing mfn_to_local_pfn.
Most of the functions in page.h are prefaced with if (xen_feature(XENFEAT_auto_translated_physmap)) return mfn; Except the mfn_to_local_pfn. At a first sight, the function should work without this patch - as the 'mfn_to_mfn' has a similar check. But there are no such check in the 'get_phys_to_machine' function - so we would crash in there. This fixes it by following the convention of having the check for auto-xlat in these static functions. Signed-off-by: Mukesh Rathor <mukesh.rathor@oracle.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/xen/page.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
index b913915e8e63..4a092ccdd147 100644
--- a/arch/x86/include/asm/xen/page.h
+++ b/arch/x86/include/asm/xen/page.h
@@ -167,7 +167,12 @@ static inline xpaddr_t machine_to_phys(xmaddr_t machine)
*/
static inline unsigned long mfn_to_local_pfn(unsigned long mfn)
{
- unsigned long pfn = mfn_to_pfn(mfn);
+ unsigned long pfn;
+
+ if (xen_feature(XENFEAT_auto_translated_physmap))
+ return mfn;
+
+ pfn = mfn_to_pfn(mfn);
if (get_phys_to_machine(pfn) != mfn)
return -1; /* force !pfn_valid() */
return pfn;