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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to