Rebased on adeucher/amd-staging-4.13 and tested on Vega10 (graphics) and Kaveri (KFD). Meaningful graphics tests with retry faults enabled will only be possible after PASID support is added to amdgpu_cs. The chash table was moved to drivers/gpu/drm/amd/lib for now but is ready to move to lib if needed. I have not got any feedback on LKLM and I don't want that to hold up the patch series. TODO: * Finish upstreaming KFD * Allocate PASIDs for graphics contexts * Setup VMID-PASID mapping during graphics command submission * Confirm that graphics page faults have the correct PASID in the IV Felix Kuehling (8): drm/amdgpu: Fix error handling in amdgpu_vm_init drm/amdgpu: Add PASID management drm/radeon: Add PASID manager for KFD drm/amdkfd: Separate doorbell allocation from PASID drm/amdkfd: Use PASID manager from KGD drm/amdgpu: Add prescreening stage in IH processing drm/amd: Closed hash table with low overhead drm/amdgpu: Track pending retry faults in IH and VM (v2) drivers/gpu/drm/Kconfig | 3 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 2 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 2 + drivers/gpu/drm/amd/amdgpu/amdgpu_ih.c | 82 +++ drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h | 12 + drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 84 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 21 +- drivers/gpu/drm/amd/amdgpu/cik_ih.c | 14 + drivers/gpu/drm/amd/amdgpu/cz_ih.c | 14 + drivers/gpu/drm/amd/amdgpu/iceland_ih.c | 14 + drivers/gpu/drm/amd/amdgpu/si_ih.c | 14 + drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 14 + drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 90 ++++ drivers/gpu/drm/amd/amdkfd/kfd_device.c | 7 - drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | 50 +- drivers/gpu/drm/amd/amdkfd/kfd_module.c | 6 - drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 90 ++-- drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 10 +- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 6 + drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 6 + drivers/gpu/drm/amd/include/linux/chash.h | 358 +++++++++++++ drivers/gpu/drm/amd/lib/Kconfig | 27 + drivers/gpu/drm/amd/lib/Makefile | 11 + drivers/gpu/drm/amd/lib/chash.c | 622 ++++++++++++++++++++++ drivers/gpu/drm/radeon/radeon_kfd.c | 31 ++ 28 files changed, 1504 insertions(+), 91 deletions(-) create mode 100644 drivers/gpu/drm/amd/include/linux/chash.h create mode 100644 drivers/gpu/drm/amd/lib/Kconfig create mode 100644 drivers/gpu/drm/amd/lib/Makefile create mode 100644 drivers/gpu/drm/amd/lib/chash.c -- 2.7.4