From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: [RFC][PATCH][1/8] PM: Rework handling of interrupts during suspend-resume (rev. 5) Date: Sun, 8 Mar 2009 10:20:22 -0700 (PDT) Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: Alan Stern Cc: Jeremy Fitzhardinge , LKML , Jesse Barnes , "Eric W. Biederman" , pm list , Thomas Gleixner , Ingo Molnar List-Id: linux-pm@vger.kernel.org On Sat, 7 Mar 2009, Alan Stern wrote: > > You didn't answer my question. Why bother to distinguish between > "wake-up" interrupts and non-"wake-up" interrupts? > > In other words, why not simply abort the suspend if IRQ_PENDING is set > for _any_ interrupt during sysdev_suspend()? .. because some drivers might not actually shut down the hardware until they get to "suspend_late"? If even then, for that matter - a driver may simply not care, knowing that the hardware will be powered off, and will be re-initialized at resume. The thinking that you have to shut your hardware down at "->suspend()" time is a _disease_. There are literally classes of hardware out there where that would be an outright _bug_, like for a PCI bridge device. For many devices, "suspend()" has to be the phase where you shut down the _external_ stuff (eg for a disk controller, it's when you'd flush and stop your disks), but the controller itself may well be alive until later. Linus