From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout2.hostsharing.net ([83.223.90.233]:42061 "EHLO mailout2.hostsharing.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1428834AbdDYJqQ (ORCPT ); Tue, 25 Apr 2017 05:46:16 -0400 Date: Tue, 25 Apr 2017 11:46:42 +0200 From: Lukas Wunner To: Imre Deak Cc: "Rafael J. Wysocki" , intel-gfx@lists.freedesktop.org, "Rafael J. Wysocki" , Bjorn Helgaas , linux-pci@vger.kernel.org Subject: Re: [PATCH v2 1/2] PCI / PM: Add needs_resume flag to avoid suspend complete optimization Message-ID: <20170425094642.GA10128@wunner.de> References: <1493044063-2095-1-git-send-email-imre.deak@intel.com> <20170424200230.GA9910@wunner.de> <20170424204242.GA9933@wunner.de> <1741762.duLppskeDL@aspire.rjw.lan> <20170425062149.GA9999@wunner.de> <20170425085507.GA3719@ideak-desk.fi.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <20170425085507.GA3719@ideak-desk.fi.intel.com> Sender: linux-pci-owner@vger.kernel.org List-ID: On Tue, Apr 25, 2017 at 11:55:07AM +0300, Imre Deak wrote: > On Tue, Apr 25, 2017 at 08:21:49AM +0200, Lukas Wunner wrote: > > On Mon, Apr 24, 2017 at 10:56:40PM +0200, Rafael J. Wysocki wrote: > > > On Monday, April 24, 2017 10:42:42 PM Lukas Wunner wrote: > > > > On Mon, Apr 24, 2017 at 10:02:30PM +0200, Lukas Wunner wrote: > > > > > On Mon, Apr 24, 2017 at 05:27:42PM +0300, Imre Deak wrote: > > > > > > Some drivers - like i915 - may not support the system suspend direct > > > > > > complete optimization due to differences in their runtime and system > > > > > > suspend sequence. Add a flag that when set resumes the device before > > > > > > calling the driver's system suspend handlers which effectively disables > > > > > > the optimization. > > > > > > > > > > FWIW, there are at least two alternative solutions to this problem which > > > > > do not require changes to the PCI core: > > > > > > > > > > (1) Add a ->prepare hook to i915_pm_ops which calls pm_runtime_get_sync() > > > > > and a ->complete hook which calls pm_runtime_put(). > > > > > > > > Thinking a bit more about this, it's even simpler: The PM core acquires > > > > a runtime PM ref in device_prepare() and releases it in device_complete(), > > > > so it's sufficient to just call pm_runtime_resume() in a ->prepare hook > > > > that's newly added to i915. No ->complete hook necessary. Tentative > > > > patch below, based on drm-intel-fixes, would replace both of your patches. > > > > > > Calling it in ->prepare() means that everybody is now waiting for you to > > > resume. > > > > > > Not quite optimal IMO. > > > > Okay, understood. > > > > However in the absence of a device_link from the HDA device (consumer) > > to the GPU (supplier), there's no guarantee that the GPU is resumed > > when the HDA device needs it due to the asynchronous invocation of > > the ->suspend hooks. This is assuming that the HDA device already > > needs the GPU during ->suspend phase. > > i915 has ->resume_early and ->suspend_late hooks that provides the above > guarantee. Employing device links is preferable IMO: * Less code. Just find the HDA device in your ->probe hook and call device_link_add(). Alternatively do it from the HDA driver. Even adding the link from both drivers should be fine. I can provide you with an evaluation patch if you'd like. * Avoidance of doing things behind the PM core's back. * Takes care of more stuff than just system sleep (e.g. shutdown ordering). Thanks, Lukas From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Wunner Subject: Re: [PATCH v2 1/2] PCI / PM: Add needs_resume flag to avoid suspend complete optimization Date: Tue, 25 Apr 2017 11:46:42 +0200 Message-ID: <20170425094642.GA10128@wunner.de> References: <1493044063-2095-1-git-send-email-imre.deak@intel.com> <20170424200230.GA9910@wunner.de> <20170424204242.GA9933@wunner.de> <1741762.duLppskeDL@aspire.rjw.lan> <20170425062149.GA9999@wunner.de> <20170425085507.GA3719@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout2.hostsharing.net (mailout2.hostsharing.net [83.223.90.233]) by gabe.freedesktop.org (Postfix) with ESMTPS id DB8BE6E008 for ; Tue, 25 Apr 2017 09:46:15 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170425085507.GA3719@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: Bjorn Helgaas , linux-pci@vger.kernel.org, intel-gfx@lists.freedesktop.org, "Rafael J. Wysocki" , "Rafael J. Wysocki" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBcHIgMjUsIDIwMTcgYXQgMTE6NTU6MDdBTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIFR1ZSwgQXByIDI1LCAyMDE3IGF0IDA4OjIxOjQ5QU0gKzAyMDAsIEx1a2FzIFd1bm5l ciB3cm90ZToKPiA+IE9uIE1vbiwgQXByIDI0LCAyMDE3IGF0IDEwOjU2OjQwUE0gKzAyMDAsIFJh ZmFlbCBKLiBXeXNvY2tpIHdyb3RlOgo+ID4gPiBPbiBNb25kYXksIEFwcmlsIDI0LCAyMDE3IDEw OjQyOjQyIFBNIEx1a2FzIFd1bm5lciB3cm90ZToKPiA+ID4gPiBPbiBNb24sIEFwciAyNCwgMjAx NyBhdCAxMDowMjozMFBNICswMjAwLCBMdWthcyBXdW5uZXIgd3JvdGU6Cj4gPiA+ID4gPiBPbiBN b24sIEFwciAyNCwgMjAxNyBhdCAwNToyNzo0MlBNICswMzAwLCBJbXJlIERlYWsgd3JvdGU6Cj4g PiA+ID4gPiA+IFNvbWUgZHJpdmVycyAtIGxpa2UgaTkxNSAtIG1heSBub3Qgc3VwcG9ydCB0aGUg c3lzdGVtIHN1c3BlbmQgZGlyZWN0Cj4gPiA+ID4gPiA+IGNvbXBsZXRlIG9wdGltaXphdGlvbiBk dWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlaXIgcnVudGltZSBhbmQgc3lzdGVtCj4gPiA+ID4gPiA+ IHN1c3BlbmQgc2VxdWVuY2UuIEFkZCBhIGZsYWcgdGhhdCB3aGVuIHNldCByZXN1bWVzIHRoZSBk ZXZpY2UgYmVmb3JlCj4gPiA+ID4gPiA+IGNhbGxpbmcgdGhlIGRyaXZlcidzIHN5c3RlbSBzdXNw ZW5kIGhhbmRsZXJzIHdoaWNoIGVmZmVjdGl2ZWx5IGRpc2FibGVzCj4gPiA+ID4gPiA+IHRoZSBv cHRpbWl6YXRpb24uCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEZXSVcsIHRoZXJlIGFyZSBhdCBsZWFz dCB0d28gYWx0ZXJuYXRpdmUgc29sdXRpb25zIHRvIHRoaXMgcHJvYmxlbSB3aGljaAo+ID4gPiA+ ID4gZG8gbm90IHJlcXVpcmUgY2hhbmdlcyB0byB0aGUgUENJIGNvcmU6Cj4gPiA+ID4gPiAKPiA+ ID4gPiA+ICgxKSBBZGQgYSAtPnByZXBhcmUgaG9vayB0byBpOTE1X3BtX29wcyB3aGljaCBjYWxs cyBwbV9ydW50aW1lX2dldF9zeW5jKCkKPiA+ID4gPiA+ICAgICBhbmQgYSAtPmNvbXBsZXRlIGhv b2sgd2hpY2ggY2FsbHMgcG1fcnVudGltZV9wdXQoKS4KPiA+ID4gPiAKPiA+ID4gPiBUaGlua2lu ZyBhIGJpdCBtb3JlIGFib3V0IHRoaXMsIGl0J3MgZXZlbiBzaW1wbGVyOiAgVGhlIFBNIGNvcmUg YWNxdWlyZXMKPiA+ID4gPiBhIHJ1bnRpbWUgUE0gcmVmIGluIGRldmljZV9wcmVwYXJlKCkgYW5k IHJlbGVhc2VzIGl0IGluIGRldmljZV9jb21wbGV0ZSgpLAo+ID4gPiA+IHNvIGl0J3Mgc3VmZmlj aWVudCB0byBqdXN0IGNhbGwgcG1fcnVudGltZV9yZXN1bWUoKSBpbiBhIC0+cHJlcGFyZSBob29r Cj4gPiA+ID4gdGhhdCdzIG5ld2x5IGFkZGVkIHRvIGk5MTUuICBObyAtPmNvbXBsZXRlIGhvb2sg bmVjZXNzYXJ5LiAgVGVudGF0aXZlCj4gPiA+ID4gcGF0Y2ggYmVsb3csIGJhc2VkIG9uIGRybS1p bnRlbC1maXhlcywgd291bGQgcmVwbGFjZSBib3RoIG9mIHlvdXIgcGF0Y2hlcy4KPiA+ID4gCj4g PiA+IENhbGxpbmcgaXQgaW4gLT5wcmVwYXJlKCkgbWVhbnMgdGhhdCBldmVyeWJvZHkgaXMgbm93 IHdhaXRpbmcgZm9yIHlvdSB0bwo+ID4gPiByZXN1bWUuCj4gPiA+IAo+ID4gPiBOb3QgcXVpdGUg b3B0aW1hbCBJTU8uCj4gPiAKPiA+IE9rYXksIHVuZGVyc3Rvb2QuCj4gPiAKPiA+IEhvd2V2ZXIg aW4gdGhlIGFic2VuY2Ugb2YgYSBkZXZpY2VfbGluayBmcm9tIHRoZSBIREEgZGV2aWNlIChjb25z dW1lcikKPiA+IHRvIHRoZSBHUFUgKHN1cHBsaWVyKSwgdGhlcmUncyBubyBndWFyYW50ZWUgdGhh dCB0aGUgR1BVIGlzIHJlc3VtZWQKPiA+IHdoZW4gdGhlIEhEQSBkZXZpY2UgbmVlZHMgaXQgZHVl IHRvIHRoZSBhc3luY2hyb25vdXMgaW52b2NhdGlvbiBvZgo+ID4gdGhlIC0+c3VzcGVuZCBob29r cy4gIFRoaXMgaXMgYXNzdW1pbmcgdGhhdCB0aGUgSERBIGRldmljZSBhbHJlYWR5Cj4gPiBuZWVk cyB0aGUgR1BVIGR1cmluZyAtPnN1c3BlbmQgcGhhc2UuCj4gCj4gaTkxNSBoYXMgLT5yZXN1bWVf ZWFybHkgYW5kIC0+c3VzcGVuZF9sYXRlIGhvb2tzIHRoYXQgcHJvdmlkZXMgdGhlIGFib3ZlCj4g Z3VhcmFudGVlLgoKRW1wbG95aW5nIGRldmljZSBsaW5rcyBpcyBwcmVmZXJhYmxlIElNTzoKCiog TGVzcyBjb2RlLiAgSnVzdCBmaW5kIHRoZSBIREEgZGV2aWNlIGluIHlvdXIgLT5wcm9iZSBob29r IGFuZCBjYWxsCiAgZGV2aWNlX2xpbmtfYWRkKCkuICBBbHRlcm5hdGl2ZWx5IGRvIGl0IGZyb20g dGhlIEhEQSBkcml2ZXIuICBFdmVuCiAgYWRkaW5nIHRoZSBsaW5rIGZyb20gYm90aCBkcml2ZXJz IHNob3VsZCBiZSBmaW5lLiAgSSBjYW4gcHJvdmlkZQogIHlvdSB3aXRoIGFuIGV2YWx1YXRpb24g cGF0Y2ggaWYgeW91J2QgbGlrZS4KCiogQXZvaWRhbmNlIG9mIGRvaW5nIHRoaW5ncyBiZWhpbmQg dGhlIFBNIGNvcmUncyBiYWNrLgoKKiBUYWtlcyBjYXJlIG9mIG1vcmUgc3R1ZmYgdGhhbiBqdXN0 IHN5c3RlbSBzbGVlcCAoZS5nLiBzaHV0ZG93biBvcmRlcmluZykuCgpUaGFua3MsCgpMdWthcwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK