lkml.org 
[lkml]   [2015]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH RT 3.18] irq_work: Provide a soft-irq based queue
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


\
 
 \ /
  Last update: 2015-04-23 09:41    [W:0.050 / U:6.176 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site