From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NN2vM-0006fC-UV for qemu-devel@nongnu.org; Tue, 22 Dec 2009 06:29:08 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NN2vH-0006eb-C9 for qemu-devel@nongnu.org; Tue, 22 Dec 2009 06:29:07 -0500 Received: from [199.232.76.173] (port=42058 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NN2vH-0006eW-6W for qemu-devel@nongnu.org; Tue, 22 Dec 2009 06:29:03 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43272) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NN2vA-0002Am-OF for qemu-devel@nongnu.org; Tue, 22 Dec 2009 06:29:02 -0500 Date: Tue, 22 Dec 2009 13:26:01 +0200 From: "Michael S. Tsirkin" Message-ID: <20091222112601.GA16053@redhat.com> References: <20091208161818.GA32188@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091208161818.GA32188@redhat.com> Subject: [Qemu-devel] Re: [PATCH-RFC 0/3] qemu: memory barriers in virtio List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Anthony Liguori , Paul Brook On Tue, Dec 08, 2009 at 06:18:18PM +0200, Michael S. Tsirkin wrote: > The following fixes a class of long-standing bugs in qemu: > when kvm is enabled, guest might access device structures > in memory while they are updated by qemu on another CPU. > In this scenario, memory barriers are necessary to prevent > host CPU from reordering memory accesses, which might confuse > the guest. > > This patch only fixes virtio, but other emulated devices > might have a similar bug. They'll need to be discovered > and addressed case by case. > > This is still under test ... meanwhile: any early feedback/flames? > Any comments on this one? The patch works fine in my testing, and even though it did not fix a crash that I hoped it will fix, it seems required for correctness... Right? > Michael S. Tsirkin (3): > qemu: add barriers.h header > virtio: use a real wmb > virtio: add missing barriers > > hw/barriers.h | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > hw/virtio.c | 18 ++++---- > 2 files changed, 139 insertions(+), 10 deletions(-) > create mode 100644 hw/barriers.h >