Commit 4f8bc72f authored by Christian König's avatar Christian König Committed by Alex Deucher

drm/amdgpu: free up the first paging queue v2

We need the first paging queue to handle page faults.

v2: handle any number of SDMA instances gracefully
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f11a13ec
...@@ -2265,8 +2265,8 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = { ...@@ -2265,8 +2265,8 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev) static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
{ {
adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs; adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
if (adev->sdma.has_page_queue) if (adev->sdma.has_page_queue && adev->sdma.num_instances > 1)
adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page; adev->mman.buffer_funcs_ring = &adev->sdma.instance[1].page;
else else
adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
} }
...@@ -2285,15 +2285,21 @@ static void sdma_v4_0_set_vm_pte_funcs(struct amdgpu_device *adev) ...@@ -2285,15 +2285,21 @@ static void sdma_v4_0_set_vm_pte_funcs(struct amdgpu_device *adev)
unsigned i; unsigned i;
adev->vm_manager.vm_pte_funcs = &sdma_v4_0_vm_pte_funcs; adev->vm_manager.vm_pte_funcs = &sdma_v4_0_vm_pte_funcs;
for (i = 0; i < adev->sdma.num_instances; i++) { if (adev->sdma.has_page_queue && adev->sdma.num_instances > 1) {
if (adev->sdma.has_page_queue) for (i = 1; i < adev->sdma.num_instances; i++) {
sched = &adev->sdma.instance[i].page.sched; sched = &adev->sdma.instance[i].page.sched;
else adev->vm_manager.vm_pte_rqs[i - 1] =
&sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
}
adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances - 1;
} else {
for (i = 0; i < adev->sdma.num_instances; i++) {
sched = &adev->sdma.instance[i].ring.sched; sched = &adev->sdma.instance[i].ring.sched;
adev->vm_manager.vm_pte_rqs[i] = adev->vm_manager.vm_pte_rqs[i] =
&sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL]; &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
} }
adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances; adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
}
} }
const struct amdgpu_ip_block_version sdma_v4_0_ip_block = { const struct amdgpu_ip_block_version sdma_v4_0_ip_block = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment