Avi Kivity wrote: > On 06/22/2010 03:04 PM, Alexander Graf wrote: >> Avi Kivity wrote: >> >>> On 06/21/2010 04:44 PM, Alexander Graf wrote: >>> >>>> Currently the shadow paging code keeps an array of entries it knows >>>> about. >>>> Whenever the guest invalidates an entry, we loop through that entry, >>>> trying to invalidate matching parts. >>>> >>>> While this is a really simple implementation, it is probably the most >>>> ineffective one possible. So instead, let's keep an array of lists >>>> around >>>> that are indexed by a hash. This way each PTE can be added by 4 >>>> list_add, >>>> removed by 4 list_del invocations and the search only needs to loop >>>> through >>>> entries that share the same hash. >>>> >>>> This patch implements said lookup and exports generic functions that >>>> both >>>> the 32-bit and 64-bit backend can use. >>>> >>>> >>> Mind explaining the all list in there? >>> >> The all list is used to flush all entries when we need to get rid of all >> entries, for example when we write a BAT. >> >> > > Yes, I more or less gathered that when I saw patch 2. Does it make > sense to avoid it by looping over all vpte lists in the vpte hash? > More effort for a full flush, esp. when the mmu is sparse, but less > for individual pte operations. Hrm. We could probably make the vpte_long list shorter. Currently all lists are 1 << 13 entries wide. So we have 8192 lists to loop through. For vpte_long 1 << 8 = 256 is probably enough. With that it would probably make sense, yes. If you have more performance hints, I'll gladly take them :). 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