From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [suspend/resume] Re: userspace notification from module Date: Sun, 3 Jan 2010 00:29:22 +0100 Message-ID: <201001030029.22449.rjw@sisk.pl> References: <686edb2c.6263643a.4b3f4a3b.b60b3@o2.pl> <201001022201.04281.rjw@sisk.pl> <7cf4f51f.5fc2a5cd.4b3fc3ad.c849c@o2.pl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7cf4f51f.5fc2a5cd.4b3fc3ad.c849c@o2.pl> 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: =?utf-8?q?Bart=C5=82omiej_Zimo=C5=84?= Cc: Andy Walls , pm list , linux-kernel@vger.kernel.org, Daniel Borkmann List-Id: linux-pm@vger.kernel.org T24gU2F0dXJkYXkgMDIgSmFudWFyeSAyMDEwLCBCYXJ0xYJvbWllaiBaaW1vxYQgd3JvdGU6Cj4g Cj4gRG5pYSAyIHN0eWN6bmlhIDIwMTAgMjI6MDEgIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmp3QHNp c2sucGw+IG5hcGlzYcWCKGEpOgo+IAo+ID4gT24gU2F0dXJkYXkgMDIgSmFudWFyeSAyMDEwLCBC YXJ0xYJvbWllaiBaaW1vxYQgd3JvdGU6Cj4gPiA+IERuaWEgMiBzdHljem5pYSAyMDEwIDE2OjU2 IAlEYW5pZWwgQm9ya21hbm4gPGRhbmJvcmttYW5uQGdvb2dsZW1haWwuY29tPiBuYXBpc2HFgihh KToKPiA+ID4gPiBIaSBBbmR5LAo+ID4gPiA+IAo+ID4gPiA+IDIwMTAvMS8yIEFuZHkgV2FsbHMg PGF3YWxsc0ByYWRpeC5uZXQ+Ogo+ID4gPiA+ID4gV2h5IG5vdDoKPiA+ID4gPiA+Cj4gPiA+ID4g PiBhLiB3cml0ZSBhIG1vZHVsZSB0aGF0IGltcGxlbWVudHMgYSBkZXZpY2Ugbm9kZSB0aGF0IHN1 cHBvcnRzIHBvbGwoKSwKPiA+ID4gPiA+IGFuZAo+ID4gPiA+ID4KPiA+ID4gPiA+IGIuIGhhdmUg YSB1c2VyIHNwYWNlIHByb2Nlc3Mgc2VsZWN0KCkgb24gdGhlIGZkIGZvciByZWFkIG9yIGV4Y2Vw dGlvbgo+ID4gPiA+ID4gbm90aWZpY2F0aW9uCj4gPiA+ID4gPgo+ID4gPiA+ID4gPwo+ID4gPiA+ IAo+ID4gPiA+IFRoaXMgaXMsIG9mIGNvdXJzZSwgYW5vdGhlciBwb3NzaWJsZSBzb2x1dGlvbiB0 aGF0IGlzIG1vcmUgImNsZWFuZXIiCj4gPiA+ID4gdGhhbiB0aGUgb25lIHdpdGggdGhlIHNpZ25h bHMuCj4gPiA+ID4gVGhlbiwgeW91ciB1c2Vyc3BhY2UgcHJvZ3JhbSB3b3VsZCBoYXZlIGFub3Ro ZXIgdGhyZWFkIHBvbGxpbmcgZm9yIHRoZQo+ID4gPiA+IGRldmljZSBub2RlLiBRdWVzdGlvbiBp cyB3aGljaCB0aW1lb3V0IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHRvIGJlICJDUFUKPiA+ID4gPiBm cmllbmRseSIgYW5kIHRvIGtlZXAgbm90aWZpY2F0aW9uIGxhdGVuY3kgc2hvcnQ/Cj4gPiA+ID4g Cj4gPiA+IAo+ID4gPiBKdXN0IG5lZWQgYXMgZmFzdCBhcyBwb3NzaWJsZSBzb2x1dGlvbiBhbmQg b24gdGhlIG90aGVyIGhhbmQgYWNjZXB0YWJsZSBmb3Iga2VybmVsIHNvdXJjZXMuCj4gPiA+IFVz dWFsbHkgcHJvZ3JhbXMgbmVlZHMganVzdCB0byBkaXNjb25uZWN0IHNvbWV0aGluZyBvciBzZXQg b25lIGZsYWcuCj4gPiA+IEV2ZW4gaWYgcHJvZ3JhbSB3aWxsIGhhdmUgbm8gdGltZSBmb3IgdGhp cyBpdCBjb3VsZCBiZSBlbm91Z2gganVzdCB0byBzZW5kIHRoaXMgcHJlY2lvdXMgaW5mby4KPiA+ IAo+ID4gUGVyaGFwcyBJIGRvbid0IHVuZGVyc3RhbmQgY29ycmVjdGx5IHdoYXQgeW91J3JlIHRy eWluZyB0byBhY2hpZXZlLCBidXQgYXQgdGhlCj4gPiBtb21lbnQgc3VzcGVuZCBpcyBhbHdheXMg c3RhcnRlZCBmcm9tIHVzZXIgc3BhY2UsIHRoaXMgd2F5IG9yIGFub3RoZXIsIGFuZCBvbgo+ID4g dGhlIG1ham9yaXR5IChhbGw/KSBvZiB0aGUgbW9kZXJuIGRpc3Ryb3MgcG0tdXRpbHMgaXMgaW52 b2x2ZWQgaW4gdGhhdC4KPiA+IFNvLCB3aHkgZG9uJ3QgeW91IHByb3ZpZGUgYSBwbS11dGlscyBo b29rIGZvciB5b3VyIHByb2Nlc3MgKGxpa2UsIGZvciBleGFtcGxlLAo+ID4gTmV0d29ya01hbmFn ZXIpPwo+ID4gCj4gCj4gVGhhbmtzIGZvciBZb3VyIGFuc3dhcmUuCj4gU29tZSBwb2ludHMgb2Yg bXkgaWRlYToKPiAtIGRvbid0IHRoaW5rIGV2ZXJ5b25lIHdhbnQgdG8gdXNlIHBtLXV0aWxzIChk aWRuJ3Qgc2F5IGl0IGlzIGJhZCkKClRoYXQgY2VydGFpbmx5IGlzIHRydWUsIGJ1dCBJIHRoaW5r IHRoZXNlIHBlb3BsZSB3b24ndCBoYXZlIGEgcHJvYmxlbSBzZXR0aW5nCnVwIHRoZWlyIHN1c3Bl bmQgc2NyaXB0cyB0byB0cmlnZ2VyIHRoZSBub3RpZmljYXRpb24gYW55d2F5LiA6LSkKClBvaW50 IGlzLCBzdXNwZW5kIGhvb2tzIGFyZSB1c2VkIGFueXdheSBieSBhbG1vc3QgZXZlcnlvbmUgKGR1 ZSB0byBncmFwaGljcywKbmV0d29ya2luZywgZmF1bHR5IGRyaXZlcnMpLCBzbyBJIHRoaW5rIHlv dSBjb3VsZCBqdXN0IHVzZSB0aGlzIG1lY2hhbmlzbSwgYmUgaXQKcG0tdXRpbHMgb3Igc29tZXRo aW5nIGVsc2UuCgpUbyBwdXQgaXQgaW4gYSBkaWZmZXJlbnQgd2F5LCB5b3UgYXBwYXJlbnRseSB3 YW50IHRoZSBrZXJuZWwgdG8gbm90aWZ5IHRoZSB1c2VyCnNwYWNlIG9mIGFuIGV2ZW50IG9yaWdp bmF0aW5nIGZyb20gdGhlIHVzZXIgc3BhY2UgYW5kIG15IHF1ZXN0aW9uIGlzIHdoeSBub3QKdG8g c2V0IHVwIHRoZSB1c2VyIHNwYWNlIHRvIGdlbmVyYXRlIHRoZSBub3RpZmljYXRpb24gd2l0aG91 dCByZWx5aW5nIG9uIHRoZQprZXJuZWwgdG8gZG8gdGhhdC4KCj4gLSB0aGlzIGNvZGUgaXMgc3Rh bmRhcmQgZm9yIGFsbCBpbXBsZW1lbnRhdGlvbiBvZiBzdXNwZW5kL2hpYmVybmF0ZS9yZXN1bWUK CkkgZ3Vlc3MgeW91IG1lYW4gdGhlIGV4aXN0aW5nIGtlcm5lbC1zaWRlIHN1c3BlbmQvaGliZXJu YXRlIGNvZGUuCgpTdXJlLCBpdCBpcywgYnV0IHlvdXIgbW9kdWxlIGlzIGdvaW5nIHRvIGV4cG9y dCB0aGUga2VybmVsJ3MgaW50ZXJuYWwgaW50ZXJmYWNlCm91dHNpZGUgdGhlIGtlcm5lbCwgdHVy bmluZyBpdCBpbnRvIGEgcmVhbCBBUEkgYW5kIHRoYXQgaXMgYSBfYmlnXyBfZGVhbF8uICBUaGUK cmVhc29uIHdoeSBpdCBpcyBhIGJpZyBkZWFsIGlzIHRoYXQgd2hpbGUgd2Ugb2Z0ZW4gY2hhbmdl IHRoZSBrZXJuZWwncyBpbnRlcm5hbAppbnRlcmZhY2VzLCB3ZSBkb24ndCBjaGFuZ2UgQVBJcy4g IE9uY2UgY3JlYXRlZCwgYW4gQVBJIChJIG1lYW4gYSByZWFsCnVzZXJsYW5kLWtlcm5lbCBpbnRl cmZhY2UpIGlzIHZlcnkgZGlmZmljdWx0IHRvIGNoYW5nZSwgYmVjYXVzZSB0aGF0IG1vc3Qgb2Z0 ZW4KbGVhZHMgdG8gcmVncmVzc2lvbnMgd2hpY2ggYXJlIHF1aXRlIG5hc3R5IGZyb20gdGhlIHVz ZXIncyBwb2ludCBvZiB2aWV3LgoKU28sIGJhc2ljYWxseSwgeW91IHdhbnQgdXMgdG8gZGVjbGFy ZSB0aGF0IHRoZSBrZXJuZWwncyBpbnRlcm5hbApzdXNwZW5kL2hpYmVybmF0ZSBub3RpZmljYXRp b24gbWVjaGFuaXNtIHdvbid0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLCB3aGljaCBpcwpub3Qgc29t ZXRoaW5nIEknbSBnb2luZyB0byBkbyBhdCB0aGlzIHBvaW50LiAgTW9yZW92ZXIsIGl0IGhhc24n dCBiZWVuIGRlc2lnbmVkCmFzIGFuIEFQSSBhbmQgSSBkb24ndCB0aGluayBpdCdzIHJlYWxseSBz dWl0YWJsZSBmb3IgdGhpcyBwdXJwb3NlLgoKQXQgbGVhc3QsIHRoYXQgcmVxdWlyZXMgc29tZSBt b3JlIGRpc2N1c3Npb24sIHNvIHBsZWFzZSB0ZWxsIHVzIHdoeSB5b3UgbmVlZAp0aGUga2VybmVs IHRvIG5vdGlmeSB0aGUgdXNlciBzcGFjZSBhYm91dCBzdXNwZW5kL2hpYmVybmF0aW9uLiAgSU9X LCB3aGF0J3MgdGhlCmZpbmFsIHB1cnBvc2Ugb2YgdGhpcz8gIFtBZGRlZCBzb21lIENDcy5dCgo+ IC0gaXQgaXMgc21hbGwKPiAtIGl0IGhhdmUgbGVzcyBvdmVyaGVhZCwgZG9udCBuZWVkIGRidXMg YW5kIGFsbCByZXN0IHNlcnZpY2VzLgoKVGhhdCBjb3VsZCBoYXZlIGJlZW4gYSBnb29kIGFyZ3Vt ZW50IGlmIHRob3NlIHNlcnZpY2VzIGhhZCBub3QgYmVlbiB1c2VkCmFscmVhZHksIGJ1dCB0aGF0 J3Mgbm90IHRoZSBjYXNlLgoKPiAtIGNvdWxkIGJlIGV2ZW4gdXNlZCBwYXJ0aWFseSBieSBwbS11 dGlscwo+IC0gaXQgaXMgcGVyZmVjdCBqdXN0IHRvIG5vdGlmeSBhYm91dCBldmVudAoKT0ssIGJ1 dCB3aHkgZXhhY3RseSBkbyBfeW91XyBuZWVkIHRoYXQgdG8gaGFwcGVuPwoKVGhlcmUncyBvbmUg aW1wb3J0YW50IGRyYXdiYWNrIG9mIG1ha2luZyB0aGUga2VybmVsIGdlbmVyYXRlIHRoZSBub3Rp ZmljYXRpb24uCk5hbWVseSwgZXZlbiBpZiB5b3VyIHVzZXJzcGFjZSB0YXNrIGlzIG5vdGlmaWVk IGJ5IHRoZSBrZXJuZWwgb2YgYSBQTSBldmVudCwKdGhhdCBkb2Vzbid0IG1lYW4gaXQnbGwgaGF2 ZSB0aGUgdGltZSB0byBhY3QgdXBvbiB0aGF0LCBiZWNhdXNlIHRoZSBrZXJuZWwgd2lsbAphdHRl bXB0IHRvIGZyZWV6ZSBpdCByaWdodCBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGhhcyBiZWVuIHNl bnQuICBUaGlzIG1lYW5zCnlvdSdkIG5lZWQgYSB3YXkgdG8gbWFrZSB0aGUga2VybmVsIHdhaXQg Zm9yIHlvdXIgdXNlciBzcGFjZSBwcm9jZXNzIHRvIGZpbmlzaAppdCdzIGpvYiBiZWZvcmUgY29u dGludWluZyB0aGUgc3VzcGVuZC9oaWJlcm5hdGUgcHJvY2Vzcy4gIE90aGVyd2lzZSBpdCdzIG5v dApnb2luZyB0byBiZSB2ZXJ5IHVzZWZ1bC4KClJhZmFlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1wbSBtYWlsaW5nIGxpc3QKbGludXgtcG1A bGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBt From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752031Ab0ABX3M (ORCPT ); Sat, 2 Jan 2010 18:29:12 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751446Ab0ABX3M (ORCPT ); Sat, 2 Jan 2010 18:29:12 -0500 Received: from ogre.sisk.pl ([217.79.144.158]:49590 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751212Ab0ABX3L convert rfc822-to-8bit (ORCPT ); Sat, 2 Jan 2010 18:29:11 -0500 From: "Rafael J. Wysocki" To: =?utf-8?q?Bart=C5=82omiej_Zimo=C5=84?= Subject: Re: [suspend/resume] Re: userspace notification from module Date: Sun, 3 Jan 2010 00:29:22 +0100 User-Agent: KMail/1.12.3 (Linux/2.6.33-rc2-tst; KDE/4.3.3; x86_64; ; ) Cc: Andy Walls , Daniel Borkmann , linux-kernel@vger.kernel.org, pm list , Alan Stern References: <686edb2c.6263643a.4b3f4a3b.b60b3@o2.pl> <201001022201.04281.rjw@sisk.pl> <7cf4f51f.5fc2a5cd.4b3fc3ad.c849c@o2.pl> In-Reply-To: <7cf4f51f.5fc2a5cd.4b3fc3ad.c849c@o2.pl> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 8BIT Message-Id: <201001030029.22449.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Saturday 02 January 2010, Bartłomiej Zimoń wrote: > > Dnia 2 stycznia 2010 22:01 "Rafael J. Wysocki" napisał(a): > > > On Saturday 02 January 2010, Bartłomiej Zimoń wrote: > > > Dnia 2 stycznia 2010 16:56 Daniel Borkmann napisał(a): > > > > Hi Andy, > > > > > > > > 2010/1/2 Andy Walls : > > > > > Why not: > > > > > > > > > > a. write a module that implements a device node that supports poll(), > > > > > and > > > > > > > > > > b. have a user space process select() on the fd for read or exception > > > > > notification > > > > > > > > > > ? > > > > > > > > This is, of course, another possible solution that is more "cleaner" > > > > than the one with the signals. > > > > Then, your userspace program would have another thread polling for the > > > > device node. Question is which timeout would be appropriate to be "CPU > > > > friendly" and to keep notification latency short? > > > > > > > > > > Just need as fast as possible solution and on the other hand acceptable for kernel sources. > > > Usually programs needs just to disconnect something or set one flag. > > > Even if program will have no time for this it could be enough just to send this precious info. > > > > Perhaps I don't understand correctly what you're trying to achieve, but at the > > moment suspend is always started from user space, this way or another, and on > > the majority (all?) of the modern distros pm-utils is involved in that. > > So, why don't you provide a pm-utils hook for your process (like, for example, > > NetworkManager)? > > > > Thanks for Your answare. > Some points of my idea: > - don't think everyone want to use pm-utils (didn't say it is bad) That certainly is true, but I think these people won't have a problem setting up their suspend scripts to trigger the notification anyway. :-) Point is, suspend hooks are used anyway by almost everyone (due to graphics, networking, faulty drivers), so I think you could just use this mechanism, be it pm-utils or something else. To put it in a different way, you apparently want the kernel to notify the user space of an event originating from the user space and my question is why not to set up the user space to generate the notification without relying on the kernel to do that. > - this code is standard for all implementation of suspend/hibernate/resume I guess you mean the existing kernel-side suspend/hibernate code. Sure, it is, but your module is going to export the kernel's internal interface outside the kernel, turning it into a real API and that is a _big_ _deal_. The reason why it is a big deal is that while we often change the kernel's internal interfaces, we don't change APIs. Once created, an API (I mean a real userland-kernel interface) is very difficult to change, because that most often leads to regressions which are quite nasty from the user's point of view. So, basically, you want us to declare that the kernel's internal suspend/hibernate notification mechanism won't change in the future, which is not something I'm going to do at this point. Moreover, it hasn't been designed as an API and I don't think it's really suitable for this purpose. At least, that requires some more discussion, so please tell us why you need the kernel to notify the user space about suspend/hibernation. IOW, what's the final purpose of this? [Added some CCs.] > - it is small > - it have less overhead, dont need dbus and all rest services. That could have been a good argument if those services had not been used already, but that's not the case. > - could be even used partialy by pm-utils > - it is perfect just to notify about event OK, but why exactly do _you_ need that to happen? There's one important drawback of making the kernel generate the notification. Namely, even if your userspace task is notified by the kernel of a PM event, that doesn't mean it'll have the time to act upon that, because the kernel will attempt to freeze it right after the notification has been sent. This means you'd need a way to make the kernel wait for your user space process to finish it's job before continuing the suspend/hibernate process. Otherwise it's not going to be very useful. Rafael