Index | Thread | Search

From:
Mike Larkin <mlarkin@nested.page>
Subject:
Re: remove i386 pmap_zero_page_uncached()
To:
tech@openbsd.org
Date:
Fri, 8 Nov 2024 04:36:42 -0800

Download raw body.

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