From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEGae-0004E7-MG for qemu-devel@nongnu.org; Wed, 19 Sep 2012 05:29:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TEGaY-0000hL-S0 for qemu-devel@nongnu.org; Wed, 19 Sep 2012 05:29:04 -0400 Received: from david.siemens.de ([192.35.17.14]:22340) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TEGaY-0000hH-IG for qemu-devel@nongnu.org; Wed, 19 Sep 2012 05:28:58 -0400 Message-ID: <50599058.3040904@siemens.com> Date: Wed, 19 Sep 2012 11:28:56 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <50597D1F.3070607@redhat.com> <50598B58.4010704@redhat.com> <50598D0D.2090608@redhat.com> <50598F0C.2040301@redhat.com> <50598FFA.5@siemens.com> In-Reply-To: <50598FFA.5@siemens.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [big lock] Discussion about the convention of device's DMA each other after breaking down biglock List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marcelo Tosatti , "qemu-devel@nongnu.org" , liu ping fan , Avi Kivity , Anthony Liguori , Paolo Bonzini On 2012-09-19 11:27, Jan Kiszka wrote: > On 2012-09-19 11:23, Avi Kivity wrote: >> On 09/19/2012 12:19 PM, liu ping fan wrote: >>> On Wed, Sep 19, 2012 at 5:14 PM, Paolo Bonzini wrote: >>>> Il 19/09/2012 11:11, liu ping fan ha scritto: >>>>>>> Why not? devA will drop its local lock, devX will retake the big lock >>>>>>> recursively, devB will take its local lock. In the end, we have biglock >>>>>>> -> devB. >>>>>>> >>>>> But when adopting local lock, we assume take local lock, then biglock. >>>> >>>> No, because the local lock will be dropped before taking the biglock. >>>> The order must always be coarse->fine. >>>> >>> But if we takes coarse firstly, then the mmio-dispatcher will still >>> contend for the big lock against each other. >> >> Can you detail the sequence? >> >>> >>>> I don't know if the front-end (device) lock should come before or after >>>> the back-end (e.g. netdev) lock in the hierarchy, but that's another story. >>>> >>> I think fine->coarse may be the rule, since for some code path, it is >>> not necessary to take coarse lock. >> >> coarse->fine doesn't mean you have to take the coarse lock. >> >> Valid: >> lock(coarse) >> lock(fine) > > This is invalid due to prio inversion issues, independent of potential > deadlocks. Err, forget it - the other way around is the problem. Sorry, Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux