linux-mips
[Top] [All Lists]

Re: [PATCH] cheat for support of more than 256MB memory

To: Tian <tiansm@lemote.com>
Subject: Re: [PATCH] cheat for support of more than 256MB memory
From: Tian <tiansm@lemote.com>
Date: Fri, 08 Jun 2007 15:52:35 +0800
Cc: Ralf Baechle <ralf@linux-mips.org>, Franck Bui-Huu <vagabon.xyz@gmail.com>, linux-mips@linux-mips.org, Fuxin Zhang <zhangfx@lemote.com>
In-reply-to: <4668DF7A.6040807@lemote.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <11811049622818-git-send-email-tiansm@lemote.com> <11811049643791-git-send-email-tiansm@lemote.com> <cda58cb80706052338y461f707fq790e204f55a23cc0@mail.gmail.com> <20070606164018.GA30017@linux-mips.org> <4668DF7A.6040807@lemote.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Icedove 1.5.0.8 (X11/20061116)
Tian wrote:
Ralf Baechle wrote:
On Wed, Jun 06, 2007 at 08:38:18AM +0200, Franck Bui-Huu wrote:

diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index 4975da0..62ef100 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -509,6 +509,14 @@ static void __init resource_init(void)
               res->end = end;

               res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
+#if defined(CONFIG_LEMOTE_FULONG) && defined(CONFIG_64BIT)
+ /* to keep memory continous, we tell system 0x10000000 - 0x20000000 is reserved + * for memory, in fact it is io region, don't occupy it
+                *
+                * SPARSEMEM?
Definetly yes ! It has been designed for such issue and it should save
you some memory.

A hole of 256MB size in the memory address map will cost 3.5MB with a 64-bit
kernel.  The other reason why I don't like this patch is that it drags
platform specific code into the generic MIPS code.

  Ralf


we use 16k page,so it's cheaper than that:)

Before I work out sparse memory solution, I think I can drop this patch and make some trivial fix of the first patch.

Subject: [PATCH] simply ignore the memory hole

Signed-off-by: Songmao Tian <tiansm@lemote.com>
---
arch/mips/lemote/lm2e/setup.c |    1 -
1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/arch/mips/lemote/lm2e/setup.c b/arch/mips/lemote/lm2e/setup.c
index 3030518..2498bbf 100644
--- a/arch/mips/lemote/lm2e/setup.c
+++ b/arch/mips/lemote/lm2e/setup.c
@@ -112,7 +112,6 @@ void __init plat_mem_setup(void)
    add_memory_region(0x0, (memsize << 20), BOOT_MEM_RAM);
#ifdef CONFIG_64BIT
    if (highmemsize > 0) {
-        add_memory_region(0x10000000, 0x10000000, BOOT_MEM_RESERVED);
        add_memory_region(0x20000000, highmemsize << 20, BOOT_MEM_RAM);
    }
#endif



It seems it's no need to modify code, just config to use
sparse memory will be ok, paging_init can handle the
non-flat-memory situatioins, and i notify the pages drop down as expected.


Subject: [PATCH] use SPARSEMEM to deal with the memory hole of peripheral IO

Signed-off-by: Songmao Tian <tiansm@lemote.com>
---
arch/mips/Kconfig                  |    1 +
arch/mips/configs/fulong_defconfig |   13 +++++++------
2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 16f1861..376cbd6 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -957,6 +957,7 @@ config CPU_LOONGSON2
    depends on SYS_HAS_CPU_LOONGSON2
    select CPU_SUPPORTS_32BIT_KERNEL
    select CPU_SUPPORTS_64BIT_KERNEL
+    select ARCH_SPARSEMEM_ENABLE
    select CPU_SUPPORTS_HIGHMEM

config CPU_MIPS32_R1
diff --git a/arch/mips/configs/fulong_defconfig b/arch/mips/configs/fulong_defconfig
index cd6563a..92d9772 100644
--- a/arch/mips/configs/fulong_defconfig
+++ b/arch/mips/configs/fulong_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.22-rc3
-# Wed Jun  6 11:42:13 2007
+# Fri Jun  8 15:09:24 2007
#
CONFIG_MIPS=y

@@ -118,13 +118,14 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_SYS_SUPPORTS_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
+# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0

<Prev in Thread] Current Thread [Next in Thread>