Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Nov 2012 12:59:58 +0200
From:      Aleksandr Rybalko <ray@ddteam.net>
To:        Alan Cox <alc@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r243030 - in head/sys/mips: include mips
Message-ID:  <20121115125958.c8fe031258c233ff359223d6@ddteam.net>
In-Reply-To: <201211141733.qAEHX126017682@svn.freebsd.org>
References:  <201211141733.qAEHX126017682@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 14 Nov 2012 17:33:01 +0000 (UTC)
Alan Cox <alc@FreeBSD.org> wrote:

> Author: alc
> Date: Wed Nov 14 17:33:00 2012
> New Revision: 243030
> URL: http://svnweb.freebsd.org/changeset/base/243030
> 
> Log:
>   The function pmap_alloc_direct_page() unconditionally zeroes the returned
>   page.  Therefore, it is really inappropriate for use by the function
>   uma_small_alloc().  The effect of using it was that every page was zeroed
>   at least once and possibly twice if M_ZERO was passed as a "wait" flag.

Many thanks Alan!

No I able to store 8MB fw image on tmpfs. Bot only once :)

> 
> Modified:
>   head/sys/mips/include/pmap.h
>   head/sys/mips/mips/pmap.c
>   head/sys/mips/mips/uma_machdep.c
> 
> Modified: head/sys/mips/include/pmap.h
> ==============================================================================
> --- head/sys/mips/include/pmap.h	Wed Nov 14 17:23:48 2012	(r243029)
> +++ head/sys/mips/include/pmap.h	Wed Nov 14 17:33:00 2012	(r243030)
> @@ -179,7 +179,6 @@ void pmap_kenter_temporary_free(vm_paddr
>  void pmap_flush_pvcache(vm_page_t m);
>  int pmap_emulate_modified(pmap_t pmap, vm_offset_t va);
>  void pmap_grow_direct_page_cache(void);
> -vm_page_t pmap_alloc_direct_page(unsigned int index, int req);
>  
>  #endif				/* _KERNEL */
>  
> 
> Modified: head/sys/mips/mips/pmap.c
> ==============================================================================
> --- head/sys/mips/mips/pmap.c	Wed Nov 14 17:23:48 2012	(r243029)
> +++ head/sys/mips/mips/pmap.c	Wed Nov 14 17:33:00 2012	(r243030)
> @@ -163,6 +163,7 @@ static vm_page_t pmap_pv_reclaim(pmap_t 
>  static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va);
>  static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap,
>      vm_offset_t va);
> +static vm_page_t pmap_alloc_direct_page(unsigned int index, int req);
>  static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
>      vm_page_t m, vm_prot_t prot, vm_page_t mpte);
>  static int pmap_remove_pte(struct pmap *pmap, pt_entry_t *ptq, vm_offset_t va,
> @@ -1041,7 +1042,7 @@ pmap_grow_direct_page_cache()
>  #endif
>  }
>  
> -vm_page_t
> +static vm_page_t
>  pmap_alloc_direct_page(unsigned int index, int req)
>  {
>  	vm_page_t m;
> 
> Modified: head/sys/mips/mips/uma_machdep.c
> ==============================================================================
> --- head/sys/mips/mips/uma_machdep.c	Wed Nov 14 17:23:48 2012	(r243029)
> +++ head/sys/mips/mips/uma_machdep.c	Wed Nov 14 17:33:00 2012	(r243030)
> @@ -50,12 +50,14 @@ uma_small_alloc(uma_zone_t zone, int byt
>  	*flags = UMA_SLAB_PRIV;
>  
>  	if ((wait & (M_NOWAIT|M_USE_RESERVE)) == M_NOWAIT)
> -		pflags = VM_ALLOC_INTERRUPT;
> +		pflags = VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED;
>  	else
> -		pflags = VM_ALLOC_SYSTEM;
> +		pflags = VM_ALLOC_SYSTEM | VM_ALLOC_WIRED;
> +	if (wait & M_ZERO)
> +		pflags |= VM_ALLOC_ZERO;
>  
>  	for (;;) {
> -		m = pmap_alloc_direct_page(0, pflags);
> +		m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, pflags);
>  		if (m == NULL) {
>  			if (wait & M_NOWAIT)
>  				return (NULL);


-- 
Aleksandr Rybalko <ray@ddteam.net>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121115125958.c8fe031258c233ff359223d6>