Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754904AbZLICL3 (ORCPT ); Tue, 8 Dec 2009 21:11:29 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754704AbZLICLZ (ORCPT ); Tue, 8 Dec 2009 21:11:25 -0500 Received: from netrider.rowland.org ([192.131.102.5]:58971 "HELO netrider.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1754377AbZLICLY (ORCPT ); Tue, 8 Dec 2009 21:11:24 -0500 Date: Tue, 8 Dec 2009 21:11:30 -0500 (EST) From: Alan Stern X-X-Sender: stern@netrider.rowland.org To: Linus Torvalds cc: "Rafael J. Wysocki" , Zhang Rui , LKML , ACPI Devel Maling List , pm list Subject: Re: Async resume patch (was: Re: [GIT PULL] PM updates for 2.6.33) In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1681 Lines: 40 On Tue, 8 Dec 2009, Linus Torvalds wrote: > On Tue, 8 Dec 2009, Alan Stern wrote: > > > > And likewise in try_wait_for_completion(). It looks like a bug. Maybe > > these routines were not intended to be called with interrupts disabled, > > but that requirement doesn't seem to be documented. And it isn't a > > natural requirement anyway. > > 'complete()' is supposed to be callable from interrupts, but the waiting > ones aren't. But 'complete()' is all you should need to call from > interrupts, so that's fine. And try_wait_for_completion()? The fact that it doesn't block makes it interrupt-safe. What's the point of having an interrupt-safe routine that you can't call from within interrupt handlers? Even if nobody uses it that way now, there's no guarantee somebody won't attempt it in the future. > So I think completions should work, if done right. That whole "make the > parent wait for all the children to complete" is fine in that sense. And > I'll happily take such an approach if my rwlock thing doesn't work. In principle the two approaches could be combined: Add an rwsem for use by children and a completion for off-tree[*] use. But that would certainly be overkill. Looping over children doesn't take a tremendous amount of time compared to a full system suspend. Alan Stern [*] "Off-tree" isn't really an appropriate term; these devices aren't "off" the tree. "Non-tree" would be better. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/