Re: [PATCH RT 3.18] irq_work: Provide a soft-irq based queue

From: Jan Kiszka
Date: Thu Apr 23 2015 - 03:14:54 EST


On 2015-04-23 08:58, Mike Galbraith wrote:
> On Thu, 2015-04-23 at 08:29 +0200, Jan Kiszka wrote:
>>
>>> void irq_work_tick(void)
>>> {
>>> -#ifdef CONFIG_PREEMPT_RT_FULL
>>> - irq_work_run_list(this_cpu_ptr(&lazy_list));
>>> -#else
>>> - struct llist_head *raised = &__get_cpu_var(raised_list);
>>> + struct llist_head *raised = this_cpu_ptr(&raised_list);
>>>
>>> - if (!llist_empty(raised) && !arch_irq_work_has_interrupt())
>>> + if (!llist_empty(raised) &&
>>> (!arch_irq_work_has_interrupt() ||
>>> + IS_ENABLED(CONFIG_PREEMPT_RT_FULL)))
>>
>> OK, that additional condition is addressing archs that don't have
>> irq_work support and fall back to the timer, right?
>
> How will ever run if it is not run in either irq_work_run() or
> irq_work_tick()? There are two choices, we better pick one.

Ah, now I see it. Indeed.

OK, will run through your fix and suggestions and come up with a new
version.

Thanks,
Jan

--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/