Port-amiga archive

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

Re: Big Amiga panic: (most of) real solution found



This is version 2 of the patch.
Apply to clean tree, from /sys/arch, then re-config and make.
PLEASE TEST THIS IF YOU HAD THE "can't get KPT page" PANIC, and report.

        Ignatios

Index: amiga/conf/GENERIC
===================================================================
RCS file: /cvsroot/src/sys/arch/amiga/conf/GENERIC,v
retrieving revision 1.100
diff -u -r1.100 GENERIC
--- GENERIC     1998/02/17 19:42:38     1.100
+++ GENERIC     1998/02/19 23:41:51
@@ -119,9 +119,15 @@
 #
 # Amiga specific options
 #
-options        LIMITMEM=24     # dont use more than LIMITMEM MB of RAM.
+#options       LIMITMEM=24     # dont use more than LIMITMEM MB of RAM.
                                # remove this line to use more than 24 MB, and
                                # increase NKMEMCLUSTERS
+#options       NKPTADD=4       # set this for 4 additional KPT pages
+#options       NKPTADDSHIFT=24 # set this for 1 additional KPT page
+                               # per 16 MB (1<<24 bytes) of RAM
+                                # define and decrease this, or define and
+                                # increase NKPTADD if you get "out of PT pages"
+                                # panics.
 
 options        MACHINE_NONCONTIG # Non-contiguous memory support
 # ATTENTION: There is NO WARRANTY AT ALL that the sync will be complete
Index: amiga/conf/DRACO
===================================================================
RCS file: /cvsroot/src/sys/arch/amiga/conf/DRACO,v
retrieving revision 1.21
diff -u -r1.21 DRACO
--- DRACO       1998/02/05 20:07:17     1.21
+++ DRACO       1998/02/19 23:41:54
@@ -97,6 +97,16 @@
 #
 # Amiga specific options
 #
+#options        LIMITMEM=24     # dont use more than LIMITMEM MB of RAM.
+                                # remove this line to use more than 24 MB, and
+                               # increase NKMEMCLUSTERS
+#options        NKPTADD=4       # set this for 4 additional KPT pages
+#options        NKPTADDSHIFT=24 # set this for 1 additional KPT page
+                               # per 16 MB (1<<24 bytes) of RAM (default)
+                               # define and decrease this, or define and
+                               # increase NKPTADD if you get "out of PT pages"
+                               # panics.
+
 options        MACHINE_NONCONTIG # Non-contiguous memory support 
                                  # higly recommended for DraCo
 
Index: amiga/amiga/pmap.c
===================================================================
RCS file: /cvsroot/src/sys/arch/amiga/amiga/pmap.c,v
retrieving revision 1.44
diff -u -r1.44 pmap.c
--- pmap.c      1998/01/22 23:13:40     1.44
+++ pmap.c      1998/02/19 23:42:13
@@ -554,7 +554,24 @@
         * plus some slop.
         */
        npg = howmany(((maxproc + 16) * AMIGA_UPTSIZE / NPTEPG), NBPG);
-       npg = min(atop(AMIGA_MAX_KPTSIZE), npg);
+       /*
+        * One page of KPT allows for 16 MB of virtual buffer cache.
+        * A GENERIC kernel allocates this for 2 MB of real buffer cache,
+        * which in turn is allocated for 38 MB of RAM.
+        */
+#ifdef NKPTADD
+       npg += NKPTADD;
+#else
+#ifdef NKPTADDSHIFT
+       npg += mem_size >> NKPTADDSHIFT;
+#else
+       npg += mem_size >> 24;
+#endif
+#endif
+#if 1/*def DEBUG*/
+       printf("Maxproc %d, mem_size %ld MB: allocating %ld KPT pages\n",
+           maxproc, mem_size>>20, npg);
+#endif
        s = ptoa(npg) + round_page(npg * sizeof(struct kpt_page));
 
        /*



Home | Main Index | Thread Index | Old Index