sh: Provide a sane valid_phys_addr_range() to prevent TLB reset with PMB.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 12 Nov 2008 03:53:48 +0000 (12:53 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 12 Nov 2008 03:53:48 +0000 (12:53 +0900)
commit185aed75570fb4f78ef283dfa26cd9da5fa06a91
treea98cb3f46bf9426f8d4a660d63b8a3ac7d9f369d
parentade7a9b4ccd20ab8159c77a0abd20552f2d6b06c
sh: Provide a sane valid_phys_addr_range() to prevent TLB reset with PMB.

With the PMB enabled, only P1SEG and up are covered by the PMB mappings,
meaning that situations where out-of-bounds physical addresses are read
from will lead to TLB reset after the PMB miss, allowing for use cases
like dd if=/dev/mem to reset the TLB.

Fix this up to make sure the reference is between __MEMORY_START (phys)
and __pa(high_memory). This is coherent across all variants of sh/sh64
with and without MMU, though the PMB bug itself is only applicable to
SH-4A parts.

Reported-by: Hideo Saito <saito@densan.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/io.h
arch/sh/mm/Makefile_32
arch/sh/mm/Makefile_64
arch/sh/mm/mmap.c [new file with mode: 0644]