From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBLyW-0002VD-8t for qemu-devel@nongnu.org; Tue, 11 Sep 2012 04:37:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TBLyQ-0004Ox-Ba for qemu-devel@nongnu.org; Tue, 11 Sep 2012 04:37:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13158) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBLyQ-0004Ot-3W for qemu-devel@nongnu.org; Tue, 11 Sep 2012 04:37:34 -0400 Message-ID: <504EF848.6080002@redhat.com> Date: Tue, 11 Sep 2012 11:37:28 +0300 From: Avi Kivity MIME-Version: 1.0 References: <1347349912-15611-1-git-send-email-qemulist@gmail.com> <1347349912-15611-8-git-send-email-qemulist@gmail.com> In-Reply-To: <1347349912-15611-8-git-send-email-qemulist@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH V3 07/11] memory: implement e1000's MemoryRegionOps ref/unref List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Liu Ping Fan Cc: Jan Kiszka , Marcelo Tosatti , qemu-devel@nongnu.org, Anthony Liguori , Paolo Bonzini On 09/11/2012 10:51 AM, Liu Ping Fan wrote: > From: Liu Ping Fan > > With this, e1000 show to memory core that it can be protected by > refcnt. > > diff --git a/hw/e1000.c b/hw/e1000.c > index ae8a6c5..df3a349 100644 > --- a/hw/e1000.c > +++ b/hw/e1000.c > @@ -1037,9 +1037,26 @@ e1000_mmio_read(void *opaque, target_phys_addr_t addr, unsigned size) > return 0; > } > > +static int e1000_mmio_ref(MemoryRegion *mr) > +{ > + E1000State *e1000 = container_of(mr, E1000State, mmio); > + > + object_ref(OBJECT(e1000)); > + return 1; > +} > + > +static void e1000_mmio_unref(MemoryRegion *mr) > +{ > + E1000State *e1000 = container_of(mr, E1000State, mmio); > + > + object_unref(OBJECT(e1000)); > +} > + > static const MemoryRegionOps e1000_mmio_ops = { > .read = e1000_mmio_read, > .write = e1000_mmio_write, > + .ref = e1000_mmio_ref, > + .unref = e1000_mmio_unref, > .endianness = DEVICE_LITTLE_ENDIAN, > .impl = { > .min_access_size = 4, > Does e1000_mmio_write() never call functions that assume bql protection? The network layer, timers, and qemu_irq all need protection. -- error compiling committee.c: too many arguments to function