]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/pm: re-enable MC access after PrepareMp1ForUnload on SMU V15 APUs
authorShubhankar Milind Sardeshpande <Shubhankar.MilindSardeshpande@amd.com>
Thu, 21 May 2026 05:25:18 +0000 (10:55 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 17 Jun 2026 22:07:31 +0000 (18:07 -0400)
During smu_v15_0_0_system_features_control(), the driver sends a
PrepareMp1ForUnload message to PMFW. PMFW then performs nBIF and SYSHUB
function-level resets (FLR), disabling PCIe CFG space reset, which
clears the framebuffer enable bit to zero and disables MC (memory controller)
access from the host.

Re-enable MC access via the nbio mc_access_enable callback right after
PrepareMp1ForUnload completes in smu_v15_0_0_system_features_control().

Signed-off-by: Shubhankar Milind Sardeshpande <Shubhankar.MilindSardeshpande@amd.com>
Signed-off-by: Suresh Guttula <Suresh.Guttula@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 840a3c5aeae779a3bc75d7f747c3ed18b1af6507)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c

index fb1145691410f10c0e0f48be80bf877af86e7ebf..a214ddbd4c86390591374e0e8026932b7c216294 100644 (file)
@@ -227,9 +227,14 @@ static int smu_v15_0_0_system_features_control(struct smu_context *smu, bool en)
        struct amdgpu_device *adev = smu->adev;
        int ret = 0;
 
-       if (!en && !adev->in_s0ix)
+       if (!en && !adev->in_s0ix) {
                ret = smu_cmn_send_smc_msg(smu, SMU_MSG_PrepareMp1ForUnload, NULL);
 
+               /* SMU resets BIF_FB_EN to zero, re-enable MC access on APUs with SMU V15 */
+               if (!ret && adev->nbio.funcs && adev->nbio.funcs->mc_access_enable)
+                       adev->nbio.funcs->mc_access_enable(adev, true);
+       }
+
        return ret;
 }