From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout3.hostsharing.net ([176.9.242.54]:37425 "EHLO mailout3.hostsharing.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751908AbeCCJx5 (ORCPT ); Sat, 3 Mar 2018 04:53:57 -0500 Message-Id: From: Lukas Wunner Date: Sat, 3 Mar 2018 10:53:24 +0100 Subject: [PATCH v2 0/7] Modernize vga_switcheroo by using device link for HDA To: dri-devel@lists.freedesktop.org Cc: Peter Wu , Alex Deucher , nouveau@lists.freedesktop.org, Imre Deak , Maik Freudenberg , Raphael Doursenaud , Martin Lopatar , Daniel Drake , Denis Lisov , zigarrre@gmail.com, "Rafael J. Wysocki" , Bjorn Helgaas , linux-pci@vger.kernel.org Sender: linux-pci-owner@vger.kernel.org List-ID: Modernize vga_switcheroo by using a device link to enforce a runtime PM dependency from an HDA controller to the GPU it's integrated into, v2. Changes since v1: - Replace patch [1/7] to use pci_save_state() / pci_restore_state() for consistency between runtime PM code path of bound and unbound devices. (Rafael, Bjorn) - Patch [5/7]: Drop an unnecessary initialization. (Bjorn) Rephrase error message on failed link addition for clarity. Link to v1: https://www.spinics.net/lists/dri-devel/msg165889.html Testing on more machines would be greatly appreciated, particularly Nvidia Optimus or AMD PowerXpress. The series is based on 4.16-rc3. To test it on 4.15, you need to cherry-pick 7506dc798993 and 2fa6d6cdaf28. For your convenience I've pushed a 4.15-based branch to: https://github.com/l1k/linux/commits/switcheroo_devlink_v2 Minimal test procedure: - Note well: Recent Optimus require that a Mini-DP or HDMI cable is plugged in on boot for the HDA device to be present. - Check that HDA, GPU and root port autosuspend when not in use: cat /sys/bus/pci/devices/0000:01:00.1/power/runtime_status # HDA cat /sys/bus/pci/devices/0000:01:00.0/power/runtime_status # GPU cat /sys/bus/pci/devices/0000:00:01.0/power/runtime_status # Root Port - Check that all three autoresume when accessing the HDA: hdajacksensetest -c 1 - Unbind the HDA controller: echo 0000:01:00.1 > /sys/bus/pci/drivers/snd_hda_intel/unbind Wait for GPU to power off, then rebind the HDA controller: echo 0000:01:00.1 > /sys/bus/pci/drivers/snd_hda_intel/bind Check dmesg for errors, try accessing HDA with hdajacksensetest. - If your laptop uses the root port's _PR3 to cut power to the GPU: Unbind the GPU: echo 0000:01:00.0 > /sys/bus/pci/drivers/{nouveau,amdgpu,radeon}/unbind Allow runtime PM on the GPU: echo auto > /sys/bus/pci/devices/0000:01:00.0/power/control Wait for GPU to power off, then rebind it: echo 0000:01:00.0 > /sys/bus/pci/drivers/{nouveau,amdgpu,radeon}/bind Check dmesg for errors. If you see any then we may need to perform further actions in pci_pm_runtime_resume(), see patch [1/7]. Thanks, Lukas Lukas Wunner (6): PCI: Make pci_wakeup_bus() & pci_bus_set_current_state() public vga_switcheroo: Update PCI current_state on power change vga_switcheroo: Deduplicate power state tracking vga_switcheroo: Use device link for HDA controller vga_switcheroo: Let HDA autosuspend on mux change drm/nouveau: Runtime suspend despite HDA being unbound Rafael J. Wysocki (1): PCI: Restore config space on runtime resume despite being unbound drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 - drivers/gpu/drm/nouveau/nouveau_drm.c | 46 ---------- drivers/gpu/drm/nouveau/nouveau_drv.h | 1 - drivers/gpu/drm/radeon/radeon_drv.c | 2 - drivers/gpu/vga/vga_switcheroo.c | 152 ++++++++------------------------ drivers/pci/pci-driver.c | 17 ++-- drivers/pci/pci.c | 8 +- drivers/pci/quirks.c | 39 ++++++++ include/linux/pci.h | 2 + include/linux/pci_ids.h | 1 + include/linux/vga_switcheroo.h | 6 -- include/sound/hdaudio.h | 3 - sound/pci/hda/hda_intel.c | 36 +++++--- sound/pci/hda/hda_intel.h | 3 - 14 files changed, 117 insertions(+), 201 deletions(-) -- 2.15.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Wunner Subject: [PATCH v2 0/7] Modernize vga_switcheroo by using device link for HDA Date: Sat, 3 Mar 2018 10:53:24 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: zigarrre@gmail.com, nouveau@lists.freedesktop.org, "Rafael J. Wysocki" , linux-pci@vger.kernel.org, Daniel Drake , Denis Lisov , Bjorn Helgaas , Peter Wu , Martin Lopatar , Alex Deucher , Maik Freudenberg , Raphael Doursenaud List-Id: nouveau.vger.kernel.org TW9kZXJuaXplIHZnYV9zd2l0Y2hlcm9vIGJ5IHVzaW5nIGEgZGV2aWNlIGxpbmsgdG8gZW5mb3Jj ZSBhIHJ1bnRpbWUgUE0KZGVwZW5kZW5jeSBmcm9tIGFuIEhEQSBjb250cm9sbGVyIHRvIHRoZSBH UFUgaXQncyBpbnRlZ3JhdGVkIGludG8sIHYyLgoKQ2hhbmdlcyBzaW5jZSB2MToKCi0gUmVwbGFj ZSBwYXRjaCBbMS83XSB0byB1c2UgcGNpX3NhdmVfc3RhdGUoKSAvIHBjaV9yZXN0b3JlX3N0YXRl KCkKICBmb3IgY29uc2lzdGVuY3kgYmV0d2VlbiBydW50aW1lIFBNIGNvZGUgcGF0aCBvZiBib3Vu ZCBhbmQgdW5ib3VuZAogIGRldmljZXMuIChSYWZhZWwsIEJqb3JuKQoKLSBQYXRjaCBbNS83XTog RHJvcCBhbiB1bm5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbi4gKEJqb3JuKQogIFJlcGhyYXNlIGVy cm9yIG1lc3NhZ2Ugb24gZmFpbGVkIGxpbmsgYWRkaXRpb24gZm9yIGNsYXJpdHkuCgpMaW5rIHRv IHYxOgpodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9kcmktZGV2ZWwvbXNnMTY1ODg5Lmh0 bWwKClRlc3Rpbmcgb24gbW9yZSBtYWNoaW5lcyB3b3VsZCBiZSBncmVhdGx5IGFwcHJlY2lhdGVk LCBwYXJ0aWN1bGFybHkKTnZpZGlhIE9wdGltdXMgb3IgQU1EIFBvd2VyWHByZXNzLgoKVGhlIHNl cmllcyBpcyBiYXNlZCBvbiA0LjE2LXJjMy4gIFRvIHRlc3QgaXQgb24gNC4xNSwgeW91IG5lZWQg dG8KY2hlcnJ5LXBpY2sgNzUwNmRjNzk4OTkzIGFuZCAyZmE2ZDZjZGFmMjguICBGb3IgeW91ciBj b252ZW5pZW5jZQpJJ3ZlIHB1c2hlZCBhIDQuMTUtYmFzZWQgYnJhbmNoIHRvOgpodHRwczovL2dp dGh1Yi5jb20vbDFrL2xpbnV4L2NvbW1pdHMvc3dpdGNoZXJvb19kZXZsaW5rX3YyCgpNaW5pbWFs IHRlc3QgcHJvY2VkdXJlOgoKLSBOb3RlIHdlbGw6IFJlY2VudCBPcHRpbXVzIHJlcXVpcmUgdGhh dCBhIE1pbmktRFAgb3IgSERNSSBjYWJsZSBpcwogIHBsdWdnZWQgaW4gb24gYm9vdCBmb3IgdGhl IEhEQSBkZXZpY2UgdG8gYmUgcHJlc2VudC4KCi0gQ2hlY2sgdGhhdCBIREEsIEdQVSBhbmQgcm9v dCBwb3J0IGF1dG9zdXNwZW5kIHdoZW4gbm90IGluIHVzZToKICBjYXQgL3N5cy9idXMvcGNpL2Rl dmljZXMvMDAwMDowMTowMC4xL3Bvd2VyL3J1bnRpbWVfc3RhdHVzICAjIEhEQQogIGNhdCAvc3lz L2J1cy9wY2kvZGV2aWNlcy8wMDAwOjAxOjAwLjAvcG93ZXIvcnVudGltZV9zdGF0dXMgICMgR1BV CiAgY2F0IC9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDEuMC9wb3dlci9ydW50aW1lX3N0 YXR1cyAgIyBSb290IFBvcnQKCi0gQ2hlY2sgdGhhdCBhbGwgdGhyZWUgYXV0b3Jlc3VtZSB3aGVu IGFjY2Vzc2luZyB0aGUgSERBOgogIGhkYWphY2tzZW5zZXRlc3QgLWMgMQoKLSBVbmJpbmQgdGhl IEhEQSBjb250cm9sbGVyOgogIGVjaG8gMDAwMDowMTowMC4xID4gL3N5cy9idXMvcGNpL2RyaXZl cnMvc25kX2hkYV9pbnRlbC91bmJpbmQKICBXYWl0IGZvciBHUFUgdG8gcG93ZXIgb2ZmLCB0aGVu IHJlYmluZCB0aGUgSERBIGNvbnRyb2xsZXI6CiAgZWNobyAwMDAwOjAxOjAwLjEgPiAvc3lzL2J1 cy9wY2kvZHJpdmVycy9zbmRfaGRhX2ludGVsL2JpbmQKICBDaGVjayBkbWVzZyBmb3IgZXJyb3Jz LCB0cnkgYWNjZXNzaW5nIEhEQSB3aXRoIGhkYWphY2tzZW5zZXRlc3QuCgotIElmIHlvdXIgbGFw dG9wIHVzZXMgdGhlIHJvb3QgcG9ydCdzIF9QUjMgdG8gY3V0IHBvd2VyIHRvIHRoZSBHUFU6CiAg VW5iaW5kIHRoZSBHUFU6CiAgZWNobyAwMDAwOjAxOjAwLjAgPiAvc3lzL2J1cy9wY2kvZHJpdmVy cy97bm91dmVhdSxhbWRncHUscmFkZW9ufS91bmJpbmQKICBBbGxvdyBydW50aW1lIFBNIG9uIHRo ZSBHUFU6CiAgZWNobyBhdXRvID4gL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMDowMTowMC4wL3Bv d2VyL2NvbnRyb2wKICBXYWl0IGZvciBHUFUgdG8gcG93ZXIgb2ZmLCB0aGVuIHJlYmluZCBpdDoK ICBlY2hvIDAwMDA6MDE6MDAuMCA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3tub3V2ZWF1LGFtZGdw dSxyYWRlb259L2JpbmQKICBDaGVjayBkbWVzZyBmb3IgZXJyb3JzLiAgSWYgeW91IHNlZSBhbnkg dGhlbiB3ZSBtYXkgbmVlZCB0byBwZXJmb3JtCiAgZnVydGhlciBhY3Rpb25zIGluIHBjaV9wbV9y dW50aW1lX3Jlc3VtZSgpLCBzZWUgcGF0Y2ggWzEvN10uCgpUaGFua3MsCgpMdWthcwoKCkx1a2Fz IFd1bm5lciAoNik6CiAgUENJOiBNYWtlIHBjaV93YWtldXBfYnVzKCkgJiBwY2lfYnVzX3NldF9j dXJyZW50X3N0YXRlKCkgcHVibGljCiAgdmdhX3N3aXRjaGVyb286IFVwZGF0ZSBQQ0kgY3VycmVu dF9zdGF0ZSBvbiBwb3dlciBjaGFuZ2UKICB2Z2Ffc3dpdGNoZXJvbzogRGVkdXBsaWNhdGUgcG93 ZXIgc3RhdGUgdHJhY2tpbmcKICB2Z2Ffc3dpdGNoZXJvbzogVXNlIGRldmljZSBsaW5rIGZvciBI REEgY29udHJvbGxlcgogIHZnYV9zd2l0Y2hlcm9vOiBMZXQgSERBIGF1dG9zdXNwZW5kIG9uIG11 eCBjaGFuZ2UKICBkcm0vbm91dmVhdTogUnVudGltZSBzdXNwZW5kIGRlc3BpdGUgSERBIGJlaW5n IHVuYm91bmQKClJhZmFlbCBKLiBXeXNvY2tpICgxKToKICBQQ0k6IFJlc3RvcmUgY29uZmlnIHNw YWNlIG9uIHJ1bnRpbWUgcmVzdW1lIGRlc3BpdGUgYmVpbmcgdW5ib3VuZAoKIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9ub3V2ZWF1X2RybS5jICAgfCAgNDYgLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9kcnYuaCAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX2Rydi5jICAgICB8ICAgMiAtCiBkcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyAg ICAgICAgfCAxNTIgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvcGNp L3BjaS1kcml2ZXIuYyAgICAgICAgICAgICAgICB8ICAxNyArKy0tCiBkcml2ZXJzL3BjaS9wY2ku YyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvcGNpL3F1aXJrcy5jICAg ICAgICAgICAgICAgICAgICB8ICAzOSArKysrKysrKwogaW5jbHVkZS9saW51eC9wY2kuaCAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIGluY2x1ZGUvbGludXgvcGNpX2lkcy5oICAgICAgICAg ICAgICAgICB8ICAgMSArCiBpbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmggICAgICAgICAg fCAgIDYgLS0KIGluY2x1ZGUvc291bmQvaGRhdWRpby5oICAgICAgICAgICAgICAgICB8ICAgMyAt CiBzb3VuZC9wY2kvaGRhL2hkYV9pbnRlbC5jICAgICAgICAgICAgICAgfCAgMzYgKysrKystLS0K IHNvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmggICAgICAgICAgICAgICB8ICAgMyAtCiAxNCBmaWxl cyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgMjAxIGRlbGV0aW9ucygtKQoKLS0gCjIuMTUu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==