diff options
author | Bharat Bhushan <Bharat.Bhushan@freescale.com> | 2013-04-25 06:33:57 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-04-26 20:27:01 +0200 |
commit | adccf65ca431b41733483f476e8de9e3cf171c44 (patch) | |
tree | 3421b1773f8c911357e12171966adb1ecaba1da7 | |
parent | 660696d1d16a71e15549ce1bf74953be1592bcd3 (diff) | |
download | linux-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.h | 9 |
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); |