Messages in this thread | | | Date | Thu, 23 Apr 2015 09:14:35 +0200 | From | Jan Kiszka <> | Subject | Re: [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
| |