diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch | 377 |
1 files changed, 377 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch new file mode 100644 index 00000000..5f52dad9 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch @@ -0,0 +1,377 @@ +From 2b79da22d5be104feb44f634543969b67fe5cbb4 Mon Sep 17 00:00:00 2001 +From: Yong Zhao <Yong.Zhao@amd.com> +Date: Wed, 25 Sep 2019 17:00:59 -0400 +Subject: [PATCH 3971/4256] drm/amdkfd: Use hex print format for pasid + +Since KFD pasid starts from 0x8000 (32768 in decimal), it is better +perceived as a hex number. Meanwhile, change the pasid type from +unsigned int to uint16_t to be consistent throughout the code. + +Change-Id: I565fe39f69e782749a697f18545775354c7a89f8 +Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> +Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 12 +++++------ + drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c | 4 ++-- + drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c | 8 ++++---- + .../drm/amd/amdkfd/kfd_device_queue_manager.c | 8 ++++---- + drivers/gpu/drm/amd/amdkfd/kfd_events.c | 12 +++++------ + drivers/gpu/drm/amd/amdkfd/kfd_iommu.c | 6 +++--- + drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 +- + drivers/gpu/drm/amd/amdkfd/kfd_process.c | 20 +++++++++---------- + .../amd/amdkfd/kfd_process_queue_manager.c | 6 +++--- + 9 files changed, 39 insertions(+), 39 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +index 1713413e5ce5..9b934f68d726 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +@@ -306,7 +306,7 @@ static int kfd_ioctl_create_queue(struct file *filep, struct kfd_process *p, + goto err_bind_process; + } + +- pr_debug("Creating queue for PASID %d on gpu 0x%x\n", ++ pr_debug("Creating queue for PASID 0x%x on gpu 0x%x\n", + p->pasid, + dev->id); + +@@ -356,7 +356,7 @@ static int kfd_ioctl_destroy_queue(struct file *filp, struct kfd_process *p, + int retval; + struct kfd_ioctl_destroy_queue_args *args = data; + +- pr_debug("Destroying queue id %d for pasid %d\n", ++ pr_debug("Destroying queue id %d for pasid 0x%x\n", + args->queue_id, + p->pasid); + +@@ -403,7 +403,7 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p, + properties.queue_percent = args->queue_percentage; + properties.priority = args->queue_priority; + +- pr_debug("Updating queue id %d for pasid %d\n", ++ pr_debug("Updating queue id %d for pasid 0x%x\n", + args->queue_id, p->pasid); + + mutex_lock(&p->mutex); +@@ -860,7 +860,7 @@ static int kfd_ioctl_get_process_apertures(struct file *filp, + struct kfd_process_device_apertures *pAperture; + struct kfd_process_device *pdd; + +- dev_dbg(kfd_device, "get apertures for PASID %d", p->pasid); ++ dev_dbg(kfd_device, "get apertures for PASID 0x%x", p->pasid); + + args->num_of_nodes = 0; + +@@ -918,7 +918,7 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp, + uint32_t nodes = 0; + int ret; + +- dev_dbg(kfd_device, "get apertures for PASID %d", p->pasid); ++ dev_dbg(kfd_device, "get apertures for PASID 0x%x", p->pasid); + + if (args->num_of_nodes == 0) { + /* Return number of nodes, so that user space can alloacate +@@ -3067,7 +3067,7 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process, + + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + +- pr_debug("Process %d mapping mmio page\n" ++ pr_debug("pasid 0x%x mapping mmio page\n" + " target user address == 0x%08llX\n" + " physical address == 0x%08llX\n" + " vm_flags == 0x%04lX\n" +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c +index 3635e0b4b3b7..492951cad143 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c +@@ -800,7 +800,7 @@ int dbgdev_wave_reset_wavefronts(struct kfd_dev *dev, struct kfd_process *p) + (dev->kgd, vmid)) { + if (dev->kfd2kgd->get_atc_vmid_pasid_mapping_pasid + (dev->kgd, vmid) == p->pasid) { +- pr_debug("Killing wave fronts of vmid %d and pasid %d\n", ++ pr_debug("Killing wave fronts of vmid %d and pasid 0x%x\n", + vmid, p->pasid); + break; + } +@@ -808,7 +808,7 @@ int dbgdev_wave_reset_wavefronts(struct kfd_dev *dev, struct kfd_process *p) + } + + if (vmid > last_vmid_to_scan) { +- pr_err("Didn't find vmid for pasid %d\n", p->pasid); ++ pr_err("Didn't find vmid for pasid 0x%x\n", p->pasid); + return -EFAULT; + } + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c +index 9d4af961c5d1..9bfa50633654 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c +@@ -96,7 +96,7 @@ bool kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev) + long kfd_dbgmgr_register(struct kfd_dbgmgr *pmgr, struct kfd_process *p) + { + if (pmgr->pasid != 0) { +- pr_debug("H/W debugger is already active using pasid %d\n", ++ pr_debug("H/W debugger is already active using pasid 0x%x\n", + pmgr->pasid); + return -EBUSY; + } +@@ -117,7 +117,7 @@ long kfd_dbgmgr_unregister(struct kfd_dbgmgr *pmgr, struct kfd_process *p) + { + /* Is the requests coming from the already registered process? */ + if (pmgr->pasid != p->pasid) { +- pr_debug("H/W debugger is not registered by calling pasid %d\n", ++ pr_debug("H/W debugger is not registered by calling pasid 0x%x\n", + p->pasid); + return -EINVAL; + } +@@ -134,7 +134,7 @@ long kfd_dbgmgr_wave_control(struct kfd_dbgmgr *pmgr, + { + /* Is the requests coming from the already registered process? */ + if (pmgr->pasid != wac_info->process->pasid) { +- pr_debug("H/W debugger support was not registered for requester pasid %d\n", ++ pr_debug("H/W debugger support was not registered for requester pasid 0x%x\n", + wac_info->process->pasid); + return -EINVAL; + } +@@ -147,7 +147,7 @@ long kfd_dbgmgr_address_watch(struct kfd_dbgmgr *pmgr, + { + /* Is the requests coming from the already registered process? */ + if (pmgr->pasid != adw_info->process->pasid) { +- pr_debug("H/W debugger support was not registered for requester pasid %d\n", ++ pr_debug("H/W debugger support was not registered for requester pasid 0x%x\n", + adw_info->process->pasid); + return -EINVAL; + } +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 02d2118fa9ba..10e49a9cbcfa 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +@@ -697,7 +697,7 @@ static int evict_process_queues_nocpsch(struct device_queue_manager *dqm, + goto out; + + pdd = qpd_to_pdd(qpd); +- pr_info_ratelimited("Evicting PASID %u queues\n", ++ pr_info_ratelimited("Evicting PASID 0x%x queues\n", + pdd->process->pasid); + + /* Mark all queues as evicted. Deactivate all active queues on +@@ -743,7 +743,7 @@ static int evict_process_queues_cpsch(struct device_queue_manager *dqm, + goto out; + + pdd = qpd_to_pdd(qpd); +- pr_info_ratelimited("Evicting PASID %u queues\n", ++ pr_info_ratelimited("Evicting PASID 0x%x queues\n", + pdd->process->pasid); + + /* Mark all queues as evicted. Deactivate all active queues on +@@ -794,7 +794,7 @@ static int restore_process_queues_nocpsch(struct device_queue_manager *dqm, + goto out; + } + +- pr_info_ratelimited("Restoring PASID %u queues\n", ++ pr_info_ratelimited("Restoring PASID 0x%x queues\n", + pdd->process->pasid); + + /* Update PD Base in QPD */ +@@ -870,7 +870,7 @@ static int restore_process_queues_cpsch(struct device_queue_manager *dqm, + goto out; + } + +- pr_info_ratelimited("Restoring PASID %u queues\n", ++ pr_info_ratelimited("Restoring PASID 0x%x queues\n", + pdd->process->pasid); + + /* Update PD Base in QPD */ +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c +index 38a99ba91a88..6baf78c9245f 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c +@@ -852,8 +852,8 @@ static void lookup_events_by_type_and_signal(struct kfd_process *p, + + if (type == KFD_EVENT_TYPE_MEMORY) { + dev_warn(kfd_device, +- "Sending SIGSEGV to HSA Process with PID %d ", +- p->lead_thread->pid); ++ "Sending SIGSEGV to process %d (pasid 0x%x)", ++ p->lead_thread->pid, p->pasid); + send_sig(SIGSEGV, p->lead_thread, 0); + } + +@@ -861,13 +861,13 @@ static void lookup_events_by_type_and_signal(struct kfd_process *p, + if (send_signal) { + if (send_sigterm) { + dev_warn(kfd_device, +- "Sending SIGTERM to HSA Process with PID %d ", +- p->lead_thread->pid); ++ "Sending SIGTERM to process %d (pasid 0x%x)", ++ p->lead_thread->pid, p->pasid); + send_sig(SIGTERM, p->lead_thread, 0); + } else { + dev_err(kfd_device, +- "HSA Process (PID %d) got unhandled exception", +- p->lead_thread->pid); ++ "Process %d (pasid 0x%x) got unhandled exception", ++ p->lead_thread->pid, p->pasid); + } + } + } +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_iommu.c b/drivers/gpu/drm/amd/amdkfd/kfd_iommu.c +index 5f35df23fb18..193e2835bd4d 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_iommu.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_iommu.c +@@ -160,7 +160,7 @@ static void iommu_pasid_shutdown_callback(struct pci_dev *pdev, int pasid) + if (!p) + return; + +- pr_debug("Unbinding process %d from IOMMU\n", pasid); ++ pr_debug("Unbinding process 0x%x from IOMMU\n", pasid); + + mutex_lock(kfd_get_dbgmgr_mutex()); + +@@ -194,7 +194,7 @@ static int iommu_invalid_ppr_cb(struct pci_dev *pdev, int pasid, + struct kfd_dev *dev; + + dev_warn_ratelimited(kfd_device, +- "Invalid PPR device %x:%x.%x pasid %d address 0x%lX flags 0x%X", ++ "Invalid PPR device %x:%x.%x pasid 0x%x address 0x%lX flags 0x%X", + PCI_BUS_NUM(pdev->devfn), + PCI_SLOT(pdev->devfn), + PCI_FUNC(pdev->devfn), +@@ -235,7 +235,7 @@ static int kfd_bind_processes_to_device(struct kfd_dev *kfd) + err = amd_iommu_bind_pasid(kfd->pdev, p->pasid, + p->lead_thread); + if (err < 0) { +- pr_err("Unexpected pasid %d binding failure\n", ++ pr_err("Unexpected pasid 0x%x binding failure\n", + p->pasid); + mutex_unlock(&p->mutex); + break; +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +index 9ac50a4eb294..f856c14a6ed0 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +@@ -813,7 +813,7 @@ struct kfd_process { + /* Use for delayed freeing of kfd_process structure */ + struct rcu_head rcu; + +- unsigned int pasid; ++ uint16_t pasid; + unsigned int doorbell_index; + + /* +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c +index d7e057376d8f..3f061264bae9 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c +@@ -446,7 +446,7 @@ static void kfd_process_destroy_pdds(struct kfd_process *p) + + list_for_each_entry_safe(pdd, temp, &p->per_device_data, + per_device_list) { +- pr_debug("Releasing pdd (topology id %d) for process (pasid %d)\n", ++ pr_debug("Releasing pdd (topology id %d) for process (pasid 0x%x)\n", + pdd->dev->id, p->pasid); + + if (pdd->drm_file) { +@@ -1279,7 +1279,7 @@ static void evict_process_worker(struct work_struct *work) + + p->last_evict_timestamp = get_jiffies_64(); + +- pr_info("Started evicting pasid %d\n", p->pasid); ++ pr_debug("Started evicting pasid 0x%x\n", p->pasid); + ret = kfd_process_evict_queues(p); + if (!ret) { + dma_fence_signal(p->ef); +@@ -1292,9 +1292,9 @@ static void evict_process_worker(struct work_struct *work) + pr_debug("Process %d queues idle, doorbell unmapped\n", + p->pasid); + +- pr_info("Finished evicting pasid %d\n", p->pasid); ++ pr_debug("Finished evicting pasid 0x%x\n", p->pasid); + } else +- pr_err("Failed to evict queues of pasid %d\n", p->pasid); ++ pr_err("Failed to evict queues of pasid 0x%x\n", p->pasid); + trace_kfd_evict_process_worker_end(p, ret ? "Failed" : "Success"); + } + +@@ -1313,7 +1313,7 @@ static void restore_process_worker(struct work_struct *work) + + trace_kfd_restore_process_worker_start(p); + +- pr_info("Started restoring pasid %d\n", p->pasid); ++ pr_debug("Started restoring pasid 0x%x\n", p->pasid); + + /* Setting last_restore_timestamp before successful restoration. + * Otherwise this would have to be set by KGD (restore_process_bos) +@@ -1329,7 +1329,7 @@ static void restore_process_worker(struct work_struct *work) + ret = amdgpu_amdkfd_gpuvm_restore_process_bos(p->kgd_process_info, + &p->ef); + if (ret) { +- pr_info("Failed to restore BOs of pasid %d, retry after %d ms\n", ++ pr_debug("Failed to restore BOs of pasid 0x%x, retry after %d ms\n", + p->pasid, PROCESS_BACK_OFF_TIME_MS); + + ret = queue_delayed_work(kfd_restore_wq, &p->restore_work, +@@ -1344,9 +1344,9 @@ static void restore_process_worker(struct work_struct *work) + ret = kfd_process_restore_queues(p); + trace_kfd_restore_process_worker_end(p, ret ? "Failed" : "Success"); + if (!ret) +- pr_info("Finished restoring pasid %d\n", p->pasid); ++ pr_debug("Finished restoring pasid 0x%x\n", p->pasid); + else +- pr_err("Failed to restore queues of pasid %d\n", p->pasid); ++ pr_err("Failed to restore queues of pasid 0x%x\n", p->pasid); + } + + void kfd_suspend_all_processes(void) +@@ -1360,7 +1360,7 @@ void kfd_suspend_all_processes(void) + cancel_delayed_work_sync(&p->restore_work); + + if (kfd_process_evict_queues(p)) +- pr_err("Failed to suspend process %d\n", p->pasid); ++ pr_err("Failed to suspend process 0x%x\n", p->pasid); + dma_fence_signal(p->ef); + dma_fence_put(p->ef); + p->ef = NULL; +@@ -1443,7 +1443,7 @@ int kfd_debugfs_mqds_by_process(struct seq_file *m, void *data) + int idx = srcu_read_lock(&kfd_processes_srcu); + + hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) { +- seq_printf(m, "Process %d PASID %d:\n", ++ seq_printf(m, "Process %d PASID 0x%x:\n", + p->lead_thread->tgid, p->pasid); + + mutex_lock(&p->mutex); +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +index a594945097a3..227fb0ec8115 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +@@ -53,7 +53,7 @@ static int find_available_queue_slot(struct process_queue_manager *pqm, + pr_debug("The new slot id %lu\n", found); + + if (found >= KFD_MAX_NUM_OF_QUEUES_PER_PROCESS) { +- pr_info("Cannot open more queues for process with pasid %d\n", ++ pr_info("Cannot open more queues for process with pasid 0x%x\n", + pqm->process->pasid); + return -ENOMEM; + } +@@ -298,7 +298,7 @@ int pqm_create_queue(struct process_queue_manager *pqm, + } + + if (retval != 0) { +- pr_err("Pasid %d DQM create queue %d failed. ret %d\n", ++ pr_err("Pasid 0x%x DQM create queue %d failed. ret %d\n", + pqm->process->pasid, type, retval); + goto err_create_queue; + } +@@ -378,7 +378,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid) + dqm = pqn->q->device->dqm; + retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q); + if (retval) { +- pr_err("Pasid %d destroy queue %d failed, ret %d\n", ++ pr_err("Pasid 0x%x destroy queue %d failed, ret %d\n", + pqm->process->pasid, + pqn->q->properties.queue_id, retval); + if (retval != -ETIME) +-- +2.17.1 + |