Adds support to disable FB carveout via PSP mailbox for passthrough A+A.
Signed-off-by: Dejan Andjelkovic <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 14 ++++++++++++++
drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 047034cf7d20..9d6f580ab64c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -456,6 +456,19 @@ static int
amdgpu_discovery_read_binary_from_psp_mailbox(struct amdgpu_device *a
return ret;
}
+static int amdgpu_discovery_disable_fb_carveout(struct amdgpu_device *adev)
+{
+ int ret;
+
+ WREG32(mmMP0_SMN_C2PMSG_64, GFX_CTRL_CMD_ID_DISABLE_FB_CARVEOUT);
+
+ ret = amdgpu_discovery_wait_psp_gfx_ctrl_resp(adev);
+ if (ret)
+ dev_err(adev->dev, "disable_fb_carveout: PSP wait timed out\n");
+
+ return ret;
+}
+
#define IP_DISCOVERY_V2 2
#define IP_DISCOVERY_V4 4
@@ -818,6 +831,7 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
GFX_CTRL_ADDR_TYPE_GUEST_PHY_ADDR);
if (r)
goto out;
+ r = amdgpu_discovery_disable_fb_carveout(adev);
} else if (fw_name != NULL) {
drm_dbg(&adev->ddev, "use ip discovery information from
file\n");
r = amdgpu_discovery_read_binary_from_file(adev, discovery_bin,
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
b/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
index e0713e27556f..664c885a8cf0 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
+++ b/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
@@ -50,6 +50,8 @@ enum psp_gfx_crtl_cmd_id
GFX_CTRL_CMD_ID_CONSUME_CMD = 0x00090000, /* send interrupt to psp
for updating write pointer of vf */
GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING = 0x000C0000, /* destroy GPCOM ring */
GFX_CTRL_CMD_ID_GET_IP_DISCOVERY = 0x000D0000, /**< Copy
IP_DISCOVERY_DATA to host-specified address */
+ GFX_CTRL_CMD_ID_DISABLE_FB_CARVEOUT = 0x00100000, /**< message runtime
VBL to disable FB carveout */
+ GFX_CTRL_CMD_ID_ENABLE_FB_CARVEOUT = 0x00110000, /**< message runtime
VBL to enable FB carveout */
GFX_CTRL_CMD_ID_MAX = 0x000F0000, /* max command ID */
};
--
2.43.0