[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC 1/2] xen/mm: Clarify the granularity for each Frame Number



From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

ARM64 is able to support 64KB and 4KB page granularities. While the guest
will support both granularities, Xen and hypercall interface will always
be in 4KB.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxx>
Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>

---
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Keir Fraser <keir@xxxxxxx>
Cc: Tim Deegan <tim@xxxxxxx>
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

I'm missing one term for Linux Frame Number but always in 4KB
granularity. It's necessary in few places such as the balloon code where
we need to map a Linux 4KB Frame Number into a Machine Frame Number.

I was thinking to name it xen_pfn.
---
 xen/include/xen/mm.h | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 876d370..8dfd61a 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -15,16 +15,24 @@
  *
  * mfn: Machine Frame Number
  *   The values Xen puts into its own pagetables.  This is the host physical
- *   memory address space with RAM, MMIO etc.
+ *   memory address space with RAM, MMIO etc. Always 4KB granularity.
  *
  * gfn: Guest Frame Number
- *   The values a guest puts in its own pagetables.  For an auto-translated
- *   guest (hardware assisted with 2nd stage translation, or shadowed), gfn !=
- *   mfn.  For a non-translated guest which is aware of Xen, gfn == mfn.
+ *   The values a guest puts in its own pagetables, except for 64KB
+ *   granularity. Gfns are always based on 4KB granularity, while actually
+ *   the guest could use other granularities.  For an auto-translated guest
+ *   (hardware assisted with 2nd stage translation, or shadowed), gfn != mfn.
+ *   For a non-translated guest which is aware of Xen, gfn == mfn.
+ *   Hypercalls take gfns, not mfns, as parameters unless clearly specified
+ *   otherwise.
  *
  * pfn: Pseudophysical Frame Number
- *   A linear idea of a guest physical address space. For an auto-translated
- *   guest, pfn == gfn while for a non-translated guest, pfn != gfn.
+ *   A linear idea of a guest physical address space. Pfns are in guest
+ *   granularity, which can be 64KB or 4KB. PV guests must only use 4KB
+ *   granularity. For an auto-translated guest, pfn == gfn << shift,
+ *   where the shift is the different between the Xen and Linux page
+ *   granularity, while for a non-translated guest, pfn != gfn. Pfns are
+ *   internal to the guest and are not passed to hypercalls.
  *
  * WARNING: Some of these terms have changed over time while others have been
  * used inconsistently, meaning that a lot of existing code does not match the
-- 
2.1.4


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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.