At the moment, the flags are not enough to describe what kind of update
will done on the VA range. They need to be used in conjunction with the
enum xenmap_operation.
It would be more convenient to have all the information for the update
in a single place.
Two new flags are added to remove the relience on xenmap_operation:
- _PAGE_PRESENT: Indicate whether we are adding/removing the mapping
- _PAGE_POPULATE: Indicate whether we only populate page-tables
Signed-off-by: Julien Grall <[email protected]>
---
xen/arch/arm/mm.c | 2 +-
xen/include/asm-arm/page.h | 9 +++++++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 6b1d41cfba..b61217abd0 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -1075,7 +1075,7 @@ int map_pages_to_xen(unsigned long virt,
int populate_pt_range(unsigned long virt, unsigned long nr_mfns)
{
- return xen_pt_update(RESERVE, virt, INVALID_MFN, nr_mfns, 0);
+ return xen_pt_update(RESERVE, virt, INVALID_MFN, nr_mfns, _PAGE_POPULATE);
}
int destroy_xen_mappings(unsigned long v, unsigned long e)
diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h
index 2bcdb0f1a5..caf2fac1ff 100644
--- a/xen/include/asm-arm/page.h
+++ b/xen/include/asm-arm/page.h
@@ -76,6 +76,8 @@
*
* [0:2] Memory Attribute Index
* [3:4] Permission flags
+ * [5] Present bit
+ * [6] Populate page table
*/
#define PAGE_AI_MASK(x) ((x) & 0x7U)
@@ -86,12 +88,15 @@
#define PAGE_XN_MASK(x) (((x) >> _PAGE_XN_BIT) & 0x1U)
#define PAGE_RO_MASK(x) (((x) >> _PAGE_RO_BIT) & 0x1U)
+#define _PAGE_PRESENT (1U << 5)
+#define _PAGE_POPULATE (1U << 6)
+
/*
* _PAGE_DEVICE and _PAGE_NORMAL are convenience defines. They are not
* meant to be used outside of this header.
*/
-#define _PAGE_DEVICE _PAGE_XN
-#define _PAGE_NORMAL MT_NORMAL
+#define _PAGE_DEVICE (_PAGE_XN|_PAGE_PRESENT)
+#define _PAGE_NORMAL (MT_NORMAL|_PAGE_PRESENT)
#define PAGE_HYPERVISOR_RO (_PAGE_NORMAL|_PAGE_RO|_PAGE_XN)
#define PAGE_HYPERVISOR_RX (_PAGE_NORMAL|_PAGE_RO)
--
2.11.0
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel