Re: [PATCH][RFC] preempt_count corruption across H_CEDE call with CONFIG_PREEMPT on pseries
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2010-07-23 05:11:59
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2010-07-23 05:11:59
On Thu, 2010-07-22 at 21:44 -0700, Darren Hart wrote:
suggestion I updated the instrumentation to display the local_save_flags and irqs_disabled_flags:
Jul 22 23:36:58 igoort1 kernel: local flags: 0, irqs disabled: 1 Jul 22 23:36:58 igoort1 kernel: before H_CEDE current->stack: c00000010e9e3ce0, pcnt: 1 Jul 22 23:36:58 igoort1 kernel: after H_CEDE current->stack: c00000010e9e3ce0, pcnt: 1 I'm not sure if I'm reading that right, but I believe interrupts are intended to be disabled here. If accomplished via the spin_lock_irqsave() this would behave differently on RT. However, this path disables the interrupts handled by xics, all but the IPIs anyway. On RT I disabled the decrementer as well. Is it possible for RT to be receiving other interrupts here?
Also you may want to call hard_irq_disable() to -really- disable interrupts ... since we do lazy-disable on powerpc Cheers, Ben.