lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 4 Dec 2023 13:04:02 +0200
From:   Péter Ujfalusi <peter.ujfalusi@...ux.intel.com>
To:     Chen-Yu Tsai <wenst@...omium.org>,
        Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>,
        Liam Girdwood <lgirdwood@...il.com>,
        Bard Liao <yung-chuan.liao@...ux.intel.com>,
        Ranjani Sridharan <ranjani.sridharan@...ux.intel.com>,
        Daniel Baluta <daniel.baluta@....com>,
        Kai Vehmanen <kai.vehmanen@...ux.intel.com>,
        Mark Brown <broonie@...nel.org>,
        Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>
Cc:     sound-open-firmware@...a-project.org, linux-sound@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ASoC: SOF: Move sof_of_machine_select() to core.c from
 sof-of-dev.c



On 04/12/2023 05:35, Chen-Yu Tsai wrote:
> This reverts commit 014fdeb0d747304111cfecf93df4407c1a0c80db.
> 
> Commit 014fdeb0d747 ("ASoC: SOF: Move sof_of_machine_select() to
> sof-of-dev.c from sof-audio.c") caused a circular dependency between
> the snd_sof and snd_sof_of modules:
> 
> 	depmod: ERROR: Cycle detected: snd_sof -> snd_sof_of -> snd_sof
> 	depmod: ERROR: Found 2 modules in dependency cycles!
> 
> Move the function back with sof_machine_select().
> 
> Fixes: 014fdeb0d747 ("ASoC: SOF: Move sof_of_machine_select() to sof-of-dev.c from sof-audio.c")
> Signed-off-by: Chen-Yu Tsai <wenst@...omium.org>

Oh, I have re-done the compile test and that does not detect this (I
don't have ARM device to runtime test it), but looks valid.
I wonder if we should do this similarly to acpi machine select via ops
to cut the circular dependency?
That can be done in a followup patch.

Acked-by: Peter Ujfalusi <peter.ujfalusi@...ux.intel.com>

> ---
> Not sure what the proper arrangement would be, but this gets my builds
> going again.
> 
>  sound/soc/sof/core.c       | 22 ++++++++++++++++++++++
>  sound/soc/sof/sof-of-dev.c | 23 -----------------------
>  sound/soc/sof/sof-of-dev.h |  9 ---------
>  3 files changed, 22 insertions(+), 32 deletions(-)
> 
> diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
> index a2afec8f5879..425b023b03b4 100644
> --- a/sound/soc/sof/core.c
> +++ b/sound/soc/sof/core.c
> @@ -144,6 +144,28 @@ void sof_set_fw_state(struct snd_sof_dev *sdev, enum sof_fw_state new_state)
>  }
>  EXPORT_SYMBOL(sof_set_fw_state);
>  
> +static struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> +{
> +	struct snd_sof_pdata *sof_pdata = sdev->pdata;
> +	const struct sof_dev_desc *desc = sof_pdata->desc;
> +	struct snd_sof_of_mach *mach = desc->of_machines;
> +
> +	if (!mach)
> +		return NULL;
> +
> +	for (; mach->compatible; mach++) {
> +		if (of_machine_is_compatible(mach->compatible)) {
> +			sof_pdata->tplg_filename = mach->sof_tplg_filename;
> +			if (mach->fw_filename)
> +				sof_pdata->fw_filename = mach->fw_filename;
> +
> +			return mach;
> +		}
> +	}
> +
> +	return NULL;
> +}
> +
>  /* SOF Driver enumeration */
>  static int sof_machine_check(struct snd_sof_dev *sdev)
>  {
> diff --git a/sound/soc/sof/sof-of-dev.c b/sound/soc/sof/sof-of-dev.c
> index fa92da5ee9b3..b9a499e92b9a 100644
> --- a/sound/soc/sof/sof-of-dev.c
> +++ b/sound/soc/sof/sof-of-dev.c
> @@ -41,29 +41,6 @@ static void sof_of_probe_complete(struct device *dev)
>  	pm_runtime_enable(dev);
>  }
>  
> -struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> -{
> -	struct snd_sof_pdata *sof_pdata = sdev->pdata;
> -	const struct sof_dev_desc *desc = sof_pdata->desc;
> -	struct snd_sof_of_mach *mach = desc->of_machines;
> -
> -	if (!mach)
> -		return NULL;
> -
> -	for (; mach->compatible; mach++) {
> -		if (of_machine_is_compatible(mach->compatible)) {
> -			sof_pdata->tplg_filename = mach->sof_tplg_filename;
> -			if (mach->fw_filename)
> -				sof_pdata->fw_filename = mach->fw_filename;
> -
> -			return mach;
> -		}
> -	}
> -
> -	return NULL;
> -}
> -EXPORT_SYMBOL(sof_of_machine_select);
> -
>  int sof_of_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
> diff --git a/sound/soc/sof/sof-of-dev.h b/sound/soc/sof/sof-of-dev.h
> index 547e358a37e3..b6cc70595f3b 100644
> --- a/sound/soc/sof/sof-of-dev.h
> +++ b/sound/soc/sof/sof-of-dev.h
> @@ -16,15 +16,6 @@ struct snd_sof_of_mach {
>  	const char *sof_tplg_filename;
>  };
>  
> -#if IS_ENABLED(CONFIG_SND_SOC_SOF_OF_DEV)
> -struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev);
> -#else
> -static inline struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> -{
> -	return NULL;
> -}
> -#endif
> -
>  extern const struct dev_pm_ops sof_of_pm;
>  
>  int sof_of_probe(struct platform_device *pdev);

-- 
Péter

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ