<div dir="ltr">Hi Victor,<div><br></div><div>I don&#39;t think it&#39;s a good idea to block an entire IRQ line for so much time (i.e. until a work queue runs), unless you&#39;re sure you&#39;re the sole user of it.</div><div><br></div><div>How about you try a more traditional approach and make the IRQ handler schedule a work queue after it completes?</div><div><br></div><div>Or, if you need to run as fast as possible, why don&#39;t you create a tasklet? Remember that you can&#39;t sleep in this case.</div><div><br></div><div>- Richard</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-01-13 11:51 GMT-02:00 Victor Ascroft <span dir="ltr">&lt;<a href="mailto:victorascroft@gmail.com" target="_blank">victorascroft@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
Is it ok to use wait_for_completion in a workqueue?<br>
<br>
static void my_work(struct work_struct *work)<br>
{<br>
<br>
        while (true)<br>
        {<br>
                wait_for_completion(completion);<br>
<br>
                // Do something here<br>
<br>
                reinit_completion(completion);<br>
                enable_irq(irq);<br>
        }<br>
}<br>
<br>
static irqreturn_t my_irq_handler(int irq, void *dev)<br>
{<br>
        disable_irq(irq);<br>
<br>
        complete(completion);<br>
<br>
        return IRQ_HANDLED;<br>
}<br>
<br>
Something like the above is what I have. Is it a correct way to<br>
do things or complete idiotic brainfart. Workqueues can sleep so<br>
I thought of the above code, but, was not sure.<br>
<br>
And I am not using _interruptible or _interruptible_timeout because<br>
I absolutely want it to wait for the IRQ. Now as such though this<br>
works I get stack traces with hung task complaining and I have<br>
to set /proc/sys/kernel/hung_task_timeout_secs to 0. And were the IRQ<br>
not generated I do get NMI watchdog hang.<br>
<br>
I will accept I have only little knowledge of these things.<br>
<br>
Regards,<br>
Victor.<br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</blockquote></div><br></div>