From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Date: Tue, 31 May 2016 13:02:31 +0200 From: Peter Wu To: Mika Westerberg Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Dave Airlie , Bjorn Helgaas , linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, "Rafael J. Wysocki" Subject: Re: [PATCH 4/4] drm/nouveau/acpi: fix lockup with PCIe runtime PM Message-ID: <20160531110231.GB1308@al> References: <1464130381-4797-1-git-send-email-peter@lekensteyn.nl> <1464130381-4797-5-git-send-email-peter@lekensteyn.nl> <20160525135535.GN1789@lahna.fi.intel.com> <20160527111037.GA1436@al> <20160530095709.GK1789@lahna.fi.intel.com> <20160530122010.GB1149@al> <20160530130909.GA1743@lahna.fi.intel.com> <20160530161351.GA1355@al> <20160531084356.GH1743@lahna.fi.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <20160531084356.GH1743@lahna.fi.intel.com> List-ID: On Tue, May 31, 2016 at 11:43:56AM +0300, Mika Westerberg wrote: > On Mon, May 30, 2016 at 06:13:51PM +0200, Peter Wu wrote: > > Do you have any suggestions for the case where the pcieport driver > > refuses to put the bridge in D3 (because the BIOS is too old)? In that > > case the nouveau driver needs to fallback to the DSM method (but not > > when runtime PM is deliberately disabled by writing control=on). > > Do you know what Windows does then? I think we should do the same if > possible. If the BIOS is too old, then it probably does not have _PR3 objects nor calls to _OSI("Windows 2013"). See below. > If user has disabled runtime PM from the root port deliberately, there > might be good reason to do so. Why we want to fallback to something that > could cause problems? I mean _DSM on such systems is probably not that > much tested because everybody runs Windows 8+ and using standard ACPI > power resources. I agree that when runtime PM on the root port is disabled (control=on), then there should be no fallback to DSM. For devices without _PR3 it is clear that DSM will always be used (if available). In other cases (where _PR3 is available) we can distinguish: - pre-Windows 8 machines. I have never seen this combination. Firmware writers seems to prefer sticking to reference code which did not use power resources before. - Machines targeting Windows 8 or newer. (Note that there exist machines with Windows 8 support that do not have _PR3, DSM is used in that case.) If Windows 7 is running on a Windows 8 machine, PR3 will not be used anyway. If the Linux kernel claims support for Windows 8, but does not use PR3, then we are probably approaching an untested area. So far firmware seems fine with using *only* DSM *or* PR3, but at least my laptop gets confused when you use both at the same time. The latter happens on pci/pm (8b71f565) without other patches: 1. nouveau invokes _DSM and _PS3, device is put in D3cold. 2. pcieport driver calls PG00._OFF (PG00 is returned by _PR3). 3. Wake up Nvidia device (e.g. by power=on). 4. This will trigger PG00._ON (via pcieport) and _PS0 (via nouveau). 5. Nvidia card is not really ready (observed via "restoring config space at offset ... (was 0xffffffff, writing ...)", a soft lockup and RCU stall after that requiring a reboot to recover). nouveau could be patched not to invoke DSM when PR3 is detected (proposal is ready) but will keep the device powered on in these cases: - nouveau is patched, but pci/pm patches are not. - PR3 is supported but due to the cutoff date (2015) it is not used. - Boot option pcie_port_pm=off. - runtime PM is disabled for pcieport (should be fine). There is a wealth of acpidumps on Launchpad bug 752542 (https://bugs.launchpad.net/bugs/752542). Search for example for comments in early 2015 or before, those will likely be machine from 2014 or before. Interesting to see is the _PR3 method of a HP Envy TS 15 (11/20/2014): Method (_PR3, 0, NotSerialized) { If (\_OSI ("Windows 2013")) { Return (Package (0x01) { \NVP3 }) } Else { Return (Package (0x00) {}) } } (Note for self: just checking for the _PR3 handle in the nouveau patch is apparently not sufficient, it must really be evaluated.) Other machines with _PR3: - Dell Inspiron 3543 (11/04/2014), comment 757. - Dell XPS 15 9530 (03/28/2014), comment 711. - Novatech 15.6 NSPIRE Laptop (01/20/2014), comment 695. - Lenovo ThinkPad T440p (10/27/2013), comment 659. There were many models from 2013 without _PR3 method but still checking for _OSI("Windows 2013"). Maybe some heuristics based on _PR3 would be more helpful than just a cutoff date? -- Kind regards, Peter Wu https://lekensteyn.nl From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Wu Subject: Re: [PATCH 4/4] drm/nouveau/acpi: fix lockup with PCIe runtime PM Date: Tue, 31 May 2016 13:02:31 +0200 Message-ID: <20160531110231.GB1308@al> References: <1464130381-4797-1-git-send-email-peter@lekensteyn.nl> <1464130381-4797-5-git-send-email-peter@lekensteyn.nl> <20160525135535.GN1789@lahna.fi.intel.com> <20160527111037.GA1436@al> <20160530095709.GK1789@lahna.fi.intel.com> <20160530122010.GB1149@al> <20160530130909.GA1743@lahna.fi.intel.com> <20160530161351.GA1355@al> <20160531084356.GH1743@lahna.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160531084356.GH1743-3PARRvDOhMZrdx17CPfAsdBPR1lH4CV8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Mika Westerberg Cc: linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "Rafael J. Wysocki" , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Bjorn Helgaas , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Dave Airlie List-Id: linux-pm@vger.kernel.org T24gVHVlLCBNYXkgMzEsIDIwMTYgYXQgMTE6NDM6NTZBTSArMDMwMCwgTWlrYSBXZXN0ZXJiZXJn IHdyb3RlOgo+IE9uIE1vbiwgTWF5IDMwLCAyMDE2IGF0IDA2OjEzOjUxUE0gKzAyMDAsIFBldGVy IFd1IHdyb3RlOgo+ID4gRG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIGZvciB0aGUgY2FzZSB3 aGVyZSB0aGUgcGNpZXBvcnQgZHJpdmVyCj4gPiByZWZ1c2VzIHRvIHB1dCB0aGUgYnJpZGdlIGlu IEQzIChiZWNhdXNlIHRoZSBCSU9TIGlzIHRvbyBvbGQpPyBJbiB0aGF0Cj4gPiBjYXNlIHRoZSBu b3V2ZWF1IGRyaXZlciBuZWVkcyB0byBmYWxsYmFjayB0byB0aGUgRFNNIG1ldGhvZCAoYnV0IG5v dAo+ID4gd2hlbiBydW50aW1lIFBNIGlzIGRlbGliZXJhdGVseSBkaXNhYmxlZCBieSB3cml0aW5n IGNvbnRyb2w9b24pLgo+IAo+IERvIHlvdSBrbm93IHdoYXQgV2luZG93cyBkb2VzIHRoZW4/IEkg dGhpbmsgd2Ugc2hvdWxkIGRvIHRoZSBzYW1lIGlmCj4gcG9zc2libGUuCgpJZiB0aGUgQklPUyBp cyB0b28gb2xkLCB0aGVuIGl0IHByb2JhYmx5IGRvZXMgbm90IGhhdmUgX1BSMyBvYmplY3RzIG5v cgpjYWxscyB0byBfT1NJKCJXaW5kb3dzIDIwMTMiKS4gU2VlIGJlbG93LgoKPiBJZiB1c2VyIGhh cyBkaXNhYmxlZCBydW50aW1lIFBNIGZyb20gdGhlIHJvb3QgcG9ydCBkZWxpYmVyYXRlbHksIHRo ZXJlCj4gbWlnaHQgYmUgZ29vZCByZWFzb24gdG8gZG8gc28uIFdoeSB3ZSB3YW50IHRvIGZhbGxi YWNrIHRvIHNvbWV0aGluZyB0aGF0Cj4gY291bGQgY2F1c2UgcHJvYmxlbXM/IEkgbWVhbiBfRFNN IG9uIHN1Y2ggc3lzdGVtcyBpcyBwcm9iYWJseSBub3QgdGhhdAo+IG11Y2ggdGVzdGVkIGJlY2F1 c2UgZXZlcnlib2R5IHJ1bnMgV2luZG93cyA4KyBhbmQgdXNpbmcgc3RhbmRhcmQgQUNQSQo+IHBv d2VyIHJlc291cmNlcy4KCkkgYWdyZWUgdGhhdCB3aGVuIHJ1bnRpbWUgUE0gb24gdGhlIHJvb3Qg cG9ydCBpcyBkaXNhYmxlZCAoY29udHJvbD1vbiksCnRoZW4gdGhlcmUgc2hvdWxkIGJlIG5vIGZh bGxiYWNrIHRvIERTTS4gRm9yIGRldmljZXMgd2l0aG91dCBfUFIzIGl0IGlzCmNsZWFyIHRoYXQg RFNNIHdpbGwgYWx3YXlzIGJlIHVzZWQgKGlmIGF2YWlsYWJsZSkuCgpJbiBvdGhlciBjYXNlcyAo d2hlcmUgX1BSMyBpcyBhdmFpbGFibGUpIHdlIGNhbiBkaXN0aW5ndWlzaDoKIC0gcHJlLVdpbmRv d3MgOCBtYWNoaW5lcy4gSSBoYXZlIG5ldmVyIHNlZW4gdGhpcyBjb21iaW5hdGlvbi4gRmlybXdh cmUKICAgd3JpdGVycyBzZWVtcyB0byBwcmVmZXIgc3RpY2tpbmcgdG8gcmVmZXJlbmNlIGNvZGUg d2hpY2ggZGlkIG5vdCB1c2UKICAgcG93ZXIgcmVzb3VyY2VzIGJlZm9yZS4KIC0gTWFjaGluZXMg dGFyZ2V0aW5nIFdpbmRvd3MgOCBvciBuZXdlci4gKE5vdGUgdGhhdCB0aGVyZSBleGlzdAogICBt YWNoaW5lcyB3aXRoIFdpbmRvd3MgOCBzdXBwb3J0IHRoYXQgZG8gbm90IGhhdmUgX1BSMywgRFNN IGlzIHVzZWQgaW4KICAgdGhhdCBjYXNlLikKCklmIFdpbmRvd3MgNyBpcyBydW5uaW5nIG9uIGEg V2luZG93cyA4IG1hY2hpbmUsIFBSMyB3aWxsIG5vdCBiZSB1c2VkCmFueXdheS4gSWYgdGhlIExp bnV4IGtlcm5lbCBjbGFpbXMgc3VwcG9ydCBmb3IgV2luZG93cyA4LCBidXQgZG9lcyBub3QKdXNl IFBSMywgdGhlbiB3ZSBhcmUgcHJvYmFibHkgYXBwcm9hY2hpbmcgYW4gdW50ZXN0ZWQgYXJlYS4g U28gZmFyCmZpcm13YXJlIHNlZW1zIGZpbmUgd2l0aCB1c2luZyAqb25seSogRFNNICpvciogUFIz LCBidXQgYXQgbGVhc3QgbXkKbGFwdG9wIGdldHMgY29uZnVzZWQgd2hlbiB5b3UgdXNlIGJvdGgg YXQgdGhlIHNhbWUgdGltZS4KClRoZSBsYXR0ZXIgaGFwcGVucyBvbiBwY2kvcG0gKDhiNzFmNTY1 KSB3aXRob3V0IG90aGVyIHBhdGNoZXM6CgogMS4gbm91dmVhdSBpbnZva2VzIF9EU00gYW5kIF9Q UzMsIGRldmljZSBpcyBwdXQgaW4gRDNjb2xkLgogMi4gcGNpZXBvcnQgZHJpdmVyIGNhbGxzIFBH MDAuX09GRiAoUEcwMCBpcyByZXR1cm5lZCBieSBfUFIzKS4KIDMuIFdha2UgdXAgTnZpZGlhIGRl dmljZSAoZS5nLiBieSBwb3dlcj1vbikuCiA0LiBUaGlzIHdpbGwgdHJpZ2dlciBQRzAwLl9PTiAo dmlhIHBjaWVwb3J0KSBhbmQgX1BTMCAodmlhIG5vdXZlYXUpLgogNS4gTnZpZGlhIGNhcmQgaXMg bm90IHJlYWxseSByZWFkeSAob2JzZXJ2ZWQgdmlhICJyZXN0b3JpbmcgY29uZmlnCiAgICBzcGFj ZSBhdCBvZmZzZXQgLi4uICh3YXMgMHhmZmZmZmZmZiwgd3JpdGluZyAuLi4pIiwgYSBzb2Z0IGxv Y2t1cAogICAgYW5kIFJDVSBzdGFsbCBhZnRlciB0aGF0IHJlcXVpcmluZyBhIHJlYm9vdCB0byBy ZWNvdmVyKS4KCm5vdXZlYXUgY291bGQgYmUgcGF0Y2hlZCBub3QgdG8gaW52b2tlIERTTSB3aGVu IFBSMyBpcyBkZXRlY3RlZAoocHJvcG9zYWwgaXMgcmVhZHkpIGJ1dCB3aWxsIGtlZXAgdGhlIGRl dmljZSBwb3dlcmVkIG9uIGluIHRoZXNlIGNhc2VzOgogLSBub3V2ZWF1IGlzIHBhdGNoZWQsIGJ1 dCBwY2kvcG0gcGF0Y2hlcyBhcmUgbm90LgogLSBQUjMgaXMgc3VwcG9ydGVkIGJ1dCBkdWUgdG8g dGhlIGN1dG9mZiBkYXRlICgyMDE1KSBpdCBpcyBub3QgdXNlZC4KIC0gQm9vdCBvcHRpb24gcGNp ZV9wb3J0X3BtPW9mZi4KIC0gcnVudGltZSBQTSBpcyBkaXNhYmxlZCBmb3IgcGNpZXBvcnQgKHNo b3VsZCBiZSBmaW5lKS4KCgpUaGVyZSBpcyBhIHdlYWx0aCBvZiBhY3BpZHVtcHMgb24gTGF1bmNo cGFkIGJ1ZyA3NTI1NDIKKGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L2J1Z3MvNzUyNTQyKS4g U2VhcmNoIGZvciBleGFtcGxlIGZvcgpjb21tZW50cyBpbiBlYXJseSAyMDE1IG9yIGJlZm9yZSwg dGhvc2Ugd2lsbCBsaWtlbHkgYmUgbWFjaGluZSBmcm9tIDIwMTQKb3IgYmVmb3JlLgoKSW50ZXJl c3RpbmcgdG8gc2VlIGlzIHRoZSBfUFIzIG1ldGhvZCBvZiBhIEhQIEVudnkgVFMgMTUgKDExLzIw LzIwMTQpOgoKICAgIE1ldGhvZCAoX1BSMywgMCwgTm90U2VyaWFsaXplZCkgewogICAgICAgIElm IChcX09TSSAoIldpbmRvd3MgMjAxMyIpKSB7CiAgICAgICAgICAgIFJldHVybiAoUGFja2FnZSAo MHgwMSkgewogICAgICAgICAgICAgICAgXE5WUDMKICAgICAgICAgICAgfSkKICAgICAgICB9IEVs c2UgewogICAgICAgICAgICBSZXR1cm4gKFBhY2thZ2UgKDB4MDApIHt9KQogICAgICAgIH0KICAg IH0KCihOb3RlIGZvciBzZWxmOiBqdXN0IGNoZWNraW5nIGZvciB0aGUgX1BSMyBoYW5kbGUgaW4g dGhlIG5vdXZlYXUgcGF0Y2gKaXMgYXBwYXJlbnRseSBub3Qgc3VmZmljaWVudCwgaXQgbXVzdCBy ZWFsbHkgYmUgZXZhbHVhdGVkLikKCk90aGVyIG1hY2hpbmVzIHdpdGggX1BSMzoKIC0gRGVsbCBJ bnNwaXJvbiAzNTQzICgxMS8wNC8yMDE0KSwgY29tbWVudCA3NTcuCiAtIERlbGwgWFBTIDE1IDk1 MzAgKDAzLzI4LzIwMTQpLCBjb21tZW50IDcxMS4KIC0gTm92YXRlY2ggMTUuNiBOU1BJUkUgTGFw dG9wICgwMS8yMC8yMDE0KSwgY29tbWVudCA2OTUuCiAtIExlbm92byBUaGlua1BhZCBUNDQwcCAo MTAvMjcvMjAxMyksIGNvbW1lbnQgNjU5LgoKVGhlcmUgd2VyZSBtYW55IG1vZGVscyBmcm9tIDIw MTMgd2l0aG91dCBfUFIzIG1ldGhvZCBidXQgc3RpbGwgY2hlY2tpbmcKZm9yIF9PU0koIldpbmRv d3MgMjAxMyIpLiBNYXliZSBzb21lIGhldXJpc3RpY3MgYmFzZWQgb24gX1BSMyB3b3VsZCBiZQpt b3JlIGhlbHBmdWwgdGhhbiBqdXN0IGEgY3V0b2ZmIGRhdGU/Ci0tIApLaW5kIHJlZ2FyZHMsClBl dGVyIFd1Cmh0dHBzOi8vbGVrZW5zdGV5bi5ubApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpOb3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL25vdXZlYXUK