aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch
new file mode 100644
index 00000000..ff868d05
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2096-drm-amdgpu-add-fw-vram-usage-for-atomfirmware.patch
@@ -0,0 +1,59 @@
+From c1f8ec4786d0356d6c0bf8e5f302fc5cb5c5b922 Mon Sep 17 00:00:00 2001
+From: Monk Liu <Monk.Liu@amd.com>
+Date: Tue, 31 Oct 2017 19:45:11 +0800
+Subject: [PATCH 2096/4131] drm/amdgpu:add fw-vram-usage for atomfirmware
+
+otherwise PF & VF exchange is broken
+
+Change-Id: Icbb44e640ba1c6e61914cbd234e92de001496195
+Signed-off-by: Monk Liu <Monk.Liu@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 22 ++++++++++++++++++----
+ 1 file changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
+index f9ffe8e..ff8efd0 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c
+@@ -71,19 +71,33 @@ int amdgpu_atomfirmware_allocate_fb_scratch(struct amdgpu_device *adev)
+ struct atom_context *ctx = adev->mode_info.atom_context;
+ int index = get_index_into_master_table(atom_master_list_of_data_tables_v2_1,
+ vram_usagebyfirmware);
++ struct vram_usagebyfirmware_v2_1 * firmware_usage;
++ uint32_t start_addr, size;
+ uint16_t data_offset;
+ int usage_bytes = 0;
+
+ if (amdgpu_atom_parse_data_header(ctx, index, NULL, NULL, NULL, &data_offset)) {
+- struct vram_usagebyfirmware_v2_1 *firmware_usage =
+- (struct vram_usagebyfirmware_v2_1 *)(ctx->bios + data_offset);
+-
++ firmware_usage = (struct vram_usagebyfirmware_v2_1 *)(ctx->bios + data_offset);
+ DRM_DEBUG("atom firmware requested %08x %dkb fw %dkb drv\n",
+ le32_to_cpu(firmware_usage->start_address_in_kb),
+ le16_to_cpu(firmware_usage->used_by_firmware_in_kb),
+ le16_to_cpu(firmware_usage->used_by_driver_in_kb));
+
+- usage_bytes = le16_to_cpu(firmware_usage->used_by_driver_in_kb) * 1024;
++ start_addr = le32_to_cpu(firmware_usage->start_address_in_kb);
++ size = le16_to_cpu(firmware_usage->used_by_firmware_in_kb);
++
++ if ((uint32_t)(start_addr & ATOM_VRAM_OPERATION_FLAGS_MASK) ==
++ (uint32_t)(ATOM_VRAM_BLOCK_SRIOV_MSG_SHARE_RESERVATION <<
++ ATOM_VRAM_OPERATION_FLAGS_SHIFT)) {
++ /* Firmware request VRAM reservation for SR-IOV */
++ adev->fw_vram_usage.start_offset = (start_addr &
++ (~ATOM_VRAM_OPERATION_FLAGS_MASK)) << 10;
++ adev->fw_vram_usage.size = size << 10;
++ /* Use the default scratch size */
++ usage_bytes = 0;
++ } else {
++ usage_bytes = le16_to_cpu(firmware_usage->used_by_driver_in_kb) << 10;
++ }
+ }
+ ctx->scratch_size_bytes = 0;
+ if (usage_bytes == 0)
+--
+2.7.4
+