Re: [PATCH -v1] MIPS: fix pfn_valid() for FLATMEM

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

 



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@xxxxxx>
> > >  and Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>)
> > 
> > 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



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux