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 | 16 ++++++++++++++++
drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h | 2 ++
2 files changed, 18 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index 3372de34149c..872af286e3d7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -455,6 +455,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
@@ -823,6 +836,9 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
amdgpu_passthrough(adev)) {
drm_dbg(&adev->ddev, "use ip discovery information from psp
mailbox");
r = amdgpu_discovery_read_binary_from_psp_mailbox(adev,
discovery_bin);
+ if (r)
+ goto out;
+ r = amdgpu_discovery_disable_fb_carveout(adev);
}
if (r)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
b/drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h
index bc777f53a193..7b4ed3bc23d5 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