From: Mike Larkin Subject: Re: remove i386 pmap_zero_page_uncached() To: tech@openbsd.org Date: Fri, 8 Nov 2024 04:36:42 -0800 On Fri, Nov 08, 2024 at 11:34:17AM +1100, Jonathan Gray wrote: > used by idle page zeroing code removed from uvm in 2015 > ok mlarkin > diff --git sys/arch/i386/i386/pmap.c sys/arch/i386/i386/pmap.c > index 240e8dbb054..1edd1b35072 100644 > --- sys/arch/i386/i386/pmap.c > +++ sys/arch/i386/i386/pmap.c > @@ -1611,32 +1611,6 @@ pmap_zero_phys_86(paddr_t pa) > *zpte = 0; > } > > -/* > - * pmap_zero_page_uncached: the same, except uncached. > - */ > - > -int > -pmap_zero_page_uncached_86(paddr_t pa) > -{ > -#ifdef MULTIPROCESSOR > - int id = cpu_number(); > -#endif > - pt_entry_t *zpte = PTESLEW(zero_pte, id); > - caddr_t zerova = VASLEW(pmap_zerop, id); > - > -#ifdef DIAGNOSTIC > - if (*zpte) > - panic("pmap_zero_page_uncached_86: lock botch"); > -#endif > - > - *zpte = (pa & PG_FRAME) | PG_V | PG_RW | PG_N; /* map in */ > - pmap_update_pg((vaddr_t)zerova); /* flush TLB */ > - pagezero(zerova, PAGE_SIZE); /* zero */ > - *zpte = 0; > - > - return 1; > -} > - > /* > * pmap_flush_cache: flush the cache for a virtual address. > */ > @@ -2882,7 +2856,5 @@ void (*pmap_write_protect_p)(struct pmap *, vaddr_t, vaddr_t, > vm_prot_t) = pmap_write_protect_86; > void (*pmap_pinit_pd_p)(pmap_t) = pmap_pinit_pd_86; > void (*pmap_zero_phys_p)(paddr_t) = pmap_zero_phys_86; > -int (*pmap_zero_page_uncached_p)(paddr_t) = > - pmap_zero_page_uncached_86; > void (*pmap_copy_page_p)(struct vm_page *, struct vm_page *) = > pmap_copy_page_86; > diff --git sys/arch/i386/i386/pmapae.c sys/arch/i386/i386/pmapae.c > index b7be0b44e73..c8931e23554 100644 > --- sys/arch/i386/i386/pmapae.c > +++ sys/arch/i386/i386/pmapae.c > @@ -811,7 +811,6 @@ pmap_bootstrap_pae(void) > pmap_write_protect_p = pmap_write_protect_pae; > pmap_pinit_pd_p = pmap_pinit_pd_pae; > pmap_zero_phys_p = pmap_zero_phys_pae; > - pmap_zero_page_uncached_p = pmap_zero_page_uncached_pae; > pmap_copy_page_p = pmap_copy_page_pae; > > bzero((void *)kpm->pm_pdir + 8, (PDSLOT_PTE-1) * 8); > @@ -1094,32 +1093,6 @@ pmap_zero_phys_pae(paddr_t pa) > *zpte = 0; > } > > -/* > - * pmap_zero_page_uncached: the same, except uncached. > - */ > - > -int > -pmap_zero_page_uncached_pae(paddr_t pa) > -{ > -#ifdef MULTIPROCESSOR > - int id = cpu_number(); > -#endif > - pt_entry_t *zpte = PTESLEW(zero_pte, id); > - caddr_t zerova = VASLEW(pmap_zerop, id); > - > -#ifdef DIAGNOSTIC > - if (*zpte) > - panic("pmap_zero_page_uncached_pae: lock botch"); > -#endif > - > - *zpte = (pa & PG_FRAME) | PG_V | PG_RW | PG_N; /* map in */ > - pmap_update_pg((vaddr_t)zerova); /* flush TLB */ > - pagezero(zerova, PAGE_SIZE); /* zero */ > - *zpte = 0; > - > - return 1; > -} > - > /* > * pmap_copy_page: copy a page > */ > diff --git sys/arch/i386/include/pmap.h sys/arch/i386/include/pmap.h > index 2ead66ef937..605d6531017 100644 > --- sys/arch/i386/include/pmap.h > +++ sys/arch/i386/include/pmap.h > @@ -276,7 +276,6 @@ extern void (*pmap_unwire_p)(struct pmap *, vaddr_t); > extern void (*pmap_write_protect_p)(struct pmap*, vaddr_t, vaddr_t, vm_prot_t); > extern void (*pmap_pinit_pd_p)(pmap_t); > extern void (*pmap_zero_phys_p)(paddr_t); > -extern int (*pmap_zero_page_uncached_p)(paddr_t); > extern void (*pmap_copy_page_p)(struct vm_page *, struct vm_page *); > > u_int32_t pmap_pte_set_pae(vaddr_t, paddr_t, u_int32_t); > @@ -295,7 +294,6 @@ void pmap_unwire_pae(struct pmap *, vaddr_t); > void pmap_write_protect_pae(struct pmap *, vaddr_t, vaddr_t, vm_prot_t); > void pmap_pinit_pd_pae(pmap_t); > void pmap_zero_phys_pae(paddr_t); > -int pmap_zero_page_uncached_pae(paddr_t); > void pmap_copy_page_pae(struct vm_page *, struct vm_page *); > > #define pmap_pte_set (*pmap_pte_set_p) > @@ -310,7 +308,6 @@ void pmap_copy_page_pae(struct vm_page *, struct vm_page *); > #define pmap_write_protect (*pmap_write_protect_p) > #define pmap_pinit_pd (*pmap_pinit_pd_p) > #define pmap_zero_phys (*pmap_zero_phys_p) > -#define pmap_zero_page_uncached (*pmap_zero_page_uncached_p) > #define pmap_copy_page (*pmap_copy_page_p) > > u_int32_t pmap_pte_set_86(vaddr_t, paddr_t, u_int32_t); > @@ -329,7 +326,6 @@ void pmap_unwire_86(struct pmap *, vaddr_t); > void pmap_write_protect_86(struct pmap *, vaddr_t, vaddr_t, vm_prot_t); > void pmap_pinit_pd_86(pmap_t); > void pmap_zero_phys_86(paddr_t); > -int pmap_zero_page_uncached_86(paddr_t); > void pmap_copy_page_86(struct vm_page *, struct vm_page *); > void pmap_tlb_shootpage(struct pmap *, vaddr_t); > void pmap_tlb_shootrange(struct pmap *, vaddr_t, vaddr_t); > @@ -362,11 +358,6 @@ void pmap_flush_page_pae(paddr_t); > > #define PMAP_GROWKERNEL /* turn on pmap_growkernel interface */ > > -/* > - * Do idle page zero'ing uncached to avoid polluting the cache. > - */ > -#define PMAP_PAGEIDLEZERO(pg) pmap_zero_page_uncached(VM_PAGE_TO_PHYS(pg)) > - > /* > * Inline functions > */ >