89 messages in org.kernel.vger.linux-kernel[PATCH] Re: 2G memory split
FromSent OnAttachments
Jens AxboeJan 10, 2006 4:58 am 
Ingo MolnarJan 10, 2006 5:29 am 
Jens AxboeJan 10, 2006 5:37 am 
Byron StanoszekJan 10, 2006 5:43 am 
Jens AxboeJan 10, 2006 5:47 am 
Mikael PetterssonJan 10, 2006 5:47 am 
Jens AxboeJan 10, 2006 5:53 am 
Gerd HoffmannJan 10, 2006 6:09 am 
Mark LordJan 10, 2006 6:11 am 
Jens AxboeJan 10, 2006 6:21 am 
Jens AxboeJan 10, 2006 6:22 am 
Jens AxboeJan 10, 2006 6:25 am 
Jens AxboeJan 10, 2006 6:39 am 
Ingo MolnarJan 10, 2006 6:43 am 
Jens AxboeJan 10, 2006 7:03 am 
Mark LordJan 10, 2006 7:11 am.patch
Mikael PetterssonJan 10, 2006 7:23 am 
Linus TorvaldsJan 10, 2006 8:14 am 
Jeff V. MerkeyJan 10, 2006 8:30 am.patch, .patch
Mark LordJan 10, 2006 8:39 am 
Linus TorvaldsJan 10, 2006 8:52 am 
Jeff V. MerkeyJan 10, 2006 8:56 am 
Jeff V. MerkeyJan 10, 2006 9:00 am 
Mark LordJan 10, 2006 9:06 am 
Sergey VlasovJan 10, 2006 9:07 am 
Jeff V. MerkeyJan 10, 2006 9:13 am 
Jeff V. MerkeyJan 10, 2006 9:17 am 
Linus TorvaldsJan 10, 2006 9:28 am 
Jens AxboeJan 10, 2006 9:32 am 
Jeff V. MerkeyJan 10, 2006 9:36 am 
Mark LordJan 10, 2006 9:36 am 
Bernd EckenfelsJan 10, 2006 9:48 am 
Martin BlighJan 10, 2006 10:14 am 
Coywolf Qi HuntJan 10, 2006 10:27 am 
Coywolf Qi HuntJan 10, 2006 10:32 am 
Linus TorvaldsJan 10, 2006 10:34 am 
Martin BlighJan 10, 2006 10:39 am 
Mark LordJan 10, 2006 10:45 am 
Martin BlighJan 10, 2006 10:46 am 
Lennart SorensenJan 10, 2006 10:50 am 
Dave HansenJan 10, 2006 10:54 am 
Mark LordJan 10, 2006 10:57 am 
Jens AxboeJan 10, 2006 10:57 am 
Mark LordJan 10, 2006 11:01 am 
Dave HansenJan 10, 2006 11:04 am 
Jeff V. MerkeyJan 10, 2006 11:12 am 
Mark LordJan 10, 2006 11:15 am 
Jens AxboeJan 10, 2006 11:26 am 
Jeff V. MerkeyJan 10, 2006 11:30 am 
Jens AxboeJan 10, 2006 11:41 am 
Bernd EckenfelsJan 10, 2006 12:17 pm 
Jens AxboeJan 10, 2006 12:27 pm 
Jan EngelhardtJan 10, 2006 12:42 pm 
Alan CoxJan 10, 2006 12:54 pm 
Jens AxboeJan 10, 2006 1:02 pm 
Con KolivasJan 10, 2006 4:25 pm 
J.A. MagallonJan 10, 2006 5:12 pm 
Bernd EckenfelsJan 11, 2006 12:39 am 
Jens AxboeJan 11, 2006 2:05 am 
Jens AxboeJan 11, 2006 2:15 am 
Greg NorrisJan 11, 2006 8:00 am 
Mark LordJan 11, 2006 9:12 am 
Greg NorrisJan 11, 2006 9:44 am 
Herbert PoetzlFeb 1, 2006 2:22 pm 
Ulrich MuellerFeb 2, 2006 3:03 am 
Jan EngelhardtFeb 2, 2006 12:55 pm 
Mark LordFeb 3, 2006 2:38 pm 
Ulrich MuellerFeb 4, 2006 2:22 am 
Jens AxboeFeb 4, 2006 2:35 am 
Jan EngelhardtFeb 4, 2006 3:04 am 
Jan EngelhardtFeb 4, 2006 3:05 am 
Mark LordFeb 4, 2006 5:57 am 
J.A. MagallonFeb 5, 2006 7:32 am 
Arjan van de VenFeb 5, 2006 7:38 am 
Barry K. NathanFeb 5, 2006 10:41 am 
Bodo EggertFeb 5, 2006 12:20 pm 
Jan EngelhardtFeb 5, 2006 1:13 pm 
Arjan van de VenFeb 5, 2006 1:18 pm 
Jeff DikeFeb 5, 2006 2:12 pm 
Jan EngelhardtFeb 6, 2006 6:56 am 
Herbert PoetzlFeb 6, 2006 4:41 pm 
Mark RustadFeb 6, 2006 6:50 pm 
Bernd PetrovitschFeb 7, 2006 1:37 am 
Adrian BunkFeb 7, 2006 4:19 am 
Ulrich MuellerFeb 7, 2006 6:05 am 
Adrian BunkFeb 7, 2006 6:42 am 
Jan EngelhardtFeb 9, 2006 8:06 am 
Kirill KorotaevApr 10, 2006 7:10 am 
Mark LordApr 10, 2006 7:39 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[PATCH] Re: 2G memory splitActions...
From:Jeff V. Merkey (jmer@wolfmountaingroup.com)
Date:Jan 10, 2006 8:30:35 am
List:org.kernel.vger.linux-kernel
Attachments:

Bernd Eckenfels wrote:

Here are the patches I use for the splitting. They work well. The methods employed in Red Hat ES are far better and I am surprised no one has simply integrated those patches into the kernel which are 4GB / 4GB kernel/user.

Jeff

Mark Lord <lk@rtr.ca> wrote:

So, the patch would now look like this:

can we please state something what the 3G_OPT is suppsoed to do? Is this
"optimzed for 1GB Real RAM"? Should this be something like "2.5G" instead?

+ config VMSPLIT_3G_OPT + bool "3G/1G user/kernel split (for full 1G low memory)"

+ default 0xC0000000 + default 0xB0000000 if VMSPLIT_3G_OPT + default 0x78000000 if VMSPLIT_2G + default 0x40000000 if VMSPLIT_1G

diff -Naur ./arch/i386/Kconfig ../linux-2.6.10-ds/./arch/i386/Kconfig --- ./arch/i386/Kconfig 2004-12-24 14:34:01.000000000 -0700 +++ ../linux-2.6.10-ds/./arch/i386/Kconfig 2005-01-18 11:43:27.096386256 -0700 @@ -730,6 +730,25 @@ depends on HIGHMEM64G default y

+choice + prompt "User address space size" + +config USER_3GB + depends on X86 + bool "3GB User Address Space" + default y if (X86) + +config USER_2GB + depends on X86 + bool "2GB User Address Space" + +config USER_1GB + depends on X86 + bool "1GB User Address Space" + +endchoice + + # Common NUMA Features config NUMA bool "Numa Memory Allocation and Scheduler Support" diff -Naur ./include/asm-generic/page_offset.h
../linux-2.6.10-ds/./include/asm-generic/page_offset.h --- ./include/asm-generic/page_offset.h 1969-12-31 17:00:00.000000000 -0700 +++ ../linux-2.6.10-ds/./include/asm-generic/page_offset.h 2005-01-18
11:43:27.000000000 -0700 @@ -0,0 +1,24 @@ + +#include <linux/config.h> + +#ifdef __ASSEMBLY__ + +#if defined(CONFIG_USER_1GB) +#define PAGE_OFFSET_RAW 0x40000000 +#elif defined(CONFIG_USER_2GB) +#define PAGE_OFFSET_RAW 0x80000000 +#elif defined(CONFIG_USER_3GB) +#define PAGE_OFFSET_RAW 0xC0000000 +#endif + +#else + +#if defined(CONFIG_USER_1GB) +#define PAGE_OFFSET_RAW 0x40000000UL +#elif defined(CONFIG_USER_2GB) +#define PAGE_OFFSET_RAW 0x80000000UL +#elif defined(CONFIG_USER_3GB) +#define PAGE_OFFSET_RAW 0xC0000000UL +#endif + +#endif diff -Naur ./include/asm-generic/vmlinux.lds.h
../linux-2.6.10-ds/./include/asm-generic/vmlinux.lds.h --- ./include/asm-generic/vmlinux.lds.h 2004-12-24 14:33:50.000000000 -0700 +++ ../linux-2.6.10-ds/./include/asm-generic/vmlinux.lds.h 2005-01-18
11:43:27.000000000 -0700 @@ -1,3 +1,6 @@ + +#include <asm-generic/page_offset.h> + #ifndef LOAD_OFFSET #define LOAD_OFFSET 0 #endif diff -Naur ./include/asm-i386/page.h
../linux-2.6.10-ds/./include/asm-i386/page.h --- ./include/asm-i386/page.h 2004-12-24 14:34:01.000000000 -0700 +++ ../linux-2.6.10-ds/./include/asm-i386/page.h 2005-01-18 11:43:27.000000000
-0700 @@ -121,9 +121,11 @@ #endif /* __ASSEMBLY__ */

#ifdef __ASSEMBLY__ -#define __PAGE_OFFSET (0xC0000000) +#include <asm-generic/page_offset.h> +#define __PAGE_OFFSET (PAGE_OFFSET_RAW) #else -#define __PAGE_OFFSET (0xC0000000UL) +#include <asm-generic/page_offset.h> +#define __PAGE_OFFSET (PAGE_OFFSET_RAW) #endif

diff -Naur ./mem.err ../linux-2.6.10-ds/./mem.err --- ./mem.err 1969-12-31 17:00:00.000000000 -0700 +++ ../linux-2.6.10-ds/./mem.err 2005-01-18 11:43:27.000000000 -0700 @@ -0,0 +1,7 @@ +patching file arch/i386/Kconfig +Hunk #1 succeeded at 730 (offset 6 lines). +patching file include/asm-generic/page_offset.h +patching file include/asm-generic/vmlinux.lds.h +patching file include/asm-i386/page.h +patching file mm/memory.c +Hunk #1 succeeded at 120 (offset 1 line). diff -Naur ./mm/memory.c ../linux-2.6.10-ds/./mm/memory.c --- ./mm/memory.c 2005-01-18 11:25:26.000000000 -0700 +++ ../linux-2.6.10-ds/./mm/memory.c 2005-01-18 11:43:27.000000000 -0700 @@ -120,8 +120,7 @@

static inline void free_one_pgd(struct mmu_gather *tlb, pgd_t * dir) { - int j; - pmd_t * pmd; + pmd_t *pmd, *md, *emd;

if (pgd_none(*dir)) return; @@ -132,8 +131,8 @@ } pmd = pmd_offset(dir, 0); pgd_clear(dir); - for (j = 0; j < PTRS_PER_PMD ; j++) - free_one_pmd(tlb, pmd+j); + for (md = pmd, emd = pmd + PTRS_PER_PMD; md < emd; md++) + free_one_pmd(tlb, md); pmd_free_tlb(tlb, pmd); }

diff -Naur ./arch/i386/Kconfig ../linux-2.6.9-mdb/./arch/i386/Kconfig --- ./arch/i386/Kconfig 2004-10-18 15:53:22.000000000 -0600 +++ ../linux-2.6.9-mdb/./arch/i386/Kconfig 2004-10-18 11:52:51.529009552 -0600 @@ -724,6 +724,25 @@ depends on HIGHMEM64G default y

+choice + prompt "User address space size" + +config USER_3GB + depends on X86 + bool "3GB User Address Space" + default y if (X86) + +config USER_2GB + depends on X86 + bool "2GB User Address Space" + +config USER_1GB + depends on X86 + bool "1GB User Address Space" + +endchoice + + # Common NUMA Features config NUMA bool "Numa Memory Allocation and Scheduler Support" diff -Naur ./include/asm-generic/page_offset.h
../linux-2.6.9-mdb/./include/asm-generic/page_offset.h --- ./include/asm-generic/page_offset.h 1969-12-31 17:00:00.000000000 -0700 +++ ../linux-2.6.9-mdb/./include/asm-generic/page_offset.h 2004-10-18
11:52:51.530009400 -0600 @@ -0,0 +1,24 @@ + +#include <linux/config.h> + +#ifdef __ASSEMBLY__ + +#if defined(CONFIG_USER_1GB) +#define PAGE_OFFSET_RAW 0x40000000 +#elif defined(CONFIG_USER_2GB) +#define PAGE_OFFSET_RAW 0x80000000 +#elif defined(CONFIG_USER_3GB) +#define PAGE_OFFSET_RAW 0xC0000000 +#endif + +#else + +#if defined(CONFIG_USER_1GB) +#define PAGE_OFFSET_RAW 0x40000000UL +#elif defined(CONFIG_USER_2GB) +#define PAGE_OFFSET_RAW 0x80000000UL +#elif defined(CONFIG_USER_3GB) +#define PAGE_OFFSET_RAW 0xC0000000UL +#endif + +#endif diff -Naur ./include/asm-generic/vmlinux.lds.h
../linux-2.6.9-mdb/./include/asm-generic/vmlinux.lds.h --- ./include/asm-generic/vmlinux.lds.h 2004-10-18 15:53:08.000000000 -0600 +++ ../linux-2.6.9-mdb/./include/asm-generic/vmlinux.lds.h 2004-10-18
11:52:51.545007120 -0600 @@ -1,3 +1,6 @@ + +#include <asm-generic/page_offset.h> + #ifndef LOAD_OFFSET #define LOAD_OFFSET 0 #endif diff -Naur ./include/asm-i386/page.h
../linux-2.6.9-mdb/./include/asm-i386/page.h --- ./include/asm-i386/page.h 2004-10-18 15:53:22.000000000 -0600 +++ ../linux-2.6.9-mdb/./include/asm-i386/page.h 2004-10-18 11:52:51.545007120
-0600 @@ -121,9 +121,11 @@ #endif /* __ASSEMBLY__ */

#ifdef __ASSEMBLY__ -#define __PAGE_OFFSET (0xC0000000) +#include <asm-generic/page_offset.h> +#define __PAGE_OFFSET (PAGE_OFFSET_RAW) #else -#define __PAGE_OFFSET (0xC0000000UL) +#include <asm-generic/page_offset.h> +#define __PAGE_OFFSET (PAGE_OFFSET_RAW) #endif

diff -Naur ./mm/memory.c ../linux-2.6.9-mdb/./mm/memory.c --- ./mm/memory.c 2004-10-18 11:46:59.000000000 -0600 +++ ../linux-2.6.9-mdb/./mm/memory.c 2004-10-18 11:52:51.547006816 -0600 @@ -119,8 +119,7 @@

static inline void free_one_pgd(struct mmu_gather *tlb, pgd_t * dir) { - int j; - pmd_t * pmd; + pmd_t *pmd, *md, *emd;

if (pgd_none(*dir)) return; @@ -131,8 +130,8 @@ } pmd = pmd_offset(dir, 0); pgd_clear(dir); - for (j = 0; j < PTRS_PER_PMD ; j++) - free_one_pmd(tlb, pmd+j); + for (md = pmd, emd = pmd + PTRS_PER_PMD; md < emd; md++) + free_one_pmd(tlb, md); pmd_free_tlb(tlb, pmd); }