BackMerge v4.19-rc5 into drm-next
Sean Paul requested an -rc5 backmerge from some sun4i fixes. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -457,7 +457,8 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
|
||||
|
||||
if (kfd->kfd2kgd->init_gtt_mem_allocation(
|
||||
kfd->kgd, size, &kfd->gtt_mem,
|
||||
&kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr)){
|
||||
&kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr,
|
||||
false)) {
|
||||
dev_err(kfd_device, "Could not allocate %d bytes\n", size);
|
||||
goto out;
|
||||
}
|
||||
|
@@ -62,9 +62,20 @@ int kfd_iommu_device_init(struct kfd_dev *kfd)
|
||||
struct amd_iommu_device_info iommu_info;
|
||||
unsigned int pasid_limit;
|
||||
int err;
|
||||
struct kfd_topology_device *top_dev;
|
||||
|
||||
if (!kfd->device_info->needs_iommu_device)
|
||||
top_dev = kfd_topology_device_by_id(kfd->id);
|
||||
|
||||
/*
|
||||
* Overwrite ATS capability according to needs_iommu_device to fix
|
||||
* potential missing corresponding bit in CRAT of BIOS.
|
||||
*/
|
||||
if (!kfd->device_info->needs_iommu_device) {
|
||||
top_dev->node_props.capability &= ~HSA_CAP_ATS_PRESENT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
top_dev->node_props.capability |= HSA_CAP_ATS_PRESENT;
|
||||
|
||||
iommu_info.flags = 0;
|
||||
err = amd_iommu_device_info(kfd->pdev, &iommu_info);
|
||||
|
@@ -88,7 +88,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd,
|
||||
ALIGN(sizeof(struct v9_mqd), PAGE_SIZE),
|
||||
&((*mqd_mem_obj)->gtt_mem),
|
||||
&((*mqd_mem_obj)->gpu_addr),
|
||||
(void *)&((*mqd_mem_obj)->cpu_ptr));
|
||||
(void *)&((*mqd_mem_obj)->cpu_ptr), true);
|
||||
} else
|
||||
retval = kfd_gtt_sa_allocate(mm->dev, sizeof(struct v9_mqd),
|
||||
mqd_mem_obj);
|
||||
|
@@ -782,6 +782,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu);
|
||||
int kfd_topology_remove_device(struct kfd_dev *gpu);
|
||||
struct kfd_topology_device *kfd_topology_device_by_proximity_domain(
|
||||
uint32_t proximity_domain);
|
||||
struct kfd_topology_device *kfd_topology_device_by_id(uint32_t gpu_id);
|
||||
struct kfd_dev *kfd_device_by_id(uint32_t gpu_id);
|
||||
struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev);
|
||||
int kfd_topology_enum_kfd_devices(uint8_t idx, struct kfd_dev **kdev);
|
||||
|
@@ -63,22 +63,33 @@ struct kfd_topology_device *kfd_topology_device_by_proximity_domain(
|
||||
return device;
|
||||
}
|
||||
|
||||
struct kfd_dev *kfd_device_by_id(uint32_t gpu_id)
|
||||
struct kfd_topology_device *kfd_topology_device_by_id(uint32_t gpu_id)
|
||||
{
|
||||
struct kfd_topology_device *top_dev;
|
||||
struct kfd_dev *device = NULL;
|
||||
struct kfd_topology_device *top_dev = NULL;
|
||||
struct kfd_topology_device *ret = NULL;
|
||||
|
||||
down_read(&topology_lock);
|
||||
|
||||
list_for_each_entry(top_dev, &topology_device_list, list)
|
||||
if (top_dev->gpu_id == gpu_id) {
|
||||
device = top_dev->gpu;
|
||||
ret = top_dev;
|
||||
break;
|
||||
}
|
||||
|
||||
up_read(&topology_lock);
|
||||
|
||||
return device;
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct kfd_dev *kfd_device_by_id(uint32_t gpu_id)
|
||||
{
|
||||
struct kfd_topology_device *top_dev;
|
||||
|
||||
top_dev = kfd_topology_device_by_id(gpu_id);
|
||||
if (!top_dev)
|
||||
return NULL;
|
||||
|
||||
return top_dev->gpu;
|
||||
}
|
||||
|
||||
struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev)
|
||||
|
Reference in New Issue
Block a user