svn commit: r249605 - head/sys/vm
David Xu
davidxu at freebsd.org
Thu May 2 03:47:26 UTC 2013
On 2013/04/18 13:34, Alan Cox wrote:
> Author: alc
> Date: Thu Apr 18 05:34:33 2013
> New Revision: 249605
> URL: http://svnweb.freebsd.org/changeset/base/249605
>
> Log:
> When calculating the number of reserved nodes, discount the pages that will
> be used to store the nodes.
>
> Sponsored by: EMC / Isilon Storage Division
>
> Modified:
> head/sys/vm/vm_radix.c
>
> Modified: head/sys/vm/vm_radix.c
> ==============================================================================
> --- head/sys/vm/vm_radix.c Thu Apr 18 05:12:11 2013 (r249604)
> +++ head/sys/vm/vm_radix.c Thu Apr 18 05:34:33 2013 (r249605)
> @@ -360,10 +360,17 @@ vm_radix_node_zone_init(void *mem, int s
> static void
> vm_radix_prealloc(void *arg __unused)
> {
> + int nodes;
>
> - if (!uma_zone_reserve_kva(vm_radix_node_zone, cnt.v_page_count))
> + /*
> + * Calculate the number of reserved nodes, discounting the pages that
> + * are needed to store them.
> + */
> + nodes = ((vm_paddr_t)cnt.v_page_count * PAGE_SIZE) / (PAGE_SIZE +
> + sizeof(struct vm_radix_node));
> + if (!uma_zone_reserve_kva(vm_radix_node_zone, nodes))
> panic("%s: unable to create new zone", __func__);
> - uma_prealloc(vm_radix_node_zone, cnt.v_page_count);
> + uma_prealloc(vm_radix_node_zone, nodes);
> }
> SYSINIT(vm_radix_prealloc, SI_SUB_KMEM, SI_ORDER_SECOND, vm_radix_prealloc,
> NULL);
>
FYI, after this change, my network card no longer works, the
driver /sys/dev/if_msk.c reports watchdog timeout, backing out
this change works again for me.
Regards,
David Xu
More information about the svn-src-head
mailing list