All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Anton Yakovlev <anton.yakovlev@opensynergy.com>
Cc: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>,
	<virtualization@lists.linux-foundation.org>,
	<alsa-devel@alsa-project.org>, <virtio-dev@lists.oasis-open.org>,
	<linux-kernel@vger.kernel.org>, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [virtio-dev] Re: [PATCH v2 2/9] ALSA: virtio: add virtio sound driver
Date: Wed, 03 Feb 2021 18:39:59 +0100	[thread overview]
Message-ID: <s5hy2g582z4.wl-tiwai@suse.de> (raw)
In-Reply-To: <fb4808e7-28d6-996e-02fc-c63d0e1d8221@opensynergy.com>

On Wed, 03 Feb 2021 18:34:12 +0100,
Anton Yakovlev wrote:
> 
> Hi Takashi,
> 
> 
> On 03.02.2021 17:59, Takashi Iwai wrote:
> > On Tue, 02 Feb 2021 00:18:09 +0100,
> > Anton Yakovlev wrote:
> >>>> +/**
> >>>> + * virtsnd_reset_fn() - Kernel worker's function to reset the device.
> >>>> + * @work: Reset device work.
> >>>> + *
> >>>> + * Context: Process context.
> >>>> + */
> >>>> +static void virtsnd_reset_fn(struct work_struct *work)
> >>>> +{
> >>>> +     struct virtio_snd *snd =
> >>>> +             container_of(work, struct virtio_snd, reset_work);
> >>>> +     struct virtio_device *vdev = snd->vdev;
> >>>> +     struct device *dev = &vdev->dev;
> >>>> +     int rc;
> >>>> +
> >>>> +     dev_info(dev, "sound device needs reset\n");
> >>>> +
> >>>> +     /*
> >>>> +      * It seems that the only way to properly reset the device is to
> >>>> remove
> >>>> +      * and re-create the ALSA sound card device.
> >>>> +      *
> >>>> +      * Also resetting the device involves a number of steps with
> >>>> setting the
> >>>> +      * status bits described in the virtio specification. And the
> >>>> easiest
> >>>> +      * way to get everything right is to use the virtio bus interface.
> >>>> +      */
> >>>> +     rc = dev->bus->remove(dev);
> >>>> +     if (rc)
> >>>> +             dev_warn(dev, "bus->remove() failed: %d", rc);
> >>>> +
> >>>> +     rc = dev->bus->probe(dev);
> >>>> +     if (rc)
> >>>> +             dev_err(dev, "bus->probe() failed: %d", rc);
> >>>
> >>> This looks very suspicious to me. Wondering what ALSA maintainers
> >> will say
> >>> to this.
> >>
> >> I'm also wondering what the virtio people have to say. This part is a
> >> purely virtio specific thing. And since none of the existing virtio
> >> drivers processes the request to reset the device, it is not clear what
> >> is the best way to proceed here. For this reason, the most
> >> straightforward and simple solution was chosen.
> >
> > What is this "reset" actually supposed to do?  Reconfguring
> > everything, or changing only certain parameters, devices, whatever?
> 
> It means bringing this particular device to its initial state.
> 
> After that, the driver can re-read the configurations from the device
> and reconfigure everything.

So all running processes have to be finished before starting
resetting?  It sounds indeed like a complete device re-binding, and if
so, doing with the proper dev_*() API might be saner than the brute
force bus->remove() and bus->probe() calls...


thanks,

Takashi

WARNING: multiple messages have this Message-ID (diff)
From: Takashi Iwai <tiwai@suse.de>
To: Anton Yakovlev <anton.yakovlev@opensynergy.com>
Cc: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>,
	alsa-devel@alsa-project.org, virtio-dev@lists.oasis-open.org,
	Takashi Iwai <tiwai@suse.com>,
	linux-kernel@vger.kernel.org,
	"Michael S. Tsirkin" <mst@redhat.com>,
	virtualization@lists.linux-foundation.org
Subject: Re: [virtio-dev] Re: [PATCH v2 2/9] ALSA: virtio: add virtio sound driver
Date: Wed, 03 Feb 2021 18:39:59 +0100	[thread overview]
Message-ID: <s5hy2g582z4.wl-tiwai@suse.de> (raw)
In-Reply-To: <fb4808e7-28d6-996e-02fc-c63d0e1d8221@opensynergy.com>

On Wed, 03 Feb 2021 18:34:12 +0100,
Anton Yakovlev wrote:
> 
> Hi Takashi,
> 
> 
> On 03.02.2021 17:59, Takashi Iwai wrote:
> > On Tue, 02 Feb 2021 00:18:09 +0100,
> > Anton Yakovlev wrote:
> >>>> +/**
> >>>> + * virtsnd_reset_fn() - Kernel worker's function to reset the device.
> >>>> + * @work: Reset device work.
> >>>> + *
> >>>> + * Context: Process context.
> >>>> + */
> >>>> +static void virtsnd_reset_fn(struct work_struct *work)
> >>>> +{
> >>>> +     struct virtio_snd *snd =
> >>>> +             container_of(work, struct virtio_snd, reset_work);
> >>>> +     struct virtio_device *vdev = snd->vdev;
> >>>> +     struct device *dev = &vdev->dev;
> >>>> +     int rc;
> >>>> +
> >>>> +     dev_info(dev, "sound device needs reset\n");
> >>>> +
> >>>> +     /*
> >>>> +      * It seems that the only way to properly reset the device is to
> >>>> remove
> >>>> +      * and re-create the ALSA sound card device.
> >>>> +      *
> >>>> +      * Also resetting the device involves a number of steps with
> >>>> setting the
> >>>> +      * status bits described in the virtio specification. And the
> >>>> easiest
> >>>> +      * way to get everything right is to use the virtio bus interface.
> >>>> +      */
> >>>> +     rc = dev->bus->remove(dev);
> >>>> +     if (rc)
> >>>> +             dev_warn(dev, "bus->remove() failed: %d", rc);
> >>>> +
> >>>> +     rc = dev->bus->probe(dev);
> >>>> +     if (rc)
> >>>> +             dev_err(dev, "bus->probe() failed: %d", rc);
> >>>
> >>> This looks very suspicious to me. Wondering what ALSA maintainers
> >> will say
> >>> to this.
> >>
> >> I'm also wondering what the virtio people have to say. This part is a
> >> purely virtio specific thing. And since none of the existing virtio
> >> drivers processes the request to reset the device, it is not clear what
> >> is the best way to proceed here. For this reason, the most
> >> straightforward and simple solution was chosen.
> >
> > What is this "reset" actually supposed to do?  Reconfguring
> > everything, or changing only certain parameters, devices, whatever?
> 
> It means bringing this particular device to its initial state.
> 
> After that, the driver can re-read the configurations from the device
> and reconfigure everything.

So all running processes have to be finished before starting
resetting?  It sounds indeed like a complete device re-binding, and if
so, doing with the proper dev_*() API might be saner than the brute
force bus->remove() and bus->probe() calls...


thanks,

Takashi

  reply	other threads:[~2021-02-03 17:41 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-24 16:53 [PATCH v2 0/9] ALSA: add virtio sound driver Anton Yakovlev
2021-01-24 16:53 ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:53 ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 1/9] uapi: virtio_ids: add a sound device type ID from OASIS spec Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 2/9] ALSA: virtio: add virtio sound driver Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-25 14:54   ` Guennadi Liakhovetski
2021-01-25 14:54     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-25 14:54     ` Guennadi Liakhovetski
2021-01-25 14:54     ` Guennadi Liakhovetski
2021-02-01 23:18     ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-02-03 16:59       ` Takashi Iwai
2021-02-03 16:59         ` Takashi Iwai
2021-02-03 17:34         ` Anton Yakovlev
2021-02-03 17:34           ` Anton Yakovlev
2021-02-03 17:34           ` Anton Yakovlev
2021-02-03 17:34           ` Anton Yakovlev
2021-02-03 17:39           ` Takashi Iwai [this message]
2021-02-03 17:39             ` Takashi Iwai
2021-01-24 16:54 ` [PATCH v2 3/9] ALSA: virtio: handling control messages Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-25 15:22   ` Guennadi Liakhovetski
2021-01-25 15:22     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-25 15:22     ` Guennadi Liakhovetski
2021-01-25 15:22     ` Guennadi Liakhovetski
2021-02-01 23:18     ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-02-01 23:18       ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 4/9] ALSA: virtio: build PCM devices and substream hardware descriptors Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-25 15:44   ` Guennadi Liakhovetski
2021-01-25 15:44     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-25 15:44     ` Guennadi Liakhovetski
2021-01-25 15:44     ` Guennadi Liakhovetski
2021-02-01 23:19     ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:19       ` Anton Yakovlev
2021-02-01 23:19       ` Anton Yakovlev
2021-02-01 23:19       ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 5/9] ALSA: virtio: handling control and I/O messages for the PCM device Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-25 16:25   ` Guennadi Liakhovetski
2021-01-25 16:25     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-25 16:25     ` Guennadi Liakhovetski
2021-01-25 16:25     ` Guennadi Liakhovetski
2021-02-01 23:20     ` Anton Yakovlev
2021-02-01 23:20       ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:20       ` Anton Yakovlev
2021-02-01 23:20       ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 6/9] ALSA: virtio: PCM substream operators Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-25 16:59   ` Guennadi Liakhovetski
2021-01-25 16:59     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-25 16:59     ` Guennadi Liakhovetski
2021-01-25 16:59     ` Guennadi Liakhovetski
2021-01-26  7:25     ` Guennadi Liakhovetski
2021-01-26  7:25       ` [virtio-dev] " Guennadi Liakhovetski
2021-01-26  7:25       ` Guennadi Liakhovetski
2021-01-26  7:25       ` Guennadi Liakhovetski
2021-02-01 23:21     ` Anton Yakovlev
2021-02-01 23:21       ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:21       ` Anton Yakovlev
2021-02-01 23:21       ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 7/9] ALSA: virtio: introduce jack support Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-26  7:40   ` Guennadi Liakhovetski
2021-01-26  7:40     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-26  7:40     ` Guennadi Liakhovetski
2021-01-26  7:40     ` Guennadi Liakhovetski
2021-01-24 16:54 ` [PATCH v2 8/9] ALSA: virtio: introduce PCM channel map support Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-26  9:22   ` Guennadi Liakhovetski
2021-01-26  9:22     ` [virtio-dev] " Guennadi Liakhovetski
2021-01-26  9:22     ` Guennadi Liakhovetski
2021-01-26  9:22     ` Guennadi Liakhovetski
2021-02-01 23:21     ` Anton Yakovlev
2021-02-01 23:21       ` [virtio-dev] " Anton Yakovlev
2021-02-01 23:21       ` Anton Yakovlev
2021-02-01 23:21       ` Anton Yakovlev
2021-01-24 16:54 ` [PATCH v2 9/9] ALSA: virtio: introduce device suspend/resume support Anton Yakovlev
2021-01-24 16:54   ` [virtio-dev] " Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-01-24 16:54   ` Anton Yakovlev
2021-02-03 18:07 ` [PATCH v2 0/9] ALSA: add virtio sound driver Takashi Iwai
2021-02-08 10:23   ` Anton Yakovlev
2021-02-08 10:23     ` [virtio-dev] " Anton Yakovlev
2021-02-08 10:23     ` Anton Yakovlev
2021-02-08 10:32     ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hy2g582z4.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=anton.yakovlev@opensynergy.com \
    --cc=guennadi.liakhovetski@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    --cc=virtio-dev@lists.oasis-open.org \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.