* [PATCH 1/3] ASoC: amd: ps: disable MSI on resume in ACP PCI driver
2026-07-07 5:59 [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Vijendar Mukunda
@ 2026-07-07 5:59 ` Vijendar Mukunda
2026-07-07 5:59 ` [PATCH 2/3] ASoC: amd: ps: fix wrong ACP version string in pci_request_regions() Vijendar Mukunda
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Vijendar Mukunda @ 2026-07-07 5:59 UTC (permalink / raw)
To: broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, mario.limonciello, syed.sabakareem,
linux-sound, linux-kernel, Vijendar Mukunda
BIOS/firmware may re-enable MSI in PCI config space during system
level resume even though this driver only uses legacy INTx interrupts.
If MSI is left enabled with stale address/data registers, the device
will write interrupts to a bogus address causing IOMMU IO_PAGE_FAULT
and interrupt delivery failure.
Clear the MSI Enable bit before reinitializing the ACP hardware on
system level resume.
Fixes: 491628388005 ("ASoC: amd: ps: add callback functions for acp pci driver pm ops")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
sound/soc/amd/ps/pci-ps.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
index 4ecda224157b..635832da45f9 100644
--- a/sound/soc/amd/ps/pci-ps.c
+++ b/sound/soc/amd/ps/pci-ps.c
@@ -693,8 +693,37 @@ static int snd_acp_runtime_resume(struct device *dev)
return acp_hw_runtime_resume(dev);
}
+static void acp_disable_msi_on_resume(struct pci_dev *pdev)
+{
+ u16 control;
+
+ if (!pdev->msi_cap)
+ return;
+
+ pci_read_config_word(pdev, pdev->msi_cap + PCI_MSI_FLAGS, &control);
+ if (control & PCI_MSI_FLAGS_ENABLE) {
+ dev_warn(&pdev->dev,
+ "ACP: MSI unexpectedly enabled after resume (flags=0x%04x), disabling\n",
+ control);
+ control &= ~PCI_MSI_FLAGS_ENABLE;
+ pci_write_config_word(pdev, pdev->msi_cap + PCI_MSI_FLAGS, control);
+ }
+}
+
static int snd_acp_resume(struct device *dev)
{
+ struct pci_dev *pdev = to_pci_dev(dev);
+
+ /*
+ * BIOS/firmware may re-enable MSI in PCI config space during
+ * system resume even though this driver only uses legacy INTx
+ * interrupts. If MSI is left enabled with stale address/data
+ * registers, the device will write interrupts to a bogus address
+ * causing IOMMU IO_PAGE_FAULT and interrupt delivery failure.
+ * Explicitly clear the MSI Enable bit before reinitializing
+ * the ACP hardware.
+ */
+ acp_disable_msi_on_resume(pdev);
return acp_hw_resume(dev);
}
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/3] ASoC: amd: ps: fix wrong ACP version string in pci_request_regions()
2026-07-07 5:59 [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Vijendar Mukunda
2026-07-07 5:59 ` [PATCH 1/3] ASoC: amd: ps: disable MSI on resume in " Vijendar Mukunda
@ 2026-07-07 5:59 ` Vijendar Mukunda
2026-07-07 5:59 ` [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check Vijendar Mukunda
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Vijendar Mukunda @ 2026-07-07 5:59 UTC (permalink / raw)
To: broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, mario.limonciello, syed.sabakareem,
linux-sound, linux-kernel, Vijendar Mukunda
The driver handles ACP6.3/7.0/7.1/7.2 platforms but the region was
claimed with the stale name "AMD ACP6.2 audio" left over from the
original ACP6.2 driver. Correct it to "AMD ACP6.3 audio".
Fixes: 95e43a170bb1 ("ASoC: amd: add Pink Sardine ACP PCI driver")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
sound/soc/amd/ps/pci-ps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
index 635832da45f9..1162d13d8505 100644
--- a/sound/soc/amd/ps/pci-ps.c
+++ b/sound/soc/amd/ps/pci-ps.c
@@ -602,7 +602,7 @@ static int snd_acp63_probe(struct pci_dev *pci,
return -ENODEV;
}
- ret = pci_request_regions(pci, "AMD ACP6.2 audio");
+ ret = pci_request_regions(pci, "AMD ACP6.3 audio");
if (ret < 0) {
dev_err(&pci->dev, "pci_request_regions failed\n");
goto disable_pci;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
2026-07-07 5:59 [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Vijendar Mukunda
2026-07-07 5:59 ` [PATCH 1/3] ASoC: amd: ps: disable MSI on resume in " Vijendar Mukunda
2026-07-07 5:59 ` [PATCH 2/3] ASoC: amd: ps: fix wrong ACP version string in pci_request_regions() Vijendar Mukunda
@ 2026-07-07 5:59 ` Vijendar Mukunda
2026-07-07 17:49 ` Mario Limonciello
2026-07-07 17:49 ` [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Mario Limonciello
2026-07-08 23:48 ` Mark Brown
4 siblings, 1 reply; 8+ messages in thread
From: Vijendar Mukunda @ 2026-07-07 5:59 UTC (permalink / raw)
To: broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, mario.limonciello, syed.sabakareem,
linux-sound, linux-kernel, Vijendar Mukunda
The condition 'irq_flag | wake_irq_flag' uses bitwise OR to combine two
integer flags that are used as booleans. Replace with logical OR '||' to
correctly express the intended boolean check.
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
sound/soc/amd/ps/pci-ps.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
index 1162d13d8505..729f9aaba69e 100644
--- a/sound/soc/amd/ps/pci-ps.c
+++ b/sound/soc/amd/ps/pci-ps.c
@@ -248,7 +248,7 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
if (sdw_dma_irq_flag)
return IRQ_WAKE_THREAD;
- if (irq_flag | wake_irq_flag)
+ if (irq_flag || wake_irq_flag)
return IRQ_HANDLED;
else
return IRQ_NONE;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
2026-07-07 5:59 ` [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check Vijendar Mukunda
@ 2026-07-07 17:49 ` Mario Limonciello
2026-07-08 2:05 ` Mukunda,Vijendar
0 siblings, 1 reply; 8+ messages in thread
From: Mario Limonciello @ 2026-07-07 17:49 UTC (permalink / raw)
To: Vijendar Mukunda, broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, syed.sabakareem, linux-sound, linux-kernel
On 7/7/26 00:59, Vijendar Mukunda wrote:
> The condition 'irq_flag | wake_irq_flag' uses bitwise OR to combine two
> integer flags that are used as booleans. Replace with logical OR '||' to
> correctly express the intended boolean check.
>
> Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Fixes: 7f91f012c1df0 ("ASoC: amd: ps: fix for irq handler return status")
> ---
> sound/soc/amd/ps/pci-ps.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
> index 1162d13d8505..729f9aaba69e 100644
> --- a/sound/soc/amd/ps/pci-ps.c
> +++ b/sound/soc/amd/ps/pci-ps.c
> @@ -248,7 +248,7 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
> if (sdw_dma_irq_flag)
> return IRQ_WAKE_THREAD;
>
> - if (irq_flag | wake_irq_flag)
> + if (irq_flag || wake_irq_flag)
> return IRQ_HANDLED;
> else
> return IRQ_NONE;
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
2026-07-07 17:49 ` Mario Limonciello
@ 2026-07-08 2:05 ` Mukunda,Vijendar
0 siblings, 0 replies; 8+ messages in thread
From: Mukunda,Vijendar @ 2026-07-08 2:05 UTC (permalink / raw)
To: Mario Limonciello, broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, syed.sabakareem, linux-sound, linux-kernel
On 7/7/26 23:19, Mario Limonciello wrote:
>
>
> On 7/7/26 00:59, Vijendar Mukunda wrote:
>> The condition 'irq_flag | wake_irq_flag' uses bitwise OR to combine two
>> integer flags that are used as booleans. Replace with logical OR '||' to
>> correctly express the intended boolean check.
>>
>> Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> Fixes: 7f91f012c1df0 ("ASoC: amd: ps: fix for irq handler return status")
This is a style/readability cleanup only.
Since irq_flag and wake_irq_flag are strictly used as boolean values (0/1),
using | or || yields the same runtime behavior.
No functional bug is being fixed here, so a Fixes: tag is not warranted.
>> ---
>> sound/soc/amd/ps/pci-ps.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/sound/soc/amd/ps/pci-ps.c b/sound/soc/amd/ps/pci-ps.c
>> index 1162d13d8505..729f9aaba69e 100644
>> --- a/sound/soc/amd/ps/pci-ps.c
>> +++ b/sound/soc/amd/ps/pci-ps.c
>> @@ -248,7 +248,7 @@ static irqreturn_t acp63_irq_handler(int irq,
>> void *dev_id)
>> if (sdw_dma_irq_flag)
>> return IRQ_WAKE_THREAD;
>> - if (irq_flag | wake_irq_flag)
>> + if (irq_flag || wake_irq_flag)
>> return IRQ_HANDLED;
>> else
>> return IRQ_NONE;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver
2026-07-07 5:59 [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Vijendar Mukunda
` (2 preceding siblings ...)
2026-07-07 5:59 ` [PATCH 3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check Vijendar Mukunda
@ 2026-07-07 17:49 ` Mario Limonciello
2026-07-08 23:48 ` Mark Brown
4 siblings, 0 replies; 8+ messages in thread
From: Mario Limonciello @ 2026-07-07 17:49 UTC (permalink / raw)
To: Vijendar Mukunda, broonie
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, syed.sabakareem, linux-sound, linux-kernel
On 7/7/26 00:59, Vijendar Mukunda wrote:
> This series contains three bug fixes for the AMD common ACP PCI driver
> (pci-ps.c) covering ACP6.3, ACP7.0, ACP7.1 and ACP7.2 platforms.
>
> Vijendar Mukunda (3):
> ASoC: amd: ps: disable MSI on resume in ACP PCI driver
> ASoC: amd: ps: fix wrong ACP version string in pci_request_regions()
> ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
>
> sound/soc/amd/ps/pci-ps.c | 33 +++++++++++++++++++++++++++++++--
> 1 file changed, 31 insertions(+), 2 deletions(-)
>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver
2026-07-07 5:59 [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Vijendar Mukunda
` (3 preceding siblings ...)
2026-07-07 17:49 ` [PATCH 0/3] ASoC: amd: ps: bug fixes for ACP PCI driver Mario Limonciello
@ 2026-07-08 23:48 ` Mark Brown
4 siblings, 0 replies; 8+ messages in thread
From: Mark Brown @ 2026-07-08 23:48 UTC (permalink / raw)
To: Vijendar Mukunda
Cc: alsa-devel, lgirdwood, perex, tiwai, Sunil-kumar.Dommati,
venkataprasad.potturu, mario.limonciello, syed.sabakareem,
linux-sound, linux-kernel
On Tue, 07 Jul 2026 11:29:35 +0530, Vijendar Mukunda wrote:
> ASoC: amd: ps: bug fixes for ACP PCI driver
>
> This series contains three bug fixes for the AMD common ACP PCI driver
> (pci-ps.c) covering ACP6.3, ACP7.0, ACP7.1 and ACP7.2 platforms.
>
> Vijendar Mukunda (3):
> ASoC: amd: ps: disable MSI on resume in ACP PCI driver
> ASoC: amd: ps: fix wrong ACP version string in pci_request_regions()
> ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.2
Thanks!
[1/3] ASoC: amd: ps: disable MSI on resume in ACP PCI driver
https://git.kernel.org/broonie/sound/c/5893013efabb
[2/3] ASoC: amd: ps: fix wrong ACP version string in pci_request_regions()
https://git.kernel.org/broonie/sound/c/f7697ecf6eab
[3/3] ASoC: amd: ps: replace bitwise OR with logical OR in IRQ return check
https://git.kernel.org/broonie/sound/c/dec5aaa27603
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] 8+ messages in thread