Port-m68k archive

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

Re: Address space limit?



> I've been told that this might be an issue with the m68k pmap code
> allocating only one page for the page table, and assuming the page
> table is contiguous. Any suggestions on a workaround?

One trivial workaround is to use 8KB/page settings:

Index: include/param.h
===================================================================
RCS file: /cvsroot/src/sys/arch/hp300/include/param.h,v
retrieving revision 1.53
diff -u -p -d -r1.53 param.h
--- include/param.h	10 Feb 2012 17:35:49 -0000	1.53
+++ include/param.h	10 Jan 2019 15:46:06 -0000
@@ -47,7 +47,7 @@
 #define	_MACHINE	hp300
 #define	MACHINE		"hp300"
 
-#define	PGSHIFT		12		/* LOG2(NBPG) */
+#define	PGSHIFT		13		/* LOG2(NBPG) */
 #define	KERNBASE	0x00000000	/* start of kernel virtual */
 
 #define	UPAGES		2		/* pages of u-area */


---

This will allow 960 MB VA space, instead of 224 MB.


Details:

Note this m68k pmap restriction is affected only for 68040/060 machines.
src/sys/arch/m68k/include/pmap_motorola.h says:
---
 * MMU specific segment values
 *
 * We are using following segment layout in m68k pmap_motorola.c:
 * 68020/030 4KB/page: l1,l2,page    == 10,10,12	(%tc = 0x82c0aa00)
 * 68020/030 8KB/page: l1,l2,page    ==  8,11,13	(%tc = 0x82d08b00)
 * 68040/060 4KB/page: l1,l2,l3,page == 7,7,6,12	(%tc = 0x8000)
 * 68040/060 8KB/page: l1,l2,l3,page == 7,7,5,13	(%tc = 0xc000)
 *
 * 68020/030 l2 size is chosen per NPTEPG, a number of page table entries
 * per page, to use one whole page for PTEs per one segment table entry,
 * and maybe also because 68020 HP MMU machines use simlar structures.
 *
 * 68040/060 layout is defined by hardware design and not configurable,
 * as defined in <m68k/pte_motorola.h>.
 *
 * Even on 68040/060, we still appropriate 2-level ste-pte pmap structures
 * for 68020/030 (derived from 4.4BSD/hp300) to handle 040's 3-level MMU.
 * TIA_SIZE and TIB_SIZE are used to represent such pmap structures and
 * they are also refered on 040/060.
---

On 4KB/page settings:
- l1 page is allocated at the first 512 bytes of the L1 page
  of the 2-level ste-pte pmap stractures
- l2 page is allocated at the rest (4096 - 512) bytes of the L1 page

Only 7 l2 are allocated and they have 896 (== (512 / 4) * 7) entries.
Then VA space is limited upto 224 MB (== 896 * (256(l3) / 4) * 4096).

On 8KB/page settings:
- l1 page is allocated at the first 512 bytes of the L1 page
  of the 2-level ste-pte pmap stractures
- l2 page is allocated at the rest (8192 - 512) bytes of the L1 page

This allow 15 l2 and they have 1920 (== (512 / 4) * 15) entries.
Then VA space limit is upto 960 MB (== 1920 * 256(l3) / 4) * 8192).

This is the longstanding issue of NetBSD/m68k pmap,
but currently less activities, unfortunately.

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index