[PATCH 07/10] drm/amdkfd: Reuse CHIP_* from amdgpu v2
Oded Gabbay
oded.gabbay at gmail.com
Sun Sep 24 11:06:31 UTC 2017
On Thu, Sep 21, 2017 at 1:10 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote:
> From: Yong Zhao <Yong.Zhao at amd.com>
>
> 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 at amd.com>
> Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
> ---
> drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 4 ++++
> drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c | 18 ++++++++++++------
> drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c | 3 +++
> drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 9 +++------
> 4 files changed, 22 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> index 87f8742..fe0f0de 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> @@ -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))
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
> index a47ca3c..d7ed10e 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
> @@ -291,14 +291,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)
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
> index b1ef136..dfd260e 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
> @@ -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;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 4d989b9..47eee77 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -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
> @@ -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);
> @@ -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;
> --
> 2.7.4
>
This patch is:
Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>
More information about the amd-gfx
mailing list