|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH MM-PART3 v3 2/9] xen/arm: mm: Introduce _PAGE_PRESENT and _PAGE_POPULATE
On Fri, 14 Jun 2019, Julien Grall wrote:
> 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 <julien.grall@xxxxxxx>
> Reviewed-by: Andrii Anisov <andrii_anisov@xxxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> Changes in v3:
> - Clarify the description of the new flags
>
> Changes in v2:
> - Add Andrii's reviewed-by
> ---
> 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 23e9565ddc..b13d9adf40 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -1056,7 +1056,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..37e1d9aadb 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] Page present
> + * [6] Only populate page tables
> */
> #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
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |