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