mailman.alsa-project.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Sound-open-firmware

Thread Start a new thread
Download
Threads by month
  • ----- 2025 -----
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
sound-open-firmware@alsa-project.org

  • 1572 discussions
[Sound-open-firmware] [PATCH] ASoC: SOF: amd: Fix for handling spurious interrupts from DSP
by V sujith kumar Reddy 02 Feb '23

02 Feb '23
As interrupts are Level-triggered,unless and until we deassert the register the interrupts are generated which causes spurious interrupts unhandled. Now we deasserted the interrupt at top half which solved the below "nobody cared" warning. warning reported in dmesg: irq 80: nobody cared (try booting with the "irqpoll" option) CPU: 5 PID: 2735 Comm: irq/80-AudioDSP Not tainted 5.15.86-15817-g4c19f3e06d49 #1 1bd3fd932cf58caacc95b0504d6ea1e3eab22289 Hardware name: Google Skyrim/Skyrim, BIOS Google_Skyrim.15303.0.0 01/03/2023 Call Trace: <IRQ> dump_stack_lvl+0x69/0x97 __report_bad_irq+0x3a/0xae note_interrupt+0x1a9/0x1e3 handle_irq_event_percpu+0x4b/0x6e handle_irq_event+0x36/0x5b handle_fasteoi_irq+0xae/0x171 __common_interrupt+0x48/0xc4 </IRQ> handlers: acp_irq_handler [snd_sof_amd_acp] threaded [<000000007e089f34>] acp_irq_thread [snd_sof_amd_acp] Disabling IRQ #80 Signed-off-by: V sujith kumar Reddy <Vsujithkumar.Reddy(a)amd.com> --- sound/soc/sof/amd/acp.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c index 6bd2888fbb66..d5ccd4d09278 100644 --- a/sound/soc/sof/amd/acp.c +++ b/sound/soc/sof/amd/acp.c @@ -318,7 +318,6 @@ static irqreturn_t acp_irq_thread(int irq, void *context) { struct snd_sof_dev *sdev = context; const struct sof_amd_acp_desc *desc = get_chip_info(sdev->pdata); - unsigned int base = desc->dsp_intr_base; unsigned int val, count = ACP_HW_SEM_RETRY_COUNT; val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->ext_intr_stat); @@ -328,28 +327,20 @@ static irqreturn_t acp_irq_thread(int irq, void *context) return IRQ_HANDLED; } - val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET); - if (val & ACP_DSP_TO_HOST_IRQ) { - while (snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->hw_semaphore_offset)) { - /* Wait until acquired HW Semaphore lock or timeout */ - count--; - if (!count) { - dev_err(sdev->dev, "%s: Failed to acquire HW lock\n", __func__); - return IRQ_NONE; - } + while (snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->hw_semaphore_offset)) { + /* Wait until acquired HW Semaphore lock or timeout */ + count--; + if (!count) { + dev_err(sdev->dev, "%s: Failed to acquire HW lock\n", __func__); + return IRQ_NONE; } - - sof_ops(sdev)->irq_thread(irq, sdev); - val |= ACP_DSP_TO_HOST_IRQ; - snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET, val); - - /* Unlock or Release HW Semaphore */ - snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->hw_semaphore_offset, 0x0); - - return IRQ_HANDLED; } - return IRQ_NONE; + sof_ops(sdev)->irq_thread(irq, sdev); + /* Unlock or Release HW Semaphore */ + snd_sof_dsp_write(sdev, ACP_DSP_BAR, desc->hw_semaphore_offset, 0x0); + + return IRQ_HANDLED; }; static irqreturn_t acp_irq_handler(int irq, void *dev_id) @@ -360,8 +351,11 @@ static irqreturn_t acp_irq_handler(int irq, void *dev_id) unsigned int val; val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET); - if (val) + if (val) { + val |= ACP_DSP_TO_HOST_IRQ; + snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET, val); return IRQ_WAKE_THREAD; + } return IRQ_NONE; } -- 2.25.1
2 1
0 0
Re: [Sound-open-firmware] Real hardware (boards) on which the SOF runs
by Pierre-Louis Bossart 30 Jan '23

30 Jan '23
Hi Gerion, Zephyr support is still very new, if you want to start using it now it has to be clear that you'll have to follow the bleeding edge firmware development on TigerLake+ devices. All previous platforms will not have Zephyr support and have been parked on a long-term XTOS-based support branch. The only Intel-based devices you can use for you own development are the Up Extreme i11 boards or TigerLake+ Chromebooks in developer mode. These two sets of devices use the community key and have the DSP configured. If you want to get access to the Cadence Tensilica compiler, things get complicated as well. Usually this requires an NDA. That means you may need to use GCC with a lower performance to be expected since HiFi3 instructions are not supported by GCC just yet. We should add this information in the 'Getting started' documentation. Hope this helps, -Pierre On 1/30/23 08:22, sound-open-firmware-owner(a)alsa-project.org wrote: > ForwardedMessage.eml > > Subject: > Real hardware (boards) on which the SOF runs > From: > Gerion Entrup <entrup(a)sra.uni-hannover.de> > Date: > 1/30/23, 08:22 > > To: > sound-open-firmware(a)alsa-project.org > > > Hi, > > we are doing operating systems research and think that the SOF is of > great value because of its usage of Zephyr. > > We therefore wanted to get some real hardware where SOF is running on. > However, that it kind of complicated. > We know of some Thinkpads (Intel 12th gen) that are running the SOF. > However, we also have access to another Intel 12th gen desktop PC on > which the vendor seems to have disabled the Intel DSP forever (at least > there is not setting in the BIOS/UEFI). > > Online, we only found the Minnowboard Turbot as a board that has an SOF > enabled DSP. However, the board seems to be discontinued so we cannot > buy it. > > Do you know of some (preferable low budget) boards on which the SOF runs? > Is there some kind of hardware matrix for whole PCs (laptops, single > board PCs) that are supported by the SOF? On the website, I have only > found a list of CPU platforms [1]. > > Best, > Gerion > > > [1] https://thesofproject.github.io/latest/platforms/index.html
1 0
0 0
[Sound-open-firmware] [linux-next:master] BUILD REGRESSION d514392f17fd4d386cfadde7f849d97db4ca1fb0
by kernel test robot 20 Jan '23

20 Jan '23
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master branch HEAD: d514392f17fd4d386cfadde7f849d97db4ca1fb0 Add linux-next specific files for 20230120 Error/Warning reports: https://lore.kernel.org/oe-kbuild-all/202301191616.R33Dvxk4-lkp@intel.com https://lore.kernel.org/oe-kbuild-all/202301192229.wL7iPJxS-lkp@intel.com https://lore.kernel.org/oe-kbuild-all/202301201120.aIaz7dT4-lkp@intel.com https://lore.kernel.org/oe-kbuild-all/202301202042.herfGxx6-lkp@intel.com Error/Warning: (recently discovered and may have been fixed) Documentation/virt/kvm/api.rst:5070: WARNING: Unexpected indentation. drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_dp_training.c:1585:38: warning: variable 'result' set but not used [-Wunused-but-set-variable] drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:5253:24: sparse: left side has type restricted __le16 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:5253:24: sparse: right side has type restricted __le32 idma64.c:(.text+0x6a): undefined reference to `devm_platform_ioremap_resource' Unverified Error/Warning (likely false positive, please contact us if interested): drivers/net/dsa/microchip/ksz_ptp.c:217 ksz_ptp_clock_register() warn: passing zero to 'PTR_ERR' drivers/nvmem/imx-ocotp.c:599:21: sparse: sparse: symbol 'imx_ocotp_layout' was not declared. Should it be static? drivers/nvmem/layouts/sl28vpd.c:143:21: sparse: sparse: symbol 'sl28vpd_layout' was not declared. Should it be static? mm/hugetlb.c:3101 alloc_hugetlb_folio() error: uninitialized symbol 'h_cg'. mm/zsmalloc.c:900:20: warning: unused function 'obj_allocated' [-Wunused-function] sound/soc/sof/sof-audio.c:329 sof_prepare_widgets_in_path() error: we previously assumed 'swidget' could be null (see line 306) Error/Warning ids grouped by kconfigs: gcc_recent_errors |-- alpha-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- arc-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- arm-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- arm-randconfig-s032-20230119 | `-- drivers-nvmem-imx-ocotp.c:sparse:sparse:symbol-imx_ocotp_layout-was-not-declared.-Should-it-be-static |-- arm64-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- csky-randconfig-m041-20230119 | |-- drivers-net-dsa-microchip-ksz_ptp.c-ksz_ptp_clock_register()-warn:passing-zero-to-PTR_ERR | `-- sound-soc-sof-sof-audio.c-sof_prepare_widgets_in_path()-error:we-previously-assumed-swidget-could-be-null-(see-line-) |-- csky-randconfig-r025-20230119 | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- csky-randconfig-s043-20230119 | |-- drivers-net-wireless-realtek-rtl8xxxu-rtl8xxxu_core.c:sparse:left-side-has-type-restricted-__le16 | |-- drivers-net-wireless-realtek-rtl8xxxu-rtl8xxxu_core.c:sparse:right-side-has-type-restricted-__le32 | `-- drivers-net-wireless-realtek-rtl8xxxu-rtl8xxxu_core.c:sparse:sparse:invalid-assignment: |-- i386-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- ia64-allmodconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- ia64-randconfig-c033-20230119 | `-- drivers-net-ethernet-microchip-vcap-vcap_api.c:WARNING-opportunity-for-kmemdup |-- ia64-randconfig-s052-20230119 | `-- drivers-nvmem-imx-ocotp.c:sparse:sparse:symbol-imx_ocotp_layout-was-not-declared.-Should-it-be-static |-- loongarch-randconfig-r024-20230119 | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- loongarch-randconfig-s042-20230119 | `-- drivers-nvmem-layouts-sl28vpd.c:sparse:sparse:symbol-sl28vpd_layout-was-not-declared.-Should-it-be-static |-- m68k-randconfig-c004-20230119 | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- mips-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- openrisc-randconfig-s033-20230119 | `-- drivers-nvmem-imx-ocotp.c:sparse:sparse:symbol-imx_ocotp_layout-was-not-declared.-Should-it-be-static |-- powerpc-allmodconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- riscv-randconfig-s041-20230119 | `-- drivers-nvmem-imx-ocotp.c:sparse:sparse:symbol-imx_ocotp_layout-was-not-declared.-Should-it-be-static |-- s390-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- sparc-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used |-- x86_64-allnoconfig | `-- Documentation-virt-kvm-api.rst:WARNING:Unexpected-indentation. |-- x86_64-allyesconfig | `-- drivers-gpu-drm-amd-amdgpu-..-display-dc-link-link_dp_training.c:warning:variable-result-set-but-not-used `-- x86_64-randconfig-m001 clang_recent_errors |-- s390-randconfig-r044-20230119 | `-- idma64.c:(.text):undefined-reference-to-devm_platform_ioremap_resource `-- x86_64-randconfig-a012 `-- mm-zsmalloc.c:warning:unused-function-obj_allocated elapsed time: 882m configs tested: 79 configs skipped: 3 gcc tested configs: x86_64 allnoconfig um i386_defconfig i386 defconfig um x86_64_defconfig x86_64 defconfig x86_64 rhel-8.3 arc defconfig alpha defconfig arm defconfig i386 randconfig-a001 x86_64 rhel-8.3-func m68k allyesconfig x86_64 rhel-8.3-syz x86_64 rhel-8.3-kselftests x86_64 allyesconfig powerpc allnoconfig x86_64 rhel-8.3-kunit ia64 allmodconfig arm randconfig-r046-20230119 x86_64 randconfig-a002 arm allyesconfig arc randconfig-r043-20230119 m68k allmodconfig i386 randconfig-a003 arc allyesconfig arm64 allyesconfig alpha allyesconfig x86_64 rhel-8.3-kvm x86_64 randconfig-a006 i386 randconfig-a005 x86_64 rhel-8.3-bpf x86_64 randconfig-a004 sparc64 alldefconfig riscv allnoconfig sparc sparc32_defconfig m68k hp300_defconfig i386 allyesconfig powerpc mpc85xx_cds_defconfig parisc alldefconfig riscv nommu_virt_defconfig mips bigsur_defconfig arm keystone_defconfig sh secureedge5410_defconfig i386 randconfig-a014 riscv nommu_k210_defconfig s390 defconfig i386 randconfig-a012 x86_64 randconfig-a013 i386 randconfig-a016 riscv rv32_defconfig s390 allmodconfig sh allmodconfig i386 debian-10.3-kselftests x86_64 randconfig-a011 i386 debian-10.3 i386 randconfig-c001 mips allyesconfig x86_64 randconfig-a015 s390 allyesconfig powerpc allmodconfig clang tested configs: x86_64 rhel-8.3-rust x86_64 randconfig-a005 hexagon randconfig-r045-20230119 x86_64 randconfig-a001 i386 randconfig-a002 riscv randconfig-r042-20230119 x86_64 randconfig-a003 hexagon randconfig-r041-20230119 s390 randconfig-r044-20230119 i386 randconfig-a006 x86_64 randconfig-k001 i386 randconfig-a004 arm omap1_defconfig i386 randconfig-a013 i386 randconfig-a011 i386 randconfig-a015 x86_64 randconfig-a016 x86_64 randconfig-a012 x86_64 randconfig-a014 -- 0-DAY CI Kernel Test Service https://01.org/lkp
1 0
0 0
Re: [Sound-open-firmware] [PATCH] ASoC: SOF: ipc4-mtrace: prevent underflow in sof_ipc4_priority_mask_dfs_write()
by Mark Brown 20 Jan '23

20 Jan '23
On Thu, 19 Jan 2023 17:58:54 +0300, Dan Carpenter wrote: > The "id" comes from the user. Change the type to unsigned to prevent > an array underflow. > > Applied to broonie/sound.git for-next Thanks! [1/1] ASoC: SOF: ipc4-mtrace: prevent underflow in sof_ipc4_priority_mask_dfs_write() commit: ea57680af47587397f5005d7758022441ed66d54 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
1 0
0 0
Re: [Sound-open-firmware] [PATCH] ASoC: SOF: ipc4-mtrace: prevent underflow in sof_ipc4_priority_mask_dfs_write()
by Péter Ujfalusi 20 Jan '23

20 Jan '23
On 19/01/2023 16:58, Dan Carpenter wrote: > The "id" comes from the user. Change the type to unsigned to prevent > an array underflow. > > Fixes: f4ea22f7aa75 ("ASoC: SOF: ipc4: Add support for mtrace log extraction") > Signed-off-by: Dan Carpenter <error27(a)gmail.com> Acked-by: Peter Ujfalusi <peter.ujfalusi(a)linux.intel.com> > --- > sound/soc/sof/ipc4-mtrace.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/sound/soc/sof/ipc4-mtrace.c b/sound/soc/sof/ipc4-mtrace.c > index 70dea8ae706e..0ec6ef681012 100644 > --- a/sound/soc/sof/ipc4-mtrace.c > +++ b/sound/soc/sof/ipc4-mtrace.c > @@ -344,9 +344,10 @@ static ssize_t sof_ipc4_priority_mask_dfs_write(struct file *file, > size_t count, loff_t *ppos) > { > struct sof_mtrace_priv *priv = file->private_data; > - int id, ret; > + unsigned int id; > char *buf; > u32 mask; > + int ret; > > /* > * To update Nth mask entry, write: > @@ -357,9 +358,9 @@ static ssize_t sof_ipc4_priority_mask_dfs_write(struct file *file, > if (IS_ERR(buf)) > return PTR_ERR(buf); > > - ret = sscanf(buf, "%d,0x%x", &id, &mask); > + ret = sscanf(buf, "%u,0x%x", &id, &mask); > if (ret != 2) { > - ret = sscanf(buf, "%d,%x", &id, &mask); > + ret = sscanf(buf, "%u,%x", &id, &mask); > if (ret != 2) { > ret = -EINVAL; > goto out; -- Péter
1 0
0 0
[Sound-open-firmware] [PATCH AUTOSEL 6.1 04/53] ASoC: SOF: Add FW state to debugfs
by Sasha Levin 16 Jan '23

16 Jan '23
From: Curtis Malainey <cujomalainey(a)chromium.org> [ Upstream commit 9a9134fd56f6ba614ff7b2b3b0bac0bf1d0dc0c9 ] Allow system health detection mechanisms to check the FW state, this will allow them to check if the FW is in its "crashed" state going forward to help automatically diagnose driver state. Signed-off-by: Curtis Malainey <cujomalainey(a)chromium.org> Reviewed-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Link: https://lore.kernel.org/r/20221220125629.8469-4-peter.ujfalusi@linux.intel.… Signed-off-by: Mark Brown <broonie(a)kernel.org> Signed-off-by: Sasha Levin <sashal(a)kernel.org> --- sound/soc/sof/debug.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/soc/sof/debug.c b/sound/soc/sof/debug.c index d9a3ce7b69e1..ade0507328af 100644 --- a/sound/soc/sof/debug.c +++ b/sound/soc/sof/debug.c @@ -353,7 +353,9 @@ int snd_sof_dbg_init(struct snd_sof_dev *sdev) return err; } - return 0; + return snd_sof_debugfs_buf_item(sdev, &sdev->fw_state, + sizeof(sdev->fw_state), + "fw_state", 0444); } EXPORT_SYMBOL_GPL(snd_sof_dbg_init); -- 2.35.1
1 0
0 0
[Sound-open-firmware] [PATCH AUTOSEL 6.1 03/53] ASoC: SOF: pm: Always tear down pipelines before DSP suspend
by Sasha Levin 16 Jan '23

16 Jan '23
From: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> [ Upstream commit d185e0689abc98ef55fb7a7d75aa0c48a0ed5838 ] When the DSP is suspended while the firmware is in the crashed state, we skip tearing down the pipelines. This means that the widget reference counts will not get to reset to 0 before suspend. This will lead to errors with resuming audio after system resume. To fix this, invoke the tear_down_all_pipelines op before skipping to DSP suspend. Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> Reviewed-by: Curtis Malainey <cujomalainey(a)chromium.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao(a)linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Link: https://lore.kernel.org/r/20221220125629.8469-3-peter.ujfalusi@linux.intel.… Signed-off-by: Mark Brown <broonie(a)kernel.org> Signed-off-by: Sasha Levin <sashal(a)kernel.org> --- sound/soc/sof/pm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c index 5f88c4a01fa3..8722bbd7fd3d 100644 --- a/sound/soc/sof/pm.c +++ b/sound/soc/sof/pm.c @@ -192,6 +192,9 @@ static int sof_suspend(struct device *dev, bool runtime_suspend) if (runtime_suspend && !sof_ops(sdev)->runtime_suspend) return 0; + if (tplg_ops && tplg_ops->tear_down_all_pipelines) + tplg_ops->tear_down_all_pipelines(sdev, false); + if (sdev->fw_state != SOF_FW_BOOT_COMPLETE) goto suspend; @@ -216,9 +219,6 @@ static int sof_suspend(struct device *dev, bool runtime_suspend) goto suspend; } - if (tplg_ops->tear_down_all_pipelines) - tplg_ops->tear_down_all_pipelines(sdev, false); - /* suspend DMA trace */ sof_fw_trace_suspend(sdev, pm_state); -- 2.35.1
1 0
0 0
[Sound-open-firmware] [PATCH AUTOSEL 6.1 02/53] ASoC: SOF: pm: Set target state earlier
by Sasha Levin 16 Jan '23

16 Jan '23
From: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> [ Upstream commit 6f95eec6fb89e195dbdf30de65553c7fc57d9372 ] If the DSP crashes before the system suspends, the setting of target state will be skipped because the firmware state will no longer be SOF_FW_BOOT_COMPLETE. This leads to the incorrect assumption that the DSP should suspend to D0I3 instead of suspending to D3. To fix this, set the target_state before we skip to DSP suspend even when the DSP has crashed. Signed-off-by: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com> Reviewed-by: Curtis Malainey <cujomalainey(a)chromium.org> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com> Reviewed-by: Bard Liao <yung-chuan.liao(a)linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Signed-off-by: Peter Ujfalusi <peter.ujfalusi(a)linux.intel.com> Link: https://lore.kernel.org/r/20221220125629.8469-2-peter.ujfalusi@linux.intel.… Signed-off-by: Mark Brown <broonie(a)kernel.org> Signed-off-by: Sasha Levin <sashal(a)kernel.org> --- sound/soc/sof/pm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c index df740be645e8..5f88c4a01fa3 100644 --- a/sound/soc/sof/pm.c +++ b/sound/soc/sof/pm.c @@ -182,7 +182,7 @@ static int sof_suspend(struct device *dev, bool runtime_suspend) const struct sof_ipc_pm_ops *pm_ops = sdev->ipc->ops->pm; const struct sof_ipc_tplg_ops *tplg_ops = sdev->ipc->ops->tplg; pm_message_t pm_state; - u32 target_state = 0; + u32 target_state = snd_sof_dsp_power_target(sdev); int ret; /* do nothing if dsp suspend callback is not set */ @@ -206,7 +206,6 @@ static int sof_suspend(struct device *dev, bool runtime_suspend) } } - target_state = snd_sof_dsp_power_target(sdev); pm_state.event = target_state; /* Skip to platform-specific suspend if DSP is entering D0 */ -- 2.35.1
1 0
0 0
[Sound-open-firmware] [PATCH] ASoC: SOF: sof-audio: Check snd_sof_widget pointer not NULL
by AngeloGioacchino Del Regno 12 Jan '23

12 Jan '23
In function sof_unprepare_widgets_in_path(), check if swidget is actually not NULL, as the widget may not have been initialized at all. This commit solves the following kernel panic seen on MediaTek MT8195: [ 18.025215] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000014 [ 18.034266] Mem abort info: [ 18.037314] ESR = 0x0000000096000004 [ 18.041314] EC = 0x25: DABT (current EL), IL = 32 bits [ 18.046876] SET = 0, FnV = 0 [ 18.050180] EA = 0, S1PTW = 0 [ 18.053572] FSC = 0x04: level 0 translation fault [ 18.058700] Data abort info: [ 18.061832] ISV = 0, ISS = 0x00000004 [ 18.065919] CM = 0, WnR = 0 [ 18.069137] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000115495000 [ 18.075826] [0000000000000014] pgd=0000000000000000, p4d=0000000000000000 [ 18.082867] Internal error: Oops: 0000000096000004 [#1] SMP [ 18.088688] Modules linked in: af_alg qrtr btusb btrtl btintel btmtk btbcm bluetooth 8021q garp uvcvideo mrp stp ecdh_generic llc ecc videobuf2_vmalloc mt7921e mt7921_common mt76_connac_lib mt76 mac80211 snd_sof_ipc_msg_injector snd_sof_ipc_flood_test cfg80211 snd_sof_mt8195 mtk_adsp_common snd_sof_xtensa_dsp snd_sof_of panfrost rfkill snd_sof crct10dif_ce cros_ec_sensors cros_ec_lid_angle gpu_sched sbs_battery cros_usbpd_logger cros_ec_sensors_core hid_multitouch snd_sof_utils fuse ipv6 [ 18.132109] CPU: 5 PID: 657 Comm: wireplumber Tainted: G W 6.2.0-rc3-next-20230111+ #230 [ 18.141834] Hardware name: Acer Tomato (rev2) board (DT) [ 18.147392] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 18.154600] pc : sof_unprepare_widgets_in_path.isra.0+0x28/0x10c [snd_sof] [ 18.161735] lr : sof_walk_widgets_in_order+0x198/0x1d0 [snd_sof] [ 18.167996] sp : ffff80000eb0b870 [ 18.171558] x29: ffff80000eb0b870 x28: 0000000000000001 x27: ffff5d8e178c4c00 [ 18.178939] x26: ffffbd50140fd758 x25: ffffbd50140fd760 x24: 0000000000000000 [ 18.186321] x23: 0000000000000000 x22: ffff5d8e109dd080 x21: ffff5d8e0a429280 [ 18.193702] x20: 0000000000000000 x19: ffff5d8e11fe4800 x18: 0000000000000000 [ 18.201083] x17: 0000000000000000 x16: ffffbd5073deabb0 x15: 0000000000000000 [ 18.208464] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000 [ 18.215846] x11: 0000000000000000 x10: 0000000000002780 x9 : ffffbd50140eb4bc [ 18.223228] x8 : ffff5d8e1b5327e0 x7 : 0000000000000000 x6 : ffff5d8e1b530000 [ 18.230610] x5 : 0000000000000003 x4 : 0000000000000001 x3 : 0000000000000000 [ 18.237991] x2 : 0000000000000000 x1 : ffff5d8e11fe4800 x0 : ffff5d8e0a429280 [ 18.245372] Call trace: [ 18.248066] sof_unprepare_widgets_in_path.isra.0+0x28/0x10c [snd_sof] [ 18.254847] sof_walk_widgets_in_order+0x198/0x1d0 [snd_sof] [ 18.260760] sof_widget_list_free+0x7c/0xbc [snd_sof] [ 18.266066] sof_pcm_hw_free+0x10c/0x1c0 [snd_sof] [ 18.271110] snd_soc_pcm_component_hw_free+0x8c/0xe0 [ 18.276327] soc_pcm_hw_clean+0x60/0x11c [ 18.280498] dpcm_fe_dai_hw_free+0x98/0x110 [ 18.284930] snd_pcm_common_ioctl+0xc48/0x1a2c [ 18.289624] snd_pcm_ioctl+0x38/0x50 [ 18.293448] __arm64_sys_ioctl+0xb0/0xf4 [ 18.297620] invoke_syscall+0x50/0x120 [ 18.301618] el0_svc_common.constprop.0+0x17c/0x1b0 [ 18.306744] do_el0_svc+0x40/0xc4 [ 18.310307] el0_svc+0x48/0xf0 [ 18.313611] el0t_64_sync_handler+0xb8/0xc0 [ 18.318041] el0t_64_sync+0x1a0/0x1a4 [ 18.321953] Code: aa0103f3 f90013f5 aa0003f5 f9406834 (39405280) [ 18.328293] ---[ end trace 0000000000000000 ]--- Fixes: 9862dcf70245 ("ASoC: SOF: don't unprepare widget used other pipelines") Fixes: ce59804d2643 ("ASoC: SOF: clear prepare state when widget is unprepared") Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno(a)collabora.com> --- sound/soc/sof/sof-audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index e1ab8380e7d8..1988717762b3 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -274,7 +274,7 @@ sof_unprepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widg struct snd_soc_dapm_path *p; /* return if the widget is in use or if it is already unprepared */ - if (!swidget->prepared || swidget->use_count > 1) + if (!swidget || !swidget->prepared || swidget->use_count > 1) return; widget_ops = tplg_ops ? tplg_ops->widget : NULL; -- 2.39.0
2 3
0 0
[Sound-open-firmware] [PATCH v2 0/3] Add support of MediaTek mt8188 to SOF
by Tinghan Shen 10 Jan '23

10 Jan '23
Add support of MediaTek mt8188 SoC DSP to SOF. The sof driver patches in this series are taken from thesofproject/linux/tree/topic/sof-dev-rebase. Tinghan Shen (3): dt-bindings: dsp: mediatek: Add mt8188 dsp compatible ASoC: SOF: mediatek: Support mt8188 platform ASoC: SOF: mediatek: Provide debugfs_add_region_item ops for core .../bindings/dsp/mediatek,mt8186-dsp.yaml | 4 +++- sound/soc/sof/mediatek/mt8186/mt8186.c | 20 +++++++++++++++++++ sound/soc/sof/mediatek/mt8186/mt8186.h | 10 +++++++++- sound/soc/sof/mediatek/mt8195/mt8195.c | 1 + 4 files changed, 33 insertions(+), 2 deletions(-) -- 2.18.0
3 5
0 0
  • ← Newer
  • 1
  • ...
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • ...
  • 158
  • Older →

HyperKitty Powered by HyperKitty version 1.3.8.