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=-12.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 C187BC43461 for ; Mon, 7 Sep 2020 00:55:43 +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 803752080A for ; Mon, 7 Sep 2020 00:55:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 803752080A 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 11A956E08E; Mon, 7 Sep 2020 00:55:43 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD5BC6E0C4; Mon, 7 Sep 2020 00:55:41 +0000 (UTC) IronPort-SDR: 7PlYO5YFQMPwlMh/UuU62/mEUXlOSpF1aBmLhRJvx2Y5XpyRwzqa4Xe2+Med25+K1biUkOQZ4g yO/Bb18W7HWQ== X-IronPort-AV: E=McAfee;i="6000,8403,9736"; a="157950636" X-IronPort-AV: E=Sophos;i="5.76,400,1592895600"; d="scan'208";a="157950636" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Sep 2020 17:55:41 -0700 IronPort-SDR: LSwyFHrsBPsPVIGPfqZEvM5Dr7EhZvE7KNViveq8upgNmE881BrrCmw8AY5fUTP9eU3bh2N/t8 +ZgBz2Lzun1Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,400,1592895600"; d="scan'208";a="479443920" Received: from xzhan34-mobl2.bj.intel.com ([10.238.154.74]) by orsmga005.jf.intel.com with ESMTP; 06 Sep 2020 17:55:38 -0700 From: Xiaolin Zhang To: intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Date: Sat, 5 Sep 2020 00:21:39 +0800 Message-Id: <1599236505-9086-7-git-send-email-xiaolin.zhang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599236505-9086-1-git-send-email-xiaolin.zhang@intel.com> References: <1599236505-9086-1-git-send-email-xiaolin.zhang@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v1 06/12] drm/i915: vgpu workload submisison pv support 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: , Cc: chris@chris-wilson.co.uk, zhiyuan.lv@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" dG8gaW1wcm92ZSBlZmZpY2llbmN5IGFuZCByZWR1Y2UgdGhlIGNvbXBsZXhpdHkgb2YgdmdwdSB3 b3JrbG9hZApzdWJtaXNzaW9uIHN1cHBvcnQsIGEgcHYgdmVyc2lvbiBvZiB3b3JrbG9hZCBzdWJt aXNzaW9uIGJhY2tlbmQKaW1wbGVtZW50ZWQgd2l0aCBlbmdpbmUgc3VibWlzc2lvbiBkYXRhIGlu IHRoZSBzaGFyZWQgbWVtb3J5IGFuZAplbGltaW5hdGluZyBleGVjbGlzdHMgY3NiIHByb2Nlc3Mg YW5kIGNvbnRleHQgc3dpdGNoIGludGVycnVwdAppbiBzdWJtaXNpc2lvbiByb3V0aW5lLgoKbmV3 IFBWX1NVQk1JU1NJT04gcHZfY2FwIGlzIHVzZWQgdG8gY29udHJvbCB0aGlzIGxldmVsIG9mIHB2 IHN1cHBvcnQgaW4KYm90aCBndWVzdCBhbmQgaG9zdCBzaWRlLgoKU2lnbmVkLW9mZi1ieTogWGlh b2xpbiBaaGFuZyA8eGlhb2xpbi56aGFuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9scmMuYyAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmMgICAgICAgICAgIHwgIDY3ICsrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmggICAgICAgICAgIHwgIDI1ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHZfc3VibWlzc2lvbi5jIHwgMzI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZp bGVzIGNoYW5nZWQsIDQxMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKaW5kZXggZTU1NzRlNTAuLjEzZDE3MzkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCkBAIC0yNjksNyArMjY5LDcgQEAgaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkg Kz0gXAogCXNlbGZ0ZXN0cy9saWJyYXBsLm8KIAogIyB2aXJ0dWFsIGdwdSBjb2RlCi1pOTE1LXkg Kz0gaTkxNV92Z3B1Lm8KK2k5MTUteSArPSBpOTE1X3ZncHUubyBpbnRlbF9wdl9zdWJtaXNzaW9u Lm8KIAogaWZlcSAoJChDT05GSUdfRFJNX0k5MTVfR1ZUKSx5KQogaTkxNS15ICs9IGludGVsX2d2 dC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IDA0MTJhNDQuLjRmNzcyMjYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCkBAIC01MDE4LDYgKzUwMTgsOCBAQCB2 b2lkIGludGVsX2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAkJCWlmIChJU19BQ1RJVkUoQ09ORklHX0RSTV9JOTE1X1RJTUVT TElDRV9EVVJBVElPTikpCiAJCQkJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElN RVNMSUNFUzsKIAkJfQorCX0gZWxzZSB7CisJCWludGVsX3ZncHVfY29uZmlnX3B2X2NhcHMoZW5n aW5lLT5pOTE1LCBQVl9TVUJNSVNTSU9OLCBlbmdpbmUpOwogCX0KIAogCWlmIChJTlRFTF9HRU4o ZW5naW5lLT5pOTE1KSA+PSAxMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKaW5kZXggNGU1MDY5 NC4uYmE3YTFmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKQEAgLTEwMSw2ICsxMDEsNyBA QCB2b2lkIGludGVsX3ZncHVfZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAogCS8qIGd1ZXN0IGRyaXZlciBQViBjYXBhYmlsaXR5ICovCiAJZGV2X3ByaXYtPnZncHUu cHZfY2FwcyA9IFBWX1BQR1RUIHwgUFZfR0dUVDsKKwlkZXZfcHJpdi0+dmdwdS5wdl9jYXBzIHw9 IFBWX1NVQk1JU1NJT047CiAKIAlpZiAoIWludGVsX3ZncHVfZGV0ZWN0X3B2X2NhcHMoZGV2X3By aXYsIHNoYXJlZF9hcmVhKSkgewogCQlEUk1fSU5GTygiVmlydHVhbCBHUFUgZm9yIEludGVsIEdW VC1nIGRldGVjdGVkLlxuIik7CkBAIC0xMjAsNiArMTIxLDggQEAgdm9pZCBpbnRlbF92Z3B1X2Rl c3Ryb3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaWYgKCFpbnRlbF92Z3B1X2Fj dGl2ZShpOTE1KSB8fCAhcHYpCiAJCXJldHVybjsKIAorCWtmcmVlKHB2LT5zdWJtaXNzaW9uKTsK KwogCV9fZnJlZV9wYWdlKHZpcnRfdG9fcGFnZShwdi0+c2hhcmVkX3BhZ2UpKTsKIAlrZnJlZShw dik7CiB9CkBAIC02MDAsNyArNjAzLDggQEAgc3RhdGljIHUzMiBwdl9nZXRfbmV4dF9mZW5jZShz dHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdV9wdiAqcHYpCiB9CiAKIHN0YXRpYyBpbnQgcHZfc2VuZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKLQkJY29uc3QgdTMyICphY3Rpb24sIHUzMiBs ZW4sIHUzMiAqc3RhdHVzKQorCQljb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwgdTMyICpzdGF0 dXMsCisJCXZvaWQgX19pb21lbSAqYWRkcikKIHsKIAlzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSAq dmdwdSA9ICZpOTE1LT52Z3B1OwogCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1X3B2ICpwdiA9IHZn cHUtPnB2OwpAQCAtNjE4LDcgKzYyMiwxMCBAQCBzdGF0aWMgaW50IHB2X3NlbmQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJaWYgKHVubGlrZWx5KGVycikpCiAJCWdvdG8gdW5saW5r OwogCi0JaTkxNS0+dmdwdS5wdi0+bm90aWZ5KGk5MTUpOworCWlmIChhZGRyKQorCQl3cml0ZWwo VkdUX0cyVl9QVl9TRU5EX1RSSUdHRVIsIGFkZHIgKyB2Z3RpZl9vZmZzZXQoZzJ2X25vdGlmeSkp OworCWVsc2UKKwkJaTkxNS0+dmdwdS5wdi0+bm90aWZ5KGk5MTUpOwogCiAJZXJyID0gd2FpdF9m b3JfZGVzY191cGRhdGUoZGVzYywgZmVuY2UsIHN0YXR1cyk7CiAJaWYgKHVubGlrZWx5KGVycikp CkBAIC02NDUsNyArNjUyLDcgQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3B2X3NlbmRfY29tbWFu ZF9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAlzcGluX2xvY2tfaXJx c2F2ZSgmdmdwdS0+cHYtPmxvY2ssIGZsYWdzKTsKIAotCXJldCA9IHB2X3NlbmQoaTkxNSwgYWN0 aW9uLCBsZW4sICZzdGF0dXMpOworCXJldCA9IHB2X3NlbmQoaTkxNSwgYWN0aW9uLCBsZW4sICZz dGF0dXMsIE5VTEwpOwogCWlmICh1bmxpa2VseShyZXQgPCAwKSkgewogCQlEUk1fRVJST1IoIlBW OiBzZW5kIGFjdGlvbiAlI1ggZmFpbGVkOyBlcnI9JWQgc3RhdHVzPSUjWFxuIiwKIAkJCSAgYWN0 aW9uWzBdLCByZXQsIHN0YXR1cyk7CkBAIC02NjMsNiArNjcwLDE3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3ZncHVfcHZfbm90aWZ5X21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCUk5MTVfV1JJVEUodmd0aWZfcmVnKGcydl9ub3RpZnkpLCBWR1RfRzJWX1BWX1NFTkRfVFJJ R0dFUik7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVfdmdwdV9yZWdpc3Rlcl9jYXBfZ3BhKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQlzdHJ1Y3QgcHZfY2FwX2FkZHIgKmNhcF9hZGRy LCB2b2lkIF9faW9tZW0gKnNoYXJlZF9hcmVhKQoreworCXUzMiBkYXRhWzMyXTsKKwl1MzIgc3Rh dHVzID0gfjA7CisKKwlkYXRhWzBdID0gUFZfQ01EX1JFR0lTVEVSX0NBUF9HUEE7CisJbWVtY3B5 KCZkYXRhWzFdLCBjYXBfYWRkciwgc2l6ZW9mKCpjYXBfYWRkcikpOworCXB2X3NlbmQoaTkxNSwg ZGF0YSwgMSArIHNpemVvZihjYXBfYWRkciksICZzdGF0dXMsIHNoYXJlZF9hcmVhKTsKK30KKwog LyoKICAqIHNoYXJlZF9wYWdlIHNldHVwIGZvciBWR1BVIFBWIGZlYXR1cmVzCiAgKi8KQEAgLTY3 MiwxNyArNjkwLDIxIEBAIHN0YXRpYyBpbnQgaW50ZWxfdmdwdV9zZXR1cF9zaGFyZWRfcGFnZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAl2b2lkIF9faW9tZW0gKmFkZHI7CiAJc3Ry dWN0IGk5MTVfdmlydHVhbF9ncHVfcHYgKnB2OwogCXN0cnVjdCBndnRfc2hhcmVkX3BhZ2UgKmJh c2U7Ci0JdTY0IGdwYTsKKwlzdHJ1Y3QgcHZfY2FwX2FkZHIgY2FwX2FkZHI7CisJdm9pZCAqc3Vi X2Jhc2U7CisJdTY0IGdwYSwgc3ViX2dwYTsKIAl1MTYgdmVyX21haiwgdmVyX21pbjsKIAlpbnQg cmV0ID0gMDsKKwlpbnQgaTsKKwl1MzIgc2l6ZTsKIAogCS8qIFdlIGFsbG9jYXRlIDEgcGFnZSBz aGFyZWQgYmV0d2VlbiBndWVzdCBhbmQgR1ZUIGZvciBkYXRhIGV4Y2hhbmdlLgogCSAqICAgICAg IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIAkgKiAgICAgIHx2ZXJzaW9ufFBWX0RF U0NzKFNFTkQpICAgICAgICAgfAogCSAqICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19QQUdFLzgKLQkgKiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor CSAqICAgICAgfFBWX1JTVkQgICAgICAgICAgICAgICAgICAgICAgICB8CiAJICogICAgICB8X19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX1BBR0UvNAotCSAqICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisJICogICAgICB8UFZfU1VCTUlTU0lPTiAgICAgICAgICAg ICAgICAgIHwKIAkgKiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogCSAq ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAJICogICAgICB8X19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX1BBR0UvMgpAQCAtNzQ4LDYgKzc3MCwzMyBAQCBzdGF0 aWMgaW50IGludGVsX3ZncHVfc2V0dXBfc2hhcmVkX3BhZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCiAJcHYtPm5vdGlmeSA9IGludGVsX3ZncHVfcHZfbm90aWZ5X21taW87CiAJc3Bp bl9sb2NrX2luaXQoJnB2LT5sb2NrKTsKIAorCS8qIHNldHVwIFBWIHBlciBlbmdpbmUgZGF0YSBl eGNoYW5nZSBzdHJ1Y3R1cmUgKi8KKwlpZiAoaTkxNS0+dmdwdS5wdl9jYXBzICYgUFZfU1VCTUlT U0lPTikgeworCQlzdWJfYmFzZSA9ICh2b2lkICopYmFzZSArIFBWX1NVQl9PRkY7CisJCXN1Yl9n cGEgPSBncGEgKyBQVl9TVUJfT0ZGOworCisJCXNpemUgPSBzaXplb2Yoc3RydWN0IHB2X3N1Ym1p c3Npb24pOworCQlpZiAoc2l6ZSAqIEk5MTVfTlVNX0VOR0lORVMgPiAoUFZfQ01EX09GRiAtIFBW X1NVQl9PRkYpKSB7CisJCQlwdi0+c3VibWlzc2lvbiA9IGttYWxsb2NfYXJyYXkoSTkxNV9OVU1f RU5HSU5FUywgc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCQlpZiAoIXB2LT5zdWJtaXNzaW9uKSB7CisJ CQkJcmV0ID0gLUVOT01FTTsKKwkJCQlnb3RvIGVycjsKKwkJCX0KKwkJCXN1Yl9iYXNlID0gcHYt PnN1Ym1pc3Npb247CisJCQlzdWJfZ3BhID0gdmlydF90b19waHlzKHB2LT5zdWJtaXNzaW9uKTsK KwkJfQorCisJCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKKwkJCXB2 LT5zdWJtaXNzaW9uX2RhdGFbaV0gPSBzdWJfYmFzZSArICBzaXplICogaTsKKwkJCXB2LT5zdWJt aXNzaW9uX2RhdGFbaV0tPnN1Ym1pdHRlZCA9IGZhbHNlOworCQkJc3Bpbl9sb2NrX2luaXQoJnB2 LT5zdWJtaXNzaW9uX2xvY2tbaV0pOworCQl9CisKKwkJY2FwX2FkZHIuY2FwID0gUFZfU1VCTUlT U0lPTjsKKwkJY2FwX2FkZHIuZ3BhID0gc3ViX2dwYTsKKwkJaW50ZV92Z3B1X3JlZ2lzdGVyX2Nh cF9ncGEoaTkxNSwgJmNhcF9hZGRyLCBzaGFyZWRfYXJlYSk7CisJfQorCiAJcmV0dXJuIHJldDsK IGVycjoKIAlfX2ZyZWVfcGFnZSh2aXJ0X3RvX3BhZ2UoYmFzZSkpOwpAQCAtNzYyLDYgKzgxMSw3 IEBAIHZvaWQgaW50ZWxfdmdwdV9jb25maWdfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKIHsKIAlzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQ7CiAJc3RydWN0IGk5MTVfZ2d0 dCAqZ2d0dDsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAKIAlpZiAoIWludGVs X3ZncHVfY2hlY2tfcHZfY2FwKGk5MTUsIGNhcCkpCiAJCXJldHVybjsKQEAgLTc3Nyw2ICs4Mjcs MTEgQEAgdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAogCQlnZ3R0LT52bS52bWFfb3BzLmJpbmRfdm1hICAgID0gZ2d0dF9iaW5kX3Zt YV9wdjsKIAkJZ2d0dC0+dm0udm1hX29wcy51bmJpbmRfdm1hICA9IGdndHRfdW5iaW5kX3ZtYV9w dl9ub3A7CiAJfQorCisJaWYgKGNhcCA9PSBQVl9TVUJNSVNTSU9OKSB7CisJCWVuZ2luZSA9IChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKKwkJdmdwdV9zZXRfcHZfc3VibWlzc2lvbihl bmdpbmUpOworCX0KIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCmluZGV4IDU4OGUz NjEuLjMyYWFjNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCkBAIC0yNSw2ICsyNSw3IEBA CiAjZGVmaW5lIF9JOTE1X1ZHUFVfSF8KIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5j bHVkZSAiZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgiCiAKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Owogc3RydWN0IGk5MTVfZ2d0dDsKQEAgLTMyLDYgKzMzLDggQEAgc3RydWN0IGk5MTVfZ2d0dDsK ICNkZWZpbmUgUFZfTUFKT1IgICAgICAgIDAKICNkZWZpbmUgUFZfTUlOT1IgICAgICAgIDEKICNk ZWZpbmUgUFZfREVTQ19PRkYgICAgIChQQUdFX1NJWkUvMjU2KQorI2RlZmluZSBQVl9SU1ZEX09G RiAgICAgKFBBR0VfU0laRS84KQorI2RlZmluZSBQVl9TVUJfT0ZGICAgICAgKFBBR0VfU0laRS80 KQogI2RlZmluZSBQVl9DTURfT0ZGICAgICAgKFBBR0VfU0laRS8yKQogCiAvKiBkZWZpbmUgZGlm ZmVyZW50IFBWIGNhcGFiaWxpdGllcyAqLwpAQCAtMzksNiArNDIsNyBAQCBlbnVtIHB2X2NhcHMg ewogCVBWX05PTkUgPSAwLAogCVBWX1BQR1RUID0gQklUKDApLAogCVBWX0dHVFQgPSBCSVQoMSks CisJUFZfU1VCTUlTU0lPTiA9IEJJVCgyKSwKIH07CiAKIC8qIHZncHUgUFYgY29tbWFuZHMgKi8K QEAgLTQ4LDYgKzUyLDggQEAgZW51bSBpbnRlbF92Z3B1X3B2X2NtZCB7CiAJUFZfQ01EX1VOQklO RF9QUEdUVCwKIAlQVl9DTURfQklORF9HR1RULAogCVBWX0NNRF9VTkJJTkRfR0dUVCwKKwlQVl9D TURfUkVHSVNURVJfQ0FQX0dQQSwKKwlQVl9DTURfU1VCTUlUX1dPUktMT0FECiB9OwogCiAvKiBB IGNvbW1vbiBzaGFyZWQgcGFnZSg0S0IpIGJldHdlZW4gR1ZUZyBhbmQgdmdwdSBhbGxvY2F0ZWQg YnkgZ3Vlc3QgKi8KQEAgLTU2LDYgKzYyLDExIEBAIHN0cnVjdCBndnRfc2hhcmVkX3BhZ2Ugewog CXUxNiB2ZXJfbWlub3I7CiB9OwogCitzdHJ1Y3QgcHZfY2FwX2FkZHIgeworCXUzMiBjYXA7CisJ dTY0IGdwYTsKK307CisKIC8qIFBWIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3MgZm9yIEdHVFQvUFBH VFQgKi8KIHN0cnVjdCBwdl92bWEgewogCXUzMiBzaXplOyAvKiBudW0gb2YgcGFnZXMgKi8KQEAg LTY1LDYgKzc2LDE0IEBAIHN0cnVjdCBwdl92bWEgewogCXU2NCBwbWw0OyAvKiBwcGd0dCBoYW5k bGVyICovCiB9IF9fcGFja2VkOwogCisvKiBQViB3b3JrbG9hZCBzdWJtaXNzaW9uICovCitzdHJ1 Y3QgcHZfc3VibWlzc2lvbiB7CisJYm9vbCBzdWJtaXR0ZWQ7CisJLyogd29ya2xvYWQgbHJjIGRl c2NyaXB0b3IgKi8KKwl1NjQgZGVzY3NbRVhFQ0xJU1RfTUFYX1BPUlRTXTsKKwl1NjQgcnN2ZFtF WEVDTElTVF9NQVhfUE9SVFNdOworfSBfX3BhY2tlZDsKKwogLyoKICAqIERlZmluaXRpb24gb2Yg dGhlIGNvbW1hbmQgdHJhbnNwb3J0IG1lc3NhZ2UgaGVhZGVyIChEVzApCiAgKgpAQCAtMTA4LDYg KzEyNywxMSBAQCBzdHJ1Y3QgdmdwdV9wdl9jdF9idWZmZXIgewogc3RydWN0IGk5MTVfdmlydHVh bF9ncHVfcHYgewogCXN0cnVjdCBndnRfc2hhcmVkX3BhZ2UgKnNoYXJlZF9wYWdlOwogCisJdm9p ZCAqc3VibWlzc2lvbjsgLyogcHYgc3VibWlzc2lvbiBiYXNlICovCisJLyogcGVyIGVuZ2luZSBQ ViB3b3JrbG9hZCBzdWJtaXNzaW9uIGRhdGEgKi8KKwlzdHJ1Y3QgcHZfc3VibWlzc2lvbiAqc3Vi bWlzc2lvbl9kYXRhW0k5MTVfTlVNX0VOR0lORVNdOworCXNwaW5sb2NrX3Qgc3VibWlzc2lvbl9s b2NrW0k5MTVfTlVNX0VOR0lORVNdOworCiAJLyogUFYgY29tbWFuZCBidWZmZXIgc3VwcG9ydCAq LwogCXN0cnVjdCB2Z3B1X3B2X2N0X2J1ZmZlciBjdGI7CiAJdTMyIG5leHRfZmVuY2U7CkBAIC0x MzYsNCArMTYwLDUgQEAgYm9vbCBpbnRlbF92Z3B1X2RldGVjdF9wdl9jYXBzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCQl2b2lkIF9faW9tZW0gKnNoYXJlZF9hcmVhKTsKIHZvaWQg aW50ZWxfdmdwdV9jb25maWdfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAkJZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0YSk7Cit2b2lkIHZncHVfc2V0X3B2X3N1Ym1p c3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKICNlbmRpZiAvKiBfSTkxNV9W R1BVX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJt aXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUyZWZkOAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwpAQCAtMCwwICsx LDMyNCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdo dCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfdmdwdS5o IgorI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9ndF9w bS5oIgorI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKKyNpbmNsdWRlICJpOTE1X3RyYWNlLmgi CisKKyNkZWZpbmUgQ1RYX0RFU0NfRk9SQ0VfUkVTVE9SRSBCSVRfVUxMKDIpCisKK3N0YXRpYyB1 NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorewor CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0OworCXU2NCBkZXNjID0gY2Ut PmxyYy5kZXNjOworCXUzMiB0YWlsLCBwcmV2OworCisJdGFpbCA9IGludGVsX3Jpbmdfc2V0X3Rh aWwocnEtPnJpbmcsIHJxLT50YWlsKTsKKwlwcmV2ID0gY2UtPmxyY19yZWdfc3RhdGVbQ1RYX1JJ TkdfVEFJTF07CisJaWYgKHVubGlrZWx5KGludGVsX3JpbmdfZGlyZWN0aW9uKHJxLT5yaW5nLCB0 YWlsLCBwcmV2KSA8PSAwKSkKKwkJZGVzYyB8PSBDVFhfREVTQ19GT1JDRV9SRVNUT1JFOworCWNl LT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUxdID0gdGFpbDsKKwlycS0+dGFpbCA9IHJxLT53 YV90YWlsOworCWNlLT5scmMuZGVzYyAmPSB+Q1RYX0RFU0NfRk9SQ0VfUkVTVE9SRTsKKwlyZXR1 cm4gZGVzYzsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJp b2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQoreworCXJldHVybiByYl9lbnRyeShyYiwgc3RydWN0 IGk5MTVfcHJpb2xpc3QsIG5vZGUpOworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAq c2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBpZHgpCit7CisJX19pbnRl bF9ndF9wbV9nZXQocnEtPmVuZ2luZS0+Z3QpOworCXJldHVybiBpOTE1X3JlcXVlc3RfZ2V0KHJx KTsKK30KKworc3RhdGljIHZvaWQgc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQoreworCWludGVsX2d0X3BtX3B1dF9hc3luYyhycS0+ZW5naW5lLT5ndCk7CisJaTkxNV9yZXF1 ZXN0X3B1dChycSk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCisJX190YXNrbGV0X2Rp c2FibGVfc3luY19vbmNlKCZleGVjbGlzdHMtPnRhc2tsZXQpOworfQorCitzdGF0aWMgdm9pZAor Y2FuY2VsX3BvcnRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25z dCBleGVjbGlzdHMpCit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqIGNvbnN0ICpwb3J0LCAqcnE7 CisKKwkvKiBOb3RlIHdlIGFyZSBvbmx5IHVzaW5nIHRoZSBpbmZsaWdodCBhbmQgbm90IHRoZSBw ZW5kaW5nIHF1ZXVlICovCisJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5hY3RpdmU7IChycSA9ICpw b3J0KTsgcG9ydCsrKQorCQlzY2hlZHVsZV9vdXQocnEpOworCWV4ZWNsaXN0cy0+YWN0aXZlID0K KwkJbWVtc2V0KGV4ZWNsaXN0cy0+aW5mbGlnaHQsIDAsIHNpemVvZihleGVjbGlzdHMtPmluZmxp Z2h0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X3Jlc2V0X3Jld2luZChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2ly cXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKKworCWNhbmNlbF9wb3J0X3JlcXVl c3RzKGV4ZWNsaXN0cyk7CisKKwkvKiBQdXNoIGJhY2sgYW55IGluY29tcGxldGUgcmVxdWVzdHMg Zm9yIHJlcGxheSBhZnRlciB0aGUgcmVzZXQuICovCisJcnEgPSBleGVjbGlzdHNfdW53aW5kX2lu Y29tcGxldGVfcmVxdWVzdHMoZXhlY2xpc3RzKTsKKwlpZiAoIXJxKQorCQlnb3RvIG91dF91bmxv Y2s7CisKKwlpZiAoIWk5MTVfcmVxdWVzdF9zdGFydGVkKHJxKSkKKwkJc3RhbGxlZCA9IGZhbHNl OworCisJX19pOTE1X3JlcXVlc3RfcmVzZXQocnEsIHN0YWxsZWQpOworCWludGVsX2xyX2NvbnRl eHRfcmVzZXQoZW5naW5lLCBycS0+Y29udGV4dCwgcnEtPmhlYWQsIHN0YWxsZWQpOworCitvdXRf dW5sb2NrOgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZs YWdzKTsKK30KKworc3RhdGljIHZvaWQgcHZfcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0 IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKworCWlmIChfX3Rhc2tsZXRfZW5hYmxl KCZleGVjbGlzdHMtPnRhc2tsZXQpKQorCQkvKiBBbmQga2ljayBpbiBjYXNlIHdlIG1pc3NlZCBh IG5ldyByZXF1ZXN0IHN1Ym1pc3Npb24uICovCisJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmV4ZWNs aXN0cy0+dGFza2xldCk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X3Jlc2V0X2NhbmNlbChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsICpybjsKKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7 CisKKwkvKiBDYW5jZWwgdGhlIHJlcXVlc3RzIG9uIHRoZSBIVyBhbmQgY2xlYXIgdGhlIEVMU1Ag dHJhY2tlci4gKi8KKwljYW5jZWxfcG9ydF9yZXF1ZXN0cyhleGVjbGlzdHMpOworCisJLyogTWFy ayBhbGwgZXhlY3V0aW5nIHJlcXVlc3RzIGFzIHNraXBwZWQuICovCisJbGlzdF9mb3JfZWFjaF9l bnRyeShycSwgJmVuZ2luZS0+YWN0aXZlLnJlcXVlc3RzLCBzY2hlZC5saW5rKSB7CisJCWk5MTVf cmVxdWVzdF9zZXRfZXJyb3Jfb25jZShycSwgLUVJTyk7CisJCWk5MTVfcmVxdWVzdF9tYXJrX2Nv bXBsZXRlKHJxKTsKKwl9CisKKwkvKiBGbHVzaCB0aGUgcXVldWVkIHJlcXVlc3RzIHRvIHRoZSB0 aW1lbGluZSBsaXN0IChmb3IgcmV0aXJpbmcpLiAqLworCXdoaWxlICgocmIgPSByYl9maXJzdF9j YWNoZWQoJmV4ZWNsaXN0cy0+cXVldWUpKSkgeworCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9 IHRvX3ByaW9saXN0KHJiKTsKKwkJaW50IGk7CisKKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVz dF9jb25zdW1lKHJxLCBybiwgcCwgaSkgeworCQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxp bmspOworCQkJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJxKTsKKwkJCWRtYV9mZW5jZV9zZXRfZXJy b3IoJnJxLT5mZW5jZSwgLUVJTyk7CisJCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7 CisJCX0KKworCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsK KwkJaTkxNV9wcmlvbGlzdF9mcmVlKHApOworCX0KKworCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3Jp dHlfaGludCA9IElOVF9NSU47CisJZXhlY2xpc3RzLT5xdWV1ZSA9IFJCX1JPT1RfQ0FDSEVEOwor CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwor fQorCitzdGF0aWMgdm9pZCBwdl9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAorCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqb3V0LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqZW5k KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0g JmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1X3B2ICpwdiA9IGVu Z2luZS0+aTkxNS0+dmdwdS5wdjsKKwlzdHJ1Y3QgcHZfc3VibWlzc2lvbiAqc3ViX2RhdGEgPSBw di0+c3VibWlzc2lvbl9kYXRhW2VuZ2luZS0+aWRdOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx OworCWludCBuLCBlcnI7CisKKwltZW1zZXQoc3ViX2RhdGEtPmRlc2NzLCAwLCBzaXplb2Yoc3Vi X2RhdGEtPmRlc2NzKSk7CisJbiA9IDA7CisKKwlkbyB7CisJCXJxID0gKm91dCsrOworCQlzdWJf ZGF0YS0+ZGVzY3Nbbl0gPSBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQocnEpOworCQluKys7CisJ fSB3aGlsZSAob3V0ICE9IGVuZCk7CisKKwlzcGluX2xvY2soJnB2LT5zdWJtaXNzaW9uX2xvY2tb ZW5naW5lLT5pZF0pOworCXN1Yl9kYXRhLT5zdWJtaXR0ZWQgPSB0cnVlOworCXdyaXRlbChQVl9D TURfU1VCTUlUX1dPUktMT0FELCBleGVjbGlzdHMtPnN1Ym1pdF9yZWcpOworCisjZGVmaW5lIGRv bmUgKFJFQURfT05DRShzdWJfZGF0YS0+c3VibWl0dGVkKSA9PSBmYWxzZSkKKwllcnIgPSB3YWl0 X2Zvcl9hdG9taWNfdXMoZG9uZSwgMTAwMCk7CisjdW5kZWYgZG9uZQorCXNwaW5fdW5sb2NrKCZw di0+c3VibWlzc2lvbl9sb2NrW2VuZ2luZS0+aWRdKTsKKworCWlmICh1bmxpa2VseShlcnIpKQor CQlEUk1fRVJST1IoIlBWICglcykgd29ya2xvYWQgc3VibWlzc2lvbiBmYWlsZWRcbiIsIGVuZ2lu ZS0+bmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3Qg ZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipm aXJzdCA9IGV4ZWNsaXN0cy0+aW5mbGlnaHQ7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBjb25z dCBsYXN0X3BvcnQgPSBmaXJzdCArIGV4ZWNsaXN0cy0+cG9ydF9tYXNrOworCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKmxhc3QgPSBmaXJzdFswXTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqcG9ydDsK KwlzdHJ1Y3QgcmJfbm9kZSAqcmI7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKworCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOworCisJaWYgKGxhc3QpIHsKKwkJaWYg KCorK2ZpcnN0KQorCQkJcmV0dXJuOworCQlsYXN0ID0gTlVMTDsKKwl9CisKKwlwb3J0ID0gZmly c3Q7CisJd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3RzLT5xdWV1ZSkpKSB7 CisJCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOworCQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSwgKnJuOworCQlpbnQgaTsKKworCQlwcmlvbGlzdF9mb3JfZWFjaF9y ZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwLCBpKSB7CisJCQlpZiAobGFzdCAmJiBycS0+Y29udGV4 dCAhPSBsYXN0LT5jb250ZXh0KSB7CisJCQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KQorCQkJCQln b3RvIGRvbmU7CisKKwkJCQkqcG9ydCA9IHNjaGVkdWxlX2luKGxhc3QsIHBvcnQgLSBleGVjbGlz dHMtPmluZmxpZ2h0KTsKKwkJCQlwb3J0Kys7CisJCQl9CisKKwkJCWxpc3RfZGVsX2luaXQoJnJx LT5zY2hlZC5saW5rKTsKKwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CisJCQlzdWJtaXQg PSB0cnVlOworCQkJbGFzdCA9IHJxOworCQl9CisKKwkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2Rl LCAmZXhlY2xpc3RzLT5xdWV1ZSk7CisJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKKwl9Citkb25l OgorCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9CisJCXJiID8gdG9fcHJpb2xpc3Qo cmIpLT5wcmlvcml0eSA6IElOVF9NSU47CisJaWYgKHN1Ym1pdCkgeworCQkqcG9ydCA9IHNjaGVk dWxlX2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPmluZmxpZ2h0KTsKKwkJKisrcG9ydCA9IE5V TEw7CisJCXB2X3N1Ym1pdChlbmdpbmUsIGZpcnN0LCBwb3J0KTsKKwl9CisJZXhlY2xpc3RzLT5h Y3RpdmUgPSBleGVjbGlzdHMtPmluZmxpZ2h0OworfQorCitzdGF0aWMgdm9pZCB2Z3B1X3B2X3N1 Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdp bmUtPmV4ZWNsaXN0czsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqcG9ydCwgKnJxOworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGk5MTVfdmlydHVhbF9ncHVfcHYgKnB2ID0gZW5naW5l LT5pOTE1LT52Z3B1LnB2OworCXN0cnVjdCBwdl9zdWJtaXNzaW9uICpzdWJfZGF0YSA9IHB2LT5z dWJtaXNzaW9uX2RhdGFbZW5naW5lLT5pZF07CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5l LT5hY3RpdmUubG9jaywgZmxhZ3MpOworCisJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5pbmZsaWdo dDsgKHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJaWYgKCFpOTE1X3JlcXVlc3RfY29tcGxldGVk KHJxKSkKKwkJCWJyZWFrOworCisJCXNjaGVkdWxlX291dChycSk7CisJfQorCisJaWYgKHBvcnQg IT0gZXhlY2xpc3RzLT5pbmZsaWdodCkgeworCQlpbnQgaWR4ID0gcG9ydCAtIGV4ZWNsaXN0cy0+ aW5mbGlnaHQ7CisJCWludCByZW0gPSBBUlJBWV9TSVpFKGV4ZWNsaXN0cy0+aW5mbGlnaHQpIC0g aWR4OworCisJCW1lbW1vdmUoZXhlY2xpc3RzLT5pbmZsaWdodCwgcG9ydCwgcmVtICogc2l6ZW9m KCpwb3J0KSk7CisJfQorCisJaWYgKCFzdWJfZGF0YS0+c3VibWl0dGVkKQorCQlwdl9kZXF1ZXVl KGVuZ2luZSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2Nr LCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorcmVzZXRfaW5fcHJvZ3Jlc3MoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKK3sKKwlyZXR1cm4g dW5saWtlbHkoIV9fdGFza2xldF9pc19lbmFibGVkKCZleGVjbGlzdHMtPnRhc2tsZXQpKTsKK30K Kworc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKK3sKKwlyZXR1cm4gUkVBRF9PTkNFKHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKK30KKwor c3RhdGljIHZvaWQgcXVldWVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CisJCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCUdFTV9CVUdfT04oIWxpc3RfZW1w dHkoJnJxLT5zY2hlZC5saW5rKSk7CisJbGlzdF9hZGRfdGFpbCgmcnEtPnNjaGVkLmxpbmssCisJ CSAgICAgIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KGVuZ2luZSwgcnFfcHJpbyhycSkpKTsK KwlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUsICZycS0+ZmVuY2UuZmxhZ3MpOworfQor Cit2b2lkIHB2X3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCit7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNs aXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKworCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJx LWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIGZlbmNlcy4gKi8KKwlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOworCisJcXVldWVfcmVxdWVzdChlbmdpbmUs IHJlcXVlc3QpOworCisJaWYgKHJxX3ByaW8ocmVxdWVzdCkgPD0gZXhlY2xpc3RzLT5xdWV1ZV9w cmlvcml0eV9oaW50KQorCQlnb3RvIG91dDsKKworCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlf aGludCA9IHJxX3ByaW8ocmVxdWVzdCk7CisJaWYgKHJlc2V0X2luX3Byb2dyZXNzKGV4ZWNsaXN0 cykpCisJCWdvdG8gb3V0OworCisJdGFza2xldF9oaV9zY2hlZHVsZSgmZXhlY2xpc3RzLT50YXNr bGV0KTsKK291dDoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2Nr LCBmbGFncyk7Cit9CisKK3ZvaWQgdmdwdV9zZXRfcHZfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCit7CisJLyoKKwkgKiBXZSBpbmhlcml0IGEgYnVuY2ggb2YgZnVu Y3Rpb25zIGZyb20gZXhlY2xpc3RzIHRoYXQgd2UnZCBsaWtlCisJICogdG8ga2VlcCB1c2luZzoK KwkgKgorCSAqICAgIGVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0X3Jl cXVlc3Q7CisJICogICAgZW5naW5lLT5jYW5jZWxfcmVxdWVzdHMgPSBleGVjbGlzdHNfY2FuY2Vs X3JlcXVlc3RzOworCSAqICAgIGVuZ2luZS0+c2NoZWR1bGUgPSBleGVjbGlzdHNfc2NoZWR1bGU7 CisJICoKKwkgKiBCdXQgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYWN0dWFsIHN1Ym1pc3Npb24g YmFja2VuZCBpbiBvcmRlcgorCSAqIHRvIHRhbGsgdG8gdGhlIEdWVCB3aXRoIFBWIG5vdGlmaWNh dGlvbiBtZXNzYWdlLgorCSAqLworCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBwdl9zdWJtaXRf cmVxdWVzdDsKKwllbmdpbmUtPmV4ZWNsaXN0cy50YXNrbGV0LmZ1bmMgPSB2Z3B1X3B2X3N1Ym1p c3Npb25fdGFza2xldDsKKworCS8qIGRvIG5vdCB1c2UgZXhlY2xpc3RzIHBhcmsvdW5wYXJrICov CisJZW5naW5lLT5wYXJrID0gZW5naW5lLT51bnBhcmsgPSBOVUxMOworCisJZW5naW5lLT5yZXNl dC5wcmVwYXJlID0gcHZfcmVzZXRfcHJlcGFyZTsKKwllbmdpbmUtPnJlc2V0LnJld2luZCA9IHB2 X3Jlc2V0X3Jld2luZDsKKwllbmdpbmUtPnJlc2V0LmNhbmNlbCA9IHB2X3Jlc2V0X2NhbmNlbDsK KwllbmdpbmUtPnJlc2V0LmZpbmlzaCA9IHB2X3Jlc2V0X2ZpbmlzaDsKKworCWVuZ2luZS0+Zmxh Z3MgJj0gfkk5MTVfRU5HSU5FX1NVUFBPUlRTX1NUQVRTOworCWVuZ2luZS0+ZmxhZ3MgfD0gSTkx NV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9UQVNLTEVUOworfQotLSAKMi43LjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=