Hi 2016-11-29 16:39 GMT+08:00 Richard W.M. Jones <rjo...@redhat.com>:
> On Mon, Nov 28, 2016 at 05:49:04PM -0800, Li Qiang wrote: > > From: Li Qiang <liqiang...@360.cn> > > > > When the Intel 6300ESB watchdog is hot unplug. The timer allocated > > in realize isn't freed thus leaking memory leak. This patch avoid > > this through adding the exit function. > > I will just note that the real hardware is not hot-pluggable. However > we don't need to stick to the real hardware capabilities, so that's OK. > > If the hardware is not hot-pluggable, we can set dc->hotpluggable = false. > Signed-off-by: Li Qiang <liqiang...@360.cn> > > --- > > hw/watchdog/wdt_i6300esb.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c > > index a83d951..49b3cd1 100644 > > --- a/hw/watchdog/wdt_i6300esb.c > > +++ b/hw/watchdog/wdt_i6300esb.c > > @@ -428,6 +428,14 @@ static void i6300esb_realize(PCIDevice *dev, Error > **errp) > > /* qemu_register_coalesced_mmio (addr, 0x10); ? */ > > } > > > > +static void i6300esb_exit(PCIDevice *dev) > > +{ > > + I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); > > + > > + timer_del(d->timer); > > + timer_free(d->timer); > > +} > > + > > static WatchdogTimerModel model = { > > .wdt_name = "i6300esb", > > .wdt_description = "Intel 6300ESB", > > @@ -441,6 +449,7 @@ static void i6300esb_class_init(ObjectClass *klass, > void *data) > > k->config_read = i6300esb_config_read; > > k->config_write = i6300esb_config_write; > > k->realize = i6300esb_realize; > > + k->exit = i6300esb_exit; > > The wdt_diag288.c file seems to use k->unrealize for this purpose. > I don't know which is correct however. > > > wdt_diag288.c uses dc->unrealize for DeviceClass, while k->exit if for PCIDeviceClass. I have tested this patch, it's ok. So we should make it not hotpluggable or just remain this? Thanks Li Qiang > > > k->vendor_id = PCI_VENDOR_ID_INTEL; > > k->device_id = PCI_DEVICE_ID_INTEL_ESB_9; > > k->class_id = PCI_CLASS_SYSTEM_OTHER; > > -- > > 1.8.3.1 > > -- > Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~ > rjones > Read my programming and virtualization blog: http://rwmj.wordpress.com > virt-p2v converts physical machines to virtual machines. Boot with a > live CD or over the network (PXE) and turn machines into KVM guests. > http://libguestfs.org/virt-v2v >