On 09/11/2012 10:51 AM, Liu Ping Fan wrote: > From: Liu Ping Fan <pingf...@linux.vnet.ibm.com> > > 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