Lines Matching refs:fault

77 struct fault {  struct
461 static void handle_fault_error(struct fault *fault) in handle_fault_error() argument
465 if (!fault->dev_state->inv_ppr_cb) { in handle_fault_error()
466 set_pri_tag_status(fault->state, fault->tag, PPR_INVALID); in handle_fault_error()
470 status = fault->dev_state->inv_ppr_cb(fault->dev_state->pdev, in handle_fault_error()
471 fault->pasid, in handle_fault_error()
472 fault->address, in handle_fault_error()
473 fault->flags); in handle_fault_error()
476 set_pri_tag_status(fault->state, fault->tag, PPR_SUCCESS); in handle_fault_error()
479 set_pri_tag_status(fault->state, fault->tag, PPR_INVALID); in handle_fault_error()
482 set_pri_tag_status(fault->state, fault->tag, PPR_FAILURE); in handle_fault_error()
491 struct fault *fault = container_of(work, struct fault, work); in do_fault() local
497 write = !!(fault->flags & PPR_FAULT_WRITE); in do_fault()
499 mm = fault->state->mm; in do_fault()
500 address = fault->address; in do_fault()
507 handle_fault_error(fault); in do_fault()
514 handle_fault_error(fault); in do_fault()
522 handle_fault_error(fault); in do_fault()
529 finish_pri_tag(fault->dev_state, fault->state, fault->tag); in do_fault()
531 put_pasid_state(fault->state); in do_fault()
533 kfree(fault); in do_fault()
542 struct fault *fault; in ppr_notifier() local
570 fault = kzalloc(sizeof(*fault), GFP_ATOMIC); in ppr_notifier()
571 if (fault == NULL) { in ppr_notifier()
577 fault->dev_state = dev_state; in ppr_notifier()
578 fault->address = iommu_fault->address; in ppr_notifier()
579 fault->state = pasid_state; in ppr_notifier()
580 fault->tag = tag; in ppr_notifier()
581 fault->finish = finish; in ppr_notifier()
582 fault->pasid = iommu_fault->pasid; in ppr_notifier()
583 fault->flags = iommu_fault->flags; in ppr_notifier()
584 INIT_WORK(&fault->work, do_fault); in ppr_notifier()
586 queue_work(iommu_wq, &fault->work); in ppr_notifier()