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