mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [BUG][PATCH 0/2 (v.2)] x86: ioremap() problem in X86_32 PAE
@ 2010-06-17  1:28 Kenji Kaneshige
  2010-06-17  1:30 ` [PATCH 1/2] x86: ioremap: fix wrong physical address handling Kenji Kaneshige
  2010-06-17  1:31 ` [PATCH 2/2] x86: ioremap: fix normal ram range check Kenji Kaneshige
  0 siblings, 2 replies; 21+ messages in thread
From: Kenji Kaneshige @ 2010-06-17  1:28 UTC (permalink / raw)
  To: tglx, mingo, hpa, linux-kernel
  Cc: linux-pci, macro, kamezawa.hiroyu, eike-kernel

Hi,

Here is a updated version (v.2) of patchset to fix ioremap() problem
found in x86_32 PAE mode. The problem is that ioremap() maps wrong
address for the devices to which phisical addresses higer than 32-bit
are assigned (ioat device in my case).

Changelog
----
v.1 => v.2:
Thanks to the feedbacks, I found that some of my v.1 patches are totally
wrong because they were based on my mis-understanding about architectural
limit and linux memory management limit of physical address. In addition,
it turned out that there are bugs that handles physical address improperly
(higher 32-bits are cleared unexpectedly) also in the other places in the
ioremap() code path. Major changes are
- Removed wrong changes against phys_addr_valid() ([PATCH 2/4] in v.1).
- Removed wrong changes against wraning message in ioremap() ([PATCH 3/4]
  in v.1)
- Changed not to use PHYSICAL_PAGE_MASK because the PHYSICAL_PAGE_MASK
  would not work for physical address higher than 44-bit.
- Added fixes for remaining bugs of physical address handling in ioremap()
  code path according to the feedbacks.
- Added a fix for s_show() in vmalloc.c to show high physical address properly.
----

I also found the bug in PCI MSI-X code that handles physical address
improperly, which causes the problem MSI-X doesn't work on my devices. I'll
send a patch for this to PCI mail list separately.

The v.2 patches are:

- [PATCH 1/2] x86: ioremap: fix wrong physical address handling
- [PATCH 2/2] x86: ioremap: fix normal ram range check

Thanks,
Kenji Kaneshige


^ permalink raw reply	[flat|nested] 21+ messages in thread
* [PATCH 2/2] x86: ioremap: fix normal ram range check
@ 2010-06-18  3:23 Kenji Kaneshige
  2010-07-09 19:19 ` [tip:x86/mm] x86, ioremap: Fix " tip-bot for Kenji Kaneshige
  0 siblings, 1 reply; 21+ messages in thread
From: Kenji Kaneshige @ 2010-06-18  3:23 UTC (permalink / raw)
  To: hpa, tglx, mingo, linux-kernel
  Cc: matthew, macro, kamezawa.hiroyu, eike-kernel, jeremy, linux-pci

Check for norma RAM in x86 ioremap() code seems to not work for the
last page frame in the specified physical address range.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>

---
 arch/x86/mm/ioremap.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.34/arch/x86/mm/ioremap.c
===================================================================
--- linux-2.6.34.orig/arch/x86/mm/ioremap.c
+++ linux-2.6.34/arch/x86/mm/ioremap.c
@@ -101,7 +101,7 @@ static void __iomem *__ioremap_caller(re
 	 * Don't allow anybody to remap normal RAM that we're using..
 	 */
 	last_pfn = last_addr >> PAGE_SHIFT;
-	for (pfn = phys_addr >> PAGE_SHIFT; pfn < last_pfn; pfn++) {
+	for (pfn = phys_addr >> PAGE_SHIFT; pfn <= last_pfn; pfn++) {
 		int is_ram = page_is_ram(pfn);
 
 		if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn)))


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2010-07-09 19:19 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-17  1:28 [BUG][PATCH 0/2 (v.2)] x86: ioremap() problem in X86_32 PAE Kenji Kaneshige
2010-06-17  1:30 ` [PATCH 1/2] x86: ioremap: fix wrong physical address handling Kenji Kaneshige
2010-06-17  2:50   ` Matthew Wilcox
2010-06-17  4:22     ` H. Peter Anvin
2010-06-17  4:55       ` Kenji Kaneshige
2010-06-17  6:03         ` H. Peter Anvin
2010-06-17  6:21           ` Kenji Kaneshige
2010-06-17  9:35           ` Jeremy Fitzhardinge
2010-06-17  9:38             ` Jeremy Fitzhardinge
2010-06-17 13:46             ` H. Peter Anvin
2010-06-18  0:32               ` Kenji Kaneshige
2010-06-18  0:22             ` Kenji Kaneshige
2010-07-09  4:24             ` Simon Horman
2010-07-09  5:33               ` Jeremy Fitzhardinge
2010-07-09  6:10                 ` Simon Horman
2010-06-17  6:28     ` Kenji Kaneshige
2010-07-09 18:31   ` [tip:x86/mm] x86, pae: Fix handling of large physical addresses in ioremap tip-bot for Kenji Kaneshige
2010-07-09 18:43     ` H. Peter Anvin
2010-06-17  1:31 ` [PATCH 2/2] x86: ioremap: fix normal ram range check Kenji Kaneshige
2010-07-09 18:31   ` [tip:x86/mm] x86, ioremap: Fix " tip-bot for Kenji Kaneshige
2010-06-18  3:23 [PATCH 2/2] x86: ioremap: fix " Kenji Kaneshige
2010-07-09 19:19 ` [tip:x86/mm] x86, ioremap: Fix " tip-bot for Kenji Kaneshige

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®