From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E817DC636CA for ; Tue, 20 Jul 2021 20:41:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B90206100C for ; Tue, 20 Jul 2021 20:41:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B90206100C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 22A2F6E591; Tue, 20 Jul 2021 20:40:36 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E7CA6E4DE; Tue, 20 Jul 2021 20:40:17 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="296885367" X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="296885367" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:16 -0700 X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="414906067" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:15 -0700 From: Matthew Brost To: , Date: Tue, 20 Jul 2021 13:57:30 -0700 Message-Id: <20210720205802.39610-11-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210720205802.39610-1-matthew.brost@intel.com> References: <20210720205802.39610-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 10/42] drm/i915: Add GT PM unpark worker X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" U29tZXRpbWVzIGl0IGlzIGRlc2lyYWJsZSB0byBxdWV1ZSB3b3JrIHVwIGZvciBsYXRlciBpZiB0 aGUgR1QgUE0gaXNuJ3QKaGVsZCBhbmQgcnVuIHRoYXQgd29yayBvbiBuZXh0IEdUIFBNIHVucGFy ay4KCkltcGxlbWVudGVkIHdpdGggYSBsaXN0IGluIHRoZSBHVCBvZiBhbGwgcGVuZGluZyB3b3Jr LCB3b3JrcXVldWVzIGluCnRoZSBsaXN0LCBhIGNhbGxiYWNrIHRvIGFkZCBhIHdvcmtxdWV1ZSB0 byB0aGUgbGlzdCwgYW5kIGZpbmFsbHkgYQp3YWtlcmVmIHBvc3RfZ2V0IGNhbGxiYWNrIHRoYXQg aXRlcmF0ZXMgLyBkcmFpbnMgdGhlIGxpc3QgKyBxdWV1ZXMgdGhlCndvcmtxdWV1ZXMuCgpGaXJz dCB1c2VyIG9mIHRoaXMgaXMgZGVyZWdpc3RyYXRpb24gb2YgR3VDIGNvbnRleHRzLgoKU2lnbmVk LW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAgICAgICAgIHwgIDMgKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgICAgICAgICB8ICA4ICsrKysrCiAuLi4v Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX3VucGFya193b3JrLmMgfCAzNSArKysrKysrKysr KysrKysrKysrCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX3VucGFya193b3JrLmgg fCAzMiArKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf dHlwZXMuaCAgICAgIHwgIDMgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Yy5oICAgICAgICB8ICAzICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJt aXNzaW9uLmMgfCAxNCArKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJl Zi5jICAgICAgICAgIHwgIDUgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVm LmggICAgICAgICAgfCAgMSArCiA5IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX3VucGFya193b3JrLmgKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3QuYwppbmRleCBjZWViNTE3YmEyNTkuLjE3MmE4NTllNDNkMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndC5jCkBAIC0yOSw2ICsyOSw5IEBAIHZvaWQgaW50ZWxfZ3RfaW5pdF9l YXJseShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAogCXNwaW5fbG9ja19pbml0KCZndC0+aXJxX2xvY2spOwogCisJc3Bpbl9sb2NrX2luaXQoJmd0 LT5wbV91bnBhcmtfd29ya19sb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmZ3QtPnBtX3VucGFya193 b3JrX2xpc3QpOworCiAJSU5JVF9MSVNUX0hFQUQoJmd0LT5jbG9zZWRfdm1hKTsKIAlzcGluX2xv Y2tfaW5pdCgmZ3QtPmNsb3NlZF9sb2NrKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 X3BtLmMKaW5kZXggNDYzYTZhZTYwNWEwLi5lYmQ0ZDIyYzdiMTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfcG0uYwpAQCAtOTMsNiArOTMsMTMgQEAgc3RhdGljIGludCBfX2d0X3Vu cGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2 b2lkIF9fZ3RfdW5wYXJrX3dvcmtfcXVldWUoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQorewor CXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBjb250YWluZXJfb2Yod2YsIHR5cGVvZigqZ3QpLCB3YWtl cmVmKTsKKworCWludGVsX2d0X3BtX3VucGFya193b3JrX3F1ZXVlKGd0KTsKK30KKwogc3RhdGlj IGludCBfX2d0X3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQogewogCXN0cnVjdCBpbnRl bF9ndCAqZ3QgPSBjb250YWluZXJfb2Yod2YsIHR5cGVvZigqZ3QpLCB3YWtlcmVmKTsKQEAgLTEy Myw2ICsxMzAsNyBAQCBzdGF0aWMgaW50IF9fZ3RfcGFyayhzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAq d2YpCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9vcHMgd2Zfb3BzID0gewog CS5nZXQgPSBfX2d0X3VucGFyaywKKwkucG9zdF9nZXQgPSBfX2d0X3VucGFya193b3JrX3F1ZXVl LAogCS5wdXQgPSBfX2d0X3BhcmssCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndF9wbV91bnBhcmtfd29yay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjIzMTYyZGJkMGMzNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtX3VucGFya193b3JrLmMKQEAgLTAsMCArMSwzNSBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIx IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVk ZSAiaW50ZWxfcnVudGltZV9wbS5oIgorI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCisKK3ZvaWQg aW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmtfcXVldWUoc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsgKndvcmssICpuZXh0OworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3QtPnBtX3VucGFya193b3JrX2xvY2ss IGZsYWdzKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUod29yaywgbmV4dCwKKwkJCQkgJmd0 LT5wbV91bnBhcmtfd29ya19saXN0LCBsaW5rKSB7CisJCWxpc3RfZGVsX2luaXQoJndvcmstPmxp bmspOworCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmd29yay0+d29ya2VyKTsKKwl9 CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3QtPnBtX3VucGFya193b3JrX2xvY2ssIGZsYWdz KTsKK30KKwordm9pZCBpbnRlbF9ndF9wbV91bnBhcmtfd29ya19hZGQoc3RydWN0IGludGVsX2d0 ICpndCwKKwkJCQkgc3RydWN0IGludGVsX2d0X3BtX3VucGFya193b3JrICp3b3JrKQoreworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3QtPnBtX3VucGFya193 b3JrX2xvY2ssIGZsYWdzKTsKKwlpZiAoaW50ZWxfZ3RfcG1faXNfYXdha2UoZ3QpKQorCQlxdWV1 ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmd29yay0+d29ya2VyKTsKKwllbHNlIGlmIChsaXN0 X2VtcHR5KCZ3b3JrLT5saW5rKSkKKwkJbGlzdF9hZGRfdGFpbCgmd29yay0+bGluaywgJmd0LT5w bV91bnBhcmtfd29ya19saXN0KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZndC0+cG1fdW5w YXJrX3dvcmtfbG9jaywgZmxhZ3MpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3BtX3VucGFya193b3JrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4wOGU5MDExYmUwMjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9wbV91bnBhcmtfd29yay5oCkBAIC0wLDAgKzEsMzIgQEAKKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAy MSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgSU5URUxfR1RfUE1fVU5QQVJLX1dP UktfSAorI2RlZmluZSBJTlRFTF9HVF9QTV9VTlBBUktfV09SS19ICisKKyNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+CisKK3N0cnVjdCBpbnRlbF9n dDsKKworc3RydWN0IGludGVsX2d0X3BtX3VucGFya193b3JrIHsKKwlzdHJ1Y3QgbGlzdF9oZWFk IGxpbms7CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcmtlcjsKK307CisKK3ZvaWQgaW50ZWxfZ3Rf cG1fdW5wYXJrX3dvcmtfcXVldWUoc3RydWN0IGludGVsX2d0ICpndCk7CisKK3ZvaWQgaW50ZWxf Z3RfcG1fdW5wYXJrX3dvcmtfYWRkKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCisJCQkJIHN0cnVjdCBp bnRlbF9ndF9wbV91bnBhcmtfd29yayAqd29yayk7CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoraW50 ZWxfZ3RfcG1fdW5wYXJrX3dvcmtfaW5pdChzdHJ1Y3QgaW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsg KndvcmssCisJCQkgICAgIHdvcmtfZnVuY190IGZuKQoreworCUlOSVRfTElTVF9IRUFEKCZ3b3Jr LT5saW5rKTsKKwlJTklUX1dPUksoJndvcmstPndvcmtlciwgZm4pOworfQorCisjZW5kaWYgLyog SU5URUxfR1RfUE1fVU5QQVJLX1dPUktfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3R5cGVzLmgKaW5kZXggZDkzZDU3OGE0MTA1Li5iNjgxY2IxYmRiNWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaApAQCAtOTEsNiArOTEsOSBAQCBzdHJ1Y3Qg aW50ZWxfZ3QgewogCXN0cnVjdCBpbnRlbF93YWtlcmVmIHdha2VyZWY7CiAJYXRvbWljX3QgdXNl cl93YWtlcmVmOwogCisJc3RydWN0IGxpc3RfaGVhZCBwbV91bnBhcmtfd29ya19saXN0OworCXNw aW5sb2NrX3QgcG1fdW5wYXJrX3dvcmtfbG9jazsKKwogCXN0cnVjdCBsaXN0X2hlYWQgY2xvc2Vk X3ZtYTsKIAlzcGlubG9ja190IGNsb3NlZF9sb2NrOyAvKiBndWFyZHMgdGhlIGxpc3Qgb2YgY2xv c2VkX3ZtYSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCmluZGV4IDRm ZTdmZDRjZTEwZS4uYjI5OWE2NzcyODIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWMuaApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImludGVsX3VjX2Z3LmgiCiAjaW5j bHVkZSAiaTkxNV91dGlscy5oIgogI2luY2x1ZGUgImk5MTVfdm1hLmgiCisjaW5jbHVkZSAiZ3Qv aW50ZWxfZ3RfcG1fdW5wYXJrX3dvcmsuaCIKIAogc3RydWN0IF9fZ3VjX2Fkc19ibG9iOwogCkBA IC02Myw3ICs2NCw3IEBAIHN0cnVjdCBpbnRlbF9ndWMgewogCiAJc3BpbmxvY2tfdCBkZXN0cm95 X2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCBkZXN0cm95ZWRfY29udGV4dHM7Ci0Jc3RydWN0IHdv cmtfc3RydWN0IGRlc3Ryb3lfd29ya2VyOworCXN0cnVjdCBpbnRlbF9ndF9wbV91bnBhcmtfd29y ayBkZXN0cm95X3dvcmtlcjsKIAogCWJvb2wgc3VibWlzc2lvbl9zdXBwb3J0ZWQ7CiAJYm9vbCBz dWJtaXNzaW9uX3NlbGVjdGVkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggZjEzNTU4YWRjMTQyLi4yZmRmY2VjM2I1ZmEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u YwpAQCAtMTM5Nyw4ICsxMzk3LDkgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXQoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogCWlkYV9pbml0KCZndWMtPmd1Y19pZHMpOwogCiAJc3Bpbl9s b2NrX2luaXQoJmd1Yy0+ZGVzdHJveV9sb2NrKTsKKwogCUlOSVRfTElTVF9IRUFEKCZndWMtPmRl c3Ryb3llZF9jb250ZXh0cyk7Ci0JSU5JVF9XT1JLKCZndWMtPmRlc3Ryb3lfd29ya2VyLCBkZXN0 cm95X3dvcmtlcl9mdW5jKTsKKwlpbnRlbF9ndF9wbV91bnBhcmtfd29ya19pbml0KCZndWMtPmRl c3Ryb3lfd29ya2VyLCBkZXN0cm95X3dvcmtlcl9mdW5jKTsKIAogCXJldHVybiAwOwogfQpAQCAt MjQyMCwxMyArMjQyMSwxOCBAQCBzdGF0aWMgdm9pZCBkZXJlZ2lzdGVyX2Rlc3Ryb3llZF9jb250 ZXh0cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lfd29ya2Vy X2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogeworCXN0cnVjdCBpbnRlbF9ndF9wbV91bnBh cmtfd29yayAqZGVzdHJveV93b3JrZXIgPQorCQljb250YWluZXJfb2Yodywgc3RydWN0IGludGVs X2d0X3BtX3VucGFya193b3JrLCB3b3JrZXIpOwogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9Ci0J CWNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgaW50ZWxfZ3VjLCBkZXN0cm95X3dvcmtlcik7CisJCWNv bnRhaW5lcl9vZihkZXN0cm95X3dvcmtlciwgc3RydWN0IGludGVsX2d1YywgZGVzdHJveV93b3Jr ZXIpOwogCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKIAlpbnQgdG1wOwog Ci0Jd2l0aF9pbnRlbF9ndF9wbShndCwgdG1wKQorCXdpdGhfaW50ZWxfZ3RfcG1faWZfYXdha2Uo Z3QsIHRtcCkKIAkJZGVyZWdpc3Rlcl9kZXN0cm95ZWRfY29udGV4dHMoZ3VjKTsKKworCWlmICgh bGlzdF9lbXB0eSgmZ3VjLT5kZXN0cm95ZWRfY29udGV4dHMpKQorCQlpbnRlbF9ndF9wbV91bnBh cmtfd29ya19hZGQoZ3QsIGRlc3Ryb3lfd29ya2VyKTsKIH0KIAogc3RhdGljIHZvaWQgZ3VjX2Nv bnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKQEAgLTI0ODksNyArMjQ5NSw3IEBAIHN0 YXRpYyB2b2lkIGd1Y19jb250ZXh0X2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpCiAJICogdGFr ZSB0aGUgR1QgUE0gZm9yIHRoZSBmaXJzdCB0aW1lIHdoaWNoIGlzbid0IGFsbG93ZWQgZnJvbSBh biBhdG9taWMKIAkgKiBjb250ZXh0LgogCSAqLwotCXF1ZXVlX3dvcmsoc3lzdGVtX3VuYm91bmRf d3EsICZndWMtPmRlc3Ryb3lfd29ya2VyKTsKKwlpbnRlbF9ndF9wbV91bnBhcmtfd29ya19hZGQo Z3VjX3RvX2d0KGd1YyksICZndWMtPmRlc3Ryb3lfd29ya2VyKTsKIH0KIAogc3RhdGljIGludCBn dWNfY29udGV4dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF93YWtlcmVmLmMKaW5kZXggZGZkODdkMDgyMjE4Li4yODJmYzRmMzEyZTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dha2VyZWYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMKQEAgLTI0LDYgKzI0LDggQEAgc3RhdGljIHZv aWQgcnBtX3B1dChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCiAKIGludCBfX2ludGVsX3dha2Vy ZWZfZ2V0X2ZpcnN0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKIHsKKwlib29sIGRvX3Bvc3Qg PSBmYWxzZTsKKwogCS8qCiAJICogVHJlYXQgZ2V0L3B1dCBhcyBkaWZmZXJlbnQgc3ViY2xhc3Nl cywgYXMgd2UgbWF5IG5lZWQgdG8gcnVuCiAJICogdGhlIHB1dCBjYWxsYmFjayBmcm9tIHVuZGVy IHRoZSBzaHJpbmtlciBhbmQgZG8gbm90IHdhbnQgdG8KQEAgLTQ0LDggKzQ2LDExIEBAIGludCBf X2ludGVsX3dha2VyZWZfZ2V0X2ZpcnN0KHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKIAkJfQog CiAJCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOyAvKiByZWxlYXNlIHdmLT5jb3VudCAqLworCQlk b19wb3N0ID0gdHJ1ZTsKIAl9CiAJYXRvbWljX2luYygmd2YtPmNvdW50KTsKKwlpZiAoZG9fcG9z dCAmJiB3Zi0+b3BzLT5wb3N0X2dldCkKKwkJd2YtPm9wcy0+cG9zdF9nZXQod2YpOwogCW11dGV4 X3VubG9jaygmd2YtPm11dGV4KTsKIAogCUlOVEVMX1dBS0VSRUZfQlVHX09OKGF0b21pY19yZWFk KCZ3Zi0+Y291bnQpIDw9IDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfd2FrZXJlZi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2FrZXJlZi5oCmluZGV4 IDU0NWM4ZjI3N2M0Ni4uZWY3ZTZhNjk4ZThhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF93YWtlcmVmLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd2Fr ZXJlZi5oCkBAIC0zMCw2ICszMCw3IEBAIHR5cGVkZWYgZGVwb3Rfc3RhY2tfaGFuZGxlX3QgaW50 ZWxfd2FrZXJlZl90OwogCiBzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9vcHMgewogCWludCAoKmdldCko c3RydWN0IGludGVsX3dha2VyZWYgKndmKTsKKwl2b2lkICgqcG9zdF9nZXQpKHN0cnVjdCBpbnRl bF93YWtlcmVmICp3Zik7CiAJaW50ICgqcHV0KShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpOwog fTsKIAotLSAKMi4yOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C0B8C636C8 for ; Tue, 20 Jul 2021 20:40:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5B75360FF3 for ; Tue, 20 Jul 2021 20:40:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5B75360FF3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A3B3E6E4F1; Tue, 20 Jul 2021 20:40:19 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E7CA6E4DE; Tue, 20 Jul 2021 20:40:17 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="296885367" X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="296885367" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:16 -0700 X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="414906067" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:15 -0700 From: Matthew Brost To: , Subject: [RFC PATCH 10/42] drm/i915: Add GT PM unpark worker Date: Tue, 20 Jul 2021 13:57:30 -0700 Message-Id: <20210720205802.39610-11-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210720205802.39610-1-matthew.brost@intel.com> References: <20210720205802.39610-1-matthew.brost@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Sometimes it is desirable to queue work up for later if the GT PM isn't held and run that work on next GT PM unpark. Implemented with a list in the GT of all pending work, workqueues in the list, a callback to add a workqueue to the list, and finally a wakeref post_get callback that iterates / drains the list + queues the workqueues. First user of this is deregistration of GuC contexts. Signed-off-by: Matthew Brost --- drivers/gpu/drm/i915/gt/intel_gt.c | 3 ++ drivers/gpu/drm/i915/gt/intel_gt_pm.c | 8 +++++ .../gpu/drm/i915/gt/intel_gt_pm_unpark_work.c | 35 +++++++++++++++++++ .../gpu/drm/i915/gt/intel_gt_pm_unpark_work.h | 32 +++++++++++++++++ drivers/gpu/drm/i915/gt/intel_gt_types.h | 3 ++ drivers/gpu/drm/i915/gt/uc/intel_guc.h | 3 +- .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 14 +++++--- drivers/gpu/drm/i915/intel_wakeref.c | 5 +++ drivers/gpu/drm/i915/intel_wakeref.h | 1 + 9 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.c create mode 100644 drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.h diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c index ceeb517ba259..172a859e43d2 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt.c +++ b/drivers/gpu/drm/i915/gt/intel_gt.c @@ -29,6 +29,9 @@ void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915) spin_lock_init(>->irq_lock); + spin_lock_init(>->pm_unpark_work_lock); + INIT_LIST_HEAD(>->pm_unpark_work_list); + INIT_LIST_HEAD(>->closed_vma); spin_lock_init(>->closed_lock); diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c index 463a6ae605a0..ebd4d22c7b19 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c @@ -93,6 +93,13 @@ static int __gt_unpark(struct intel_wakeref *wf) return 0; } +static void __gt_unpark_work_queue(struct intel_wakeref *wf) +{ + struct intel_gt *gt = container_of(wf, typeof(*gt), wakeref); + + intel_gt_pm_unpark_work_queue(gt); +} + static int __gt_park(struct intel_wakeref *wf) { struct intel_gt *gt = container_of(wf, typeof(*gt), wakeref); @@ -123,6 +130,7 @@ static int __gt_park(struct intel_wakeref *wf) static const struct intel_wakeref_ops wf_ops = { .get = __gt_unpark, + .post_get = __gt_unpark_work_queue, .put = __gt_park, }; diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.c b/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.c new file mode 100644 index 000000000000..23162dbd0c35 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2021 Intel Corporation + */ + +#include "i915_drv.h" +#include "intel_runtime_pm.h" +#include "intel_gt_pm.h" + +void intel_gt_pm_unpark_work_queue(struct intel_gt *gt) +{ + struct intel_gt_pm_unpark_work *work, *next; + unsigned long flags; + + spin_lock_irqsave(>->pm_unpark_work_lock, flags); + list_for_each_entry_safe(work, next, + >->pm_unpark_work_list, link) { + list_del_init(&work->link); + queue_work(system_unbound_wq, &work->worker); + } + spin_unlock_irqrestore(>->pm_unpark_work_lock, flags); +} + +void intel_gt_pm_unpark_work_add(struct intel_gt *gt, + struct intel_gt_pm_unpark_work *work) +{ + unsigned long flags; + + spin_lock_irqsave(>->pm_unpark_work_lock, flags); + if (intel_gt_pm_is_awake(gt)) + queue_work(system_unbound_wq, &work->worker); + else if (list_empty(&work->link)) + list_add_tail(&work->link, >->pm_unpark_work_list); + spin_unlock_irqrestore(>->pm_unpark_work_lock, flags); +} diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.h b/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.h new file mode 100644 index 000000000000..08e9011be023 --- /dev/null +++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_unpark_work.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2021 Intel Corporation + */ + +#ifndef INTEL_GT_PM_UNPARK_WORK_H +#define INTEL_GT_PM_UNPARK_WORK_H + +#include +#include + +struct intel_gt; + +struct intel_gt_pm_unpark_work { + struct list_head link; + struct work_struct worker; +}; + +void intel_gt_pm_unpark_work_queue(struct intel_gt *gt); + +void intel_gt_pm_unpark_work_add(struct intel_gt *gt, + struct intel_gt_pm_unpark_work *work); + +static inline void +intel_gt_pm_unpark_work_init(struct intel_gt_pm_unpark_work *work, + work_func_t fn) +{ + INIT_LIST_HEAD(&work->link); + INIT_WORK(&work->worker, fn); +} + +#endif /* INTEL_GT_PM_UNPARK_WORK_H */ diff --git a/drivers/gpu/drm/i915/gt/intel_gt_types.h b/drivers/gpu/drm/i915/gt/intel_gt_types.h index d93d578a4105..b681cb1bdb5f 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_types.h +++ b/drivers/gpu/drm/i915/gt/intel_gt_types.h @@ -91,6 +91,9 @@ struct intel_gt { struct intel_wakeref wakeref; atomic_t user_wakeref; + struct list_head pm_unpark_work_list; + spinlock_t pm_unpark_work_lock; + struct list_head closed_vma; spinlock_t closed_lock; /* guards the list of closed_vma */ diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h b/drivers/gpu/drm/i915/gt/uc/intel_guc.h index 4fe7fd4ce10e..b299a6772823 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h @@ -18,6 +18,7 @@ #include "intel_uc_fw.h" #include "i915_utils.h" #include "i915_vma.h" +#include "gt/intel_gt_pm_unpark_work.h" struct __guc_ads_blob; @@ -63,7 +64,7 @@ struct intel_guc { spinlock_t destroy_lock; struct list_head destroyed_contexts; - struct work_struct destroy_worker; + struct intel_gt_pm_unpark_work destroy_worker; bool submission_supported; bool submission_selected; diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c index f13558adc142..2fdfcec3b5fa 100644 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c @@ -1397,8 +1397,9 @@ int intel_guc_submission_init(struct intel_guc *guc) ida_init(&guc->guc_ids); spin_lock_init(&guc->destroy_lock); + INIT_LIST_HEAD(&guc->destroyed_contexts); - INIT_WORK(&guc->destroy_worker, destroy_worker_func); + intel_gt_pm_unpark_work_init(&guc->destroy_worker, destroy_worker_func); return 0; } @@ -2420,13 +2421,18 @@ static void deregister_destroyed_contexts(struct intel_guc *guc) static void destroy_worker_func(struct work_struct *w) { + struct intel_gt_pm_unpark_work *destroy_worker = + container_of(w, struct intel_gt_pm_unpark_work, worker); struct intel_guc *guc = - container_of(w, struct intel_guc, destroy_worker); + container_of(destroy_worker, struct intel_guc, destroy_worker); struct intel_gt *gt = guc_to_gt(guc); int tmp; - with_intel_gt_pm(gt, tmp) + with_intel_gt_pm_if_awake(gt, tmp) deregister_destroyed_contexts(guc); + + if (!list_empty(&guc->destroyed_contexts)) + intel_gt_pm_unpark_work_add(gt, destroy_worker); } static void guc_context_destroy(struct kref *kref) @@ -2489,7 +2495,7 @@ static void guc_context_destroy(struct kref *kref) * take the GT PM for the first time which isn't allowed from an atomic * context. */ - queue_work(system_unbound_wq, &guc->destroy_worker); + intel_gt_pm_unpark_work_add(guc_to_gt(guc), &guc->destroy_worker); } static int guc_context_alloc(struct intel_context *ce) diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/intel_wakeref.c index dfd87d082218..282fc4f312e3 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -24,6 +24,8 @@ static void rpm_put(struct intel_wakeref *wf) int __intel_wakeref_get_first(struct intel_wakeref *wf) { + bool do_post = false; + /* * Treat get/put as different subclasses, as we may need to run * the put callback from under the shrinker and do not want to @@ -44,8 +46,11 @@ int __intel_wakeref_get_first(struct intel_wakeref *wf) } smp_mb__before_atomic(); /* release wf->count */ + do_post = true; } atomic_inc(&wf->count); + if (do_post && wf->ops->post_get) + wf->ops->post_get(wf); mutex_unlock(&wf->mutex); INTEL_WAKEREF_BUG_ON(atomic_read(&wf->count) <= 0); diff --git a/drivers/gpu/drm/i915/intel_wakeref.h b/drivers/gpu/drm/i915/intel_wakeref.h index 545c8f277c46..ef7e6a698e8a 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.h +++ b/drivers/gpu/drm/i915/intel_wakeref.h @@ -30,6 +30,7 @@ typedef depot_stack_handle_t intel_wakeref_t; struct intel_wakeref_ops { int (*get)(struct intel_wakeref *wf); + void (*post_get)(struct intel_wakeref *wf); int (*put)(struct intel_wakeref *wf); }; -- 2.28.0