3da8ec8523
Ubuntu's latest tag updated from v5.15.60 to v5.15.64 and one advantage of them trailing upstream stable 5.15.y is that we can backport fixes of fixes that got in with that commit range. Found with the report of: git log --decorate v5.15..v5.15.73 | \ ~/gitdm/stablefixes --fixed-after v5.15.64 --regressed-before v5.15.64 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
70 lines
2.8 KiB
Diff
70 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Alex Deucher <alexander.deucher@amd.com>
|
|
Date: Tue, 30 Aug 2022 10:59:49 -0400
|
|
Subject: [PATCH] drm/amdgpu: make sure to init common IP before gmc
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
[ Upstream commit a8671493d2074950553da3cf07d1be43185ef6c6 ]
|
|
|
|
Move common IP init before GMC init so that HDP gets
|
|
remapped before GMC init which uses it.
|
|
|
|
This fixes the Unsupported Request error reported through
|
|
AER during driver load. The error happens as a write happens
|
|
to the remap offset before real remapping is done.
|
|
|
|
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373
|
|
|
|
The error was unnoticed before and got visible because of the commit
|
|
referenced below. This doesn't fix anything in the commit below, rather
|
|
fixes the issue in amdgpu exposed by the commit. The reference is only
|
|
to associate this commit with below one so that both go together.
|
|
|
|
Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()")
|
|
|
|
Acked-by: Christian König <christian.koenig@amd.com>
|
|
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
|
|
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
|
Cc: stable@vger.kernel.org
|
|
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
---
|
|
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 +++++++++++---
|
|
1 file changed, 11 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
|
|
index f443b4630f9d..7450773821f4 100644
|
|
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
|
|
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
|
|
@@ -2388,8 +2388,16 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
|
|
}
|
|
adev->ip_blocks[i].status.sw = true;
|
|
|
|
- /* need to do gmc hw init early so we can allocate gpu mem */
|
|
- if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
|
|
+ if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON) {
|
|
+ /* need to do common hw init early so everything is set up for gmc */
|
|
+ r = adev->ip_blocks[i].version->funcs->hw_init((void *)adev);
|
|
+ if (r) {
|
|
+ DRM_ERROR("hw_init %d failed %d\n", i, r);
|
|
+ goto init_failed;
|
|
+ }
|
|
+ adev->ip_blocks[i].status.hw = true;
|
|
+ } else if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
|
|
+ /* need to do gmc hw init early so we can allocate gpu mem */
|
|
/* Try to reserve bad pages early */
|
|
if (amdgpu_sriov_vf(adev))
|
|
amdgpu_virt_exchange_data(adev);
|
|
@@ -3037,8 +3045,8 @@ static int amdgpu_device_ip_reinit_early_sriov(struct amdgpu_device *adev)
|
|
int i, r;
|
|
|
|
static enum amd_ip_block_type ip_order[] = {
|
|
- AMD_IP_BLOCK_TYPE_GMC,
|
|
AMD_IP_BLOCK_TYPE_COMMON,
|
|
+ AMD_IP_BLOCK_TYPE_GMC,
|
|
AMD_IP_BLOCK_TYPE_PSP,
|
|
AMD_IP_BLOCK_TYPE_IH,
|
|
};
|