alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
@ 2020-07-30 14:04 Yong Zhi
  2020-07-30 15:53 ` Adam Thomson
  0 siblings, 1 reply; 8+ messages in thread
From: Yong Zhi @ 2020-07-30 14:04 UTC (permalink / raw)
  To: alsa-devel, broonie
  Cc: Adam.Thomson.Opensource, pierre-louis.bossart, Yong Zhi

clkdev_drop(cl) does not null the removed cl, if da7219_register_dai_clks()
entered again after card removal, devm_clk_register() will return -EEXIST,
the goto err to clkdev_drop() will trigger board reboot.

Test commands:
   modprobe -r snd_sof_pci
   modprobe snd_sof_pci

The oops looks like:

da7219 i2c-DLGS7219:00: Using default DAI clk names: da7219-dai-wclk, da7219-dai-bclk
da7219 i2c-DLGS7219:00: Failed to register da7219-dai-wclk: -17
general protection fault: 0000 [#1] PREEMPT SMP NOPTI
RIP: 0010:clkdev_drop+0x20/0x52
Call Trace:
 da7219_probe+0x52e/0x6dc [snd_soc_da7219]
 soc_probe_component+0x206/0x3a1
 snd_soc_bind_card+0x4ee/0x9a6
 devm_snd_soc_register_card+0x48/0x7b
 audio_probe+0x1f0/0x221 [snd_soc_sof_da7219_max98373]
 platform_drv_probe+0x89/0xa2
 really_probe+0x129/0x30d
 driver_probe_device+0x59/0xec
 ? driver_sysfs_remove+0x55/0x55
 bus_for_each_drv+0xa1/0xdc
 __device_attach+0xc2/0x146
 bus_probe_device+0x32/0x97
 device_add+0x311/0x3b4
 platform_device_add+0x184/0x1eb

Fix by marking (nullifying) the da7219->dai_clks_lookup[i]
after clkdev_drop().

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
---
 sound/soc/codecs/da7219.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
index 153ea30b5a8f..54da7cfbb5f4 100644
--- a/sound/soc/codecs/da7219.c
+++ b/sound/soc/codecs/da7219.c
@@ -2369,8 +2369,10 @@ static void da7219_remove(struct snd_soc_component *component)
 
 #ifdef CONFIG_COMMON_CLK
 	for (i = DA7219_DAI_NUM_CLKS - 1; i >= 0; --i) {
-		if (da7219->dai_clks_lookup[i])
+		if (da7219->dai_clks_lookup[i]) {
 			clkdev_drop(da7219->dai_clks_lookup[i]);
+			da7219->dai_clks_lookup[i] = NULL;
+		}
 	}
 #endif
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* RE: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 14:04 [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks Yong Zhi
@ 2020-07-30 15:53 ` Adam Thomson
  2020-07-30 16:06   ` Zhi, Yong
  0 siblings, 1 reply; 8+ messages in thread
From: Adam Thomson @ 2020-07-30 15:53 UTC (permalink / raw)
  To: Yong Zhi, alsa-devel, broonie; +Cc: Adam Thomson, pierre-louis.bossart

On 30 July 2020 15:04, Yong Zhi wrote:

> clkdev_drop(cl) does not null the removed cl, if da7219_register_dai_clks()
> entered again after card removal, devm_clk_register() will return -EEXIST,
> the goto err to clkdev_drop() will trigger board reboot.
> 
> Test commands:
>    modprobe -r snd_sof_pci
>    modprobe snd_sof_pci
> 
> The oops looks like:
> 
> da7219 i2c-DLGS7219:00: Using default DAI clk names: da7219-dai-wclk, da7219-
> dai-bclk
> da7219 i2c-DLGS7219:00: Failed to register da7219-dai-wclk: -17
> general protection fault: 0000 [#1] PREEMPT SMP NOPTI
> RIP: 0010:clkdev_drop+0x20/0x52
> Call Trace:
>  da7219_probe+0x52e/0x6dc [snd_soc_da7219]
>  soc_probe_component+0x206/0x3a1
>  snd_soc_bind_card+0x4ee/0x9a6
>  devm_snd_soc_register_card+0x48/0x7b
>  audio_probe+0x1f0/0x221 [snd_soc_sof_da7219_max98373]
>  platform_drv_probe+0x89/0xa2
>  really_probe+0x129/0x30d
>  driver_probe_device+0x59/0xec
>  ? driver_sysfs_remove+0x55/0x55
>  bus_for_each_drv+0xa1/0xdc
>  __device_attach+0xc2/0x146
>  bus_probe_device+0x32/0x97
>  device_add+0x311/0x3b4
>  platform_device_add+0x184/0x1eb
> 
> Fix by marking (nullifying) the da7219->dai_clks_lookup[i]
> after clkdev_drop().
> 
> Signed-off-by: Yong Zhi <yong.zhi@intel.com>
> ---
>  sound/soc/codecs/da7219.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
> index 153ea30b5a8f..54da7cfbb5f4 100644
> --- a/sound/soc/codecs/da7219.c
> +++ b/sound/soc/codecs/da7219.c
> @@ -2369,8 +2369,10 @@ static void da7219_remove(struct
> snd_soc_component *component)
> 
>  #ifdef CONFIG_COMMON_CLK
>  	for (i = DA7219_DAI_NUM_CLKS - 1; i >= 0; --i) {
> -		if (da7219->dai_clks_lookup[i])
> +		if (da7219->dai_clks_lookup[i]) {
>  			clkdev_drop(da7219->dai_clks_lookup[i]);
> +			da7219->dai_clks_lookup[i] = NULL;
> +		}

It seems to me that devm_* functions should have freed up everything when the
codec module was removed. I can only assume the codec isn't being removed in
your test hence devm is never freeing the clock resource and is why you're
getting -EEXIST. Is this the case and is your use-case expected behaviour? It's
not something that has been reported previously so am keen to understand exactly
what's happening here.

>  	}
>  #endif
> 
> --
> 2.7.4


^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 15:53 ` Adam Thomson
@ 2020-07-30 16:06   ` Zhi, Yong
  2020-07-30 16:19     ` Adam Thomson
  0 siblings, 1 reply; 8+ messages in thread
From: Zhi, Yong @ 2020-07-30 16:06 UTC (permalink / raw)
  To: Adam Thomson, alsa-devel, broonie; +Cc: pierre-louis.bossart

Hi, Adam,

> -----Original Message-----
> From: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
> Sent: Thursday, July 30, 2020 10:54 AM
> To: Zhi, Yong <yong.zhi@intel.com>; alsa-devel@alsa-project.org;
> broonie@kernel.org
> Cc: pierre-louis.bossart@linux.intel.com; Adam Thomson
> <Adam.Thomson.Opensource@diasemi.com>
> Subject: RE: [PATCH] ASoC: da7219: Fix general protection fault in
> da7219_register_dai_clks
> 
> On 30 July 2020 15:04, Yong Zhi wrote:
> 
> > clkdev_drop(cl) does not null the removed cl, if
> > da7219_register_dai_clks() entered again after card removal,
> > devm_clk_register() will return -EEXIST, the goto err to clkdev_drop() will
> trigger board reboot.
> >
> > Test commands:
> >    modprobe -r snd_sof_pci
> >    modprobe snd_sof_pci
> >
> > The oops looks like:
> >
> > da7219 i2c-DLGS7219:00: Using default DAI clk names: da7219-dai-wclk,
> > da7219- dai-bclk
> > da7219 i2c-DLGS7219:00: Failed to register da7219-dai-wclk: -17
> > general protection fault: 0000 [#1] PREEMPT SMP NOPTI
> > RIP: 0010:clkdev_drop+0x20/0x52
> > Call Trace:
> >  da7219_probe+0x52e/0x6dc [snd_soc_da7219]
> >  soc_probe_component+0x206/0x3a1
> >  snd_soc_bind_card+0x4ee/0x9a6
> >  devm_snd_soc_register_card+0x48/0x7b
> >  audio_probe+0x1f0/0x221 [snd_soc_sof_da7219_max98373]
> >  platform_drv_probe+0x89/0xa2
> >  really_probe+0x129/0x30d
> >  driver_probe_device+0x59/0xec
> >  ? driver_sysfs_remove+0x55/0x55
> >  bus_for_each_drv+0xa1/0xdc
> >  __device_attach+0xc2/0x146
> >  bus_probe_device+0x32/0x97
> >  device_add+0x311/0x3b4
> >  platform_device_add+0x184/0x1eb
> >
> > Fix by marking (nullifying) the da7219->dai_clks_lookup[i] after
> > clkdev_drop().
> >
> > Signed-off-by: Yong Zhi <yong.zhi@intel.com>
> > ---
> >  sound/soc/codecs/da7219.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
> > index 153ea30b5a8f..54da7cfbb5f4 100644
> > --- a/sound/soc/codecs/da7219.c
> > +++ b/sound/soc/codecs/da7219.c
> > @@ -2369,8 +2369,10 @@ static void da7219_remove(struct
> > snd_soc_component *component)
> >
> >  #ifdef CONFIG_COMMON_CLK
> >  	for (i = DA7219_DAI_NUM_CLKS - 1; i >= 0; --i) {
> > -		if (da7219->dai_clks_lookup[i])
> > +		if (da7219->dai_clks_lookup[i]) {
> >  			clkdev_drop(da7219->dai_clks_lookup[i]);
> > +			da7219->dai_clks_lookup[i] = NULL;
> > +		}
> 
> It seems to me that devm_* functions should have freed up everything when the
> codec module was removed. I can only assume the codec isn't being removed in
> your test hence devm is never freeing the clock resource and is why you're
> getting -EEXIST. Is this the case and is your use-case expected behaviour? It's
> not something that has been reported previously so am keen to understand
> exactly what's happening here.
> 
> >  	}
> >  #endif
> >

When the card was uninstalled with modprobe -r, the da7219 codec was not removed, only component da7219_remove() is invoked, do you suggest the component driver probe and remove has to happen with da7219_i2_driver probe and remove together? Thanks for the code review.  

> > --
> > 2.7.4


^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 16:06   ` Zhi, Yong
@ 2020-07-30 16:19     ` Adam Thomson
  2020-07-30 16:28       ` Mark Brown
  0 siblings, 1 reply; 8+ messages in thread
From: Adam Thomson @ 2020-07-30 16:19 UTC (permalink / raw)
  To: Zhi, Yong, Adam Thomson, alsa-devel, broonie; +Cc: pierre-louis.bossart

On 30 July 2020 17:06, Yong Zhi wrote:
> >
> > > clkdev_drop(cl) does not null the removed cl, if
> > > da7219_register_dai_clks() entered again after card removal,
> > > devm_clk_register() will return -EEXIST, the goto err to clkdev_drop() will
> > trigger board reboot.
> > >
> > > Test commands:
> > >    modprobe -r snd_sof_pci
> > >    modprobe snd_sof_pci
> > >
> > > The oops looks like:
> > >
> > > da7219 i2c-DLGS7219:00: Using default DAI clk names: da7219-dai-wclk,
> > > da7219- dai-bclk
> > > da7219 i2c-DLGS7219:00: Failed to register da7219-dai-wclk: -17
> > > general protection fault: 0000 [#1] PREEMPT SMP NOPTI
> > > RIP: 0010:clkdev_drop+0x20/0x52
> > > Call Trace:
> > >  da7219_probe+0x52e/0x6dc [snd_soc_da7219]
> > >  soc_probe_component+0x206/0x3a1
> > >  snd_soc_bind_card+0x4ee/0x9a6
> > >  devm_snd_soc_register_card+0x48/0x7b
> > >  audio_probe+0x1f0/0x221 [snd_soc_sof_da7219_max98373]
> > >  platform_drv_probe+0x89/0xa2
> > >  really_probe+0x129/0x30d
> > >  driver_probe_device+0x59/0xec
> > >  ? driver_sysfs_remove+0x55/0x55
> > >  bus_for_each_drv+0xa1/0xdc
> > >  __device_attach+0xc2/0x146
> > >  bus_probe_device+0x32/0x97
> > >  device_add+0x311/0x3b4
> > >  platform_device_add+0x184/0x1eb
> > >
> > > Fix by marking (nullifying) the da7219->dai_clks_lookup[i] after
> > > clkdev_drop().
> > >
> > > Signed-off-by: Yong Zhi <yong.zhi@intel.com>
> > > ---
> > >  sound/soc/codecs/da7219.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
> > > index 153ea30b5a8f..54da7cfbb5f4 100644
> > > --- a/sound/soc/codecs/da7219.c
> > > +++ b/sound/soc/codecs/da7219.c
> > > @@ -2369,8 +2369,10 @@ static void da7219_remove(struct
> > > snd_soc_component *component)
> > >
> > >  #ifdef CONFIG_COMMON_CLK
> > >  	for (i = DA7219_DAI_NUM_CLKS - 1; i >= 0; --i) {
> > > -		if (da7219->dai_clks_lookup[i])
> > > +		if (da7219->dai_clks_lookup[i]) {
> > >  			clkdev_drop(da7219->dai_clks_lookup[i]);
> > > +			da7219->dai_clks_lookup[i] = NULL;
> > > +		}
> >
> > It seems to me that devm_* functions should have freed up everything when
> the
> > codec module was removed. I can only assume the codec isn't being removed
> in
> > your test hence devm is never freeing the clock resource and is why you're
> > getting -EEXIST. Is this the case and is your use-case expected behaviour? It's
> > not something that has been reported previously so am keen to understand
> > exactly what's happening here.
> >
> > >  	}
> > >  #endif
> > >
> 
> When the card was uninstalled with modprobe -r, the da7219 codec was not
> removed, only component da7219_remove() is invoked, do you suggest the
> component driver probe and remove has to happen with da7219_i2_driver probe
> and remove together? Thanks for the code review.

Well as far as I understand it the the devm_* allocated resources are tied to
the i2c dev. If I'm correct then unless that's removed then those resources
won't be freed. If this is a valid scenario then we would probably have to look
at avoiding all devm_ calls in the da7219_probe() code as they wouldn't be
released when doing what you are here.

Mark, what's your take on this? Am I missing something obvious?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 16:19     ` Adam Thomson
@ 2020-07-30 16:28       ` Mark Brown
  2020-07-30 16:58         ` Pierre-Louis Bossart
  0 siblings, 1 reply; 8+ messages in thread
From: Mark Brown @ 2020-07-30 16:28 UTC (permalink / raw)
  To: Adam Thomson; +Cc: alsa-devel, pierre-louis.bossart, Zhi, Yong

[-- Attachment #1: Type: text/plain, Size: 1026 bytes --]

On Thu, Jul 30, 2020 at 04:19:01PM +0000, Adam Thomson wrote:
> On 30 July 2020 17:06, Yong Zhi wrote:

> > When the card was uninstalled with modprobe -r, the da7219 codec was not
> > removed, only component da7219_remove() is invoked, do you suggest the
> > component driver probe and remove has to happen with da7219_i2_driver probe
> > and remove together? Thanks for the code review.

> Well as far as I understand it the the devm_* allocated resources are tied to
> the i2c dev. If I'm correct then unless that's removed then those resources
> won't be freed. If this is a valid scenario then we would probably have to look
> at avoiding all devm_ calls in the da7219_probe() code as they wouldn't be
> released when doing what you are here.

> Mark, what's your take on this? Am I missing something obvious?

You're not missing anything, you shouldn't be doing devm allocations at
the CODEC level only at the device model level.  I'm somewhat confused
why you would be registering clocks at the device model level TBH.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 484 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 16:28       ` Mark Brown
@ 2020-07-30 16:58         ` Pierre-Louis Bossart
  2020-07-30 19:15           ` Adam Thomson
  0 siblings, 1 reply; 8+ messages in thread
From: Pierre-Louis Bossart @ 2020-07-30 16:58 UTC (permalink / raw)
  To: Mark Brown, Adam Thomson; +Cc: alsa-devel, Zhi, Yong


>>> When the card was uninstalled with modprobe -r, the da7219 codec was not
>>> removed, only component da7219_remove() is invoked, do you suggest the
>>> component driver probe and remove has to happen with da7219_i2_driver probe
>>> and remove together? Thanks for the code review.
> 
>> Well as far as I understand it the the devm_* allocated resources are tied to
>> the i2c dev. If I'm correct then unless that's removed then those resources
>> won't be freed. If this is a valid scenario then we would probably have to look
>> at avoiding all devm_ calls in the da7219_probe() code as they wouldn't be
>> released when doing what you are here.
> 
>> Mark, what's your take on this? Am I missing something obvious?
> 
> You're not missing anything, you shouldn't be doing devm allocations at
> the CODEC level only at the device model level.  I'm somewhat confused
> why you would be registering clocks at the device model level TBH.

I am afraid we have quite a few codec drivers used in x86/ACPI platforms 
using devm_ clk functions at the component probe level...see e.g.:

da7213, da7218, da7219, es8316, es8328, max98090, max98095, rt5514, 
rt5616, rt5640, rt5682, tlk320aic32x4

some do even worse: nau8825, tlv320aic32x4 call devm_ functions in 
set_sysclk.

The module load/unload tests used for SOF remove all the drivers, so as 
Adam was saying this should not happen if you remove the codec driver.

It already took us quite a bit of effort to make sure all resources are 
properly allocated/released. We still have known issues when removing 
the platform driver only, mainly with HDaudio. I wasn't aware of this 
case for I2C codecs, I guess this just made the list of TODO cleanups 
even longer. D'oh!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 16:58         ` Pierre-Louis Bossart
@ 2020-07-30 19:15           ` Adam Thomson
  2020-07-30 19:42             ` Zhi, Yong
  0 siblings, 1 reply; 8+ messages in thread
From: Adam Thomson @ 2020-07-30 19:15 UTC (permalink / raw)
  To: Pierre-Louis Bossart, Mark Brown, Adam Thomson; +Cc: alsa-devel, Zhi, Yong

On 30 July 2020 17:58, Pierre-Louis Bossart wrote: 

> >>> When the card was uninstalled with modprobe -r, the da7219 codec was not
> >>> removed, only component da7219_remove() is invoked, do you suggest the
> >>> component driver probe and remove has to happen with da7219_i2_driver
> probe
> >>> and remove together? Thanks for the code review.
> >
> >> Well as far as I understand it the the devm_* allocated resources are tied to
> >> the i2c dev. If I'm correct then unless that's removed then those resources
> >> won't be freed. If this is a valid scenario then we would probably have to look
> >> at avoiding all devm_ calls in the da7219_probe() code as they wouldn't be
> >> released when doing what you are here.
> >
> >> Mark, what's your take on this? Am I missing something obvious?
> >
> > You're not missing anything, you shouldn't be doing devm allocations at
> > the CODEC level only at the device model level.  I'm somewhat confused
> > why you would be registering clocks at the device model level TBH.

Ignorance on my part when I wrote the code I'd say.

> 
> I am afraid we have quite a few codec drivers used in x86/ACPI platforms
> using devm_ clk functions at the component probe level...see e.g.:
> 
> da7213, da7218, da7219, es8316, es8328, max98090, max98095, rt5514,
> rt5616, rt5640, rt5682, tlk320aic32x4
> 
> some do even worse: nau8825, tlv320aic32x4 call devm_ functions in
> set_sysclk.
> 
> The module load/unload tests used for SOF remove all the drivers, so as
> Adam was saying this should not happen if you remove the codec driver.
> 
> It already took us quite a bit of effort to make sure all resources are
> properly allocated/released. We still have known issues when removing
> the platform driver only, mainly with HDaudio. I wasn't aware of this
> case for I2C codecs, I guess this just made the list of TODO cleanups
> even longer. D'oh!

Well, I'll make sure I at least sort the da721x drivers to rectify this
discrepancy and provide the correct solution. On the back of this I have also
spotted something else that looks stupid in the cold light day, so will deal
with that as well (relates to these updates).

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks
  2020-07-30 19:15           ` Adam Thomson
@ 2020-07-30 19:42             ` Zhi, Yong
  0 siblings, 0 replies; 8+ messages in thread
From: Zhi, Yong @ 2020-07-30 19:42 UTC (permalink / raw)
  To: Adam Thomson, Pierre-Louis Bossart, Mark Brown; +Cc: alsa-devel

Hi, All,

> -----Original Message-----
> From: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
> Sent: Thursday, July 30, 2020 2:16 PM
> To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>; Mark Brown
> <broonie@kernel.org>; Adam Thomson
> <Adam.Thomson.Opensource@diasemi.com>
> Cc: Zhi, Yong <yong.zhi@intel.com>; alsa-devel@alsa-project.org
> Subject: RE: [PATCH] ASoC: da7219: Fix general protection fault in
> da7219_register_dai_clks
> 
> On 30 July 2020 17:58, Pierre-Louis Bossart wrote:
> 
> > >>> When the card was uninstalled with modprobe -r, the da7219 codec
> > >>> was not removed, only component da7219_remove() is invoked, do you
> > >>> suggest the component driver probe and remove has to happen with
> > >>> da7219_i2_driver
> > probe
> > >>> and remove together? Thanks for the code review.
> > >
> > >> Well as far as I understand it the the devm_* allocated resources
> > >> are tied to the i2c dev. If I'm correct then unless that's removed
> > >> then those resources won't be freed. If this is a valid scenario
> > >> then we would probably have to look at avoiding all devm_ calls in
> > >> the da7219_probe() code as they wouldn't be released when doing what
> you are here.
> > >
> > >> Mark, what's your take on this? Am I missing something obvious?
> > >
> > > You're not missing anything, you shouldn't be doing devm allocations
> > > at the CODEC level only at the device model level.  I'm somewhat
> > > confused why you would be registering clocks at the device model level TBH.
> 
> Ignorance on my part when I wrote the code I'd say.
> 
> >
> > I am afraid we have quite a few codec drivers used in x86/ACPI
> > platforms using devm_ clk functions at the component probe level...see e.g.:
> >
> > da7213, da7218, da7219, es8316, es8328, max98090, max98095, rt5514,
> > rt5616, rt5640, rt5682, tlk320aic32x4
> >
> > some do even worse: nau8825, tlv320aic32x4 call devm_ functions in
> > set_sysclk.
> >
> > The module load/unload tests used for SOF remove all the drivers, so
> > as Adam was saying this should not happen if you remove the codec driver.
> >
> > It already took us quite a bit of effort to make sure all resources
> > are properly allocated/released. We still have known issues when
> > removing the platform driver only, mainly with HDaudio. I wasn't aware
> > of this case for I2C codecs, I guess this just made the list of TODO
> > cleanups even longer. D'oh!
> 
> Well, I'll make sure I at least sort the da721x drivers to rectify this discrepancy
> and provide the correct solution. On the back of this I have also spotted
> something else that looks stupid in the cold light day, so will deal with that as
> well (relates to these updates).

Sounds great, thanks everyone for your attention, please ignore the current patch since Adam's fix will come soon. -Yong 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-07-30 19:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-30 14:04 [PATCH] ASoC: da7219: Fix general protection fault in da7219_register_dai_clks Yong Zhi
2020-07-30 15:53 ` Adam Thomson
2020-07-30 16:06   ` Zhi, Yong
2020-07-30 16:19     ` Adam Thomson
2020-07-30 16:28       ` Mark Brown
2020-07-30 16:58         ` Pierre-Louis Bossart
2020-07-30 19:15           ` Adam Thomson
2020-07-30 19:42             ` Zhi, Yong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).