On Thu, Sep 22, 2005 at 06:49:37PM -0700, Matthew Dillon wrote: > > :After playing around a little, I found that the following patch makes > :suspend/resume work: > :.. > : > : > :icu_reinit() has been in previous FreeBSD versions of acpi_wakeup.c. > : > :I am not sure, whether this is the right way to fix it though. > : > : Johannes > > Nice work! It does make sense... interrupts could get stuck while > the machine goes to sleep for various reasons and re-initing the 8259 > would definitely fix that. I will commit it.
Excellent. icu_reinit() has been replaced with intr_suspend() and intr_resume() in the following commit in FreeBSD, far before our importing the 5.x code. |revision 1.30 |date: 2003-11-04 07:18:57 +0900; author: jhb; state: Exp; lines: +4 -3; |- Update includes. |- Use intr_suspend/resume() callouts to the interrupt code layer which | suspends and resumes all the known interrupt sources instead of calling | icu_reinit() directly. Those functions are abstructions for different kind of PICs, and seem to wind up doing the similar thing as icu_reinit() does.
