On Mon, Jun 07, 2010 at 12:19:41PM -0400, James Bottomley wrote: > On Mon, 2010-06-07 at 17:34 +0200, florian@xxxxxxxxxxx wrote: > > We use the spinlocked notifier chain variant (struct > > atomic_notifier_head) and add an __might_sleep() to the chain for > > constraints which have non-atomic notifiers. This way we catch all > > interrupt-context-update-sites at runtime. > > Actually, I'm afraid we can't really call blocking notifiers through the > atomic chain because we might end up with a contested chain call and a > huge busy wait in the spinlock (especially if one of the notifiers is > sleeping). > > I think the pm_qos_object still needs the two notifier chains ... it's > just that when set up, one must either fill an atomic or a blocking > chain (leaving the other NULL). We use the NULL to check to decide what > chain to add notifiers to, and if the blocking chain is null, we refuse > to add blocking notifiers (with a BUG). If the blocking chain is > non-null, we register the might_sleep() notifier (actually, given the > argument mismatch, you'll have to wrapper that). > > James Can't we just requiere that all notifier callbacks be atomic context safe and not fart around with 2 classes of notifiers? --mgross _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm