Page MenuHomeFreeBSD

riscv: Fix thread0.td_kstack_pages init
ClosedPublic

Authored by brooks on Jan 14 2023, 12:02 AM.
Tags
None
Referenced Files
Unknown Object (File)
May 4 2024, 1:23 AM
Unknown Object (File)
Jan 30 2024, 5:40 AM
Unknown Object (File)
Jan 30 2024, 5:40 AM
Unknown Object (File)
Jan 30 2024, 5:40 AM
Unknown Object (File)
Jan 30 2024, 5:26 AM
Unknown Object (File)
Dec 20 2023, 7:53 AM
Unknown Object (File)
Oct 3 2023, 4:04 PM
Unknown Object (File)
Sep 18 2023, 10:22 PM
Subscribers

Details

Summary

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.

Sponsored by: DARPA, AFRL

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Matches other architectures. We set it in kern_proc.c which includes the right opt file. riscv64 includes that file as well, so this will make it match the space reserved for the stack via the usual bootparams method that passes the pointer to the reserved area in locore for the stack that will be KSTACK_PAGES in size. since kern_proc.c and locore.S have the same defintion of KSTACK_PAGES, we'll set the right space.

tl;dr: looks good to me.

This revision is now accepted and ready to land.Jan 14 2023, 12:20 AM
This revision was automatically updated to reflect the committed changes.