Re: [PATCH 15/15] work around for more than 256MB memory support

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

 



On Wed, Jun 06, 2007 at 10:01:29AM +0200, Franck Bui-Huu wrote:

> >diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> >index cc9a9d0..a19b46a 100644
> >--- a/drivers/char/mem.c
> >+++ b/drivers/char/mem.c
> >@@ -82,8 +82,12 @@ static inline int uncached_access(struct file *file, 
> >unsigned long addr)
> >         */
> >        if (file->f_flags & O_SYNC)
> >                return 1;
> >+#if defined(CONFIG_LEMOTE_FULONG) && defined(CONFIG_64BIT)
> >+       return (addr >= __pa(high_memory)) || ((addr >=0x10000000) && 
> >(addr < 0x20000000));
> >+#else
> >        return addr >= __pa(high_memory);
> > #endif
> >+#endif
> > }
> 
> That would be nice to have a nice log to justify such a hack....

Unfortunately mem.c is soaked with #ifdef stuff.  So I hope I can justify
one more for another architecture but that'll be it.  So I've put
below patch into the queue tree.  It will allow the Fulong code to
override the function as needed.  I also got this in the queue tree.

  Ralf

Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx>

 arch/mips/mm/cache.c |   10 ++++++++++
 drivers/char/mem.c   |    7 +++++++
 2 files changed, 17 insertions(+)

Index: linux-queue/arch/mips/mm/cache.c
===================================================================
--- linux-queue.orig/arch/mips/mm/cache.c
+++ linux-queue/arch/mips/mm/cache.c
@@ -6,6 +6,8 @@
  * Copyright (C) 1994 - 2003, 07 by Ralf Baechle (ralf@xxxxxxxxxxxxxx)
  * Copyright (C) 2007 MIPS Technologies, Inc.
  */
+#include <linux/fs.h>
+#include <linux/fcntl.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -164,3 +166,11 @@ void __init cpu_cache_init(void)
 
 	panic(cache_panic);
 }
+
+int __weak __uncached_access(struct file *file, unsigned long addr)
+{
+	if (file->f_flags & O_SYNC)
+		return 1;
+
+	return addr >= __pa(high_memory);
+}
Index: linux-queue/drivers/char/mem.c
===================================================================
--- linux-queue.orig/drivers/char/mem.c
+++ linux-queue/drivers/char/mem.c
@@ -75,6 +75,13 @@ static inline int uncached_access(struct
 	 * On ia64, we ignore O_SYNC because we cannot tolerate memory attribute aliases.
 	 */
 	return !(efi_mem_attributes(addr) & EFI_MEMORY_WB);
+#elif defined(CONFIG_MIPS)
+	{
+		extern int __uncached_access(struct file *file,
+		                             unsigned long addr);
+
+		return __uncached_access(file, addr);
+	}
 #else
 	/*
 	 * Accessing memory above the top the kernel knows about or through a file pointer


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

  Powered by Linux