Thread (6 messages) 6 messages, 4 authors, 2007-01-29

Re: [PATCH] ppc: ioremap() on PPC44x platforms now accepts 64bit addresses

From: Stefan Roese <hidden>
Date: 2007-01-28 21:00:19

Hi Josh,

On Friday 19 January 2007 12:57, Josh Boyer wrote:
On Fri, 2007-01-19 at 09:05 +0100, Stefan Roese wrote:
quoted
[PATCH] ppc: ioremap() on PPC44x platforms now accepts 64bit addresses

On systems that supply a real 64bit address (with
CONFIG_RESOURCES_64BIT enabled), don't use the fixup function. This
allows us to use the fixup function when no ERPN is specified and use
the 64 bit address when the ERPN is supplied.
Good idea.
quoted
 void __iomem *
 ioremap(phys_addr_t addr, unsigned long size)
 {
-	phys_addr_t addr64 = fixup_bigphys_addr(addr, size);
-
-	return ioremap64(addr64, size);
+	/*
+	 * On systems that supply a real 64bit address
+	 * (with CONFIG_RESOURCES_64BIT enabled), don't use the
+	 * fixup function.
+	 * This allows us to use the fixup function when no ERPN
+	 * is specified and use the 64 bit address when the ERPN
+	 * is suppied.
+	 */
+	if ((unsigned long long)addr && 0xffffffff00000000ULL)
+		return ioremap64(addr, size);
Erm... don't you want:

addr & 0xffffffff00000000ULL

What you have now is a logical and that will likely result in it always
being true...
Of course. Thanks for spotting it. I'll resend the patch tomorrow.

Best regards,
Stefan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help