Commit 88dc26e4 authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher

drm/amdgpu: Fix num_doorbell calculation issue

When paging queue is enabled, it use the second page of doorbell.
The AMDGPU_DOORBELL64_MAX_ASSIGNMENT definition assumes all the
kernel doorbells are in the first page. So with paging queue enabled,
the total kernel doorbell range should be original num_doorbell plus
one page (0x400 in dword), not *2.
Signed-off-by: default avatarOak Zeng <ozeng@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 082f0f21
...@@ -539,10 +539,13 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev) ...@@ -539,10 +539,13 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev)
return -EINVAL; return -EINVAL;
/* For Vega, reserve and map two pages on doorbell BAR since SDMA /* For Vega, reserve and map two pages on doorbell BAR since SDMA
* paging queue doorbell use the second page * paging queue doorbell use the second page. The
* AMDGPU_DOORBELL64_MAX_ASSIGNMENT definition assumes all the
* doorbells are in the first page. So with paging queue enabled,
* the max num_doorbells should + 1 page (0x400 in dword)
*/ */
if (adev->asic_type >= CHIP_VEGA10) if (adev->asic_type >= CHIP_VEGA10)
adev->doorbell.num_doorbells *= 2; adev->doorbell.num_doorbells += 0x400;
adev->doorbell.ptr = ioremap(adev->doorbell.base, adev->doorbell.ptr = ioremap(adev->doorbell.base,
adev->doorbell.num_doorbells * adev->doorbell.num_doorbells *
......
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