drivers/accel/amdxdna/aie2_pci.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
Enabling turbo mode disables hardware clock gating. Suspend requires
hardware clock gating to be re-enabled, otherwise suspend will fail.
Fix this by calling aie2_runtime_cfg() from aie2_hw_stop() to
re-enable clock gating during suspend. Also ensure that firmware is
initialized in aie2_hw_start() before modifying clock-gating
settings during resume.
Fixes: f4d7b8a6bc8c ("accel/amdxdna: Enhance power management settings")
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
---
drivers/accel/amdxdna/aie2_pci.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/accel/amdxdna/aie2_pci.c b/drivers/accel/amdxdna/aie2_pci.c
index 5b326e4610e6..0d41a6764892 100644
--- a/drivers/accel/amdxdna/aie2_pci.c
+++ b/drivers/accel/amdxdna/aie2_pci.c
@@ -323,6 +323,7 @@ static void aie2_hw_stop(struct amdxdna_dev *xdna)
return;
}
+ aie2_runtime_cfg(ndev, AIE2_RT_CFG_CLK_GATING, NULL);
aie2_mgmt_fw_fini(ndev);
xdna_mailbox_stop_channel(ndev->mgmt_chann);
xdna_mailbox_destroy_channel(ndev->mgmt_chann);
@@ -406,15 +407,15 @@ static int aie2_hw_start(struct amdxdna_dev *xdna)
goto stop_psp;
}
- ret = aie2_pm_init(ndev);
+ ret = aie2_mgmt_fw_init(ndev);
if (ret) {
- XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
+ XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
goto destroy_mgmt_chann;
}
- ret = aie2_mgmt_fw_init(ndev);
+ ret = aie2_pm_init(ndev);
if (ret) {
- XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
+ XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
goto destroy_mgmt_chann;
}
--
2.34.1
Reviewed-by: Maciej Falkowski <maciej.falkowski@linux.intel.com>
On 2/11/2026 9:47 PM, Lizhi Hou wrote:
> Enabling turbo mode disables hardware clock gating. Suspend requires
> hardware clock gating to be re-enabled, otherwise suspend will fail.
> Fix this by calling aie2_runtime_cfg() from aie2_hw_stop() to
> re-enable clock gating during suspend. Also ensure that firmware is
> initialized in aie2_hw_start() before modifying clock-gating
> settings during resume.
>
> Fixes: f4d7b8a6bc8c ("accel/amdxdna: Enhance power management settings")
> Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
> ---
> drivers/accel/amdxdna/aie2_pci.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/accel/amdxdna/aie2_pci.c b/drivers/accel/amdxdna/aie2_pci.c
> index 5b326e4610e6..0d41a6764892 100644
> --- a/drivers/accel/amdxdna/aie2_pci.c
> +++ b/drivers/accel/amdxdna/aie2_pci.c
> @@ -323,6 +323,7 @@ static void aie2_hw_stop(struct amdxdna_dev *xdna)
> return;
> }
>
> + aie2_runtime_cfg(ndev, AIE2_RT_CFG_CLK_GATING, NULL);
> aie2_mgmt_fw_fini(ndev);
> xdna_mailbox_stop_channel(ndev->mgmt_chann);
> xdna_mailbox_destroy_channel(ndev->mgmt_chann);
> @@ -406,15 +407,15 @@ static int aie2_hw_start(struct amdxdna_dev *xdna)
> goto stop_psp;
> }
>
> - ret = aie2_pm_init(ndev);
> + ret = aie2_mgmt_fw_init(ndev);
> if (ret) {
> - XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
> + XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
> goto destroy_mgmt_chann;
> }
>
> - ret = aie2_mgmt_fw_init(ndev);
> + ret = aie2_pm_init(ndev);
> if (ret) {
> - XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
> + XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
> goto destroy_mgmt_chann;
> }
>
On 2/11/26 2:47 PM, Lizhi Hou wrote:
> Enabling turbo mode disables hardware clock gating. Suspend requires
> hardware clock gating to be re-enabled, otherwise suspend will fail.
> Fix this by calling aie2_runtime_cfg() from aie2_hw_stop() to
> re-enable clock gating during suspend. Also ensure that firmware is
> initialized in aie2_hw_start() before modifying clock-gating
> settings during resume.
>
> Fixes: f4d7b8a6bc8c ("accel/amdxdna: Enhance power management settings")
> Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
> ---
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
> drivers/accel/amdxdna/aie2_pci.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/accel/amdxdna/aie2_pci.c b/drivers/accel/amdxdna/aie2_pci.c
> index 5b326e4610e6..0d41a6764892 100644
> --- a/drivers/accel/amdxdna/aie2_pci.c
> +++ b/drivers/accel/amdxdna/aie2_pci.c
> @@ -323,6 +323,7 @@ static void aie2_hw_stop(struct amdxdna_dev *xdna)
> return;
> }
>
> + aie2_runtime_cfg(ndev, AIE2_RT_CFG_CLK_GATING, NULL);
> aie2_mgmt_fw_fini(ndev);
> xdna_mailbox_stop_channel(ndev->mgmt_chann);
> xdna_mailbox_destroy_channel(ndev->mgmt_chann);
> @@ -406,15 +407,15 @@ static int aie2_hw_start(struct amdxdna_dev *xdna)
> goto stop_psp;
> }
>
> - ret = aie2_pm_init(ndev);
> + ret = aie2_mgmt_fw_init(ndev);
> if (ret) {
> - XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
> + XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
> goto destroy_mgmt_chann;
> }
>
> - ret = aie2_mgmt_fw_init(ndev);
> + ret = aie2_pm_init(ndev);
> if (ret) {
> - XDNA_ERR(xdna, "initial mgmt firmware failed, ret %d", ret);
> + XDNA_ERR(xdna, "failed to init pm, ret %d", ret);
> goto destroy_mgmt_chann;
> }
>
© 2016 - 2026 Red Hat, Inc.