git: a25797c114da - stable/13 - riscv: Fix thread0.td_kstack_pages init

From: Brooks Davis <brooks_at_FreeBSD.org>
Date: Tue, 24 Jan 2023 23:26:27 UTC
The branch stable/13 has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=a25797c114da809da36f726110f446eac57bd9f1

commit a25797c114da809da36f726110f446eac57bd9f1
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2023-01-17 16:36:15 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2023-01-24 22:46:07 +0000

    riscv: Fix thread0.td_kstack_pages init
    
    Commit 0ef3ca7ae37c70e9dc83475dc2e68e98e1c2a418 initialized
    thread0.td_kstack_pages to KSTACK_PAGES.  Due to the lack of an
    include of opt_kstack_pages.h it used the fallback value of 4 from
    machine/param.h.  This meant that increasing KSTACK_PAGES in the kernel
    config resulted in a panic in _epoch_enter_preempt as the following
    assertion was false during network stack setup:
    
            MPASS((vm_offset_t)et >= td->td_kstack &&
                (vm_offset_t)et + sizeof(struct epoch_tracker) <=
                td->td_kstack + td->td_kstack_pages * PAGE_SIZE);
    
    Switch to initializing with kstack_pages following other architectures.
    
    Reviewed by:    imp, markj
    Sponsored by:   DARPA, AFRL
    Differential Revision:  https://reviews.freebsd.org/D38049
    
    (cherry picked from commit b75062f23431fbabef1e7d665cae270b144f71b1)
---
 sys/riscv/riscv/machdep.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/riscv/riscv/machdep.c b/sys/riscv/riscv/machdep.c
index 76f357e53559..6a910ad6dc1e 100644
--- a/sys/riscv/riscv/machdep.c
+++ b/sys/riscv/riscv/machdep.c
@@ -291,7 +291,7 @@ init_proc0(vm_offset_t kstack)
 
 	proc_linkup0(&proc0, &thread0);
 	thread0.td_kstack = kstack;
-	thread0.td_kstack_pages = KSTACK_PAGES;
+	thread0.td_kstack_pages = kstack_pages;
 	thread0.td_pcb = (struct pcb *)(thread0.td_kstack +
 	    thread0.td_kstack_pages * PAGE_SIZE) - 1;
 	thread0.td_pcb->pcb_fpflags = 0;