Re: [PATCH v1 3/4] virtio-snd: factor card removal out of unrealize()
On 22/4/24 15:27, Philippe Mathieu-Daudé wrote: On 22/4/24 14:52, Manos Pitsidianakis wrote: Extract audio card removal logic out of the device unrealize callback so that it can be re-used in follow up commits. Signed-off-by: Manos Pitsidianakis --- hw/audio/virtio-snd.c | 20 ++-- 1 file changed, 14 insertions(+), 6 deletions(-) -static void virtio_snd_unrealize(DeviceState *dev) +/* Remove audio card and cleanup streams. */ +static void virtio_snd_unsetup(VirtIOSound *vsnd) Maybe s/unsetup/cleanup/? Or 'teardown'? { - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VirtIOSound *vsnd = VIRTIO_SND(dev); VirtIOSoundPCMStream *stream; - qemu_del_vm_change_state_handler(vsnd->vmstate); - trace_virtio_snd_unrealize(vsnd); - if (vsnd->pcm) { if (vsnd->pcm->streams) { for (uint32_t i = 0; i < vsnd->snd_conf.streams; i++) { @@ -1370,6 +1366,18 @@ static void virtio_snd_unrealize(DeviceState *dev) vsnd->pcm = NULL; } AUD_remove_card(>card); +}
Re: [PATCH v1 3/4] virtio-snd: factor card removal out of unrealize()
On 22/4/24 14:52, Manos Pitsidianakis wrote: Extract audio card removal logic out of the device unrealize callback so that it can be re-used in follow up commits. Signed-off-by: Manos Pitsidianakis --- hw/audio/virtio-snd.c | 20 ++-- 1 file changed, 14 insertions(+), 6 deletions(-) -static void virtio_snd_unrealize(DeviceState *dev) +/* Remove audio card and cleanup streams. */ +static void virtio_snd_unsetup(VirtIOSound *vsnd) Maybe s/unsetup/cleanup/? { -VirtIODevice *vdev = VIRTIO_DEVICE(dev); -VirtIOSound *vsnd = VIRTIO_SND(dev); VirtIOSoundPCMStream *stream; -qemu_del_vm_change_state_handler(vsnd->vmstate); -trace_virtio_snd_unrealize(vsnd); - if (vsnd->pcm) { if (vsnd->pcm->streams) { for (uint32_t i = 0; i < vsnd->snd_conf.streams; i++) { @@ -1370,6 +1366,18 @@ static void virtio_snd_unrealize(DeviceState *dev) vsnd->pcm = NULL; } AUD_remove_card(>card); +}
[PATCH v1 3/4] virtio-snd: factor card removal out of unrealize()
Extract audio card removal logic out of the device unrealize callback so that it can be re-used in follow up commits. Signed-off-by: Manos Pitsidianakis --- hw/audio/virtio-snd.c | 20 ++-- 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 82dd320ebe..a9cfaea046 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -1343,15 +1343,11 @@ static inline void virtio_snd_pcm_flush(VirtIOSoundPCMStream *stream) } } -static void virtio_snd_unrealize(DeviceState *dev) +/* Remove audio card and cleanup streams. */ +static void virtio_snd_unsetup(VirtIOSound *vsnd) { -VirtIODevice *vdev = VIRTIO_DEVICE(dev); -VirtIOSound *vsnd = VIRTIO_SND(dev); VirtIOSoundPCMStream *stream; -qemu_del_vm_change_state_handler(vsnd->vmstate); -trace_virtio_snd_unrealize(vsnd); - if (vsnd->pcm) { if (vsnd->pcm->streams) { for (uint32_t i = 0; i < vsnd->snd_conf.streams; i++) { @@ -1370,6 +1366,18 @@ static void virtio_snd_unrealize(DeviceState *dev) vsnd->pcm = NULL; } AUD_remove_card(>card); +} + +static void virtio_snd_unrealize(DeviceState *dev) +{ +VirtIODevice *vdev = VIRTIO_DEVICE(dev); +VirtIOSound *vsnd = VIRTIO_SND(dev); + +qemu_del_vm_change_state_handler(vsnd->vmstate); +trace_virtio_snd_unrealize(vsnd); + +virtio_snd_unsetup(vsnd); + qemu_mutex_destroy(>cmdq_mutex); virtio_delete_queue(vsnd->queues[VIRTIO_SND_VQ_CONTROL]); virtio_delete_queue(vsnd->queues[VIRTIO_SND_VQ_EVENT]); -- γαῖα πυρί μιχθήτω