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@fabiankeil.de> (previous version) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
This commit is contained in:
parent
1da17fb7be
commit
3208d3ff46
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user