Hi!
> Tony Hoyle wrote:
>
> I'm talking to myself :-)
>
> OK I see that safe_halt() will re-enable interrupts. However this is only
> called in S1. If your machine gets as far as S3 you have...
>
> for (;;) {
> unsigned long time;
> unsigned long diff;
>
> __cli();
> if (current->need_resched)
> goto out;
> if (acpi_bm_activity())
> goto sleep2;
>
> time = acpi_read_pm_timer();
> inb(acpi_pblk + ACPI_P_LVL3);
> /* Dummy read, force synchronization with the PMU */
> acpi_read_pm_timer();
> diff = acpi_compare_pm_timers(time, acpi_read_pm_timer());
>
> __sti();
> if (diff < acpi_c3_exit_latency)
> goto sleep2;
> }
>
> There is no halt here... the interrupts are enabled for only a couple of
> instructions (one comparison and a jump) before being disabled again.
> It seems to me if the computer gets into S3 it'll effectively die until
> some kind of busmaster device wakes it up (DMA?).
No.
If interrupts come in cli-ed section, it will be postponed until
sti. It then comes, and sets need_resched and recovers.
Pavel
-- I'm pavel@ucw.cz. "In my country we have almost anarchy and I don't care." Panos Katsaloulis describing me w.r.t. patents at discuss@linmodems.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Feb 15 2001 - 21:00:18 EST