2019-03-07 06:17:40

by Jiada Wang

[permalink] [raw]
Subject: [PATCH linux-next v2 0/2] misc fix in src.c

two issues were found due to linux-next commit
7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
this patch-set address these two issues

---
v2: Update rsnd_of_match table instead of set priv->flags in probe

v1: initial version

Jiada Wang (2):
ASoC: rsnd: src: Avoid a potential deadlock
ASoC: rsnd: src: fix compiler warnings

sound/soc/sh/rcar/core.c | 3 +++
sound/soc/sh/rcar/rsnd.h | 5 +++++
sound/soc/sh/rcar/src.c | 21 +++++++--------------
3 files changed, 15 insertions(+), 14 deletions(-)

--
2.19.2



2019-03-07 06:16:35

by Jiada Wang

[permalink] [raw]
Subject: [PATCH linux-next v2 2/2] ASoC: rsnd: src: fix compiler warnings

compiler complains about following declarations

sound/soc/sh/rcar/src.c:174:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 bsdsr_table_pattern1[] = {
^~~~~
sound/soc/sh/rcar/src.c:183:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 bsdsr_table_pattern2[] = {
^~~~~
sound/soc/sh/rcar/src.c:192:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 bsisr_table[] = {
^~~~~
sound/soc/sh/rcar/src.c:201:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 chan288888[] = {
^~~~~
sound/soc/sh/rcar/src.c:210:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 chan244888[] = {
^~~~~
sound/soc/sh/rcar/src.c:219:1: warning: 'static' is not at beginning of declaration [-Wold-style-declaration]
const static u32 chan222222[] = {
^~~~~

This patch moves the 'static' keyword to the front of the
declaration to fix the compiler warnings

Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
Signed-off-by: Jiada Wang <[email protected]>
---
sound/soc/sh/rcar/src.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c
index 45096a66c074..585ffba0244b 100644
--- a/sound/soc/sh/rcar/src.c
+++ b/sound/soc/sh/rcar/src.c
@@ -134,7 +134,7 @@ unsigned int rsnd_src_get_rate(struct rsnd_priv *priv,
return rate;
}

-const static u32 bsdsr_table_pattern1[] = {
+static const u32 bsdsr_table_pattern1[] = {
0x01800000, /* 6 - 1/6 */
0x01000000, /* 6 - 1/4 */
0x00c00000, /* 6 - 1/3 */
@@ -143,7 +143,7 @@ const static u32 bsdsr_table_pattern1[] = {
0x00400000, /* 6 - 1 */
};

-const static u32 bsdsr_table_pattern2[] = {
+static const u32 bsdsr_table_pattern2[] = {
0x02400000, /* 6 - 1/6 */
0x01800000, /* 6 - 1/4 */
0x01200000, /* 6 - 1/3 */
@@ -152,7 +152,7 @@ const static u32 bsdsr_table_pattern2[] = {
0x00600000, /* 6 - 1 */
};

-const static u32 bsisr_table[] = {
+static const u32 bsisr_table[] = {
0x00100060, /* 6 - 1/6 */
0x00100040, /* 6 - 1/4 */
0x00100030, /* 6 - 1/3 */
@@ -161,7 +161,7 @@ const static u32 bsisr_table[] = {
0x00100020, /* 6 - 1 */
};

-const static u32 chan288888[] = {
+static const u32 chan288888[] = {
0x00000006, /* 1 to 2 */
0x000001fe, /* 1 to 8 */
0x000001fe, /* 1 to 8 */
@@ -170,7 +170,7 @@ const static u32 chan288888[] = {
0x000001fe, /* 1 to 8 */
};

-const static u32 chan244888[] = {
+static const u32 chan244888[] = {
0x00000006, /* 1 to 2 */
0x0000001e, /* 1 to 4 */
0x0000001e, /* 1 to 4 */
@@ -179,7 +179,7 @@ const static u32 chan244888[] = {
0x000001fe, /* 1 to 8 */
};

-const static u32 chan222222[] = {
+static const u32 chan222222[] = {
0x00000006, /* 1 to 2 */
0x00000006, /* 1 to 2 */
0x00000006, /* 1 to 2 */
--
2.19.2


2019-03-07 06:16:39

by Jiada Wang

[permalink] [raw]
Subject: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock

lockdep warns us that priv->lock and k->k_lock can cause a
deadlock when after acquire of k->k_lock, process is interrupted
by src, while in another routine of src .init, k->k_lock is
acquired with priv->lock held.

This patch avoids a potential deadlock by not calling soc_device_match()
in SRC .init callback, instead it adds new soc fields in priv->flags to
differentiate SoCs.

Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
Signed-off-by: Jiada Wang <[email protected]>
---
sound/soc/sh/rcar/core.c | 2 ++
sound/soc/sh/rcar/rsnd.h | 5 +++++
sound/soc/sh/rcar/src.c | 9 +--------
3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 022996d2db13..4fe83e611c01 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
{ .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
{ .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
{ .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
+ /* Special Handling */
+ { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },
{},
};
MODULE_DEVICE_TABLE(of, rsnd_of_match);
diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h
index 90625c57847b..0e6ef4e18400 100644
--- a/sound/soc/sh/rcar/rsnd.h
+++ b/sound/soc/sh/rcar/rsnd.h
@@ -607,6 +607,8 @@ struct rsnd_priv {
#define RSND_GEN1 (1 << 0)
#define RSND_GEN2 (2 << 0)
#define RSND_GEN3 (3 << 0)
+#define RSND_SOC_MASK (0xFF << 4)
+#define RSND_SOC_E (1 << 4) /* E1/E2/E3 */

/*
* below value will be filled on rsnd_gen_probe()
@@ -679,6 +681,9 @@ struct rsnd_priv {
#define rsnd_is_gen1(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN1)
#define rsnd_is_gen2(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN2)
#define rsnd_is_gen3(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN3)
+#define rsnd_is_e3(priv) (((priv)->flags & \
+ (RSND_GEN_MASK | RSND_SOC_MASK)) == \
+ (RSND_GEN3 | RSND_SOC_E))

#define rsnd_flags_has(p, f) ((p)->flags & (f))
#define rsnd_flags_set(p, f) ((p)->flags |= (f))
diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c
index db81e066b92e..45096a66c074 100644
--- a/sound/soc/sh/rcar/src.c
+++ b/sound/soc/sh/rcar/src.c
@@ -14,7 +14,6 @@
*/

#include "rsnd.h"
-#include <linux/sys_soc.h>

#define SRC_NAME "src"

@@ -189,18 +188,12 @@ const static u32 chan222222[] = {
0x00000006, /* 1 to 2 */
};

-static const struct soc_device_attribute ov_soc[] = {
- { .soc_id = "r8a77990" }, /* E3 */
- { /* sentinel */ }
-};
-
static void rsnd_src_set_convert_rate(struct rsnd_dai_stream *io,
struct rsnd_mod *mod)
{
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
struct device *dev = rsnd_priv_to_dev(priv);
struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
- const struct soc_device_attribute *soc = soc_device_match(ov_soc);
int is_play = rsnd_io_is_play(io);
int use_src = 0;
u32 fin, fout;
@@ -307,7 +300,7 @@ static void rsnd_src_set_convert_rate(struct rsnd_dai_stream *io,
/*
* E3 need to overwrite
*/
- if (soc)
+ if (rsnd_is_e3(priv))
switch (rsnd_mod_id(mod)) {
case 0:
case 4:
--
2.19.2


2019-03-07 06:22:15

by Kuninori Morimoto

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 0/2] misc fix in src.c


Hi Jiada

> two issues were found due to linux-next commit
> 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
> this patch-set address these two issues
>
> ---
> v2: Update rsnd_of_match table instead of set priv->flags in probe
>
> v1: initial version
>
> Jiada Wang (2):
> ASoC: rsnd: src: Avoid a potential deadlock
> ASoC: rsnd: src: fix compiler warnings

Thank you for your patches.
For both patches

Acked-by: Kuninori Morimoto <[email protected]>

2019-03-11 17:24:29

by Mark Brown

[permalink] [raw]
Subject: Applied "ASoC: rsnd: src: Avoid a potential deadlock" to the asoc tree

The patch

ASoC: rsnd: src: Avoid a potential deadlock

has been applied to the asoc tree at

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

From ba164a49f8f7390b036713bf8a70a150a938c670 Mon Sep 17 00:00:00 2001
From: Jiada Wang <[email protected]>
Date: Thu, 7 Mar 2019 15:15:53 +0900
Subject: [PATCH] ASoC: rsnd: src: Avoid a potential deadlock

lockdep warns us that priv->lock and k->k_lock can cause a
deadlock when after acquire of k->k_lock, process is interrupted
by src, while in another routine of src .init, k->k_lock is
acquired with priv->lock held.

This patch avoids a potential deadlock by not calling soc_device_match()
in SRC .init callback, instead it adds new soc fields in priv->flags to
differentiate SoCs.

Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
Signed-off-by: Jiada Wang <[email protected]>
Acked-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
---
sound/soc/sh/rcar/core.c | 2 ++
sound/soc/sh/rcar/rsnd.h | 5 +++++
sound/soc/sh/rcar/src.c | 9 +--------
3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 9834474684b1..8d3758f862f1 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
{ .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
{ .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
{ .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
+ /* Special Handling */
+ { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },
{},
};
MODULE_DEVICE_TABLE(of, rsnd_of_match);
diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h
index 90625c57847b..0e6ef4e18400 100644
--- a/sound/soc/sh/rcar/rsnd.h
+++ b/sound/soc/sh/rcar/rsnd.h
@@ -607,6 +607,8 @@ struct rsnd_priv {
#define RSND_GEN1 (1 << 0)
#define RSND_GEN2 (2 << 0)
#define RSND_GEN3 (3 << 0)
+#define RSND_SOC_MASK (0xFF << 4)
+#define RSND_SOC_E (1 << 4) /* E1/E2/E3 */

/*
* below value will be filled on rsnd_gen_probe()
@@ -679,6 +681,9 @@ struct rsnd_priv {
#define rsnd_is_gen1(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN1)
#define rsnd_is_gen2(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN2)
#define rsnd_is_gen3(priv) (((priv)->flags & RSND_GEN_MASK) == RSND_GEN3)
+#define rsnd_is_e3(priv) (((priv)->flags & \
+ (RSND_GEN_MASK | RSND_SOC_MASK)) == \
+ (RSND_GEN3 | RSND_SOC_E))

#define rsnd_flags_has(p, f) ((p)->flags & (f))
#define rsnd_flags_set(p, f) ((p)->flags |= (f))
diff --git a/sound/soc/sh/rcar/src.c b/sound/soc/sh/rcar/src.c
index db81e066b92e..45096a66c074 100644
--- a/sound/soc/sh/rcar/src.c
+++ b/sound/soc/sh/rcar/src.c
@@ -14,7 +14,6 @@
*/

#include "rsnd.h"
-#include <linux/sys_soc.h>

#define SRC_NAME "src"

@@ -189,18 +188,12 @@ const static u32 chan222222[] = {
0x00000006, /* 1 to 2 */
};

-static const struct soc_device_attribute ov_soc[] = {
- { .soc_id = "r8a77990" }, /* E3 */
- { /* sentinel */ }
-};
-
static void rsnd_src_set_convert_rate(struct rsnd_dai_stream *io,
struct rsnd_mod *mod)
{
struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
struct device *dev = rsnd_priv_to_dev(priv);
struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
- const struct soc_device_attribute *soc = soc_device_match(ov_soc);
int is_play = rsnd_io_is_play(io);
int use_src = 0;
u32 fin, fout;
@@ -307,7 +300,7 @@ static void rsnd_src_set_convert_rate(struct rsnd_dai_stream *io,
/*
* E3 need to overwrite
*/
- if (soc)
+ if (rsnd_is_e3(priv))
switch (rsnd_mod_id(mod)) {
case 0:
case 4:
--
2.20.1


2019-03-12 09:17:33

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock

Hi Jiada, Fabrizio,

On Thu, Mar 7, 2019 at 7:17 AM Jiada Wang <[email protected]> wrote:
> lockdep warns us that priv->lock and k->k_lock can cause a
> deadlock when after acquire of k->k_lock, process is interrupted
> by src, while in another routine of src .init, k->k_lock is
> acquired with priv->lock held.
>
> This patch avoids a potential deadlock by not calling soc_device_match()
> in SRC .init callback, instead it adds new soc fields in priv->flags to
> differentiate SoCs.
>
> Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
> Signed-off-by: Jiada Wang <[email protected]>
> ---
> sound/soc/sh/rcar/core.c | 2 ++
> sound/soc/sh/rcar/rsnd.h | 5 +++++
> sound/soc/sh/rcar/src.c | 9 +--------
> 3 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
> index 022996d2db13..4fe83e611c01 100644
> --- a/sound/soc/sh/rcar/core.c
> +++ b/sound/soc/sh/rcar/core.c
> @@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
> { .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
> { .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
> { .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
> + /* Special Handling */
> + { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },

I guess we need an entry for RZ/G2E, too?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2019-03-13 11:57:04

by Jiada Wang

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock

Hi Geert

On 2019/03/12 18:15, Geert Uytterhoeven wrote:
> Hi Jiada, Fabrizio,
>
> On Thu, Mar 7, 2019 at 7:17 AM Jiada Wang <[email protected]> wrote:
>> lockdep warns us that priv->lock and k->k_lock can cause a
>> deadlock when after acquire of k->k_lock, process is interrupted
>> by src, while in another routine of src .init, k->k_lock is
>> acquired with priv->lock held.
>>
>> This patch avoids a potential deadlock by not calling soc_device_match()
>> in SRC .init callback, instead it adds new soc fields in priv->flags to
>> differentiate SoCs.
>>
>> Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
>> Signed-off-by: Jiada Wang <[email protected]>
>> ---
>> sound/soc/sh/rcar/core.c | 2 ++
>> sound/soc/sh/rcar/rsnd.h | 5 +++++
>> sound/soc/sh/rcar/src.c | 9 +--------
>> 3 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
>> index 022996d2db13..4fe83e611c01 100644
>> --- a/sound/soc/sh/rcar/core.c
>> +++ b/sound/soc/sh/rcar/core.c
>> @@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
>> { .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
>> { .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
>> { .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
>> + /* Special Handling */
>> + { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },
>
> I guess we need an entry for RZ/G2E, too?
>
Sorry, I don't have user manual for RZ/G2E,
if you can let me know where to find RZ/G2E's user manual,
I can add entry for these SoCs

Thanks,
Jiada
> Gr{oetje,eeting}s,
>
> Geert
>

2019-03-13 18:21:59

by Fabrizio Castro

[permalink] [raw]
Subject: RE: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock

Hello Jiada,

> From: Jiada Wang <[email protected]>
> Sent: 13 March 2019 11:56
> Subject: Re: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock
>
> Hi Geert
>
> On 2019/03/12 18:15, Geert Uytterhoeven wrote:
> > Hi Jiada, Fabrizio,
> >
> > On Thu, Mar 7, 2019 at 7:17 AM Jiada Wang <[email protected]> wrote:
> >> lockdep warns us that priv->lock and k->k_lock can cause a
> >> deadlock when after acquire of k->k_lock, process is interrupted
> >> by src, while in another routine of src .init, k->k_lock is
> >> acquired with priv->lock held.
> >>
> >> This patch avoids a potential deadlock by not calling soc_device_match()
> >> in SRC .init callback, instead it adds new soc fields in priv->flags to
> >> differentiate SoCs.
> >>
> >> Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
> >> Signed-off-by: Jiada Wang <[email protected]>
> >> ---
> >> sound/soc/sh/rcar/core.c | 2 ++
> >> sound/soc/sh/rcar/rsnd.h | 5 +++++
> >> sound/soc/sh/rcar/src.c | 9 +--------
> >> 3 files changed, 8 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
> >> index 022996d2db13..4fe83e611c01 100644
> >> --- a/sound/soc/sh/rcar/core.c
> >> +++ b/sound/soc/sh/rcar/core.c
> >> @@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
> >> { .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
> >> { .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
> >> { .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
> >> + /* Special Handling */
> >> + { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },
> >
> > I guess we need an entry for RZ/G2E, too?

Geert has a point, I am looking at the User manual for the RZ/G2E and it looks like the
implementation for the RZ/G2E is the same as the one for the r8a77990

> >
> Sorry, I don't have user manual for RZ/G2E,
> if you can let me know where to find RZ/G2E's user manual,
> I can add entry for these SoCs

If you prefer I could add that after running some tests? I do have a board with a RZ/G2E.

Thanks,
Fab

>
> Thanks,
> Jiada
> > Gr{oetje,eeting}s,
> >
> > Geert
> >

2019-03-19 03:36:14

by Jiada Wang

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock

Hi Fabrizio

On 2019/03/14 3:19, Fabrizio Castro wrote:
> Hello Jiada,
>
>> From: Jiada Wang <[email protected]>
>> Sent: 13 March 2019 11:56
>> Subject: Re: [PATCH linux-next v2 1/2] ASoC: rsnd: src: Avoid a potential deadlock
>>
>> Hi Geert
>>
>> On 2019/03/12 18:15, Geert Uytterhoeven wrote:
>>> Hi Jiada, Fabrizio,
>>>
>>> On Thu, Mar 7, 2019 at 7:17 AM Jiada Wang <[email protected]> wrote:
>>>> lockdep warns us that priv->lock and k->k_lock can cause a
>>>> deadlock when after acquire of k->k_lock, process is interrupted
>>>> by src, while in another routine of src .init, k->k_lock is
>>>> acquired with priv->lock held.
>>>>
>>>> This patch avoids a potential deadlock by not calling soc_device_match()
>>>> in SRC .init callback, instead it adds new soc fields in priv->flags to
>>>> differentiate SoCs.
>>>>
>>>> Fixes: linux-next commit 7674bec4fc09 ("ASoC: rsnd: update BSDSR/BSDISR handling")
>>>> Signed-off-by: Jiada Wang <[email protected]>
>>>> ---
>>>> sound/soc/sh/rcar/core.c | 2 ++
>>>> sound/soc/sh/rcar/rsnd.h | 5 +++++
>>>> sound/soc/sh/rcar/src.c | 9 +--------
>>>> 3 files changed, 8 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
>>>> index 022996d2db13..4fe83e611c01 100644
>>>> --- a/sound/soc/sh/rcar/core.c
>>>> +++ b/sound/soc/sh/rcar/core.c
>>>> @@ -110,6 +110,8 @@ static const struct of_device_id rsnd_of_match[] = {
>>>> { .compatible = "renesas,rcar_sound-gen1", .data = (void *)RSND_GEN1 },
>>>> { .compatible = "renesas,rcar_sound-gen2", .data = (void *)RSND_GEN2 },
>>>> { .compatible = "renesas,rcar_sound-gen3", .data = (void *)RSND_GEN3 },
>>>> + /* Special Handling */
>>>> + { .compatible = "renesas,rcar_sound-r8a77990", .data = (void *)(RSND_GEN3 | RSND_SOC_E) },
>>>
>>> I guess we need an entry for RZ/G2E, too?
>
> Geert has a point, I am looking at the User manual for the RZ/G2E and it looks like the
> implementation for the RZ/G2E is the same as the one for the r8a77990
>
>>>
>> Sorry, I don't have user manual for RZ/G2E,
>> if you can let me know where to find RZ/G2E's user manual,
>> I can add entry for these SoCs
>
> If you prefer I could add that after running some tests? I do have a board with a RZ/G2E.
>
Yes, please
since I have neither RZ/G2E board to test nor its user manual

Thanks,
Jiada
> Thanks,
> Fab
>
>>
>> Thanks,
>> Jiada
>>> Gr{oetje,eeting}s,
>>>
>>> Geert
>>>