From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 12/46] drm/i915: Mock infrastructure for request emission Date: Thu, 2 Feb 2017 09:08:31 +0000 Message-ID: <20170202090905.29028-13-chris@chris-wilson.co.uk> References: <20170202090905.29028-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wj0-x243.google.com (mail-wj0-x243.google.com [IPv6:2a00:1450:400c:c01::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F1ED6E944 for ; Thu, 2 Feb 2017 09:09:23 +0000 (UTC) Received: by mail-wj0-x243.google.com with SMTP id ip10so211324wjb.1 for ; Thu, 02 Feb 2017 01:09:23 -0800 (PST) In-Reply-To: <20170202090905.29028-1-chris@chris-wilson.co.uk> 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 List-Id: intel-gfx@lists.freedesktop.org Q3JlYXRlIGEgZmFrZSBlbmdpbmUgdGhhdCBydW5zIHJlcXVlc3RzIHVzaW5nIGEgdGltZXIgdG8g c2ltdWxhdGUgaHcuCgp2MjogUHJldmVudCBsZWFrcyBvZiBjdHgtPm5hbWUgYWxvbmcgZXJyb3Ig cGF0aHMKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgICAg ICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfYnJlYWRjcnVt YnMuYyB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4 dC5jICAgICAgfCAgNzggKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfY29udGV4dC5oICAgICAgfCAgMzQgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZW5naW5lLmMgICAgICAgfCAxNzIgKysrKysrKysrKysrKysrKysrKy0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuaCAgICAgICB8ICAxOCAr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyAgIHwg IDk1ICsrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5oICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf cmVxdWVzdC5jICAgICAgfCAgNDQgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19yZXF1ZXN0LmggICAgICB8ICA0NCArKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDQ4 MyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19yZXF1ZXN0LmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg NjgwMTA1NDIxYmI5Li5lNjIwOGUzNjEzNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKQEAgLTExODgsMyArMTE4OCw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3Jl c2V0X3N0YXRzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlyZXR1cm4gMDsKIH0K KworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQorI2luY2x1ZGUgInNl bGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2JyZWFkY3J1bWJzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfYnJlYWRjcnVtYnMuYwppbmRleCBmYjM2OGViMzc2NjAuLjU1 Nzk1Y2FiNDgzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX2JyZWFkY3J1bWJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX2JyZWFkY3J1bWJzLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICIuLi9pOTE1X3Nl bGZ0ZXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9yYW5kb20uaCIKIAorI2luY2x1ZGUgIm1vY2tfZ2Vt X2RldmljZS5oIgogI2luY2x1ZGUgIm1vY2tfZW5naW5lLmgiCiAKIHN0YXRpYyBpbnQgY2hlY2tf cmJ0cmVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKQEAgLTQ2NiwxNSArNDY3LDE1 IEBAIGludCBpbnRlbF9icmVhZGNydW1ic19tb2NrX3NlbGZ0ZXN0cyh2b2lkKQogCQlTVUJURVNU KGlndF9pbnNlcnRfY29tcGxldGUpLAogCQlTVUJURVNUKGlndF93YWtldXApLAogCX07Ci0Jc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1OwogCWludCBlcnI7CiAKLQllbmdpbmUgPSBtb2NrX2VuZ2luZSgibW9jayIpOwotCWlmICgh ZW5naW5lKQorCWk5MTUgPSBtb2NrX2dlbV9kZXZpY2UoKTsKKwlpZiAoIWk5MTUpCiAJCXJldHVy biAtRU5PTUVNOwogCi0JZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgZW5naW5lKTsKLQlrZnJl ZShlbmdpbmUpOworCWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUtPmVuZ2luZVtSQ1Nd KTsKKwlkcm1fZGV2X3VucmVmKCZpOTE1LT5kcm0pOwogCiAJcmV0dXJuIGVycjsKIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhkM2E5MGMzZjhhYwotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwpAQCAtMCww ICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisg KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNp bmNsdWRlICJtb2NrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJtb2NrX2d0dC5oIgorCitzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqCittb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCisJICAgICBjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHg7CisJaW50IHJldDsKKworCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIE5VTEw7CisKKwlrcmVmX2luaXQoJmN0eC0+ cmVmKTsKKwlJTklUX0xJU1RfSEVBRCgmY3R4LT5saW5rKTsKKwljdHgtPmk5MTUgPSBpOTE1Owor CisJcmV0ID0gaWRhX3NpbXBsZV9nZXQoJmk5MTUtPmNvbnRleHRfaHdfaWRhLAorCQkJICAgICAw LCBNQVhfQ09OVEVYVF9IV19JRCwgR0ZQX0tFUk5FTCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8g ZXJyX2ZyZWU7CisJY3R4LT5od19pZCA9IHJldDsKKworCWlmIChuYW1lKSB7CisJCWN0eC0+bmFt ZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7CisJCWlmICghY3R4LT5uYW1lKQorCQkJZ290 byBlcnJfcHV0OworCisJCWN0eC0+cHBndHQgPSBtb2NrX3BwZ3R0KGk5MTUsIG5hbWUpOworCQlp ZiAoIWN0eC0+cHBndHQpCisJCQlnb3RvIGVycl9wdXQ7CisJfQorCisJcmV0dXJuIGN0eDsKKwor ZXJyX2ZyZWU6CisJa2ZyZWUoY3R4KTsKKwlyZXR1cm4gTlVMTDsKKworZXJyX3B1dDoKKwlpOTE1 X2dlbV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKKwlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgp OworCXJldHVybiBOVUxMOworfQorCit2b2lkIG1vY2tfY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQoreworCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Nsb3NlZChjdHgp OworCisJaTkxNV9wcGd0dF9jbG9zZSgmY3R4LT5wcGd0dC0+YmFzZSk7CisKKwlpOTE1X2dlbV9j b250ZXh0X3B1dChjdHgpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfY29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjQy N2U1YzA5MTZhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfY29udGV4dC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRI RSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX01PQ0tfQ09OVEVYVF9ICisjZGVmaW5l IF9fTU9DS19DT05URVhUX0gKKworc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgorbW9ja19jb250 ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCSAgICAgY29uc3QgY2hhciAqbmFt ZSk7CisKK3ZvaWQgbW9ja19jb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpOworCisjZW5kaWYgLyogIV9fTU9DS19DT05URVhUX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKaW5kZXggNGEwOTBiYmU4MDdiLi44ZDViYTAz NzA2NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2Vu Z2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j CkBAIC0yMywzMyArMjMsMTg1IEBACiAgKi8KIAogI2luY2x1ZGUgIm1vY2tfZW5naW5lLmgiCisj aW5jbHVkZSAibW9ja19yZXF1ZXN0LmgiCiAKLXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tf ZW5naW5lKGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IG1vY2tfcmVxdWVzdCAqZmly c3RfcmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJcmV0dXJuIGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5n aW5lLT5od19xdWV1ZSwKKwkJCQkJc3RydWN0IG1vY2tfcmVxdWVzdCwKKwkJCQkJbGluayk7Cit9 CisKK3N0YXRpYyB2b2lkIGh3X2RlbGF5X2NvbXBsZXRlKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sK KwlzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSA9ICh0eXBlb2YoZW5naW5lKSlkYXRhOworCXN0 cnVjdCBtb2NrX3JlcXVlc3QgKnJlcXVlc3Q7CisKKwlzcGluX2xvY2soJmVuZ2luZS0+aHdfbG9j ayk7CisKKwlyZXF1ZXN0ID0gZmlyc3RfcmVxdWVzdChlbmdpbmUpOworCWlmIChyZXF1ZXN0KSB7 CisJCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpbmspOworCQltb2NrX3NlcW5vX2FkdmFuY2Uo JmVuZ2luZS0+YmFzZSwgcmVxdWVzdC0+YmFzZS5nbG9iYWxfc2Vxbm8pOworCX0KKworCXJlcXVl c3QgPSBmaXJzdF9yZXF1ZXN0KGVuZ2luZSk7CisJaWYgKHJlcXVlc3QpCisJCW1vZF90aW1lcigm ZW5naW5lLT5od19kZWxheSwgamlmZmllcyArIHJlcXVlc3QtPmRlbGF5KTsKKworCXNwaW5fdW5s b2NrKCZlbmdpbmUtPmh3X2xvY2spOworfQorCitzdGF0aWMgaW50IG1vY2tfY29udGV4dF9waW4o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJICAgIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCit7CisJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4KTsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgbW9ja19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKKwkJCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQorewor CWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgbW9ja19yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3Qg bW9ja19yZXF1ZXN0ICptb2NrID0gY29udGFpbmVyX29mKHJlcXVlc3QsIHR5cGVvZigqbW9jayks IGJhc2UpOworCisJSU5JVF9MSVNUX0hFQUQoJm1vY2stPmxpbmspOworCW1vY2stPmRlbGF5ID0g MDsKKworCXJlcXVlc3QtPnJpbmcgPSByZXF1ZXN0LT5lbmdpbmUtPmJ1ZmZlcjsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBtb2NrX2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0LAorCQkJICAgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBtb2NrX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QsCisJCQkJIHUzMiAqZmxhZ3MpCit7Cit9CisKK3N0YXRpYyB2 b2lkIG1vY2tfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQoreworCXN0cnVjdCBtb2NrX3JlcXVlc3QgKm1vY2sgPSBjb250YWluZXJfb2YocmVxdWVz dCwgdHlwZW9mKCptb2NrKSwgYmFzZSk7CisJc3RydWN0IG1vY2tfZW5naW5lICplbmdpbmUgPQor CQljb250YWluZXJfb2YocmVxdWVzdC0+ZW5naW5lLCB0eXBlb2YoKmVuZ2luZSksIGJhc2UpOwor CisJaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQocmVxdWVzdCk7CisJR0VNX0JVR19PTighcmVxdWVz dC0+Z2xvYmFsX3NlcW5vKTsKKworCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+aHdfbG9jayk7CisJ bGlzdF9hZGRfdGFpbCgmbW9jay0+bGluaywgJmVuZ2luZS0+aHdfcXVldWUpOworCWlmIChtb2Nr LT5saW5rLnByZXYgPT0gJmVuZ2luZS0+aHdfcXVldWUpCisJCW1vZF90aW1lcigmZW5naW5lLT5o d19kZWxheSwgamlmZmllcyArIG1vY2stPmRlbGF5KTsKKwlzcGluX3VubG9ja19pcnEoJmVuZ2lu ZS0+aHdfbG9jayk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfcmluZyAqbW9ja19yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwljb25zdCB1bnNpZ25lZCBsb25nIHN6 ID0gcm91bmR1cF9wb3dfb2ZfdHdvKHNpemVvZihzdHJ1Y3QgaW50ZWxfcmluZykpOworCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nOworCisJcmluZyA9IGt6YWxsb2Moc2l6ZW9mKCpyaW5nKSArIHN6 LCBHRlBfS0VSTkVMKTsKKwlpZiAoIXJpbmcpCisJCXJldHVybiBOVUxMOworCisJcmluZy0+ZW5n aW5lID0gZW5naW5lOworCXJpbmctPnNpemUgPSBzejsKKwlyaW5nLT5lZmZlY3RpdmVfc2l6ZSA9 IHN6OworCXJpbmctPnZhZGRyID0gKHZvaWQgKikocmluZyArIDEpOworCisJSU5JVF9MSVNUX0hF QUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7CisJcmluZy0+bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsK KwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKKworCXJldHVybiByaW5nOworfQorCitz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptb2NrX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKKwkJCQkgICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgbW9ja19lbmdp bmUgKmVuZ2luZTsKIAlzdGF0aWMgaW50IGlkOwogCiAJZW5naW5lID0ga3phbGxvYyhzaXplb2Yo KmVuZ2luZSkgKyBQQUdFX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmICghZW5naW5lKQogCQlyZXR1 cm4gTlVMTDsKIAotCS8qIG1pbmltYWwgZW5naW5lIHNldHVwIGZvciBzZXFubyAqLwotCWVuZ2lu ZS0+bmFtZSA9IG5hbWU7Ci0JZW5naW5lLT5pZCA9IGlkKys7Ci0JZW5naW5lLT5zdGF0dXNfcGFn ZS5wYWdlX2FkZHIgPSAodm9pZCAqKShlbmdpbmUgKyAxKTsKKwllbmdpbmUtPmJhc2UuYnVmZmVy ID0gbW9ja19yaW5nKCZlbmdpbmUtPmJhc2UpOworCWlmICghZW5naW5lLT5iYXNlLmJ1ZmZlcikg eworCQlrZnJlZShlbmdpbmUpOworCQlyZXR1cm4gTlVMTDsKKwl9CiAKLQkvKiBtaW5pbWFsIGJy ZWFkY3J1bWJzIGluaXQgKi8KLQlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5icmVhZGNydW1icy5s b2NrKTsKLQllbmdpbmUtPmJyZWFkY3J1bWJzLm1vY2sgPSB0cnVlOworCS8qIG1pbmltYWwgZW5n aW5lIHNldHVwIGZvciByZXF1ZXN0cyAqLworCWVuZ2luZS0+YmFzZS5pOTE1ID0gaTkxNTsKKwll bmdpbmUtPmJhc2UubmFtZSA9IG5hbWU7CisJZW5naW5lLT5iYXNlLmlkID0gaWQrKzsKKwllbmdp bmUtPmJhc2Uuc3RhdHVzX3BhZ2UucGFnZV9hZGRyID0gKHZvaWQgKikoZW5naW5lICsgMSk7CiAK LQlyZXR1cm4gZW5naW5lOworCWVuZ2luZS0+YmFzZS5jb250ZXh0X3BpbiA9IG1vY2tfY29udGV4 dF9waW47CisJZW5naW5lLT5iYXNlLmNvbnRleHRfdW5waW4gPSBtb2NrX2NvbnRleHRfdW5waW47 CisJZW5naW5lLT5iYXNlLnJlcXVlc3RfYWxsb2MgPSBtb2NrX3JlcXVlc3RfYWxsb2M7CisJZW5n aW5lLT5iYXNlLmVtaXRfZmx1c2ggPSBtb2NrX2VtaXRfZmx1c2g7CisJZW5naW5lLT5iYXNlLmVt aXRfYnJlYWRjcnVtYiA9IG1vY2tfZW1pdF9icmVhZGNydW1iOworCWVuZ2luZS0+YmFzZS5zdWJt aXRfcmVxdWVzdCA9IG1vY2tfc3VibWl0X3JlcXVlc3Q7CisKKwllbmdpbmUtPmJhc2UudGltZWxp bmUgPQorCQkmaTkxNS0+Z3QuZ2xvYmFsX3RpbWVsaW5lLmVuZ2luZVtlbmdpbmUtPmJhc2UuaWRd OworCisJaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoJmVuZ2luZS0+YmFzZSk7CisJZW5n aW5lLT5iYXNlLmJyZWFkY3J1bWJzLm1vY2sgPSB0cnVlOyAvKiBwcmV2ZW50IHRvdWNoaW5nIEhX IGZvciBpcnFzICovCisKKwkvKiBmYWtlIGh3IHF1ZXVlICovCisJc3Bpbl9sb2NrX2luaXQoJmVu Z2luZS0+aHdfbG9jayk7CisJc2V0dXBfdGltZXIoJmVuZ2luZS0+aHdfZGVsYXksCisJCSAgICBo d19kZWxheV9jb21wbGV0ZSwKKwkJICAgICh1bnNpZ25lZCBsb25nKWVuZ2luZSk7CisJSU5JVF9M SVNUX0hFQUQoJmVuZ2luZS0+aHdfcXVldWUpOworCisJcmV0dXJuICZlbmdpbmUtPmJhc2U7CiB9 CiAKIHZvaWQgbW9ja19lbmdpbmVfZmx1c2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogeworCXN0cnVjdCBtb2NrX2VuZ2luZSAqbW9jayA9CisJCWNvbnRhaW5lcl9vZihlbmdpbmUs IHR5cGVvZigqbW9jayksIGJhc2UpOworCXN0cnVjdCBtb2NrX3JlcXVlc3QgKnJlcXVlc3QsICpy bjsKKworCWRlbF90aW1lcl9zeW5jKCZtb2NrLT5od19kZWxheSk7CisKKwlzcGluX2xvY2tfaXJx KCZtb2NrLT5od19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVxdWVzdCwgcm4s ICZtb2NrLT5od19xdWV1ZSwgbGluaykgeworCQlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5saW5r KTsKKwkJbW9ja19zZXFub19hZHZhbmNlKCZtb2NrLT5iYXNlLCByZXF1ZXN0LT5iYXNlLmdsb2Jh bF9zZXFubyk7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmbW9jay0+aHdfbG9jayk7CiB9CiAKIHZv aWQgbW9ja19lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewog CWludGVsX3dyaXRlX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0lOREVYLCAwKTsK IH0KKwordm9pZCBtb2NrX2VuZ2luZV9mcmVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKK3sKKwlzdHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQorCQljb250YWluZXJfb2YoZW5naW5l LCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKKworCUdFTV9CVUdfT04odGltZXJfcGVuZGluZygmbW9j ay0+aHdfZGVsYXkpKTsKKworCWlmIChlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KQorCQll bmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0 KTsKKworCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVuZ2luZSk7CisKKwlrZnJlZShl bmdpbmUtPmJ1ZmZlcik7CisJa2ZyZWUoZW5naW5lKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmgKaW5kZXggOWNmZTk2NzFmODYwLi5lNWUyNDAyMTZi YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2lu ZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5oCkBA IC0yNSw5ICsyNSwyNSBAQAogI2lmbmRlZiBfX01PQ0tfRU5HSU5FX0hfXwogI2RlZmluZSBfX01P Q0tfRU5HSU5FX0hfXwogCi1zdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptb2NrX2VuZ2luZShjb25z dCBjaGFyICpuYW1lKTsKKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgv c3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorCisjaW5jbHVkZSAiLi4vaW50 ZWxfcmluZ2J1ZmZlci5oIgorCitzdHJ1Y3QgbW9ja19lbmdpbmUgeworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgYmFzZTsKKworCXNwaW5sb2NrX3QgaHdfbG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFk IGh3X3F1ZXVlOworCXN0cnVjdCB0aW1lcl9saXN0IGh3X2RlbGF5OworfTsKKworc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CisJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZCBtb2NrX2VuZ2luZV9mbHVzaChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogdm9pZCBtb2NrX2VuZ2luZV9yZXNldChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBtb2NrX2VuZ2luZV9mcmVlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtb2NrX3Nl cW5vX2FkdmFuY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMK aW5kZXggZGJkMzJiMTI1ZDE1Li42YTgyNThlYWNkY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKQEAgLTI0LDE0ICsyNCw0NiBAQAog CiAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgogCisjaW5jbHVkZSAibW9ja19lbmdpbmUu aCIKKyNpbmNsdWRlICJtb2NrX2NvbnRleHQuaCIKKyNpbmNsdWRlICJtb2NrX3JlcXVlc3QuaCIK ICNpbmNsdWRlICJtb2NrX2dlbV9kZXZpY2UuaCIKICNpbmNsdWRlICJtb2NrX2dlbV9vYmplY3Qu aCIKICNpbmNsdWRlICJtb2NrX2d0dC5oIgogCit2b2lkIG1vY2tfZGV2aWNlX2ZsdXNoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpCisJCW1vY2tfZW5naW5lX2ZsdXNoKGVuZ2luZSk7CisKKwlpOTE1X2dlbV9yZXRpcmVf cmVxdWVzdHMoaTkxNSk7Cit9CisKIHN0YXRpYyB2b2lkIG1vY2tfZGV2aWNlX3JlbGVhc2Uoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7CisKKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKKwltb2NrX2RldmljZV9mbHVzaChpOTE1KTsKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwogCisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5yZXRp cmVfd29yayk7CisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpOTE1LT5ndC5pZGxlX3dvcmsp OworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpCisJCW1vY2tfZW5naW5lX2ZyZWUoZW5naW5lKTsKKwlpOTE1 X2dlbV9jb250ZXh0X2ZpbmkoaTkxNSk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKKworCWRyYWluX3dvcmtxdWV1ZShpOTE1LT53cSk7CiAJaTkxNV9nZW1fZHJhaW5f ZnJlZWRfb2JqZWN0cyhpOTE1KTsKIAogCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwpAQCAtMzksNiArNzEsMTAgQEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWk5MTVfZ2VtX3RpbWVsaW5lX2ZpbmkoJmk5MTUtPmd0 Lmdsb2JhbF90aW1lbGluZSk7CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKIAorCWRlc3Ryb3lfd29ya3F1ZXVlKGk5MTUtPndxKTsKKworCWttZW1fY2FjaGVfZGVzdHJv eShpOTE1LT5kZXBlbmRlbmNpZXMpOworCWttZW1fY2FjaGVfZGVzdHJveShpOTE1LT5yZXF1ZXN0 cyk7CiAJa21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPnZtYXMpOwogCWttZW1fY2FjaGVfZGVzdHJv eShpOTE1LT5vYmplY3RzKTsKIApAQCAtNjIsOSArOTgsMTkgQEAgc3RhdGljIHZvaWQgcmVsZWFz ZV9kZXYoc3RydWN0IGRldmljZSAqZGV2KQogCWtmcmVlKHBkZXYpOwogfQogCitzdGF0aWMgdm9p ZCBtb2NrX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQorewor fQorCitzdGF0aWMgdm9pZCBtb2NrX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKK3sKK30KKwogc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2Rldmlj ZSh2b2lkKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlzdHJ1Y3Qg cGNpX2RldiAqcGRldjsKIAlpbnQgZXJyOwogCkBAIC05OCwzNiArMTQ0LDgxIEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKIAogCXNwaW5fbG9ja19pbml0 KCZpOTE1LT5tbS5vYmplY3Rfc3RhdF9sb2NrKTsKIAorCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmk5 MTUtPmdwdV9lcnJvci53YWl0X3F1ZXVlKTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpOTE1LT5n cHVfZXJyb3IucmVzZXRfcXVldWUpOworCisJaTkxNS0+d3EgPSBhbGxvY19vcmRlcmVkX3dvcmtx dWV1ZSgibW9jayIsIDApOworCWlmICghaTkxNS0+d3EpCisJCWdvdG8gcHV0X2RldmljZTsKKwog CUlOSVRfV09SSygmaTkxNS0+bW0uZnJlZV93b3JrLCBfX2k5MTVfZ2VtX2ZyZWVfd29yayk7CiAJ aW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5tbS5mcmVlX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZp OTE1LT5tbS51bmJvdW5kX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5tbS5ib3VuZF9s aXN0KTsKIAorCWlkYV9pbml0KCZpOTE1LT5jb250ZXh0X2h3X2lkYSk7CisKKwlJTklUX0RFTEFZ RURfV09SSygmaTkxNS0+Z3QucmV0aXJlX3dvcmssIG1vY2tfcmV0aXJlX3dvcmtfaGFuZGxlcik7 CisJSU5JVF9ERUxBWUVEX1dPUksoJmk5MTUtPmd0LmlkbGVfd29yaywgbW9ja19pZGxlX3dvcmtf aGFuZGxlcik7CisKKwlpOTE1LT5ndC5hd2FrZSA9IHRydWU7CisKIAlpOTE1LT5vYmplY3RzID0g S01FTV9DQUNIRShtb2NrX29iamVjdCwgU0xBQl9IV0NBQ0hFX0FMSUdOKTsKIAlpZiAoIWk5MTUt Pm9iamVjdHMpCi0JCWdvdG8gcHV0X2RldmljZTsKKwkJZ290byBlcnJfd3E7CiAKIAlpOTE1LT52 bWFzID0gS01FTV9DQUNIRShpOTE1X3ZtYSwgU0xBQl9IV0NBQ0hFX0FMSUdOKTsKIAlpZiAoIWk5 MTUtPnZtYXMpCiAJCWdvdG8gZXJyX29iamVjdHM7CiAKKwlpOTE1LT5yZXF1ZXN0cyA9IEtNRU1f Q0FDSEUobW9ja19yZXF1ZXN0LAorCQkJCSAgICBTTEFCX0hXQ0FDSEVfQUxJR04gfAorCQkJCSAg ICBTTEFCX1JFQ0xBSU1fQUNDT1VOVCB8CisJCQkJICAgIFNMQUJfREVTVFJPWV9CWV9SQ1UpOwor CWlmICghaTkxNS0+cmVxdWVzdHMpCisJCWdvdG8gZXJyX3ZtYXM7CisKKwlpOTE1LT5kZXBlbmRl bmNpZXMgPSBLTUVNX0NBQ0hFKGk5MTVfZGVwZW5kZW5jeSwKKwkJCQkJU0xBQl9IV0NBQ0hFX0FM SUdOIHwKKwkJCQkJU0xBQl9SRUNMQUlNX0FDQ09VTlQpOworCWlmICghaTkxNS0+ZGVwZW5kZW5j aWVzKQorCQlnb3RvIGVycl9yZXF1ZXN0czsKKwogCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC50aW1lbGluZXMpOwogCWVyciA9 IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXRfX2dsb2JhbChpOTE1KTsKIAlpZiAoZXJyKSB7CiAJCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JCWdvdG8gZXJyX3ZtYXM7CisJ CWdvdG8gZXJyX2RlcGVuZGVuY2llczsKIAl9CiAKIAltb2NrX2luaXRfZ2d0dChpOTE1KTsKIAlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCisJbWt3cml0ZV9kZXZpY2Vf aW5mbyhpOTE1KS0+cmluZ19tYXNrID0gQklUKDApOworCWk5MTUtPmVuZ2luZVtSQ1NdID0gbW9j a19lbmdpbmUoaTkxNSwgIm1vY2siKTsKKwlpZiAoIWk5MTUtPmVuZ2luZVtSQ1NdKQorCQlnb3Rv IGVycl9kZXBlbmRlbmNpZXM7CisKKwlpOTE1LT5rZXJuZWxfY29udGV4dCA9IG1vY2tfY29udGV4 dChpOTE1LCBOVUxMKTsKKwlpZiAoIWk5MTUtPmtlcm5lbF9jb250ZXh0KQorCQlnb3RvIGVycl9l bmdpbmU7CisKIAlyZXR1cm4gaTkxNTsKIAorZXJyX2VuZ2luZToKKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkKKwkJbW9ja19lbmdpbmVfZnJlZShlbmdpbmUpOworZXJyX2RlcGVu ZGVuY2llczoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+ZGVwZW5kZW5jaWVzKTsKK2Vycl9y ZXF1ZXN0czoKKwlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+cmVxdWVzdHMpOwogZXJyX3ZtYXM6 CiAJa21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPnZtYXMpOwogZXJyX29iamVjdHM6CiAJa21lbV9j YWNoZV9kZXN0cm95KGk5MTUtPm9iamVjdHMpOworZXJyX3dxOgorCWRlc3Ryb3lfd29ya3F1ZXVl KGk5MTUtPndxKTsKIHB1dF9kZXZpY2U6CiAJcHV0X2RldmljZSgmcGRldi0+ZGV2KTsKIGVycjoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZp Y2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuaApp bmRleCBjNTU3ZTMzYzM5NTMuLjRjY2E0ZDU3ZjUyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuaApAQCAtNCw1ICs0LDYgQEAKIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlOwogCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1f ZGV2aWNlKHZvaWQpOwordm9pZCBtb2NrX2RldmljZV9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7CiAKICNlbmRpZiAvKiAhX19NT0NLX0dFTV9ERVZJQ0VfSF9fICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMjMyNDJkMWI4OGEKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMKQEAgLTAs MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisj aW5jbHVkZSAibW9ja19yZXF1ZXN0LmgiCisKK3N0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq Cittb2NrX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCSAgICAgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmNvbnRleHQsCisJICAgICB1bnNpZ25lZCBsb25nIGRlbGF5 KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKKwlzdHJ1Y3QgbW9j a19yZXF1ZXN0ICptb2NrOworCisJLyogTkIgdGhlIGk5MTUtPnJlcXVlc3RzIHNsYWIgY2FjaGUg aXMgZW5sYXJnZWQgdG8gZml0IG1vY2tfcmVxdWVzdCAqLworCXJlcXVlc3QgPSBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY29udGV4dCk7CisJaWYgKCFyZXF1ZXN0KQorCQlyZXR1cm4g TlVMTDsKKworCW1vY2sgPSBjb250YWluZXJfb2YocmVxdWVzdCwgdHlwZW9mKCptb2NrKSwgYmFz ZSk7CisJbW9jay0+ZGVsYXkgPSBkZWxheTsKKworCXJldHVybiAmbW9jay0+YmFzZTsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNjNzZkNGY0ZWI0ZQotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaApAQCAt MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisK KyNpZm5kZWYgX19NT0NLX1JFUVVFU1RfXworI2RlZmluZSBfX01PQ0tfUkVRVUVTVF9fCisKKyNp bmNsdWRlIDxsaW51eC9saXN0Lmg+CisKKyNpbmNsdWRlICIuLi9pOTE1X2dlbV9yZXF1ZXN0Lmgi CisKK3N0cnVjdCBtb2NrX3JlcXVlc3QgeworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCBi YXNlOworCisJc3RydWN0IGxpc3RfaGVhZCBsaW5rOworCXVuc2lnbmVkIGxvbmcgZGVsYXk7Cit9 OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgorbW9ja19yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj b250ZXh0LAorCSAgICAgdW5zaWduZWQgbG9uZyBkZWxheSk7CisKKyNlbmRpZiAvKiAhX19NT0NL X1JFUVVFU1RfXyAqLwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK