| .. | .. |
|---|
| 45 | 45 | } |
|---|
| 46 | 46 | |
|---|
| 47 | 47 | static int dbgdev_diq_submit_ib(struct kfd_dbgdev *dbgdev, |
|---|
| 48 | | - unsigned int pasid, uint64_t vmid0_address, |
|---|
| 48 | + u32 pasid, uint64_t vmid0_address, |
|---|
| 49 | 49 | uint32_t *packet_buff, size_t size_in_bytes) |
|---|
| 50 | 50 | { |
|---|
| 51 | 51 | struct pm4__release_mem *rm_packet; |
|---|
| .. | .. |
|---|
| 72 | 72 | * The receive packet buff will be sitting on the Indirect Buffer |
|---|
| 73 | 73 | * and in the PQ we put the IB packet + sync packet(s). |
|---|
| 74 | 74 | */ |
|---|
| 75 | | - status = kq->ops.acquire_packet_buffer(kq, |
|---|
| 75 | + status = kq_acquire_packet_buffer(kq, |
|---|
| 76 | 76 | pq_packets_size_in_bytes / sizeof(uint32_t), |
|---|
| 77 | 77 | &ib_packet_buff); |
|---|
| 78 | 78 | if (status) { |
|---|
| 79 | | - pr_err("acquire_packet_buffer failed\n"); |
|---|
| 79 | + pr_err("kq_acquire_packet_buffer failed\n"); |
|---|
| 80 | 80 | return status; |
|---|
| 81 | 81 | } |
|---|
| 82 | 82 | |
|---|
| .. | .. |
|---|
| 115 | 115 | |
|---|
| 116 | 116 | if (status) { |
|---|
| 117 | 117 | pr_err("Failed to allocate GART memory\n"); |
|---|
| 118 | | - kq->ops.rollback_packet(kq); |
|---|
| 118 | + kq_rollback_packet(kq); |
|---|
| 119 | 119 | return status; |
|---|
| 120 | 120 | } |
|---|
| 121 | 121 | |
|---|
| .. | .. |
|---|
| 151 | 151 | |
|---|
| 152 | 152 | rm_packet->data_lo = QUEUESTATE__ACTIVE; |
|---|
| 153 | 153 | |
|---|
| 154 | | - kq->ops.submit_packet(kq); |
|---|
| 154 | + kq_submit_packet(kq); |
|---|
| 155 | 155 | |
|---|
| 156 | 156 | /* Wait till CP writes sync code: */ |
|---|
| 157 | 157 | status = amdkfd_fence_wait_timeout( |
|---|
| 158 | | - (unsigned int *) rm_state, |
|---|
| 158 | + rm_state, |
|---|
| 159 | 159 | QUEUESTATE__ACTIVE, 1500); |
|---|
| 160 | 160 | |
|---|
| 161 | 161 | kfd_gtt_sa_free(dbgdev->dev, mem_obj); |
|---|
| .. | .. |
|---|
| 185 | 185 | properties.type = KFD_QUEUE_TYPE_DIQ; |
|---|
| 186 | 186 | |
|---|
| 187 | 187 | status = pqm_create_queue(dbgdev->pqm, dbgdev->dev, NULL, |
|---|
| 188 | | - &properties, &qid); |
|---|
| 188 | + &properties, &qid, NULL); |
|---|
| 189 | 189 | |
|---|
| 190 | 190 | if (status) { |
|---|
| 191 | 191 | pr_err("Failed to create DIQ\n"); |
|---|
| .. | .. |
|---|
| 761 | 761 | { |
|---|
| 762 | 762 | int status = 0; |
|---|
| 763 | 763 | unsigned int vmid; |
|---|
| 764 | + uint16_t queried_pasid; |
|---|
| 764 | 765 | union SQ_CMD_BITS reg_sq_cmd; |
|---|
| 765 | 766 | union GRBM_GFX_INDEX_BITS reg_gfx_index; |
|---|
| 766 | 767 | struct kfd_process_device *pdd; |
|---|
| .. | .. |
|---|
| 782 | 783 | */ |
|---|
| 783 | 784 | |
|---|
| 784 | 785 | for (vmid = first_vmid_to_scan; vmid <= last_vmid_to_scan; vmid++) { |
|---|
| 785 | | - if (dev->kfd2kgd->get_atc_vmid_pasid_mapping_valid |
|---|
| 786 | | - (dev->kgd, vmid)) { |
|---|
| 787 | | - if (dev->kfd2kgd->get_atc_vmid_pasid_mapping_pasid |
|---|
| 788 | | - (dev->kgd, vmid) == p->pasid) { |
|---|
| 789 | | - pr_debug("Killing wave fronts of vmid %d and pasid %d\n", |
|---|
| 790 | | - vmid, p->pasid); |
|---|
| 791 | | - break; |
|---|
| 792 | | - } |
|---|
| 786 | + status = dev->kfd2kgd->get_atc_vmid_pasid_mapping_info |
|---|
| 787 | + (dev->kgd, vmid, &queried_pasid); |
|---|
| 788 | + |
|---|
| 789 | + if (status && queried_pasid == p->pasid) { |
|---|
| 790 | + pr_debug("Killing wave fronts of vmid %d and pasid 0x%x\n", |
|---|
| 791 | + vmid, p->pasid); |
|---|
| 792 | + break; |
|---|
| 793 | 793 | } |
|---|
| 794 | 794 | } |
|---|
| 795 | 795 | |
|---|
| 796 | 796 | if (vmid > last_vmid_to_scan) { |
|---|
| 797 | | - pr_err("Didn't find vmid for pasid %d\n", p->pasid); |
|---|
| 797 | + pr_err("Didn't find vmid for pasid 0x%x\n", p->pasid); |
|---|
| 798 | 798 | return -EFAULT; |
|---|
| 799 | 799 | } |
|---|
| 800 | 800 | |
|---|