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,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 37E2DC47094 for ; Mon, 7 Jun 2021 17:46:15 +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 053F9610A8 for ; Mon, 7 Jun 2021 17:46:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 053F9610A8 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 CEAC56E983; Mon, 7 Jun 2021 17:46:07 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id B6B5D6E983; Mon, 7 Jun 2021 17:46:05 +0000 (UTC) IronPort-SDR: 52LrhCdmF7eBocKW3jy5lU0WAUBaHaCL3p78SF4rqEtDAn6aTgObzrEhvM628mRTaH2Rx3o7z9 cxm4Q0sD0mDw== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="204695169" X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="204695169" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 10:46:04 -0700 IronPort-SDR: JqdOmO1h78XWISmrL8Idv0KRVTRoqYeH9zhGShezFs8q6ENydhHjZNttnlc1V9TkJnxlFmKRTK 1By2h1OHNbjw== X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="551970154" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 10:46:04 -0700 From: Matthew Brost To: , Date: Mon, 7 Jun 2021 11:03:44 -0700 Message-Id: <20210607180356.165785-3-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210607180356.165785-1-matthew.brost@intel.com> References: <20210607180356.165785-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 02/13] drm/i915/guc: Update MMIO based communication 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" RnJvbTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+CgpUaGUg TU1JTyBiYXNlZCBIb3N0LXRvLUd1QyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGhhcyBiZWVuCnVw ZGF0ZWQgdG8gdXNlIHVuaWZpZWQgSFhHIG1lc3NhZ2VzLgoKVXBkYXRlIG91ciBpbnRlbF9ndWNf c2VuZF9tbWlvKCkgZnVuY3Rpb24gYnkgY29ycmVjdGx5IGhhbmRsZQpCVVNZLCBSRVRSWSBhbmQg RkFJTFVSRSByZXBsaWVzLiBBbHNvIHVwZGF0ZSBvdXIgZG9jdW1lbnRhdGlvbi4KCkd1QzogNTUu MC4wClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVs LmNvbT4KQ2M6IFBpb3RyIFBpw7Nya293c2tpIDxwaW90ci5waW9ya293c2tpQGludGVsLmNvbT4K Q2M6IE1pY2hhbCBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPiAjdjMKLS0t CiAuLi4vZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9fYWJpLmggICAgfCA2MyArKysr KystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYyAgICAgICAg fCA5MiArKysrKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9tbWlvX2FiaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9fYWJpLmgKaW5kZXggYmUwNjZhNjJl OWUwLi4zZjkwMzllM2VmOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2FiaS9ndWNfY29tbXVuaWNhdGlvbl9tbWlvX2FiaS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9tbWlvX2FiaS5oCkBAIC03LDQ2ICs3LDQz IEBACiAjZGVmaW5lIF9BQklfR1VDX0NPTU1VTklDQVRJT05fTU1JT19BQklfSAogCiAvKioKLSAq IERPQzogTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uCisgKiBET0M6IEd1QyBNTUlPIGJhc2VkIGNv bW11bmljYXRpb24KICAqCi0gKiBUaGUgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uIGJldHdlZW4g SG9zdCBhbmQgR3VDIHVzZXMgc29mdHdhcmUgc2NyYXRjaAotICogcmVnaXN0ZXJzLCB3aGVyZSBm aXJzdCByZWdpc3RlciBob2xkcyBkYXRhIHRyZWF0ZWQgYXMgbWVzc2FnZSBoZWFkZXIsCi0gKiBh bmQgb3RoZXIgcmVnaXN0ZXJzIGFyZSB1c2VkIHRvIGhvbGQgbWVzc2FnZSBwYXlsb2FkLgorICog VGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1QyByZWxpZXMg b24gc3BlY2lhbAorICogaGFyZHdhcmUgcmVnaXN0ZXJzIHdoaWNoIGZvcm1hdCBjb3VsZCBiZSBk ZWZpbmVkIGJ5IHRoZSBzb2Z0d2FyZQorICogKHNvIGNhbGxlZCBzY3JhdGNoIHJlZ2lzdGVycyku CiAgKgotICogRm9yIEdlbjkrLCBHdUMgdXNlcyBzb2Z0d2FyZSBzY3JhdGNoIHJlZ2lzdGVycyAw eEMxODAtMHhDMUI4LAotICogYnV0IG5vIEgyRyBjb21tYW5kIHRha2VzIG1vcmUgdGhhbiA4IHBh cmFtZXRlcnMgYW5kIHRoZSBHdUMgRlcKLSAqIGl0c2VsZiB1c2VzIGFuIDgtZWxlbWVudCBhcnJh eSB0byBzdG9yZSB0aGUgSDJHIG1lc3NhZ2UuCi0gKgotICogICAgICArLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCi0gKiAgICAgIHwgIE1NSU9bMF0gIHwgTU1JT1sx XSB8ICAgLi4uICAgfCBNTUlPW25dIHwKLSAqICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKwotICogICAgICB8IGhlYWRlciAgICB8ICAgICAgb3B0aW9uYWwg cGF5bG9hZCAgICAgICB8Ci0gKiAgICAgICs9PT09PT0rPT09PSs9PT09PT09PT0rPT09PT09PT09 Kz09PT09PT09PSsKLSAqICAgICAgfCAzMToyOHx0eXBlfCAgICAgICAgIHwgICAgICAgICB8ICAg ICAgICAgfAotICogICAgICArLS0tLS0tKy0tLS0rICAgICAgICAgfCAgICAgICAgIHwgICAgICAg ICB8Ci0gKiAgICAgIHwgMjc6MTZ8ZGF0YXwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwK LSAqICAgICAgKy0tLS0tLSstLS0tKyAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAotICog ICAgICB8ICAxNTowfGNvZGV8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Ci0gKiAgICAg ICstLS0tLS0rLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKLSAqCi0gKiBUaGUg bWVzc2FnZSBoZWFkZXIgY29uc2lzdHMgb2Y6Ci0gKgotICogLSAqKnR5cGUqKiwgaW5kaWNhdGVz IG1lc3NhZ2UgdHlwZQotICogLSAqKmNvZGUqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgY29kZSwgaXMg c3BlY2lmaWMgZm9yICoqdHlwZSoqCi0gKiAtICoqZGF0YSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSBk YXRhLCBvcHRpb25hbCwgZGVwZW5kcyBvbiAqKmNvZGUqKgorICogRWFjaCBNTUlPIGJhc2VkIG1l c3NhZ2UsIGJvdGggSG9zdCB0byBHdUMgKEgyRykgYW5kIEd1QyB0byBIb3N0IChHMkgpCisgKiBt ZXNzYWdlcywgd2hpY2ggbWF4aW11bSBsZW5ndGggZGVwZW5kcyBvbiBudW1iZXIgb2YgYXZhaWxh YmxlIHNjcmF0Y2gKKyAqIHJlZ2lzdGVycywgaXMgZGlyZWN0bHkgd3JpdHRlbiBpbnRvIHRob3Nl IHNjcmF0Y2ggcmVnaXN0ZXJzLgogICoKLSAqIFRoZSBmb2xsb3dpbmcgbWVzc2FnZSAqKnR5cGVz KiogYXJlIHN1cHBvcnRlZDoKKyAqIEZvciBHZW45KywgdGhlcmUgYXJlIDE2IHNvZnR3YXJlIHNj cmF0Y2ggcmVnaXN0ZXJzIDB4QzE4MC0weEMxQjgsCisgKiBidXQgbm8gSDJHIGNvbW1hbmQgdGFr ZXMgbW9yZSB0aGFuIDggcGFyYW1ldGVycyBhbmQgdGhlIEd1QyBmaXJtd2FyZQorICogaXRzZWxm IHVzZXMgYW4gOC1lbGVtZW50IGFycmF5IHRvIHN0b3JlIHRoZSBIMkcgbWVzc2FnZS4KICAqCi0g KiAtICoqUkVRVUVTVCoqLCBpbmRpY2F0ZXMgSG9zdC10by1HdUMgcmVxdWVzdCwgcmVxdWVzdGVk IEd1QyBhY3Rpb24gY29kZQotICogICBtdXN0IGJlIHByaW92aWRlZCBpbiAqKmNvZGUqKiBmaWVs ZC4gT3B0aW9uYWwgYWN0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnMKLSAqICAgY2FuIGJlIHByb3Zp ZGVkIGluIHJlbWFpbmluZyBwYXlsb2FkIHJlZ2lzdGVycyBvciAqKmRhdGEqKiBmaWVsZC4KKyAq IEZvciBHZW4xMSssIHRoZXJlIGFyZSBhZGRpdGlvbmFsIDQgcmVnaXN0ZXJzIDB4MTkwMjQwLTB4 MTkwMjRDLCB3aGljaAorICogYXJlLCByZWdhcmRsZXNzIG9uIGxvd2VyIGNvdW50LCBwcmVmZmVy ZWQgb3ZlciBsZWdhY3kgb25lcy4KICAqCi0gKiAtICoqUkVTUE9OU0UqKiwgaW5kaWNhdGVzIEd1 Qy10by1Ib3N0IHJlc3BvbnNlIGZyb20gZWFybGllciBHdUMgcmVxdWVzdCwKLSAqICAgYWN0aW9u IHJlc3BvbnNlIHN0YXR1cyB3aWxsIGJlIHByb3ZpZGVkIGluICoqY29kZSoqIGZpZWxkLiBPcHRp b25hbAotICogICByZXNwb25zZSBkYXRhIGNhbiBiZSByZXR1cm5lZCBpbiByZW1haW5pbmcgcGF5 bG9hZCByZWdpc3RlcnMgb3IgKipkYXRhKioKLSAqICAgZmllbGQuCisgKiBUaGUgTU1JTyBiYXNl ZCBjb21tdW5pY2F0aW9uIGlzIG1haW5seSB1c2VkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRp b24KKyAqIHBoYXNlIHRvIHNldHVwIHRoZSBgQ1RCIGJhc2VkIGNvbW11bmljYXRpb25gXyB0aGF0 IHdpbGwgYmUgdXNlZCBhZnRlcndhcmRzLgogICovCiAKICNkZWZpbmUgR1VDX01BWF9NTUlPX01T R19MRU4JCTgKIAorLyoqCisgKiBET0M6IE1NSU8gSFhHIE1lc3NhZ2UKKyAqCisgKiBGb3JtYXQg b2YgdGhlIE1NSU8gbWVzc2FnZXMgZm9sbG93cyBkZWZpbml0aW9ucyBvZiBgSFhHIE1lc3NhZ2Vg Xy4KKyAqCisgKiAgKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogIHwgICB8IEJpdHMgIHwgRGVzY3Jp cHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK KyAqICArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCisgKiAgfCAwIHwgIDMxOjAgfCAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgfAorICogICst LS0rLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIHwKKyAqICB8Li4ufCAgICAgICB8ICB8ICBFbWJlZGRlZCBgSFhHIE1l c3NhZ2VgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgKiAgKy0tLSstLS0t LS0tKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgfAorICogIHwgbiB8ICAzMTowIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwKKyAqICArLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisgKi8KKwogI2VuZGlmIC8qIF9BQklfR1VDX0NPTU1VTklDQVRJT05fTU1JT19BQklfSCAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwppbmRleCBmMTQ3Y2IzODlhMjAu LmI3NzM1NjdjYjA4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKQEAg LTM3NiwyOSArMzc2LDI3IEBAIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAq Z3VjKQogLyoKICAqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgTU1JTyBiYXNlZCBob3N0 IHRvIEd1QyBpbnRlcmZhY2UuCiAgKi8KLWludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBp bnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCitpbnQgaW50ZWxfZ3Vj X3NlbmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqcmVxdWVzdCwgdTMy IGxlbiwKIAkJCXUzMiAqcmVzcG9uc2VfYnVmLCB1MzIgcmVzcG9uc2VfYnVmX3NpemUpCiB7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9fZ3QoZ3VjKS0+aTkxNTsKIAlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBndWNfdG9fZ3QoZ3VjKS0+dW5jb3JlOwotCXUz MiBzdGF0dXM7CisJdTMyIGhlYWRlcjsKIAlpbnQgaTsKIAlpbnQgcmV0OwogCiAJR0VNX0JVR19P TighbGVuKTsKIAlHRU1fQlVHX09OKGxlbiA+IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKIAotCS8q IFdlIGV4cGVjdCBvbmx5IGFjdGlvbiBjb2RlICovCi0JR0VNX0JVR19PTigqYWN0aW9uICYgfklO VEVMX0dVQ19NU0dfQ09ERV9NQVNLKTsKLQotCS8qIElmIENUIGlzIGF2YWlsYWJsZSwgd2UgZXhw ZWN0IHRvIHVzZSBNTUlPIG9ubHkgZHVyaW5nIGluaXQvZmluaSAqLwotCUdFTV9CVUdfT04oKmFj dGlvbiAhPSBJTlRFTF9HVUNfQUNUSU9OX1JFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZF UiAmJgotCQkgICAqYWN0aW9uICE9IElOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT01NQU5E X1RSQU5TUE9SVF9CVUZGRVIpOworCUdFTV9CVUdfT04oRklFTERfR0VUKEdVQ19IWEdfTVNHXzBf T1JJR0lOLCByZXF1ZXN0WzBdKSAhPSBHVUNfSFhHX09SSUdJTl9IT1NUKTsKKwlHRU1fQlVHX09O KEZJRUxEX0dFVChHVUNfSFhHX01TR18wX1RZUEUsIHJlcXVlc3RbMF0pICE9IEdVQ19IWEdfVFlQ RV9SRVFVRVNUKTsKIAogCW11dGV4X2xvY2soJmd1Yy0+c2VuZF9tdXRleCk7CiAJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBndWMtPnNlbmRfcmVncy5md19kb21haW5zKTsKIAor cmV0cnk6CiAJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotCQlpbnRlbF91bmNvcmVfd3JpdGUo dW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBpKSwgYWN0aW9uW2ldKTsKKwkJaW50ZWxfdW5jb3Jl X3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSksIHJlcXVlc3RbaV0pOwogCiAJaW50 ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGd1Y19zZW5kX3JlZyhndWMsIGkgLSAxKSk7 CiAKQEAgLTQxMCwzMCArNDA4LDc0IEBAIGludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBp bnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCiAJICovCiAJcmV0ID0g X19pbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyh1bmNvcmUsCiAJCQkJCSAgIGd1Y19zZW5kX3Jl ZyhndWMsIDApLAotCQkJCQkgICBJTlRFTF9HVUNfTVNHX1RZUEVfTUFTSywKLQkJCQkJICAgSU5U RUxfR1VDX01TR19UWVBFX1JFU1BPTlNFIDw8Ci0JCQkJCSAgIElOVEVMX0dVQ19NU0dfVFlQRV9T SElGVCwKLQkJCQkJICAgMTAsIDEwLCAmc3RhdHVzKTsKLQkvKiBJZiBHdUMgZXhwbGljaXRseSBy ZXR1cm5lZCBhbiBlcnJvciwgY29udmVydCBpdCB0byAtRUlPICovCi0JaWYgKCFyZXQgJiYgIUlO VEVMX0dVQ19NU0dfSVNfUkVTUE9OU0VfU1VDQ0VTUyhzdGF0dXMpKQotCQlyZXQgPSAtRUlPOwor CQkJCQkgICBHVUNfSFhHX01TR18wX09SSUdJTiwKKwkJCQkJICAgRklFTERfUFJFUChHVUNfSFhH X01TR18wX09SSUdJTiwKKwkJCQkJCSAgICAgIEdVQ19IWEdfT1JJR0lOX0dVQyksCisJCQkJCSAg IDEwLCAxMCwgJmhlYWRlcik7CisJaWYgKHVubGlrZWx5KHJldCkpIHsKK3RpbWVvdXQ6CisJCWRy bV9lcnIoJmk5MTUtPmRybSwgIm1taW8gcmVxdWVzdCAlI3g6IG5vIHJlcGx5ICV4XG4iLAorCQkJ cmVxdWVzdFswXSwgaGVhZGVyKTsKKwkJZ290byBvdXQ7CisJfQogCi0JaWYgKHJldCkgewotCQlE Uk1fRVJST1IoIk1NSU86IEd1QyBhY3Rpb24gJSN4IGZhaWxlZCB3aXRoIGVycm9yICVkICUjeFxu IiwKLQkJCSAgYWN0aW9uWzBdLCByZXQsIHN0YXR1cyk7CisJaWYgKEZJRUxEX0dFVChHVUNfSFhH X01TR18wX1RZUEUsIGhlYWRlcikgPT0gR1VDX0hYR19UWVBFX05PX1JFU1BPTlNFX0JVU1kpIHsK KyNkZWZpbmUgZG9uZSAoeyBoZWFkZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIGd1Y19z ZW5kX3JlZyhndWMsIDApKTsgXAorCQlGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIGhl YWRlcikgIT0gR1VDX0hYR19PUklHSU5fR1VDIHx8IFwKKwkJRklFTERfR0VUKEdVQ19IWEdfTVNH XzBfVFlQRSwgaGVhZGVyKSAhPSBHVUNfSFhHX1RZUEVfTk9fUkVTUE9OU0VfQlVTWTsgfSkKKwor CQlyZXQgPSB3YWl0X2Zvcihkb25lLCAxMDAwKTsKKwkJaWYgKHVubGlrZWx5KHJldCkpCisJCQln b3RvIHRpbWVvdXQ7CisJCWlmICh1bmxpa2VseShGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9PUklH SU4sIGhlYWRlcikgIT0KKwkJCQkgICAgICAgR1VDX0hYR19PUklHSU5fR1VDKSkKKwkJCWdvdG8g cHJvdG87CisjdW5kZWYgZG9uZQorCX0KKworCWlmIChGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9U WVBFLCBoZWFkZXIpID09IEdVQ19IWEdfVFlQRV9OT19SRVNQT05TRV9SRVRSWSkgeworCQl1MzIg cmVhc29uID0gRklFTERfR0VUKEdVQ19IWEdfUkVUUllfTVNHXzBfUkVBU09OLCBoZWFkZXIpOwor CisJCWRybV9kYmcoJmk5MTUtPmRybSwgIm1taW8gcmVxdWVzdCAlI3g6IHJldHJ5aW5nLCByZWFz b24gJXVcbiIsCisJCQlyZXF1ZXN0WzBdLCByZWFzb24pOworCQlnb3RvIHJldHJ5OworCX0KKwor CWlmIChGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBFLCBoZWFkZXIpID09IEdVQ19IWEdfVFlQ RV9SRVNQT05TRV9GQUlMVVJFKSB7CisJCXUzMiBoaW50ID0gRklFTERfR0VUKEdVQ19IWEdfRkFJ TFVSRV9NU0dfMF9ISU5ULCBoZWFkZXIpOworCQl1MzIgZXJyb3IgPSBGSUVMRF9HRVQoR1VDX0hY R19GQUlMVVJFX01TR18wX0VSUk9SLCBoZWFkZXIpOworCisJCWRybV9lcnIoJmk5MTUtPmRybSwg Im1taW8gcmVxdWVzdCAlI3g6IGZhaWx1cmUgJXgvJXVcbiIsCisJCQlyZXF1ZXN0WzBdLCBlcnJv ciwgaGludCk7CisJCXJldCA9IC1FTlhJTzsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKEZJRUxE X0dFVChHVUNfSFhHX01TR18wX1RZUEUsIGhlYWRlcikgIT0gR1VDX0hYR19UWVBFX1JFU1BPTlNF X1NVQ0NFU1MpIHsKK3Byb3RvOgorCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJtbWlvIHJlcXVlc3Qg JSN4OiB1bmV4cGVjdGVkIHJlcGx5ICUjeFxuIiwKKwkJCXJlcXVlc3RbMF0sIGhlYWRlcik7CisJ CXJldCA9IC1FUFJPVE87CiAJCWdvdG8gb3V0OwogCX0KIAogCWlmIChyZXNwb25zZV9idWYpIHsK LQkJaW50IGNvdW50ID0gbWluKHJlc3BvbnNlX2J1Zl9zaXplLCBndWMtPnNlbmRfcmVncy5jb3Vu dCAtIDEpOworCQlpbnQgY291bnQgPSBtaW4ocmVzcG9uc2VfYnVmX3NpemUsIGd1Yy0+c2VuZF9y ZWdzLmNvdW50KTsKIAotCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKwkJR0VNX0JVR19P TighY291bnQpOworCisJCXJlc3BvbnNlX2J1ZlswXSA9IGhlYWRlcjsKKworCQlmb3IgKGkgPSAx OyBpIDwgY291bnQ7IGkrKykKIAkJCXJlc3BvbnNlX2J1ZltpXSA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwKLQkJCQkJCQkgICAgZ3VjX3NlbmRfcmVnKGd1YywgaSArIDEpKTsKLQl9CisJCQkJ CQkJICAgIGd1Y19zZW5kX3JlZyhndWMsIGkpKTsKIAotCS8qIFVzZSBkYXRhIGZyb20gdGhlIEd1 QyByZXNwb25zZSBhcyBvdXIgcmV0dXJuIHZhbHVlICovCi0JcmV0ID0gSU5URUxfR1VDX01TR19U T19EQVRBKHN0YXR1cyk7CisJCS8qIFVzZSBudW1iZXIgb2YgY29waWVkIGR3b3JkcyBhcyBvdXIg cmV0dXJuIHZhbHVlICovCisJCXJldCA9IGNvdW50OworCX0gZWxzZSB7CisJCS8qIFVzZSBkYXRh IGZyb20gdGhlIEd1QyByZXNwb25zZSBhcyBvdXIgcmV0dXJuIHZhbHVlICovCisJCXJldCA9IEZJ RUxEX0dFVChHVUNfSFhHX1JFU1BPTlNFX01TR18wX0RBVEEwLCBoZWFkZXIpOworCX0KIAogb3V0 OgogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KHVuY29yZSwgZ3VjLT5zZW5kX3JlZ3MuZndf ZG9tYWlucyk7Ci0tIAoyLjI4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=