Sun Jun 12 01:28:29 2011 UTC ()
Set iospace and virtual_end address properly.
Fixes TLB miss panic during device attach on emips.


(tsutsui)
diff -r1.201 -r1.202 src/sys/arch/mips/mips/pmap.c

cvs diff -r1.201 -r1.202 src/sys/arch/mips/mips/Attic/pmap.c (expand / switch to unified diff)

--- src/sys/arch/mips/mips/Attic/pmap.c 2011/05/07 14:37:46 1.201
+++ src/sys/arch/mips/mips/Attic/pmap.c 2011/06/12 01:28:29 1.202
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: pmap.c,v 1.201 2011/05/07 14:37:46 tsutsui Exp $ */ 1/* $NetBSD: pmap.c,v 1.202 2011/06/12 01:28:29 tsutsui Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. 4 * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to The NetBSD Foundation 7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, 8 * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
9 * NASA Ames Research Center and by Chris G. Demetriou. 9 * NASA Ames Research Center and by Chris G. Demetriou.
10 * 10 *
11 * Redistribution and use in source and binary forms, with or without 11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions 12 * modification, are permitted provided that the following conditions
13 * are met: 13 * are met:
14 * 1. Redistributions of source code must retain the above copyright 14 * 1. Redistributions of source code must retain the above copyright
@@ -57,27 +57,27 @@ @@ -57,27 +57,27 @@
57 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 57 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
58 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 58 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
59 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 59 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 60 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 61 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 62 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
63 * SUCH DAMAGE. 63 * SUCH DAMAGE.
64 * 64 *
65 * @(#)pmap.c 8.4 (Berkeley) 1/26/94 65 * @(#)pmap.c 8.4 (Berkeley) 1/26/94
66 */ 66 */
67 67
68#include <sys/cdefs.h> 68#include <sys/cdefs.h>
69 69
70__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.201 2011/05/07 14:37:46 tsutsui Exp $"); 70__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.202 2011/06/12 01:28:29 tsutsui Exp $");
71 71
72/* 72/*
73 * Manages physical address maps. 73 * Manages physical address maps.
74 * 74 *
75 * In addition to hardware address maps, this 75 * In addition to hardware address maps, this
76 * module is called upon to provide software-use-only 76 * module is called upon to provide software-use-only
77 * maps which may or may not be stored in the same 77 * maps which may or may not be stored in the same
78 * form as hardware maps. These pseudo-maps are 78 * form as hardware maps. These pseudo-maps are
79 * used to store intermediate results from copy 79 * used to store intermediate results from copy
80 * operations to and from address spaces. 80 * operations to and from address spaces.
81 * 81 *
82 * Since the information managed by this module is 82 * Since the information managed by this module is
83 * also stored by the logical address mapping module, 83 * also stored by the logical address mapping module,
@@ -545,32 +545,32 @@ pmap_bootstrap(void) @@ -545,32 +545,32 @@ pmap_bootstrap(void)
545 545
546 /* 546 /*
547 * Initialize `FYI' variables. Note we're relying on 547 * Initialize `FYI' variables. Note we're relying on
548 * the fact that BSEARCH sorts the vm_physmem[] array 548 * the fact that BSEARCH sorts the vm_physmem[] array
549 * for us. Must do this before uvm_pageboot_alloc() 549 * for us. Must do this before uvm_pageboot_alloc()
550 * can be called. 550 * can be called.
551 */ 551 */
552 mips_avail_start = ptoa(VM_PHYSMEM_PTR(0)->start); 552 mips_avail_start = ptoa(VM_PHYSMEM_PTR(0)->start);
553 mips_avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end); 553 mips_avail_end = ptoa(VM_PHYSMEM_PTR(vm_nphysseg - 1)->end);
554 mips_virtual_end = VM_MIN_KERNEL_ADDRESS + (vaddr_t)Sysmapsize * NBPG; 554 mips_virtual_end = VM_MIN_KERNEL_ADDRESS + (vaddr_t)Sysmapsize * NBPG;
555 555
556#ifndef _LP64 556#ifndef _LP64
557 /* Need space for I/O (not in K1SEG) ? */ 557 /* Need space for I/O (not in K1SEG) ? */
558 mips_virtual_end += iospace_size; 
559 558
560 if (mips_virtual_end > VM_MAX_KERNEL_ADDRESS) { 559 if (mips_virtual_end > VM_MAX_KERNEL_ADDRESS) {
561 mips_virtual_end = VM_MAX_KERNEL_ADDRESS; 560 mips_virtual_end = VM_MAX_KERNEL_ADDRESS;
562 Sysmapsize = 561 Sysmapsize =
563 (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / NBPG; 562 (VM_MAX_KERNEL_ADDRESS -
 563 (VM_MIN_KERNEL_ADDRESS + iospace_size)) / NBPG;
564 } 564 }
565 565
566 if (iospace_size) { 566 if (iospace_size) {
567 iospace = mips_virtual_end - iospace_size; 567 iospace = mips_virtual_end - iospace_size;
568#ifdef DEBUG 568#ifdef DEBUG
569 printf("io: %#"PRIxVADDR".%#"PRIxVADDR" %#"PRIxVADDR"\n", 569 printf("io: %#"PRIxVADDR".%#"PRIxVADDR" %#"PRIxVADDR"\n",
570 iospace, iospace_size, mips_virtual_end); 570 iospace, iospace_size, mips_virtual_end);
571#endif 571#endif
572 } 572 }
573#endif 573#endif
574 pmap_pvlist_lock_init(); 574 pmap_pvlist_lock_init();
575 575
576 /* 576 /*