Re: [tip:x86/mm] x86, pae: Fix handling of large physical addresses in ioremap

H. Peter Anvin
2010-07-09T18:44:12Z

On 07/09/2010 11:31 AM, tip-bot for Kenji Kaneshige wrote:
> Commit-ID: 39d8c3ff39443825b6a21b28249fc4904809203f
> Gitweb: http://git.kernel.org/tip/39d8c3ff39443825b6a21b28249fc4904809203f
> Author: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
> AuthorDate: Thu, 17 Jun 2010 10:30:06 +0900
> Committer: H. Peter Anvin <hpa@linux.intel.com>
> CommitDate: Fri, 9 Jul 2010 10:51:39 -0700
>
> x86, pae: Fix handling of large physical addresses in ioremap
>
> Current x86 ioremap() doesn't handle physical address higher than
> 32-bit properly in X86_32 PAE mode. When physical address higher than
> 32-bit is passed to ioremap(), higher 32-bits in physical address is
> cleared wrongly. Due to this bug, ioremap() can map wrong address to
> linear address space.
>
> In my case, 64-bit MMIO region was assigned to a PCI device (ioat
> device) on my system. Because of the ioremap()'s bug, wrong physical
> address (instead of MMIO region) was mapped to linear address space.
> Because of this, loading ioatdma driver caused unexpected behavior
> (kernel panic, kernel hangup, ...).
>

Sorry, pushed the wrong version of this patch. I will push the correct
one shortly.

-hpa