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-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html