drm/amdgpu:bypass avfs event manager for sriov
authorTrigger Huang <trigger.huang@amd.com>
Thu, 28 Apr 2016 07:22:54 +0000 (15:22 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 11 Nov 2016 15:20:59 +0000 (10:20 -0500)
This patch is used for virtualization support. In virtualization case,
the initialization sequences are not totally the same as
non-Virtualization's. The avfs event manager should be bypassed if in
SRIOV virtualization case. At the same, this patch will also bypass
starting SMC within SRIOV in FIJI, so the SMU firmware loading will be
avoid, which is required in SRIOV.

Signed-off-by: Frank Min <Frank.Min@amd.com>
Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Signed-off-by: Trigger Huang <trigger.huang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c

index b86e48fb40d13f70d28bfedd3cb51fa7bf10005c..26eff56b4a99dd0ffba3f4d35a44cce8001d296b 100755 (executable)
@@ -396,7 +396,8 @@ static int fiji_start_smu(struct pp_smumgr *smumgr)
        struct fiji_smumgr *priv = (struct fiji_smumgr *)(smumgr->backend);
 
        /* Only start SMC if SMC RAM is not running */
-       if (!smu7_is_smc_ram_running(smumgr)) {
+       if (!(smu7_is_smc_ram_running(smumgr)
+               || cgs_is_virtualization_enabled(smumgr->device))) {
                fiji_avfs_event_mgr(smumgr, false);
 
                /* Check if SMU is running in protected mode */
@@ -443,6 +444,9 @@ static bool fiji_is_hw_avfs_present(struct pp_smumgr *smumgr)
        uint32_t efuse = 0;
        uint32_t mask = (1 << ((AVFS_EN_MSB - AVFS_EN_LSB) + 1)) - 1;
 
+       if (cgs_is_virtualization_enabled(smumgr->device))
+               return 0;
+
        if (!atomctrl_read_efuse(smumgr->device, AVFS_EN_LSB, AVFS_EN_MSB,
                        mask, &efuse)) {
                if (efuse)