qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] audio: ac97: add exit function


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH] audio: ac97: add exit function
Date: Tue, 13 Dec 2016 17:43:53 +0000

Hi

On Tue, Dec 13, 2016 at 11:56 AM Li Qiang <address@hidden> wrote:

> Ping!
>
> 2016-11-29 18:33 GMT+08:00 Li Qiang <address@hidden>:
>
> > From: Li Qiang <address@hidden>
> >
> > Currently the ac97 device emulation doesn't have a exit function,
> > hot unplug this device will leak some leak. Add a exit function to
> > avoid this.
> >
> > Signed-off-by: Li Qiang <address@hidden>
> > ---
> >  hw/audio/ac97.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
> > index cbd959e..2faed35 100644
> > --- a/hw/audio/ac97.c
> > +++ b/hw/audio/ac97.c
> > @@ -1387,6 +1387,13 @@ static void ac97_realize(PCIDevice *dev, Error
> > **errp)
> >      ac97_on_reset (&s->dev.qdev);
> >  }
> >
> > +static void ac97_exit(PCIDevice *dev)
> > +{
> > +    AC97LinkState *s = DO_UPCAST(AC97LinkState, dev, dev);
> > +
> > +    AUD_remove_card(&s->card);
> > +}
> > +
>

Looks good, but even better is to close the streams

 diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c
index 2faed35627..3dcfe9d67c 100644
--- a/hw/audio/ac97.c
+++ b/hw/audio/ac97.c
@@ -1391,6 +1391,9 @@ static void ac97_exit(PCIDevice *dev)
 {
     AC97LinkState *s = DO_UPCAST(AC97LinkState, dev, dev);

+    AUD_close_in (&s->card, s->voice_pi);
+    AUD_close_out (&s->card, s->voice_po);
+    AUD_close_in (&s->card, s->voice_mc);
     AUD_remove_card(&s->card);
 }

We could also investigate if AUD_remove_card could do that instead.

>  static int ac97_init (PCIBus *bus)
> >  {
> >      pci_create_simple (bus, -1, "AC97");
> > @@ -1404,6 +1411,7 @@ static void ac97_class_init (ObjectClass *klass,
> > void *data)
> >      PCIDeviceClass *k = PCI_DEVICE_CLASS (klass);
> >
> >      k->realize = ac97_realize;
> > +    k->exit = ac97_exit;
> >      k->vendor_id = PCI_VENDOR_ID_INTEL;
> >      k->device_id = PCI_DEVICE_ID_INTEL_82801AA_5;
> >      k->revision = 0x01;
> > --
> > 1.8.3.1
> >
> >
>
-- 
Marc-André Lureau


reply via email to

[Prev in Thread] Current Thread [Next in Thread]