}
}
-void __init cf_check hpet_broadcast_init(void)
+void __init hpet_broadcast_init(void)
{
u64 hpet_rate = hpet_setup();
u32 hpet_id, cfg;
hpet_events->flags = HPET_EVT_LEGACY;
}
-void cf_check hpet_broadcast_resume(void)
+void hpet_broadcast_resume(void)
{
u32 cfg;
unsigned int i, n;
* Temporarily use an HPET event counter for timer interrupt handling,
* rather than using the LAPIC timer. Used for Cx state entry.
*/
-void cf_check hpet_broadcast_init(void);
-void cf_check hpet_broadcast_resume(void);
+void hpet_broadcast_init(void);
+void hpet_broadcast_resume(void);
void cf_check hpet_broadcast_enter(void);
void cf_check hpet_broadcast_exit(void);
int hpet_broadcast_is_available(void);
}
/* keep pit enabled for pit_broadcast working while cpuidle enabled */
-static int _disable_pit_irq(void(*hpet_broadcast_setup)(void))
+static int _disable_pit_irq(bool init)
{
int ret = 1;
*/
if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_ARAT) )
{
- hpet_broadcast_setup();
+ init ? hpet_broadcast_init() : hpet_broadcast_resume();
if ( !hpet_broadcast_is_available() )
{
if ( xen_cpuidle > 0 )
{
- printk("%ps() failed, turning to PIT broadcast\n",
- hpet_broadcast_setup);
+ printk("hpet_broadcast_%s() failed, turning to PIT broadcast\n",
+ init ? "init" : "resume");
return -1;
}
ret = 0;
static int __init cf_check disable_pit_irq(void)
{
- if ( !_disable_pit_irq(hpet_broadcast_init) )
+ if ( !_disable_pit_irq(true) )
{
xen_cpuidle = 0;
printk("CPUIDLE: disabled due to no HPET. "
resume_platform_timer();
- if ( !_disable_pit_irq(hpet_broadcast_resume) )
+ if ( !_disable_pit_irq(false) )
BUG();
init_percpu_time();