lkml.org 
[lkml]   [2006]   [Jan]   [10]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateTue, 10 Jan 2006 12:07:14 -0500
FromMark Lord <>
SubjectRe: 2G memory split
So, the patch would now look like this:


diff -u --recursive --new-file --exclude='.*' linux-2.6.15/arch/i386/Kconfig linux/arch/i386/Kconfig
--- linux-2.6.15/arch/i386/Kconfig	2006-01-02 22:21:10.000000000 -0500
+++ linux/arch/i386/Kconfig	2006-01-10 12:02:40.000000000 -0500
@@ -448,6 +448,43 @@

  endchoice

+choice
+	depends on EXPERIMENTAL
+	prompt "Memory split"
+	default VMSPLIT_3G
+	help
+	  Select the desired split between kernel and user memory.
+
+	  If the address range available to the kernel is less than the
+	  physical memory installed, the remaining memory will be available
+	  as "high memory". Accessing high memory is a little more costly
+	  than low memory, as it needs to be mapped into the kernel first.
+	  Note that increasing the kernel address space limits the range
+	  available to user programs, making the address space there
+	  tighter.  Selecting anything other than the default 3G/1G split
+	  will also likely make your kernel incompatible with binary-only
+	  kernel modules.
+
+	  If you are not absolutely sure what you are doing, leave this
+	  option alone!
+
+	config VMSPLIT_3G
+		bool "3G/1G user/kernel split"
+	config VMSPLIT_3G_OPT
+		bool "3G/1G user/kernel split (for full 1G low memory)"
+	config VMSPLIT_2G
+		bool "2G/2G user/kernel split"
+	config VMSPLIT_1G
+		bool "1G/3G user/kernel split"
+endchoice
+
+config PAGE_OFFSET
+	hex
+	default 0xC0000000
+	default 0xB0000000 if VMSPLIT_3G_OPT
+	default 0x78000000 if VMSPLIT_2G
+	default 0x40000000 if VMSPLIT_1G
+
  config HIGHMEM
  	bool
  	depends on HIGHMEM64G || HIGHMEM4G
diff -u --recursive --new-file --exclude='.*' linux-2.6.15/arch/i386/mm/init.c linux/arch/i386/mm/init.c
--- linux-2.6.15/arch/i386/mm/init.c	2006-01-02 22:21:10.000000000 -0500
+++ linux/arch/i386/mm/init.c	2006-01-10 12:06:10.000000000 -0500
@@ -597,6 +597,12 @@
  	high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1;
  #endif

+#if !defined(CONFIG_VMSPLIT_3G)
+	/* if the user has less than 960MB of RAM, he should use the default */
+	if (max_low_pfn < (960 * 1024 * 1024 / PAGE_SIZE))
+		printk(KERN_INFO "Memory: less than 960MiB of RAM, you should use the default memory split setting\n");
+#endif
+
  	/* this will put all low memory onto the freelists */
  	totalram_pages += free_all_bootmem();

diff -u --recursive --new-file --exclude='.*' linux-2.6.15/include/asm-i386/page.h linux/include/asm-i386/page.h
--- linux-2.6.15/include/asm-i386/page.h	2006-01-02 22:21:10.000000000 -0500
+++ linux/include/asm-i386/page.h	2006-01-10 12:04:56.000000000 -0500
@@ -110,10 +110,10 @@
  #endif /* __ASSEMBLY__ */

  #ifdef __ASSEMBLY__
-#define __PAGE_OFFSET		(0xC0000000)
+#define __PAGE_OFFSET		CONFIG_PAGE_OFFSET
  #define __PHYSICAL_START	CONFIG_PHYSICAL_START
  #else
-#define __PAGE_OFFSET		(0xC0000000UL)
+#define __PAGE_OFFSET		((unsigned long)CONFIG_PAGE_OFFSET)
  #define __PHYSICAL_START	((unsigned long)CONFIG_PHYSICAL_START)
  #endif
  #define __KERNEL_START		(__PAGE_OFFSET + __PHYSICAL_START)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2006-01-10 18:09    [from the cache]
©2003-2008