From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51989) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQaRL-0005rx-Ou for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:06:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TQaRF-000740-S6 for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:06:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58437) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TQaRF-00073s-Ic for qemu-devel@nongnu.org; Tue, 23 Oct 2012 05:06:17 -0400 Message-ID: <50865E01.20905@redhat.com> Date: Tue, 23 Oct 2012 11:06:09 +0200 From: Avi Kivity MIME-Version: 1.0 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> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 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: liu ping fan Cc: Liu Ping Fan , Stefan Hajnoczi , Marcelo Tosatti , qemu-devel@nongnu.org, Anthony Liguori , Jan Kiszka , Paolo Bonzini On 10/23/2012 07:52 AM, 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. I forgot about that. I propose that we merge without a fix. Upstream is broken in the same way; it won't deadlock but it will surely break in some other way if a write can cause another write to be triggered to the same location. When we gain more experience with fine-graining devices we can converge on a good solution. -- error compiling committee.c: too many arguments to function