On Wed, Jun 10, 2009 at 12:17:09PM +0300, Avi Kivity wrote:
> Marcelo Tosatti wrote:
>> Required by EPT misconfiguration handler.
>>
>> Signed-off-by: Marcelo Tosatti <mtosa...@redhat.com>
>>
>> Index: kvm/arch/x86/kvm/mmu.c
>> ===================================================================
>> --- kvm.orig/arch/x86/kvm/mmu.c
>> +++ kvm/arch/x86/kvm/mmu.c
>> @@ -3013,6 +3013,26 @@ out:
>>      return r;
>>  }
>>  +void kvm_mmu_shadow_walk(struct kvm_vcpu *vcpu, u64 addr,
>> +                     struct mmu_shadow_walk *walk)
>> +{
>> +    struct kvm_shadow_walk_iterator iterator;
>> +
>> +    spin_lock(&vcpu->kvm->mmu_lock);
>> +    for_each_shadow_entry(vcpu, addr, iterator) {
>> +            int err;
>> +
>> +            err = walk->fn(vcpu, iterator.sptep, iterator.level, walk);
>> +            if (err)
>> +                    break;
>> +
>> +            if (!is_shadow_present_pte(*iterator.sptep))
>> +                    break;
>> +    }
>> +    spin_unlock(&vcpu->kvm->mmu_lock);
>> +}
>> +EXPORT_SYMBOL(kvm_mmu_shadow_walk);
>> +
>>   
>
> Isn't it simpler to invoke for_each_shadow_entry(), instead of defining  
> a callback and calling it?
>
> We had those callbacks once, then switched to for_each.

The point is its exported to use in a external module (kvm-intel.ko),
so you hide the details (such as locking) in the kvm_mmu_shadow_walk
helper. Let me know how do you prefer this to be.

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

Reply via email to