On Wed, 14 Nov 2012 17:33:01 +0000 (UTC)
Alan Cox <a...@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 <r...@ddteam.net>
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to