Commit dd0ae064 authored by Graham Sider's avatar Graham Sider Committed by Alex Deucher

drm/amdkfd: convert KFD_IS_SOC to IP version checking

Defined as GC HWIP >= IP_VERSION(9, 0, 1).

Also defines KFD_GC_VERSION to return GC HWIP version.
Signed-off-by: default avatarGraham Sider <Graham.Sider@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 73729a7d
...@@ -321,7 +321,7 @@ static int kfd_ioctl_create_queue(struct file *filep, struct kfd_process *p, ...@@ -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 */ /* Return gpu_id as doorbell offset for mmap usage */
args->doorbell_offset = KFD_MMAP_TYPE_DOORBELL; args->doorbell_offset = KFD_MMAP_TYPE_DOORBELL;
args->doorbell_offset |= KFD_MMAP_GPU_ID(args->gpu_id); 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 /* On SOC15 ASICs, include the doorbell offset within the
* process doorbell frame, which is 2 pages. * process doorbell frame, which is 2 pages.
*/ */
......
...@@ -157,7 +157,7 @@ static int allocate_doorbell(struct qcm_process_device *qpd, struct queue *q) ...@@ -157,7 +157,7 @@ static int allocate_doorbell(struct qcm_process_device *qpd, struct queue *q)
{ {
struct kfd_dev *dev = qpd->dqm->dev; 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 /* On pre-SOC15 chips we need to use the queue ID to
* preserve the user mode ABI. * preserve the user mode ABI.
*/ */
...@@ -202,7 +202,7 @@ static void deallocate_doorbell(struct qcm_process_device *qpd, ...@@ -202,7 +202,7 @@ static void deallocate_doorbell(struct qcm_process_device *qpd,
unsigned int old; unsigned int old;
struct kfd_dev *dev = qpd->dqm->dev; 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 ||
q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI) q->properties.type == KFD_QUEUE_TYPE_SDMA_XGMI)
return; return;
......
...@@ -183,7 +183,8 @@ enum cache_policy { ...@@ -183,7 +183,8 @@ enum cache_policy {
cache_policy_noncoherent 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 { struct kfd_event_interrupt_class {
bool (*interrupt_isr)(struct kfd_dev *dev, bool (*interrupt_isr)(struct kfd_dev *dev,
......
...@@ -1431,7 +1431,7 @@ static int init_doorbell_bitmap(struct qcm_process_device *qpd, ...@@ -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_start = dev->shared_resources.non_cp_doorbells_start;
int range_end = dev->shared_resources.non_cp_doorbells_end; 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; return 0;
qpd->doorbell_bitmap = qpd->doorbell_bitmap =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment