Date: Mon, 02 Sep 2002 11:45:10 +1000 From: Gregory Bond <gnb@itga.com.au> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: freebsd-stable@FreeBSD.ORG Subject: Re: Problems with FreeBSD - causing zalloc to return 0 ?! Message-ID: <200209020145.LAA18441@lightning.itga.com.au> In-Reply-To: Your message of Sat, 31 Aug 2002 19:26:51 -0700.
next in thread | raw e-mail | index | archive | help
> If kernel_vm_end reaches 0xFFC00000 (or somewhere very close to
> that), then you have run out of KVM.
So how about a warning message when pmap_growkernel() sets it to something near
this?
[I'm no kernel hacker, but afaict printf() is legal at splhigh(). And I don't
really know the sort of quantum that is passed to pmap_growkernel() so I'm not
sure if 16Mb is too big or too small...]
BTW: "sysctl vm.kvm_free" will show the number of bytes of free KVM so might
be a better trick than gdb in the monitoring script.
--- sys/i386/i386/pmap.c Fri Mar 15 13:52:54 2002
+++ sys/i386/i386/pmap.c.warn Mon Sep 2 11:34:45 2002
@@ -1468,6 +1468,15 @@
}
*pmap_pde(kernel_pmap, kernel_vm_end) = newpdir;
kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1);
+
+ /*
+ * Running kernel_vm_end to VM_MAX_KERNEL_ADDRESS is known to
+ * be fatal in confusing ways, so give a bit of a hint when
+ * we get near it so the crashes are less mysterious!
+ */
+#define VM_KERN_WARNLEVEL 0x1000000
+ if (VM_MAX_KERNEL_ADDRESS - kernel_vm_end < VM_KERN_WARNLEVEL)
+ printf("warning: kernel VM space (0x%x) almost exhausted!", kernel_vm_end);
}
splx(s);
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209020145.LAA18441>
