Skip to content

Commit

Permalink
drm/amdkfd: Reuse CHIP_* from amdgpu v2
Browse files Browse the repository at this point in the history
There are already CHIP_* definitions under amd_shared.h file on amdgpu
side, so KFD should reuse them rather than defining new ones.

Using enum for asic type requires default cases on switch statements
to prevent compiler warnings. WARN on unsupported ASICs. It should never
get there because KFD should not be initialized on unsupported devices.

v2: Replace BUG() with WARN and error return

Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
  • Loading branch information
Yong Zhao authored and Oded Gabbay committed Sep 20, 2017
1 parent 44008d7 commit e596b90
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 12 deletions.
4 changes: 4 additions & 0 deletions drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -1130,6 +1130,10 @@ struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
case CHIP_KAVERI:
device_queue_manager_init_cik(&dqm->ops_asic_specific);
break;
default:
WARN(1, "Unexpected ASIC family %u",
dev->device_info->asic_family);
goto out_free;
}

if (!dqm->ops.initialize(dqm))
Expand Down
18 changes: 12 additions & 6 deletions drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,14 +303,20 @@ struct kernel_queue *kernel_queue_init(struct kfd_dev *dev,
case CHIP_KAVERI:
kernel_queue_init_cik(&kq->ops_asic_specific);
break;
default:
WARN(1, "Unexpected ASIC family %u",
dev->device_info->asic_family);
goto out_free;
}

if (!kq->ops.initialize(kq, dev, type, KFD_KERNEL_QUEUE_SIZE)) {
pr_err("Failed to init kernel queue\n");
kfree(kq);
return NULL;
}
return kq;
if (kq->ops.initialize(kq, dev, type, KFD_KERNEL_QUEUE_SIZE))
return kq;

pr_err("Failed to init kernel queue\n");

out_free:
kfree(kq);
return NULL;
}

void kernel_queue_uninit(struct kernel_queue *kq)
Expand Down
3 changes: 3 additions & 0 deletions drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type,
return mqd_manager_init_cik(type, dev);
case CHIP_CARRIZO:
return mqd_manager_init_vi(type, dev);
default:
WARN(1, "Unexpected ASIC family %u",
dev->device_info->asic_family);
}

return NULL;
Expand Down
9 changes: 3 additions & 6 deletions drivers/gpu/drm/amd/amdkfd/kfd_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
#include <linux/kfd_ioctl.h>
#include <kgd_kfd_interface.h>

#include "amd_shared.h"

#define KFD_SYSFS_FILE_MODE 0444

#define KFD_MMAP_DOORBELL_MASK 0x8000000000000
Expand Down Expand Up @@ -112,11 +114,6 @@ enum cache_policy {
cache_policy_noncoherent
};

enum asic_family_type {
CHIP_KAVERI = 0,
CHIP_CARRIZO
};

struct kfd_event_interrupt_class {
bool (*interrupt_isr)(struct kfd_dev *dev,
const uint32_t *ih_ring_entry);
Expand All @@ -125,7 +122,7 @@ struct kfd_event_interrupt_class {
};

struct kfd_device_info {
unsigned int asic_family;
enum amd_asic_type asic_family;
const struct kfd_event_interrupt_class *event_interrupt_class;
unsigned int max_pasid_bits;
unsigned int max_no_of_hqd;
Expand Down

0 comments on commit e596b90

Please sign in to comment.