summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-07-23 15:38:10 +1000
committerDave Airlie <airlied@redhat.com>2020-07-23 15:38:11 +1000
commit206739119508d5ab4b42ab480ff61a7e6cd72d7c (patch)
tree756285714f5b842e223e22a75d17521c9f41ae55 /drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
parent959ed53808d171cf5203cdc74578db55d0c79822 (diff)
parent6e14adea0ac3037d923a9591d1a094c115d7947c (diff)
Merge tag 'amd-drm-next-5.9-2020-07-17' of git://people.freedesktop.org/~agd5f/linux into drm-next
amd-drm-next-5.9-2020-07-17: amdgpu: - SI UVD/VCE clock support - Updates for Sienna Cichlid - Expose drm rotation property - Atomfirmware updates for renoir - updates to GPUVM hub handling for different register layouts - swSMU restructuring and cleanups - RAS fixes - DC fixes - mode1 reset support for Sienna Cichlid - Add support for Navy Flounder GPUs amdkfd: - Add SMI events watch interface UAPI: - Add amdkfd SMI events watch interface Userspace which uses this interface: https://github.com/RadeonOpenCompute/rocm_smi_lib/commit/2235ede34c456f1c7d3490f6fe74825d442d272e Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexdeucher@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200717132022.4014-1-alexander.deucher@amd.com
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd/kfd_pasid.c')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_pasid.c31
1 files changed, 8 insertions, 23 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
index 33b08ff00b50..2a07c4f2cd0d 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
@@ -25,7 +25,7 @@
#include "amdgpu_ids.h"
static unsigned int pasid_bits = 16;
-static const struct kfd2kgd_calls *kfd2kgd;
+static bool pasids_allocated; /* = false */
bool kfd_set_pasid_limit(unsigned int new_limit)
{
@@ -33,7 +33,7 @@ bool kfd_set_pasid_limit(unsigned int new_limit)
return false;
if (new_limit < (1U << pasid_bits)) {
- if (kfd2kgd)
+ if (pasids_allocated)
/* We've already allocated user PASIDs, too late to
* change the limit
*/
@@ -53,32 +53,17 @@ unsigned int kfd_get_pasid_limit(void)
unsigned int kfd_pasid_alloc(void)
{
- int r;
+ int r = amdgpu_pasid_alloc(pasid_bits);
- /* Find the first best KFD device for calling KGD */
- if (!kfd2kgd) {
- struct kfd_dev *dev = NULL;
- unsigned int i = 0;
-
- while ((kfd_topology_enum_kfd_devices(i, &dev)) == 0) {
- if (dev && dev->kfd2kgd) {
- kfd2kgd = dev->kfd2kgd;
- break;
- }
- i++;
- }
-
- if (!kfd2kgd)
- return false;
+ if (r > 0) {
+ pasids_allocated = true;
+ return r;
}
- r = amdgpu_pasid_alloc(pasid_bits);
-
- return r > 0 ? r : 0;
+ return 0;
}
void kfd_pasid_free(unsigned int pasid)
{
- if (kfd2kgd)
- amdgpu_pasid_free(pasid);
+ amdgpu_pasid_free(pasid);
}