From: Rodolfo Giometti <giometti@linux.it>
To: linux-mips <linux-mips@linux-mips.org>
Subject: Support for (au1100) 64-bit physical address space broken on 2.6.12?
Date: Sat, 16 Jul 2005 14:42:06 +0200 [thread overview]
Message-ID: <20050716124205.GA26127@enneenne.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 2368 bytes --]
Hello,
switching from linux-mips 2.6.12-rc3 to 2.6.12 I notice that the
following patch has been applied:
http://www.linux-mips.org/archives/linux-mips/2005-06/msg00207.html
But, on my system, recompiling the source I noticed that compilation
stops with errors. Even downloading a clean version of source code
from linux-mips's CVS and choosing, for instance, the board DB1100, I
got the same result.
The problem is that the above patch works well if the 64-bit physical
address space support is disabled, but, if enabled, it breaks
compilation stage.
Here what I get after getting source form CVS and doing the commands:
# make pb1100_defconfig (this board turn on CONFIG_64BIT_PHYS_ADDR option)
# make
...
include/asm-mips/mach-au1x00/ioremap.h:25: warning: static declaration of 'fixup_bigphys_addr' follows non-static declaration
include/asm/pgtable.h:363: warning: 'fixup_bigphys_addr' declared inline after being called
include/asm/pgtable.h:363: warning: previous declaration of 'fixup_bigphys_addr' was here
include/asm-mips/mach-au1x00/ioremap.h: In function `fixup_bigphys_addr':
include/asm-mips/mach-au1x00/ioremap.h:26: warning: implicit declaration of function `__fixup_bigphys_addr'
arch/mips/au1000/common/setup.c: At top level:
arch/mips/au1000/common/setup.c:159: error: conflicting types for '__fixup_bigphys_addr'
include/asm-mips/mach-au1x00/ioremap.h:26: error: previous implicit declaration of '__fixup_bigphys_addr' was here
arch/mips/au1000/common/setup.c: In function `__fixup_bigphys_addr':
...
After a little job I implemented the attached patch
(patch-64BIT_PHYS_ADDR) that works on my system on both settings
(CONFIG_64BIT_PHYS_ADDR on or off).
I don't know if it can resolve the above problem for others CPUs (I
tested it on au1100) but, at least, on this processor the PCMCIA
support now is functional. :)
I also suggest to apply the second patch (patch-PCMCIA_Kconfig) who
simply auto enable 64 bit support when choosing PCMCIA support.
Ciao,
Rodolfo
--
GNU/Linux Solutions e-mail: giometti@linux.it
Linux Device Driver giometti@enneenne.com
Embedded Systems home page: giometti.enneenne.com
UNIX programming phone: +39 349 2432127
[-- Attachment #1.2: patch-64BIT_PHYS_ADDR --]
[-- Type: text/plain, Size: 4281 bytes --]
Index: arch/mips/au1000/common/setup.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/setup.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 setup.c
--- a/arch/mips/au1000/common/setup.c 2 Jul 2005 06:45:44 -0000 1.1.1.1
+++ b/arch/mips/au1000/common/setup.c 16 Jul 2005 12:27:18 -0000
@@ -152,38 +152,3 @@
while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S);
au_writel(0, SYS_TOYTRIM);
}
-
-#if defined(CONFIG_64BIT_PHYS_ADDR)
-/* This routine should be valid for all Au1x based boards */
-phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
-{
- u32 start, end;
-
- /* Don't fixup 36 bit addresses */
- if ((phys_addr >> 32) != 0) return phys_addr;
-
-#ifdef CONFIG_PCI
- start = (u32)Au1500_PCI_MEM_START;
- end = (u32)Au1500_PCI_MEM_END;
- /* check for pci memory window */
- if ((phys_addr >= start) && ((phys_addr + size) < end)) {
- return (phys_t)((phys_addr - start) + Au1500_PCI_MEM_START);
- }
-#endif
-
- /* All Au1x SOCs have a pcmcia controller */
- /* We setup our 32 bit pseudo addresses to be equal to the
- * 36 bit addr >> 4, to make it easier to check the address
- * and fix it.
- * The Au1x socket 0 phys attribute address is 0xF 4000 0000.
- * The pseudo address we use is 0xF400 0000. Any address over
- * 0xF400 0000 is a pcmcia pseudo address.
- */
- if ((phys_addr >= 0xF4000000) && (phys_addr < 0xFFFFFFFF)) {
- return (phys_t)(phys_addr << 4);
- }
-
- /* default nop */
- return phys_addr;
-}
-#endif
Index: include/asm-mips/pgtable.h
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/include/asm-mips/pgtable.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 pgtable.h
--- a/include/asm-mips/pgtable.h 2 Jul 2005 06:47:30 -0000 1.1.1.1
+++ b/include/asm-mips/pgtable.h 16 Jul 2005 12:27:39 -0000
@@ -17,6 +17,7 @@
#endif
#include <asm/pgtable-bits.h>
+#include <ioremap.h>
#define PAGE_NONE __pgprot(_PAGE_PRESENT | _CACHE_CACHABLE_NONCOHERENT)
#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
@@ -360,7 +361,6 @@
#endif
#ifdef CONFIG_64BIT_PHYS_ADDR
-extern phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size);
extern int remap_pfn_range(struct vm_area_struct *vma, unsigned long from, unsigned long pfn, unsigned long size, pgprot_t prot);
static inline int io_remap_page_range(struct vm_area_struct *vma,
Index: include/asm-mips/mach-au1x00/ioremap.h
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/include/asm-mips/mach-au1x00/ioremap.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 ioremap.h
--- a/include/asm-mips/mach-au1x00/ioremap.h 2 Jul 2005 06:47:31 -0000 1.1.1.1
+++ b/include/asm-mips/mach-au1x00/ioremap.h 16 Jul 2005 12:27:39 -0000
@@ -11,7 +11,42 @@
#include <linux/types.h>
-#ifndef CONFIG_64BIT_PHYS_ADDR
+#ifdef CONFIG_64BIT_PHYS_ADDR
+/* This routine should be valid for all Au1x based boards */
+static inline phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
+{
+#ifdef CONFIG_PCI
+ u32 start, end;
+#endif
+
+ /* Don't fixup 36 bit addresses */
+ if ((phys_addr >> 32) != 0) return phys_addr;
+
+#ifdef CONFIG_PCI
+ start = (u32)Au1500_PCI_MEM_START;
+ end = (u32)Au1500_PCI_MEM_END;
+ /* check for pci memory window */
+ if ((phys_addr >= start) && ((phys_addr + size) < end)) {
+ return (phys_t)((phys_addr - start) + Au1500_PCI_MEM_START);
+ }
+#endif
+
+ /* All Au1x SOCs have a pcmcia controller */
+ /* We setup our 32 bit pseudo addresses to be equal to the
+ * 36 bit addr >> 4, to make it easier to check the address
+ * and fix it.
+ * The Au1x socket 0 phys attribute address is 0xF 4000 0000.
+ * The pseudo address we use is 0xF400 0000. Any address over
+ * 0xF400 0000 is a pcmcia pseudo address.
+ */
+ if ((phys_addr >= 0xF4000000) && (phys_addr < 0xFFFFFFFF)) {
+ return (phys_t)(phys_addr << 4);
+ }
+
+ /* default nop */
+ return phys_addr;
+}
+#else
static inline phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
{
return phys_addr;
[-- Attachment #1.3: patch-PCMCIA_Kconfig --]
[-- Type: text/plain, Size: 554 bytes --]
Index: drivers/pcmcia/Kconfig
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/drivers/pcmcia/Kconfig,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 Kconfig
--- a/drivers/pcmcia/Kconfig 2 Jul 2005 06:46:44 -0000 1.1.1.1
+++ b/drivers/pcmcia/Kconfig 16 Jul 2005 12:27:31 -0000
@@ -137,6 +137,7 @@
config PCMCIA_AU1X00
tristate "Au1x00 pcmcia support"
depends on SOC_AU1X00 && PCMCIA
+ select 64BIT_PHYS_ADDR
config PCMCIA_SA1100
tristate "SA1100 support"
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2005-07-16 12:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-16 12:42 Rodolfo Giometti [this message]
2005-07-16 15:42 ` Support for (au1100) 64-bit physical address space broken on 2.6.12? Pete Popov
2005-07-17 10:58 ` Rodolfo Giometti
2005-07-17 16:22 ` Pete Popov
2005-07-18 7:54 ` Rodolfo Giometti
2005-07-18 16:19 ` Rodolfo Giometti
2005-07-18 16:30 ` Pete Popov
2005-07-18 16:34 ` Maciej W. Rozycki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050716124205.GA26127@enneenne.com \
--to=giometti@linux.it \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox