Commit de33a329 authored by Jack Xiao's avatar Jack Xiao Committed by Alex Deucher

drm/amdgpu: use the whole doorbell space for mes

Use the whole doorbell space for mes. Each queue in one process occupies
one doorbell slot to ring the queue submitting.
Signed-off-by: default avatarJack Xiao <Jack.Xiao@amd.com>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 56443402
...@@ -1044,19 +1044,25 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev) ...@@ -1044,19 +1044,25 @@ static int amdgpu_device_doorbell_init(struct amdgpu_device *adev)
adev->doorbell.base = pci_resource_start(adev->pdev, 2); adev->doorbell.base = pci_resource_start(adev->pdev, 2);
adev->doorbell.size = pci_resource_len(adev->pdev, 2); adev->doorbell.size = pci_resource_len(adev->pdev, 2);
adev->doorbell.num_doorbells = min_t(u32, adev->doorbell.size / sizeof(u32), if (adev->enable_mes) {
adev->doorbell_index.max_assignment+1); adev->doorbell.num_doorbells =
if (adev->doorbell.num_doorbells == 0) adev->doorbell.size / sizeof(u32);
return -EINVAL; } else {
adev->doorbell.num_doorbells =
/* For Vega, reserve and map two pages on doorbell BAR since SDMA min_t(u32, adev->doorbell.size / sizeof(u32),
* paging queue doorbell use the second page. The adev->doorbell_index.max_assignment+1);
* AMDGPU_DOORBELL64_MAX_ASSIGNMENT definition assumes all the if (adev->doorbell.num_doorbells == 0)
* doorbells are in the first page. So with paging queue enabled, return -EINVAL;
* the max num_doorbells should + 1 page (0x400 in dword)
*/ /* For Vega, reserve and map two pages on doorbell BAR since SDMA
if (adev->asic_type >= CHIP_VEGA10) * paging queue doorbell use the second page. The
adev->doorbell.num_doorbells += 0x400; * 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)
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