From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:52057) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpMMU-0004rn-U2 for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:30:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QpMMU-0000Vz-3z for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:30:58 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:44363) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QpMMT-0000Vq-Qc for qemu-devel@nongnu.org; Fri, 05 Aug 2011 11:30:57 -0400 Received: by gyd12 with SMTP id 12so959777gyd.4 for ; Fri, 05 Aug 2011 08:30:57 -0700 (PDT) Message-ID: <4E3C0CAE.6060801@codemonkey.ws> Date: Fri, 05 Aug 2011 10:30:54 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1312463195-13605-1-git-send-email-avi@redhat.com> <1312463195-13605-30-git-send-email-avi@redhat.com> In-Reply-To: <1312463195-13605-30-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 29/39] sun4u: convert to memory API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" On 08/04/2011 08:06 AM, Avi Kivity wrote: > fixes memory leak on repeated BAR map/unmap > > Reviewed-by: Richard Henderson > Signed-off-by: Avi Kivity > --- > hw/sun4u.c | 55 +++++++++++++++++++++++++------------------------------ > 1 files changed, 25 insertions(+), 30 deletions(-) > > diff --git a/hw/sun4u.c b/hw/sun4u.c > index d7dcaf0..74a06a8 100644 > --- a/hw/sun4u.c > +++ b/hw/sun4u.c > @@ -91,6 +91,12 @@ struct hwdef { > uint64_t console_serial_base; > }; > > +typedef struct EbusState { > + PCIDevice pci_dev; > + MemoryRegion bar0; > + MemoryRegion bar1; > +} EbusState; > + > int DMA_get_channel_mode (int nchan) > { > return 0; > @@ -518,21 +524,6 @@ void cpu_tick_set_limit(CPUTimer *timer, uint64_t limit) > } > } > > -static void ebus_mmio_mapfunc(PCIDevice *pci_dev, int region_num, > - pcibus_t addr, pcibus_t size, int type) > -{ > - EBUS_DPRINTF("Mapping region %d registers at %" FMT_PCIBUS "\n", > - region_num, addr); > - switch (region_num) { > - case 0: > - isa_mmio_init(addr, 0x1000000); > - break; > - case 1: > - isa_mmio_init(addr, 0x800000); > - break; > - } > -} > - > static void dummy_isa_irq_handler(void *opaque, int n, int level) > { > } > @@ -549,27 +540,31 @@ pci_ebus_init(PCIBus *bus, int devfn) > } > > static int > -pci_ebus_init1(PCIDevice *s) > +pci_ebus_init1(PCIDevice *pci_dev) > { > - isa_bus_new(&s->qdev); > + EbusState *s = container_of(pci_dev, EbusState, pci_dev); DO_UPCAST() is the qdev macro for this. Regards, Anthony Liguori