diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/Kconfig | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 17 |
2 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/Kconfig b/drivers/gpu/drm/amd/amdkfd/Kconfig index ed2f06c9f346..3858820a0055 100644 --- a/drivers/gpu/drm/amd/amdkfd/Kconfig +++ b/drivers/gpu/drm/amd/amdkfd/Kconfig | |||
@@ -6,5 +6,6 @@ config HSA_AMD | |||
6 | tristate "HSA kernel driver for AMD GPU devices" | 6 | tristate "HSA kernel driver for AMD GPU devices" |
7 | depends on DRM_AMDGPU && X86_64 | 7 | depends on DRM_AMDGPU && X86_64 |
8 | imply AMD_IOMMU_V2 | 8 | imply AMD_IOMMU_V2 |
9 | select MMU_NOTIFIER | ||
9 | help | 10 | help |
10 | Enable this if you want to use HSA features on AMD GPU devices. | 11 | Enable this if you want to use HSA features on AMD GPU devices. |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index cd679cf1fd30..59808a39ecf4 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | |||
@@ -749,12 +749,13 @@ static int kfd_ioctl_get_clock_counters(struct file *filep, | |||
749 | struct timespec64 time; | 749 | struct timespec64 time; |
750 | 750 | ||
751 | dev = kfd_device_by_id(args->gpu_id); | 751 | dev = kfd_device_by_id(args->gpu_id); |
752 | if (dev == NULL) | 752 | if (dev) |
753 | return -EINVAL; | 753 | /* Reading GPU clock counter from KGD */ |
754 | 754 | args->gpu_clock_counter = | |
755 | /* Reading GPU clock counter from KGD */ | 755 | dev->kfd2kgd->get_gpu_clock_counter(dev->kgd); |
756 | args->gpu_clock_counter = | 756 | else |
757 | dev->kfd2kgd->get_gpu_clock_counter(dev->kgd); | 757 | /* Node without GPU resource */ |
758 | args->gpu_clock_counter = 0; | ||
758 | 759 | ||
759 | /* No access to rdtsc. Using raw monotonic time */ | 760 | /* No access to rdtsc. Using raw monotonic time */ |
760 | getrawmonotonic64(&time); | 761 | getrawmonotonic64(&time); |
@@ -1147,7 +1148,7 @@ err_unlock: | |||
1147 | return ret; | 1148 | return ret; |
1148 | } | 1149 | } |
1149 | 1150 | ||
1150 | bool kfd_dev_is_large_bar(struct kfd_dev *dev) | 1151 | static bool kfd_dev_is_large_bar(struct kfd_dev *dev) |
1151 | { | 1152 | { |
1152 | struct kfd_local_mem_info mem_info; | 1153 | struct kfd_local_mem_info mem_info; |
1153 | 1154 | ||
@@ -1421,7 +1422,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, | |||
1421 | 1422 | ||
1422 | pdd = kfd_get_process_device_data(dev, p); | 1423 | pdd = kfd_get_process_device_data(dev, p); |
1423 | if (!pdd) { | 1424 | if (!pdd) { |
1424 | err = PTR_ERR(pdd); | 1425 | err = -EINVAL; |
1425 | goto bind_process_to_device_failed; | 1426 | goto bind_process_to_device_failed; |
1426 | } | 1427 | } |
1427 | 1428 | ||