svn commit: r286288 - in head/sys/i386: i386 include
Konstantin Belousov
kib at FreeBSD.org
Tue Aug 4 13:50:54 UTC 2015
Author: kib
Date: Tue Aug 4 13:50:52 2015
New Revision: 286288
URL: https://svnweb.freebsd.org/changeset/base/286288
Log:
Give large kernel stack to the initial thread . Otherwise, ZFS
overflows the stack during root mount in some configurations.
Tested by: Fabian Keil <freebsd-listen at fabiankeil.de> (previous version)
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Modified:
head/sys/i386/i386/genassym.c
head/sys/i386/i386/locore.s
head/sys/i386/i386/machdep.c
head/sys/i386/include/param.h
Modified: head/sys/i386/i386/genassym.c
==============================================================================
--- head/sys/i386/i386/genassym.c Tue Aug 4 13:42:44 2015 (r286287)
+++ head/sys/i386/i386/genassym.c Tue Aug 4 13:50:52 2015 (r286288)
@@ -103,6 +103,7 @@ ASSYM(V_SYSCALL, offsetof(struct vmmeter
ASSYM(V_INTR, offsetof(struct vmmeter, v_intr));
/* ASSYM(UPAGES, UPAGES);*/
ASSYM(KSTACK_PAGES, KSTACK_PAGES);
+ASSYM(TD0_KSTACK_PAGES, TD0_KSTACK_PAGES);
ASSYM(PAGE_SIZE, PAGE_SIZE);
ASSYM(NPTEPG, NPTEPG);
ASSYM(NPDEPG, NPDEPG);
Modified: head/sys/i386/i386/locore.s
==============================================================================
--- head/sys/i386/i386/locore.s Tue Aug 4 13:42:44 2015 (r286287)
+++ head/sys/i386/i386/locore.s Tue Aug 4 13:50:52 2015 (r286288)
@@ -731,7 +731,7 @@ no_kernend:
movl %esi,R(IdlePTD)
/* Allocate KSTACK */
- ALLOCPAGES(KSTACK_PAGES)
+ ALLOCPAGES(TD0_KSTACK_PAGES)
movl %esi,R(p0kpa)
addl $KERNBASE, %esi
movl %esi, R(proc0kstack)
@@ -800,7 +800,7 @@ no_kernend:
/* Map proc0's KSTACK in the physical way ... */
movl R(p0kpa), %eax
- movl $(KSTACK_PAGES), %ecx
+ movl $(TD0_KSTACK_PAGES), %ecx
fillkptphys($PG_RW)
/* Map ISA hole */
Modified: head/sys/i386/i386/machdep.c
==============================================================================
--- head/sys/i386/i386/machdep.c Tue Aug 4 13:42:44 2015 (r286287)
+++ head/sys/i386/i386/machdep.c Tue Aug 4 13:50:52 2015 (r286288)
@@ -2445,7 +2445,7 @@ init386(first)
#endif
thread0.td_kstack = proc0kstack;
- thread0.td_kstack_pages = KSTACK_PAGES;
+ thread0.td_kstack_pages = TD0_KSTACK_PAGES;
/*
* This may be done better later if it gets more high level
Modified: head/sys/i386/include/param.h
==============================================================================
--- head/sys/i386/include/param.h Tue Aug 4 13:42:44 2015 (r286287)
+++ head/sys/i386/include/param.h Tue Aug 4 13:50:52 2015 (r286288)
@@ -114,6 +114,11 @@
#define KSTACK_PAGES 2 /* Includes pcb! */
#endif
#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */
+#if KSTACK_PAGES < 4
+#define TD0_KSTACK_PAGES 4
+#else
+#define TD0_KSTACK_PAGES KSTACK_PAGES
+#endif
/*
* Ceiling on amount of swblock kva space, can be changed via
More information about the svn-src-all
mailing list