svn commit: r243030 - in head/sys/mips: include mips
Aleksandr Rybalko
ray at ddteam.net
Thu Nov 15 10:58:07 UTC 2012
On Wed, 14 Nov 2012 17:33:01 +0000 (UTC)
Alan Cox <alc at 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 at ddteam.net>
More information about the svn-src-head
mailing list