ALT Linux kernel packages development
 help / color / mirror / Atom feed
* [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10
@ 2022-10-21  9:48 nickel
  2022-10-21  9:48 ` [d-kernel] [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega" nickel
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: nickel @ 2022-10-21  9:48 UTC (permalink / raw)
  To: devel-kernel

These patches are applicable to kernels starting from 5.10.146.

Should be applied to p10 std-def, p9 un-def, c9f2 std-def.
Revertions are already requested from upstream and may arrive in 5.10.150 or later.
Refer to https://gitlab.freedesktop.org/drm/amd/-/issues/2216#note_1600173

[PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into
[PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [d-kernel] [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega"
  2022-10-21  9:48 [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 nickel
@ 2022-10-21  9:48 ` nickel
  2022-10-21  9:48 ` [d-kernel] [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before gmc" nickel
  2022-10-21 10:13 ` [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 Vitaly Chikunov
  2 siblings, 0 replies; 4+ messages in thread
From: nickel @ 2022-10-21  9:48 UTC (permalink / raw)
  To: devel-kernel

From: Nikolai Kostrigin <nickel@altlinux.org>

This reverts commit 9f55f36f749a7608eeef57d7d72991a9bd557341.

Fix amdgpu regression for kernel 5.10.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2216
Signed-off-by: Nikolai Kostrigin <nickel@altlinux.org>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c |  5 -----
 drivers/gpu/drm/amd/amdgpu/soc15.c     | 25 +++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index a1a8e026b9fa6..1f2e2460e121e 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1475,11 +1475,6 @@ static int sdma_v4_0_start(struct amdgpu_device *adev)
 		WREG32_SDMA(i, mmSDMA0_CNTL, temp);
 
 		if (!amdgpu_sriov_vf(adev)) {
-			ring = &adev->sdma.instance[i].ring;
-			adev->nbio.funcs->sdma_doorbell_range(adev, i,
-				ring->use_doorbell, ring->doorbell_index,
-				adev->doorbell_index.sdma_doorbell_range);
-
 			/* unhalt engine */
 			temp = RREG32_SDMA(i, mmSDMA0_F32_CNTL);
 			temp = REG_SET_FIELD(temp, SDMA0_F32_CNTL, HALT, 0);
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
index abd649285a22d..7212b9900e0ab 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -1332,6 +1332,25 @@ static int soc15_common_sw_fini(void *handle)
 	return 0;
 }
 
+static void soc15_doorbell_range_init(struct amdgpu_device *adev)
+{
+	int i;
+	struct amdgpu_ring *ring;
+
+	/* sdma/ih doorbell range are programed by hypervisor */
+	if (!amdgpu_sriov_vf(adev)) {
+		for (i = 0; i < adev->sdma.num_instances; i++) {
+			ring = &adev->sdma.instance[i].ring;
+			adev->nbio.funcs->sdma_doorbell_range(adev, i,
+				ring->use_doorbell, ring->doorbell_index,
+				adev->doorbell_index.sdma_doorbell_range);
+		}
+
+		adev->nbio.funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell,
+						adev->irq.ih.doorbell_index);
+	}
+}
+
 static int soc15_common_hw_init(void *handle)
 {
 	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
@@ -1351,6 +1370,12 @@ static int soc15_common_hw_init(void *handle)
 
 	/* enable the doorbell aperture */
 	soc15_enable_doorbell_aperture(adev, true);
+	/* HW doorbell routing policy: doorbell writing not
+	 * in SDMA/IH/MM/ACV range will be routed to CP. So
+	 * we need to init SDMA/IH/MM/ACV doorbell range prior
+	 * to CP ip block init and ring test.
+	 */
+	soc15_doorbell_range_init(adev);
 
 	return 0;
 }
-- 
2.33.4



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [d-kernel] [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before gmc"
  2022-10-21  9:48 [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 nickel
  2022-10-21  9:48 ` [d-kernel] [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega" nickel
@ 2022-10-21  9:48 ` nickel
  2022-10-21 10:13 ` [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 Vitaly Chikunov
  2 siblings, 0 replies; 4+ messages in thread
From: nickel @ 2022-10-21  9:48 UTC (permalink / raw)
  To: devel-kernel

From: Nikolai Kostrigin <nickel@altlinux.org>

This reverts commit 7b0db849ea030a70b8fb9c9afec67c81f955482e.

Fix amdgpu regression for kernel 5.10.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2216
Signed-off-by: Nikolai Kostrigin <nickel@altlinux.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 881045e600af2..bde0496d2f153 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2179,16 +2179,8 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)
 		}
 		adev->ip_blocks[i].status.sw = true;
 
-		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 */
+		/* 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) {
 			/* Try to reserve bad pages early */
 			if (amdgpu_sriov_vf(adev))
 				amdgpu_virt_exchange_data(adev);
@@ -2770,8 +2762,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_COMMON,
 		AMD_IP_BLOCK_TYPE_GMC,
+		AMD_IP_BLOCK_TYPE_COMMON,
 		AMD_IP_BLOCK_TYPE_PSP,
 		AMD_IP_BLOCK_TYPE_IH,
 	};
-- 
2.33.4



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10
  2022-10-21  9:48 [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 nickel
  2022-10-21  9:48 ` [d-kernel] [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega" nickel
  2022-10-21  9:48 ` [d-kernel] [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before gmc" nickel
@ 2022-10-21 10:13 ` Vitaly Chikunov
  2 siblings, 0 replies; 4+ messages in thread
From: Vitaly Chikunov @ 2022-10-21 10:13 UTC (permalink / raw)
  To: ALT Linux kernel packages development

On Fri, Oct 21, 2022 at 12:48:23PM +0300, nickel@altlinux.org wrote:
> These patches are applicable to kernels starting from 5.10.146.
> 
> Should be applied to p10 std-def, p9 un-def, c9f2 std-def.
> Revertions are already requested from upstream and may arrive in 5.10.150 or later.
> Refer to https://gitlab.freedesktop.org/drm/amd/-/issues/2216#note_1600173

Николай, спасибо за ключевое ужастике в решении этой проблемы!

> [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into
> [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before

Видимо, список все таки такой:

  [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before gmc"
  [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega"

И да один из них есть в очереди в 5.10.150, а другого нет:

 $ git l v5.10.149..stable-rc/queue/5.10 | grep amdgpu
 > 7c48c9b9cffe 2022-10-17 Revert "drm/amdgpu: use dirty framebuffer helper" (Shuah Khan)
 > 2785681ad0f5 2022-10-17 Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega" (Shuah Khan)
 > 023ec97f57d6 2022-09-20 drm/amdgpu: fix initial connector audio value (hongao)

Thanks,

> 
> _______________________________________________
> devel-kernel mailing list
> devel-kernel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-kernel


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-10-21 10:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-21  9:48 [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 nickel
2022-10-21  9:48 ` [d-kernel] [PATCH 1/2] Revert "drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega" nickel
2022-10-21  9:48 ` [d-kernel] [PATCH 2/2] Revert "drm/amdgpu: make sure to init common IP before gmc" nickel
2022-10-21 10:13 ` [d-kernel] [PATCH 0/2] Fix amdgpu regression for kernel 5.10 Vitaly Chikunov

ALT Linux kernel packages development

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \
		devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com
	public-inbox-index devel-kernel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git