adjusted via ALSA APIs.
Reviewed-by: Marcin Radomski
Tested-By: Marcin Radomski
--
Anton Yakovlev
Senior Software Engineer
OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
: Randy Dunlap
Cc: Anton Yakovlev
Cc: "Michael S. Tsirkin"
Cc: virtualizat...@lists.linux-foundation.org
Cc: alsa-de...@alsa-project.org
Thanks for fixing the copy/paste mistake. :)
Reviewed-by: Anton Yakovlev
---
sound/virtio/virtio_ctl_msg.c |2 +-
1 file changed, 1 inser
On 08.04.2021 14:54, Chen Huang wrote
module_virtio_driver() makes the code simpler by eliminating
boilerplate code.
Signed-off-by: Chen Huang
Thanks for the patch.
Reviewed-by: Anton Yakovlev
---
sound/virtio/virtio_card.c | 12 +---
1 file changed, 1 insertion(+), 11
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 2 +
sound/virtio/virtio_pcm.h | 5 +
sound/virtio/virtio_pcm_ops.c | 445 ++
4
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 14
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 18 ++
sound/virtio/virtio_card.h | 10 +
sound
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 10 ++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 219
sound
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 56 +++
sound/virtio/virtio_pcm.h | 3 ++
sound/virtio/virtio_pcm_ops.c | 33 -
3
Introduce skeleton of the virtio sound driver. The driver implements
the virtio sound device specification, which has become part of the
virtio standard.
Initial initialization of the device, virtqueues and creation of an
empty ALSA sound device.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 13 ++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 310 ++
sound/virtio/virtio_ctl_msg.h | 78 +
5 files
On 02.03.2021 10:11, Takashi Iwai wrote:
On Tue, 02 Mar 2021 09:09:33 +0100,
Anton Yakovlev wrote:
On 02.03.2021 07:48, Takashi Iwai wrote:
On Tue, 02 Mar 2021 07:29:20 +0100,
Anton Yakovlev wrote:
On 28.02.2021 13:05, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:56 +0100,
Anton Yakovlev
On 02.03.2021 07:48, Takashi Iwai wrote:
On Tue, 02 Mar 2021 07:29:20 +0100,
Anton Yakovlev wrote:
On 28.02.2021 13:05, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:56 +0100,
Anton Yakovlev wrote:
[snip]
--- a/sound/virtio/virtio_pcm.c
+++ b/sound/virtio/virtio_pcm.c
@@ -109,6 +109,7
On 28.02.2021 13:05, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:56 +0100,
Anton Yakovlev wrote:
[snip]
--- a/sound/virtio/virtio_pcm.c
+++ b/sound/virtio/virtio_pcm.c
@@ -109,6 +109,7 @@ static int virtsnd_pcm_build_hw(struct virtio_pcm_substream
*vss
On 01.03.2021 14:38, Takashi Iwai wrote:
On Mon, 01 Mar 2021 11:03:04 +0100,
Anton Yakovlev wrote:
On 28.02.2021 13:05, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:56 +0100,
Anton Yakovlev wrote:
All running PCM substreams are stopped on device suspend and restarted
on device resume
On 01.03.2021 15:56, Takashi Iwai wrote:
On Mon, 01 Mar 2021 15:47:46 +0100,
Anton Yakovlev wrote:
On 01.03.2021 14:32, Takashi Iwai wrote:
On Mon, 01 Mar 2021 10:25:05 +0100,
Anton Yakovlev wrote:
On 28.02.2021 12:27, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:52 +0100,
Anton Yakovlev
On 01.03.2021 14:32, Takashi Iwai wrote:
On Mon, 01 Mar 2021 10:25:05 +0100,
Anton Yakovlev wrote:
On 28.02.2021 12:27, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:52 +0100,
Anton Yakovlev wrote:
+/**
+ * virtsnd_pcm_event() - Handle the PCM device event notification.
+ * @snd: VirtIO
On 28.02.2021 13:05, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:56 +0100,
Anton Yakovlev wrote:
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 56
On 28.02.2021 12:32, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:53 +0100,
Anton Yakovlev wrote:
[snip]
+static snd_pcm_uframes_t
+virtsnd_pcm_pointer(struct snd_pcm_substream *substream)
+{
+ struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream
On 28.02.2021 12:27, Takashi Iwai wrote:
On Sat, 27 Feb 2021 09:59:52 +0100,
Anton Yakovlev wrote:
+/**
+ * virtsnd_pcm_event() - Handle the PCM device event notification.
+ * @snd: VirtIO sound device.
+ * @event: VirtIO sound event.
+ *
+ * Context: Interrupt context.
OK, then nonatomic PCM
On 28.02.2021 12:04, Takashi Iwai wrote:> On Sat, 27 Feb 2021 09:59:50
+0100,
Anton Yakovlev wrote:
--- a/sound/virtio/virtio_card.c
+++ b/sound/virtio/virtio_card.c
@@ -11,6 +11,10 @@
#include "virtio_card.h"
+int msg_timeout_ms = MSEC_PER_SEC;
+module_param(msg_timeout_
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 10 ++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 219
sound
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 56 +++
sound/virtio/virtio_pcm.c | 1 +
sound/virtio/virtio_pcm_ops.c | 41
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 14
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 2 +
sound/virtio/virtio_pcm.h | 4 +
sound/virtio/virtio_pcm_ops.c | 453 ++
4
Introduce skeleton of the virtio sound driver. The driver implements
the virtio sound device specification, which has become part of the
virtio standard.
Initial initialization of the device, virtqueues and creation of an
empty ALSA sound device.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 14 ++
sound/virtio/virtio_card.h | 10 +
sound
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 13 ++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 310 ++
sound/virtio/virtio_ctl_msg.h | 78 +
5 files
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
ing from the changes put in
sound/* directory.
Then should I update the MAINTAINERS and add Takashi instead of
Michael, or should I put both of you there?
--
Anton Yakovlev
Senior Software Engineer
OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
On 26.02.2021 15:23, Takashi Iwai wrote:
On Thu, 25 Feb 2021 23:19:31 +0100,
Anton Yakovlev wrote:
On 25.02.2021 21:30, Takashi Iwai wrote:> On Thu, 25 Feb 2021 20:02:50
+0100,
Michael S. Tsirkin wrote:
On Thu, Feb 25, 2021 at 01:51:16PM +0100, Takashi Iwai wrote:
On Thu, 25 Feb 2021 13
On 25.02.2021 21:30, Takashi Iwai wrote:> On Thu, 25 Feb 2021 20:02:50
+0100,
Michael S. Tsirkin wrote:
On Thu, Feb 25, 2021 at 01:51:16PM +0100, Takashi Iwai wrote:
On Thu, 25 Feb 2021 13:14:37 +0100,
Anton Yakovlev wrote:
[snip]
Takashi given I was in my tree for a while and I plan
On 25.02.2021 11:55, Takashi Iwai wrote:
On Mon, 22 Feb 2021 16:34:41 +0100,
Anton Yakovlev wrote:
+static int virtsnd_pcm_open(struct snd_pcm_substream *substream)
+{
+ struct virtio_pcm *vpcm = snd_pcm_substream_chip(substream);
+ struct virtio_pcm_substream *vss = NULL;
+
+ if
On 25.02.2021 11:38, Takashi Iwai wrote:
On Mon, 22 Feb 2021 16:34:37 +0100,
Anton Yakovlev wrote:
+static int virtsnd_find_vqs(struct virtio_snd *snd)
+{
+ struct virtio_device *vdev = snd->vdev;
+ vq_callback_t *callbacks[VIRTIO_SND_VQ_MAX] = {
+ [VIRTIO_SND_VQ_EV
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 57 +++
sound/virtio/virtio_pcm.c | 1 +
sound/virtio/virtio_pcm_ops.c | 44
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 2 +
sound/virtio/virtio_pcm.h | 4 +
sound/virtio/virtio_pcm_ops.c | 469 ++
4
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 10 ++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 219
sound
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 14
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 14 ++
sound/virtio/virtio_card.h | 10 +
sound
.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 9 +
include/uapi/linux/virtio_snd.h | 334 +++
sound/Kconfig | 2 +
sound/Makefile | 3 +-
sound/virtio/Kconfig| 10 +
sound/virtio/Makefile
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 13 ++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 310 ++
sound/virtio/virtio_ctl_msg.h | 78 +
5 files
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 10 ++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 219
sound
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 14
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 2 +
sound/virtio/virtio_pcm.h | 4 +
sound/virtio/virtio_pcm_ops.c | 469 ++
4
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 57 +++
sound/virtio/virtio_pcm.c | 1 +
sound/virtio/virtio_pcm_ops.c | 44
.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 9 +
include/uapi/linux/virtio_snd.h | 334 +++
sound/Kconfig | 2 +
sound/Makefile | 3 +-
sound/virtio/Kconfig| 10 +
sound/virtio/Makefile
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 14 ++
sound/virtio/virtio_card.h | 10 +
sound
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 13 ++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 310 ++
sound/virtio/virtio_ctl_msg.h | 78 +
5 files
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 10 ++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 219
sound
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 57 +++
sound/virtio/virtio_pcm.c | 1 +
sound/virtio/virtio_pcm_ops.c | 44
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 14 ++
sound/virtio/virtio_card.h | 10 +
sound
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 2 +
sound/virtio/virtio_pcm.h | 4 +
sound/virtio/virtio_pcm_ops.c | 471 ++
4
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 14
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 13 ++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 311 ++
sound/virtio/virtio_ctl_msg.h | 78 +
5 files
.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 9 +
include/uapi/linux/virtio_snd.h | 334 +++
sound/Kconfig | 2 +
sound/Makefile | 3 +-
sound/virtio/Kconfig| 10 +
sound/virtio/Makefile
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
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(s
On 26.01.2021 10:22, Guennadi Liakhovetski wrote:
> CAUTION: This email originated from outside of the organization.
> Do not click links or open attachments unless you recognize the sender
> and know the content is safe.
>
>
> On Sun, 24 Jan 2021, Anton Yakovlev wrote:
On 25.01.2021 17:59, Guennadi Liakhovetski wrote:
> On Sun, 24 Jan 2021, Anton Yakovlev wrote:
>
> [snip]
>
>> +/**
>> + * virtsnd_pcm_release() - Release the PCM substream on the device
side.
>> + * @substream: VirtIO substream.
>> + *
>> + *
bled
written in the trigger() substream operator
read in the virtsnd_pcm_msg_complete()
ALSA takes some substream locks while calling for trigger/pointer().
Unfortunately, we cannot use the same substream locks here, as it opens
up many control paths leading to deadlock. And all that remains is either
to use atomic fields, or to introduce our own spinlock for each substream
(to protect these fields). Personally, I don't know which would be better.
But the code with atomic fields looks at least simpler.
>> +
>> + /*
>> + * If the capture substream returned an incorrect status, then
just
>> + * increase the hw_ptr by the period size.
>> + */
>> + if (substream->direction == SNDRV_PCM_STREAM_PLAYBACK ||
>> + size <= sizeof(msg->status)) {
>> + hw_ptr += substream->period_size;
>> + } else {
>> + size -= sizeof(msg->status);
>> + hw_ptr += size / substream->frame_bytes;
>> + }
>> +
>> + atomic_set(&substream->hw_ptr, (u32)(hw_ptr %
>> substream->buffer_size));
>> + atomic_set(&substream->xfer_xrun, 0);
>> +
>> + msg_count = atomic_dec_return(&substream->msg_count);
>> +
>> + if (atomic_read(&substream->xfer_enabled)) {
>> + struct snd_pcm_runtime *runtime =
>> substream->substream->runtime;
>> +
>> + runtime->delay =
>> + bytes_to_frames(runtime,
>> +
>> le32_to_cpu(msg->status.latency_bytes));
>> +
>> + snd_pcm_period_elapsed(substream->substream);
>> +
>> + virtsnd_pcm_msg_send(substream);
>> + } else if (!msg_count) {
>> + wake_up_all(&substream->msg_empty);
>> + }
>> +}
>
> Thanks
> Guennadi
>
--
Anton Yakovlev
Senior Software Engineer
OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
www.opensynergy.com
On 25.01.2021 16:44, Guennadi Liakhovetski wrote:
> On Sun, 24 Jan 2021, Anton Yakovlev wrote:
>
...[snip]...
>>
>> diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
>> index 955eadc2d858..39fe13b43dd1 100644
>> --- a/sound/virtio/virti
is also taken on success, so maybe better just call
> the lable "exit" or similar.
Ok! Then I probably need to check for other goto cases as well.
...[snip]...
>> +
>> +/**
>> + * virtsnd_ctl_msg_unref() - Decrement reference counter for the
>> message.
>> + * @vdev: VirtIO parent device.
>> + * @msg: Control message.
>> + *
>> + * The message will be freed when the ref_count value is 0.
>> + *
>> + * Context: Any context.
>> + */
>> +static inline void virtsnd_ctl_msg_unref(struct virtio_device *vdev,
>> + struct virtio_snd_msg *msg)
>> +{
>> + if (!atomic_dec_return(&msg->ref_count))
>
> Since you use atomic operations, this function can probably be called
with
> no additional locking right? But if so, couldn't it be preempted here
> between the check and the call to kfree()? As was mentioned in a previous
> review, the use of atomic operations in this series has to be very
> carefully examined...
The control message workflow is implemented in such a way that all
necessary increments occur before the first possible call to this
function. So even if preemption does occur, it shouldn't be a problem.
>> + devm_kfree(&vdev->dev, msg);
>> +}
>> +
...[snip]...
>
> -
> To unsubscribe, e-mail: virtio-dev-unsubscr...@lists.oasis-open.org
> For additional commands, e-mail: virtio-dev-h...@lists.oasis-open.org
>
>
--
Anton Yakovlev
Senior Software Engineer
OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
www.opensynergy.com
(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
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 54
sound/virtio/virtio_pcm.c | 40 +++
sound/virtio/virtio_pcm.h | 6 +++
sound/virtio
Enumerate all available PCM channel maps and create ALSA controls.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 15 +++
sound/virtio/virtio_card.h | 8 ++
sound/virtio/virtio_chmap.c | 237
sound
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 5 +-
sound/virtio/virtio_pcm.h | 2 +
sound/virtio/virtio_pcm_ops.c | 513 ++
4
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 1 +
sound/virtio/virtio_card.c | 18
messages are organized in an ordered queue. The completion of the
I/O message indicates an elapsed period (the only exception is the end
of the stream for the capture substream). Upon completion, the message
is automatically re-added to the end of the queue.
Signed-off-by: Anton Yakovlev
hardware buffer
parameters:
pcm_buffer_ms [=160]
pcm_periods_min [=2]
pcm_periods_max [=16]
pcm_period_ms_min [=10]
pcm_period_ms_max [=80]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c | 45
sound/virtio/virtio_card.h | 9 +
sound
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
Hi, Liam!
On 20.01.2021 11:10, Girdwood, Liam R wrote:
CAUTION: This email originated from outside of the organization.
Do not click links or open attachments unless you recognize the sender and know
the content is safe.
Hi Anton,
On Wed, 2021-01-20 at 01:36 +0100, Anton Yakovlev wrote
:
msg_timeout_ms [=1000]
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 20 +++
sound/virtio/virtio_card.h| 7 +
sound/virtio/virtio_ctl_msg.c | 293 ++
sound/virtio/virtio_ctl_msg.h | 122 ++
5
.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 9 +
include/uapi/linux/virtio_snd.h | 361 +++
sound/Kconfig | 2 +
sound/Makefile | 3 +-
sound/virtio/Kconfig| 10 +
sound/virtio/Makefile
On 20.01.2021 09:36, Michael S. Tsirkin wrote:
CAUTION: This email originated from outside of the organization.
Do not click links or open attachments unless you recognize the sender and know
the content is safe.
On Wed, Jan 20, 2021 at 01:36:33AM +0100, Anton Yakovlev wrote:
Introduce
On 20.01.2021 09:29, Michael S. Tsirkin wrote:
CAUTION: This email originated from outside of the organization.
Do not click links or open attachments unless you recognize the sender and know
the content is safe.
On Wed, Jan 20, 2021 at 01:36:32AM +0100, Anton Yakovlev wrote:
The driver
On 20.01.2021 09:26, Michael S. Tsirkin wrote:
CAUTION: This email originated from outside of the organization.
Do not click links or open attachments unless you recognize the sender and know
the content is safe.
On Wed, Jan 20, 2021 at 01:36:31AM +0100, Anton Yakovlev wrote:
Introduce
:30AM +0100, Anton Yakovlev wrote:
The file contains the definitions for the sound device from the OASIS
virtio spec.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 6 +
include/uapi/linux/virtio_snd.h | 361
2 files changed, 367
3/msg00185.html
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Anton Yakovlev (7):
uapi: virtio_ids: add a sound device type ID from OASIS spec
uapi: virtio_snd: add the sound device header file
ALSA: virtio: add virtio sound driver
ALSA: virtio: handling control and I/O me
The OASIS virtio spec defines a sound device type ID that is not
present in the header yet.
Signed-off-by: Anton Yakovlev
---
include/uapi/linux/virtio_ids.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index bc1c0621f5ed
The file contains the definitions for the sound device from the OASIS
virtio spec.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 6 +
include/uapi/linux/virtio_snd.h | 361
2 files changed, 367 insertions(+)
create mode 100644 include
.
Signed-off-by: Anton Yakovlev
---
MAINTAINERS | 2 +
sound/Kconfig | 2 +
sound/Makefile| 3 +-
sound/virtio/Kconfig | 10 +
sound/virtio/Makefile | 9 +
sound/virtio/virtio_card.c| 473
Enumerate all available jacks and create ALSA controls.
At the moment jacks have a simple implementation and can only be used
to receive notifications about a plugged in/out device.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 2 +
sound/virtio/virtio_card.c | 33
cached in
the virtio substream, which are required to calculate the new value of
the hw_ptr.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_card.c| 33
sound/virtio/virtio_card.h| 9 +
sound/virtio/virtio_pcm.c | 3 +
sound/virtio
Introduce the operators required for the operation of substreams.
Signed-off-by: Anton Yakovlev
---
sound/virtio/Makefile | 3 +-
sound/virtio/virtio_pcm.c | 5 +-
sound/virtio/virtio_pcm.h | 2 +
sound/virtio/virtio_pcm_ops.c | 509 ++
4
All running PCM substreams are stopped on device suspend and restarted
on device resume.
Signed-off-by: Anton Yakovlev
---
sound/virtio/virtio_card.c| 54
sound/virtio/virtio_pcm.c | 40 +++
sound/virtio/virtio_pcm.h | 6 +++
sound/virtio
92 matches
Mail list logo