Am 2021-11-09 um 5:42 p.m. schrieb Graham Sider: > Defined as GC HWIP >= IP_VERSION(9, 0, 1). > > Also defines KFD_GC_VERSION to return GC HWIP version. > > Signed-off-by: Graham Sider <Graham.Sider@xxxxxxx> Patches 1 and 2 are Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> Comments on Patch 3 in a separate mail. Regards, Felix > --- > drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 2 +- > drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 4 ++-- > drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 3 ++- > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 2 +- > 4 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > index 2e3d74f7fbfb..2466a73b8c7d 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c > @@ -321,7 +321,7 @@ static int kfd_ioctl_create_queue(struct file *filep, struct kfd_process *p, > /* Return gpu_id as doorbell offset for mmap usage */ > args->doorbell_offset = KFD_MMAP_TYPE_DOORBELL; > args->doorbell_offset |= KFD_MMAP_GPU_ID(args->gpu_id); > - if (KFD_IS_SOC15(dev->device_info->asic_family)) > + if (KFD_IS_SOC15(dev)) > /* On SOC15 ASICs, include the doorbell offset within the > * process doorbell frame, which is 2 pages. > */ > 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 0a60317509c8..4f7aec6a481b 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c > @@ -157,7 +157,7 @@ static int allocate_doorbell(struct qcm_process_device *qpd, struct queue *q) > { > struct kfd_dev *dev = qpd->dqm->dev; > > - if (!KFD_IS_SOC15(dev->device_info->asic_family)) { > + if (!KFD_IS_SOC15(dev)) { > /* On pre-SOC15 chips we need to use the queue ID to > * preserve the user mode ABI. > */ > @@ -202,7 +202,7 @@ static void deallocate_doorbell(struct qcm_process_device *qpd, > unsigned int old; > struct kfd_dev *dev = qpd->dqm->dev; > > - if (!KFD_IS_SOC15(dev->device_info->asic_family) || > + if (!KFD_IS_SOC15(dev) || > q->properties.type == KFD_QUEUE_TYPE_SDMA || > q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI) > return; > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > index 78ae96fc8a6a..352709034acf 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h > @@ -183,7 +183,8 @@ enum cache_policy { > cache_policy_noncoherent > }; > > -#define KFD_IS_SOC15(chip) ((chip) >= CHIP_VEGA10) > +#define KFD_GC_VERSION(dev) ((dev)->adev->ip_versions[GC_HWIP][0]) > +#define KFD_IS_SOC15(dev) ((KFD_GC_VERSION(dev)) >= (IP_VERSION(9, 0, 1))) > > struct kfd_event_interrupt_class { > bool (*interrupt_isr)(struct kfd_dev *dev, > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > index f29b3932e3dc..fafc7b187fad 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c > @@ -1431,7 +1431,7 @@ static int init_doorbell_bitmap(struct qcm_process_device *qpd, > int range_start = dev->shared_resources.non_cp_doorbells_start; > int range_end = dev->shared_resources.non_cp_doorbells_end; > > - if (!KFD_IS_SOC15(dev->device_info->asic_family)) > + if (!KFD_IS_SOC15(dev)) > return 0; > > qpd->doorbell_bitmap =