* [PATCH 1/4] drm/amdgpu: add SDMA process quantum settings
@ 2026-03-18 14:10 Alex Deucher
2026-03-18 14:10 ` [PATCH 2/4] drm/amdgpu/sdma6: program quantums Alex Deucher
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Alex Deucher @ 2026-03-18 14:10 UTC (permalink / raw)
To: amd-gfx; +Cc: Alex Deucher
Will be used for programming the engine quantums.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
index 2bf365609775a..c0424e00ac591 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h
@@ -28,6 +28,12 @@
/* max number of IP instances */
#define AMDGPU_MAX_SDMA_INSTANCES 16
+/* value * 100us */
+#define AMDGPU_SDMA_CONTEXT_QUANTUM 2
+#define AMDGPU_SDMA_FOCUS_QUANTUM 4
+#define AMDGPU_SDMA_NORMAL_QUANTUM 4
+#define AMDGPU_SDMA_PROCESS_QUANTUM 4
+
enum amdgpu_sdma_irq {
AMDGPU_SDMA_IRQ_INSTANCE0 = 0,
AMDGPU_SDMA_IRQ_INSTANCE1,
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/4] drm/amdgpu/sdma6: program quantums
2026-03-18 14:10 [PATCH 1/4] drm/amdgpu: add SDMA process quantum settings Alex Deucher
@ 2026-03-18 14:10 ` Alex Deucher
2026-03-18 14:10 ` [PATCH 3/4] drm/amdgpu/sdma7: " Alex Deucher
2026-03-18 14:10 ` [PATCH 4/4] drm/amdgpu/sdma7.1: " Alex Deucher
2 siblings, 0 replies; 4+ messages in thread
From: Alex Deucher @ 2026-03-18 14:10 UTC (permalink / raw)
To: amd-gfx; +Cc: Alex Deucher
Set the quantums for queue switching on the instance.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 32 ++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
index b005672f2f96b..3af5bf0f18426 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
@@ -505,6 +505,38 @@ static int sdma_v6_0_gfx_resume_instance(struct amdgpu_device *adev, int i, bool
rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_QUEUE0_RB_CNTL, RB_PRIV, 1);
WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_RB_CNTL), rb_cntl);
+ /* handle queue priority and quantums */
+ temp = REG_SET_FIELD(0, SDMA0_QUEUE0_SCHEDULE_CNTL, GLOBAL_ID, 2); /* 3-0, 3 is highest priority */
+ temp = REG_SET_FIELD(temp, SDMA0_QUEUE0_SCHEDULE_CNTL, CONTEXT_QUANTUM,
+ AMDGPU_SDMA_CONTEXT_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_SCHEDULE_CNTL), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_GLOBAL_QUANTUM, GLOBAL_FOCUS_QUANTUM,
+ AMDGPU_SDMA_FOCUS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_GLOBAL_QUANTUM, GLOBAL_NORMAL_QUANTUM,
+ AMDGPU_SDMA_NORMAL_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_GLOBAL_QUANTUM), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_PROCESS_QUANTUM0, PROCESS0_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS1_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS2_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS3_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_PROCESS_QUANTUM0), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_PROCESS_QUANTUM1, PROCESS4_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS5_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS6_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS7_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_PROCESS_QUANTUM1), temp);
+
/* Initialize the ring buffer's read and write pointers */
if (restore) {
WREG32_SOC15_IP(GC, sdma_v6_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_RB_RPTR), lower_32_bits(ring->wptr << 2));
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/4] drm/amdgpu/sdma7: program quantums
2026-03-18 14:10 [PATCH 1/4] drm/amdgpu: add SDMA process quantum settings Alex Deucher
2026-03-18 14:10 ` [PATCH 2/4] drm/amdgpu/sdma6: program quantums Alex Deucher
@ 2026-03-18 14:10 ` Alex Deucher
2026-03-18 14:10 ` [PATCH 4/4] drm/amdgpu/sdma7.1: " Alex Deucher
2 siblings, 0 replies; 4+ messages in thread
From: Alex Deucher @ 2026-03-18 14:10 UTC (permalink / raw)
To: amd-gfx; +Cc: Alex Deucher
Set the quantums for queue switching on the instance.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c | 32 ++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
index 5679a94d0815e..5c79689c02efd 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
@@ -496,6 +496,38 @@ static int sdma_v7_0_gfx_resume_instance(struct amdgpu_device *adev, int i, bool
rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_QUEUE0_RB_CNTL, RB_PRIV, 1);
WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_RB_CNTL), rb_cntl);
+ /* handle queue priority and quantums */
+ temp = REG_SET_FIELD(0, SDMA0_QUEUE0_SCHEDULE_CNTL, GLOBAL_ID, 2); /* 3-0, 3 is highest priority */
+ temp = REG_SET_FIELD(temp, SDMA0_QUEUE0_SCHEDULE_CNTL, CONTEXT_QUANTUM,
+ AMDGPU_SDMA_CONTEXT_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_SCHEDULE_CNTL), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_GLOBAL_QUANTUM, GLOBAL_FOCUS_QUANTUM,
+ AMDGPU_SDMA_FOCUS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_GLOBAL_QUANTUM, GLOBAL_NORMAL_QUANTUM,
+ AMDGPU_SDMA_NORMAL_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_GLOBAL_QUANTUM), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_PROCESS_QUANTUM0, PROCESS0_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS1_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS2_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM0, PROCESS3_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_PROCESS_QUANTUM0), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_PROCESS_QUANTUM1, PROCESS4_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS5_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS6_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_PROCESS_QUANTUM1, PROCESS7_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_PROCESS_QUANTUM1), temp);
+
/* Initialize the ring buffer's read and write pointers */
if (restore) {
WREG32_SOC15_IP(GC, sdma_v7_0_get_reg_offset(adev, i, regSDMA0_QUEUE0_RB_RPTR), lower_32_bits(ring->wptr << 2));
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 4/4] drm/amdgpu/sdma7.1: program quantums
2026-03-18 14:10 [PATCH 1/4] drm/amdgpu: add SDMA process quantum settings Alex Deucher
2026-03-18 14:10 ` [PATCH 2/4] drm/amdgpu/sdma6: program quantums Alex Deucher
2026-03-18 14:10 ` [PATCH 3/4] drm/amdgpu/sdma7: " Alex Deucher
@ 2026-03-18 14:10 ` Alex Deucher
2 siblings, 0 replies; 4+ messages in thread
From: Alex Deucher @ 2026-03-18 14:10 UTC (permalink / raw)
To: amd-gfx; +Cc: Alex Deucher
Set the quantums for queue switching on the instance.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c | 32 ++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
index f20e0fc3fc743..244f7df5ede19 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
@@ -478,6 +478,38 @@ static int sdma_v7_1_gfx_resume_instance(struct amdgpu_device *adev, int i, bool
rb_cntl = REG_SET_FIELD(rb_cntl, SDMA0_SDMA_QUEUE0_RB_CNTL, RB_PRIV, 1);
WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_QUEUE0_RB_CNTL), rb_cntl);
+ /* handle queue priority and quantums */
+ temp = REG_SET_FIELD(0, SDMA0_SDMA_QUEUE0_SCHEDULE_CNTL, GLOBAL_ID, 2); /* 3-0, 3 is highest priority */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_QUEUE0_SCHEDULE_CNTL, CONTEXT_QUANTUM,
+ AMDGPU_SDMA_CONTEXT_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_QUEUE0_SCHEDULE_CNTL), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_SDMA_GLOBAL_QUANTUM, GLOBAL_FOCUS_QUANTUM,
+ AMDGPU_SDMA_FOCUS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_GLOBAL_QUANTUM, GLOBAL_NORMAL_QUANTUM,
+ AMDGPU_SDMA_NORMAL_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_GLOBAL_QUANTUM), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_SDMA_PROCESS_QUANTUM0, PROCESS0_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM0, PROCESS1_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM0, PROCESS2_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM0, PROCESS3_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_PROCESS_QUANTUM0), temp);
+
+ temp = REG_SET_FIELD(0, SDMA0_SDMA_PROCESS_QUANTUM1, PROCESS4_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM1, PROCESS5_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM1, PROCESS6_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ temp = REG_SET_FIELD(temp, SDMA0_SDMA_PROCESS_QUANTUM1, PROCESS7_QUANTUM,
+ AMDGPU_SDMA_PROCESS_QUANTUM); /* value * 100us */
+ WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_PROCESS_QUANTUM1), temp);
+
/* Initialize the ring buffer's read and write pointers */
if (restore) {
WREG32_SOC15_IP(GC, sdma_v7_1_get_reg_offset(adev, i, regSDMA0_SDMA_QUEUE0_RB_RPTR), lower_32_bits(ring->wptr << 2));
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-18 14:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-18 14:10 [PATCH 1/4] drm/amdgpu: add SDMA process quantum settings Alex Deucher
2026-03-18 14:10 ` [PATCH 2/4] drm/amdgpu/sdma6: program quantums Alex Deucher
2026-03-18 14:10 ` [PATCH 3/4] drm/amdgpu/sdma7: " Alex Deucher
2026-03-18 14:10 ` [PATCH 4/4] drm/amdgpu/sdma7.1: " Alex Deucher
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox