On Thu, 2009-10-08 at 22:44 +0200, Ralf Baechle wrote:
> On Thu, Oct 08, 2009 at 10:21:12PM +0200, Rafael J. Wysocki wrote:
>
> > > Here, we fix it via checking pfn is in the "System RAM" or not. and
> > > Seems pfn_valid() is not called in assembly code, we move it to
> > > "!__ASSEMBLY__" to ensure we can simply declare it via "extern int
> > > pfn_valid(unsigned long)" without Compiling Error.
> > >
> > > (This -v1 version incorporates feedback from Pavel Machek <pavel@ucw.cz>
> > > and Sergei Shtylyov <sshtylyov@ru.mvista.com>)
> >
> > Hmm. What exactly would be wrong with using register_nosave_region() or
> > register_nosave_region_late() like x86 does?
Have tried to use register_nosave_region(), it works, but seems there is
something else wrong there.
>
> That seems to be more the fix than pfn_valid / PageReserved fiddlery we were
> discussing in the other thread. Thanks!
Just checked the arch/mips/loongson/common/mem.c, Seems it did not
register any reserved pages, in reality, two sections of memory are
reserved.
here should be the patch, tested it, works.
diff --git a/arch/mips/loongson/common/mem.c
b/arch/mips/loongson/common/mem.c
index 7c92f79..069d20b 100644
--- a/arch/mips/loongson/common/mem.c
+++ b/arch/mips/loongson/common/mem.c
@@ -15,11 +15,17 @@
void __init prom_init_memory(void)
{
- add_memory_region(0x0, (memsize << 20), BOOT_MEM_RAM);
+ add_memory_region(0x0, memsize << 20, BOOT_MEM_RAM);
+
+ add_memory_region(memsize << 20, LOONGSON_PCI_MEM_START - (memsize
<<
+ 20), BOOT_MEM_RESERVED);
#ifdef CONFIG_64BIT
if (highmemsize > 0)
add_memory_region(LOONGSON_HIGHMEM_START,
highmemsize << 20, BOOT_MEM_RAM);
+
+ add_memory_region(LOONGSON_PCI_MEM_END + 1, LOONGSON_HIGHMEM_START
-
+ LOONGSON_PCI_MEM_END - 1, BOOT_MEM_RESERVED);
#endif /* CONFIG_64BIT */
}
here is latest result:
$ cat /proc/iomem
00000000-0fffffff : System RAM
00200000-0049ba17 : Kernel code
0049ba18-005415ff : Kernel data
10000000-3fffffff : reserved ---> reserved page
40000000-7fffffff : pci memory space
40000000-40ffffff : 0000:00:08.0
41000000-4101ffff : 0000:00:07.0
41020000-41020fff : 0000:00:09.0
41020000-41020fff : ohci_hcd
41021000-41021fff : 0000:00:0e.4
41021000-41021fff : ohci_hcd
41022000-41022fff : 0000:00:0e.5
41022000-41022fff : ehci_hcd
41023000-410230ff : 0000:00:07.0
41023000-410230ff : 8139too
41023100-410231ff : 0000:00:09.1
41023100-410231ff : ehci_hcd
80000000-8fffffff : reserved --> reserved page
90000000-bfffffff : System RAM
and what about pfn_valid(), is there a need to make it "robust"? or the
above patch is enough?
if the above patch is okay, I will send it to you later.
Regards,
Wu Zhangjin
|