All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues
@ 2021-01-22  0:57 Pierre-Louis Bossart
  2021-01-22  0:57 ` [PATCH 1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies Pierre-Louis Bossart
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Pierre-Louis Bossart @ 2021-01-22  0:57 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai, Arnd Bergmann, vkoul, broonie, Pierre-Louis Bossart

We've had several reports of broken dependencies. The 'right' fix is
to revisit the module dependencies as suggested by Arnd Bergmann. This
is WIP at https://github.com/thesofproject/linux/pull/2683. Since this
is taking longer than expected, I am only sharing quick fixes for now.

Pierre-Louis Bossart (2):
  ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies
  ASoC: SOF: SND_INTEL_DSP_CONFIG dependency

 sound/soc/sof/intel/Kconfig  |  3 ++-
 sound/soc/sof/sof-acpi-dev.c | 11 ++++++-----
 sound/soc/sof/sof-pci-dev.c  | 10 ++++++----
 3 files changed, 14 insertions(+), 10 deletions(-)

-- 
2.25.1


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

* [PATCH 1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies
  2021-01-22  0:57 [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Pierre-Louis Bossart
@ 2021-01-22  0:57 ` Pierre-Louis Bossart
  2021-01-22  0:57 ` [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency Pierre-Louis Bossart
  2021-01-25 14:17 ` [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Mark Brown
  2 siblings, 0 replies; 9+ messages in thread
From: Pierre-Louis Bossart @ 2021-01-22  0:57 UTC (permalink / raw)
  To: alsa-devel
  Cc: Arnd Bergmann, kernel test robot, tiwai, Pierre-Louis Bossart,
	vkoul, broonie

The LKP bot reports the following issue:

WARNING: unmet direct dependencies detected for SOUNDWIRE_INTEL
  Depends on [m]: SOUNDWIRE [=m] && ACPI [=y] && SND_SOC [=y]
  Selected by [y]:
  - SND_SOC_SOF_INTEL_SOUNDWIRE [=y] && SOUND [=y] && !UML &&
  SND [=y] && SND_SOC [=y] && SND_SOC_SOF_TOPLEVEL [=y] &&
  SND_SOC_SOF_INTEL_TOPLEVEL [=y] && SND_SOC_SOF_INTEL_PCI [=y]

This comes from having tristates being configured independently, when
in practice the CONFIG_SOUNDWIRE needs to be aligned with the SOF
choices: when the SOF code is compiled as built-in, the
CONFIG_SOUNDWIRE also needs to be 'y'.

The easiest fix is to replace the 'depends' with a 'select' and have a
single user selection to activate SoundWire on Intel platforms. This
still allows regmap to be compiled independently as a module.

This is just a temporary fix, the select/depend usage will be
revisited and the SOF Kconfig re-organized, as suggested by Arnd
Bergman.

Reported-by: kernel test robot <lkp@intel.com>
Fixes: a115ab9b8b93e ('ASoC: SOF: Intel: add build support for SoundWire')
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 sound/soc/sof/intel/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sof/intel/Kconfig b/sound/soc/sof/intel/Kconfig
index d306c370e5d1..4797a1cf8c80 100644
--- a/sound/soc/sof/intel/Kconfig
+++ b/sound/soc/sof/intel/Kconfig
@@ -355,7 +355,7 @@ config SND_SOC_SOF_HDA
 
 config SND_SOC_SOF_INTEL_SOUNDWIRE_LINK
 	bool "SOF support for SoundWire"
-	depends on SOUNDWIRE && ACPI
+	depends on ACPI
 	help
 	  This adds support for SoundWire with Sound Open Firmware
 	  for Intel(R) platforms.
@@ -371,6 +371,7 @@ config SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
 
 config SND_SOC_SOF_INTEL_SOUNDWIRE
 	tristate
+	select SOUNDWIRE
 	select SOUNDWIRE_INTEL
 	help
 	  This option is not user-selectable but automagically handled by
-- 
2.25.1


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

* [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22  0:57 [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Pierre-Louis Bossart
  2021-01-22  0:57 ` [PATCH 1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies Pierre-Louis Bossart
@ 2021-01-22  0:57 ` Pierre-Louis Bossart
  2021-01-22  5:26   ` Vinod Koul
  2021-01-22  8:58   ` Takashi Iwai
  2021-01-25 14:17 ` [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Mark Brown
  2 siblings, 2 replies; 9+ messages in thread
From: Pierre-Louis Bossart @ 2021-01-22  0:57 UTC (permalink / raw)
  To: alsa-devel
  Cc: Arnd Bergmann, Arnd Bergmann, tiwai, Pierre-Louis Bossart, vkoul,
	broonie

The sof-pci-dev driver fails to link when built into the kernel
and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:

arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'

As a temporary fix, use IS_REACHABLE to prevent the problem from
happening. A more complete solution is to move this code to
Intel-specific parts, restructure the drivers and Kconfig as discussed
with Arnd Bergmann and Takashi Iwai.

Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 sound/soc/sof/sof-acpi-dev.c | 11 ++++++-----
 sound/soc/sof/sof-pci-dev.c  | 10 ++++++----
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/sound/soc/sof/sof-acpi-dev.c b/sound/soc/sof/sof-acpi-dev.c
index 2a369c2c6551..cc2e257087e4 100644
--- a/sound/soc/sof/sof-acpi-dev.c
+++ b/sound/soc/sof/sof-acpi-dev.c
@@ -131,12 +131,13 @@ static int sof_acpi_probe(struct platform_device *pdev)
 	if (!id)
 		return -ENODEV;
 
-	ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
-	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
-		dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
-		return -ENODEV;
+	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
+		ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
+		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
+			dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
+			return -ENODEV;
+		}
 	}
-
 	dev_dbg(dev, "ACPI DSP detected");
 
 	sof_pdata = devm_kzalloc(dev, sizeof(*sof_pdata), GFP_KERNEL);
diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c
index 7757463bd81a..388772f9c4d2 100644
--- a/sound/soc/sof/sof-pci-dev.c
+++ b/sound/soc/sof/sof-pci-dev.c
@@ -346,10 +346,12 @@ static int sof_pci_probe(struct pci_dev *pci,
 	const struct snd_sof_dsp_ops *ops;
 	int ret;
 
-	ret = snd_intel_dsp_driver_probe(pci);
-	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
-		dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
-		return -ENODEV;
+	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
+		ret = snd_intel_dsp_driver_probe(pci);
+		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
+			dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
+			return -ENODEV;
+		}
 	}
 	dev_dbg(&pci->dev, "PCI DSP detected");
 
-- 
2.25.1


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

* Re: [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22  0:57 ` [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency Pierre-Louis Bossart
@ 2021-01-22  5:26   ` Vinod Koul
  2021-01-22  8:58   ` Takashi Iwai
  1 sibling, 0 replies; 9+ messages in thread
From: Vinod Koul @ 2021-01-22  5:26 UTC (permalink / raw)
  To: Pierre-Louis Bossart
  Cc: tiwai, Arnd Bergmann, alsa-devel, broonie, Arnd Bergmann

On 21-01-21, 18:57, Pierre-Louis Bossart wrote:
> The sof-pci-dev driver fails to link when built into the kernel
> and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:
> 
> arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
> sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'
> 
> As a temporary fix, use IS_REACHABLE to prevent the problem from
> happening. A more complete solution is to move this code to
> Intel-specific parts, restructure the drivers and Kconfig as discussed
> with Arnd Bergmann and Takashi Iwai.
> 
> Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
> Reported-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>  sound/soc/sof/sof-acpi-dev.c | 11 ++++++-----
>  sound/soc/sof/sof-pci-dev.c  | 10 ++++++----
>  2 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/sound/soc/sof/sof-acpi-dev.c b/sound/soc/sof/sof-acpi-dev.c
> index 2a369c2c6551..cc2e257087e4 100644
> --- a/sound/soc/sof/sof-acpi-dev.c
> +++ b/sound/soc/sof/sof-acpi-dev.c
> @@ -131,12 +131,13 @@ static int sof_acpi_probe(struct platform_device *pdev)
>  	if (!id)
>  		return -ENODEV;
>  
> -	ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
> -	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> -		dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
> -		return -ENODEV;
> +	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
> +		ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
> +		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> +			dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
> +			return -ENODEV;
> +		}

should the else case be to continue, is the DSP not critical for the
driver to work..?

>  	}
> -

Seems unrelated change

>  	dev_dbg(dev, "ACPI DSP detected");
>  
>  	sof_pdata = devm_kzalloc(dev, sizeof(*sof_pdata), GFP_KERNEL);
> diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c
> index 7757463bd81a..388772f9c4d2 100644
> --- a/sound/soc/sof/sof-pci-dev.c
> +++ b/sound/soc/sof/sof-pci-dev.c
> @@ -346,10 +346,12 @@ static int sof_pci_probe(struct pci_dev *pci,
>  	const struct snd_sof_dsp_ops *ops;
>  	int ret;
>  
> -	ret = snd_intel_dsp_driver_probe(pci);
> -	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> -		dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
> -		return -ENODEV;
> +	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
> +		ret = snd_intel_dsp_driver_probe(pci);
> +		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> +			dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
> +			return -ENODEV;
> +		}
>  	}
>  	dev_dbg(&pci->dev, "PCI DSP detected");
>  
> -- 
> 2.25.1

-- 
~Vinod

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

* Re: [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22  0:57 ` [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency Pierre-Louis Bossart
  2021-01-22  5:26   ` Vinod Koul
@ 2021-01-22  8:58   ` Takashi Iwai
  2021-01-22 15:38     ` Pierre-Louis Bossart
  1 sibling, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2021-01-22  8:58 UTC (permalink / raw)
  To: Pierre-Louis Bossart
  Cc: Arnd Bergmann, alsa-devel, broonie, vkoul, Arnd Bergmann

On Fri, 22 Jan 2021 01:57:25 +0100,
Pierre-Louis Bossart wrote:
> 
> The sof-pci-dev driver fails to link when built into the kernel
> and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:
> 
> arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
> sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'
> 
> As a temporary fix, use IS_REACHABLE to prevent the problem from
> happening. A more complete solution is to move this code to
> Intel-specific parts, restructure the drivers and Kconfig as discussed
> with Arnd Bergmann and Takashi Iwai.
> 
> Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
> Reported-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>

This might not be good enough.  The code may still refer to the
snd_intel_dsp_probe() symbol even if IS_REACHABLE() is false
(although, practically seen, gcc should optimize it out).

You need #if IS_REACHABLE() instead of the plain if.
Then you don't need to change the indentation, and the patch will be
eventually smaller, too :)


thanks,

Takashi

> ---
>  sound/soc/sof/sof-acpi-dev.c | 11 ++++++-----
>  sound/soc/sof/sof-pci-dev.c  | 10 ++++++----
>  2 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/sound/soc/sof/sof-acpi-dev.c b/sound/soc/sof/sof-acpi-dev.c
> index 2a369c2c6551..cc2e257087e4 100644
> --- a/sound/soc/sof/sof-acpi-dev.c
> +++ b/sound/soc/sof/sof-acpi-dev.c
> @@ -131,12 +131,13 @@ static int sof_acpi_probe(struct platform_device *pdev)
>  	if (!id)
>  		return -ENODEV;
>  
> -	ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
> -	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> -		dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
> -		return -ENODEV;
> +	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
> +		ret = snd_intel_acpi_dsp_driver_probe(dev, id->id);
> +		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> +			dev_dbg(dev, "SOF ACPI driver not selected, aborting probe\n");
> +			return -ENODEV;
> +		}
>  	}
> -
>  	dev_dbg(dev, "ACPI DSP detected");
>  
>  	sof_pdata = devm_kzalloc(dev, sizeof(*sof_pdata), GFP_KERNEL);
> diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c
> index 7757463bd81a..388772f9c4d2 100644
> --- a/sound/soc/sof/sof-pci-dev.c
> +++ b/sound/soc/sof/sof-pci-dev.c
> @@ -346,10 +346,12 @@ static int sof_pci_probe(struct pci_dev *pci,
>  	const struct snd_sof_dsp_ops *ops;
>  	int ret;
>  
> -	ret = snd_intel_dsp_driver_probe(pci);
> -	if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> -		dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
> -		return -ENODEV;
> +	if (IS_REACHABLE(CONFIG_SND_INTEL_DSP_CONFIG)) {
> +		ret = snd_intel_dsp_driver_probe(pci);
> +		if (ret != SND_INTEL_DSP_DRIVER_ANY && ret != SND_INTEL_DSP_DRIVER_SOF) {
> +			dev_dbg(&pci->dev, "SOF PCI driver not selected, aborting probe\n");
> +			return -ENODEV;
> +		}
>  	}
>  	dev_dbg(&pci->dev, "PCI DSP detected");
>  
> -- 
> 2.25.1
> 

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

* Re: [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22  8:58   ` Takashi Iwai
@ 2021-01-22 15:38     ` Pierre-Louis Bossart
  2021-01-22 18:33       ` Arnd Bergmann
  0 siblings, 1 reply; 9+ messages in thread
From: Pierre-Louis Bossart @ 2021-01-22 15:38 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Arnd Bergmann, alsa-devel, broonie, vkoul, Arnd Bergmann


>> The sof-pci-dev driver fails to link when built into the kernel
>> and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:
>>
>> arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
>> sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'
>>
>> As a temporary fix, use IS_REACHABLE to prevent the problem from
>> happening. A more complete solution is to move this code to
>> Intel-specific parts, restructure the drivers and Kconfig as discussed
>> with Arnd Bergmann and Takashi Iwai.
>>
>> Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
>> Reported-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> 
> This might not be good enough.  The code may still refer to the
> snd_intel_dsp_probe() symbol even if IS_REACHABLE() is false
> (although, practically seen, gcc should optimize it out).
> 
> You need #if IS_REACHABLE() instead of the plain if.
> Then you don't need to change the indentation, and the patch will be
> eventually smaller, too :)

I used the if() on purpose since in the past you mentioned #if/#endif 
are ugly. There are plenty of other cases in the kernel code where if( 
IF_REACHABLE(CONFIG_XYZ)) is used...

I don't mind sending a v2, the net result is the same.

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

* Re: [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22 15:38     ` Pierre-Louis Bossart
@ 2021-01-22 18:33       ` Arnd Bergmann
  2021-01-23  8:08         ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Arnd Bergmann @ 2021-01-22 18:33 UTC (permalink / raw)
  To: Pierre-Louis Bossart
  Cc: Takashi Iwai, ALSA Development Mailing List, Mark Brown,
	Vinod Koul, Arnd Bergmann

On Fri, Jan 22, 2021 at 4:38 PM Pierre-Louis Bossart
<pierre-louis.bossart@linux.intel.com> wrote:
> >> The sof-pci-dev driver fails to link when built into the kernel
> >> and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:
> >>
> >> arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
> >> sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'
> >>
> >> As a temporary fix, use IS_REACHABLE to prevent the problem from
> >> happening. A more complete solution is to move this code to
> >> Intel-specific parts, restructure the drivers and Kconfig as discussed
> >> with Arnd Bergmann and Takashi Iwai.
> >>
> >> Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
> >> Reported-by: Arnd Bergmann <arnd@arndb.de>
> >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> >
> > This might not be good enough.  The code may still refer to the
> > snd_intel_dsp_probe() symbol even if IS_REACHABLE() is false
> > (although, practically seen, gcc should optimize it out).
> >
> > You need #if IS_REACHABLE() instead of the plain if.
> > Then you don't need to change the indentation, and the patch will be
> > eventually smaller, too :)
>
> I used the if() on purpose since in the past you mentioned #if/#endif
> are ugly. There are plenty of other cases in the kernel code where if(
> IF_REACHABLE(CONFIG_XYZ)) is used...

Dead-code-elimination in both gcc and clang is reliable for all supported
versions (there were problems in gcc-4.1 and before), and generally the
"if (IS_ENABLED())" form is nicer than the "#if IS_ENABLED()" form
because it produces better compile-time coverage.

        Arnd

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

* Re: [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
  2021-01-22 18:33       ` Arnd Bergmann
@ 2021-01-23  8:08         ` Takashi Iwai
  0 siblings, 0 replies; 9+ messages in thread
From: Takashi Iwai @ 2021-01-23  8:08 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Vinod Koul, ALSA Development Mailing List, Mark Brown,
	Pierre-Louis Bossart, Arnd Bergmann

On Fri, 22 Jan 2021 19:33:27 +0100,
Arnd Bergmann wrote:
> 
> On Fri, Jan 22, 2021 at 4:38 PM Pierre-Louis Bossart
> <pierre-louis.bossart@linux.intel.com> wrote:
> > >> The sof-pci-dev driver fails to link when built into the kernel
> > >> and CONFIG_SND_INTEL_DSP_CONFIG is set to =m:
> > >>
> > >> arm-linux-gnueabi-ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
> > >> sof-pci-dev.c:(.text+0x1c): undefined reference to `snd_intel_dsp_driver_probe'
> > >>
> > >> As a temporary fix, use IS_REACHABLE to prevent the problem from
> > >> happening. A more complete solution is to move this code to
> > >> Intel-specific parts, restructure the drivers and Kconfig as discussed
> > >> with Arnd Bergmann and Takashi Iwai.
> > >>
> > >> Fixes: 82d9d54a6c0e ("ALSA: hda: add Intel DSP configuration / probe code")
> > >> Reported-by: Arnd Bergmann <arnd@arndb.de>
> > >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> > >
> > > This might not be good enough.  The code may still refer to the
> > > snd_intel_dsp_probe() symbol even if IS_REACHABLE() is false
> > > (although, practically seen, gcc should optimize it out).
> > >
> > > You need #if IS_REACHABLE() instead of the plain if.
> > > Then you don't need to change the indentation, and the patch will be
> > > eventually smaller, too :)
> >
> > I used the if() on purpose since in the past you mentioned #if/#endif
> > are ugly. There are plenty of other cases in the kernel code where if(
> > IF_REACHABLE(CONFIG_XYZ)) is used...
> 
> Dead-code-elimination in both gcc and clang is reliable for all supported
> versions (there were problems in gcc-4.1 and before), and generally the
> "if (IS_ENABLED())" form is nicer than the "#if IS_ENABLED()" form
> because it produces better compile-time coverage.

Heh, my trust to the compiler isn't that high, but other than that,
it's a matter of taste.  I agree that if() fits often better in
general, especially when the more code is involved.  But, in this
particular case, the covered area is small (hence optimization doesn't
matter) and we want to show it rather clearer as a temporary
workaround (that shall be deleted in the next kernel).  Finally, the
changes needed by #ifdef are smaller.  That's why I suggested #ifdef.

But that's nothing but a bike shed topic, and I don't mind either way
as long as the code really works in all cases.


thanks,

Takashi

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

* Re: [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues
  2021-01-22  0:57 [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Pierre-Louis Bossart
  2021-01-22  0:57 ` [PATCH 1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies Pierre-Louis Bossart
  2021-01-22  0:57 ` [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency Pierre-Louis Bossart
@ 2021-01-25 14:17 ` Mark Brown
  2 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2021-01-25 14:17 UTC (permalink / raw)
  To: alsa-devel, Pierre-Louis Bossart; +Cc: tiwai, Arnd Bergmann, vkoul

On Thu, 21 Jan 2021 18:57:23 -0600, Pierre-Louis Bossart wrote:
> We've had several reports of broken dependencies. The 'right' fix is
> to revisit the module dependencies as suggested by Arnd Bergmann. This
> is WIP at https://github.com/thesofproject/linux/pull/2683. Since this
> is taking longer than expected, I am only sharing quick fixes for now.
> 
> Pierre-Louis Bossart (2):
>   ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies
>   ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
> 
> [...]

Applied to

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

Thanks!

[1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies
      commit: bd9038faa9d7f162b47e1577e35ec5eac39f9d90
[2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency
      commit: 8a3fea95fab14dd19487d1e499eee3b3d1050d70

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

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

end of thread, other threads:[~2021-01-25 14:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22  0:57 [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Pierre-Louis Bossart
2021-01-22  0:57 ` [PATCH 1/2] ASoC: SOF: Intel: soundwire: fix select/depend unmet dependencies Pierre-Louis Bossart
2021-01-22  0:57 ` [PATCH 2/2] ASoC: SOF: SND_INTEL_DSP_CONFIG dependency Pierre-Louis Bossart
2021-01-22  5:26   ` Vinod Koul
2021-01-22  8:58   ` Takashi Iwai
2021-01-22 15:38     ` Pierre-Louis Bossart
2021-01-22 18:33       ` Arnd Bergmann
2021-01-23  8:08         ` Takashi Iwai
2021-01-25 14:17 ` [PATCH 0/2] ASoC: SOF: partial fix to Kconfig issues Mark Brown

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.