xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Libxc: fix xc_translate_foreign_address()
@ 2017-04-04 12:14 Razvan Cojocaru
  2017-04-04 15:11 ` Andrew Cooper
  0 siblings, 1 reply; 10+ messages in thread
From: Razvan Cojocaru @ 2017-04-04 12:14 UTC (permalink / raw)
  To: xen-devel; +Cc: wei.liu2, ian.jackson, Razvan Cojocaru, Cristian-Bogdan Sirb

Currently xc_translate_foreign_address only checks for PSE bit only on
level 2 entries (that's 2 MB pages on x64 and 32-bit with PAE, and 4 MB
pages on 32-bit). But linux kernel sometimes uses 1 GB pages. This patch
fixes that, and checks the PSE bit on level 3 entries if the guest has 4
translation levels (that means 64-bit guests only).

Signed-off-by: Cristian-Bogdan Sirb <csirb@bitdefender.com>
---
 tools/libxc/xc_pagetab.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c
index 92eebd6..db25c20 100644
--- a/tools/libxc/xc_pagetab.c
+++ b/tools/libxc/xc_pagetab.c
@@ -93,7 +93,7 @@ unsigned long xc_translate_foreign_address(xc_interface *xch, uint32_t dom,
             return 0;
         }
         paddr = pte & 0x000ffffffffff000ull;
-        if (level == 2 && (pte & PTE_PSE)) {
+        if ((level == 2 || (level == 3 && pt_levels == 4)) && (pte & PTE_PSE)) {
             mask = ((mask ^ ~-mask) >> 1); /* All bits below first set bit */
             return ((paddr & ~mask) | (virt & mask)) >> PAGE_SHIFT;
         }
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-04-05 12:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-04 12:14 [PATCH] Libxc: fix xc_translate_foreign_address() Razvan Cojocaru
2017-04-04 15:11 ` Andrew Cooper
2017-04-04 15:17   ` Razvan Cojocaru
2017-04-04 15:39   ` Tamas K Lengyel
2017-04-04 15:58     ` Andrew Cooper
2017-04-04 16:08       ` Tamas K Lengyel
2017-04-04 16:45         ` Razvan Cojocaru
2017-04-04 17:04           ` Andrew Cooper
2017-04-05 11:58             ` Razvan Cojocaru
2017-04-05 12:57               ` Wei Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).