summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Bhushan <Bharat.Bhushan@freescale.com>2013-04-25 06:33:57 +0000
committerAlexander Graf <agraf@suse.de>2013-04-26 20:27:01 +0200
commitadccf65ca431b41733483f476e8de9e3cf171c44 (patch)
tree3421b1773f8c911357e12171966adb1ecaba1da7
parent660696d1d16a71e15549ce1bf74953be1592bcd3 (diff)
downloadlinux-3.10-adccf65ca431b41733483f476e8de9e3cf171c44.tar.gz
linux-3.10-adccf65ca431b41733483f476e8de9e3cf171c44.tar.bz2
linux-3.10-adccf65ca431b41733483f476e8de9e3cf171c44.zip
KVM: PPC: cache flush for kernel managed pages
Kernel can only access pages which maps as memory. So flush only the valid kernel pages. Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r--arch/powerpc/include/asm/kvm_ppc.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index f58930779ae..4794de6ea37 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -282,8 +282,15 @@ void kvmppc_init_lpid(unsigned long nr_lpids);
static inline void kvmppc_mmu_flush_icache(pfn_t pfn)
{
- /* Clear i-cache for new pages */
struct page *page;
+ /*
+ * We can only access pages that the kernel maps
+ * as memory. Bail out for unmapped ones.
+ */
+ if (!pfn_valid(pfn))
+ return;
+
+ /* Clear i-cache for new pages */
page = pfn_to_page(pfn);
if (!test_bit(PG_arch_1, &page->flags)) {
flush_dcache_icache_page(page);