Re: [PATCH v3 2/9] KVM: MMU: abstract spte write-protect

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

 



On 04/21/2012 05:33 AM, Marcelo Tosatti wrote:


>>  static bool
>>  __rmap_write_protect(struct kvm *kvm, unsigned long *rmapp, int level)
>>  {
>> @@ -1050,24 +1078,13 @@ __rmap_write_protect(struct kvm *kvm, unsigned long *rmapp, int level)
>>
>>  	for (sptep = rmap_get_first(*rmapp, &iter); sptep;) {
>>  		BUG_ON(!(*sptep & PT_PRESENT_MASK));
>> -		rmap_printk("rmap_write_protect: spte %p %llx\n", sptep, *sptep);
>> -
>> -		if (!is_writable_pte(*sptep)) {
>> -			sptep = rmap_get_next(&iter);
>> -			continue;
>> -		}
>> -
>> -		if (level == PT_PAGE_TABLE_LEVEL) {
>> -			mmu_spte_update(sptep, *sptep & ~PT_WRITABLE_MASK);
>> -			sptep = rmap_get_next(&iter);
>> -		} else {
>> -			BUG_ON(!is_large_pte(*sptep));
>> -			drop_spte(kvm, sptep);
>> -			--kvm->stat.lpages;
> 
> It is preferable to remove all large sptes including read-only ones, the


It can cause page faults even if read memory on these large sptse.

Actually, Avi suggested that make large writable spte to be readonly
(not dropped) on this path.

> current behaviour, then to verify that no read->write transition can
> occur in fault paths (fault paths which are increasing in number).


Yes, the small spte also has issue (find a write-protected spte in
fault paths). Later, the second part of this patchset will introduce
rmap.WRITE_PROTECTED bit, then we can do the fast check before calling
fast page fault.

--
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