]> git.baikalelectronics.ru Git - kernel.git/commit
xen/m2p: Check whether the MFN has IDENTITY_FRAME bit set..
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Wed, 2 Feb 2011 18:32:59 +0000 (18:32 +0000)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 14 Mar 2011 15:17:14 +0000 (11:17 -0400)
commitd856ea981e1fbf3af352c8f728f01cb5ef87bc4f
tree60075b399bdbb0a6f4b9d27bcfc17813e5c72734
parent54ed2fcaa92f7ab85a5acd384ea8c7f7a711d21c
xen/m2p: Check whether the MFN has IDENTITY_FRAME bit set..

If there is no proper PFN value in the M2P for the MFN
(so we get 0xFFFFF.. or 0x55555, or 0x0), we should
consult the M2P override to see if there is an entry for this.
[Note: we also consult the M2P override if the MFN
is past our machine_to_phys size].

We consult the P2M with the PFN. In case the returned
MFN is one of the special values: 0xFFF.., 0x5555
(which signify that the MFN can be either "missing" or it
belongs to DOMID_IO) or the p2m(m2p(mfn)) != mfn, we check
the M2P override. If we fail the M2P override check, we reset
the PFN value to INVALID_P2M_ENTRY.

Next we try to find the MFN in the P2M using the MFN
value (not the PFN value) and if found, we know
that this MFN is an identity value and return it as so.

Otherwise we have exhausted all the posibilities and we
return the PFN, which at this stage can either be a real
PFN value found in the machine_to_phys.. array, or
INVALID_P2M_ENTRY value.

[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