Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/mvme68k/mvme68k Move physmem calculations before np...



details:   https://anonhg.NetBSD.org/src/rev/d44fbcacb1a6
branches:  trunk
changeset: 790107:d44fbcacb1a6
user:      tsutsui <tsutsui%NetBSD.org@localhost>
date:      Thu Sep 19 12:04:36 2013 +0000

description:
Move physmem calculations before nptpage initialization.

Fixes mvme68k specific part of PR port-m68k/45915
(panic: pmap_enter_ptpage: can't get KPT page).
Reported and confirmed by Andrew Gillham on his MVME177:
http://mail-index.NetBSD.org/port-mvme68k/2013/09/17/msg000082.html

Should be pulled up to all netbsd-6 branches.

diffstat:

 sys/arch/mvme68k/mvme68k/pmap_bootstrap.c |  76 +++++++++++++++---------------
 1 files changed, 38 insertions(+), 38 deletions(-)

diffs (104 lines):

diff -r 08bb10c415a6 -r d44fbcacb1a6 sys/arch/mvme68k/mvme68k/pmap_bootstrap.c
--- a/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c Thu Sep 19 01:49:07 2013 +0000
+++ b/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c Thu Sep 19 12:04:36 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pmap_bootstrap.c,v 1.51 2012/02/10 06:28:39 mhitch Exp $       */
+/*     $NetBSD: pmap_bootstrap.c,v 1.52 2013/09/19 12:04:36 tsutsui Exp $      */
 
 /* 
  * Copyright (c) 1991, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.51 2012/02/10 06:28:39 mhitch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.52 2013/09/19 12:04:36 tsutsui Exp $");
 
 #include "opt_m68k_arch.h"
 
@@ -100,6 +100,42 @@
 #endif
 
        /*
+        * Initialize the mem_clusters[] array for the crash dump
+        * code.  While we're at it, compute the total amount of
+        * physical memory in the system.
+        */
+       for (i = 0; i < VM_PHYSSEG_MAX; i++) {
+               if (RELOC(phys_seg_list[i].ps_start, paddr_t) ==
+                   RELOC(phys_seg_list[i].ps_end, paddr_t)) {
+                       /*
+                        * No more memory.
+                        */
+                       break;
+               }
+
+               /*
+                * Make sure these are properly rounded.
+                */
+               RELOC(phys_seg_list[i].ps_start, paddr_t) =
+                   m68k_round_page(RELOC(phys_seg_list[i].ps_start,
+                                         paddr_t));
+               RELOC(phys_seg_list[i].ps_end, paddr_t) =
+                   m68k_trunc_page(RELOC(phys_seg_list[i].ps_end,
+                                         paddr_t));
+
+               size = RELOC(phys_seg_list[i].ps_end, paddr_t) -
+                   RELOC(phys_seg_list[i].ps_start, paddr_t);
+
+               RELOC(mem_clusters[i].start, u_quad_t) =
+                   RELOC(phys_seg_list[i].ps_start, paddr_t);
+               RELOC(mem_clusters[i].size, u_quad_t) = size;
+
+               RELOC(physmem, int) += size >> PGSHIFT;
+
+               RELOC(mem_cluster_cnt, int) += 1;
+       }
+
+       /*
         * Calculate important physical addresses:
         *
         *      lwp0upa         lwp0 u-area             UPAGES pages
@@ -409,42 +445,6 @@
        RELOC(lwp0uarea, vaddr_t) = lwp0upa - firstpa;
 
        /*
-        * Initialize the mem_clusters[] array for the crash dump
-        * code.  While we're at it, compute the total amount of
-        * physical memory in the system.
-        */
-       for (i = 0; i < VM_PHYSSEG_MAX; i++) {
-               if (RELOC(phys_seg_list[i].ps_start, paddr_t) ==
-                   RELOC(phys_seg_list[i].ps_end, paddr_t)) {
-                       /*
-                        * No more memory.
-                        */
-                       break;
-               }
-
-               /*
-                * Make sure these are properly rounded.
-                */
-               RELOC(phys_seg_list[i].ps_start, paddr_t) =
-                   m68k_round_page(RELOC(phys_seg_list[i].ps_start,
-                                         paddr_t));
-               RELOC(phys_seg_list[i].ps_end, paddr_t) =
-                   m68k_trunc_page(RELOC(phys_seg_list[i].ps_end,
-                                         paddr_t));
-
-               size = RELOC(phys_seg_list[i].ps_end, paddr_t) -
-                   RELOC(phys_seg_list[i].ps_start, paddr_t);
-
-               RELOC(mem_clusters[i].start, u_quad_t) =
-                   RELOC(phys_seg_list[i].ps_start, paddr_t);
-               RELOC(mem_clusters[i].size, u_quad_t) = size;
-
-               RELOC(physmem, int) += size >> PGSHIFT;
-
-               RELOC(mem_cluster_cnt, int) += 1;
-       }
-
-       /*
         * Scoot the start of available on-board RAM forward to
         * account for:
         *



Home | Main Index | Thread Index | Old Index