From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Date: Wed, 12 May 2010 06:27:46 +0000 Subject: Re: [RFC][PATCH RFC 10/12] KVM: move dirty bitmaps to user space Message-Id: <4BEA4A62.20100@oss.ntt.co.jp> List-Id: References: <20100504220702.f8ba6ccc.takuya.yoshikawa@gmail.com> In-Reply-To: <20100504220702.f8ba6ccc.takuya.yoshikawa@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: kvm-ia64@vger.kernel.org >> r = 0; >> @@ -1195,11 +1232,16 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) >> gfn = unalias_gfn(kvm, gfn); >> memslot = gfn_to_memslot_unaliased(kvm, gfn); >> if (memslot&& memslot->dirty_bitmap) { >> - unsigned long rel_gfn = gfn - memslot->base_gfn; >> + int nr = generic_le_bit_offset(gfn - memslot->base_gfn); >> >> - generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); >> + if (kvm_set_bit_user(nr, memslot->dirty_bitmap)) >> + goto out_fault; > > mark_page_dirty is called with the mmu_lock spinlock held in set_spte. > Must find a way to move it outside of the spinlock section. > Oh, it's a serious problem. I have to consider it. Thanks, Takuya From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Date: Wed, 12 May 2010 06:27:46 +0000 Subject: Re: [RFC][PATCH RFC 10/12] KVM: move dirty bitmaps to user space Message-Id: <4BEA4A62.20100@oss.ntt.co.jp> List-Id: References: <20100504215645.6448af8f.takuya.yoshikawa@gmail.com> <20100504220702.f8ba6ccc.takuya.yoshikawa@gmail.com> <20100511032827.GA3458@amt.cnet> In-Reply-To: <20100511032827.GA3458@amt.cnet> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Marcelo Tosatti Cc: Takuya Yoshikawa , avi@redhat.com, agraf@suse.de, fernando@oss.ntt.co.jp, kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, kvm-ia64@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, benh@kernel.crashing.org, paulus@samba.org, linuxppc-dev@ozlabs.org, arnd@arndb.de, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org >> r = 0; >> @@ -1195,11 +1232,16 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) >> gfn = unalias_gfn(kvm, gfn); >> memslot = gfn_to_memslot_unaliased(kvm, gfn); >> if (memslot&& memslot->dirty_bitmap) { >> - unsigned long rel_gfn = gfn - memslot->base_gfn; >> + int nr = generic_le_bit_offset(gfn - memslot->base_gfn); >> >> - generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); >> + if (kvm_set_bit_user(nr, memslot->dirty_bitmap)) >> + goto out_fault; > > mark_page_dirty is called with the mmu_lock spinlock held in set_spte. > Must find a way to move it outside of the spinlock section. > Oh, it's a serious problem. I have to consider it. Thanks, Takuya From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: Re: [RFC][PATCH RFC 10/12] KVM: move dirty bitmaps to user space Date: Wed, 12 May 2010 15:27:46 +0900 Message-ID: <4BEA4A62.20100@oss.ntt.co.jp> References: <20100504215645.6448af8f.takuya.yoshikawa@gmail.com> <20100504220702.f8ba6ccc.takuya.yoshikawa@gmail.com> <20100511032827.GA3458@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from serv2.oss.ntt.co.jp ([222.151.198.100]:33196 "EHLO serv2.oss.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753113Ab0ELGYF (ORCPT ); Wed, 12 May 2010 02:24:05 -0400 In-Reply-To: <20100511032827.GA3458@amt.cnet> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Marcelo Tosatti Cc: Takuya Yoshikawa , avi@redhat.com, agraf@suse.de, fernando@oss.ntt.co.jp, kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, kvm-ia64@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, benh@kernel.crashing.org, paulus@samba.org, linuxppc-dev@ozlabs.org, arnd@arndb.de, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org >> r = 0; >> @@ -1195,11 +1232,16 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) >> gfn = unalias_gfn(kvm, gfn); >> memslot = gfn_to_memslot_unaliased(kvm, gfn); >> if (memslot&& memslot->dirty_bitmap) { >> - unsigned long rel_gfn = gfn - memslot->base_gfn; >> + int nr = generic_le_bit_offset(gfn - memslot->base_gfn); >> >> - generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); >> + if (kvm_set_bit_user(nr, memslot->dirty_bitmap)) >> + goto out_fault; > > mark_page_dirty is called with the mmu_lock spinlock held in set_spte. > Must find a way to move it outside of the spinlock section. > Oh, it's a serious problem. I have to consider it. Thanks, Takuya From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from serv2.oss.ntt.co.jp (serv2.oss.ntt.co.jp [222.151.198.100]) by ozlabs.org (Postfix) with ESMTP id 348BCB7DBF for ; Wed, 12 May 2010 16:24:02 +1000 (EST) Message-ID: <4BEA4A62.20100@oss.ntt.co.jp> Date: Wed, 12 May 2010 15:27:46 +0900 From: Takuya Yoshikawa MIME-Version: 1.0 To: Marcelo Tosatti Subject: Re: [RFC][PATCH RFC 10/12] KVM: move dirty bitmaps to user space References: <20100504215645.6448af8f.takuya.yoshikawa@gmail.com> <20100504220702.f8ba6ccc.takuya.yoshikawa@gmail.com> <20100511032827.GA3458@amt.cnet> In-Reply-To: <20100511032827.GA3458@amt.cnet> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Cc: linux-arch@vger.kernel.org, arnd@arndb.de, kvm@vger.kernel.org, kvm-ia64@vger.kernel.org, fernando@oss.ntt.co.jp, x86@kernel.org, agraf@suse.de, kvm-ppc@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org, mingo@redhat.com, paulus@samba.org, avi@redhat.com, hpa@zytor.com, tglx@linutronix.de, Takuya Yoshikawa List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , >> r = 0; >> @@ -1195,11 +1232,16 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) >> gfn = unalias_gfn(kvm, gfn); >> memslot = gfn_to_memslot_unaliased(kvm, gfn); >> if (memslot&& memslot->dirty_bitmap) { >> - unsigned long rel_gfn = gfn - memslot->base_gfn; >> + int nr = generic_le_bit_offset(gfn - memslot->base_gfn); >> >> - generic___set_le_bit(rel_gfn, memslot->dirty_bitmap); >> + if (kvm_set_bit_user(nr, memslot->dirty_bitmap)) >> + goto out_fault; > > mark_page_dirty is called with the mmu_lock spinlock held in set_spte. > Must find a way to move it outside of the spinlock section. > Oh, it's a serious problem. I have to consider it. Thanks, Takuya