Lines Matching refs:scfcp
153 static void scf_add_to_free_list(struct scf_check *scfcp) in scf_add_to_free_list() argument
158 if (!scfcp) in scf_add_to_free_list()
162 llist_add(&scfcp->scf_node, pool); in scf_add_to_free_list()
169 struct scf_check *scfcp; in scf_cleanup_free_list() local
174 scfcp = llist_entry(node, struct scf_check, scf_node); in scf_cleanup_free_list()
176 kfree(scfcp); in scf_cleanup_free_list()
292 struct scf_check *scfcp = scfc_in; in scf_handler() local
294 if (likely(scfcp)) { in scf_handler()
295 WRITE_ONCE(scfcp->scfc_out, false); // For multiple receivers. in scf_handler()
296 if (WARN_ON_ONCE(unlikely(!READ_ONCE(scfcp->scfc_in)))) in scf_handler()
321 if (unlikely(!scfcp)) in scf_handler()
323 if (scfcp->scfc_wait) { in scf_handler()
324 WRITE_ONCE(scfcp->scfc_out, true); in scf_handler()
325 if (scfcp->scfc_rpc) in scf_handler()
326 complete(&scfcp->scfc_completion); in scf_handler()
328 scf_add_to_free_list(scfcp); in scf_handler()
335 struct scf_check *scfcp = scfc_in; in scf_handler_1() local
337 …if (likely(scfcp) && WARN_ONCE(smp_processor_id() != scfcp->scfc_cpu, "%s: Wanted CPU %d got CPU %… in scf_handler_1()
340 scf_handler(scfcp); in scf_handler_1()
349 struct scf_check *scfcp = NULL; in scftorture_invoke_one() local
353 scfcp = kmalloc_obj(*scfcp, GFP_ATOMIC); in scftorture_invoke_one()
354 if (!scfcp) { in scftorture_invoke_one()
359 scfcp->scfc_cpu = -1; in scftorture_invoke_one()
360 scfcp->scfc_wait = scfsp->scfs_wait; in scftorture_invoke_one()
361 scfcp->scfc_out = false; in scftorture_invoke_one()
362 scfcp->scfc_rpc = false; in scftorture_invoke_one()
384 if (scfcp) { in scftorture_invoke_one()
385 scfcp->scfc_cpu = cpu; in scftorture_invoke_one()
387 scfcp->scfc_in = true; in scftorture_invoke_one()
389 ret = smp_call_function_single(cpu, scf_handler_1, (void *)scfcp, scfsp->scfs_wait); in scftorture_invoke_one()
395 scf_add_to_free_list(scfcp); in scftorture_invoke_one()
396 scfcp = NULL; in scftorture_invoke_one()
400 if (!scfcp) in scftorture_invoke_one()
404 scfcp->scfc_cpu = cpu; in scftorture_invoke_one()
405 scfcp->scfc_wait = true; in scftorture_invoke_one()
406 init_completion(&scfcp->scfc_completion); in scftorture_invoke_one()
407 scfcp->scfc_rpc = true; in scftorture_invoke_one()
409 scfcp->scfc_in = true; in scftorture_invoke_one()
410 ret = smp_call_function_single(cpu, scf_handler_1, (void *)scfcp, 0); in scftorture_invoke_one()
416 wait_for_completion(&scfcp->scfc_completion); in scftorture_invoke_one()
423 scf_add_to_free_list(scfcp); in scftorture_invoke_one()
424 scfcp = NULL; in scftorture_invoke_one()
432 if (scfcp) { in scftorture_invoke_one()
434 scfcp->scfc_in = true; in scftorture_invoke_one()
436 smp_call_function_many(cpu_online_mask, scf_handler, scfcp, scfsp->scfs_wait); in scftorture_invoke_one()
443 if (scfcp) { in scftorture_invoke_one()
445 scfcp->scfc_in = true; in scftorture_invoke_one()
447 smp_call_function(scf_handler, scfcp, scfsp->scfs_wait); in scftorture_invoke_one()
451 if (scfcp) in scftorture_invoke_one()
452 scfcp->scfc_out = true; in scftorture_invoke_one()
454 if (scfcp && scfsp->scfs_wait) { in scftorture_invoke_one()
456 !scfcp->scfc_out)) { in scftorture_invoke_one()
460 scf_add_to_free_list(scfcp); in scftorture_invoke_one()