From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 24/29] drm/i915: gvt: Full execlist status emulation Date: Thu, 28 Jan 2016 18:21:46 +0800 Message-ID: <1453976511-27322-25-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 272146E7F8 for ; Thu, 28 Jan 2016 02:25:00 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@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, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVsbCBleGVjbGlzdCBzdGF0dXMgZW11bGF0aW9uIGZy YW1ld29yay4KClVuZGVyIHZpcnR1bGl6YXRpb24gZW52aXJvbm1lbnQsIHRoZSBleGVjbGlzdCBz dGF0dXMgYXJlIGZ1bGx5IGVtdWxhdGVkCmluY2x1ZGluZyB2aXJ0dWFsIENTQiBlbXVsYXRpb24s IHZpcnR1YWwgZXhlY2xpc3QgZW11bGF0aW9uLiBUaGUgZnJhbWV3b3JrCndpbGwgZW11bGF0ZSB0 aGUgdmlydHVhbCBDU0IgYWNjb3JkaW5nIHRvIHRoZSBndWVzdCB3b3JrbG9hZCBydW5uaW5nIHN0 YXR1cy4KClNpZ25lZC1vZmYtYnk6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9leGVjbGlzdC5jIHwgMzQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0LmggfCAxMjYgKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgfCAgIDIgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2luc3RhbmNlLmMgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCA0ODQg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9leGVjbGlzdC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCmlu ZGV4IDg4NzRmZTAuLmJiMzE3MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKQEAgLTEs NiArMSw2IEBACiBHVlRfU09VUkNFIDo9IGd2dC5vIHBhcmFtcy5vIGFwZXJ0dXJlX2dtLm8gbW1p by5vIGhhbmRsZXJzLm8gaW5zdGFuY2UubyBcCiAJCXRyYWNlX3BvaW50cy5vIGludGVycnVwdC5v IGd0dC5vIGNmZ19zcGFjZS5vIG9wcmVnaW9uLm8gdXRpbGl0eS5vIFwKLQkJZmJfZGVjb2Rlci5v IGRpc3BsYXkubyBlZGlkLm8gY29udHJvbC5vCisJCWZiX2RlY29kZXIubyBkaXNwbGF5Lm8gZWRp ZC5vIGNvbnRyb2wubyBleGVjbGlzdC5vCiAKIGNjZmxhZ3MteQkJCSs9IC1JJChzcmMpIC1JJChz cmMpLy4uIC1XYWxsIC1XZXJyb3IgLVduby11bnVzZWQtZnVuY3Rpb24KIGk5MTVfZ3Z0LXkJCQk6 PSAkKEdWVF9TT1VSQ0UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZGVi dWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oCmluZGV4IDgwN2Q5ZTguLjg4 YjdkNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oCkBAIC03Myw3ICs3Myw4IEBAIGVudW0g ewogCUdWVF9EQkdfSVJRID0gKDEgPDwgMiksCiAJR1ZUX0RCR19EUFkgPSAoMSA8PCAzKSwKIAlH VlRfREJHX1JFTkRFUiA9ICgxIDw8IDQpLAotCUdWVF9EQkdfRURJRCA9ICgxIDw8IDUpCisJR1ZU X0RCR19FRElEID0gKDEgPDwgNSksCisJR1ZUX0RCR19FTCA9ICgxIDw8IDYpLAogfTsKIAogI2Rl ZmluZSBndnRfZGJnX2NvcmUoZm10LCBhcmdzLi4uKSBcCkBAIC04NSw0ICs4Niw3IEBAIGVudW0g ewogI2RlZmluZSBndnRfZGJnX2lycShmbXQsIGFyZ3MuLi4pIFwKIAlndnRfZGJnKEdWVF9EQkdf SVJRLCBmbXQsICMjYXJncykKIAorI2RlZmluZSBndnRfZGJnX2VsKGZtdCwgYXJncy4uLikgXAor CWd2dF9kYmcoR1ZUX0RCR19FTCwgZm10LCAjI2FyZ3MpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvZXhlY2xpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDQ5 ZDAwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0 LmMKQEAgLTAsMCArMSwzNDggQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiZ3Z0LmgiCisKKyNkZWZp bmUgZXhlY2xpc3RfcmluZ19tbWlvKHJpbmdfaWQsIG9mZnNldCkgXAorCShndnRfcmluZ19pZF90 b19yZW5kZXJfbW1pb19iYXNlKHJpbmdfaWQpICsgKG9mZnNldCkpCisKKyNkZWZpbmUgdmFsaWRf Y29udGV4dChjdHgpICgoY3R4KS0+dmFsaWQpCisjZGVmaW5lIHNhbWVfY29udGV4dChhLCBiKSAo KChhKS0+Y29udGV4dF9pZCA9PSAoYiktPmNvbnRleHRfaWQpICYmIFwKKwkJKChhKS0+bHJjYSA9 PSAoYiktPmxyY2EpKQorCitzdGF0aWMgaW50IGNvbnRleHRfc3dpdGNoX2V2ZW50c1tdID0gewor CVtSQ1NdID0gUkNTX0FTX0NPTlRFWFRfU1dJVENILAorCVtCQ1NdID0gQkNTX0FTX0NPTlRFWFRf U1dJVENILAorCVtWQ1NdID0gVkNTX0FTX0NPTlRFWFRfU1dJVENILAorCVtWQ1MyXSA9IFZDUzJf QVNfQ09OVEVYVF9TV0lUQ0gsCisJW1ZFQ1NdID0gVkVDU19BU19DT05URVhUX1NXSVRDSCwKK307 CisKK3N0YXRpYyBpbnQgcmluZ19pZF90b19jb250ZXh0X3N3aXRjaF9ldmVudChpbnQgcmluZ19p ZCkKK3sKKwlBU1NFUlQocmluZ19pZCA+PSAwICYmIHJpbmdfaWQgPCBBUlJBWV9TSVpFKGNvbnRl eHRfc3dpdGNoX2V2ZW50cykpOworCXJldHVybiBjb250ZXh0X3N3aXRjaF9ldmVudHNbcmluZ19p ZF07Cit9CisKK3N0YXRpYyB2b2lkIHN3aXRjaF92aXJ0dWFsX2V4ZWNsaXN0X3Nsb3Qoc3RydWN0 IGd2dF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8gKmluZm8pCit7CisJZ3Z0X2RiZ19lbCgiW2JlZm9y ZV0gcnVubmluZyBzbG90ICVkL2NvbnRleHQgJXggcGVuZGluZyBzbG90ICVkIiwKKwkJaW5mby0+ cnVubmluZ19leGVjbGlzdCA/IGluZm8tPnJ1bm5pbmdfZXhlY2xpc3QtPmluZGV4IDogLTEsCisJ CWluZm8tPnJ1bm5pbmdfY29udGV4dCA/IGluZm8tPnJ1bm5pbmdfY29udGV4dC0+Y29udGV4dF9p ZCA6IDAsCisJCWluZm8tPnBlbmRpbmdfZXhlY2xpc3QgPyBpbmZvLT5wZW5kaW5nX2V4ZWNsaXN0 LT5pbmRleCA6IC0xKTsKKworCWluZm8tPnJ1bm5pbmdfZXhlY2xpc3QgPSBpbmZvLT5wZW5kaW5n X2V4ZWNsaXN0OworCWluZm8tPnBlbmRpbmdfZXhlY2xpc3QgPSBOVUxMOworCWluZm8tPnJ1bm5p bmdfY29udGV4dCA9IGluZm8tPnJ1bm5pbmdfY29udGV4dCA/CisJCSZpbmZvLT5ydW5uaW5nX2V4 ZWNsaXN0LT5jdHhbMF0gOiBOVUxMOworCisJZ3Z0X2RiZ19lbCgiW2FmdGVyXSBydW5uaW5nIHNs b3QgJWQvY29udGV4dCAleCBwZW5kaW5nIHNsb3QgJWQiLAorCQlpbmZvLT5ydW5uaW5nX2V4ZWNs aXN0ID8gaW5mby0+cnVubmluZ19leGVjbGlzdC0+aW5kZXggOiAtMSwKKwkJaW5mby0+cnVubmlu Z19jb250ZXh0ID8gaW5mby0+cnVubmluZ19jb250ZXh0LT5jb250ZXh0X2lkIDogMCwKKwkJaW5m by0+cGVuZGluZ19leGVjbGlzdCA/IGluZm8tPnBlbmRpbmdfZXhlY2xpc3QtPmluZGV4IDogLTEp OworfQorCitzdGF0aWMgdm9pZCBlbXVsYXRlX2V4ZWNsaXN0X3N0YXR1cyhzdHJ1Y3QgZ3Z0X3Zp cnR1YWxfZXhlY2xpc3RfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X3N0YXRl ICpydW5uaW5nID0gaW5mby0+cnVubmluZ19leGVjbGlzdDsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0 X3N0YXRlICpwZW5kaW5nID0gaW5mby0+cGVuZGluZ19leGVjbGlzdDsKKwlzdHJ1Y3QgZXhlY2xp c3RfY3R4X2Rlc2NyaXB0b3JfZm9ybWF0ICpkZXNjID0gaW5mby0+cnVubmluZ19jb250ZXh0Owor CXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QgPSBpbmZvLT52Z3Q7CisKKwlzdHJ1Y3QgZXhlY2xpc3Rf c3RhdHVzX2Zvcm1hdCBzdGF0dXM7CisKKwl1MzIgc3RhdHVzX3JlZyA9IGV4ZWNsaXN0X3Jpbmdf bW1pbyhpbmZvLT5yaW5nX2lkLCBfRUxfT0ZGU0VUX1NUQVRVUyk7CisKKwlzdGF0dXMubGR3ID0g X192cmVnKHZndCwgc3RhdHVzX3JlZyk7CisJc3RhdHVzLnVkdyA9IF9fdnJlZyh2Z3QsIHN0YXR1 c19yZWcgKyA0KTsKKworCWlmIChydW5uaW5nKSB7CisJCXN0YXR1cy5jdXJyZW50X2V4ZWNsaXN0 X3BvaW50ZXIgPSAhIXJ1bm5pbmctPmluZGV4OworCQlzdGF0dXMuZXhlY2xpc3Rfd3JpdGVfcG9p bnRlciA9ICEhIXJ1bm5pbmctPmluZGV4OworCQlzdGF0dXMuZXhlY2xpc3RfMF9hY3RpdmUgPSBz dGF0dXMuZXhlY2xpc3RfMF92YWxpZCA9CisJCQkhISEocnVubmluZy0+aW5kZXgpOworCQlzdGF0 dXMuZXhlY2xpc3RfMV9hY3RpdmUgPSBzdGF0dXMuZXhlY2xpc3RfMV92YWxpZCA9CisJCQkhIShy dW5uaW5nLT5pbmRleCk7CisJfSBlbHNlIHsKKwkJc3RhdHVzLmNvbnRleHRfaWQgPSAwOworCQlz dGF0dXMuZXhlY2xpc3RfMF9hY3RpdmUgPSBzdGF0dXMuZXhlY2xpc3RfMF92YWxpZCA9IDA7CisJ CXN0YXR1cy5leGVjbGlzdF8xX2FjdGl2ZSA9IHN0YXR1cy5leGVjbGlzdF8xX3ZhbGlkID0gMDsK Kwl9CisKKwlzdGF0dXMuY29udGV4dF9pZCA9IGRlc2MgPyBkZXNjLT5jb250ZXh0X2lkIDogMDsK KwlzdGF0dXMuZXhlY2xpc3RfcXVldWVfZnVsbCA9ICEhKHBlbmRpbmcpOworCisJX192cmVnKHZn dCwgc3RhdHVzX3JlZykgPSBzdGF0dXMubGR3OworCV9fdnJlZyh2Z3QsIHN0YXR1c19yZWcgKyA0 KSA9IHN0YXR1cy51ZHc7CisKKwlndnRfZGJnX2VsKCJbdmd0ICVkXSBzdGF0dXMgcmVnIG9mZnNl dCAleCBsZHcgJXggdWR3ICV4IiwKKwkJdmd0LT5pZCwgc3RhdHVzX3JlZywgc3RhdHVzLmxkdywg c3RhdHVzLnVkdyk7Cit9CisKK3N0YXRpYyB2b2lkIGVtdWxhdGVfY3NiX3VwZGF0ZShzdHJ1Y3Qg Z3Z0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyAqaW5mbywKKwkJc3RydWN0IGV4ZWNsaXN0X2NvbnRl eHRfc3RhdHVzX2Zvcm1hdCAqc3RhdHVzKQoreworCXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QgPSBp bmZvLT52Z3Q7CisJc3RydWN0IGV4ZWNsaXN0X2NvbnRleHRfc3RhdHVzX3BvaW50ZXJfZm9ybWF0 IGN0eF9zdGF0dXNfcHRyOworCXUzMiB3cml0ZV9wb2ludGVyOworCXUzMiBjdHhfc3RhdHVzX3B0 cl9yZWcsIGN0eF9zdGF0dXNfYnVmX3JlZywgb2Zmc2V0OworCisJY3R4X3N0YXR1c19wdHJfcmVn ID0gZXhlY2xpc3RfcmluZ19tbWlvKGluZm8tPnJpbmdfaWQsCisJCQlfRUxfT0ZGU0VUX1NUQVRV U19QVFIpOworCWN0eF9zdGF0dXNfYnVmX3JlZyA9IGV4ZWNsaXN0X3JpbmdfbW1pbyhpbmZvLT5y aW5nX2lkLAorCQkJX0VMX09GRlNFVF9TVEFUVVNfQlVGKTsKKworCWN0eF9zdGF0dXNfcHRyLmR3 ID0gX192cmVnKHZndCwgY3R4X3N0YXR1c19wdHJfcmVnKTsKKworCXdyaXRlX3BvaW50ZXIgPSBj dHhfc3RhdHVzX3B0ci53cml0ZV9wdHI7CisKKwlpZiAod3JpdGVfcG9pbnRlciA9PSAweDcpCisJ CXdyaXRlX3BvaW50ZXIgPSAwOworCWVsc2UgeworCQkrK3dyaXRlX3BvaW50ZXI7CisJCXdyaXRl X3BvaW50ZXIgJT0gMHg2OworCX0KKworCW9mZnNldCA9IGN0eF9zdGF0dXNfYnVmX3JlZyArIHdy aXRlX3BvaW50ZXIgKiA4OworCisJX192cmVnKHZndCwgb2Zmc2V0KSA9IHN0YXR1cy0+bGR3Owor CV9fdnJlZyh2Z3QsIG9mZnNldCArIDQpID0gc3RhdHVzLT51ZHc7CisKKwljdHhfc3RhdHVzX3B0 ci53cml0ZV9wdHIgPSB3cml0ZV9wb2ludGVyOworCV9fdnJlZyh2Z3QsIGN0eF9zdGF0dXNfcHRy X3JlZykgPSBjdHhfc3RhdHVzX3B0ci5kdzsKKworCWd2dF9kYmdfZWwoIlt2Z3QgJWRdIHcgcG9p bnRlciAldSByZWcgJXggY3NiIGwgJXggY3NiIGggJXgiLAorCQl2Z3QtPmlkLCB3cml0ZV9wb2lu dGVyLCBvZmZzZXQsIHN0YXR1cy0+bGR3LCBzdGF0dXMtPnVkdyk7CisKKwlndnRfdHJpZ2dlcl92 aXJ0dWFsX2V2ZW50KHZndCwgcmluZ19pZF90b19jb250ZXh0X3N3aXRjaF9ldmVudChpbmZvLT5y aW5nX2lkKSk7Cit9CisKK3N0YXRpYyBib29sIGVtdWxhdGVfZXhlY2xpc3RfY3R4X3NjaGVkdWxl X291dChzdHJ1Y3QgZ3Z0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyAqaW5mbywKKwkJc3RydWN0IGV4 ZWNsaXN0X2N0eF9kZXNjcmlwdG9yX2Zvcm1hdCAqY3R4KQoreworCXN0cnVjdCBndnRfZXhlY2xp c3Rfc3RhdGUgKnJ1bm5pbmcgPSBpbmZvLT5ydW5uaW5nX2V4ZWNsaXN0OworCXN0cnVjdCBndnRf ZXhlY2xpc3Rfc3RhdGUgKnBlbmRpbmcgPSBpbmZvLT5wZW5kaW5nX2V4ZWNsaXN0OworCXN0cnVj dCBleGVjbGlzdF9jdHhfZGVzY3JpcHRvcl9mb3JtYXQgKmN0eDAgPSAmcnVubmluZy0+Y3R4WzBd OworCXN0cnVjdCBleGVjbGlzdF9jdHhfZGVzY3JpcHRvcl9mb3JtYXQgKmN0eDEgPSAmcnVubmlu Zy0+Y3R4WzFdOworCXN0cnVjdCBleGVjbGlzdF9jb250ZXh0X3N0YXR1c19mb3JtYXQgc3RhdHVz OworCisJbWVtc2V0KCZzdGF0dXMsIDAsIHNpemVvZihzdGF0dXMpKTsKKworCWd2dF9kYmdfZWwo InNjaGVkdWxlIG91dCBjb250ZXh0IGlkICV4IiwgY3R4LT5jb250ZXh0X2lkKTsKKworCWlmICgh c2FtZV9jb250ZXh0KGN0eCwgaW5mby0+cnVubmluZ19jb250ZXh0KSkgeworCQlndnRfZXJyKCJz Y2hlZHVsZSBvdXQgY29udGV4dCBpcyBub3QgcnVubmluZyBjb250ZXh0LCIKKwkJCQkiY3R4IGlk ICV4IHJ1bm5pbmcgY3R4IGlkICV4IiwKKwkJCQljdHgtPmNvbnRleHRfaWQsCisJCQkJaW5mby0+ cnVubmluZ19jb250ZXh0LT5jb250ZXh0X2lkKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8q IGN0eDEgaXMgdmFsaWQsIGN0eDAvY3R4IGlzIHNjaGVkdWxlZC1vdXQgLT4gZWxlbWVudCBzd2l0 Y2ggKi8KKwlpZiAodmFsaWRfY29udGV4dChjdHgxKSAmJiBzYW1lX2NvbnRleHQoY3R4MCwgY3R4 KSkgeworCQlndnRfZGJnX2VsKCJjdHggMSB2YWxpZCwgY3R4L2N0eCAwIGlzIHNjaGVkdWxlZC1v dXQiKTsKKworCQlpbmZvLT5ydW5uaW5nX2NvbnRleHQgPSBjdHgxOworCisJCWVtdWxhdGVfZXhl Y2xpc3Rfc3RhdHVzKGluZm8pOworCisJCXN0YXR1cy5jb250ZXh0X2NvbXBsZXRlID0gc3RhdHVz LmVsZW1lbnRfc3dpdGNoID0gMTsKKwkJc3RhdHVzLmNvbnRleHRfaWQgPSBjdHgtPmNvbnRleHRf aWQ7CisKKwkJZW11bGF0ZV9jc2JfdXBkYXRlKGluZm8sICZzdGF0dXMpOworCQkvKgorCQkgKiBj dHgxIGlzIG5vdCB2YWxpZCwgY3R4ID09IGN0eDAKKwkJICogY3R4MSBpcyB2YWxpZCwgY3R4MSA9 PSBjdHgKKwkJICogCS0tPiBsYXN0IGVsZW1lbnQgaXMgZmluaXNoZWQKKwkJICogZW11bGF0ZToK KwkJICogCWFjdGl2ZS10by1pZGxlIGlmIHRoZXJlIGlzICpubyogcGVuZGluZyBleGVjbGlzdAor CQkgKiAJY29udGV4dC1jb21wbGV0ZSBpZiB0aGVyZSAqaXMqIHBlbmRpbmcgZXhlY2xpc3QKKwkJ ICovCisJfSBlbHNlIGlmICgoIXZhbGlkX2NvbnRleHQoY3R4MSkgJiYgc2FtZV9jb250ZXh0KGN0 eDAsIGN0eCkpCisJCQl8fCAodmFsaWRfY29udGV4dChjdHgxKSAmJiBzYW1lX2NvbnRleHQoY3R4 MSwgY3R4KSkpIHsKKwkJZ3Z0X2RiZ19lbCgibmVlZCB0byBzd2l0Y2ggdmlydHVhbCBleGVjbGlz dCBzbG90Iik7CisKKwkJc3dpdGNoX3ZpcnR1YWxfZXhlY2xpc3Rfc2xvdChpbmZvKTsKKworCQll bXVsYXRlX2V4ZWNsaXN0X3N0YXR1cyhpbmZvKTsKKworCQlpZiAoIXBlbmRpbmcpCisJCQlzdGF0 dXMuY29udGV4dF9jb21wbGV0ZSA9IHN0YXR1cy5hY3RpdmVfdG9faWRsZSA9IDE7CisJCWVsc2UK KwkJCXN0YXR1cy5jb250ZXh0X2NvbXBsZXRlID0gMTsKKworCQlzdGF0dXMuY29udGV4dF9pZCA9 IGN0eC0+Y29udGV4dF9pZDsKKworCQllbXVsYXRlX2NzYl91cGRhdGUoaW5mbywgJnN0YXR1cyk7 CisJfSBlbHNlIHsKKwkJQVNTRVJUKDApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X3N0YXRlICpnZXRfbmV4dF9l eGVjbGlzdF9zdGF0ZSgKKwkJc3RydWN0IGd2dF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8gKmluZm8p Cit7CisJdTMyIHN0YXR1c19yZWcgPSBleGVjbGlzdF9yaW5nX21taW8oaW5mby0+cmluZ19pZCwg X0VMX09GRlNFVF9TVEFUVVMpOworCXN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QgPSBpbmZvLT52Z3Q7 CisJc3RydWN0IGV4ZWNsaXN0X3N0YXR1c19mb3JtYXQgc3RhdHVzOworCisJc3RhdHVzLmxkdyA9 IF9fdnJlZyh2Z3QsIHN0YXR1c19yZWcpOworCXN0YXR1cy51ZHcgPSBfX3ZyZWcodmd0LCBzdGF0 dXNfcmVnICsgNCk7CisKKwlpZiAoc3RhdHVzLmV4ZWNsaXN0X3F1ZXVlX2Z1bGwpIHsKKwkJZ3Z0 X2VycigidmlydHVhbCBleGVjbGlzdCBzbG90cyBhcmUgZnVsbCIpOworCQlyZXR1cm4gTlVMTDsK Kwl9CisKKwlyZXR1cm4gJmluZm8tPmV4ZWNsaXN0W3N0YXR1cy5leGVjbGlzdF93cml0ZV9wb2lu dGVyXTsKK30KKworc3RhdGljIGJvb2wgZW11bGF0ZV9leGVjbGlzdF9zY2hlZHVsZV9pbihzdHJ1 Y3QgZ3Z0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyAqaW5mbywKKwkJc3RydWN0IGV4ZWNsaXN0X2N0 eF9kZXNjcmlwdG9yX2Zvcm1hdCBjdHhbMl0pCit7CisJc3RydWN0IGd2dF9leGVjbGlzdF9zdGF0 ZSAqcnVubmluZyA9IGluZm8tPnJ1bm5pbmdfZXhlY2xpc3Q7CisJc3RydWN0IGd2dF9leGVjbGlz dF9zdGF0ZSAqZXhlY2xpc3QgPSBnZXRfbmV4dF9leGVjbGlzdF9zdGF0ZShpbmZvKTsKKworCXN0 cnVjdCBleGVjbGlzdF9jdHhfZGVzY3JpcHRvcl9mb3JtYXQgKmN0eDAsICpjdHgxOworCXN0cnVj dCBleGVjbGlzdF9jb250ZXh0X3N0YXR1c19mb3JtYXQgc3RhdHVzOworCisJZ3Z0X2RiZ19lbCgi ZW11bGF0ZSBzY2hlZHVsZS1pbiIpOworCisJaWYgKCFleGVjbGlzdCkgeworCQlndnRfZXJyKCJu byBhdmFpYWJsZSBleGVjbGlzdCBzbG90Iik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwltZW1z ZXQoJnN0YXR1cywgMCwgc2l6ZW9mKHN0YXR1cykpOworCW1lbXNldChleGVjbGlzdC0+Y3R4LCAw LCBzaXplb2YoZXhlY2xpc3QtPmN0eCkpOworCisJZXhlY2xpc3QtPmN0eFswXSA9IGN0eFswXTsK KwlleGVjbGlzdC0+Y3R4WzFdID0gY3R4WzFdOworCisJZ3Z0X2RiZ19lbCgiYWxsb2Mgc2xvdCBp bmRleCAlZCBjdHggMCAleCBjdHggMSAleCIsCisJCQlleGVjbGlzdC0+aW5kZXgsIGN0eFswXS5j b250ZXh0X2lkLAorCQkJY3R4WzFdLmNvbnRleHRfaWQpOworCisJLyoKKwkgKiBubyBydW5uaW5n IGV4ZWNsaXN0LCBtYWtlIHRoaXMgd3JpdGUgYnVuZGxlIGFzIHJ1bm5pbmcgZXhlY2xpc3QKKwkg KiAtPiBpZGxlLXRvLWFjdGl2ZQorCSAqLworCWlmICghcnVubmluZykgeworCQlndnRfZGJnX2Vs KCJubyBjdXJyZW50IHJ1bm5pbmcgZXhlY2xpc3QiKTsKKworCQlpbmZvLT5ydW5uaW5nX2V4ZWNs aXN0ID0gZXhlY2xpc3Q7CisJCWluZm8tPnBlbmRpbmdfZXhlY2xpc3QgPSBOVUxMOworCQlpbmZv LT5ydW5uaW5nX2NvbnRleHQgPSAmZXhlY2xpc3QtPmN0eFswXTsKKworCQlndnRfZGJnX2VsKCJy dW5uaW5nIHNsb3QgaW5kZXggJWQgcnVubmluZyBjb250ZXh0ICV4IiwKKwkJCQlpbmZvLT5ydW5u aW5nX2V4ZWNsaXN0LT5pbmRleCwKKwkJCQlpbmZvLT5ydW5uaW5nX2NvbnRleHQtPmNvbnRleHRf aWQpOworCisJCWVtdWxhdGVfZXhlY2xpc3Rfc3RhdHVzKGluZm8pOworCisJCXN0YXR1cy5pZGxl X3RvX2FjdGl2ZSA9IDE7CisJCXN0YXR1cy5jb250ZXh0X2lkID0gMDsKKworCQllbXVsYXRlX2Nz Yl91cGRhdGUoaW5mbywgJnN0YXR1cyk7CisJCXJldHVybiB0cnVlOworCX0KKworCWN0eDAgPSAm cnVubmluZy0+Y3R4WzBdOworCWN0eDEgPSAmcnVubmluZy0+Y3R4WzFdOworCisJZ3Z0X2RiZ19l bCgiY3VycmVudCBydW5uaW5nIGV4ZWNsaXN0IGluZGV4ICVkIGN0eCAwICV4IGN0eCAxICV4IiwK KwkJcnVubmluZy0+aW5kZXgsIGN0eDAtPmNvbnRleHRfaWQsIGN0eDEtPmNvbnRleHRfaWQpOwor CisJLyoKKwkgKiBhbHJlYWR5IGhhcyBhbiBydW5uaW5nIGV4ZWNsaXN0CisJICoJYS4gcnVubmlu ZyBjdHgxIGlzIHZhbGlkLAorCSAqCSAgIGN0eDAgaXMgZmluaXNoZWQsIGFuZCBydW5uaW5nIGN0 eDEgPT0gbmV3IGV4ZWNsaXN0IGN0eFswXQorCSAqCWIuIHJ1bm5pbmcgY3R4MSBpcyBub3QgdmFs aWQsCisJICoJICAgY3R4MCA9PSBuZXcgZXhlY2xpc3QgY3R4WzBdCisJICogLS0tLT4gbGl0ZS1y ZXN0b3JlICsgcHJlZW1wdGVkCisJICovCisJaWYgKCh2YWxpZF9jb250ZXh0KGN0eDEpICYmIHNh bWVfY29udGV4dChjdHgxLCAmZXhlY2xpc3QtPmN0eFswXSkgJiYKKwkJKCFzYW1lX2NvbnRleHQo Y3R4MCwgaW5mby0+cnVubmluZ19jb250ZXh0KSkpIHx8IC8qIGNvbmRpdGlvbiBhICovCisJCQko IXZhbGlkX2NvbnRleHQoY3R4MSkgJiYKKwkJCXNhbWVfY29udGV4dChjdHgwLCAmZXhlY2xpc3Qt PmN0eFswXSkpKSB7IC8qIGNvbmRpdGlvbiBiICovCisJCWd2dF9kYmdfZWwoIm5lZWQgdG8gc3dp dGNoIHZpcnR1YWwgZXhlY2xpc3Qgc2xvdCIpOworCisJCWluZm8tPnBlbmRpbmdfZXhlY2xpc3Qg PSBleGVjbGlzdDsKKwkJc3dpdGNoX3ZpcnR1YWxfZXhlY2xpc3Rfc2xvdChpbmZvKTsKKworCQll bXVsYXRlX2V4ZWNsaXN0X3N0YXR1cyhpbmZvKTsKKworCQlzdGF0dXMubGl0ZV9yZXN0b3JlID0g c3RhdHVzLnByZWVtcHRlZCA9IDE7CisJCXN0YXR1cy5jb250ZXh0X2lkID0gY3R4MC0+Y29udGV4 dF9pZDsKKworCQllbXVsYXRlX2NzYl91cGRhdGUoaW5mbywgJnN0YXR1cyk7CisJfSBlbHNlIHsK KwkJZ3Z0X2RiZ19lbCgiZW11bGF0ZSBhcyBwZW5kaW5nIHNsb3QiKTsKKwkJLyoKKwkJICogb3Ro ZXJ3aXNlCisJCSAqIC0tPiBlbXVsYXRlIHBlbmRpbmcgZXhlY2xpc3QgZXhpc3QgKyBidXQgbm8g cHJlZW1wdGlvbiBjYXNlCisJCSAqLworCQlpbmZvLT5wZW5kaW5nX2V4ZWNsaXN0ID0gZXhlY2xp c3Q7CisJCWVtdWxhdGVfZXhlY2xpc3Rfc3RhdHVzKGluZm8pOworCX0KKworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgYm9vbCBpbml0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyhzdHJ1Y3Qgdmd0 X2RldmljZSAqdmd0LAorCQlpbnQgcmluZ19pZCwgc3RydWN0IGd2dF92aXJ0dWFsX2V4ZWNsaXN0 X2luZm8gKmluZm8pCit7CisJc3RydWN0IGV4ZWNsaXN0X2NvbnRleHRfc3RhdHVzX3BvaW50ZXJf Zm9ybWF0IGN0eF9zdGF0dXNfcHRyOworCXUzMiBjdHhfc3RhdHVzX3B0cl9yZWc7CisKKwltZW1z ZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CisKKwlpbmZvLT52Z3QgPSB2Z3Q7CisJaW5mby0+ cmluZ19pZCA9IHJpbmdfaWQ7CisJaW5mby0+ZXhlY2xpc3RbMF0uaW5kZXggPSAwOworCWluZm8t PmV4ZWNsaXN0WzFdLmluZGV4ID0gMTsKKworCWN0eF9zdGF0dXNfcHRyX3JlZyA9IGV4ZWNsaXN0 X3JpbmdfbW1pbyhpbmZvLT5yaW5nX2lkLAorCQkJX0VMX09GRlNFVF9TVEFUVVNfUFRSKTsKKwor CWN0eF9zdGF0dXNfcHRyLmR3ID0gX192cmVnKHZndCwgY3R4X3N0YXR1c19wdHJfcmVnKTsKKwlj dHhfc3RhdHVzX3B0ci5yZWFkX3B0ciA9IGN0eF9zdGF0dXNfcHRyLndyaXRlX3B0ciA9IDB4NzsK KwlfX3ZyZWcodmd0LCBjdHhfc3RhdHVzX3B0cl9yZWcpID0gY3R4X3N0YXR1c19wdHIuZHc7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBndnRfaW5pdF92aXJ0dWFsX2V4ZWNsaXN0X2luZm8o c3RydWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwlpbnQgaTsKKworCS8qIGVhY2ggcmluZyBoYXMg YSB2aXJ0dWFsIGV4ZWNsaXN0IGVuZ2luZSAqLworCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9S SU5HUzsgaSsrKQorCQlpbml0X3ZpcnR1YWxfZXhlY2xpc3RfaW5mbyh2Z3QsCisJCQkJaSwgJnZn dC0+dmlydHVhbF9leGVjbGlzdF9pbmZvW2ldKTsKKworCXJldHVybiB0cnVlOworfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvZXhlY2xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5iY2Q1YTllCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4 ZWNsaXN0LmgKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2 IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9HVlRfRVhFQ0xJ U1RfSF8KKyNkZWZpbmUgX0dWVF9FWEVDTElTVF9IXworCitzdHJ1Y3QgZXhlY2xpc3RfY3R4X2Rl c2NyaXB0b3JfZm9ybWF0IHsKKwl1bmlvbiB7CisJCXUzMiB1ZHc7CisJCXUzMiBjb250ZXh0X2lk OworCX07CisJdW5pb24geworCQl1MzIgbGR3OworCQlzdHJ1Y3QgeworCQkJdTMyIHZhbGlkICAg ICAgICAgICAgICAgICAgOiAxOworCQkJdTMyIGZvcmNlX3BkX3Jlc3RvcmUgICAgICAgOiAxOwor CQkJdTMyIGZvcmNlX3Jlc3RvcmUgICAgICAgICAgOiAxOworCQkJdTMyIGFkZHJlc3NpbmdfbW9k ZSAgICAgICAgOiAyOworCQkJdTMyIGxsY19jb2hlcmVuY3kgICAgICAgICAgOiAxOworCQkJdTMy IGZhdWx0X2hhbmRsaW5nICAgICAgICAgOiAyOworCQkJdTMyIHByaXZpbGVnZV9hY2Nlc3MgICAg ICAgOiAxOworCQkJdTMyIHJlc2VydmVkICAgICAgICAgICAgICAgOiAzOworCQkJdTMyIGxyY2Eg ICAgICAgICAgICAgICAgICAgOiAyMDsKKwkJfTsKKwl9OworfTsKKworc3RydWN0IGV4ZWNsaXN0 X3N0YXR1c19mb3JtYXQgeworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdTMyIGxk dzsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgICAgICAgICAgdTMy IGN1cnJlbnRfZXhlY2xpc3RfcG9pbnRlciAgICAgICA6MTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHUzMiBleGVjbGlzdF93cml0ZV9wb2ludGVyICAgICAgICAgOjE7CisgICAgICAgICAgICAg ICAgICAgICAgICB1MzIgZXhlY2xpc3RfcXVldWVfZnVsbCAgICAgICAgICAgIDoxOworICAgICAg ICAgICAgICAgICAgICAgICAgdTMyIGV4ZWNsaXN0XzFfdmFsaWQgICAgICAgICAgICAgICA6MTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBleGVjbGlzdF8wX3ZhbGlkICAgICAgICAgICAg ICAgOjE7CisgICAgICAgICAgICAgICAgICAgICAgICB1MzIgbGFzdF9jdHhfc3dpdGNoX3JlYXNv biAgICAgICAgIDo5OworICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGN1cnJlbnRfYWN0aXZl X2VsbV9zdGF0dXMgICAgICA6MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBhcmJpdHJh dGlvbl9lbmFibGUgICAgICAgICAgICAgOjE7CisgICAgICAgICAgICAgICAgICAgICAgICB1MzIg ZXhlY2xpc3RfMV9hY3RpdmUgICAgICAgICAgICAgIDoxOworICAgICAgICAgICAgICAgICAgICAg ICAgdTMyIGV4ZWNsaXN0XzBfYWN0aXZlICAgICAgICAgICAgICA6MTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgOjEzOworICAgICAg ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAg ICB1MzIgdWR3OworICAgICAgICAgICAgICAgIHUzMiBjb250ZXh0X2lkOworICAgICAgICB9Owor fTsKKworc3RydWN0IGV4ZWNsaXN0X2NvbnRleHRfc3RhdHVzX3BvaW50ZXJfZm9ybWF0IHsKKwl1 bmlvbiB7CisJCXUzMiBkdzsKKwkJc3RydWN0IHsKKwkJCXUzMiB3cml0ZV9wdHIgICAgICAgICAg ICAgIDozOworCQkJdTMyIHJlc2VydmVkICAgICAgICAgICAgICAgOjU7CisJCQl1MzIgcmVhZF9w dHIgICAgICAgICAgICAgICA6MzsKKwkJCXUzMiByZXNlcnZlZDIgICAgICAgICAgICAgIDo1Owor CQkJdTMyIG1hc2sgICAgICAgICAgICAgICAgICAgOjE2OworCQl9OworCX07Cit9OworCitzdHJ1 Y3QgZXhlY2xpc3RfY29udGV4dF9zdGF0dXNfZm9ybWF0IHsKKwl1bmlvbiB7CisJCXUzMiBsZHc7 CisJCXN0cnVjdCB7CisJCQl1MzIgaWRsZV90b19hY3RpdmUgICAgICAgICA6MTsKKwkJCXUzMiBw cmVlbXB0ZWQgICAgICAgICAgICAgIDoxOworCQkJdTMyIGVsZW1lbnRfc3dpdGNoICAgICAgICAg OjE7CisJCQl1MzIgYWN0aXZlX3RvX2lkbGUgICAgICAgICA6MTsKKwkJCXUzMiBjb250ZXh0X2Nv bXBsZXRlICAgICAgIDoxOworCQkJdTMyIHdhaXRfb25fc3luY19mbGlwICAgICAgOjE7CisJCQl1 MzIgd2FpdF9vbl92YmxhbmsgICAgICAgICA6MTsKKwkJCXUzMiB3YWl0X29uX3NlbWFwaG9yZSAg ICAgIDoxOworCQkJdTMyIHdhaXRfb25fc2NhbmxpbmUgICAgICAgOjE7CisJCQl1MzIgcmVzZXJ2 ZWQgICAgICAgICAgICAgICA6MjsKKwkJCXUzMiBzZW1hcGhvcmVfd2FpdF9tb2RlICAgIDoxOwor CQkJdTMyIGRpc3BsYXlfcGxhbmUgICAgICAgICAgOjM7CisJCQl1MzIgbGl0ZV9yZXN0b3JlICAg ICAgICAgICA6MTsKKwkJCXUzMiByZXNlcnZlZF8yICAgICAgICAgICAgIDoxNjsKKwkJfTsKKwl9 OworCXVuaW9uIHsKKwkJdTMyIHVkdzsKKwkJdTMyIGNvbnRleHRfaWQ7CisJfTsKK307CisKK3N0 cnVjdCBndnRfZXhlY2xpc3Rfc3RhdGUgeworCXN0cnVjdCBleGVjbGlzdF9jdHhfZGVzY3JpcHRv cl9mb3JtYXQgY3R4WzJdOworCXUzMiBpbmRleDsKK307CisKK3N0cnVjdCBndnRfdmlydHVhbF9l eGVjbGlzdF9pbmZvIHsKKwlzdHJ1Y3QgZ3Z0X2V4ZWNsaXN0X3N0YXRlIGV4ZWNsaXN0WzJdOwor CXN0cnVjdCBndnRfZXhlY2xpc3Rfc3RhdGUgKnJ1bm5pbmdfZXhlY2xpc3Q7CisJc3RydWN0IGd2 dF9leGVjbGlzdF9zdGF0ZSAqcGVuZGluZ19leGVjbGlzdDsKKwlzdHJ1Y3QgZXhlY2xpc3RfY3R4 X2Rlc2NyaXB0b3JfZm9ybWF0ICpydW5uaW5nX2NvbnRleHQ7CisJaW50IHJpbmdfaWQ7CisJc3Ry dWN0IHZndF9kZXZpY2UgKnZndDsKK307CisKK2Jvb2wgZ3Z0X2luaXRfdmlydHVhbF9leGVjbGlz dF9pbmZvKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpOworCisjZW5kaWYgLypfR1ZUX0VYRUNMSVNU X0hfKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAppbmRleCAxZDVjMTVjLi5mNDA3ODhiIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiZmJfZGVjb2Rlci5o IgogI2luY2x1ZGUgImVkaWQuaCIKICNpbmNsdWRlICJkaXNwbGF5LmgiCisjaW5jbHVkZSAiZXhl Y2xpc3QuaCIKIAogI2RlZmluZSBHVlRfTUFYX1ZHUFUgOAogCkBAIC0xNDksNiArMTUwLDcgQEAg c3RydWN0IHZndF9kZXZpY2UgewogCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2OwogCWF0b21pY190 IGFjdGl2ZTsKIAlzdHJ1Y3QgZ3Z0X3ZpcnR1YWxfZGV2aWNlX3N0YXRlIHN0YXRlOworCXN0cnVj dCBndnRfdmlydHVhbF9leGVjbGlzdF9pbmZvIHZpcnR1YWxfZXhlY2xpc3RfaW5mb1tJOTE1X05V TV9SSU5HU107CiAJc3RydWN0IGd2dF9zdGF0aXN0aWNzIHN0YXQ7CiAJc3RydWN0IGd2dF92Z3R0 X2luZm8gZ3R0OwogCXZvaWQgKmh5cGVydmlzb3JfZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9pbnN0YW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2lu c3RhbmNlLmMKaW5kZXggMzAxNWZkZi4uOTU5YzhlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2luc3RhbmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2lu c3RhbmNlLmMKQEAgLTE4Myw2ICsxODMsOCBAQCBzdGF0aWMgYm9vbCBjcmVhdGVfdmlydHVhbF9k ZXZpY2Vfc3RhdGUoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKIAlpZiAoIWd2dF9pbml0X3ZpcnR1 YWxfZGlzcGxheV9zdGF0ZSh2Z3QpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwlndnRfaW5pdF92aXJ0 dWFsX2V4ZWNsaXN0X2luZm8odmd0KTsKKwogCXJldHVybiB0cnVlOwogfQogCi0tIAoxLjkuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK