aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3971-drm-amdkfd-Use-hex-print-format-for-pasid.patch
diff options
context:
space:
mode:
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.patch377
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
+