svn commit: r286223 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Konstantin Belousov kostikbel at gmail.com
Mon Aug 3 12:04:11 UTC 2015


On Mon, Aug 03, 2015 at 12:50:19PM +0100, Steven Hartland wrote:
> For this change I don't want to get into fixing the thread0 stack size, 
> which can be done later, just
> to provide a reasonable warning to the user that smaller values could 
> cause a panic.

Hmm, is it limited to the thread0 only ?  I.e., would only increasing
the initial thread stack size be enough to boot the kernel ?  The zfs
threads do request larger stack size, I know this.

Can somebody test the following patch in the i386 configuration which
does not boot ?

diff --git a/sys/i386/i386/genassym.c b/sys/i386/i386/genassym.c
index 7a00740..6a00d23 100644
--- a/sys/i386/i386/genassym.c
+++ b/sys/i386/i386/genassym.c
@@ -103,6 +103,7 @@ ASSYM(V_SYSCALL, offsetof(struct vmmeter, v_syscall));
 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);
diff --git a/sys/i386/i386/locore.s b/sys/i386/i386/locore.s
index 5bf7944..4d8e22f 100644
--- a/sys/i386/i386/locore.s
+++ b/sys/i386/i386/locore.s
@@ -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 */
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index 2be5dbc..76790f0 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -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
diff --git a/sys/i386/include/param.h b/sys/i386/include/param.h
index b3fd85f..bc79c20 100644
--- a/sys/i386/include/param.h
+++ b/sys/i386/include/param.h
@@ -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 < 3
+#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-head mailing list