提交 de33a329 编写于 作者: J Jack Xiao 提交者: 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: NJack Xiao <Jack.Xiao@amd.com>
Acked-by: NChristian König <christian.koenig@amd.com>
Reviewed-by: NHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册