[PATCH] ASoC: soc-core: fix DMI handling
When DMI information is not present, trying to assign the card long name results in the following warning.
WARNING KERN tegra-audio-graph-card sound: ASoC: no DMI vendor name!
The initial solution suggested was to test if the card device is an ACPI one. This causes a regression visible to userspace on all Intel platforms, with UCM unable to load card profiles based on DMI information: the card devices are not necessarily ACPI ones, e.g. when the parent creates platform devices on Intel devices.
To fix this problem, this patch exports the existing dmi_available variable and tests it in the ASoC core.
Fixes: c014170408bc ("ASoC: soc-core: Prevent warning if no DMI table is present") Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com --- drivers/firmware/dmi_scan.c | 1 + sound/soc/soc-core.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index d51ca0428bb8..f191a1f901ac 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -166,6 +166,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len) static const char *dmi_ident[DMI_STRING_MAX]; static LIST_HEAD(dmi_devices); int dmi_available; +EXPORT_SYMBOL_GPL(dmi_available);
/* * Save a DMI string diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16ba54eb8164..c7e4600b2dd4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1574,7 +1574,7 @@ int snd_soc_set_dmi_name(struct snd_soc_card *card, const char *flavour) if (card->long_name) return 0; /* long name already set by driver or from DMI */
- if (!is_acpi_device_node(card->dev->fwnode)) + if (!dmi_available) return 0;
/* make up dmi long name as: vendor-product-version-board */
On Wed, 10 Mar 2021 20:39:27 +0100, Pierre-Louis Bossart wrote:
When DMI information is not present, trying to assign the card long name results in the following warning.
WARNING KERN tegra-audio-graph-card sound: ASoC: no DMI vendor name!
The initial solution suggested was to test if the card device is an ACPI one. This causes a regression visible to userspace on all Intel platforms, with UCM unable to load card profiles based on DMI information: the card devices are not necessarily ACPI ones, e.g. when the parent creates platform devices on Intel devices.
To fix this problem, this patch exports the existing dmi_available variable and tests it in the ASoC core.
Fixes: c014170408bc ("ASoC: soc-core: Prevent warning if no DMI table is present") Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
Reviewed-by: Takashi Iwai tiwai@suse.de
Takashi
drivers/firmware/dmi_scan.c | 1 + sound/soc/soc-core.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index d51ca0428bb8..f191a1f901ac 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -166,6 +166,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len) static const char *dmi_ident[DMI_STRING_MAX]; static LIST_HEAD(dmi_devices); int dmi_available; +EXPORT_SYMBOL_GPL(dmi_available);
/*
- Save a DMI string
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16ba54eb8164..c7e4600b2dd4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1574,7 +1574,7 @@ int snd_soc_set_dmi_name(struct snd_soc_card *card, const char *flavour) if (card->long_name) return 0; /* long name already set by driver or from DMI */
- if (!is_acpi_device_node(card->dev->fwnode))
if (!dmi_available) return 0;
/* make up dmi long name as: vendor-product-version-board */
-- 2.25.1
On Wed, 10 Mar 2021 13:39:27 -0600, Pierre-Louis Bossart wrote:
When DMI information is not present, trying to assign the card long name results in the following warning.
WARNING KERN tegra-audio-graph-card sound: ASoC: no DMI vendor name!
The initial solution suggested was to test if the card device is an ACPI one. This causes a regression visible to userspace on all Intel platforms, with UCM unable to load card profiles based on DMI information: the card devices are not necessarily ACPI ones, e.g. when the parent creates platform devices on Intel devices.
To fix this problem, this patch exports the existing dmi_available variable and tests it in the ASoC core.
Fixes: c014170408bc ("ASoC: soc-core: Prevent warning if no DMI table is present") Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
drivers/firmware/dmi_scan.c | 1 + sound/soc/soc-core.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index d51ca0428bb8..f191a1f901ac 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -166,6 +166,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len) static const char *dmi_ident[DMI_STRING_MAX]; static LIST_HEAD(dmi_devices); int dmi_available; +EXPORT_SYMBOL_GPL(dmi_available);
/*
- Save a DMI string
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16ba54eb8164..c7e4600b2dd4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1574,7 +1574,7 @@ int snd_soc_set_dmi_name(struct snd_soc_card *card, const char *flavour) if (card->long_name) return 0; /* long name already set by driver or from DMI */
- if (!is_acpi_device_node(card->dev->fwnode))
if (!dmi_available) return 0;
/* make up dmi long name as: vendor-product-version-board */
Fine with me.
Acked-by: Jean Delvare jdelvare@suse.de
On Wed, 10 Mar 2021 13:39:27 -0600, Pierre-Louis Bossart wrote:
When DMI information is not present, trying to assign the card long name results in the following warning.
WARNING KERN tegra-audio-graph-card sound: ASoC: no DMI vendor name!
The initial solution suggested was to test if the card device is an ACPI one. This causes a regression visible to userspace on all Intel platforms, with UCM unable to load card profiles based on DMI information: the card devices are not necessarily ACPI ones, e.g. when the parent creates platform devices on Intel devices.
[...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/1] ASoC: soc-core: fix DMI handling commit: c68fded79a9fe1376a60049f2ab45d611969de5c
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
On 10/03/2021 19:39, Pierre-Louis Bossart wrote:
When DMI information is not present, trying to assign the card long name results in the following warning.
WARNING KERN tegra-audio-graph-card sound: ASoC: no DMI vendor name!
The initial solution suggested was to test if the card device is an ACPI one. This causes a regression visible to userspace on all Intel platforms, with UCM unable to load card profiles based on DMI information: the card devices are not necessarily ACPI ones, e.g. when the parent creates platform devices on Intel devices.
To fix this problem, this patch exports the existing dmi_available variable and tests it in the ASoC core.
Fixes: c014170408bc ("ASoC: soc-core: Prevent warning if no DMI table is present") Signed-off-by: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com
drivers/firmware/dmi_scan.c | 1 + sound/soc/soc-core.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index d51ca0428bb8..f191a1f901ac 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -166,6 +166,7 @@ static int __init dmi_checksum(const u8 *buf, u8 len) static const char *dmi_ident[DMI_STRING_MAX]; static LIST_HEAD(dmi_devices); int dmi_available; +EXPORT_SYMBOL_GPL(dmi_available);
/*
- Save a DMI string
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 16ba54eb8164..c7e4600b2dd4 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1574,7 +1574,7 @@ int snd_soc_set_dmi_name(struct snd_soc_card *card, const char *flavour) if (card->long_name) return 0; /* long name already set by driver or from DMI */
- if (!is_acpi_device_node(card->dev->fwnode))
if (!dmi_available) return 0;
/* make up dmi long name as: vendor-product-version-board */
Thanks for fixing.
Reviewed-by: Jon Hunter jonathanh@nvidia.com Tested-by: Jon Hunter jonathanh@nvidia.com
Cheers Jon
participants (5)
-
Jean Delvare
-
Jon Hunter
-
Mark Brown
-
Pierre-Louis Bossart
-
Takashi Iwai