> Yes, a wakeup mechanism for different idle states should be doable.
> A wakeup_cpu_acpi() function could be the same as cpu_wakeup()
> except it would call a poke_cpu_acpi() function instead of poke_cpu().
> poke_cpu_acpi() would check the target cpu's idle state (C1HALT,
> C1MWAIT, C2, C3) and perform the appropriate wakeup mechanism:
> IPI or memory write. targetcpu->cpu_idle_type should be good enough
> to decide wakeup mechanism.
I have a slight nit in the way functiosn are named. In most Solaris
functions, the module is the first entity in a function name:
<module>_[<component>_]<action>. So if we expect to poke the cpu via
ACPI, then acpi is the module, cpu is the component, and poke would be
the action: acpi_cpu_poke() (though it *could* be argued that cpu and
acpi be reversed: cpu_acpi_poke()).
Mostly this is common convention in Solaris (there is unlikely to be
name conflicts if the module is first in a function name), and not
always adheared, so I am not really going to comment on this any more
than requested, but it would be good to define what naming
convention(s) we want to use.
Cheers!
---- Randy