From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaolin Zhang Subject: [PATCH v7 5/9] drm/i915: vgpu context submission pv optimization Date: Mon, 8 Jul 2019 09:35:18 +0800 Message-ID: <1562549722-27046-6-git-send-email-xiaolin.zhang@intel.com> References: <1562549722-27046-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: <1562549722-27046-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-gfx@lists.freedesktop.org Cc: intel-gvt-dev@lists.freedesktop.org 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 IGZyb20gQ2hyaXMsIHJlcGxhY2VkIGVuZ2luZSBpZCBieSBod19pZC4Kdjc6IHJlYmFzZS4KClNp Z25lZC1vZmYtYnk6IFhpYW9saW4gWmhhbmcgPHhpYW9saW4uemhhbmdAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgIHwgICA4ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyAgICAgICAgICAgfCAgMTUgKystCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZncHUuaCAgICAgICAgICAgfCAgMTUgKysrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMgfCAxODkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHZfc3Vi bWlzc2lvbi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA1MjY2ZGJlLi42ZTEzZjdjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGk5MTUtJChDT05GSUdfRFJNX0k5 MTVfU0VMRlRFU1QpICs9IFwKIAlzZWxmdGVzdHMvaWd0X3NwaW5uZXIubwogCiAjIHZpcnR1YWwg Z3B1IGNvZGUKLWk5MTUteSArPSBpOTE1X3ZncHUubworaTkxNS15ICs9IGk5MTVfdmdwdS5vIGlu dGVsX3B2X3N1Ym1pc3Npb24ubwogCiBpZmVxICgkKENPTkZJR19EUk1fSTkxNV9HVlQpLHkpCiBp OTE1LXkgKz0gaW50ZWxfZ3Z0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKaW5kZXgg ZTFhZTEzOS4uNDhhOWIyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKQEAgLTI3 MDIsMTAgKzI3MDIsMTQgQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfc2V0X2RlZmF1bHRfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZW5naW5lLT51bnBhcmsgPSBO VUxMOwogCiAJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9TVVBQT1JUU19TVEFUUzsKLQlp ZiAoIWludGVsX3ZncHVfYWN0aXZlKGVuZ2luZS0+aTkxNSkpCi0JCWVuZ2luZS0+ZmxhZ3MgfD0g STkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CisJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lO RV9IQVNfU0VNQVBIT1JFUzsKIAlpZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGVuZ2lu ZS0+aTkxNSkpCiAJCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT047 CisKKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZW5naW5lLT5pOTE1KSkgeworCQllbmdpbmUtPmZs YWdzICY9IH5JOTE1X0VOR0lORV9IQVNfU0VNQVBIT1JFUzsKKwkJaW50ZWxfdmdwdV9jb25maWdf cHZfY2FwcyhlbmdpbmUtPmk5MTUsCVBWX1NVQk1JU1NJT04sIGVuZ2luZSk7CisJfQogfQogCiBz dGF0aWMgdm9pZCBleGVjbGlzdHNfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCmluZGV4IDJhYWQwYjguLmM2MjhiZTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdmdwdS5jCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgaTkxNV9kZXRlY3Rf dmdwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZGV2X3ByaXYtPnZncHUu YWN0aXZlID0gdHJ1ZTsKIAogCS8qIGd1ZXN0IGRyaXZlciBQViBjYXBhYmlsaXR5ICovCi0JZGV2 X3ByaXYtPnZncHUucHZfY2FwcyA9IFBWX1BQR1RUX1VQREFURTsKKwlkZXZfcHJpdi0+dmdwdS5w dl9jYXBzID0gUFZfUFBHVFRfVVBEQVRFIHwgUFZfU1VCTUlTU0lPTjsKIAogCWlmICghaW50ZWxf dmdwdV9jaGVja19wdl9jYXBzKGRldl9wcml2LCBzaGFyZWRfYXJlYSkpIHsKIAkJRFJNX0lORk8o IlZpcnR1YWwgR1BVIGZvciBJbnRlbCBHVlQtZyBkZXRlY3RlZC5cbiIpOwpAQCAtMzgwLDYgKzM4 MCw3IEBAIHZvaWQgaW50ZWxfdmdwdV9jb25maWdfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCWVudW0gcHZfY2FwcyBjYXAsIHZvaWQgKmRhdGEpCiB7CiAJc3Ry dWN0IGk5MTVfcHBndHQgKnBwZ3R0OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK IAogCWlmICghaW50ZWxfdmdwdV9lbmFibGVkX3B2X2NhcHMoZGV2X3ByaXYsIGNhcCkpCiAJCXJl dHVybjsKQEAgLTM5MCw2ICszOTEsMTEgQEAgdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJcHBndHQtPnZtLmluc2VydF9l bnRyaWVzID0gZ2VuOF9wcGd0dF9pbnNlcnRfNGx2bF9wdjsKIAkJcHBndHQtPnZtLmNsZWFyX3Jh bmdlID0gZ2VuOF9wcGd0dF9jbGVhcl80bHZsX3B2OwogCX0KKworCWlmIChjYXAgPT0gUFZfU1VC TUlTU0lPTikgeworCQllbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRhdGE7CisJ CXZncHVfc2V0X3B2X3N1Ym1pc3Npb24oZW5naW5lKTsKKwl9CiB9CiAKIC8qKgpAQCAtNTg0LDYg KzU5MCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfdmdwdV9zZXR1cF9zaGFyZWRfcGFnZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RydWN0IGd2dF9zaGFyZWRfcGFnZSAqYmFz ZTsKIAl1NjQgZ3BhOwogCXUxNiB2ZXJfbWFqLCB2ZXJfbWluOworCWludCBpOworCXUzMiBzaXpl OwogCiAJLyogV2UgYWxsb2NhdGUgMSBwYWdlIHNoYXJlZCBiZXR3ZWVuIGd1ZXN0IGFuZCBHVlQg Zm9yIGRhdGEgZXhjaGFuZ2UuCiAJICogICAgICAgX19fX19fX19fX18uLi4uLi4uLi4uLi4uLi4u Li4uLi4KQEAgLTY1Nyw2ICs2NjUsMTEgQEAgc3RhdGljIGludCBpbnRlbF92Z3B1X3NldHVwX3No YXJlZF9wYWdlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlwdi0+bm90aWZ5 ID0gaW50ZWxfdmdwdV9wdl9ub3RpZnlfbW1pbzsKIAltdXRleF9pbml0KCZwdi0+c2VuZF9tdXRl eCk7CiAKKwkvKiBzZXR1cCBQViBwZXIgZW5naW5lIGRhdGEgZXhjaGFuZ2UgcHRyICovCisJc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgcHZfc3VibWlzc2lvbik7CisJZm9yIChpID0gMDsgaSA8IFBWX01B WF9FTkdJTkVTX05VTTsgaSsrKQorCQlwdi0+cHZfZWxzcFtpXSA9ICh2b2lkICopYmFzZSArIFBW X0VMU1BfT0ZGICsgIHNpemUgKiBpOworCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmgKaW5kZXggOTJjODRkMy4uMmNhZmIzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92Z3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1 LmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2RlZmluZSBQVl9NQUpPUgkJMQogI2RlZmluZSBQVl9N SU5PUgkJMAorI2RlZmluZSBQVl9NQVhfRU5HSU5FU19OVU0JKFZFQ1MxX0hXICsgMSkKKyNkZWZp bmUgUFZfRUxTUF9PRkYJCShQQUdFX1NJWkUvOCkKICNkZWZpbmUgUFZfREVTQ19PRkYJCShQQUdF X1NJWkUvNCkKICNkZWZpbmUgUFZfQ01EX09GRgkJKFBBR0VfU0laRS8yKQogCkBAIC0zNyw2ICsz OSw3IEBACiAgKi8KIGVudW0gcHZfY2FwcyB7CiAJUFZfUFBHVFRfVVBEQVRFID0gMHgxLAorCVBW X1NVQk1JU1NJT04gPSAweDIsCiB9OwogCiAvKiBQViBhY3Rpb25zICovCkBAIC00NSw2ICs0OCw3 IEBAIGVudW0gaW50ZWxfdmdwdV9wdl9hY3Rpb24gewogCVBWX0FDVElPTl9QUEdUVF9MNF9BTExP QywKIAlQVl9BQ1RJT05fUFBHVFRfTDRfQ0xFQVIsCiAJUFZfQUNUSU9OX1BQR1RUX0w0X0lOU0VS VCwKKwlQVl9BQ1RJT05fRUxTUF9TVUJNSVNTSU9OLAogfTsKIAogLyoKQEAgLTU2LDYgKzYwLDEy IEBAIHN0cnVjdCBndnRfc2hhcmVkX3BhZ2UgewogCXUxNiB2ZXJfbWlub3I7CiB9OwogCisvKiB3 b3JrbG9hZCBzdWJtaXNzaW9uIHB2IHN1cHBvcnQgZGF0YSBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBw dl9zdWJtaXNzaW9uIHsKKwl1NjQgZGVzY3NbRVhFQ0xJU1RfTUFYX1BPUlRTXTsKKwlib29sIHN1 Ym1pdHRlZDsKK307CisKIC8qCiAgKiBEZWZpbml0aW9uIG9mIHRoZSBjb21tYW5kIHRyYW5zcG9y dCBtZXNzYWdlIGhlYWRlciAoRFcwKQogICoKQEAgLTEwMCw2ICsxMTAsOSBAQCBzdHJ1Y3QgaTkx NV92aXJ0dWFsX2dwdV9wdiB7CiAJc3RydWN0IGd2dF9zaGFyZWRfcGFnZSAqc2hhcmVkX3BhZ2U7 CiAJYm9vbCBlbmFibGVkOwogCisJLyogcGVyIGVuZ2luZSBQViB3b3JrbG9hZCBzdWJtaXNzaW9u IGRhdGEgKi8KKwlzdHJ1Y3QgcHZfc3VibWlzc2lvbiAqcHZfZWxzcFtQVl9NQVhfRU5HSU5FU19O VU1dOworCiAJLyogUFYgY29tbWFuZCBidWZmZXIgc3VwcG9ydCAqLwogCXN0cnVjdCB2Z3B1X3B2 X2N0X2J1ZmZlciBjdGI7CiAJdTMyIG5leHRfZmVuY2U7CkBAIC0xNjMsNCArMTc2LDYgQEAgYm9v bCBpbnRlbF92Z3B1X2NoZWNrX3B2X2NhcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQl2b2lkIF9faW9tZW0gKnNoYXJlZF9hcmVhKTsKIHZvaWQgaW50ZWxfdmdwdV9jb25m aWdfcHZfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWVudW0gcHZf Y2FwcyBjYXAsIHZvaWQgKmRhdGEpOwordm9pZCB2Z3B1X3NldF9wdl9zdWJtaXNzaW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKICNlbmRpZiAvKiBfSTkxNV9WR1BVX0hfICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wdl9zdWJtaXNzaW9uLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiNDkxYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwpAQCAtMCwwICsxLDE4OSBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE4 IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImludGVsX2Rydi5oIgorI2luY2x1 ZGUgImk5MTVfdmdwdS5oIgorI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIKKyNpbmNsdWRl ICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKKworc3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2Nv bnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQg KmNlID0gcnEtPmh3X2NvbnRleHQ7CisJdTMyICpyZWdfc3RhdGUgPSBjZS0+bHJjX3JlZ19zdGF0 ZTsKKworCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gaW50ZWxfcmluZ19zZXRfdGFpbChy cS0+cmluZywgcnEtPnRhaWwpOworCisJcmV0dXJuIGNlLT5scmNfZGVzYzsKK30KKworc3RhdGlj IGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUg KnJiKQoreworCXJldHVybiByYl9lbnRyeShyYiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5vZGUp OworfQorCitzdGF0aWMgdm9pZCBwdl9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAorCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqb3V0LAorCSAgICAgICBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoqZW5kKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICog Y29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3ZpcnR1 YWxfZ3B1X3B2ICpwdiA9IGVuZ2luZS0+aTkxNS0+dmdwdS5wdjsKKwlzdHJ1Y3QgcHZfc3VibWlz c2lvbiAqcHZfZWxzcCA9IHB2LT5wdl9lbHNwW2VuZ2luZS0+aHdfaWRdOworCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOworCisJdTY0IGRlc2NzWzJdOworCWludCBuLCBlcnI7CisKKwltZW1zZXQo ZGVzY3MsIDAsIHNpemVvZihkZXNjcykpOworCW4gPSAwOworCWRvIHsKKwkJcnEgPSAqb3V0Kys7 CisJCWRlc2NzW24rK10gPSBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQocnEpOworCX0gd2hpbGUg KG91dCAhPSBlbmQpOworCisJZm9yIChuID0gMDsgbiA8IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhl Y2xpc3RzKTsgbisrKQorCQlwdl9lbHNwLT5kZXNjc1tuXSA9IGRlc2NzW25dOworCisJd3JpdGVs KFBWX0FDVElPTl9FTFNQX1NVQk1JU1NJT04sIGV4ZWNsaXN0cy0+c3VibWl0X3JlZyk7CisKKyNk ZWZpbmUgZG9uZSAoUkVBRF9PTkNFKHB2X2Vsc3AtPnN1Ym1pdHRlZCkgPT0gdHJ1ZSkKKwllcnIg PSB3YWl0X2Zvcl91cyhkb25lLCAxKTsKKwlpZiAoZXJyKQorCQllcnIgPSB3YWl0X2Zvcihkb25l LCAxKTsKKyN1bmRlZiBkb25lCisKKwlpZiAodW5saWtlbHkoZXJyKSkKKwkJRFJNX0VSUk9SKCJQ ViAoJXMpIHdvcmtsb2FkIHN1Ym1pc3Npb24gZmFpbGVkXG4iLCBlbmdpbmUtPm5hbWUpOworCisJ cHZfZWxzcC0+c3VibWl0dGVkID0gZmFsc2U7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpzY2hlZHVsZV9pbihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IGlkeCkKK3sKKwl0 cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEsIGlkeCk7CisKKwlpZiAoIXJxLT5od19jb250ZXh0LT5p bmZsaWdodCkKKwkJcnEtPmh3X2NvbnRleHQtPmluZmxpZ2h0ID0gcnEtPmVuZ2luZTsKKwlpbnRl bF9jb250ZXh0X2luZmxpZ2h0X2luYyhycS0+aHdfY29udGV4dCk7CisKKwlyZXR1cm4gaTkxNV9y ZXF1ZXN0X2dldChycSk7Cit9CisKK3N0YXRpYyB2b2lkIHB2X2RlcXVldWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICog Y29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKipmaXJzdCA9IGV4ZWNsaXN0cy0+aW5mbGlnaHQ7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAq bGFzdCA9IGZpcnN0WzBdOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0OworCWJvb2wgc3Vi bWl0ID0gZmFsc2U7CisJc3RydWN0IHJiX25vZGUgKnJiOworCisJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZW5naW5lLT5hY3RpdmUubG9jayk7CisKKwlpZiAobGFzdCkKKwkJcmV0dXJuOworCisJcG9y dCA9IGZpcnN0OworCXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQoJmV4ZWNsaXN0cy0+cXVl dWUpKSkgeworCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKKwkJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKKwkJaW50IGk7CisKKwkJcHJpb2xpc3RfZm9y X2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCwgaSkgeworCQkJaWYgKGxhc3QgJiYgcnEt Pmh3X2NvbnRleHQgIT0gbGFzdC0+aHdfY29udGV4dCkKKwkJCQlnb3RvIGRvbmU7CisKKwkJCWxp c3RfZGVsX2luaXQoJnJxLT5zY2hlZC5saW5rKTsKKwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChy cSk7CisJCQlzdWJtaXQgPSB0cnVlOworCQkJbGFzdCA9IHJxOworCQl9CisKKwkJcmJfZXJhc2Vf Y2FjaGVkKCZwLT5ub2RlLCAmZXhlY2xpc3RzLT5xdWV1ZSk7CisJCWk5MTVfcHJpb2xpc3RfZnJl ZShwKTsKKwl9Citkb25lOgorCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9CisJCXJi ID8gdG9fcHJpb2xpc3QocmIpLT5wcmlvcml0eSA6IElOVF9NSU47CisJaWYgKHN1Ym1pdCkgewor CQkqcG9ydCA9IHNjaGVkdWxlX2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPmluZmxpZ2h0KTsK KwkJKisrcG9ydCA9IE5VTEw7CisJCXB2X3N1Ym1pdChlbmdpbmUsIGZpcnN0LCBwb3J0KTsKKwl9 CisJZXhlY2xpc3RzLT5hY3RpdmUgPSBleGVjbGlzdHMtPmluZmxpZ2h0OworfQorCitzdGF0aWMg dm9pZCBzY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJdHJhY2VfaTkx NV9yZXF1ZXN0X291dChycSk7CisKKwlpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2RlYyhycS0+aHdf Y29udGV4dCk7CisJaWYgKCFpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KHJxLT5od19jb250 ZXh0KSkKKwkJcnEtPmh3X2NvbnRleHQtPmluZmxpZ2h0ID0gTlVMTDsKKworCWk5MTVfcmVxdWVz dF9wdXQocnEpOworfQorCisKK3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl90YXNrbGV0 KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3Qg ZW5naW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOworCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKipwb3J0LCAqcnE7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK KworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7CisKKwlm b3IgKHBvcnQgPSBleGVjbGlzdHMtPmluZmxpZ2h0OyAocnEgPSAqcG9ydCk7IHBvcnQrKykgewor CQlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJYnJlYWs7CisKKwkJc2NoZWR1 bGVfb3V0KHJxKTsKKwl9CisKKwlpZiAocG9ydCAhPSBleGVjbGlzdHMtPmluZmxpZ2h0KSB7CisJ CWludCBpZHggPSBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodDsKKwkJaW50IHJlbSA9IEFSUkFZ X1NJWkUoZXhlY2xpc3RzLT5pbmZsaWdodCkgLSBpZHg7CisKKwkJbWVtbW92ZShleGVjbGlzdHMt PmluZmxpZ2h0LCBwb3J0LCByZW0gKiBzaXplb2YoKnBvcnQpKTsKKwl9CisKKwlpZiAoIXJxKQor CQlwdl9kZXF1ZXVlKGVuZ2luZSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PmFjdGl2ZS5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lv bl9wYXJrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnRlbF9lbmdpbmVf cGFyayhlbmdpbmUpOworCWludGVsX2VuZ2luZV91bnBpbl9icmVhZGNydW1ic19pcnEoZW5naW5l KTsKKwllbmdpbmUtPmZsYWdzICY9IH5JOTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1CX1RBU0tM RVQ7Cit9CisKK3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl91bnBhcmsoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVf TkVFRFNfQlJFQURDUlVNQl9UQVNLTEVUOworCWludGVsX2VuZ2luZV9waW5fYnJlYWRjcnVtYnNf aXJxKGVuZ2luZSk7Cit9CisKK3ZvaWQgdmdwdV9zZXRfcHZfc3VibWlzc2lvbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJLyoKKwkgKiBXZSBpbmhlcml0IGEgYnVuY2ggb2Yg ZnVuY3Rpb25zIGZyb20gZXhlY2xpc3RzIHRoYXQgd2UnZCBsaWtlCisJICogdG8ga2VlcCB1c2lu ZzoKKwkgKgorCSAqICAgIGVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0 X3JlcXVlc3Q7CisJICogICAgZW5naW5lLT5jYW5jZWxfcmVxdWVzdHMgPSBleGVjbGlzdHNfY2Fu Y2VsX3JlcXVlc3RzOworCSAqICAgIGVuZ2luZS0+c2NoZWR1bGUgPSBleGVjbGlzdHNfc2NoZWR1 bGU7CisJICoKKwkgKiBCdXQgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYWN0dWFsIHN1Ym1pc3Np b24gYmFja2VuZCBpbiBvcmRlcgorCSAqIHRvIHRhbGsgdG8gdGhlIEdWVCB3aXRoIFBWIG5vdGlm aWNhdGlvbiBtZXNzYWdlLgorCSAqLworCisJZW5naW5lLT5leGVjbGlzdHMudGFza2xldC5mdW5j ID0gdmdwdV9wdl9zdWJtaXNzaW9uX3Rhc2tsZXQ7CisKKwllbmdpbmUtPnBhcmsgPSB2Z3B1X3B2 X3N1Ym1pc3Npb25fcGFyazsKKwllbmdpbmUtPnVucGFyayA9IHZncHVfcHZfc3VibWlzc2lvbl91 bnBhcms7Cit9Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4