Re: [PATCH 8/8] KVM: PPC: Add cache flush on page map

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 07.08.2012, at 23:01, Scott Wood <scottwood@xxxxxxxxxxxxx> wrote:

> On 08/07/2012 05:57 AM, Alexander Graf wrote:
>> When we map a page that wasn't icache cleared before, do so when first
>> mapping it in KVM using the same information bits as the Linux mapping
>> logic. That way we are 100% sure that any page we map does not have stale
>> entries in the icache.
>> 
>> What we really would need is a method to flush the icache only when we
>> actually map a page executable for the guest. But with the current
>> abstraction that is hard to do, and this way we don't have a huge performance
>> penalty, so better be safe now and micro optimize things later.
>> 
>> Signed-off-by: Alexander Graf <agraf@xxxxxxx>
>> ---
>> arch/powerpc/include/asm/kvm_host.h |   10 ++++++++++
>> arch/powerpc/mm/mem.c               |    1 +
>> 2 files changed, 11 insertions(+), 0 deletions(-)
>> 
>> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
>> index ed75bc9..c0a2fc1 100644
>> --- a/arch/powerpc/include/asm/kvm_host.h
>> +++ b/arch/powerpc/include/asm/kvm_host.h
>> @@ -33,6 +33,7 @@
>> #include <asm/kvm_asm.h>
>> #include <asm/processor.h>
>> #include <asm/page.h>
>> +#include <asm/cacheflush.h>
>> 
>> #define KVM_MAX_VCPUS        NR_CPUS
>> #define KVM_MAX_VCORES        NR_CPUS
>> @@ -550,5 +551,14 @@ struct kvm_vcpu_arch {
>> #define KVM_MMIO_REG_FQPR    0x0060
>> 
>> #define __KVM_HAVE_ARCH_WQP
>> +#define __KVM_HAVE_ARCH_MAP_PAGE
>> +static inline void kvm_arch_map_page(struct page *page)
>> +{
>> +    /* Need to invalidate the icache for new pages */
>> +    if (!test_bit(PG_arch_1, &page->flags)) {
>> +        flush_dcache_icache_page(page);
>> +        set_bit(PG_arch_1, &page->flags);
>> +    }
>> +}
> 
> Shouldn't this test CPU_FTR_COHERENT_ICACHE?

flush_icache_range checks for it a bit further down the code stream. I mostly modeled things the same way as set_pre_filter.


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux