svn commit: r206582 - head/sys/mips/mips
Neel Natu
neel at FreeBSD.org
Wed Apr 14 01:29:31 UTC 2010
Author: neel
Date: Wed Apr 14 01:29:31 2010
New Revision: 206582
URL: http://svn.freebsd.org/changeset/base/206582
Log:
Revert the vm_machdep.c part of r205072.
This causes a panic in vm_thread_dispose() when it tries to add this kstack
to the kstack cache. This happens only when 'td_kstack' is not (PAGE_SIZE * 2)
bytes aligned and we have unmapped the page at that address in cpu_thread_alloc.
Pointed out by: nwhitehorn@
Modified:
head/sys/mips/mips/vm_machdep.c
Modified: head/sys/mips/mips/vm_machdep.c
==============================================================================
--- head/sys/mips/mips/vm_machdep.c Wed Apr 14 01:24:09 2010 (r206581)
+++ head/sys/mips/mips/vm_machdep.c Wed Apr 14 01:29:31 2010 (r206582)
@@ -214,16 +214,6 @@ cpu_thread_swapin(struct thread *td)
{
pt_entry_t *pte;
int i;
- vm_offset_t unused_kstack_page;
-
- /*
- * Unmap the unused kstack page.
- */
- unused_kstack_page = td->td_kstack;
- if (td->td_md.md_realstack == td->td_kstack)
- unused_kstack_page += (KSTACK_PAGES - 1) * PAGE_SIZE;
-
- pmap_kremove(unused_kstack_page);
/*
* The kstack may be at a different physical address now.
@@ -249,19 +239,13 @@ cpu_thread_swapout(struct thread *td)
void
cpu_thread_alloc(struct thread *td)
{
- vm_offset_t unused_kstack_page;
pt_entry_t *pte;
int i;
- if (td->td_kstack & (1 << PAGE_SHIFT)) {
+ if (td->td_kstack & (1 << PAGE_SHIFT))
td->td_md.md_realstack = td->td_kstack + PAGE_SIZE;
- unused_kstack_page = td->td_kstack;
- } else {
+ else
td->td_md.md_realstack = td->td_kstack;
- unused_kstack_page = td->td_kstack +
- (KSTACK_PAGES - 1) * PAGE_SIZE;
- }
- pmap_kremove(unused_kstack_page);
td->td_pcb = (struct pcb *)(td->td_md.md_realstack +
(td->td_kstack_pages - 1) * PAGE_SIZE) - 1;
More information about the svn-src-all
mailing list