[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v5 2/3] xen/mm: Switch some APIs over to pte_attr_t
On Fri, 25 Apr 2025, Andrew Cooper wrote: > From: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> > > Several APIs take an architecture-dependent set of flags in an unsigned int, > but this needs to be a wider type to support PPC. > > The new type pte_attr_t has been introduced for this purpose, so switch to it > in map_pages_to_xen(), __vmap() and modify_xen_mappings{,_lite}(). > > No functional change. > > Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > Signed-off-by: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > Reviewed-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > CC: Jan Beulich <JBeulich@xxxxxxxx> > CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> > CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> > CC: Julien Grall <julien@xxxxxxx> > CC: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx> > CC: Bertrand Marquis <bertrand.marquis@xxxxxxx> > CC: Michal Orzel <michal.orzel@xxxxxxx> > CC: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> > CC: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx> > --- > xen/arch/arm/mmu/pt.c | 4 ++-- > xen/arch/ppc/mm-radix.c | 2 +- > xen/arch/riscv/pt.c | 2 +- > xen/arch/x86/mm.c | 6 +++--- > xen/common/efi/boot.c | 4 ++-- > xen/common/vmap.c | 2 +- > xen/include/xen/mm.h | 7 ++++--- > xen/include/xen/vmap.h | 3 ++- > 8 files changed, 16 insertions(+), 14 deletions(-) > > diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c > index 11cb1c66dac8..4726e713efd3 100644 > --- a/xen/arch/arm/mmu/pt.c > +++ b/xen/arch/arm/mmu/pt.c > @@ -696,7 +696,7 @@ static int xen_pt_update(unsigned long virt, > int map_pages_to_xen(unsigned long virt, > mfn_t mfn, > unsigned long nr_mfns, > - unsigned int flags) > + pte_attr_t flags) > { > return xen_pt_update(virt, mfn, nr_mfns, flags); > } > @@ -714,7 +714,7 @@ int destroy_xen_mappings(unsigned long s, unsigned long e) > return xen_pt_update(s, INVALID_MFN, (e - s) >> PAGE_SHIFT, 0); > } > > -int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf) > +int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf) > { > ASSERT(IS_ALIGNED(s, PAGE_SIZE)); > ASSERT(IS_ALIGNED(e, PAGE_SIZE)); > diff --git a/xen/arch/ppc/mm-radix.c b/xen/arch/ppc/mm-radix.c > index 9a00ae416af0..d5385ec9dd4b 100644 > --- a/xen/arch/ppc/mm-radix.c > +++ b/xen/arch/ppc/mm-radix.c > @@ -265,7 +265,7 @@ int destroy_xen_mappings(unsigned long s, unsigned long e) > int map_pages_to_xen(unsigned long virt, > mfn_t mfn, > unsigned long nr_mfns, > - unsigned int flags) > + pte_attr_t flags) > { > BUG_ON("unimplemented"); > } > diff --git a/xen/arch/riscv/pt.c b/xen/arch/riscv/pt.c > index 857619d48df1..918b1b91abde 100644 > --- a/xen/arch/riscv/pt.c > +++ b/xen/arch/riscv/pt.c > @@ -504,7 +504,7 @@ static int pt_update(vaddr_t virt, mfn_t mfn, > int map_pages_to_xen(unsigned long virt, > mfn_t mfn, > unsigned long nr_mfns, > - unsigned int flags) > + pte_attr_t flags) > { > /* > * Ensure that flags has PTE_VALID bit as map_pages_to_xen() is supposed > diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c > index 1cf236516789..0e6c766be4aa 100644 > --- a/xen/arch/x86/mm.c > +++ b/xen/arch/x86/mm.c > @@ -5442,7 +5442,7 @@ int map_pages_to_xen( > unsigned long virt, > mfn_t mfn, > unsigned long nr_mfns, > - unsigned int flags) > + pte_attr_t flags) > { > bool locking = system_state > SYS_STATE_boot; > l3_pgentry_t *pl3e = NULL, ol3e; > @@ -5860,7 +5860,7 @@ int __init populate_pt_range(unsigned long virt, > unsigned long nr_mfns) > * > * It is an error to call with present flags over an unpopulated range. > */ > -int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf) > +int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf) > { > bool locking = system_state > SYS_STATE_boot; > l3_pgentry_t *pl3e = NULL; > @@ -6156,7 +6156,7 @@ int destroy_xen_mappings(unsigned long s, unsigned long > e) > * the non-inclusive boundary will be updated. > */ > void init_or_livepatch modify_xen_mappings_lite( > - unsigned long s, unsigned long e, unsigned int nf) > + unsigned long s, unsigned long e, pte_attr_t nf) > { > unsigned long v = s, fm, flags; > > diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c > index 143b5681ba92..e39fbc3529c4 100644 > --- a/xen/common/efi/boot.c > +++ b/xen/common/efi/boot.c > @@ -1676,7 +1676,7 @@ void __init efi_init_memory(void) > struct rt_extra { > struct rt_extra *next; > unsigned long smfn, emfn; > - unsigned int prot; > + pte_attr_t prot; > } *extra, *extra_head = NULL; > > free_ebmalloc_unused_mem(); > @@ -1691,7 +1691,7 @@ void __init efi_init_memory(void) > EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i; > u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT; > unsigned long smfn, emfn; > - unsigned int prot = PAGE_HYPERVISOR_RWX; > + pte_attr_t prot = PAGE_HYPERVISOR_RWX; > paddr_t mem_base; > unsigned long mem_npages; > > diff --git a/xen/common/vmap.c b/xen/common/vmap.c > index 47225fecc067..d6991421f3f7 100644 > --- a/xen/common/vmap.c > +++ b/xen/common/vmap.c > @@ -222,7 +222,7 @@ static void vm_free(const void *va) > } > > void *__vmap(const mfn_t *mfn, unsigned int granularity, > - unsigned int nr, unsigned int align, unsigned int flags, > + unsigned int nr, unsigned int align, pte_attr_t flags, > enum vmap_region type) > { > void *va = vm_alloc(nr * granularity, align, type); > diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h > index ae1c48a61545..e89942b87d1e 100644 > --- a/xen/include/xen/mm.h > +++ b/xen/include/xen/mm.h > @@ -64,6 +64,7 @@ > #include <xen/bug.h> > #include <xen/compiler.h> > #include <xen/mm-frame.h> > +#include <xen/mm-types.h> > #include <xen/types.h> > #include <xen/list.h> > #include <xen/spinlock.h> > @@ -113,11 +114,11 @@ int map_pages_to_xen( > unsigned long virt, > mfn_t mfn, > unsigned long nr_mfns, > - unsigned int flags); > + pte_attr_t flags); > /* Alter the permissions of a range of Xen virtual address space. */ > -int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf); > +int modify_xen_mappings(unsigned long s, unsigned long e, pte_attr_t nf); > void modify_xen_mappings_lite(unsigned long s, unsigned long e, > - unsigned int nf); > + pte_attr_t nf); > int destroy_xen_mappings(unsigned long s, unsigned long e); > /* Retrieve the MFN mapped by VA in Xen virtual address space. */ > mfn_t xen_map_to_mfn(unsigned long va); > diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h > index 26c831757a11..327a2597826d 100644 > --- a/xen/include/xen/vmap.h > +++ b/xen/include/xen/vmap.h > @@ -9,6 +9,7 @@ > #define __XEN_VMAP_H__ > > #include <xen/mm-frame.h> > +#include <xen/mm-types.h> > #include <xen/page-size.h> > > /* Identifiers for the linear ranges tracked by vmap */ > @@ -57,7 +58,7 @@ void vm_init_type(enum vmap_region type, void *start, void > *end); > * @return Pointer to the mapped area on success; NULL otherwise. > */ > void *__vmap(const mfn_t *mfn, unsigned int granularity, unsigned int nr, > - unsigned int align, unsigned int flags, enum vmap_region type); > + unsigned int align, pte_attr_t flags, enum vmap_region type); > > /* > * Map an array of pages contiguously into the VMAP_DEFAULT vmap region > -- > 2.39.5 >
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |