From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33054) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQarW-0004MV-7z for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:33:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TQarM-0006Ey-Fp for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:33:26 -0400 Received: from mail-wg0-f53.google.com ([74.125.82.53]:35938) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQarM-0006Es-9X for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:33:16 -0400 Received: by mail-wg0-f53.google.com with SMTP id dr1so2353440wgb.10 for ; Tue, 23 Oct 2012 02:33:15 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <50865E3F.4010809@siemens.com> References: <1350897839-29593-1-git-send-email-pingfank@linux.vnet.ibm.com> <1350897839-29593-14-git-send-email-pingfank@linux.vnet.ibm.com> <50852299.8090109@redhat.com> <50865E3F.4010809@siemens.com> From: liu ping fan Date: Tue, 23 Oct 2012 17:32:55 +0800 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [Qemu-devel] [patch v4 13/16] e1000: add busy flag to anti broken device state List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Liu Ping Fan , Stefan Hajnoczi , Marcelo Tosatti , "qemu-devel@nongnu.org" , Avi Kivity , Anthony Liguori , Paolo Bonzini On Tue, Oct 23, 2012 at 5:07 PM, Jan Kiszka wrote: > On 2012-10-23 07:52, liu ping fan wrote: >> On Mon, Oct 22, 2012 at 6:40 PM, Avi Kivity wrote: >>> On 10/22/2012 11:23 AM, Liu Ping Fan wrote: >>>> The broken device state is caused by releasing local lock before acquiring >>>> big lock. To fix this issue, we have two choice: >>>> 1.use busy flag to protect the state >>>> The drawback is that we will introduce independent busy flag for each >>>> independent device's logic unit. >>>> 2.reload the device's state >>>> The drawback is if the call chain is too deep, the action to reload will >>>> touch each layer. Also the reloading means to recaculate the intermediate >>>> result based on device's regs. >>>> >>>> This patch adopt the solution 1 to fix the issue. >>> >>> Doesn't the nested mmio patch detect this? >>> >> It will only record and fix the issue on one thread. But guest can >> touch the emulated device on muti-threads. > > Sorry, what does that mean? A second VCPU accessing the device will > simply be ignored when it races with another VCPU? Specifically > Yes, just ignored. For device which support many logic in parallel, it should use independent busy flag for each logic Regards, pingfan > + if (s->busy) { > + return; > > and > > + uint64_t ret = 0; > + > + if (s->busy) { > + return ret; > > is worrying me. > > Jan > > -- > Siemens AG, Corporate Technology, CT RTC ITP SDP-DE > Corporate Competence Center Embedded Linux