Re: [RFC][PATCH 2/3]i386,x86-64 Handle missing local APIC timer interrupts on C3 state

Venkatesh Pallipadi
2005-12-09T12:50:09Z

On Fri, Dec 09, 2005 at 12:06:35AM -0800, Zwane Mwaikambo wrote:
> On Thu, 8 Dec 2005, Venkatesh Pallipadi wrote:
>
> > Whenever we see that a CPU is capable of C3 (during ACPI cstate init), we
> > disable local APIC timer and switch to using a broadcast from external timer
> > interrupt (IRQ 0).
> >
> > +void smp_send_timer_broadcast_ipi(struct pt_regs *regs);
> > +void switch_APIC_timer_to_ipi(void *cpumask);
> > +void switch_ipi_to_APIC_timer(void *cpumask);
>
> When is this used?

+void smp_send_timer_broadcast_ipi(struct pt_regs *regs);
This is called by the IRQ0 timer interrupt handler, to check whether any CPUs
have enrolled for this broadcast.

+void switch_APIC_timer_to_ipi(void *cpumask);
Called by acpi processor driver when it find out that a particular CPU can
support C3 state (and it is an Intel CPU).

+void switch_ipi_to_APIC_timer(void *cpumask);
Called by acpi processor driver again to reset to APIC_timer when C3 is not
supported by the CPU.

The acpi processor driver calls can be at the boot time, or can be at run time
if BIOS enables/disables C3 at run time.

Thanks,
Venki