On x86_64 system, (pte >> PAGE_SHIFT) is not always equal to page
frame number because high bits (63:52) of pte may be used as
flags. This patch corrects the conversion and errors as below
disappear when applied.
(XEN) mm.c:3074:d0 PTE entry
200000a2ec6167 for address
a1f09958
doesn't match frame a2ec6
Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@ab.jp.nec.com>
ol1e = *(l1_pgentry_t *)va;
/* Check that the virtual address supplied is actually mapped to frame. */
- if ( unlikely((l1e_get_intpte(ol1e) >> PAGE_SHIFT) != frame) )
+ if ( unlikely(l1e_get_pfn(ol1e) != frame) )
{
page_unlock(page);
MEM_LOG("PTE entry %lx for address %"PRIx64" doesn't match frame %lx",