From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaolin Zhang Subject: [PATCH v8 5/9] drm/i915: vgpu context submission pv optimization Date: Tue, 23 Jul 2019 19:32:00 +0800 Message-ID: <1563881524-147440-6-git-send-email-xiaolin.zhang@intel.com> References: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1563881524-147440-1-git-send-email-xiaolin.zhang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: zhenyu.z.wang@intel.com, hang.yuan@intel.com, zhiyuan.lv@intel.com List-Id: intel-gfx@lists.freedesktop.org SXQgaXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIG92ZXJyaWRlIHRoZSBhY3R1YWwgc3Vi bWlzaXNvbiBiYWNrZW5kCmluIG9yZGVyIHRvIGVsaW1pbmF0ZSBleGVjbGlzdHMgY3NiIHByb2Nl c3MgYW5kIHJlZHVjZSBtbWlvIHRyYXAgbnVtYmVycwpmb3Igd29ya2xvYWQgc3VibWlzc2lvbiB3 aXRob3V0IGNvbnRleHQgc3dpdGNoIGludGVycnVwdCBieSB0YWxraW5nIHdpdGgKR1ZUIHZpYSBQ ViBzdWJtaXNpc29uIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gYmV0d2VlbiBndWVzdCBhbmQgR1ZU LgoKVXNlIFBWX1NVQk1JU1NJT04gdG8gY29udHJvbCB0aGlzIGxldmVsIG9mIHB2IG9wdGltaXph dGlvbi4KCnYwOiBSRkMuCnYxOiByZWJhc2UuCnYyOiBhZGRlZCBwdiBvcHMgZm9yIHB2IGNvbnRl eHQgc3VibWlzc2lvbi4gdG8gbWF4aW1pemUgY29kZSByZXN1c2UsCmludHJvZHVjZWQgMiBtb3Jl IG9wcyAoc3VibWl0X3BvcnRzICYgcHJlZW1wdF9jb250ZXh0KSBpbnN0ZWFkIG9mIDEgb3AKKHNl dF9kZWZhdWx0X3N1Ym1pc3Npb24pIGluIGVuZ2luZSBzdHJ1Y3R1cmUuIHB2IHZlcnNpb24gb2YK c3VibWl0X3BvcnRzIGFuZCBwcmVlbXB0X2NvbnRleHQgaW1wbGVtZW50ZWQuCnYzOgoxLiB0byBy ZWR1Y2UgbW9yZSBjb2RlIGR1cGxpY2F0aW9uLCBjb2RlIHJlZmFjdG9yIGFuZCByZXBsYWNlZCAy IG9wcwoic3VibWl0X3BvcnRzICYgcHJlZW1wdF9jb250ZXgiIGZyb20gdjIgYnkgMSBvcHMgIndy aXRlX2Rlc2MiCmluIGVuZ2luZSBzdHJ1Y3R1cmUuIHB2IHZlcnNpb24gb2Ygd3JpdGVfZGVzIGlt cGxlbWVudGVkLgoyLiBhZGRlZCBWR1RfRzJWX0VMU1BfU1VCTUlUIGZvciBnMnYgcHYgbm90aWZp Y2F0aW9uLgp2NDogaW1wbGVtZW50ZWQgcHYgZWxzcCBzdWJtaXNzaW9uIHRhc2tsZXQgYXMgdGhl IGJhY2tlbmQgd29ya2xvYWQKc3VibWlzaXNvbiBieSB0YWxraW5nIHRvIEdWVCB3aXRoIFBWIG5v dGlmaWNhaXRvbiBtZWNoYW5pc20gYW5kIHJlbmFtZWQKVkdUX0cyVl9FTFNQX1NVQk1JVCB0byBW R1RfRzJWX1BWX1NVQk1JU0lJT04uCnY1OiBhZGRyZXNzZWQgdjQgY29tbWVudHMgZnJvbSBDaHJp cywgaW50ZWxfcHZfc3VibWlzc2lvbi5jIGFkZGVkLgp2NjogYWRkcmVzc2VkIHY1IGNvbW1lbnRz IGZyb20gQ2hyaXMsIHJlcGxhY2VkIGVuZ2luZSBpZCBieSBod19pZC4Kdjc6IHJlYmFzZS4Kdjg6 IGFkZHJlc3NlZCB2NyBjb21tZW50cyBmcm9tIENocmlzLgoKU2lnbmVkLW9mZi1ieTogWGlhb2xp biBaaGFuZyA8eGlhb2xpbi56aGFuZ0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9scmMuYyAgICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dmdwdS5jICAgICAgICAgICB8ICAxOCArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5oICAgICAgICAgICB8ICAxNiArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1 Ym1pc3Npb24uYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBj aGFuZ2VkLCAyMjkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCmluZGV4IDUyNDUxNjIuLmUxZDJiZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBA IC0yNDUsNyArMjQ1LDcgQEAgaTkxNS0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkgKz0gXAog CXNlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5vCiAKICMgdmlydHVhbCBncHUgY29kZQotaTkxNS15ICs9 IGk5MTVfdmdwdS5vCitpOTE1LXkgKz0gaTkxNV92Z3B1Lm8gaW50ZWxfcHZfc3VibWlzc2lvbi5v CiAKIGlmZXEgKCQoQ09ORklHX0RSTV9JOTE1X0dWVCkseSkKIGk5MTUteSArPSBpbnRlbF9ndnQu bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwppbmRleCA4ODRkZmMxLi5mNDAwMjMxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpAQCAtMjc2NywxMCArMjc2NywxNCBAQCB2 b2lkIGludGVsX2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPnVucGFyayA9IE5VTEw7CiAKIAllbmdpbmUtPmZs YWdzIHw9IEk5MTVfRU5HSU5FX1NVUFBPUlRTX1NUQVRTOwotCWlmICghaW50ZWxfdmdwdV9hY3Rp dmUoZW5naW5lLT5pOTE1KSkgewotCQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19T RU1BUEhPUkVTOwotCQlpZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGVuZ2luZS0+aTkx NSkpCi0JCQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOworCWVu Z2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CisJaWYgKEhBU19MT0dJ Q0FMX1JJTkdfUFJFRU1QVElPTihlbmdpbmUtPmk5MTUpKQorCQllbmdpbmUtPmZsYWdzIHw9IEk5 MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOworCisJaWYgKGludGVsX3ZncHVfYWN0aXZlKGVuZ2lu ZS0+aTkxNSkpIHsKKwkJZW5naW5lLT5mbGFncyAmPSB+STkxNV9FTkdJTkVfSEFTX1NFTUFQSE9S RVM7CisJCWVuZ2luZS0+ZmxhZ3MgJj0gfkk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOworCQlp bnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKGVuZ2luZS0+aTkxNSwJUFZfU1VCTUlTU0lPTiwgZW5n aW5lKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKaW5kZXggMWZhMzBkZi4uNjU2 MGZiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBp OTE1X2RldGVjdF92Z3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlkZXZf cHJpdi0+dmdwdS5hY3RpdmUgPSB0cnVlOwogCiAJLyogZ3Vlc3QgZHJpdmVyIFBWIGNhcGFiaWxp dHkgKi8KLQlkZXZfcHJpdi0+dmdwdS5wdl9jYXBzID0gUFZfUFBHVFRfVVBEQVRFOworCWRldl9w cml2LT52Z3B1LnB2X2NhcHMgPSBQVl9QUEdUVF9VUERBVEUgfCBQVl9TVUJNSVNTSU9OOwogCiAJ aWYgKCFpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMoZGV2X3ByaXYsIHNoYXJlZF9hcmVhKSkgewog CQlEUk1fSU5GTygiVmlydHVhbCBHUFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7CkBA IC0zODAsNiArMzgwLDcgQEAgdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0 YSkKIHsKIAlzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwogCiAJaWYgKCFpbnRlbF92Z3B1X2VuYWJsZWRfcHZfY2FwcyhkZXZfcHJpdiwg Y2FwKSkKIAkJcmV0dXJuOwpAQCAtMzkwLDYgKzM5MSwxMSBAQCB2b2lkIGludGVsX3ZncHVfY29u ZmlnX3B2X2NhcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlwcGd0dC0+ dm0uaW5zZXJ0X2VudHJpZXMgPSBnZW44X3BwZ3R0X2luc2VydF80bHZsX3B2OwogCQlwcGd0dC0+ dm0uY2xlYXJfcmFuZ2UgPSBnZW44X3BwZ3R0X2NsZWFyXzRsdmxfcHY7CiAJfQorCisJaWYgKGNh cCA9PSBQVl9TVUJNSVNTSU9OKSB7CisJCWVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICopZGF0YTsKKwkJdmdwdV9zZXRfcHZfc3VibWlzc2lvbihlbmdpbmUpOworCX0KIH0KIAogLyoq CkBAIC01ODQsNiArNTkwLDggQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3NldHVwX3NoYXJlZF9w YWdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdHJ1Y3QgZ3Z0X3NoYXJl ZF9wYWdlICpiYXNlOwogCXU2NCBncGE7CiAJdTE2IHZlcl9tYWosIHZlcl9taW47CisJaW50IGk7 CisJdTMyIHNpemU7CiAKIAkvKiBXZSBhbGxvY2F0ZSAxIHBhZ2Ugc2hhcmVkIGJldHdlZW4gZ3Vl c3QgYW5kIEdWVCBmb3IgZGF0YSBleGNoYW5nZS4KIAkgKiAgICAgICBfX19fX19fX19fXy4uLi4u Li4uLi4uLi4uLi4uLi4uLgpAQCAtNjU3LDYgKzY2NSwxNCBAQCBzdGF0aWMgaW50IGludGVsX3Zn cHVfc2V0dXBfc2hhcmVkX3BhZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CXB2LT5ub3RpZnkgPSBpbnRlbF92Z3B1X3B2X25vdGlmeV9tbWlvOwogCW11dGV4X2luaXQoJnB2 LT5zZW5kX211dGV4KTsKIAorCS8qIHNldHVwIFBWIHBlciBlbmdpbmUgZGF0YSBleGNoYW5nZSBz dHJ1Y3R1cmUgKi8KKwlzaXplID0gc2l6ZW9mKHN0cnVjdCBwdl9zdWJtaXNzaW9uKTsKKwlmb3Ig KGkgPSAwOyBpIDwgUFZfTUFYX0VOR0lORVNfTlVNOyBpKyspIHsKKwkJcHYtPnB2X2Vsc3BbaV0g PSAodm9pZCAqKWJhc2UgKyBQVl9FTFNQX09GRiArICBzaXplICogaTsKKwkJcHYtPnB2X2Vsc3Bb aV0tPnN1Ym1pdHRlZCA9IGZhbHNlOworCQlzcGluX2xvY2tfaW5pdCgmcHYtPnB2X2Vsc3BbaV0t PmxvY2spOworCX0KKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCmlu ZGV4IDkyYzg0ZDMuLmExZWZhNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCkBAIC0yOSw2 ICsyOSw4IEBACiAKICNkZWZpbmUgUFZfTUFKT1IJCTEKICNkZWZpbmUgUFZfTUlOT1IJCTAKKyNk ZWZpbmUgUFZfTUFYX0VOR0lORVNfTlVNCShWRUNTMV9IVyArIDEpCisjZGVmaW5lIFBWX0VMU1Bf T0ZGCQkoUEFHRV9TSVpFLzgpCiAjZGVmaW5lIFBWX0RFU0NfT0ZGCQkoUEFHRV9TSVpFLzQpCiAj ZGVmaW5lIFBWX0NNRF9PRkYJCShQQUdFX1NJWkUvMikKIApAQCAtMzcsNiArMzksNyBAQAogICov CiBlbnVtIHB2X2NhcHMgewogCVBWX1BQR1RUX1VQREFURSA9IDB4MSwKKwlQVl9TVUJNSVNTSU9O ID0gMHgyLAogfTsKIAogLyogUFYgYWN0aW9ucyAqLwpAQCAtNDUsNiArNDgsNyBAQCBlbnVtIGlu dGVsX3ZncHVfcHZfYWN0aW9uIHsKIAlQVl9BQ1RJT05fUFBHVFRfTDRfQUxMT0MsCiAJUFZfQUNU SU9OX1BQR1RUX0w0X0NMRUFSLAogCVBWX0FDVElPTl9QUEdUVF9MNF9JTlNFUlQsCisJUFZfQUNU SU9OX0VMU1BfU1VCTUlTU0lPTiwKIH07CiAKIC8qCkBAIC01Niw2ICs2MCwxMyBAQCBzdHJ1Y3Qg Z3Z0X3NoYXJlZF9wYWdlIHsKIAl1MTYgdmVyX21pbm9yOwogfTsKIAorLyogd29ya2xvYWQgc3Vi bWlzc2lvbiBwdiBzdXBwb3J0IGRhdGEgc3RydWN0dXJlICovCitzdHJ1Y3QgcHZfc3VibWlzc2lv biB7CisJdTY0IGRlc2NzW0VYRUNMSVNUX01BWF9QT1JUU107CisJYm9vbCBzdWJtaXR0ZWQ7CisJ c3BpbmxvY2tfdCBsb2NrOworfTsKKwogLyoKICAqIERlZmluaXRpb24gb2YgdGhlIGNvbW1hbmQg dHJhbnNwb3J0IG1lc3NhZ2UgaGVhZGVyIChEVzApCiAgKgpAQCAtMTAwLDYgKzExMSw5IEBAIHN0 cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1X3B2IHsKIAlzdHJ1Y3QgZ3Z0X3NoYXJlZF9wYWdlICpzaGFy ZWRfcGFnZTsKIAlib29sIGVuYWJsZWQ7CiAKKwkvKiBwZXIgZW5naW5lIFBWIHdvcmtsb2FkIHN1 Ym1pc3Npb24gZGF0YSAqLworCXN0cnVjdCBwdl9zdWJtaXNzaW9uICpwdl9lbHNwW1BWX01BWF9F TkdJTkVTX05VTV07CisKIAkvKiBQViBjb21tYW5kIGJ1ZmZlciBzdXBwb3J0ICovCiAJc3RydWN0 IHZncHVfcHZfY3RfYnVmZmVyIGN0YjsKIAl1MzIgbmV4dF9mZW5jZTsKQEAgLTE2Myw0ICsxNzcs NiBAQCBib29sIGludGVsX3ZncHVfY2hlY2tfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCXZvaWQgX19pb21lbSAqc2hhcmVkX2FyZWEpOwogdm9pZCBpbnRlbF92 Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ ZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0YSk7Cit2b2lkIHZncHVfc2V0X3B2X3N1Ym1pc3Np b24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKwogI2VuZGlmIC8qIF9JOTE1X1ZH UFVfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1p c3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTMyODViCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHZfc3VibWlzc2lvbi5jCkBAIC0wLDAgKzEs MTg3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiaW50ZWxfZHJ2Lmgi CisjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgor I2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9wbS5oIgorCitzdGF0aWMgdTY0IGV4ZWNsaXN0c191 cGRhdGVfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UgPSBycS0+aHdfY29udGV4dDsKKwl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNf cmVnX3N0YXRlOworCisJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX3Nl dF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCk7CisKKwlyZXR1cm4gY2UtPmxyY19kZXNjOworfQor CitzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3Qg cmJfbm9kZSAqcmIpCit7CisJcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCwgbm9kZSk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipvdXQsCisJICAgICAg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKiplbmQpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGk5 MTVfdmlydHVhbF9ncHVfcHYgKnB2ID0gZW5naW5lLT5pOTE1LT52Z3B1LnB2OworCXN0cnVjdCBw dl9zdWJtaXNzaW9uICpwdl9lbHNwID0gcHYtPnB2X2Vsc3BbZW5naW5lLT5od19pZF07CisJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJaW50IG4sIGVycjsKKworCW1lbXNldChwdl9lbHNwLT5k ZXNjcywgMCwgc2l6ZW9mKHB2X2Vsc3AtPmRlc2NzKSk7CisJbiA9IDA7CisKKwlkbyB7CisJCXJx ID0gKm91dCsrOworCQlwdl9lbHNwLT5kZXNjc1tuKytdID0gZXhlY2xpc3RzX3VwZGF0ZV9jb250 ZXh0KHJxKTsKKwl9IHdoaWxlIChvdXQgIT0gZW5kKTsKKworCXNwaW5fbG9jaygmcHZfZWxzcC0+ bG9jayk7CisJcHZfZWxzcC0+c3VibWl0dGVkID0gdHJ1ZTsKKwl3cml0ZWwoUFZfQUNUSU9OX0VM U1BfU1VCTUlTU0lPTiwgZXhlY2xpc3RzLT5zdWJtaXRfcmVnKTsKKworI2RlZmluZSBkb25lIChS RUFEX09OQ0UocHZfZWxzcC0+c3VibWl0dGVkKSA9PSBmYWxzZSkKKwllcnIgPSB3YWl0X2Zvcl9h dG9taWNfdXMoZG9uZSwgMTAwMCk7CisjdW5kZWYgZG9uZQorCXNwaW5fdW5sb2NrKCZwdl9lbHNw LT5sb2NrKTsKKworCWlmICh1bmxpa2VseShlcnIpKQorCQlEUk1fRVJST1IoIlBWICglcykgd29y a2xvYWQgc3VibWlzc2lvbiBmYWlsZWRcbiIsIGVuZ2luZS0+bmFtZSk7CisKK30KKworc3RhdGlj IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnNjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LCBpbnQgaWR4KQoreworCXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwgaWR4KTsKKworCWlmICgh cnEtPmh3X2NvbnRleHQtPmluZmxpZ2h0KQorCQlycS0+aHdfY29udGV4dC0+aW5mbGlnaHQgPSBy cS0+ZW5naW5lOworCWludGVsX2NvbnRleHRfaW5mbGlnaHRfaW5jKHJxLT5od19jb250ZXh0KTsK KworCXJldHVybiBpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKK30KKworc3RhdGljIHZvaWQgcHZfZGVx dWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2Vu Z2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisJ c3RydWN0IGk5MTVfcmVxdWVzdCAqKmZpcnN0ID0gZXhlY2xpc3RzLT5pbmZsaWdodDsKKwlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gZmlyc3RbMF07CisJc3RydWN0IGk5MTVfcmVxdWVzdCAq KnBvcnQ7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7CisKKwls b2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKKworCWlmIChsYXN0KQor CQlyZXR1cm47CisKKwlwb3J0ID0gZmlyc3Q7CisJd2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hl ZCgmZXhlY2xpc3RzLT5xdWV1ZSkpKSB7CisJCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9f cHJpb2xpc3QocmIpOworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuOworCQlpbnQgaTsK KworCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwLCBpKSB7CisJ CQlpZiAobGFzdCAmJiBycS0+aHdfY29udGV4dCAhPSBsYXN0LT5od19jb250ZXh0KQorCQkJCWdv dG8gZG9uZTsKKworCQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOworCQkJX19pOTE1 X3JlcXVlc3Rfc3VibWl0KHJxKTsKKwkJCXN1Ym1pdCA9IHRydWU7CisJCQlsYXN0ID0gcnE7CisJ CX0KKworCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsKKwkJ aTkxNV9wcmlvbGlzdF9mcmVlKHApOworCX0KK2RvbmU6CisJZXhlY2xpc3RzLT5xdWV1ZV9wcmlv cml0eV9oaW50ID0KKwkJcmIgPyB0b19wcmlvbGlzdChyYiktPnByaW9yaXR5IDogSU5UX01JTjsK KwlpZiAoc3VibWl0KSB7CisJCSpwb3J0ID0gc2NoZWR1bGVfaW4obGFzdCwgcG9ydCAtIGV4ZWNs aXN0cy0+aW5mbGlnaHQpOworCQkqKytwb3J0ID0gTlVMTDsKKwkJcHZfc3VibWl0KGVuZ2luZSwg Zmlyc3QsIHBvcnQpOworCX0KKwlleGVjbGlzdHMtPmFjdGl2ZSA9IGV4ZWNsaXN0cy0+aW5mbGln aHQ7Cit9CisKK3N0YXRpYyB2b2lkIHNjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKK3sKKwl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKKworCWludGVsX2NvbnRleHRfaW5m bGlnaHRfZGVjKHJxLT5od19jb250ZXh0KTsKKwlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRf Y291bnQocnEtPmh3X2NvbnRleHQpKQorCQlycS0+aHdfY29udGV4dC0+aW5mbGlnaHQgPSBOVUxM OworCisJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cit9CisKKworc3RhdGljIHZvaWQgdmdwdV9wdl9z dWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRhdGE7 CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5n aW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnBvcnQsICpycTsKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1X3B2ICpwdiA9IGVuZ2lu ZS0+aTkxNS0+dmdwdS5wdjsKKwlzdHJ1Y3QgcHZfc3VibWlzc2lvbiAqcHZfZWxzcCA9IHB2LT5w dl9lbHNwW2VuZ2luZS0+aHdfaWRdOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0 aXZlLmxvY2ssIGZsYWdzKTsKKworCWZvciAocG9ydCA9IGV4ZWNsaXN0cy0+aW5mbGlnaHQ7IChy cSA9ICpwb3J0KTsgcG9ydCsrKSB7CisJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkp CisJCQlicmVhazsKKworCQlzY2hlZHVsZV9vdXQocnEpOworCX0KKworCWlmIChwb3J0ICE9IGV4 ZWNsaXN0cy0+aW5mbGlnaHQpIHsKKwkJaW50IGlkeCA9IHBvcnQgLSBleGVjbGlzdHMtPmluZmxp Z2h0OworCQlpbnQgcmVtID0gQVJSQVlfU0laRShleGVjbGlzdHMtPmluZmxpZ2h0KSAtIGlkeDsK KworCQltZW1tb3ZlKGV4ZWNsaXN0cy0+aW5mbGlnaHQsIHBvcnQsIHJlbSAqIHNpemVvZigqcG9y dCkpOworCX0KKworCWlmICghcHZfZWxzcC0+c3VibWl0dGVkKQorCQlwdl9kZXF1ZXVlKGVuZ2lu ZSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFn cyk7Cit9CisKK3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl9wYXJrKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnRlbF9lbmdpbmVfcGFyayhlbmdpbmUpOworCWlu dGVsX2VuZ2luZV91bnBpbl9icmVhZGNydW1ic19pcnEoZW5naW5lKTsKKwllbmdpbmUtPmZsYWdz ICY9IH5JOTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1CX1RBU0tMRVQ7Cit9CisKK3N0YXRpYyB2 b2lkIHZncHVfcHZfc3VibWlzc2lvbl91bnBhcmsoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQoreworCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9U QVNLTEVUOworCWludGVsX2VuZ2luZV9waW5fYnJlYWRjcnVtYnNfaXJxKGVuZ2luZSk7Cit9CisK K3ZvaWQgdmdwdV9zZXRfcHZfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCit7CisJLyoKKwkgKiBXZSBpbmhlcml0IGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZyb20gZXhl Y2xpc3RzIHRoYXQgd2UnZCBsaWtlCisJICogdG8ga2VlcCB1c2luZzoKKwkgKgorCSAqICAgIGVu Z2luZS0+c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Q7CisJICogICAg ZW5naW5lLT5jYW5jZWxfcmVxdWVzdHMgPSBleGVjbGlzdHNfY2FuY2VsX3JlcXVlc3RzOworCSAq ICAgIGVuZ2luZS0+c2NoZWR1bGUgPSBleGVjbGlzdHNfc2NoZWR1bGU7CisJICoKKwkgKiBCdXQg d2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYWN0dWFsIHN1Ym1pc3Npb24gYmFja2VuZCBpbiBvcmRl cgorCSAqIHRvIHRhbGsgdG8gdGhlIEdWVCB3aXRoIFBWIG5vdGlmaWNhdGlvbiBtZXNzYWdlLgor CSAqLworCisJZW5naW5lLT5leGVjbGlzdHMudGFza2xldC5mdW5jID0gdmdwdV9wdl9zdWJtaXNz aW9uX3Rhc2tsZXQ7CisKKwllbmdpbmUtPnBhcmsgPSB2Z3B1X3B2X3N1Ym1pc3Npb25fcGFyazsK KwllbmdpbmUtPnVucGFyayA9IHZncHVfcHZfc3VibWlzc2lvbl91bnBhcms7Cit9Ci0tIAoxLjgu My4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=