There's nothing arch-specific about it.
While there, on x86 visually separate the vmap_to_*() macros from those
covered by the earlier comment.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -237,7 +237,6 @@ static inline void __iomem *ioremap_wc(p
/* Convert between frame number and address formats. */
#define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
#define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT))
-#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa))
#define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn))
#define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga))
#define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn))
--- a/xen/arch/ppc/include/asm/mm.h
+++ b/xen/arch/ppc/include/asm/mm.h
@@ -13,7 +13,6 @@ void setup_initial_pagetables(void);
#define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
#define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT))
-#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa))
#define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn))
#define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga))
#define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn))
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -19,7 +19,6 @@ extern vaddr_t directmap_virt_start;
#define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
#define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT))
-#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa))
#define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn))
#define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga))
#define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn))
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -258,7 +258,8 @@ void scrub_page_cold(void *);
#define mfn_to_virt(mfn) __mfn_to_virt(mfn)
#define pfn_to_paddr(pfn) __pfn_to_paddr(pfn)
#define paddr_to_pfn(pa) __paddr_to_pfn(pa)
-#define paddr_to_pdx(pa) pfn_to_pdx(paddr_to_pfn(pa))
+
+/* Specialized forms acting on vmap() addresses. */
#define vmap_to_mfn(va) xen_map_to_mfn((unsigned long)(va))
#define vmap_to_page(va) mfn_to_page(vmap_to_mfn(va))
--- a/xen/include/xen/pdx.h
+++ b/xen/include/xen/pdx.h
@@ -98,6 +98,8 @@ bool __mfn_valid(unsigned long mfn);
#define mfn_to_pdx(mfn) pfn_to_pdx(mfn_x(mfn))
#define pdx_to_mfn(pdx) _mfn(pdx_to_pfn(pdx))
+#define paddr_to_pdx(pa) pfn_to_pdx(paddr_to_pfn(pa))
+
#ifdef CONFIG_PDX_COMPRESSION
extern unsigned long pfn_pdx_bottom_mask, ma_va_bottom_mask;
On 4/30/25 5:56 PM, Jan Beulich wrote: > There's nothing arch-specific about it. > > While there, on x86 visually separate the vmap_to_*() macros from those > covered by the earlier comment. > > Signed-off-by: Jan Beulich<jbeulich@suse.com> > > --- a/xen/arch/arm/include/asm/mm.h > +++ b/xen/arch/arm/include/asm/mm.h > @@ -237,7 +237,6 @@ static inline void __iomem *ioremap_wc(p > /* Convert between frame number and address formats. */ > #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT) > #define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT)) > -#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa)) > #define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn)) > #define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga)) > #define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn)) > --- a/xen/arch/ppc/include/asm/mm.h > +++ b/xen/arch/ppc/include/asm/mm.h > @@ -13,7 +13,6 @@ void setup_initial_pagetables(void); > > #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT) > #define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT)) > -#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa)) > #define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn)) > #define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga)) > #define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn)) > --- a/xen/arch/riscv/include/asm/mm.h > +++ b/xen/arch/riscv/include/asm/mm.h Reveiwed-by: Oleksii Kurochko<oleksii.kurochko@gmail.com> ~ Oleksii > @@ -19,7 +19,6 @@ extern vaddr_t directmap_virt_start; > #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT) > #define paddr_to_pfn(pa) ((unsigned long)((pa) >> PAGE_SHIFT)) > > -#define paddr_to_pdx(pa) mfn_to_pdx(maddr_to_mfn(pa)) > #define gfn_to_gaddr(gfn) pfn_to_paddr(gfn_x(gfn)) > #define gaddr_to_gfn(ga) _gfn(paddr_to_pfn(ga)) > #define mfn_to_maddr(mfn) pfn_to_paddr(mfn_x(mfn)) > --- a/xen/arch/x86/include/asm/page.h > +++ b/xen/arch/x86/include/asm/page.h > @@ -258,7 +258,8 @@ void scrub_page_cold(void *); > #define mfn_to_virt(mfn) __mfn_to_virt(mfn) > #define pfn_to_paddr(pfn) __pfn_to_paddr(pfn) > #define paddr_to_pfn(pa) __paddr_to_pfn(pa) > -#define paddr_to_pdx(pa) pfn_to_pdx(paddr_to_pfn(pa)) > + > +/* Specialized forms acting on vmap() addresses. */ > #define vmap_to_mfn(va) xen_map_to_mfn((unsigned long)(va)) > #define vmap_to_page(va) mfn_to_page(vmap_to_mfn(va)) > > --- a/xen/include/xen/pdx.h > +++ b/xen/include/xen/pdx.h > @@ -98,6 +98,8 @@ bool __mfn_valid(unsigned long mfn); > #define mfn_to_pdx(mfn) pfn_to_pdx(mfn_x(mfn)) > #define pdx_to_mfn(pdx) _mfn(pdx_to_pfn(pdx)) > > +#define paddr_to_pdx(pa) pfn_to_pdx(paddr_to_pfn(pa)) > + > #ifdef CONFIG_PDX_COMPRESSION > > extern unsigned long pfn_pdx_bottom_mask, ma_va_bottom_mask;
Hi Jan, On 30/04/2025 16:56, Jan Beulich wrote: > There's nothing arch-specific about it. > > While there, on x86 visually separate the vmap_to_*() macros from those > covered by the earlier comment. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Julien Grall <jgrall@amazon.com> Cheers, -- Julien Grall
On 30/04/2025 4:56 pm, Jan Beulich wrote: > There's nothing arch-specific about it. > > While there, on x86 visually separate the vmap_to_*() macros from those > covered by the earlier comment. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
© 2016 - 2026 Red Hat, Inc.