send_IPI_mask_bitmask() (Re: 2.6.21 known regressions (v2) (for -stable team))

From: Len Brown
Date: Sun Apr 29 2007 - 01:36:27 EST


On Saturday 28 April 2007 12:58, Thomas Gleixner wrote:
> On Sat, 2007-04-28 at 18:27 +0200, Michal Piotrowski wrote:
> > Hi all,
> >
> > Here is a list of known regressions reported after 2.6.21 release.
>
> Michal, thanks for stepping up !
>
> > Subject : 2.6.21 - BUG: at arch/i386/kernel/smp.c:177 send_IPI_mask_bitmask()
> > References : http://lkml.org/lkml/2007/4/27/621
> > Submitter : Jeff Chua <jeff.chua.linux@xxxxxxxxx>
> > Status : unknown
>
> Len,
>
> clockevents_notify() is called with the power verify information for an
> offline CPU. I can handle this in the clockevents code, but I think acpi
> is the correct place.

So the CONFIG_GENERIC_CLOCKEVENTS=y case is broken,
but the CONFIG_GENERIC_CLOCKEVENTS=n below is okay?
Not immediately clear why both cases can't fail.

Maybe Venki can explain.

-Len


static void acpi_propagate_timer_broadcast(struct acpi_processor *pr)
{
#ifdef CONFIG_GENERIC_CLOCKEVENTS
unsigned long reason;

reason = pr->power.timer_broadcast_on_state < INT_MAX ?
CLOCK_EVT_NOTIFY_BROADCAST_ON : CLOCK_EVT_NOTIFY_BROADCAST_OFF;

clockevents_notify(reason, &pr->id);
#else
cpumask_t mask = cpumask_of_cpu(pr->id);

if (pr->power.timer_broadcast_on_state < INT_MAX)
on_each_cpu(switch_APIC_timer_to_ipi, &mask, 1, 1);
else
on_each_cpu(switch_ipi_to_APIC_timer, &mask, 1, 1);
#endif
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/