Lines Matching refs:ipc
514 struct task_ipc *ipc = container_of(work, typeof(*ipc), work); in task_ipc() local
516 complete(&ipc->started); in task_ipc()
518 i915_sw_fence_wait(ipc->in); in task_ipc()
519 smp_store_mb(ipc->value, 1); in task_ipc()
520 i915_sw_fence_commit(ipc->out); in task_ipc()
525 struct task_ipc ipc; in test_ipc() local
534 ipc.in = alloc_fence(); in test_ipc()
535 if (!ipc.in) { in test_ipc()
539 ipc.out = alloc_fence(); in test_ipc()
540 if (!ipc.out) { in test_ipc()
546 init_completion(&ipc.started); in test_ipc()
548 ipc.value = 0; in test_ipc()
549 INIT_WORK_ONSTACK(&ipc.work, task_ipc); in test_ipc()
550 queue_work(wq, &ipc.work); in test_ipc()
552 wait_for_completion(&ipc.started); in test_ipc()
555 if (READ_ONCE(ipc.value)) { in test_ipc()
560 i915_sw_fence_commit(ipc.in); in test_ipc()
561 i915_sw_fence_wait(ipc.out); in test_ipc()
563 if (!READ_ONCE(ipc.value)) { in test_ipc()
568 flush_work(&ipc.work); in test_ipc()
569 destroy_work_on_stack(&ipc.work); in test_ipc()
570 free_fence(ipc.out); in test_ipc()
572 free_fence(ipc.in); in test_ipc()