From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaolin Zhang Subject: [PATCH v6 4/8] drm/i915: vgpu context submission pv optimization Date: Mon, 3 Jun 2019 14:02:45 +0800 Message-ID: <1559541769-25279-5-git-send-email-xiaolin.zhang@intel.com> References: <1559541769-25279-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: <1559541769-25279-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 IGZyb20gQ2hyaXMsIHJlcGxhY2VkIGVuZ2luZSBpZCBieSBod19pZC4KClNpZ25lZC1vZmYtYnk6 IFhpYW9saW4gWmhhbmcgPHhpYW9saW4uemhhbmdAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3B2aW5mby5oICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmMgICAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zn cHUuaCAgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHZfc3Vi bWlzc2lvbi5jIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNo YW5nZWQsIDE4NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKaW5kZXggYTc4NTBiYi4uODZkMTFiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAg LTIxNSw3ICsyMTUsNyBAQCBpOTE1LSQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKSArPSBcCiAJ c2VsZnRlc3RzL2lndF9zcGlubmVyLm8KIAogIyB2aXJ0dWFsIGdwdSBjb2RlCi1pOTE1LXkgKz0g aTkxNV92Z3B1Lm8KK2k5MTUteSArPSBpOTE1X3ZncHUubyBpbnRlbF9wdl9zdWJtaXNzaW9uLm8K IAogIyBwZXJmIGNvZGUKIGk5MTUteSArPSBpOTE1X3BlcmYubyBcCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jCmluZGV4IGZlZDcwNDguLjg2ZjQ2ZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jCkBAIC0yNjQ0LDExICsyNjQ0LDE1IEBAIHZvaWQgaW50ZWxfZXhlY2xpc3Rz X3NldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CWVuZ2luZS0+dW5wYXJrID0gTlVMTDsKIAogCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVf U1VQUE9SVFNfU1RBVFM7Ci0JaWYgKCFpbnRlbF92Z3B1X2FjdGl2ZShlbmdpbmUtPmk5MTUpKQot CQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19TRU1BUEhPUkVTOworCWVuZ2luZS0+ ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CiAJaWYgKGVuZ2luZS0+cHJlZW1w dF9jb250ZXh0ICYmCiAJICAgIEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihlbmdpbmUtPmk5 MTUpKQogCQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOworCisJ aWYgKGludGVsX3ZncHVfYWN0aXZlKGVuZ2luZS0+aTkxNSkpIHsKKwkJZW5naW5lLT5mbGFncyAm PSB+STkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7CisJCWludGVsX3ZncHVfY29uZmlnX3B2X2Nh cHMoZW5naW5lLT5pOTE1LAlQVl9TVUJNSVNTSU9OLCBlbmdpbmUpOworCX0KIH0KIAogc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2Rlc3Ryb3koc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wdmluZm8uaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcHZpbmZvLmgKaW5kZXggMjQwOGE5ZC4uMzYyZDg5OCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wdmluZm8uaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3B2aW5mby5oCkBAIC01MCw2ICs1MCw3IEBAIGVudW0gdmd0X2cydl90 eXBlIHsKIAlWR1RfRzJWX1BQR1RUX0w0X0FMTE9DLAogCVZHVF9HMlZfUFBHVFRfTDRfQ0xFQVIs CiAJVkdUX0cyVl9QUEdUVF9MNF9JTlNFUlQsCisJVkdUX0cyVl9QVl9TVUJNSVNTSU9OLAogCVZH VF9HMlZfTUFYLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 Z3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwppbmRleCA0MTg1ODJjLi43 MjNhYTgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwpAQCAtODEsNyArODEsNyBAQCB2b2lk IGk5MTVfY2hlY2tfdmdwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZGV2 X3ByaXYtPnZncHUuYWN0aXZlID0gdHJ1ZTsKIAogCS8qIGd1ZXN0IGRyaXZlciBQViBjYXBhYmls aXR5ICovCi0JZGV2X3ByaXYtPnZncHUucHZfY2FwcyA9IFBWX1BQR1RUX1VQREFURTsKKwlkZXZf cHJpdi0+dmdwdS5wdl9jYXBzID0gUFZfUFBHVFRfVVBEQVRFIHwgUFZfU1VCTUlTU0lPTjsKIAog CWlmICghaW50ZWxfdmdwdV9jaGVja19wdl9jYXBzKGRldl9wcml2KSkgewogCQlEUk1fSU5GTygi VmlydHVhbCBHUFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7CkBAIC0zNjEsNiArMzYx LDcgQEAgdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJZW51bSBwdl9jYXBzIGNhcCwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwogCiAJaWYgKCFpbnRlbF92Z3B1X2VuYWJsZWRfcHZfY2FwcyhkZXZfcHJpdiwgY2FwKSkKIAkJ cmV0dXJuOwpAQCAtMzcxLDYgKzM3MiwxMSBAQCB2b2lkIGludGVsX3ZncHVfY29uZmlnX3B2X2Nh cHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlwcGd0dC0+dm0uaW5zZXJ0 X2VudHJpZXMgPSBnZW44X3BwZ3R0X2luc2VydF80bHZsX3B2OwogCQlwcGd0dC0+dm0uY2xlYXJf cmFuZ2UgPSBnZW44X3BwZ3R0X2NsZWFyXzRsdmxfcHY7CiAJfQorCisJaWYgKGNhcCA9PSBQVl9T VUJNSVNTSU9OKSB7CisJCWVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsK KwkJdmdwdV9zZXRfcHZfc3VibWlzc2lvbihlbmdpbmUpOworCX0KIH0KIAogLyoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92Z3B1LmgKaW5kZXggN2EzOTc0OC4uYzViMWMzMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmgKQEAgLTMxLDYgKzMxLDcgQEAKICAqLwogZW51bSBwdl9jYXBzIHsKIAlQVl9QUEdU VF9VUERBVEUgPSAweDEsCisJUFZfU1VCTUlTU0lPTiA9IDB4MiwKIH07CiAKIC8qCkBAIC0xMDEs NCArMTAyLDYgQEAgdm9pZCBpbnRlbF92Z3RfZGViYWxsb29uKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiBib29sIGludGVsX3ZncHVfY2hlY2tfcHZfY2FwcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF92Z3B1X2NvbmZpZ19wdl9jYXBz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZW51bSBwdl9jYXBzIGNhcCwg dm9pZCAqZGF0YSk7Cit2b2lkIHZncHVfc2V0X3B2X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKKwogI2VuZGlmIC8qIF9JOTE1X1ZHUFVfSF8gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3B2X3N1Ym1pc3Npb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi45MDM2ZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcHZfc3VibWlzc2lvbi5jCkBAIC0wLDAgKzEsMTY2IEBACisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV92 Z3B1LmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgorI2luY2x1ZGUgImd0L2ludGVs X2VuZ2luZV9wbS5oIgorCitzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+ aHdfY29udGV4dDsKKwl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNfcmVnX3N0YXRlOworCisJcmVn X3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBy cS0+dGFpbCk7CisKKwlyZXR1cm4gY2UtPmxyY19kZXNjOworfQorCitzdGF0aWMgaW5saW5lIHN0 cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAqcmIpCit7CisJ cmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwgbm9kZSk7Cit9CisKK3N0 YXRpYyB2b2lkIHB2X3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJ c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5l LT5leGVjbGlzdHM7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBv cnQ7CisJdW5zaWduZWQgaW50IG47CisJc3RydWN0IGd2dF9zaGFyZWRfcGFnZSAqc2hhcmVkX3Bh Z2UgPSBlbmdpbmUtPmk5MTUtPnZncHUuc2hhcmVkX3BhZ2U7CisJdTY0IGRlc2NzWzJdOworCisJ Zm9yIChuID0gMDsgbiA8IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgbisrKSB7CisJ CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQl1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCisJ CWRlc2NzW25dID0gMDsKKwkJcnEgPSBwb3J0X3VucGFjaygmcG9ydFtuXSwgJmNvdW50KTsKKwkJ aWYgKHJxICYmIGNvdW50ID09IDApIHsKKwkJCXBvcnRfc2V0KCZwb3J0W25dLCBwb3J0X3BhY2so cnEsICsrY291bnQpKTsKKwkJCWRlc2NzW25dID0gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHJx KTsKKwkJfQorCX0KKworCWZvciAobiA9IDA7IG4gPCBleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNs aXN0cyk7IG4rKykKKwkJc2hhcmVkX3BhZ2UtPmJ1Zi5wdl9lbHNwW2VuZ2luZS0+aHdfaWRdLmRl c2NzW25dID0gZGVzY3Nbbl07CisKKwl3cml0ZWwoVkdUX0cyVl9QVl9TVUJNSVNTSU9OLCBleGVj bGlzdHMtPnN1Ym1pdF9yZWcpOworCWlmIChzaGFyZWRfcGFnZS0+YnVmLnN1Ym1pdHRlZFtlbmdp bmUtPmh3X2lkXSkKKwkJc2hhcmVkX3BhZ2UtPmJ1Zi5zdWJtaXR0ZWRbZW5naW5lLT5od19pZF0g PSBmYWxzZTsKKwllbHNlCisJCURSTV9FUlJPUigiZW5naW5lKCVzKSBwdiBzdWJtaXNzaW9uIGZh aWxlZFxuIiwgZW5naW5lLT5uYW1lKTsKK30KKworc3RhdGljIHZvaWQgcHZfZGVxdWV1ZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisJc3RydWN0IGV4 ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7CisJc3RydWN0IGk5MTVfcmVxdWVz dCAqbGFzdCA9IE5VTEw7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKwlzdHJ1Y3QgcmJfbm9kZSAq cmI7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOworCisJ d2hpbGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3RzLT5xdWV1ZSkpKSB7CisJCXN0 cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOworCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwgKnJuOworCQlpbnQgaTsKKworCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0 X2NvbnN1bWUocnEsIHJuLCBwLCBpKSB7CisJCQlpZiAobGFzdCAmJiBycS0+aHdfY29udGV4dCAh PSBsYXN0LT5od19jb250ZXh0KQorCQkJCWdvdG8gZG9uZTsKKworCQkJbGlzdF9kZWxfaW5pdCgm cnEtPnNjaGVkLmxpbmspOworCisJCQlfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpOworCQkJdHJh Y2VfaTkxNV9yZXF1ZXN0X2luKHJxLCBwb3J0X2luZGV4KHBvcnQsIGV4ZWNsaXN0cykpOworCisJ CQlsYXN0ID0gcnE7CisJCQlzdWJtaXQgPSB0cnVlOworCQl9CisKKwkJcmJfZXJhc2VfY2FjaGVk KCZwLT5ub2RlLCAmZXhlY2xpc3RzLT5xdWV1ZSk7CisJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsK Kwl9Citkb25lOgorCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9CisJCQlyYiA/IHRv X3ByaW9saXN0KHJiKS0+cHJpb3JpdHkgOiBJTlRfTUlOOworCWlmIChzdWJtaXQpIHsKKwkJcG9y dF9zZXQocG9ydCwgaTkxNV9yZXF1ZXN0X2dldChsYXN0KSk7CisJCXB2X3N1Ym1pdChlbmdpbmUp OworCX0KKwlpZiAobGFzdCkKKwkJZXhlY2xpc3RzX3VzZXJfYmVnaW4oZXhlY2xpc3RzLCBleGVj bGlzdHMtPnBvcnQpOworCisJLyogV2UgbXVzdCBhbHdheXMga2VlcCB0aGUgYmVhc3QgZmVkIGlm IHdlIGhhdmUgd29yayBwaWxlZCB1cCAqLworCUdFTV9CVUdfT04ocG9ydF9pc3NldChleGVjbGlz dHMtPnBvcnQpICYmCisJCSAgICFleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJ U1RTX0FDVElWRV9VU0VSKSk7CisJR0VNX0JVR19PTihyYl9maXJzdF9jYWNoZWQoJmV4ZWNsaXN0 cy0+cXVldWUpICYmCisJCSAgICFwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkpOworfQorCitz dGF0aWMgdm9pZCB2Z3B1X3B2X3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEp Cit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICopZGF0YTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNv bnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwlzdHJ1Y3QgZXhlY2xpc3RfcG9y dCAqcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwl1 bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxp bmUubG9jaywgZmxhZ3MpOworCisJcnEgPSBwb3J0X3JlcXVlc3QocG9ydCk7CisJd2hpbGUgKHJx ICYmIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7CisJCXRyYWNlX2k5MTVfcmVxdWVzdF9v dXQocnEpOworCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKKworCQlwb3J0ID0gZXhlY2xpc3RzX3Bv cnRfY29tcGxldGUoZXhlY2xpc3RzLCBwb3J0KTsKKwkJaWYgKHBvcnRfaXNzZXQocG9ydCkpIHsK KwkJCWV4ZWNsaXN0c191c2VyX2JlZ2luKGV4ZWNsaXN0cywgcG9ydCk7CisJCQlycSA9IHBvcnRf cmVxdWVzdChwb3J0KTsKKwkJfSBlbHNlIHsKKwkJCWV4ZWNsaXN0c191c2VyX2VuZChleGVjbGlz dHMpOworCQkJcnEgPSBOVUxMOworCQl9CisJfQorCisJaWYgKCFycSkKKwkJcHZfZGVxdWV1ZShl bmdpbmUpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2Nr LCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl9wYXJrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnRlbF9lbmdpbmVfcGFyayhlbmdpbmUp OworCWludGVsX2VuZ2luZV91bnBpbl9icmVhZGNydW1ic19pcnEoZW5naW5lKTsKKwllbmdpbmUt PmZsYWdzICY9IH5JOTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1CX1RBU0tMRVQ7Cit9CisKK3N0 YXRpYyB2b2lkIHZncHVfcHZfc3VibWlzc2lvbl91bnBhcmsoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfTkVFRFNfQlJFQURD UlVNQl9UQVNLTEVUOworCWludGVsX2VuZ2luZV9waW5fYnJlYWRjcnVtYnNfaXJxKGVuZ2luZSk7 Cit9CisKK3ZvaWQgdmdwdV9zZXRfcHZfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCit7CisJLyoKKwkgKiBXZSBpbmhlcml0IGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZy b20gZXhlY2xpc3RzIHRoYXQgd2UnZCBsaWtlCisJICogdG8ga2VlcCB1c2luZzoKKwkgKgorCSAq ICAgIGVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Q7CisJ ICogICAgZW5naW5lLT5jYW5jZWxfcmVxdWVzdHMgPSBleGVjbGlzdHNfY2FuY2VsX3JlcXVlc3Rz OworCSAqICAgIGVuZ2luZS0+c2NoZWR1bGUgPSBleGVjbGlzdHNfc2NoZWR1bGU7CisJICoKKwkg KiBCdXQgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYWN0dWFsIHN1Ym1pc3Npb24gYmFja2VuZCBp biBvcmRlcgorCSAqIHRvIHRhbGsgdG8gdGhlIEdWVCB3aXRoIFBWIG5vdGlmaWNhdGlvbiBtZXNz YWdlLgorCSAqLworCisJZW5naW5lLT5leGVjbGlzdHMudGFza2xldC5mdW5jID0gdmdwdV9wdl9z dWJtaXNzaW9uX3Rhc2tsZXQ7CisKKwllbmdpbmUtPnBhcmsgPSB2Z3B1X3B2X3N1Ym1pc3Npb25f cGFyazsKKwllbmdpbmUtPnVucGFyayA9IHZncHVfcHZfc3VibWlzc2lvbl91bnBhcms7Cit9Ci0t IAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4