From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaolin Zhang Subject: [PATCH v9 5/9] drm/i915: vgpu context submission pv optimization Date: Tue, 30 Jul 2019 00:32:38 +0800 Message-ID: <1564417962-74325-6-git-send-email-xiaolin.zhang@intel.com> References: <1564417962-74325-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: <1564417962-74325-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 dS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKaW5kZXggMmUzYTAyNS4uMzNi NDFiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBp OTE1X2RldGVjdF92Z3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlkZXZf cHJpdi0+dmdwdS5hY3RpdmUgPSB0cnVlOwogCiAJLyogZ3Vlc3QgZHJpdmVyIFBWIGNhcGFiaWxp dHkgKi8KLQlkZXZfcHJpdi0+dmdwdS5wdl9jYXBzID0gUFZfUFBHVFRfVVBEQVRFOworCWRldl9w cml2LT52Z3B1LnB2X2NhcHMgPSBQVl9QUEdUVF9VUERBVEUgfCBQVl9TVUJNSVNTSU9OOwogCiAJ aWYgKCFpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMoZGV2X3ByaXYsIHNoYXJlZF9hcmVhKSkgewog CQlEUk1fSU5GTygiVmlydHVhbCBHUFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7CkBA IC0zODUsNiArMzg1LDcgQEAgdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0 YSkKIHsKIAlzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwogCiAJaWYgKCFpbnRlbF92Z3B1X2VuYWJsZWRfcHZfY2FwcyhkZXZfcHJpdiwg Y2FwKSkKIAkJcmV0dXJuOwpAQCAtMzk1LDYgKzM5NiwxMSBAQCB2b2lkIGludGVsX3ZncHVfY29u ZmlnX3B2X2NhcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlwcGd0dC0+ dm0uaW5zZXJ0X2VudHJpZXMgPSBnZW44X3BwZ3R0X2luc2VydF80bHZsX3B2OwogCQlwcGd0dC0+ dm0uY2xlYXJfcmFuZ2UgPSBnZW44X3BwZ3R0X2NsZWFyXzRsdmxfcHY7CiAJfQorCisJaWYgKGNh cCA9PSBQVl9TVUJNSVNTSU9OKSB7CisJCWVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICopZGF0YTsKKwkJdmdwdV9zZXRfcHZfc3VibWlzc2lvbihlbmdpbmUpOworCX0KIH0KIAogLyoq CkBAIC01OTAsNiArNTk2LDggQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3NldHVwX3NoYXJlZF9w YWdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1NjQgZ3BhOwogCXUxNiB2 ZXJfbWFqLCB2ZXJfbWluOwogCWludCByZXQgPSAwOworCWludCBpOworCXUzMiBzaXplOwogCiAJ LyogV2UgYWxsb2NhdGUgMSBwYWdlIHNoYXJlZCBiZXR3ZWVuIGd1ZXN0IGFuZCBHVlQgZm9yIGRh dGEgZXhjaGFuZ2UuCiAJICogICAgICAgX19fX19fX19fX18uLi4uLi4uLi4uLi4uLi4uLi4uLi4K QEAgLTY2Miw2ICs2NzAsMTQgQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3NldHVwX3NoYXJlZF9w YWdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlwdi0+bm90aWZ5ID0gaW50 ZWxfdmdwdV9wdl9ub3RpZnlfbW1pbzsKIAltdXRleF9pbml0KCZwdi0+c2VuZF9tdXRleCk7CiAK KwkvKiBzZXR1cCBQViBwZXIgZW5naW5lIGRhdGEgZXhjaGFuZ2Ugc3RydWN0dXJlICovCisJc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgcHZfc3VibWlzc2lvbik7CisJZm9yIChpID0gMDsgaSA8IFBWX01B WF9FTkdJTkVTX05VTTsgaSsrKSB7CisJCXB2LT5wdl9lbHNwW2ldID0gKHZvaWQgKiliYXNlICsg UFZfRUxTUF9PRkYgKyAgc2l6ZSAqIGk7CisJCXB2LT5wdl9lbHNwW2ldLT5zdWJtaXR0ZWQgPSBm YWxzZTsKKwkJc3Bpbl9sb2NrX2luaXQoJnB2LT5wdl9lbHNwW2ldLT5sb2NrKTsKKwl9CisKIAly ZXR1cm4gcmV0OwogZXJyOgogCV9fZnJlZV9wYWdlKHZpcnRfdG9fcGFnZShiYXNlKSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdmdwdS5oCmluZGV4IGIwZmVlNWIuLjk5OTRkZjkwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZncHUuaApAQCAtMjksNiArMjksOCBAQAogCiAjZGVmaW5lIFBWX01BSk9SCQkxCiAj ZGVmaW5lIFBWX01JTk9SCQkwCisjZGVmaW5lIFBWX01BWF9FTkdJTkVTX05VTQkoVkVDUzFfSFcg KyAxKQorI2RlZmluZSBQVl9FTFNQX09GRgkJKFBBR0VfU0laRS84KQogI2RlZmluZSBQVl9ERVND X09GRgkJKFBBR0VfU0laRS80KQogI2RlZmluZSBQVl9DTURfT0ZGCQkoUEFHRV9TSVpFLzIpCiAK QEAgLTM3LDYgKzM5LDcgQEAKICAqLwogZW51bSBwdl9jYXBzIHsKIAlQVl9QUEdUVF9VUERBVEUg PSAweDEsCisJUFZfU1VCTUlTU0lPTiA9IDB4MiwKIH07CiAKIC8qIFBWIGFjdGlvbnMgKi8KQEAg LTQ1LDYgKzQ4LDcgQEAgZW51bSBpbnRlbF92Z3B1X3B2X2FjdGlvbiB7CiAJUFZfQUNUSU9OX1BQ R1RUX0w0X0FMTE9DLAogCVBWX0FDVElPTl9QUEdUVF9MNF9DTEVBUiwKIAlQVl9BQ1RJT05fUFBH VFRfTDRfSU5TRVJULAorCVBWX0FDVElPTl9FTFNQX1NVQk1JU1NJT04sCiB9OwogCiAvKgpAQCAt NTYsNiArNjAsMTMgQEAgc3RydWN0IGd2dF9zaGFyZWRfcGFnZSB7CiAJdTE2IHZlcl9taW5vcjsK IH07CiAKKy8qIHdvcmtsb2FkIHN1Ym1pc3Npb24gcHYgc3VwcG9ydCBkYXRhIHN0cnVjdHVyZSAq Lworc3RydWN0IHB2X3N1Ym1pc3Npb24geworCXU2NCBkZXNjc1tFWEVDTElTVF9NQVhfUE9SVFNd OworCWJvb2wgc3VibWl0dGVkOworCXNwaW5sb2NrX3QgbG9jazsKK307CisKIC8qCiAgKiBEZWZp bml0aW9uIG9mIHRoZSBjb21tYW5kIHRyYW5zcG9ydCBtZXNzYWdlIGhlYWRlciAoRFcwKQogICoK QEAgLTEwMCw2ICsxMTEsOSBAQCBzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdV9wdiB7CiAJc3RydWN0 IGd2dF9zaGFyZWRfcGFnZSAqc2hhcmVkX3BhZ2U7CiAJYm9vbCBlbmFibGVkOwogCisJLyogcGVy IGVuZ2luZSBQViB3b3JrbG9hZCBzdWJtaXNzaW9uIGRhdGEgKi8KKwlzdHJ1Y3QgcHZfc3VibWlz c2lvbiAqcHZfZWxzcFtQVl9NQVhfRU5HSU5FU19OVU1dOworCiAJLyogUFYgY29tbWFuZCBidWZm ZXIgc3VwcG9ydCAqLwogCXN0cnVjdCB2Z3B1X3B2X2N0X2J1ZmZlciBjdGI7CiAJdTMyIG5leHRf ZmVuY2U7CkBAIC0xNjQsNCArMTc4LDYgQEAgYm9vbCBpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl2b2lkIF9faW9tZW0gKnNoYXJl ZF9hcmVhKTsKIHZvaWQgaW50ZWxfdmdwdV9jb25maWdfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWVudW0gcHZfY2FwcyBjYXAsIHZvaWQgKmRhdGEpOwordm9p ZCB2Z3B1X3NldF9wdl9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 CisKICNlbmRpZiAvKiBfSTkxNV9WR1BVX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wdl9zdWJtaXNzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUz Mjg1YgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1 Ym1pc3Npb24uYwpAQCAtMCwwICsxLDE4NyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCisgKi8KKwor I2luY2x1ZGUgImludGVsX2Rydi5oIgorI2luY2x1ZGUgImk5MTVfdmdwdS5oIgorI2luY2x1ZGUg Imd0L2ludGVsX2xyY19yZWcuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKKwor c3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRleHQ7CisJdTMy ICpyZWdfc3RhdGUgPSBjZS0+bHJjX3JlZ19zdGF0ZTsKKworCXJlZ19zdGF0ZVtDVFhfUklOR19U QUlMKzFdID0gaW50ZWxfcmluZ19zZXRfdGFpbChycS0+cmluZywgcnEtPnRhaWwpOworCisJcmV0 dXJuIGNlLT5scmNfZGVzYzsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQoreworCXJldHVybiByYl9lbnRyeShy Yiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5vZGUpOworfQorCitzdGF0aWMgdm9pZCBwdl9zdWJt aXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgICAgICBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICoqb3V0LAorCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqZW5kKQoreworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1X3B2ICpwdiA9IGVuZ2luZS0+aTkx NS0+dmdwdS5wdjsKKwlzdHJ1Y3QgcHZfc3VibWlzc2lvbiAqcHZfZWxzcCA9IHB2LT5wdl9lbHNw W2VuZ2luZS0+aHdfaWRdOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCWludCBuLCBlcnI7 CisKKwltZW1zZXQocHZfZWxzcC0+ZGVzY3MsIDAsIHNpemVvZihwdl9lbHNwLT5kZXNjcykpOwor CW4gPSAwOworCisJZG8geworCQlycSA9ICpvdXQrKzsKKwkJcHZfZWxzcC0+ZGVzY3NbbisrXSA9 IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChycSk7CisJfSB3aGlsZSAob3V0ICE9IGVuZCk7CisK KwlzcGluX2xvY2soJnB2X2Vsc3AtPmxvY2spOworCXB2X2Vsc3AtPnN1Ym1pdHRlZCA9IHRydWU7 CisJd3JpdGVsKFBWX0FDVElPTl9FTFNQX1NVQk1JU1NJT04sIGV4ZWNsaXN0cy0+c3VibWl0X3Jl Zyk7CisKKyNkZWZpbmUgZG9uZSAoUkVBRF9PTkNFKHB2X2Vsc3AtPnN1Ym1pdHRlZCkgPT0gZmFs c2UpCisJZXJyID0gd2FpdF9mb3JfYXRvbWljX3VzKGRvbmUsIDEwMDApOworI3VuZGVmIGRvbmUK KwlzcGluX3VubG9jaygmcHZfZWxzcC0+bG9jayk7CisKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJ RFJNX0VSUk9SKCJQViAoJXMpIHdvcmtsb2FkIHN1Ym1pc3Npb24gZmFpbGVkXG4iLCBlbmdpbmUt Pm5hbWUpOworCit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpzY2hlZHVsZV9pbihz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IGlkeCkKK3sKKwl0cmFjZV9pOTE1X3JlcXVlc3Rf aW4ocnEsIGlkeCk7CisKKwlpZiAoIXJxLT5od19jb250ZXh0LT5pbmZsaWdodCkKKwkJcnEtPmh3 X2NvbnRleHQtPmluZmxpZ2h0ID0gcnEtPmVuZ2luZTsKKwlpbnRlbF9jb250ZXh0X2luZmxpZ2h0 X2luYyhycS0+aHdfY29udGV4dCk7CisKKwlyZXR1cm4gaTkxNV9yZXF1ZXN0X2dldChycSk7Cit9 CisKK3N0YXRpYyB2b2lkIHB2X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0g JmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipmaXJzdCA9IGV4ZWNs aXN0cy0+aW5mbGlnaHQ7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCA9IGZpcnN0WzBdOwor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0OworCWJvb2wgc3VibWl0ID0gZmFsc2U7CisJc3Ry dWN0IHJiX25vZGUgKnJiOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT5hY3RpdmUu bG9jayk7CisKKwlpZiAobGFzdCkKKwkJcmV0dXJuOworCisJcG9ydCA9IGZpcnN0OworCXdoaWxl ICgocmIgPSByYl9maXJzdF9jYWNoZWQoJmV4ZWNsaXN0cy0+cXVldWUpKSkgeworCQlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKKwkJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsICpybjsKKwkJaW50IGk7CisKKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25z dW1lKHJxLCBybiwgcCwgaSkgeworCQkJaWYgKGxhc3QgJiYgcnEtPmh3X2NvbnRleHQgIT0gbGFz dC0+aHdfY29udGV4dCkKKwkJCQlnb3RvIGRvbmU7CisKKwkJCWxpc3RfZGVsX2luaXQoJnJxLT5z Y2hlZC5saW5rKTsKKwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CisJCQlzdWJtaXQgPSB0 cnVlOworCQkJbGFzdCA9IHJxOworCQl9CisKKwkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAm ZXhlY2xpc3RzLT5xdWV1ZSk7CisJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKKwl9Citkb25lOgor CWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9CisJCXJiID8gdG9fcHJpb2xpc3QocmIp LT5wcmlvcml0eSA6IElOVF9NSU47CisJaWYgKHN1Ym1pdCkgeworCQkqcG9ydCA9IHNjaGVkdWxl X2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPmluZmxpZ2h0KTsKKwkJKisrcG9ydCA9IE5VTEw7 CisJCXB2X3N1Ym1pdChlbmdpbmUsIGZpcnN0LCBwb3J0KTsKKwl9CisJZXhlY2xpc3RzLT5hY3Rp dmUgPSBleGVjbGlzdHMtPmluZmxpZ2h0OworfQorCitzdGF0aWMgdm9pZCBzY2hlZHVsZV9vdXQo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJdHJhY2VfaTkxNV9yZXF1ZXN0X291dChycSk7 CisKKwlpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2RlYyhycS0+aHdfY29udGV4dCk7CisJaWYgKCFp bnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KHJxLT5od19jb250ZXh0KSkKKwkJcnEtPmh3X2Nv bnRleHQtPmluZmxpZ2h0ID0gTlVMTDsKKworCWk5MTVfcmVxdWVzdF9wdXQocnEpOworfQorCisK K3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0 YSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKilkYXRhOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICog Y29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKipwb3J0LCAqcnE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaTkxNV92aXJ0 dWFsX2dwdV9wdiAqcHYgPSBlbmdpbmUtPmk5MTUtPnZncHUucHY7CisJc3RydWN0IHB2X3N1Ym1p c3Npb24gKnB2X2Vsc3AgPSBwdi0+cHZfZWxzcFtlbmdpbmUtPmh3X2lkXTsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7CisKKwlmb3IgKHBvcnQgPSBl eGVjbGlzdHMtPmluZmxpZ2h0OyAocnEgPSAqcG9ydCk7IHBvcnQrKykgeworCQlpZiAoIWk5MTVf cmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJYnJlYWs7CisKKwkJc2NoZWR1bGVfb3V0KHJxKTsK Kwl9CisKKwlpZiAocG9ydCAhPSBleGVjbGlzdHMtPmluZmxpZ2h0KSB7CisJCWludCBpZHggPSBw b3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodDsKKwkJaW50IHJlbSA9IEFSUkFZX1NJWkUoZXhlY2xp c3RzLT5pbmZsaWdodCkgLSBpZHg7CisKKwkJbWVtbW92ZShleGVjbGlzdHMtPmluZmxpZ2h0LCBw b3J0LCByZW0gKiBzaXplb2YoKnBvcnQpKTsKKwl9CisKKwlpZiAoIXB2X2Vsc3AtPnN1Ym1pdHRl ZCkKKwkJcHZfZGVxdWV1ZShlbmdpbmUpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5n aW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCB2Z3B1X3B2X3N1Ym1p c3Npb25fcGFyayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaW50ZWxfZW5n aW5lX3BhcmsoZW5naW5lKTsKKwlpbnRlbF9lbmdpbmVfdW5waW5fYnJlYWRjcnVtYnNfaXJxKGVu Z2luZSk7CisJZW5naW5lLT5mbGFncyAmPSB+STkxNV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9U QVNLTEVUOworfQorCitzdGF0aWMgdm9pZCB2Z3B1X3B2X3N1Ym1pc3Npb25fdW5wYXJrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5H SU5FX05FRURTX0JSRUFEQ1JVTUJfVEFTS0xFVDsKKwlpbnRlbF9lbmdpbmVfcGluX2JyZWFkY3J1 bWJzX2lycShlbmdpbmUpOworfQorCit2b2lkIHZncHVfc2V0X3B2X3N1Ym1pc3Npb24oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCS8qCisJICogV2UgaW5oZXJpdCBhIGJ1bmNo IG9mIGZ1bmN0aW9ucyBmcm9tIGV4ZWNsaXN0cyB0aGF0IHdlJ2QgbGlrZQorCSAqIHRvIGtlZXAg dXNpbmc6CisJICoKKwkgKiAgICBlbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gZXhlY2xpc3RzX3N1 Ym1pdF9yZXF1ZXN0OworCSAqICAgIGVuZ2luZS0+Y2FuY2VsX3JlcXVlc3RzID0gZXhlY2xpc3Rz X2NhbmNlbF9yZXF1ZXN0czsKKwkgKiAgICBlbmdpbmUtPnNjaGVkdWxlID0gZXhlY2xpc3RzX3Nj aGVkdWxlOworCSAqCisJICogQnV0IHdlIG5lZWQgdG8gb3ZlcnJpZGUgdGhlIGFjdHVhbCBzdWJt aXNzaW9uIGJhY2tlbmQgaW4gb3JkZXIKKwkgKiB0byB0YWxrIHRvIHRoZSBHVlQgd2l0aCBQViBu b3RpZmljYXRpb24gbWVzc2FnZS4KKwkgKi8KKworCWVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQu ZnVuYyA9IHZncHVfcHZfc3VibWlzc2lvbl90YXNrbGV0OworCisJZW5naW5lLT5wYXJrID0gdmdw dV9wdl9zdWJtaXNzaW9uX3Bhcms7CisJZW5naW5lLT51bnBhcmsgPSB2Z3B1X3B2X3N1Ym1pc3Np b25fdW5wYXJrOworfQotLSAKMS44LjMuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4