[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAOtvUMer63pC8C_QMyk_J56v6g8uk14OGYE7sJG1K6nAW+MoGg@mail.gmail.com>
Date: Sun, 19 Feb 2012 10:13:32 +0200
From: Gilad Ben-Yossef <gilad@...yossef.com>
To: Ingo Molnar <mingo@...e.hu>
Cc: linux-kernel@...r.kernel.org, Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>, Milton Miller <miltonm@....com>,
x86@...nel.org, Peter Zijlstra <a.p.zijlstra@...llo.nl>
Subject: Re: [PATCH] x86: drop false warning of empty cpumask in IPI
On Fri, Feb 17, 2012 at 2:01 PM, Ingo Molnar <mingo@...e.hu> wrote:
>
> * Gilad Ben-Yossef <gilad@...yossef.com> wrote:
>
>> With current generic SMP infrastructure, it is feasible
>> for the target CPUs to begin processing an IPI work item
>> even before we sent them the actual IPI in the case that
>> an IPI from another CPU woke them first.
>>
>> This can lead to generating a false warning in a valid
>> state of trying to send IPI with an empty cpumask when
>> multiple concurrent IPIs are being sent.
>>
>> This patch was triggered by the following LKML discussion:
>> https://lkml.org/lkml/2012/1/13/308
>>
>> Signed-off-by: Gilad Ben-Yossef <gilad@...yossef.com>
>> CC: Thomas Gleixner <tglx@...utronix.de>
>> CC: Ingo Molnar <mingo@...hat.com>
>> CC: "H. Peter Anvin" <hpa@...or.com>
>> CC: Milton Miller <miltonm@....com>
>> CC: x86@...nel.org
>> ---
>> arch/x86/kernel/apic/ipi.c | 5 ++++-
>> 1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/x86/kernel/apic/ipi.c b/arch/x86/kernel/apic/ipi.c
>> index cce91bf..00b68a3 100644
>> --- a/arch/x86/kernel/apic/ipi.c
>> +++ b/arch/x86/kernel/apic/ipi.c
>> @@ -106,7 +106,10 @@ void default_send_IPI_mask_logical(const struct cpumask *cpumask, int vector)
>> unsigned long mask = cpumask_bits(cpumask)[0];
>> unsigned long flags;
>>
>> - if (WARN_ONCE(!mask, "empty IPI mask"))
>> + if (!mask)
>> + /* The target CPUs must have already processed the
>> + * work items due to a concurrent IPI
>> + */
>> return;
>
> This could potentially hide real bugs on other callsites.
>
> So why not do the checking at the call site? In almost every
> other scenario it's invalid to send an empty mask.
hmm... isn't that racy? Also, none of the other send_IPI_maks
implementations do the check.
I can obviously add a warning at the "zero not OK" call sites, though.
Actually, the code is racy right now as well. I think we're
trying to program the APIC with a zero dest field from time to
time. How bad is that? :-)
Thanks,
Gilad
--
Gilad Ben-Yossef
Chief Coffee Drinker
gilad@...yossef.com
Israel Cell: +972-52-8260388
US Cell: +1-973-8260388
http://benyossef.com
"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
-- Jean-Baptiste Queru
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists