Symbol: hwpt
drivers/iommu/iommufd/device.c
1057
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/device.c
1059
hwpt = iommufd_hw_pagetable_detach(idev, pasid);
drivers/iommu/iommufd/device.c
1060
if (!hwpt)
drivers/iommu/iommufd/device.c
22
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/device.c
449
static int iommufd_hwpt_pasid_compat(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
460
if (!hwpt->pasid_compat &&
drivers/iommu/iommufd/device.c
467
if (!hwpt->pasid_compat)
drivers/iommu/iommufd/device.c
471
if (attach && attach->hwpt && !attach->hwpt->pasid_compat)
drivers/iommu/iommufd/device.c
478
static bool iommufd_hwpt_compatible_device(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
483
if (!hwpt->fault || !dev_is_pci(idev->dev))
drivers/iommu/iommufd/device.c
497
static int iommufd_hwpt_attach_device(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
504
if (!iommufd_hwpt_compatible_device(hwpt, idev))
drivers/iommu/iommufd/device.c
507
rc = iommufd_hwpt_pasid_compat(hwpt, idev, pasid);
drivers/iommu/iommufd/device.c
517
rc = iommu_attach_group_handle(hwpt->domain, idev->igroup->group,
drivers/iommu/iommufd/device.c
520
rc = iommu_attach_device_pasid(hwpt->domain, idev->dev, pasid,
drivers/iommu/iommufd/device.c
545
static void iommufd_hwpt_detach_device(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
553
iommu_detach_group_handle(hwpt->domain, idev->igroup->group);
drivers/iommu/iommufd/device.c
555
iommu_detach_device_pasid(hwpt->domain, idev->dev, pasid);
drivers/iommu/iommufd/device.c
557
iommufd_auto_response_faults(hwpt, handle);
drivers/iommu/iommufd/device.c
563
struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
569
if (!iommufd_hwpt_compatible_device(hwpt, idev))
drivers/iommu/iommufd/device.c
572
rc = iommufd_hwpt_pasid_compat(hwpt, idev, pasid);
drivers/iommu/iommufd/device.c
585
hwpt->domain, &handle->handle);
drivers/iommu/iommufd/device.c
587
rc = iommu_replace_device_pasid(hwpt->domain, idev->dev,
drivers/iommu/iommufd/device.c
592
iommufd_auto_response_faults(hwpt, old_handle);
drivers/iommu/iommufd/device.c
602
int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/device.c
605
struct iommufd_hwpt_paging *hwpt_paging = find_hwpt_paging(hwpt);
drivers/iommu/iommufd/device.c
630
old_hwpt = attach->hwpt;
drivers/iommu/iommufd/device.c
639
if (old_hwpt && old_hwpt != hwpt) {
drivers/iommu/iommufd/device.c
658
rc = iommufd_hwpt_attach_device(hwpt, idev, pasid);
drivers/iommu/iommufd/device.c
661
attach->hwpt = hwpt;
drivers/iommu/iommufd/device.c
665
refcount_inc(&hwpt->obj.users);
drivers/iommu/iommufd/device.c
691
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/device.c
701
hwpt = attach->hwpt;
drivers/iommu/iommufd/device.c
702
hwpt_paging = find_hwpt_paging(hwpt);
drivers/iommu/iommufd/device.c
706
iommufd_hwpt_detach_device(hwpt, idev, pasid);
drivers/iommu/iommufd/device.c
714
iommufd_hw_pagetable_put(idev->ictx, hwpt);
drivers/iommu/iommufd/device.c
717
return hwpt;
drivers/iommu/iommufd/device.c
722
struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/device.c
726
rc = iommufd_hw_pagetable_attach(hwpt, idev, pasid);
drivers/iommu/iommufd/device.c
760
old_hwpt_paging = find_hwpt_paging(attach->hwpt);
drivers/iommu/iommufd/device.c
782
struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/device.c
784
struct iommufd_hwpt_paging *hwpt_paging = find_hwpt_paging(hwpt);
drivers/iommu/iommufd/device.c
801
old_hwpt = attach->hwpt;
drivers/iommu/iommufd/device.c
810
if (hwpt == old_hwpt) {
drivers/iommu/iommufd/device.c
821
rc = iommufd_hwpt_replace_device(idev, pasid, hwpt, old_hwpt);
drivers/iommu/iommufd/device.c
830
attach->hwpt = hwpt;
drivers/iommu/iommufd/device.c
837
refcount_add(num_devices, &hwpt->obj.users);
drivers/iommu/iommufd/device.c
877
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/device.c
889
hwpt = &hwpt_paging->common;
drivers/iommu/iommufd/device.c
890
if (!iommufd_lock_obj(&hwpt->obj))
drivers/iommu/iommufd/device.c
892
destroy_hwpt = (*do_attach)(idev, pasid, hwpt);
drivers/iommu/iommufd/device.c
894
iommufd_put_object(idev->ictx, &hwpt->obj);
drivers/iommu/iommufd/device.c
905
*pt_id = hwpt->obj.id;
drivers/iommu/iommufd/device.c
906
iommufd_put_object(idev->ictx, &hwpt->obj);
drivers/iommu/iommufd/device.c
916
hwpt = &hwpt_paging->common;
drivers/iommu/iommufd/device.c
919
destroy_hwpt = (*do_attach)(idev, pasid, hwpt);
drivers/iommu/iommufd/device.c
927
*pt_id = hwpt->obj.id;
drivers/iommu/iommufd/device.c
929
iommufd_object_finalize(idev->ictx, &hwpt->obj);
drivers/iommu/iommufd/device.c
934
iommufd_object_abort_and_destroy(idev->ictx, &hwpt->obj);
drivers/iommu/iommufd/device.c
954
struct iommufd_hw_pagetable *hwpt =
drivers/iommu/iommufd/device.c
957
destroy_hwpt = (*do_attach)(idev, pasid, hwpt);
drivers/iommu/iommufd/eventq.c
19
void iommufd_auto_response_faults(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/eventq.c
22
struct iommufd_fault *fault = hwpt->fault;
drivers/iommu/iommufd/eventq.c
457
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/eventq.c
460
hwpt = group->attach_handle->domain->iommufd_hwpt;
drivers/iommu/iommufd/eventq.c
461
fault = hwpt->fault;
drivers/iommu/iommufd/hw_pagetable.c
11
static void __iommufd_hwpt_destroy(struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/hw_pagetable.c
119
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/hw_pagetable.c
13
if (hwpt->domain)
drivers/iommu/iommufd/hw_pagetable.c
139
hwpt = &hwpt_paging->common;
drivers/iommu/iommufd/hw_pagetable.c
14
iommu_domain_free(hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
140
hwpt->pasid_compat = flags & IOMMU_HWPT_ALLOC_PASID;
drivers/iommu/iommufd/hw_pagetable.c
149
hwpt->domain = ops->domain_alloc_paging_flags(idev->dev,
drivers/iommu/iommufd/hw_pagetable.c
151
if (IS_ERR(hwpt->domain)) {
drivers/iommu/iommufd/hw_pagetable.c
152
rc = PTR_ERR(hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
153
hwpt->domain = NULL;
drivers/iommu/iommufd/hw_pagetable.c
156
hwpt->domain->owner = ops;
drivers/iommu/iommufd/hw_pagetable.c
158
hwpt->domain = iommu_paging_domain_alloc(idev->dev);
drivers/iommu/iommufd/hw_pagetable.c
159
if (IS_ERR(hwpt->domain)) {
drivers/iommu/iommufd/hw_pagetable.c
16
if (hwpt->fault)
drivers/iommu/iommufd/hw_pagetable.c
160
rc = PTR_ERR(hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
161
hwpt->domain = NULL;
drivers/iommu/iommufd/hw_pagetable.c
165
hwpt->domain->iommufd_hwpt = hwpt;
drivers/iommu/iommufd/hw_pagetable.c
166
hwpt->domain->cookie_type = IOMMU_COOKIE_IOMMUFD;
drivers/iommu/iommufd/hw_pagetable.c
17
refcount_dec(&hwpt->fault->common.obj.users);
drivers/iommu/iommufd/hw_pagetable.c
195
rc = iommufd_hw_pagetable_attach(hwpt, idev, pasid);
drivers/iommu/iommufd/hw_pagetable.c
200
rc = iopt_table_add_domain(&ioas->iopt, hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
210
iommufd_object_abort_and_destroy(ictx, &hwpt->obj);
drivers/iommu/iommufd/hw_pagetable.c
234
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/hw_pagetable.c
248
hwpt = &hwpt_nested->common;
drivers/iommu/iommufd/hw_pagetable.c
249
hwpt->pasid_compat = flags & IOMMU_HWPT_ALLOC_PASID;
drivers/iommu/iommufd/hw_pagetable.c
254
hwpt->domain = ops->domain_alloc_nested(
drivers/iommu/iommufd/hw_pagetable.c
257
if (IS_ERR(hwpt->domain)) {
drivers/iommu/iommufd/hw_pagetable.c
258
rc = PTR_ERR(hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
259
hwpt->domain = NULL;
drivers/iommu/iommufd/hw_pagetable.c
262
hwpt->domain->owner = ops;
drivers/iommu/iommufd/hw_pagetable.c
263
hwpt->domain->iommufd_hwpt = hwpt;
drivers/iommu/iommufd/hw_pagetable.c
264
hwpt->domain->cookie_type = IOMMU_COOKIE_IOMMUFD;
drivers/iommu/iommufd/hw_pagetable.c
266
if (WARN_ON_ONCE(hwpt->domain->type != IOMMU_DOMAIN_NESTED)) {
drivers/iommu/iommufd/hw_pagetable.c
273
iommufd_object_abort_and_destroy(ictx, &hwpt->obj);
drivers/iommu/iommufd/hw_pagetable.c
291
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/hw_pagetable.c
305
hwpt = &hwpt_nested->common;
drivers/iommu/iommufd/hw_pagetable.c
306
hwpt->pasid_compat = flags & IOMMU_HWPT_ALLOC_PASID;
drivers/iommu/iommufd/hw_pagetable.c
310
hwpt_nested->parent = viommu->hwpt;
drivers/iommu/iommufd/hw_pagetable.c
312
hwpt->domain = viommu->ops->alloc_domain_nested(
drivers/iommu/iommufd/hw_pagetable.c
314
if (IS_ERR(hwpt->domain)) {
drivers/iommu/iommufd/hw_pagetable.c
315
rc = PTR_ERR(hwpt->domain);
drivers/iommu/iommufd/hw_pagetable.c
316
hwpt->domain = NULL;
drivers/iommu/iommufd/hw_pagetable.c
319
hwpt->domain->iommufd_hwpt = hwpt;
drivers/iommu/iommufd/hw_pagetable.c
320
hwpt->domain->owner = viommu->iommu_dev->ops;
drivers/iommu/iommufd/hw_pagetable.c
321
hwpt->domain->cookie_type = IOMMU_COOKIE_IOMMUFD;
drivers/iommu/iommufd/hw_pagetable.c
323
if (WARN_ON_ONCE(hwpt->domain->type != IOMMU_DOMAIN_NESTED)) {
drivers/iommu/iommufd/hw_pagetable.c
330
iommufd_object_abort_and_destroy(viommu->ictx, &hwpt->obj);
drivers/iommu/iommufd/hw_pagetable.c
342
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/hw_pagetable.c
376
hwpt = &hwpt_paging->common;
drivers/iommu/iommufd/hw_pagetable.c
389
hwpt = &hwpt_nested->common;
drivers/iommu/iommufd/hw_pagetable.c
405
hwpt = &hwpt_nested->common;
drivers/iommu/iommufd/hw_pagetable.c
419
hwpt->fault = fault;
drivers/iommu/iommufd/hw_pagetable.c
420
hwpt->domain->iopf_handler = iommufd_fault_iopf_handler;
drivers/iommu/iommufd/hw_pagetable.c
425
cmd->out_hwpt_id = hwpt->obj.id;
drivers/iommu/iommufd/hw_pagetable.c
429
iommufd_object_finalize(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/hw_pagetable.c
433
iommufd_object_abort_and_destroy(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/hw_pagetable.c
521
struct iommufd_hw_pagetable *hwpt =
drivers/iommu/iommufd/hw_pagetable.c
524
if (!hwpt->domain->ops ||
drivers/iommu/iommufd/hw_pagetable.c
525
!hwpt->domain->ops->cache_invalidate_user) {
drivers/iommu/iommufd/hw_pagetable.c
529
rc = hwpt->domain->ops->cache_invalidate_user(hwpt->domain,
drivers/iommu/iommufd/iommufd_private.h
387
static inline bool hwpt_is_paging(struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/iommufd_private.h
389
return hwpt->obj.type == IOMMUFD_OBJ_HWPT_PAGING;
drivers/iommu/iommufd/iommufd_private.h
393
to_hwpt_paging(struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/iommufd_private.h
395
return container_of(hwpt, struct iommufd_hwpt_paging, common);
drivers/iommu/iommufd/iommufd_private.h
399
to_hwpt_nested(struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/iommufd_private.h
401
return container_of(hwpt, struct iommufd_hwpt_nested, common);
drivers/iommu/iommufd/iommufd_private.h
405
find_hwpt_paging(struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/iommufd_private.h
407
switch (hwpt->obj.type) {
drivers/iommu/iommufd/iommufd_private.h
409
return to_hwpt_paging(hwpt);
drivers/iommu/iommufd/iommufd_private.h
411
return to_hwpt_nested(hwpt)->parent;
drivers/iommu/iommufd/iommufd_private.h
441
int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/iommufd_private.h
453
struct iommufd_hw_pagetable *hwpt)
drivers/iommu/iommufd/iommufd_private.h
455
if (hwpt->obj.type == IOMMUFD_OBJ_HWPT_PAGING) {
drivers/iommu/iommufd/iommufd_private.h
456
struct iommufd_hwpt_paging *hwpt_paging = to_hwpt_paging(hwpt);
drivers/iommu/iommufd/iommufd_private.h
460
iommufd_object_put_and_try_destroy(ictx, &hwpt->obj);
drivers/iommu/iommufd/iommufd_private.h
464
refcount_dec(&hwpt->obj.users);
drivers/iommu/iommufd/iommufd_private.h
597
void iommufd_auto_response_faults(struct iommufd_hw_pagetable *hwpt,
drivers/iommu/iommufd/main.c
420
struct iommu_hwpt_alloc hwpt;
drivers/iommu/iommufd/selftest.c
1000
*mock_nested = to_mock_nested(hwpt->domain);
drivers/iommu/iommufd/selftest.c
1001
return hwpt;
drivers/iommu/iommufd/selftest.c
1211
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
1217
hwpt = get_md_pagetable(ucmd, mockpt_id, &mock);
drivers/iommu/iommufd/selftest.c
1218
if (IS_ERR(hwpt))
drivers/iommu/iommufd/selftest.c
1219
return PTR_ERR(hwpt);
drivers/iommu/iommufd/selftest.c
1260
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/selftest.c
1303
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
1306
hwpt = get_md_pagetable_nested(ucmd, mockpt_id, &mock_nested);
drivers/iommu/iommufd/selftest.c
1307
if (IS_ERR(hwpt))
drivers/iommu/iommufd/selftest.c
1308
return PTR_ERR(hwpt);
drivers/iommu/iommufd/selftest.c
1310
mock_nested = to_mock_nested(hwpt->domain);
drivers/iommu/iommufd/selftest.c
1315
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/selftest.c
1721
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
1730
hwpt = get_md_pagetable(ucmd, mockpt_id, &mock);
drivers/iommu/iommufd/selftest.c
1731
if (IS_ERR(hwpt))
drivers/iommu/iommufd/selftest.c
1732
return PTR_ERR(hwpt);
drivers/iommu/iommufd/selftest.c
1764
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/selftest.c
1845
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
1870
hwpt = iommufd_get_hwpt(ucmd, hwpt_id);
drivers/iommu/iommufd/selftest.c
1871
if (IS_ERR(hwpt)) {
drivers/iommu/iommufd/selftest.c
1872
rc = PTR_ERR(hwpt);
drivers/iommu/iommufd/selftest.c
1876
if (attached_domain != hwpt->domain)
drivers/iommu/iommufd/selftest.c
1879
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/selftest.c
972
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
974
hwpt = __get_md_pagetable(ucmd, mockpt_id, IOMMUFD_OBJ_HWPT_PAGING);
drivers/iommu/iommufd/selftest.c
975
if (IS_ERR(hwpt))
drivers/iommu/iommufd/selftest.c
976
return hwpt;
drivers/iommu/iommufd/selftest.c
977
if (hwpt->domain->type != IOMMU_DOMAIN_UNMANAGED ||
drivers/iommu/iommufd/selftest.c
978
hwpt->domain->owner != &mock_ops) {
drivers/iommu/iommufd/selftest.c
979
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/selftest.c
982
*mock = to_mock_domain(hwpt->domain);
drivers/iommu/iommufd/selftest.c
983
return hwpt;
drivers/iommu/iommufd/selftest.c
990
struct iommufd_hw_pagetable *hwpt;
drivers/iommu/iommufd/selftest.c
992
hwpt = __get_md_pagetable(ucmd, mockpt_id, IOMMUFD_OBJ_HWPT_NESTED);
drivers/iommu/iommufd/selftest.c
993
if (IS_ERR(hwpt))
drivers/iommu/iommufd/selftest.c
994
return hwpt;
drivers/iommu/iommufd/selftest.c
995
if (hwpt->domain->type != IOMMU_DOMAIN_NESTED ||
drivers/iommu/iommufd/selftest.c
996
hwpt->domain->ops != &domain_nested_ops) {
drivers/iommu/iommufd/selftest.c
997
iommufd_put_object(ucmd->ictx, &hwpt->obj);
drivers/iommu/iommufd/viommu.c
13
refcount_dec(&viommu->hwpt->common.obj.users);
drivers/iommu/iommufd/viommu.c
325
rc = iommufd_access_attach_internal(access, viommu->hwpt->ioas);
drivers/iommu/iommufd/viommu.c
81
viommu->hwpt = hwpt_paging;
drivers/iommu/iommufd/viommu.c
82
refcount_inc(&viommu->hwpt->common.obj.users);
include/linux/iommufd.h
103
struct iommufd_hwpt_paging *hwpt;