From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH v2 0/4] Fix accessed bit tracking Date: Tue, 08 Jun 2010 08:24:53 +0300 Message-ID: <4C0DD425.6050400@redhat.com> References: <1275894659-17656-1-git-send-email-avi@redhat.com> <4C0CB119.3060903@cn.fujitsu.com> <4C0CB526.9070309@redhat.com> <4C0DAC6C.8090201@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Lai Jiangshan , Marcelo Tosatti , kvm@vger.kernel.org To: Xiao Guangrong Return-path: Received: from mx1.redhat.com ([209.132.183.28]:58987 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751849Ab0FHFZC (ORCPT ); Tue, 8 Jun 2010 01:25:02 -0400 In-Reply-To: <4C0DAC6C.8090201@cn.fujitsu.com> Sender: kvm-owner@vger.kernel.org List-ID: On 06/08/2010 05:35 AM, Xiao Guangrong wrote: > >> We can avoid the exchange in most cases, for example if the new spte has >> the accessed bit set (already in the patch set) or if the page is >> already marked as accessed, or if we see the old spte has the accessed >> bit set (so no race can occur). I'll update the patches to avoid >> atomics when possible. >> > Umm, the reason that we need atomics here is to avoid vcpu to update spte when we read A bit > form it, so, perhaps we can use below way to avoid atomics completely: > > - set reserved bit in spte > - get A bit form spte > - set new spte > > the worst case is cause vcpu #PF here, but it doesn't matter since the old mapping is already invalid, > also need a remote tlb flush later. > To set the reserved bit in the spte, you need an atomic operation (well, unless you use a sub-word-acccess to set a reserved bit in the high 32 bits). >> I don't think atomics are that expensive, though, ~20 cycles on modern >> processors? >> >> > Yes, but atomics are "LOCK" instructions, it can stop multiple cpus runing in parallel. > Only if those cpus are accessing the same word you're accessing. -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain.