2010/11/23 Catalin Marinas <catalin.marinas at arm.com>: > On Tue, 2010-11-23 at 12:41 +0000, Mika Westerberg wrote: >> On Tue, Nov 23, 2010 at 12:37:04PM +0000, Catalin Marinas wrote: >> > On 23 November 2010 10:57, Per Fransson <per.fransson.ml at gmail.com> wrote: >> > >>> Am I right that deadlock can occur only if the same IPI was sent? >> > >> >> > >> Not necessarily. It depends on whether the CPU issuing the IPI needs >> > >> to wait for the completion of the cross-call. If you don't need to >> > >> wait, you can send the IPI with the interrupts disabled (the platform >> > >> smp_cross_call is already called with interrupts disabled). >> > >> >> > > >> > > Well, smp_call_function() only optionally waits. As long as we choose not to, >> > > using that function to ask the other cores to save their states and idle, should >> > > be ok, right? In that case we don't need another ipi_msg_type and we can do >> > > it with the interrupts of the ipi caller disabled. >> > >> > I think that should work but we still have a WARN_ON_ONCE in the >> > generic smp_call_function_*() if interrupts are disabled. >> >> But when we are crashing we have oops_in_progress set: >> >> ? ? ? ? WARN_ON_ONCE(cpu_online(this_cpu) && irqs_disabled() >> ? ? ? ? ? ? ? ? ? ? ?&& !oops_in_progress); >> >> so this warning is never printed, right? > > Right. So just make sure the caller doesn't set the 'wait' argument. > Please double check it. In powerpc crashdump case oops_in_progress is not set. Maxim. > -- > Catalin > > > -- Best regards, Maxim Uvarov