[PATCH] Add call to non-crashing cores through IPI

Maxim Uvarov muvarov at gmail.com
Tue Nov 23 08:01:33 EST 2010


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



More information about the linux-arm-kernel mailing list