powerpc/book3e: Flush IPROT protected TLB entries leftover by firmware
authorJack Miller <jack@codezen.org>
Thu, 14 Apr 2011 22:32:05 +0000 (22:32 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 27 Apr 2011 03:02:16 +0000 (13:02 +1000)
commitf0aae3238fc1c28b543cbaaa0e7c5d57685f5f89
tree7d2f01cebc6ac4079fc069b96ea823a235cfbe7e
parent1a51dde139d5305b2592c716c50c005d6ab9624b
powerpc/book3e: Flush IPROT protected TLB entries leftover by firmware

When we set up the TLB for ourselves on Book3E, we need to flush out any
old mappings established by the firmware or bootloader.  At present we
attempt this with a tlbilx to flush everything, but this will leave behind
any entries with the IPROT bit set.

There are several good reason firmware might establish mappings with IPROT,
and in fact ePAPR compliant firmwares are required to establish their
initial mapped area with IPROT.

This patch, therefore adds more complex code to scan through the TLB upon
entry and flush away any entries that are not our own.

Signed-off-by: Jack Miller <jack@codezen.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/mmu-book3e.h
arch/powerpc/kernel/exceptions-64e.S