Index | Thread | Search

From:
Jonathan Gray <jsg@jsg.id.au>
Subject:
remove i386 pmap_zero_page_uncached()
To:
tech@openbsd.org
Date:
Fri, 8 Nov 2024 11:34:17 +1100

Download raw body.

Thread
used by idle page zeroing code removed from uvm in 2015

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
  */