On 03/08/2017 13:39, David Hildenbrand wrote:
>> +    /* AD, if set, should be supported */
>> +    if ((address & VMX_EPT_AD_ENABLE_BIT)) {
>> +            if (!enable_ept_ad_bits)
>> +                    return false;
> In theory (I guess) we would have to check here if
> (vmx->nested.nested_vmx_ept_caps & VMX_EPT_AD_BIT)

Yes, that's a more correct check than enable_ept_ad_bits.

>>
>> +    page = nested_get_page(vcpu, vmcs12->eptp_list_address);
>> +    if (!page)
>> +            return 1;
>> +
>> +    l1_eptp_list = kmap(page);
>> +    address = l1_eptp_list[index];
>> +    accessed_dirty = !!(address & VMX_EPT_AD_ENABLE_BIT);
> 
> Minor nit: Can't you directly do
> 
> kunmap(page);
> nested_release_page_clean(page);
> 
> at this point?
> 
> We can fix this up later.

You actually can do simply kvm_vcpu_read_guest_page(vcpu,
vmcs12->eptp_list_address >> PAGE_SHIFT, &address, index * 8, 8).

Paolo

Reply via email to