With the introduction of the PMAP_PREFER_{ALIGN,OFFSET} macros a long time ago, there are actually no more uses of the PMAP_PREFER macro left in the kernel.
The following diff removes PMAP_PREFER() but keeps a simple #define for it to let uvm knows the PMAP_PREFER_{ALIGN,OFFSET} macros are available. It might be worth renaming that enabling macro to __HAVE_PMAP_PREFER to mimic existing macros such as __HAVE_PMAP_{COLLECT,DIRECT}... but then PMAP_GROWKERNEL does not start with __HAVE so there is already a lack of consistency in this area. Note that this diff actually removes PMAP_PREFER on armv7, since none of the targeted v7 platforms actually end up having virtual aliasing. Tested on all affected PMAP_DIRECT platforms (and armv7 which is no longer part of the club). Miod Index: sys/arch/arm/arm/pmap7.c =================================================================== RCS file: /OpenBSD/src/sys/arch/arm/arm/pmap7.c,v retrieving revision 1.65 diff -u -p -u -p -r1.65 pmap7.c --- sys/arch/arm/arm/pmap7.c 12 Sep 2022 19:28:19 -0000 1.65 +++ sys/arch/arm/arm/pmap7.c 25 Dec 2022 16:53:14 -0000 @@ -2848,20 +2848,3 @@ pmap_pte_init_armv7(void) if ((id_mmfr3 & 0x00f00000) == 0x00100000) pmap_needs_pte_sync = 0; } - -uint32_t pmap_alias_dist; -uint32_t pmap_alias_bits; - -vaddr_t -pmap_prefer(vaddr_t foff, vaddr_t va) -{ - long d, m; - - m = pmap_alias_dist; - if (m == 0) /* m=0 => no cache aliasing */ - return va; - - d = foff - va; - d &= (m - 1); - return va + d; -} Index: sys/arch/arm/include/pmap.h =================================================================== RCS file: /OpenBSD/src/sys/arch/arm/include/pmap.h,v retrieving revision 1.51 diff -u -p -u -p -r1.51 pmap.h --- sys/arch/arm/include/pmap.h 12 Sep 2022 19:28:19 -0000 1.51 +++ sys/arch/arm/include/pmap.h 25 Dec 2022 16:53:14 -0000 @@ -613,23 +613,6 @@ l2pte_is_writeable(pt_entry_t pte, struc #define L2_L_MAPPABLE_P(va, pa, size) \ ((((va) | (pa)) & L2_L_OFFSET) == 0 && (size) >= L2_L_SIZE) -#ifndef _LOCORE -/* pmap_prefer bits for VIPT ARMv7 */ -#define PMAP_PREFER(fo, ap) pmap_prefer((fo), (ap)) -vaddr_t pmap_prefer(vaddr_t, vaddr_t); - -extern uint32_t pmap_alias_dist; -extern uint32_t pmap_alias_bits; - -/* pmap prefer alias alignment. */ -#define PMAP_PREFER_ALIGN() (pmap_alias_dist) -/* pmap prefer offset withing alignment. */ -#define PMAP_PREFER_OFFSET(of) \ - (PMAP_PREFER_ALIGN() == 0 ? 0 : ((of) & (PMAP_PREFER_ALIGN() - 1))) - - -#endif /* _LOCORE */ - #endif /* _KERNEL */ #ifndef _LOCORE Index: sys/arch/hppa/include/cpu.h =================================================================== RCS file: /OpenBSD/src/sys/arch/hppa/include/cpu.h,v retrieving revision 1.97 diff -u -p -u -p -r1.97 cpu.h --- sys/arch/hppa/include/cpu.h 6 Dec 2022 00:40:09 -0000 1.97 +++ sys/arch/hppa/include/cpu.h 25 Dec 2022 16:53:14 -0000 @@ -191,7 +191,6 @@ extern int cpu_hvers; */ #define HPPA_PGALIAS 0x00400000 -#define HPPA_PGAMASK 0xffc00000 #define HPPA_PGAOFF 0x003fffff #define HPPA_IOBEGIN 0xf0000000 Index: sys/arch/hppa/include/pmap.h =================================================================== RCS file: /OpenBSD/src/sys/arch/hppa/include/pmap.h,v retrieving revision 1.52 diff -u -p -u -p -r1.52 pmap.h --- sys/arch/hppa/include/pmap.h 25 Oct 2022 18:44:36 -0000 1.52 +++ sys/arch/hppa/include/pmap.h 25 Dec 2022 16:53:14 -0000 @@ -91,16 +91,7 @@ struct vm_page *pmap_unmap_direct(vaddr_ * according to the parisc manual aliased va's should be * different by high 12 bits only. */ -#define PMAP_PREFER(o,h) pmap_prefer(o, h) -static __inline__ vaddr_t -pmap_prefer(vaddr_t offs, vaddr_t hint) -{ - vaddr_t pmap_prefer_hint = (hint & HPPA_PGAMASK) | (offs & HPPA_PGAOFF); - if (pmap_prefer_hint < hint) - pmap_prefer_hint += HPPA_PGALIAS; - return pmap_prefer_hint; -} - +#define PMAP_PREFER /* pmap prefer alignment */ #define PMAP_PREFER_ALIGN() (HPPA_PGALIAS) /* pmap prefer offset within alignment */ Index: sys/arch/mips64/include/pmap.h =================================================================== RCS file: /OpenBSD/src/sys/arch/mips64/include/pmap.h,v retrieving revision 1.50 diff -u -p -u -p -r1.50 pmap.h --- sys/arch/mips64/include/pmap.h 10 Sep 2022 20:35:28 -0000 1.50 +++ sys/arch/mips64/include/pmap.h 25 Dec 2022 16:53:14 -0000 @@ -149,8 +149,7 @@ extern struct pmap *const kernel_pmap_pt #define PMAP_STEAL_MEMORY /* Enable 'stealing' during boot */ -#define PMAP_PREFER(pa, va) pmap_prefer(pa, va) - +#define PMAP_PREFER extern vaddr_t pmap_prefer_mask; /* pmap prefer alignment */ #define PMAP_PREFER_ALIGN() \ @@ -159,7 +158,6 @@ extern vaddr_t pmap_prefer_mask; #define PMAP_PREFER_OFFSET(of) ((of) & pmap_prefer_mask) void pmap_bootstrap(void); -vaddr_t pmap_prefer(vaddr_t, vaddr_t); int pmap_emulate_modify(pmap_t, vaddr_t); void pmap_page_cache(vm_page_t, u_int); Index: sys/arch/mips64/mips64/pmap.c =================================================================== RCS file: /OpenBSD/src/sys/arch/mips64/mips64/pmap.c,v retrieving revision 1.121 diff -u -p -u -p -r1.121 pmap.c --- sys/arch/mips64/mips64/pmap.c 13 Sep 2021 12:19:10 -0000 1.121 +++ sys/arch/mips64/mips64/pmap.c 25 Dec 2022 16:53:14 -0000 @@ -1406,19 +1406,6 @@ pmap_extract(pmap_t pmap, vaddr_t va, pa } /* - * Find first virtual address >= *vap that - * will not cause cache aliases. - */ -vaddr_t -pmap_prefer(paddr_t foff, vaddr_t va) -{ - if (pmap_prefer_mask != 0) - va += (foff - va) & pmap_prefer_mask; - - return va; -} - -/* * Copy the range specified by src_addr/len * from the source map to the range dst_addr/len * in the destination map. Index: sys/arch/sh/include/pmap.h =================================================================== RCS file: /OpenBSD/src/sys/arch/sh/include/pmap.h,v retrieving revision 1.16 diff -u -p -u -p -r1.16 pmap.h --- sys/arch/sh/include/pmap.h 12 Sep 2022 19:33:34 -0000 1.16 +++ sys/arch/sh/include/pmap.h 25 Dec 2022 16:53:14 -0000 @@ -75,12 +75,11 @@ pmap_remove_all(struct pmap *pmap) } /* - * pmap_prefer() helps to avoid virtual cache aliases on SH4 CPUs + * Avoid virtual cache aliases on SH4 CPUs * which have the virtually-indexed cache. */ #ifdef SH4 -#define PMAP_PREFER(pa, va) pmap_prefer((pa), (va)) -vaddr_t pmap_prefer(vaddr_t, vaddr_t); +#define PMAP_PREFER vaddr_t pmap_prefer_align(void); vaddr_t pmap_prefer_offset(vaddr_t); Index: sys/arch/sh/sh/pmap.c =================================================================== RCS file: /OpenBSD/src/sys/arch/sh/sh/pmap.c,v retrieving revision 1.29 diff -u -p -u -p -r1.29 pmap.c --- sys/arch/sh/sh/pmap.c 12 Sep 2022 19:33:34 -0000 1.29 +++ sys/arch/sh/sh/pmap.c 25 Dec 2022 16:53:14 -0000 @@ -891,21 +891,6 @@ pmap_clear_modify(struct vm_page *pg) #ifdef SH4 /* - * pmap_prefer(vaddr_t foff, vaddr_t *vap) - * - * Find first virtual address >= *vap that doesn't cause - * a virtual cache alias against vaddr_t foff. - */ -vaddr_t -pmap_prefer(vaddr_t foff, vaddr_t va) -{ - if (SH_HAS_VIRTUAL_ALIAS) - va += ((foff - va) & sh_cache_prefer_mask); - - return va; -} - -/* * pmap_prefer_align() * * Return virtual cache alignment. Index: sys/arch/sparc64/include/pmap.h =================================================================== RCS file: /OpenBSD/src/sys/arch/sparc64/include/pmap.h,v retrieving revision 1.32 diff -u -p -u -p -r1.32 pmap.h --- sys/arch/sparc64/include/pmap.h 10 Sep 2022 20:35:29 -0000 1.32 +++ sys/arch/sparc64/include/pmap.h 25 Dec 2022 16:53:14 -0000 @@ -167,9 +167,9 @@ extern struct pmap kernel_pmap_; #define pmap_proc_iflush(p,va,len) /* nothing */ void pmap_bootstrap(u_long, u_long, u_int, u_int); -/* make sure all page mappings are modulo 16K to prevent d$ aliasing */ -#define PMAP_PREFER(pa, va) ((va) + (((va) ^ (pa)) & VA_ALIAS_MASK)) +/* make sure all page mappings are modulo 16K to prevent d$ aliasing */ +#define PMAP_PREFER /* pmap prefer alignment */ #define PMAP_PREFER_ALIGN() (VA_ALIAS_ALIGN) /* pmap prefer offset in alignment */ Index: sys/uvm/uvm_pmap.h =================================================================== RCS file: /OpenBSD/src/sys/uvm/uvm_pmap.h,v retrieving revision 1.31 diff -u -p -u -p -r1.31 uvm_pmap.h --- sys/uvm/uvm_pmap.h 10 Sep 2022 20:35:29 -0000 1.31 +++ sys/uvm/uvm_pmap.h 25 Dec 2022 16:53:14 -0000 @@ -104,7 +104,6 @@ typedef struct pmap_statistics *pmap_sta #ifndef PMAP_PREFER #define PMAP_PREFER_ALIGN() 0 #define PMAP_PREFER_OFFSET(off) 0 -#define PMAP_PREFER(addr, off) (addr) #endif #ifdef _KERNEL