static inline void platform_do_lowpower(unsigned int cpu, int *spurious) { for (;;) { lpm_cpu_hotplug_enter(cpu); if (pen_release == cpu_logical_map(cpu)) { break; } local_irq_disable(); gic_show_pending_irq(); (*spurious)++; } }
static void msm_wfi_cpu_die(unsigned int cpu) { if (unlikely(cpu != smp_processor_id())) { pr_crit("%s: running on %u, should be %u\n", __func__, smp_processor_id(), cpu); BUG(); } for (;;) { lpm_cpu_hotplug_enter(cpu); if (secondary_holding_pen_release == cpu_logical_map(cpu)) { /*Proper wake up */ break; } pr_debug("CPU%u: spurious wakeup call\n", cpu); BUG(); } }
static inline void platform_do_lowpower(unsigned int cpu, int *spurious) { /* Just enter wfi for now. TODO: Properly shut off the cpu. */ for (;;) { lpm_cpu_hotplug_enter(cpu); if (pen_release == cpu_logical_map(cpu)) { /* * OK, proper wakeup, we're done */ break; } /* * getting here, means that we have come out of WFI without * having been woken up - this shouldn't happen * * The trouble is, letting people know about this is not really * possible, since we are currently running incoherently, and * therefore cannot safely call printk() or anything else */ (*spurious)++; } }