From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg KH Subject: Re: Making udev emit a signal when it is done loading modules Date: Sat, 17 Jan 2015 05:56:30 -0800 Message-ID: <20150117135630.GA25585@kroah.com> References: <54BA20D0.7060402@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <54BA20D0.7060402@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: systemd-devel-bounces@lists.freedesktop.org Sender: "systemd-devel" To: Hans de Goede Cc: "linux-ide@vger.kernel.org" , Mark Brown , systemd-devel@lists.freedesktop.org, linux-arm-kernel , devicetree List-Id: linux-ide@vger.kernel.org T24gU2F0LCBKYW4gMTcsIDIwMTUgYXQgMDk6NDQ6MDBBTSArMDEwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBEZWFyIHVkZXYgZGV2ZWxvcGVycywKPiAKPiBXZSAobWUgYW5kIHNvbWUga2VybmVs IGRldnMgbW9zdGx5KSB3b3VsZCBsaWtlIHRvIGFkZCBzdXBwb3J0IHRvCj4gdGhlIGtlcm5lbCBm b3IgdXNlcnNwYWNlIHRlbGxpbmcgdGhlIGtlcm5lbCB0aGF0IGl0IGlzIGRvbmUgd2l0aAo+IHRo ZSAqaW5pdGlhbCogbG9hZGluZyBvZiBtb2R1bGVzLCB3aXRoIHRoZSBwdXJwb3NlIG9mIGNsZWFu aW5nIHVwCj4gKGRpc2FibGluZykgdW51c2VkIGhhcndhcmUgcmVzb3VyY2VzIGxpa2UgZS5nLiBy ZWd1bGF0b3JzIGFuZAo+IGNsb2Nrcy4KCkJ1dCB5b3UgZG9uJ3QgImtub3ciIHdoZW4gdGhhdCBo YXBwZW5zLiAgRXNwZWNpYWxseSB3aXRoIGRpc2NvdmVyYWJsZQpidXNzZXMgKFBDSSwgVVNCLCBl dGMuKSwgeW91IGtub3cgdGhpcyA6KQoKPiBDdXJyZW50bHkgdGhlIGtlcm5lbCBkb2VzIHRoaXMg Y2xlYW51cCBqdXN0IGJlZm9yZSBpdCBzdGFydHMgaW5pdAo+ICh3aGljaCBtYXkgdmVyeSB3ZWxs IGJlIGluaXQgZnJvbSBhIHJhbWRpc2spLiBJbiBzb21lIGNhc2VzIHRoaXMKPiBpcyB0b28gZWFy bHkgcmVhbGx5LCBiZWNhdXNlIGxhdGVyIG9uIGEgbW9kdWxlIG1heSBnZXQgbG9hZGVkCj4gd2hp Y2ggbmVlZHMgdGhpcyByZXNvdXJjZXMsIHRoZXNlIHJlc291cmNlcyB3aWxsIHRoZW4gZ2V0IHR1 cm5lZAo+IG9uIGFnYWluIGJ5IHRoZSBsb2FkZWQgZHJpdmVyLCBhbmQgbW9zdCBvZiB0aGUgdGlt ZSB0aGlzIGlzIG5vdAo+IGFuIGlzc3VlLCBidXQgc29tZXRpbWVzIGl0IGlzLgo+IAo+IEkgcmVh bGl6ZSB2ZXJ5IHdlbGwgdGhhdCB0aGVyZSBpcyBubyBtYWdpYyBtb21lbnQgd2hlcmUgdWRldiBp cwo+IHJlYWxseSBldmVyIGRvbmUgbG9hZGluZyBtb2R1bGVzLCBidXQgdGhlIGNhc2Ugd2hpY2gg d2Ugd2FudCB0bwo+IHN1cHBvcnQgb25seSBpbnZvbHZlcyBkZXZpY2VzIHdoaWNoIGFyZSAqYWxy ZWFkeSBlbnVtZXJhdGVkKiwgYnV0Cj4gbWF5IG5vdCB5ZXQgaGF2ZSBhIGRyaXZlciBsb2FkZWQs IHdoZW4gdWRldiBzdGFydHMuIFdlIHdvdWxkIGxpa2UKPiB1ZGV2IHRvIGVtaXQgYSBzaWduYWwg KEFCSSB0byBiZSBkaXNjdXNzZWQpIHdoZW4gaXQgaXMgZG9uZQo+IHRyeWluZyB0byBsb2FkIG1v ZHVsZXMgZm9yIGV2ZXJ5dGhpbmcgd2hpY2ggd2FzIGFscmVhZHkgZW51bWVyYXRlZAo+IHdoZW4g aXQgc3RhcnRzLCBpb3cgd2hlbiB0aGVyZSBhcmUgbm8gbmV3IGRldmljZSBldmVudHMgcGVuZGlu Zwo+IGFueW1vcmUgd2hlbiB1ZGV2IGRvZXMgaXRzIGluaXRpYWwgaG90cGx1ZyByZXBsYXkuCgpU aGUga2VybmVsIGRvZXNuJ3QgZXZlbiAia25vdyIgd2hlbiB0aGlzIHR5cGUgb2YgdGhpbmcgaXMs IGhvdyBjYW4gdWRldgprbm93IHRoaXM/Cgo+IFNvIHRoZSBxdWVzdGlvbiB0byB5b3UgaXMgd291 bGQgeW91IGJlIHdpbGxpbmcgdG8gaW5jbHVkZSBzdWNoCj4gZnVuY3Rpb25hbGl0eSBpbiB1ZGV2 ID8gIE5vdGUgdGhpcyBzaWduYWwgd291bGQgbmVlZCB0byBiZSBlbWl0dGVkCj4gd2hlbiB1ZGV2 IGZyb20gdGhlIHJlYWwgcm9vdGZzIGlzIGRvbmUgd2l0aCB0aGUgaW5pdGlhbCBtb2R1bGUKPiBs b2FkaW5nLCBhcyB0aGUgcmVhbCByb290ZnMgbWF5IHZlcnkgd2VsbCBoYXZlIG1vcmUgbW9kdWxl cwo+IGF2YWlsYWJsZSB0aGVuIHRoZSBpbml0cmQuCj4gCj4gIyMjCj4gCj4gV2l0aCB0aGUgZ2Vu ZXJpYyBzdG9yeSBhYm92ZSB0b2xkIGxldCBtZSBhbHNvIGdpdmUgdGhlIGNvbmNyZXRlCj4gZXhh bXBsZSAvIHByb2JsZW0gd2hpY2ggaGFzIGxldCB0byBtZSBhc2tpbmcgdGhpcyAobm90ZSB0aGlz IGhhcwo+IGJlZW4gYnJvdWdodCB1cCBiZWZvcmUgb24gdmFyaW91cyBrZXJuZWwgbGlzdHMsIGl0 IGlzIGEKPiByZS1vY2N1cmluZyB0aGVtZSwgdGhpcyBpcyBqdXN0IGFuIGV4YW1wbGUgcmVhbGx5 KSA6Cj4gCj4gVGhlIHByb2JsZW0gYXQgaGFuZCBpcyBhIHNhdGEgY29ubmVjdG9yIHdoaWNoIGFs c28gaGFzIGEgc2F0YS1wb3dlcgo+IGNvbm5lY3RvciBvbiBhbiBlbWJlZGRlZCAoaXNoKSBib2Fy ZCB3aGVyZSB0aGUgc2F0YS1wb3dlciBpcwo+IGNvbnRyb2xsZWQgdGhyb3VnaCBhIGdwaW8uIFRo ZSBzYXRhLXBvd2VyIGNvbm5lY3RvciBpcyBtb2RlbGVkCj4gaW4gZGV2aWNldHJlZSBhcyBhIHBv d2VyLXN1cHBseSBhbmQgdGhpcyBzdXBwbHkgZ2V0cyBjb250cm9sbGVkCj4gYnkgdGhlIGFoY2lf cGxhdGZvcm0gZHJpdmVyLgo+IAo+IFRoZSBkaXNrIHBvd2VyIG1heSB2ZXJ5IHdlbGwgaGF2ZSBh bHJlYWR5IGJlZW4gdHVybmVkIG9uIGJ5IHRoZQo+IGJvb3Rsb2FkZXIsIHNvIHdlIGFkZCBhIHJl Z3VsYXRvci1ib290LW9uIHByb3BlcnR5IHRvIHRoZSByZWd1bGF0b3IKPiBub2RlIGluIGRldmlj ZXRyZWUgdG8gbWFrZSBzdXJlIHRoYXQgaXQgaXMgbGVmdCB1bnRvdWNoZWQgd2hlbiB0aGUKPiBy ZWd1bGF0b3IgZHJpdmVyIGxvYWRzLiBJZiB0aGUgYWhjaV9wbGF0Zm9ybSBkcml2ZXIgaXMgYnVp bGQgaW50bwo+IHRoZSBrZXJuZWwsIGl0IHdpbGwgdGhlbiB0YWtlIGNvbnRyb2wgb2YgdGhlIHJl Z3VsYXRvciBhbmQKPiBldmVyeXRoaW5nIHdvcmtzIHdlbGwuCj4gCj4gSWYgaG93ZXZlciB0aGUg YWhjaV9wbGF0Zm9ybSBkcml2ZXIgaXMgYSBtb2R1bGUsIHRoZW4gYXMgc29vbiBhcwo+IHRoZSBr ZXJuZWwgaXMgcmVhZHkgdG8gc3RhcnQgaW5pdCwgdW51c2VkIHJlZ3VsYXRvcnMgYXJlIHR1cm5l ZCBvZmYKPiBhbmQgdGhlIGRpc2sgbG9vc2VzIGl0cyBwb3dlciB3aGlsZSBzcGlubmluZyBhbmQg ZW5kcyB1cCBkb2luZyBhbgo+IGVtZXJnZW5jeSBoZWFkcyBwYXJrLgoKV2hhdCB0dXJucyBvZmYg dGhlIHBvd2VyIGluIHRoaXMgc2l0dWF0aW9uPyAgVGhlIGtlcm5lbD8gIE9yIHVzZXJzcGFjZT8K RG9uJ3QgeW91IGhhdmUgY29udHJvbCBvZiB0aGlzPwoKSGF2ZSB5b3UgdHJpZWQgdG8gZXZlbiBj cmVhdGUgYSBwYXRjaCB0aGF0IGNvdWxkIGRvIHRoaXMgdHlwZSBvZiB0aGluZwp0byB1ZGV2IHRv IHNlZSBpZiBpdCBpcyBldmVuIHBvc3NpYmxlPwoKdGhhbmtzLAoKZ3JlZyBrLWgKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kc3lzdGVtZC1kZXZlbCBtYWls aW5nIGxpc3QKc3lzdGVtZC1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3N5c3RlbWQtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: greg@kroah.com (Greg KH) Date: Sat, 17 Jan 2015 05:56:30 -0800 Subject: [systemd-devel] Making udev emit a signal when it is done loading modules In-Reply-To: <54BA20D0.7060402@redhat.com> References: <54BA20D0.7060402@redhat.com> Message-ID: <20150117135630.GA25585@kroah.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Sat, Jan 17, 2015 at 09:44:00AM +0100, Hans de Goede wrote: > Dear udev developers, > > We (me and some kernel devs mostly) would like to add support to > the kernel for userspace telling the kernel that it is done with > the *initial* loading of modules, with the purpose of cleaning up > (disabling) unused harware resources like e.g. regulators and > clocks. But you don't "know" when that happens. Especially with discoverable busses (PCI, USB, etc.), you know this :) > Currently the kernel does this cleanup just before it starts init > (which may very well be init from a ramdisk). In some cases this > is too early really, because later on a module may get loaded > which needs this resources, these resources will then get turned > on again by the loaded driver, and most of the time this is not > an issue, but sometimes it is. > > I realize very well that there is no magic moment where udev is > really ever done loading modules, but the case which we want to > support only involves devices which are *already enumerated*, but > may not yet have a driver loaded, when udev starts. We would like > udev to emit a signal (ABI to be discussed) when it is done > trying to load modules for everything which was already enumerated > when it starts, iow when there are no new device events pending > anymore when udev does its initial hotplug replay. The kernel doesn't even "know" when this type of thing is, how can udev know this? > So the question to you is would you be willing to include such > functionality in udev ? Note this signal would need to be emitted > when udev from the real rootfs is done with the initial module > loading, as the real rootfs may very well have more modules > available then the initrd. > > ### > > With the generic story above told let me also give the concrete > example / problem which has let to me asking this (note this has > been brought up before on various kernel lists, it is a > re-occuring theme, this is just an example really) : > > The problem at hand is a sata connector which also has a sata-power > connector on an embedded (ish) board where the sata-power is > controlled through a gpio. The sata-power connector is modeled > in devicetree as a power-supply and this supply gets controlled > by the ahci_platform driver. > > The disk power may very well have already been turned on by the > bootloader, so we add a regulator-boot-on property to the regulator > node in devicetree to make sure that it is left untouched when the > regulator driver loads. If the ahci_platform driver is build into > the kernel, it will then take control of the regulator and > everything works well. > > If however the ahci_platform driver is a module, then as soon as > the kernel is ready to start init, unused regulators are turned off > and the disk looses its power while spinning and ends up doing an > emergency heads park. What turns off the power in this situation? The kernel? Or userspace? Don't you have control of this? Have you tried to even create a patch that could do this type of thing to udev to see if it is even possible? thanks, greg k-h