| /linux/drivers/misc/ocxl/ |
| H A D | trace.h | 36 TP_PROTO(int pasid, unsigned long pidr), 37 TP_ARGS(pasid, pidr), 40 __field(int, pasid) 45 __entry->pasid = pasid; 50 __entry->pasid, 56 TP_PROTO(int pasid, unsigned long pidr), 57 TP_ARGS(pasid, pidr), 60 __field(int, pasid) 65 __entry->pasid = pasid; 70 __entry->pasid, [all …]
|
| H A D | context.c | 10 int pasid; in ocxl_context_alloc() local 19 pasid = idr_alloc(&afu->contexts_idr, ctx, afu->pasid_base, in ocxl_context_alloc() 21 if (pasid < 0) { in ocxl_context_alloc() 24 return pasid; in ocxl_context_alloc() 29 ctx->pasid = pasid; in ocxl_context_alloc() 86 rc = ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid, pidr, ctx->tidr, in ocxl_context_attach() 129 pasid_off = ctx->pasid - ctx->afu->pasid_base; in map_pp_mmio() 148 ctx->pasid, vmf->address, offset); in ocxl_mmap_fault() 231 rc = ocxl_config_terminate_pasid(dev, afu_control_pos, ctx->pasid); in ocxl_context_detach() 233 trace_ocxl_terminate_pasid(ctx->pasid, rc); in ocxl_context_detach() [all …]
|
| H A D | link.c | 538 int ocxl_link_add_pe(void *link_handle, int pasid, u32 pidr, u32 tidr, in ocxl_link_add_pe() argument 550 if (pasid > SPA_PASID_MAX) in ocxl_link_add_pe() 554 pe_handle = pasid & SPA_PE_MASK; in ocxl_link_add_pe() 576 pe->pasid = cpu_to_be32(pasid << (31 - 19)); in ocxl_link_add_pe() 595 trace_ocxl_init_mmu_notifier(pasid, mm->context.id); in ocxl_link_add_pe() 624 trace_ocxl_context_add(current->pid, spa->spa_mem, pasid, pidr, tidr); in ocxl_link_add_pe() 631 int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid) in ocxl_link_update_pe() argument 638 if (pasid > SPA_PASID_MAX) in ocxl_link_update_pe() 641 pe_handle = pasid & SPA_PE_MASK; in ocxl_link_update_pe() 667 int ocxl_link_remove_pe(void *link_handle, int pasid) in ocxl_link_remove_pe() argument [all …]
|
| /linux/drivers/iommu/intel/ |
| H A D | cache.c | 25 ioasid_t pasid, enum cache_tag_type type) in cache_tage_match() argument 30 if (tag->domain_id != domain_id || tag->pasid != pasid) in cache_tage_match() 44 ioasid_t pasid, enum cache_tag_type type) in cache_tag_assign() argument 59 tag->pasid = pasid; in cache_tag_assign() 70 if (cache_tage_match(temp, did, iommu, dev, pasid, type)) { in cache_tag_assign() 94 struct device *dev, ioasid_t pasid, in cache_tag_unassign() argument 104 if (cache_tage_match(tag, did, iommu, dev, pasid, type)) { in cache_tag_unassign() 136 struct device *dev, ioasid_t pasid) in __cache_tag_assign_domain() argument 145 ret = cache_tag_assign(domain, did, dev, pasid, CACHE_TAG_IOTLB); in __cache_tag_assign_domain() 149 ret = cache_tag_assign(domain, did, dev, pasid, CACHE_TAG_DEVTLB); in __cache_tag_assign_domain() [all …]
|
| H A D | pasid.c | 129 static struct pasid_entry *intel_pasid_get_entry(struct device *dev, u32 pasid) in intel_pasid_get_entry() argument 138 if (WARN_ON(!pasid_table || pasid >= intel_pasid_get_dev_max_id(dev))) in intel_pasid_get_entry() 143 dir_index = pasid >> PASID_PDE_SHIFT; in intel_pasid_get_entry() 144 index = pasid & PASID_PTE_MASK; in intel_pasid_get_entry() 181 intel_pasid_clear_entry(struct device *dev, u32 pasid, bool fault_ignore) in intel_pasid_clear_entry() argument 185 pe = intel_pasid_get_entry(dev, pasid); in intel_pasid_clear_entry() 197 u16 did, u32 pasid) in pasid_cache_invalidation_with_pasid() argument 202 QI_PC_PASID(pasid) | QI_PC_TYPE; in pasid_cache_invalidation_with_pasid() 212 struct device *dev, u32 pasid) in devtlb_invalidation_with_pasid() argument 234 if (pasid == IOMMU_NO_PASID) in devtlb_invalidation_with_pasid() [all …]
|
| H A D | pasid.h | 293 phys_addr_t fsptptr, u32 pasid, u16 did, 297 struct device *dev, u32 pasid); 299 struct device *dev, u32 pasid, 302 struct device *dev, u32 pasid); 304 u32 pasid, struct dmar_domain *domain); 307 u32 pasid, u16 did, u16 old_did, int flags); 311 u32 pasid); 314 u32 pasid); 316 struct device *dev, u32 pasid, 320 struct device *dev, u32 pasid, [all …]
|
| H A D | trace.h | 101 __field(u32, pasid) 109 __entry->pasid = tag->pasid; 119 __entry->domain_id, __entry->pasid, __entry->users 142 __field(u32, pasid) 154 __entry->pasid = tag->pasid; 162 __get_str(iommu), __get_str(dev), __entry->pasid,
|
| H A D | nested.c | 136 struct device *dev, ioasid_t pasid, in domain_setup_nested() argument 140 return intel_pasid_setup_nested(iommu, dev, pasid, domain); in domain_setup_nested() 141 return intel_pasid_replace_nested(iommu, dev, pasid, in domain_setup_nested() 147 struct device *dev, ioasid_t pasid, in intel_nested_set_dev_pasid() argument 166 dev_pasid = domain_add_dev_pasid(domain, dev, pasid); in intel_nested_set_dev_pasid() 174 ret = domain_setup_nested(iommu, dmar_domain, dev, pasid, old); in intel_nested_set_dev_pasid() 178 domain_remove_dev_pasid(old, dev, pasid); in intel_nested_set_dev_pasid() 185 domain_remove_dev_pasid(domain, dev, pasid); in intel_nested_set_dev_pasid()
|
| H A D | iommu.h | 426 #define QI_PC_PASID(pasid) (((u64)pasid) << 32) argument 438 #define QI_EIOTLB_PASID(pasid) (((u64)pasid) << 32) argument 459 #define QI_PGRP_PASID(pasid) (((u64)(pasid)) << 32) argument 775 ioasid_t pasid; member 981 context_set_sm_rid2pasid(struct context_entry *context, unsigned long pasid) in context_set_sm_rid2pasid() argument 983 context->hi |= pasid & ((1 << 20) - 1); in context_set_sm_rid2pasid() 1066 static inline void qi_desc_piotlb(u16 did, u32 pasid, u64 addr, in qi_desc_piotlb() argument 1071 desc->qw0 = QI_EIOTLB_PASID(pasid) | in qi_desc_piotlb() 1083 desc->qw0 = QI_EIOTLB_PASID(pasid) | in qi_desc_piotlb() 1093 static inline void qi_desc_dev_iotlb_pasid(u16 sid, u16 pfsid, u32 pasid, in qi_desc_dev_iotlb_pasid() argument [all …]
|
| H A D | svm.c | 93 dev_pasid->pasid, true); in intel_mm_release() 149 struct device *dev, ioasid_t pasid, in intel_svm_set_dev_pasid() argument 163 dev_pasid = domain_add_dev_pasid(domain, dev, pasid); in intel_svm_set_dev_pasid() 174 ret = __domain_setup_first_level(iommu, dev, pasid, in intel_svm_set_dev_pasid() 180 domain_remove_dev_pasid(old, dev, pasid); in intel_svm_set_dev_pasid() 186 domain_remove_dev_pasid(domain, dev, pasid); in intel_svm_set_dev_pasid()
|
| /linux/drivers/gpu/drm/amd/amdkfd/ |
| H A D | cik_event_interrupt.c | 38 uint16_t pasid; in cik_event_interrupt_isr() local 54 ret = f2g->get_atc_vmid_pasid_mapping_info(dev->adev, vmid, &pasid); in cik_event_interrupt_isr() 58 tmp_ihre->ring_id |= pasid << 16; in cik_event_interrupt_isr() 60 return ret && (pasid != 0) && in cik_event_interrupt_isr() 72 pasid = (ihre->ring_id & 0xffff0000) >> 16; in cik_event_interrupt_isr() 73 if (WARN_ONCE(pasid == 0, "FW bug: No PASID in KFD interrupt")) in cik_event_interrupt_isr() 94 u32 pasid = (ihre->ring_id & 0xffff0000) >> 16; in cik_event_interrupt_wq() local 96 if (pasid == 0) in cik_event_interrupt_wq() 100 kfd_signal_event_interrupt(pasid, context_id, 28); in cik_event_interrupt_wq() 102 kfd_signal_event_interrupt(pasid, context_id, 28); in cik_event_interrupt_wq() [all …]
|
| /linux/drivers/iommu/amd/ |
| H A D | pasid.c | 24 ioasid_t pasid) in is_pasid_valid() argument 26 if (pasid > 0 && pasid < dev_data->max_pasids) in is_pasid_valid() 35 amd_iommu_clear_gcr3(pdom_dev_data->dev_data, pdom_dev_data->pasid); in remove_dev_pasid() 43 struct device *dev, ioasid_t pasid) in remove_pdom_dev_pasid() argument 52 pdom_dev_data->pasid == pasid) { in remove_pdom_dev_pasid() 73 pdom_dev_data->pasid, in sva_arch_invalidate_secondary_tlbs() 103 struct device *dev, ioasid_t pasid, in iommu_sva_set_dev_pasid() argument 116 if (!is_pasid_valid(dev_data, pasid)) in iommu_sva_set_dev_pasid() 128 pdom_dev_data->pasid = pasid; in iommu_sva_set_dev_pasid() 134 ret = amd_iommu_set_gcr3(dev_data, pasid, in iommu_sva_set_dev_pasid() [all …]
|
| /linux/drivers/iommu/iommufd/ |
| H A D | device.c | 353 ioasid_t pasid) in iommufd_group_device_num() argument 362 attach = xa_load(&igroup->pasid_attach, pasid); in iommufd_group_device_num() 406 iommufd_group_first_attach(struct iommufd_group *igroup, ioasid_t pasid) in iommufd_group_first_attach() argument 409 return !xa_load(&igroup->pasid_attach, pasid); in iommufd_group_first_attach() 441 ioasid_t pasid) in iommufd_device_is_attached() argument 445 attach = xa_load(&idev->igroup->pasid_attach, pasid); in iommufd_device_is_attached() 451 ioasid_t pasid) in iommufd_hwpt_pasid_compat() argument 457 if (pasid == IOMMU_NO_PASID) { in iommufd_hwpt_pasid_compat() 499 ioasid_t pasid) in iommufd_hwpt_attach_device() argument 507 rc = iommufd_hwpt_pasid_compat(hwpt, idev, pasid); in iommufd_hwpt_attach_device() [all …]
|
| H A D | iommufd_test.h | 158 __u32 pasid; member 171 __u32 pasid; member 176 __u32 pasid; member 181 __u32 pasid; member 185 __u32 pasid; member
|
| /linux/drivers/vfio/ |
| H A D | iommufd.c | 133 int pasid; in vfio_iommufd_physical_unbind() local 137 while ((pasid = ida_find_first(&vdev->pasids)) >= 0) { in vfio_iommufd_physical_unbind() 138 iommufd_device_detach(vdev->iommufd_device, pasid); in vfio_iommufd_physical_unbind() 139 ida_free(&vdev->pasids, pasid); in vfio_iommufd_physical_unbind() 186 u32 pasid, u32 *pt_id) in vfio_iommufd_physical_pasid_attach_ioas() argument 195 if (ida_exists(&vdev->pasids, pasid)) in vfio_iommufd_physical_pasid_attach_ioas() 197 pasid, pt_id); in vfio_iommufd_physical_pasid_attach_ioas() 199 rc = ida_alloc_range(&vdev->pasids, pasid, pasid, GFP_KERNEL); in vfio_iommufd_physical_pasid_attach_ioas() 203 rc = iommufd_device_attach(vdev->iommufd_device, pasid, pt_id); in vfio_iommufd_physical_pasid_attach_ioas() 205 ida_free(&vdev->pasids, pasid); in vfio_iommufd_physical_pasid_attach_ioas() [all …]
|
| /linux/drivers/dma/idxd/ |
| H A D | cdev.c | 44 unsigned int pasid; member 54 static void idxd_cdev_evl_drain_pasid(struct idxd_wq *wq, u32 pasid); 129 idxd_device_drain_pasid(idxd, ctx->pasid); in idxd_file_dev_release() 142 idxd_cdev_evl_drain_pasid(wq, ctx->pasid); in idxd_file_dev_release() 194 ptr = xa_cmpxchg(&wq->upasid_xa, ctx->pasid, ctx, NULL, GFP_KERNEL); in idxd_xa_pasid_remove() 197 ctx->pasid); in idxd_xa_pasid_remove() 201 void idxd_user_counter_increment(struct idxd_wq *wq, u32 pasid, int index) in idxd_user_counter_increment() argument 209 ctx = xa_load(&wq->upasid_xa, pasid); in idxd_user_counter_increment() 226 unsigned int pasid; in idxd_cdev_open() local 258 pasid = iommu_sva_get_pasid(sva); in idxd_cdev_open() [all …]
|
| /linux/drivers/iommu/ |
| H A D | iommu-sva.c | 22 ioasid_t pasid; in iommu_alloc_mm_data() local 32 if (iommu_mm->pasid >= dev->iommu->max_pasids) in iommu_alloc_mm_data() 41 pasid = iommu_alloc_global_pasid(dev); in iommu_alloc_mm_data() 42 if (pasid == IOMMU_PASID_INVALID) { in iommu_alloc_mm_data() 46 iommu_mm->pasid = pasid; in iommu_alloc_mm_data() 93 attach_handle = iommu_attach_handle_get(group, iommu_mm->pasid, IOMMU_DOMAIN_SVA); in iommu_sva_bind_device() 118 ret = iommu_attach_device_pasid(domain, dev, iommu_mm->pasid, in iommu_sva_bind_device() 133 ret = iommu_attach_device_pasid(domain, dev, iommu_mm->pasid, in iommu_sva_bind_device() 181 iommu_detach_device_pasid(domain, dev, iommu_mm->pasid); in iommu_sva_unbind_device() 213 iommu_free_global_pasid(iommu_mm->pasid); in mm_pasid_drop()
|
| H A D | io-pgfault.c | 126 fault->prm.pasid, 0); in find_fault_handler() 163 .pasid = fault->prm.pasid, in iopf_error_response() 269 fault->prm.pasid); in iommu_report_device_fault() 330 .pasid = iopf->fault.prm.pasid, in iopf_group_response() 474 .pasid = iopf->fault.prm.pasid, in iopf_queue_remove_device()
|
| /linux/arch/csky/mm/ |
| H A D | asid.c | 79 static u64 new_context(struct asid_info *info, atomic64_t *pasid, in new_context() argument 83 u64 asid = atomic64_read(pasid); in new_context() 137 void asid_new_context(struct asid_info *info, atomic64_t *pasid, in asid_new_context() argument 145 asid = atomic64_read(pasid); in asid_new_context() 147 asid = new_context(info, pasid, mm); in asid_new_context() 148 atomic64_set(pasid, asid); in asid_new_context()
|
| /linux/arch/csky/include/asm/ |
| H A D | asid.h | 33 void asid_new_context(struct asid_info *info, atomic64_t *pasid, 43 atomic64_t *pasid, unsigned int cpu, in asid_check_context() argument 48 asid = atomic64_read(pasid); in asid_check_context() 71 asid_new_context(info, pasid, cpu, mm); in asid_check_context()
|
| /linux/tools/testing/selftests/iommu/ |
| H A D | iommufd_utils.h | 927 static int _test_cmd_trigger_iopf(int fd, __u32 device_id, __u32 pasid, in _test_cmd_trigger_iopf() argument 935 .pasid = pasid, in _test_cmd_trigger_iopf() 967 #define test_cmd_trigger_iopf_pasid(device_id, pasid, fault_fd) \ argument 969 pasid, fault_fd)) 1174 static int _test_cmd_pasid_attach(int fd, __u32 stdev_id, __u32 pasid, in _test_cmd_pasid_attach() argument 1182 .pasid = pasid, in _test_cmd_pasid_attach() 1191 #define test_cmd_pasid_attach(pasid, hwpt_id) \ argument 1193 pasid, hwpt_id)) 1195 #define test_err_pasid_attach(_errno, pasid, hwpt_id) \ argument 1198 pasid, hwpt_id)) [all …]
|
| H A D | iommufd_fail_nth.c | 213 uint32_t pasid; in FIXTURE() local 221 self->pasid = 0; //test should use a non-zero value in FIXTURE_SETUP() 233 if (self->pasid && self->stdev_id) in FIXTURE_TEARDOWN() 234 _test_cmd_pasid_detach(self->fd, self->stdev_id, self->pasid); in FIXTURE_TEARDOWN() 728 self->pasid = 200; in TEST_FAIL_NTH() 731 self->pasid, hwpt_id)) { in TEST_FAIL_NTH() 732 self->pasid = 0; in TEST_FAIL_NTH() 737 self->pasid, test_hwpt_id)) in TEST_FAIL_NTH() 740 if (_test_cmd_pasid_detach(self->fd, self->stdev_id, self->pasid)) in TEST_FAIL_NTH() 743 self->pasid = 0; in TEST_FAIL_NTH()
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-driver-uio_pci_sva-pasid | 1 What: /sys/bus/pci/drivers/uio_pci_sva/<pci_dev>/pasid 26 f = fopen("/sys/.../pasid", "r"); 27 fscanf(f, "%d", &pasid); 29 map[REG_PASID_OFFSET] = pasid;
|
| /linux/drivers/gpu/drm/amd/amdgpu/ |
| H A D | amdgpu_gmc.h | 151 void (*flush_gpu_tlb_pasid)(struct amdgpu_device *adev, uint16_t pasid, 159 unsigned pasid); 363 …e amdgpu_gmc_emit_pasid_mapping(r, vmid, pasid) (r)->adev->gmc.gmc_funcs->emit_pasid_mapping((r), … argument 426 uint16_t pasid, uint64_t timestamp); 428 uint16_t pasid); 435 int amdgpu_gmc_flush_gpu_tlb_pasid(struct amdgpu_device *adev, uint16_t pasid,
|
| /linux/include/linux/ |
| H A D | vfio.h | 125 int (*pasid_attach_ioas)(struct vfio_device *vdev, u32 pasid, 127 void (*pasid_detach_ioas)(struct vfio_device *vdev, u32 pasid); 157 u32 pasid, u32 *pt_id); 159 u32 pasid); 188 ((int (*)(struct vfio_device *vdev, u32 pasid, u32 *pt_id)) NULL) 190 ((void (*)(struct vfio_device *vdev, u32 pasid)) NULL)
|