From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59465) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTzkZ-0000Df-W2 for qemu-devel@nongnu.org; Thu, 01 Nov 2012 14:44:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TTzkY-0001Kz-Pg for qemu-devel@nongnu.org; Thu, 01 Nov 2012 14:44:19 -0400 Received: from mout.web.de ([212.227.15.4]:59244) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TTzkY-0001IS-G2 for qemu-devel@nongnu.org; Thu, 01 Nov 2012 14:44:18 -0400 Message-ID: <5092C2FF.5070909@web.de> Date: Thu, 01 Nov 2012 19:44:15 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <1351468127-15025-1-git-send-email-pingfank@linux.vnet.ibm.com> <1351468127-15025-6-git-send-email-pingfank@linux.vnet.ibm.com> <508E4D45.5060106@redhat.com> <50929902.9050002@redhat.com> In-Reply-To: <50929902.9050002@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig656979DD41DD409AA7D9CF02" Subject: Re: [Qemu-devel] [patch v5 5/8] memory: introduce local lock for address space List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Peter Maydell , Stefan Hajnoczi , Marcelo Tosatti , liu ping fan , qemu-devel@nongnu.org, Anthony Liguori , Paolo Bonzini This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig656979DD41DD409AA7D9CF02 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 2012-11-01 16:45, Avi Kivity wrote: > On 10/29/2012 11:46 AM, liu ping fan wrote: >> On Mon, Oct 29, 2012 at 5:32 PM, Avi Kivity wrote: >>> On 10/29/2012 01:48 AM, Liu Ping Fan wrote: >>>> For those address spaces which want to be able out of big lock, they= >>>> will be protected by their own local. >>>> >>>> Signed-off-by: Liu Ping Fan >>>> --- >>>> memory.c | 11 ++++++++++- >>>> memory.h | 5 ++++- >>>> 2 files changed, 14 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/memory.c b/memory.c >>>> index 2f68d67..ff34aed 100644 >>>> --- a/memory.c >>>> +++ b/memory.c >>>> @@ -1532,9 +1532,15 @@ void memory_listener_unregister(MemoryListene= r *listener) >>>> QTAILQ_REMOVE(&memory_listeners, listener, link); >>>> } >>>> >>>> -void address_space_init(AddressSpace *as, MemoryRegion *root) >>>> +void address_space_init(AddressSpace *as, MemoryRegion *root, bool = lock) >>> >>> >>> Why not always use the lock? Even if the big lock is taken, it doesn= 't >>> hurt. And eventually all address spaces will be fine-grained. >>> >> I had thought only mmio is out of big lock's protection. While others >> address space will take extra expense. So leave them until they are >> ready to be out of big lock. >=20 > The other address spaces are pio (which also needs fine-grained locking= ) > and the dma address spaces (which are like address_space_memory, except= > they are accessed via DMA instead of from the vcpu). The problem is with memory regions that don't do fine-grained locking yet, thus don't provide ref/unref. Then we fall back to taking BQL across dispatch. If the dispatch caller already holds the BQL, we will bail out. As I understand the series, as->lock =3D=3D NULL means that we will never= take any lock during dispatch as the caller is not yet ready for fine-grained locking. This prevents the problem - for PIO at least. But this series should break TCG as it calls into MMIO dispatch from the VCPU while holding the BQL. Jan --------------enig656979DD41DD409AA7D9CF02 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://www.enigmail.net/ iEYEARECAAYFAlCSwv8ACgkQitSsb3rl5xToXgCgtX4bJw3PyDwAiJ0DE7Lo1AoQ tIcAniCSlHSCWDS1fvHAJXz6XJCeZzDr =WYSN -----END PGP SIGNATURE----- --------------enig656979DD41DD409AA7D9CF02--