From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
linux-kernel@vger.kernel.org
Cc: linux-pci@vger.kernel.org, jbarnes@virtuousgeek.org
Subject: [PATCH 2/4] x86: ioremap: fix physical address check
Date: Fri, 11 Jun 2010 18:20:00 +0900 [thread overview]
Message-ID: <4C11FFC0.1030006@jp.fujitsu.com> (raw)
In-Reply-To: <4C11FF10.4060203@jp.fujitsu.com>
If the physical address is too high to be handled by ioremap() in
x86_32 PAE (e.g. more than 36-bit physical address), ioremap() must
return error (NULL). However, current x86 ioremap try to map this too
high physical address, and it causes unexpected behavior.
The ioremap() seems to check the specified physical address using
phys_addr_valid(). But current phys_addr_valid() returns true even if
more than 36-bit address range is specified because
boot_cpu_data.x86_phys_bits can have more than 36 even in X86_32 PAE
mode (boot_cpu_data.x86_phys_bits seems to hold maximum capability of
the processor).
To fix the problem, this patch changes phys_addr_valid() function to
return false when more than 36-bit address range is specified in PAE.
The phys_addr_valid() function is used only by ioremap() in X86_32 PAE
mode. So this change only affects ioremap() in X86_32 PAE mode.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
---
arch/x86/mm/physaddr.h | 4 ++++
1 file changed, 4 insertions(+)
Index: linux-2.6.34/arch/x86/mm/physaddr.h
===================================================================
--- linux-2.6.34.orig/arch/x86/mm/physaddr.h 2010-06-10 07:28:28.177229689 +0900
+++ linux-2.6.34/arch/x86/mm/physaddr.h 2010-06-10 07:28:32.587190857 +0900
@@ -3,8 +3,12 @@
static inline int phys_addr_valid(resource_size_t addr)
{
#ifdef CONFIG_PHYS_ADDR_T_64BIT
+#ifdef CONFIG_X86_64
return !(addr >> boot_cpu_data.x86_phys_bits);
#else
+ return !(addr >> 36);
+#endif
+#else
return 1;
#endif
}
next prev parent reply other threads:[~2010-06-11 9:20 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-11 9:17 [RFC][PATCH 0/4] x86: ioremap() problem in X86_32 PAE Kenji Kaneshige
2010-06-11 9:18 ` [PATCH 1/4] x86: ioremap: fix wrong address masking Kenji Kaneshige
2010-06-11 9:20 ` Kenji Kaneshige [this message]
2010-06-11 17:43 ` [PATCH 2/4] x86: ioremap: fix physical address check H. Peter Anvin
2010-06-14 0:18 ` KAMEZAWA Hiroyuki
2010-06-14 8:59 ` KAMEZAWA Hiroyuki
2010-06-14 9:13 ` Kenji Kaneshige
2010-06-14 11:06 ` Kenji Kaneshige
2010-06-14 18:36 ` H. Peter Anvin
2010-06-15 2:21 ` Kenji Kaneshige
2010-06-14 20:16 ` Rolf Eike Beer
2010-06-15 2:33 ` Kenji Kaneshige
2010-06-14 1:54 ` Kenji Kaneshige
2010-06-14 6:38 ` Maciej W. Rozycki
2010-06-14 8:23 ` Kenji Kaneshige
2010-06-14 9:02 ` Kenji Kaneshige
2010-06-14 15:40 ` H. Peter Anvin
2010-06-14 15:11 ` H. Peter Anvin
2010-06-14 8:27 ` Kenji Kaneshige
2010-06-14 15:12 ` H. Peter Anvin
2010-06-11 9:20 ` [PATCH 3/4] x86: ioremap: remove physical address warning message Kenji Kaneshige
2010-06-11 17:44 ` H. Peter Anvin
2010-06-14 2:06 ` Kenji Kaneshige
2010-06-11 9:21 ` [PATCH 4/4] x86: ioremap: fix normal ram range check Kenji Kaneshige
2010-06-11 17:41 ` [RFC][PATCH 0/4] x86: ioremap() problem in X86_32 PAE H. Peter Anvin
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=4C11FFC0.1030006@jp.fujitsu.com \
--to=kaneshige.kenji@jp.fujitsu.com \
--cc=hpa@zytor.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/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