From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 1/2] drm/i915/selftests: Verify the LRC register layout between init and HW Date: Tue, 24 Sep 2019 00:02:08 +0100 Message-ID: <20190923230209.16480-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF3526E9AD for ; Mon, 23 Sep 2019 23:02:24 +0000 (UTC) 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 QmVmb3JlIHdlIHN1Ym1pdCB0aGUgZmlyc3QgY29udGV4dCB0byBIVywgd2UgbmVlZCB0byBjb25z dHJ1Y3QgYSB2YWxpZAppbWFnZSBvZiB0aGUgcmVnaXN0ZXIgc3RhdGUuIFRoaXMgbGF5b3V0IGlz IGRlZmluZWQgYnkgdGhlIEhXIGFuZCBzaG91bGQKbWF0Y2ggdGhlIGxheW91dCBnZW5lcmF0ZWQg YnkgSFcgd2hlbiBpdCBzYXZlcyB0aGUgY29udGV4dCBpbWFnZS4KQXNzZXJ0aW5nIHRoYXQgdGhp cyBzaG91bGQgYmUgZXF1aXZhbGVudCBzaG91bGQgaGVscCBhdm9pZCBhbnkgdW5kZWZpbmVkCmJl aGF2aW91ciBhbmQgdmVyaWZ5IHRoYXQgd2UgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgaW1wb3J0 YW50IQoKT2YgY291cnNlLCBoYXZpbmcgaW5zaXN0ZWQgdGhhdCB0aGUgaW5pdGlhbCByZWdpc3Rl ciBzdGF0ZSB3aXRoaW4gdGhlCkxSQyBzaG91bGQgbWF0Y2ggdGhhdCByZXR1cm5lZCBieSBIVywg d2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpdCBkb2VzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1 b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmll bGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9scmMuYyAgICAgICAgICAgfCA2NjkgKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmggICAgICAgfCAgNjIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICAgICAgICB8IDE0MiArKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgMzUgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5oICAgICAgICAgICAgICB8ICAgNSArLQogLi4uL2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmggIHwgICAxICsKIDcgZmlsZXMgY2hhbmdl ZCwgNjQ5IGluc2VydGlvbnMoKyksIDI2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA0YTM0YzRmNjIwNjUuLmY3YmEwOTM1 ZWQ2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRl eHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCkBA IC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAogCW9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0 YXRlKSArCiAJCSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKwotCQkgKENUWF9SX1BXUl9DTEtf U1RBVEUgKyAxKSAqIDQ7CisJCSBDVFhfUl9QV1JfQ0xLX1NUQVRFICogNDsKIAogCSpjcysrID0g TUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKIAkqY3MrKyA9IGxvd2VyXzMy X2JpdHMob2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKaW5kZXggNmNmZGMw ZjlmMmI5Li5jMmMzZTU3NGFmM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCkBA IC0yMzAsOSArMjMwLDEwIEBAIHN0YXRpYyBpbnQgX19leGVjbGlzdHNfY29udGV4dF9hbGxvYyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwogCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodTMyICpy ZWdfc3RhdGUsCi0JCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCi0JCQkJICAgICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkJICAgICBzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyk7CisJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywKKwkJCQkgICAgIGJvb2wgY2xvc2UpOwogCiBzdGF0 aWMgdm9pZCBtYXJrX2VpbyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKQEAgLTQ3MSw2ICs0 NzIsNDExIEBAIGxyY19kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdTMy ICpzZXRfb2Zmc2V0cyh1MzIgKnJlZ3MsCisJCQljb25zdCB1OCAqZGF0YSwKKwkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKKyNkZWZpbmUgTk9QKHgpIChCSVQoNykgfCAo eCkpCisjZGVmaW5lIExSSShjb3VudCwgZmxhZ3MpICgoZmxhZ3MpIDw8IDYgfCAoY291bnQpKQor I2RlZmluZSBQT1NURUQgQklUKDApCisjZGVmaW5lIFJFRyh4KSAoKCh4KSA+PiAyKSB8IEJVSUxE X0JVR19PTl9aRVJPKHggPj0gMHgyMDApKQorI2RlZmluZSBSRUcxNih4KSBcCisJKCgoeCkgPj4g OSkgfCBCSVQoNykgfCBCVUlMRF9CVUdfT05fWkVSTyh4ID49IDB4MTAwMDApKSwgXAorCSgoKHgp ID4+IDIpICYgMHg3ZikKKyNkZWZpbmUgRU5EKCkgMAoreworCWNvbnN0IHUzMiBiYXNlID0gZW5n aW5lLT5tbWlvX2Jhc2U7CisKKwl3aGlsZSAoKmRhdGEpIHsKKwkJdTggY291bnQsIGZsYWdzOwor CisJCWlmICgqZGF0YSAmIEJJVCg3KSkgeyAvKiBza2lwICovCisJCQlyZWdzICs9ICpkYXRhKysg JiB+QklUKDcpOworCQkJY29udGludWU7CisJCX0KKworCQljb3VudCA9ICpkYXRhICYgMHgzZjsK KwkJZmxhZ3MgPSAqZGF0YSA+PiA2OworCQlkYXRhKys7CisKKwkJKnJlZ3MgPSBNSV9MT0FEX1JF R0lTVEVSX0lNTShjb3VudCk7CisJCWlmIChmbGFncyAmIFBPU1RFRCkKKwkJCSpyZWdzIHw9IE1J X0xSSV9GT1JDRV9QT1NURUQ7CisJCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMSkK KwkJCSpyZWdzIHw9IE1JX0xSSV9DU19NTUlPOworCQlyZWdzKys7CisKKwkJR0VNX0JVR19PTigh Y291bnQpOworCQlkbyB7CisJCQl1MzIgb2Zmc2V0ID0gMDsKKwkJCXU4IHY7CisKKwkJCWRvIHsK KwkJCQl2ID0gKmRhdGErKzsKKwkJCQlvZmZzZXQgPDw9IDc7CisJCQkJb2Zmc2V0IHw9IHYgJiB+ QklUKDcpOworCQkJfSB3aGlsZSAodiAmIEJJVCg3KSk7CisKKwkJCSpyZWdzID0gYmFzZSArIChv ZmZzZXQgPDwgMik7CisJCQlyZWdzICs9IDI7CisJCX0gd2hpbGUgKC0tY291bnQpOworCX0KKwor CXJldHVybiByZWdzOworfQorCitzdGF0aWMgY29uc3QgdTggZ2VuOF94Y3Nfb2Zmc2V0c1tdID0g eworCU5PUCgxKSwKKwlMUkkoMTEsIDApLAorCVJFRzE2KDB4MjQ0KSwKKwlSRUcoMHgwMzQpLAor CVJFRygweDAzMCksCisJUkVHKDB4MDM4KSwKKwlSRUcoMHgwM2MpLAorCVJFRygweDE2OCksCisJ UkVHKDB4MTQwKSwKKwlSRUcoMHgxMTApLAorCVJFRygweDExYyksCisJUkVHKDB4MTE0KSwKKwlS RUcoMHgxMTgpLAorCisJTk9QKDkpLAorCUxSSSg5LCAwKSwKKwlSRUcxNigweDNhOCksCisJUkVH MTYoMHgyOGMpLAorCVJFRzE2KDB4Mjg4KSwKKwlSRUcxNigweDI4NCksCisJUkVHMTYoMHgyODAp LAorCVJFRzE2KDB4MjdjKSwKKwlSRUcxNigweDI3OCksCisJUkVHMTYoMHgyNzQpLAorCVJFRzE2 KDB4MjcwKSwKKworCU5PUCgxMyksCisJTFJJKDIsIDApLAorCVJFRzE2KDB4MjAwKSwKKwlSRUco MHgwMjgpLAorCisJRU5EKCksCit9OworCitzdGF0aWMgY29uc3QgdTggZ2VuOV94Y3Nfb2Zmc2V0 c1tdID0geworCU5PUCgxKSwKKwlMUkkoMTQsIFBPU1RFRCksCisJUkVHMTYoMHgyNDQpLAorCVJF RygweDAzNCksCisJUkVHKDB4MDMwKSwKKwlSRUcoMHgwMzgpLAorCVJFRygweDAzYyksCisJUkVH KDB4MTY4KSwKKwlSRUcoMHgxNDApLAorCVJFRygweDExMCksCisJUkVHKDB4MTFjKSwKKwlSRUco MHgxMTQpLAorCVJFRygweDExOCksCisJUkVHKDB4MWMwKSwKKwlSRUcoMHgxYzQpLAorCVJFRygw eDFjOCksCisKKwlOT1AoMyksCisJTFJJKDksIFBPU1RFRCksCisJUkVHMTYoMHgzYTgpLAorCVJF RzE2KDB4MjhjKSwKKwlSRUcxNigweDI4OCksCisJUkVHMTYoMHgyODQpLAorCVJFRzE2KDB4Mjgw KSwKKwlSRUcxNigweDI3YyksCisJUkVHMTYoMHgyNzgpLAorCVJFRzE2KDB4Mjc0KSwKKwlSRUcx NigweDI3MCksCisKKwlOT1AoMTMpLAorCUxSSSgxLCBQT1NURUQpLAorCVJFRzE2KDB4MjAwKSwK KworCU5PUCgxMyksCisJTFJJKDQ0LCBQT1NURUQpLAorCVJFRygweDAyOCksCisJUkVHKDB4MDlj KSwKKwlSRUcoMHgwYzApLAorCVJFRygweDE3OCksCisJUkVHKDB4MTdjKSwKKwlSRUcxNigweDM1 OCksCisJUkVHKDB4MTcwKSwKKwlSRUcoMHgxNTApLAorCVJFRygweDE1NCksCisJUkVHKDB4MTU4 KSwKKwlSRUcxNigweDQxYyksCisJUkVHMTYoMHg2MDApLAorCVJFRzE2KDB4NjA0KSwKKwlSRUcx NigweDYwOCksCisJUkVHMTYoMHg2MGMpLAorCVJFRzE2KDB4NjEwKSwKKwlSRUcxNigweDYxNCks CisJUkVHMTYoMHg2MTgpLAorCVJFRzE2KDB4NjFjKSwKKwlSRUcxNigweDYyMCksCisJUkVHMTYo MHg2MjQpLAorCVJFRzE2KDB4NjI4KSwKKwlSRUcxNigweDYyYyksCisJUkVHMTYoMHg2MzApLAor CVJFRzE2KDB4NjM0KSwKKwlSRUcxNigweDYzOCksCisJUkVHMTYoMHg2M2MpLAorCVJFRzE2KDB4 NjQwKSwKKwlSRUcxNigweDY0NCksCisJUkVHMTYoMHg2NDgpLAorCVJFRzE2KDB4NjRjKSwKKwlS RUcxNigweDY1MCksCisJUkVHMTYoMHg2NTQpLAorCVJFRzE2KDB4NjU4KSwKKwlSRUcxNigweDY1 YyksCisJUkVHMTYoMHg2NjApLAorCVJFRzE2KDB4NjY0KSwKKwlSRUcxNigweDY2OCksCisJUkVH MTYoMHg2NmMpLAorCVJFRzE2KDB4NjcwKSwKKwlSRUcxNigweDY3NCksCisJUkVHMTYoMHg2Nzgp LAorCVJFRzE2KDB4NjdjKSwKKwlSRUcoMHgwNjgpLAorCisJRU5EKCksCit9OworCitzdGF0aWMg Y29uc3QgdTggZ2VuMTJfeGNzX29mZnNldHNbXSA9IHsKKwlOT1AoMSksCisJTFJJKDEzLCBQT1NU RUQpLAorCVJFRzE2KDB4MjQ0KSwKKwlSRUcoMHgwMzQpLAorCVJFRygweDAzMCksCisJUkVHKDB4 MDM4KSwKKwlSRUcoMHgwM2MpLAorCVJFRygweDE2OCksCisJUkVHKDB4MTQwKSwKKwlSRUcoMHgx MTApLAorCVJFRygweDFjMCksCisJUkVHKDB4MWM0KSwKKwlSRUcoMHgxYzgpLAorCVJFRygweDE4 MCksCisJUkVHMTYoMHgyYjQpLAorCisJTk9QKDUpLAorCUxSSSg5LCBQT1NURUQpLAorCVJFRzE2 KDB4M2E4KSwKKwlSRUcxNigweDI4YyksCisJUkVHMTYoMHgyODgpLAorCVJFRzE2KDB4Mjg0KSwK KwlSRUcxNigweDI4MCksCisJUkVHMTYoMHgyN2MpLAorCVJFRzE2KDB4Mjc4KSwKKwlSRUcxNigw eDI3NCksCisJUkVHMTYoMHgyNzApLAorCisJTk9QKDEzKSwKKwlMUkkoMiwgUE9TVEVEKSwKKwlS RUcxNigweDIwMCksCisJUkVHMTYoMHgyMDQpLAorCisJTk9QKDExKSwKKwlMUkkoNTAsIFBPU1RF RCksCisJUkVHMTYoMHg1ODgpLAorCVJFRzE2KDB4NTg4KSwKKwlSRUcxNigweDU4OCksCisJUkVH MTYoMHg1ODgpLAorCVJFRzE2KDB4NTg4KSwKKwlSRUcxNigweDU4OCksCisJUkVHKDB4MDI4KSwK KwlSRUcoMHgwOWMpLAorCVJFRygweDBjMCksCisJUkVHKDB4MTc4KSwKKwlSRUcoMHgxN2MpLAor CVJFRzE2KDB4MzU4KSwKKwlSRUcoMHgxNzApLAorCVJFRygweDE1MCksCisJUkVHKDB4MTU0KSwK KwlSRUcoMHgxNTgpLAorCVJFRzE2KDB4NDFjKSwKKwlSRUcxNigweDYwMCksCisJUkVHMTYoMHg2 MDQpLAorCVJFRzE2KDB4NjA4KSwKKwlSRUcxNigweDYwYyksCisJUkVHMTYoMHg2MTApLAorCVJF RzE2KDB4NjE0KSwKKwlSRUcxNigweDYxOCksCisJUkVHMTYoMHg2MWMpLAorCVJFRzE2KDB4NjIw KSwKKwlSRUcxNigweDYyNCksCisJUkVHMTYoMHg2MjgpLAorCVJFRzE2KDB4NjJjKSwKKwlSRUcx NigweDYzMCksCisJUkVHMTYoMHg2MzQpLAorCVJFRzE2KDB4NjM4KSwKKwlSRUcxNigweDYzYyks CisJUkVHMTYoMHg2NDApLAorCVJFRzE2KDB4NjQ0KSwKKwlSRUcxNigweDY0OCksCisJUkVHMTYo MHg2NGMpLAorCVJFRzE2KDB4NjUwKSwKKwlSRUcxNigweDY1NCksCisJUkVHMTYoMHg2NTgpLAor CVJFRzE2KDB4NjVjKSwKKwlSRUcxNigweDY2MCksCisJUkVHMTYoMHg2NjQpLAorCVJFRzE2KDB4 NjY4KSwKKwlSRUcxNigweDY2YyksCisJUkVHMTYoMHg2NzApLAorCVJFRzE2KDB4Njc0KSwKKwlS RUcxNigweDY3OCksCisJUkVHMTYoMHg2N2MpLAorCVJFRygweDA2OCksCisKKwlFTkQoKSwKK307 CisKK3N0YXRpYyBjb25zdCB1OCBnZW44X3Jjc19vZmZzZXRzW10gPSB7CisJTk9QKDEpLAorCUxS SSgxNCwgUE9TVEVEKSwKKwlSRUcxNigweDI0NCksCisJUkVHKDB4MDM0KSwKKwlSRUcoMHgwMzAp LAorCVJFRygweDAzOCksCisJUkVHKDB4MDNjKSwKKwlSRUcoMHgxNjgpLAorCVJFRygweDE0MCks CisJUkVHKDB4MTEwKSwKKwlSRUcoMHgxMWMpLAorCVJFRygweDExNCksCisJUkVHKDB4MTE4KSwK KwlSRUcoMHgxYzApLAorCVJFRygweDFjNCksCisJUkVHKDB4MWM4KSwKKworCU5PUCgzKSwKKwlM UkkoOSwgUE9TVEVEKSwKKwlSRUcxNigweDNhOCksCisJUkVHMTYoMHgyOGMpLAorCVJFRzE2KDB4 Mjg4KSwKKwlSRUcxNigweDI4NCksCisJUkVHMTYoMHgyODApLAorCVJFRzE2KDB4MjdjKSwKKwlS RUcxNigweDI3OCksCisJUkVHMTYoMHgyNzQpLAorCVJFRzE2KDB4MjcwKSwKKworCU5PUCgxMyks CisJTFJJKDEsIDApLAorCVJFRygweDBjOCksCisKKwlFTkQoKSwKK307CisKK3N0YXRpYyBjb25z dCB1OCBnZW4xMV9yY3Nfb2Zmc2V0c1tdID0geworCU5PUCgxKSwKKwlMUkkoMTUsIFBPU1RFRCks CisJUkVHMTYoMHgyNDQpLAorCVJFRygweDAzNCksCisJUkVHKDB4MDMwKSwKKwlSRUcoMHgwMzgp LAorCVJFRygweDAzYyksCisJUkVHKDB4MTY4KSwKKwlSRUcoMHgxNDApLAorCVJFRygweDExMCks CisJUkVHKDB4MTFjKSwKKwlSRUcoMHgxMTQpLAorCVJFRygweDExOCksCisJUkVHKDB4MWMwKSwK KwlSRUcoMHgxYzQpLAorCVJFRygweDFjOCksCisJUkVHKDB4MTgwKSwKKworCU5PUCgxKSwKKwlM UkkoOSwgUE9TVEVEKSwKKwlSRUcxNigweDNhOCksCisJUkVHMTYoMHgyOGMpLAorCVJFRzE2KDB4 Mjg4KSwKKwlSRUcxNigweDI4NCksCisJUkVHMTYoMHgyODApLAorCVJFRzE2KDB4MjdjKSwKKwlS RUcxNigweDI3OCksCisJUkVHMTYoMHgyNzQpLAorCVJFRzE2KDB4MjcwKSwKKworCUxSSSgxLCBQ T1NURUQpLAorCVJFRygweDFiMCksCisKKwlOT1AoMTApLAorCUxSSSgxLCAwKSwKKwlSRUcoMHgw YzgpLAorCisJRU5EKCksCit9OworCitzdGF0aWMgY29uc3QgdTggZ2VuMTJfcmNzX29mZnNldHNb XSA9IHsKKwlOT1AoMSksCisJTFJJKDEzLCBQT1NURUQpLAorCVJFRzE2KDB4MjQ0KSwKKwlSRUco MHgwMzQpLAorCVJFRygweDAzMCksCisJUkVHKDB4MDM4KSwKKwlSRUcoMHgwM2MpLAorCVJFRygw eDE2OCksCisJUkVHKDB4MTQwKSwKKwlSRUcoMHgxMTApLAorCVJFRygweDFjMCksCisJUkVHKDB4 MWM0KSwKKwlSRUcoMHgxYzgpLAorCVJFRygweDE4MCksCisJUkVHMTYoMHgyYjQpLAorCisJTk9Q KDUpLAorCUxSSSg5LCBQT1NURUQpLAorCVJFRzE2KDB4M2E4KSwKKwlSRUcxNigweDI4YyksCisJ UkVHMTYoMHgyODgpLAorCVJFRzE2KDB4Mjg0KSwKKwlSRUcxNigweDI4MCksCisJUkVHMTYoMHgy N2MpLAorCVJFRzE2KDB4Mjc4KSwKKwlSRUcxNigweDI3NCksCisJUkVHMTYoMHgyNzApLAorCisJ TFJJKDMsIFBPU1RFRCksCisJUkVHKDB4MWIwKSwKKwlSRUcxNigweDVhOCksCisJUkVHMTYoMHg1 YWMpLAorCisJTk9QKDYpLAorCUxSSSgxLCAwKSwKKwlSRUcoMHgwYzgpLAorCisJRU5EKCksCit9 OworCisjdW5kZWYgRU5ECisjdW5kZWYgUkVHMTYKKyN1bmRlZiBSRUcKKyN1bmRlZiBMUkkKKyN1 bmRlZiBOT1AKKworc3RhdGljIGNvbnN0IHU4ICpyZWdfb2Zmc2V0cyhjb25zdCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NM QVNTKSB7CisJCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKKwkJCXJldHVybiBn ZW4xMl9yY3Nfb2Zmc2V0czsKKwkJZWxzZSBpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0g MTEpCisJCQlyZXR1cm4gZ2VuMTFfcmNzX29mZnNldHM7CisJCWVsc2UKKwkJCXJldHVybiBnZW44 X3Jjc19vZmZzZXRzOworCX0gZWxzZSB7CisJCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+ PSAxMikKKwkJCXJldHVybiBnZW4xMl94Y3Nfb2Zmc2V0czsKKwkJZWxzZSBpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gOSkKKwkJCXJldHVybiBnZW45X3hjc19vZmZzZXRzOworCQllbHNl CisJCQlyZXR1cm4gZ2VuOF94Y3Nfb2Zmc2V0czsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHVud2lu ZF93YV90YWlsKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewogCXJxLT50YWlsID0gaW50ZWxf cmluZ193cmFwKHJxLT5yaW5nLCBycS0+d2FfdGFpbCAtIFdBX1RBSUxfQllURVMpOwpAQCAtNjU0 LDcgKzEwNjAsNyBAQCBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChjb25zdCBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+ aHdfY29udGV4dDsKIAl1NjQgZGVzYzsKIAotCWNlLT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX1RB SUwgKyAxXSA9CisJY2UtPmxyY19yZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTF0gPQogCQlpbnRlbF9y aW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCk7CiAKIAkvKgpAQCAtODI2LDU0ICsxMjMy LDcgQEAgc3RhdGljIGJvb2wgY2FuX21lcmdlX3JxKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnByZXYsCiBzdGF0aWMgdm9pZCB2aXJ0dWFsX3VwZGF0ZV9yZWdpc3Rlcl9vZmZzZXRzKHUzMiAq cmVncywKIAkJCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQl1MzIg YmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwotCi0JLyogUmVmYWN0b3Igc28gdGhhdCB3ZSBvbmx5 IGhhdmUgb25lIHBsYWNlIHRoYXQga25vd3MgYWxsIHRoZSBvZmZzZXRzISAqLwotCUdFTV9XQVJO X09OKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDEyKTsKLQotCS8qIE11c3QgbWF0Y2ggZXhl Y2xpc3RzX2luaXRfcmVnX3N0YXRlKCkhICovCi0KLQkvKiBDb21tb24gcGFydCAqLwotCXJlZ3Nb Q1RYX0NPTlRFWFRfQ09OVFJPTF0gPQotCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NPTlRF WFRfQ09OVFJPTChiYXNlKSk7Ci0JcmVnc1tDVFhfUklOR19IRUFEXSA9IGk5MTVfbW1pb19yZWdf b2Zmc2V0KFJJTkdfSEVBRChiYXNlKSk7Ci0JcmVnc1tDVFhfUklOR19UQUlMXSA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KFJJTkdfVEFJTChiYXNlKSk7Ci0JcmVnc1tDVFhfUklOR19CVUZGRVJfU1RB UlRdID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19TVEFSVChiYXNlKSk7Ci0JcmVnc1tDVFhf UklOR19CVUZGRVJfQ09OVFJPTF0gPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NUTChiYXNl KSk7Ci0KLQlyZWdzW0NUWF9CQl9IRUFEX1VdID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19C QkFERFJfVURXKGJhc2UpKTsKLQlyZWdzW0NUWF9CQl9IRUFEX0xdID0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQoUklOR19CQkFERFIoYmFzZSkpOwotCXJlZ3NbQ1RYX0JCX1NUQVRFXSA9IGk5MTVfbW1p b19yZWdfb2Zmc2V0KFJJTkdfQkJTVEFURShiYXNlKSk7Ci0KLQlyZWdzW0NUWF9TRUNPTkRfQkJf SEVBRF9VXSA9Ci0JCWk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfU0JCQUREUl9VRFcoYmFzZSkp OwotCXJlZ3NbQ1RYX1NFQ09ORF9CQl9IRUFEX0xdID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklO R19TQkJBRERSKGJhc2UpKTsKLQlyZWdzW0NUWF9TRUNPTkRfQkJfU1RBVEVdID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoUklOR19TQkJTVEFURShiYXNlKSk7Ci0KLQkvKiBQUEdUVCBwYXJ0ICovCi0J cmVnc1tDVFhfQ1RYX1RJTUVTVEFNUF0gPQotCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NU WF9USU1FU1RBTVAoYmFzZSkpOwotCi0JcmVnc1tDVFhfUERQM19VRFddID0gaTkxNV9tbWlvX3Jl Z19vZmZzZXQoR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwgMykpOwotCXJlZ3NbQ1RYX1BEUDNfTERX XSA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDMpKTsKLQly ZWdzW0NUWF9QRFAyX1VEV10gPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VE VyhiYXNlLCAyKSk7Ci0JcmVnc1tDVFhfUERQMl9MRFddID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQo R0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgMikpOwotCXJlZ3NbQ1RYX1BEUDFfVURXXSA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDEpKTsKLQlyZWdzW0NUWF9Q RFAxX0xEV10gPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAx KSk7Ci0JcmVnc1tDVFhfUERQMF9VRFddID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5H X1BEUF9VRFcoYmFzZSwgMCkpOwotCXJlZ3NbQ1RYX1BEUDBfTERXXSA9IGk5MTVfbW1pb19yZWdf b2Zmc2V0KEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDApKTsKLQotCWlmIChlbmdpbmUtPmNsYXNz ID09IFJFTkRFUl9DTEFTUykgewotCQlyZWdzW0NUWF9SQ1NfSU5ESVJFQ1RfQ1RYXSA9Ci0JCQlp OTE1X21taW9fcmVnX29mZnNldChSSU5HX0lORElSRUNUX0NUWChiYXNlKSk7Ci0JCXJlZ3NbQ1RY X1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VUXSA9Ci0JCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5H X0lORElSRUNUX0NUWF9PRkZTRVQoYmFzZSkpOwotCQlyZWdzW0NUWF9CQl9QRVJfQ1RYX1BUUl0g PQotCQkJaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19CQl9QRVJfQ1RYX1BUUihiYXNlKSk7Ci0K LQkJcmVnc1tDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9Ci0JCQlpOTE1X21taW9fcmVnX29mZnNldChH RU44X1JfUFdSX0NMS19TVEFURSk7Ci0JfQorCXNldF9vZmZzZXRzKHJlZ3MsIHJlZ19vZmZzZXRz KGVuZ2luZSksIGVuZ2luZSk7CiB9CiAKIHN0YXRpYyBib29sIHZpcnR1YWxfbWF0Y2hlcyhjb25z dCBzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlLApAQCAtMTczOCw4ICsyMDk3LDggQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQog fQogCiBzdGF0aWMgdm9pZAotX19leGVjbGlzdHNfdXBkYXRlX3JlZ19zdGF0ZShzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCi0JCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK K19fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQg KmNlLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ c3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBjZS0+cmluZzsKIAl1MzIgKnJlZ3MgPSBjZS0+bHJj X3JlZ19zdGF0ZTsKQEAgLTE3NDcsMTYgKzIxMDYsMTYgQEAgX19leGVjbGlzdHNfdXBkYXRlX3Jl Z19zdGF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJR0VNX0JVR19PTighaW50ZWxfcmlu Z19vZmZzZXRfdmFsaWQocmluZywgcmluZy0+aGVhZCkpOwogCUdFTV9CVUdfT04oIWludGVsX3Jp bmdfb2Zmc2V0X3ZhbGlkKHJpbmcsIHJpbmctPnRhaWwpKTsKIAotCXJlZ3NbQ1RYX1JJTkdfQlVG RkVSX1NUQVJUICsgMV0gPSBpOTE1X2dndHRfb2Zmc2V0KHJpbmctPnZtYSk7Ci0JcmVnc1tDVFhf UklOR19IRUFEICsgMV0gPSByaW5nLT5oZWFkOwotCXJlZ3NbQ1RYX1JJTkdfVEFJTCArIDFdID0g cmluZy0+dGFpbDsKKwlyZWdzW0NUWF9SSU5HX0JVRkZFUl9TVEFSVF0gPSBpOTE1X2dndHRfb2Zm c2V0KHJpbmctPnZtYSk7CisJcmVnc1tDVFhfUklOR19IRUFEXSA9IHJpbmctPmhlYWQ7CisJcmVn c1tDVFhfUklOR19UQUlMXSA9IHJpbmctPnRhaWw7CiAKIAkvKiBSUENTICovCiAJaWYgKGVuZ2lu ZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKSB7Ci0JCXJlZ3NbQ1RYX1JfUFdSX0NMS19TVEFURSAr IDFdID0KKwkJcmVnc1tDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9CiAJCQlpbnRlbF9zc2V1X21ha2Vf cnBjcyhlbmdpbmUtPmk5MTUsICZjZS0+c3NldSk7CiAKLQkJaTkxNV9vYV9pbml0X3JlZ19zdGF0 ZShlbmdpbmUsIGNlLCByZWdzKTsKKwkJaTkxNV9vYV9pbml0X3JlZ19zdGF0ZShjZSwgZW5naW5l KTsKIAl9CiB9CiAKQEAgLTI0NjUsNyArMjgyNCw3IEBAIHN0YXRpYyB2b2lkIF9fZXhlY2xpc3Rz X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBzdGFsbGVkKQogCQkg ICAgICAgZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19TVEFURV9QTiAqIFBBR0Vf U0laRSwKIAkJICAgICAgIGVuZ2luZS0+Y29udGV4dF9zaXplIC0gUEFHRV9TSVpFKTsKIAl9Ci0J ZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHJlZ3MsIGNlLCBlbmdpbmUsIGNlLT5yaW5nKTsKKwll eGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywgY2UsIGVuZ2luZSwgY2UtPnJpbmcsIGZhbHNl KTsKIAogb3V0X3JlcGxheToKIAlHRU1fVFJBQ0UoIiVzIHJlcGxheSB7aGVhZDolMDR4LCB0YWls OiUwNHhcbiIsCkBAIC0zMDkyLDcgKzM0NTEsNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19zZXRf ZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCWVu Z2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT047CiAJfQogCi0JaWYgKGVu Z2luZS0+Y2xhc3MgIT0gQ09QWV9FTkdJTkVfQ0xBU1MgJiYgSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPj0gMTIpCisJaWYgKGVuZ2luZS0+Y2xhc3MgIT0gQ09QWV9FTkdJTkVfQ0xBU1MgJiYgSU5U RUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpCiAJCWVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJ TkVfSEFTX1JFTEFUSVZFX01NSU87CiB9CiAKQEAgLTMyNDMsNyArMzYwMiw3IEBAIGludCBpbnRl bF9leGVjbGlzdHNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHUzMiBpbnRlbF9scl9pbmRpcmVjdF9jdHhfb2Zm c2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyB1MzIgaW50ZWxfbHJf aW5kaXJlY3RfY3R4X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiB7CiAJdTMyIGluZGlyZWN0X2N0eF9vZmZzZXQ7CiAKQEAgLTMyNzgsNzUgKzM2MzcsNDggQEAg c3RhdGljIHUzMiBpbnRlbF9scl9pbmRpcmVjdF9jdHhfb2Zmc2V0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAogCiBzdGF0aWMgdm9pZCBpbml0X2NvbW1vbl9yZWdfc3RhdGUodTMy ICogY29uc3QgcmVncywKLQkJCQkgIHN0cnVjdCBpOTE1X3BwZ3R0ICogY29uc3QgcHBndHQsCi0J CQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkJICBzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZykKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK KwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQogewotCWNvbnN0IHUzMiBiYXNl ID0gZW5naW5lLT5tbWlvX2Jhc2U7Ci0KLQlDVFhfUkVHKHJlZ3MsIENUWF9DT05URVhUX0NPTlRS T0wsIFJJTkdfQ09OVEVYVF9DT05UUk9MKGJhc2UpLAorCXJlZ3NbQ1RYX0NPTlRFWFRfQ09OVFJP TF0gPQogCQlfTUFTS0VEX0JJVF9ESVNBQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9J TkhJQklUKSB8Ci0JCV9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZTl9DVFhf U1dJVENIKSk7Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgMTEpIHsKLQkJcmVnc1tD VFhfQ09OVEVYVF9DT05UUk9MICsgMV0gfD0KKwkJX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJM X0lOSElCSVRfU1lOX0NUWF9TV0lUQ0gpOworCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8 IDExKQorCQlyZWdzW0NUWF9DT05URVhUX0NPTlRST0xdIHw9CiAJCQlfTUFTS0VEX0JJVF9ESVNB QkxFKENUWF9DVFJMX0VOR0lORV9DVFhfU0FWRV9JTkhJQklUIHwKIAkJCQkJICAgIENUWF9DVFJM X1JTX0NUWF9FTkFCTEUpOwotCX0KLQlDVFhfUkVHKHJlZ3MsIENUWF9SSU5HX0hFQUQsIFJJTkdf SEVBRChiYXNlKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUklOR19UQUlMLCBSSU5HX1RBSUwo YmFzZSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1JJTkdfQlVGRkVSX1NUQVJULCBSSU5HX1NU QVJUKGJhc2UpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9SSU5HX0JVRkZFUl9DT05UUk9MLCBS SU5HX0NUTChiYXNlKSwKLQkJUklOR19DVExfU0laRShyaW5nLT5zaXplKSB8IFJJTkdfVkFMSUQp OwotCUNUWF9SRUcocmVncywgQ1RYX0JCX0hFQURfVSwgUklOR19CQkFERFJfVURXKGJhc2UpLCAw KTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9IRUFEX0wsIFJJTkdfQkJBRERSKGJhc2UpLCAwKTsK LQlDVFhfUkVHKHJlZ3MsIENUWF9CQl9TVEFURSwgUklOR19CQlNUQVRFKGJhc2UpLCBSSU5HX0JC X1BQR1RUKTsKKworCXJlZ3NbQ1RYX1JJTkdfQlVGRkVSX0NPTlRST0xdID0gUklOR19DVExfU0la RShyaW5nLT5zaXplKSB8IFJJTkdfVkFMSUQ7CisJcmVnc1tDVFhfQkJfU1RBVEVdID0gUklOR19C Ql9QUEdUVDsKIH0KIAogc3RhdGljIHZvaWQgaW5pdF93YV9iYl9yZWdfc3RhdGUodTMyICogY29u c3QgcmVncywKLQkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSBjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkJIHUzMiBwb3NfYmJfcGVyX2N0 eCkKIHsKLQlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgKiBjb25zdCB3YV9jdHggPSAmZW5n aW5lLT53YV9jdHg7Ci0JY29uc3QgdTMyIGJhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKLQljb25z dCB1MzIgcG9zX2luZGlyZWN0X2N0eCA9IHBvc19iYl9wZXJfY3R4ICsgMjsKLQljb25zdCB1MzIg cG9zX2luZGlyZWN0X2N0eF9vZmZzZXQgPSBwb3NfaW5kaXJlY3RfY3R4ICsgMjsKKwljb25zdCBz dHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgKiBjb25zdCB3YV9jdHggPSAmZW5naW5lLT53YV9j dHg7CisKKwlpZiAod2FfY3R4LT5wZXJfY3R4LnNpemUpIHsKKwkJY29uc3QgdTMyIGdndHRfb2Zm c2V0ID0gaTkxNV9nZ3R0X29mZnNldCh3YV9jdHgtPnZtYSk7CisKKwkJcmVnc1twb3NfYmJfcGVy X2N0eF0gPQorCQkJKGdndHRfb2Zmc2V0ICsgd2FfY3R4LT5wZXJfY3R4Lm9mZnNldCkgfCAweDAx OworCX0KIAotCUNUWF9SRUcocmVncywgcG9zX2luZGlyZWN0X2N0eCwgUklOR19JTkRJUkVDVF9D VFgoYmFzZSksIDApOwotCUNUWF9SRUcocmVncywgcG9zX2luZGlyZWN0X2N0eF9vZmZzZXQsCi0J CVJJTkdfSU5ESVJFQ1RfQ1RYX09GRlNFVChiYXNlKSwgMCk7CiAJaWYgKHdhX2N0eC0+aW5kaXJl Y3RfY3R4LnNpemUpIHsKIAkJY29uc3QgdTMyIGdndHRfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNl dCh3YV9jdHgtPnZtYSk7CiAKLQkJcmVnc1twb3NfaW5kaXJlY3RfY3R4ICsgMV0gPQorCQlyZWdz W3Bvc19iYl9wZXJfY3R4ICsgMl0gPQogCQkJKGdndHRfb2Zmc2V0ICsgd2FfY3R4LT5pbmRpcmVj dF9jdHgub2Zmc2V0KSB8CiAJCQkod2FfY3R4LT5pbmRpcmVjdF9jdHguc2l6ZSAvIENBQ0hFTElO RV9CWVRFUyk7CiAKLQkJcmVnc1twb3NfaW5kaXJlY3RfY3R4X29mZnNldCArIDFdID0KKwkJcmVn c1twb3NfYmJfcGVyX2N0eCArIDRdID0KIAkJCWludGVsX2xyX2luZGlyZWN0X2N0eF9vZmZzZXQo ZW5naW5lKSA8PCA2OwogCX0KLQotCUNUWF9SRUcocmVncywgcG9zX2JiX3Blcl9jdHgsIFJJTkdf QkJfUEVSX0NUWF9QVFIoYmFzZSksIDApOwotCWlmICh3YV9jdHgtPnBlcl9jdHguc2l6ZSkgewot CQljb25zdCB1MzIgZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHdhX2N0eC0+dm1hKTsK LQotCQlyZWdzW3Bvc19iYl9wZXJfY3R4ICsgMV0gPQotCQkJKGdndHRfb2Zmc2V0ICsgd2FfY3R4 LT5wZXJfY3R4Lm9mZnNldCkgfCAweDAxOwotCX0KIH0KIAotc3RhdGljIHZvaWQgaW5pdF9wcGd0 dF9yZWdfc3RhdGUodTMyICpyZWdzLCB1MzIgYmFzZSwKLQkJCQkgc3RydWN0IGk5MTVfcHBndHQg KnBwZ3R0KQorc3RhdGljIHZvaWQgaW5pdF9wcGd0dF9yZWdfc3RhdGUodTMyICpyZWdzLCBjb25z dCBzdHJ1Y3QgaTkxNV9wcGd0dCAqcHBndHQpCiB7Ci0JLyogUERQIHZhbHVlcyB3ZWxsIGJlIGFz c2lnbmVkIGxhdGVyIGlmIG5lZWRlZCAqLwotCUNUWF9SRUcocmVncywgQ1RYX1BEUDNfVURXLCBH RU44X1JJTkdfUERQX1VEVyhiYXNlLCAzKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQM19M RFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2UsIDMpLCAwKTsKLQlDVFhfUkVHKHJlZ3MsIENUWF9Q RFAyX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoYmFzZSwgMiksIDApOwotCUNUWF9SRUcocmVncywg Q1RYX1BEUDJfTERXLCBHRU44X1JJTkdfUERQX0xEVyhiYXNlLCAyKSwgMCk7Ci0JQ1RYX1JFRyhy ZWdzLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURXKGJhc2UsIDEpLCAwKTsKLQlDVFhf UkVHKHJlZ3MsIENUWF9QRFAxX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcoYmFzZSwgMSksIDApOwot CUNUWF9SRUcocmVncywgQ1RYX1BEUDBfVURXLCBHRU44X1JJTkdfUERQX1VEVyhiYXNlLCAwKSwg MCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfUERQMF9MRFcsIEdFTjhfUklOR19QRFBfTERXKGJhc2Us IDApLCAwKTsKLQogCWlmIChpOTE1X3ZtX2lzXzRsdmwoJnBwZ3R0LT52bSkpIHsKIAkJLyogNjRi IFBQR1RUICg0OGJpdCBjYW5vbmljYWwpCiAJCSAqIFBEUDBfREVTQ1JJUFRPUiBjb250YWlucyB0 aGUgYmFzZSBhZGRyZXNzIHRvIFBNTDQgYW5kCkBAIC0zMzY5LDkxICszNzAxLDExIEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9wcGd0dCAqdm1fYWxpYXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCiAJCXJldHVybiBpOTE1X3ZtX3RvX3BwZ3R0KHZtKTsKIH0KIAotc3RhdGljIHZvaWQgZ2Vu OF9pbml0X3JlZ19zdGF0ZSh1MzIgKiBjb25zdCByZWdzLAotCQkJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKLQkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkJc3RydWN0 IGludGVsX3JpbmcgKnJpbmcpCi17Ci0Jc3RydWN0IGk5MTVfcHBndHQgKiBjb25zdCBwcGd0dCA9 IHZtX2FsaWFzKGNlLT52bSk7Ci0JY29uc3QgYm9vbCByY3MgPSBlbmdpbmUtPmNsYXNzID09IFJF TkRFUl9DTEFTUzsKLQljb25zdCB1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOwotCWNvbnN0 IHUzMiBscmlfYmFzZSA9Ci0JCWludGVsX2VuZ2luZV9oYXNfcmVsYXRpdmVfbW1pbyhlbmdpbmUp ID8gTUlfTFJJX0NTX01NSU8gOiAwOwotCi0JcmVnc1tDVFhfTFJJX0hFQURFUl8wXSA9Ci0JCU1J X0xPQURfUkVHSVNURVJfSU1NKHJjcyA/IDE0IDogMTEpIHwKLQkJTUlfTFJJX0ZPUkNFX1BPU1RF RCB8Ci0JCWxyaV9iYXNlOwotCi0JaW5pdF9jb21tb25fcmVnX3N0YXRlKHJlZ3MsIHBwZ3R0LCBl bmdpbmUsIHJpbmcpOwotCUNUWF9SRUcocmVncywgQ1RYX1NFQ09ORF9CQl9IRUFEX1UsIFJJTkdf U0JCQUREUl9VRFcoYmFzZSksIDApOwotCUNUWF9SRUcocmVncywgQ1RYX1NFQ09ORF9CQl9IRUFE X0wsIFJJTkdfU0JCQUREUihiYXNlKSwgMCk7Ci0JQ1RYX1JFRyhyZWdzLCBDVFhfU0VDT05EX0JC X1NUQVRFLCBSSU5HX1NCQlNUQVRFKGJhc2UpLCAwKTsKLQlpZiAocmNzKQotCQlpbml0X3dhX2Ji X3JlZ19zdGF0ZShyZWdzLCBlbmdpbmUsIENUWF9CQl9QRVJfQ1RYX1BUUik7Ci0KLQlyZWdzW0NU WF9MUklfSEVBREVSXzFdID0KLQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oOSkgfAotCQlNSV9MUklf Rk9SQ0VfUE9TVEVEIHwKLQkJbHJpX2Jhc2U7Ci0KLQlDVFhfUkVHKHJlZ3MsIENUWF9DVFhfVElN RVNUQU1QLCBSSU5HX0NUWF9USU1FU1RBTVAoYmFzZSksIDApOwotCi0JaW5pdF9wcGd0dF9yZWdf c3RhdGUocmVncywgYmFzZSwgcHBndHQpOwotCi0JaWYgKHJjcykgewotCQlyZWdzW0NUWF9MUklf SEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkgfCBscmlfYmFzZTsKLQkJQ1RYX1JF RyhyZWdzLCBDVFhfUl9QV1JfQ0xLX1NUQVRFLCBHRU44X1JfUFdSX0NMS19TVEFURSwgMCk7Ci0J fQotCi0JcmVnc1tDVFhfRU5EXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Ci0JaWYgKElOVEVMX0dF TihlbmdpbmUtPmk5MTUpID49IDEwKQotCQlyZWdzW0NUWF9FTkRdIHw9IEJJVCgwKTsKLX0KLQot c3RhdGljIHZvaWQgZ2VuMTJfaW5pdF9yZWdfc3RhdGUodTMyICogY29uc3QgcmVncywKLQkJCQkg c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAotCQkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCi0JCQkJIHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQotewotCXN0cnVjdCBpOTE1X3Bw Z3R0ICogY29uc3QgcHBndHQgPSBpOTE1X3ZtX3RvX3BwZ3R0KGNlLT52bSk7Ci0JY29uc3QgYm9v bCByY3MgPSBlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUzsKLQljb25zdCB1MzIgYmFzZSA9 IGVuZ2luZS0+bW1pb19iYXNlOwotCWNvbnN0IHUzMiBscmlfYmFzZSA9Ci0JCWludGVsX2VuZ2lu ZV9oYXNfcmVsYXRpdmVfbW1pbyhlbmdpbmUpID8gTUlfTFJJX0NTX01NSU8gOiAwOwotCi0JcmVn c1tDVFhfTFJJX0hFQURFUl8wXSA9Ci0JCU1JX0xPQURfUkVHSVNURVJfSU1NKHJjcyA/IDExIDog OSkgfAotCQlNSV9MUklfRk9SQ0VfUE9TVEVEIHwKLQkJbHJpX2Jhc2U7Ci0KLQlpbml0X2NvbW1v bl9yZWdfc3RhdGUocmVncywgcHBndHQsIGVuZ2luZSwgcmluZyk7Ci0KLQkvKiBXZSB3YW50IGN0 eF9wdHIgZm9yIGFsbCBlbmdpbmVzIHRvIGJlIHNldCAqLwotCWluaXRfd2FfYmJfcmVnX3N0YXRl KHJlZ3MsIGVuZ2luZSwgR0VOMTJfQ1RYX0JCX1BFUl9DVFhfUFRSKTsKLQotCXJlZ3NbQ1RYX0xS SV9IRUFERVJfMV0gPQotCQlNSV9MT0FEX1JFR0lTVEVSX0lNTSg5KSB8Ci0JCU1JX0xSSV9GT1JD RV9QT1NURUQgfAotCQlscmlfYmFzZTsKLQotCUNUWF9SRUcocmVncywgQ1RYX0NUWF9USU1FU1RB TVAsIFJJTkdfQ1RYX1RJTUVTVEFNUChiYXNlKSwgMCk7Ci0KLQlpbml0X3BwZ3R0X3JlZ19zdGF0 ZShyZWdzLCBiYXNlLCBwcGd0dCk7Ci0KLQlpZiAocmNzKSB7Ci0JCXJlZ3NbR0VOMTJfQ1RYX0xS SV9IRUFERVJfM10gPQotCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkgfCBscmlfYmFzZTsKLQkJ Q1RYX1JFRyhyZWdzLCBDVFhfUl9QV1JfQ0xLX1NUQVRFLCBHRU44X1JfUFdSX0NMS19TVEFURSwg MCk7Ci0KLQkJLyogVE9ETzogb2FfaW5pdF9yZWdfc3RhdGUgPyAqLwotCX0KLX0KLQogc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVncywKLQkJCQkgICAgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKLQkJCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKLQkJCQkgICAgIHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQorCQkJCSAgICAgY29uc3Qg c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3JpbmcgKnJpbmcs CisJCQkJICAgICBib29sIGNsb3NlKQogewogCS8qCiAJICogQSBjb250ZXh0IGlzIGFjdHVhbGx5 IGEgYmlnIGJhdGNoIGJ1ZmZlciB3aXRoIHNldmVyYWwKQEAgLTM0NjUsMTAgKzM3MTcsMjEgQEAg c3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHUzMiAqcmVncywKIAkgKgogCSAq IE11c3Qga2VlcCBjb25zaXN0ZW50IHdpdGggdmlydHVhbF91cGRhdGVfcmVnaXN0ZXJfb2Zmc2V0 cygpLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA+PSAxMikKLQkJZ2VuMTJf aW5pdF9yZWdfc3RhdGUocmVncywgY2UsIGVuZ2luZSwgcmluZyk7Ci0JZWxzZQotCQlnZW44X2lu aXRfcmVnX3N0YXRlKHJlZ3MsIGNlLCBlbmdpbmUsIHJpbmcpOworCXUzMiAqYmJlID0gc2V0X29m ZnNldHMocmVncywgcmVnX29mZnNldHMoZW5naW5lKSwgZW5naW5lKTsKKworCWlmIChjbG9zZSkg eyAvKiBDbG9zZSB0aGUgYmF0Y2g7IHVzZWQgbWFpbmx5IGJ5IGxpdmVfbHJjX2xheW91dCgpICov CisJCSpiYmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+ aTkxNSkgPj0gMTApCisJCQkqYmJlIHw9IEJJVCgwKTsKKwl9CisKKwlpbml0X2NvbW1vbl9yZWdf c3RhdGUocmVncywgZW5naW5lLCByaW5nKTsKKwlpbml0X3BwZ3R0X3JlZ19zdGF0ZShyZWdzLCB2 bV9hbGlhcyhjZS0+dm0pKTsKKworCWluaXRfd2FfYmJfcmVnX3N0YXRlKHJlZ3MsIGVuZ2luZSwK KwkJCSAgICAgSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTIgPworCQkJICAgICBHRU4xMl9D VFhfQkJfUEVSX0NUWF9QVFIgOgorCQkJICAgICBDVFhfQkJfUEVSX0NUWF9QVFIpOwogfQogCiBz dGF0aWMgaW50CkBAIC0zNDc3LDYgKzM3NDAsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKIAkJICAgIHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQogeworCWJvb2wgaW5oaWJpdCA9IHRy dWU7CiAJdm9pZCAqdmFkZHI7CiAJdTMyICpyZWdzOwogCWludCByZXQ7CkBAIC0zNTA4LDE0ICsz NzcyLDE1IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAog CiAJCW1lbWNweSh2YWRkciArIHN0YXJ0LCBkZWZhdWx0cyArIHN0YXJ0LCBlbmdpbmUtPmNvbnRl eHRfc2l6ZSk7CiAJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0 YXRlKTsKKwkJaW5oaWJpdCA9IGZhbHNlOwogCX0KIAogCS8qIFRoZSBzZWNvbmQgcGFnZSBvZiB0 aGUgY29udGV4dCBvYmplY3QgY29udGFpbnMgc29tZSBmaWVsZHMgd2hpY2ggbXVzdAogCSAqIGJl IHNldCB1cCBwcmlvciB0byB0aGUgZmlyc3QgZXhlY3V0aW9uLiAqLwogCXJlZ3MgPSB2YWRkciAr IExSQ19TVEFURV9QTiAqIFBBR0VfU0laRTsKLQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVn cywgY2UsIGVuZ2luZSwgcmluZyk7Ci0JaWYgKCFlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCi0JCXJl Z3NbQ1RYX0NPTlRFWFRfQ09OVFJPTCArIDFdIHw9CisJZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRl KHJlZ3MsIGNlLCBlbmdpbmUsIHJpbmcsIGluaGliaXQpOworCWlmIChpbmhpYml0KQorCQlyZWdz W0NUWF9DT05URVhUX0NPTlRST0xdIHw9CiAJCQlfTUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxf RU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQpOwogCiAJcmV0ID0gMDsKQEAgLTQyMTIsNyArNDQ3 Nyw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAJCQkgICAgICAgZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19T VEFURV9QTiAqIFBBR0VfU0laRSwKIAkJCSAgICAgICBlbmdpbmUtPmNvbnRleHRfc2l6ZSAtIFBB R0VfU0laRSk7CiAJCX0KLQkJZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHJlZ3MsIGNlLCBlbmdp bmUsIGNlLT5yaW5nKTsKKwkJZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRlKHJlZ3MsIGNlLCBlbmdp bmUsIGNlLT5yaW5nLCBmYWxzZSk7CiAJfQogCiAJLyogUmVydW4gdGhlIHJlcXVlc3Q7IGl0cyBw YXlsb2FkIGhhcyBiZWVuIG5ldXRlcmVkIChpZiBndWlsdHkpLiAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfbHJjX3JlZy5oCmluZGV4IDdlNzczZTc0YTNmZS4uMDZhYjAyNzZlMTBlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmNfcmVnLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjX3JlZy5oCkBAIC0xMCw2MCArMTAsNDAg QEAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAvKiBHRU44IHRvIEdFTjExIFJlZyBTdGF0 ZSBDb250ZXh0ICovCi0jZGVmaW5lIENUWF9MUklfSEVBREVSXzAJCTB4MDEKLSNkZWZpbmUgQ1RY X0NPTlRFWFRfQ09OVFJPTAkJMHgwMgotI2RlZmluZSBDVFhfUklOR19IRUFECQkJMHgwNAotI2Rl ZmluZSBDVFhfUklOR19UQUlMCQkJMHgwNgotI2RlZmluZSBDVFhfUklOR19CVUZGRVJfU1RBUlQJ CTB4MDgKLSNkZWZpbmUgQ1RYX1JJTkdfQlVGRkVSX0NPTlRST0wJCTB4MGEKLSNkZWZpbmUgQ1RY X0JCX0hFQURfVQkJCTB4MGMKLSNkZWZpbmUgQ1RYX0JCX0hFQURfTAkJCTB4MGUKLSNkZWZpbmUg Q1RYX0JCX1NUQVRFCQkJMHgxMAotI2RlZmluZSBDVFhfU0VDT05EX0JCX0hFQURfVQkJMHgxMgot I2RlZmluZSBDVFhfU0VDT05EX0JCX0hFQURfTAkJMHgxNAotI2RlZmluZSBDVFhfU0VDT05EX0JC X1NUQVRFCQkweDE2Ci0jZGVmaW5lIENUWF9CQl9QRVJfQ1RYX1BUUgkJMHgxOAotI2RlZmluZSBD VFhfUkNTX0lORElSRUNUX0NUWAkJMHgxYQotI2RlZmluZSBDVFhfUkNTX0lORElSRUNUX0NUWF9P RkZTRVQJMHgxYwotI2RlZmluZSBDVFhfTFJJX0hFQURFUl8xCQkweDIxCi0jZGVmaW5lIENUWF9D VFhfVElNRVNUQU1QCQkweDIyCi0jZGVmaW5lIENUWF9QRFAzX1VEVwkJCTB4MjQKLSNkZWZpbmUg Q1RYX1BEUDNfTERXCQkJMHgyNgotI2RlZmluZSBDVFhfUERQMl9VRFcJCQkweDI4Ci0jZGVmaW5l IENUWF9QRFAyX0xEVwkJCTB4MmEKLSNkZWZpbmUgQ1RYX1BEUDFfVURXCQkJMHgyYwotI2RlZmlu ZSBDVFhfUERQMV9MRFcJCQkweDJlCi0jZGVmaW5lIENUWF9QRFAwX1VEVwkJCTB4MzAKLSNkZWZp bmUgQ1RYX1BEUDBfTERXCQkJMHgzMgotI2RlZmluZSBDVFhfTFJJX0hFQURFUl8yCQkweDQxCi0j ZGVmaW5lIENUWF9SX1BXUl9DTEtfU1RBVEUJCTB4NDIKLSNkZWZpbmUgQ1RYX0VORAkJCQkweDQ0 CisjZGVmaW5lIENUWF9DT05URVhUX0NPTlRST0wJCSgweDAyICsgMSkKKyNkZWZpbmUgQ1RYX1JJ TkdfSEVBRAkJCSgweDA0ICsgMSkKKyNkZWZpbmUgQ1RYX1JJTkdfVEFJTAkJCSgweDA2ICsgMSkK KyNkZWZpbmUgQ1RYX1JJTkdfQlVGRkVSX1NUQVJUCQkoMHgwOCArIDEpCisjZGVmaW5lIENUWF9S SU5HX0JVRkZFUl9DT05UUk9MCQkoMHgwYSArIDEpCisjZGVmaW5lIENUWF9CQl9TVEFURQkJCSgw eDEwICsgMSkKKyNkZWZpbmUgQ1RYX0JCX1BFUl9DVFhfUFRSCQkoMHgxOCArIDEpCisjZGVmaW5l IENUWF9QRFAzX1VEVwkJCSgweDI0ICsgMSkKKyNkZWZpbmUgQ1RYX1BEUDNfTERXCQkJKDB4MjYg KyAxKQorI2RlZmluZSBDVFhfUERQMl9VRFcJCQkoMHgyOCArIDEpCisjZGVmaW5lIENUWF9QRFAy X0xEVwkJCSgweDJhICsgMSkKKyNkZWZpbmUgQ1RYX1BEUDFfVURXCQkJKDB4MmMgKyAxKQorI2Rl ZmluZSBDVFhfUERQMV9MRFcJCQkoMHgyZSArIDEpCisjZGVmaW5lIENUWF9QRFAwX1VEVwkJCSgw eDMwICsgMSkKKyNkZWZpbmUgQ1RYX1BEUDBfTERXCQkJKDB4MzIgKyAxKQorI2RlZmluZSBDVFhf Ul9QV1JfQ0xLX1NUQVRFCQkoMHg0MiArIDEpCiAKICNkZWZpbmUgR0VOOV9DVFhfUklOR19NSV9N T0RFCQkweDU0CiAKIC8qIEdFTjEyKyBSZWcgU3RhdGUgQ29udGV4dCAqLwotI2RlZmluZSBHRU4x Ml9DVFhfQkJfUEVSX0NUWF9QVFIJCTB4MTIKLSNkZWZpbmUgR0VOMTJfQ1RYX0xSSV9IRUFERVJf MwkJCTB4NDEKLQotI2RlZmluZSBDVFhfUkVHKHJlZ19zdGF0ZSwgcG9zLCByZWcsIHZhbCkgZG8g eyBcCi0JdTMyICpyZWdfc3RhdGVfXyA9IChyZWdfc3RhdGUpOyBcCi0JY29uc3QgdTMyIHBvc19f ID0gKHBvcyk7IFwKLQkocmVnX3N0YXRlX18pWyhwb3NfXykgKyAwXSA9IGk5MTVfbW1pb19yZWdf b2Zmc2V0KHJlZyk7IFwKLQkocmVnX3N0YXRlX18pWyhwb3NfXykgKyAxXSA9ICh2YWwpOyBcCi19 IHdoaWxlICgwKQorI2RlZmluZSBHRU4xMl9DVFhfQkJfUEVSX0NUWF9QVFIJCSgweDEyICsgMSkK IAogI2RlZmluZSBBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCBuKSBkbyB7IFwKIAl1 MzIgKnJlZ19zdGF0ZV9fID0gKHJlZ19zdGF0ZSk7IFwKIAljb25zdCB1NjQgYWRkcl9fID0gaTkx NV9wYWdlX2Rpcl9kbWFfYWRkcigocHBndHQpLCAobikpOyBcCi0JKHJlZ19zdGF0ZV9fKVtDVFhf UERQICMjIG4gIyMgX1VEVyArIDFdID0gdXBwZXJfMzJfYml0cyhhZGRyX18pOyBcCi0JKHJlZ19z dGF0ZV9fKVtDVFhfUERQICMjIG4gIyMgX0xEVyArIDFdID0gbG93ZXJfMzJfYml0cyhhZGRyX18p OyBcCisJKHJlZ19zdGF0ZV9fKVtDVFhfUERQICMjIG4gIyMgX1VEV10gPSB1cHBlcl8zMl9iaXRz KGFkZHJfXyk7IFwKKwkocmVnX3N0YXRlX18pW0NUWF9QRFAgIyMgbiAjIyBfTERXXSA9IGxvd2Vy XzMyX2JpdHMoYWRkcl9fKTsgXAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSBBU1NJR05fQ1RYX1BN TDQocHBndHQsIHJlZ19zdGF0ZSkgZG8geyBcCiAJdTMyICpyZWdfc3RhdGVfXyA9IChyZWdfc3Rh dGUpOyBcCiAJY29uc3QgdTY0IGFkZHJfXyA9IHB4X2RtYShwcGd0dC0+cGQpOyBcCi0JKHJlZ19z dGF0ZV9fKVtDVFhfUERQMF9VRFcgKyAxXSA9IHVwcGVyXzMyX2JpdHMoYWRkcl9fKTsgXAotCShy ZWdfc3RhdGVfXylbQ1RYX1BEUDBfTERXICsgMV0gPSBsb3dlcl8zMl9iaXRzKGFkZHJfXyk7IFwK KwkocmVnX3N0YXRlX18pW0NUWF9QRFAwX1VEV10gPSB1cHBlcl8zMl9iaXRzKGFkZHJfXyk7IFwK KwkocmVnX3N0YXRlX18pW0NUWF9QRFAwX0xEV10gPSBsb3dlcl8zMl9iaXRzKGFkZHJfXyk7IFwK IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgR0VOOF9DVFhfUkNTX0lORElSRUNUX0NUWF9PRkZTRVRf REVGQVVMVAkweDE3CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCmluZGV4IDkz YTg3MWJmZDk1ZC4uMjJlYTJlNzQ3MDY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF9scmMuYwpAQCAtMjIwMSwzICsyMjAxLDE0NSBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVf c2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJcmV0dXJuIGk5MTVf bGl2ZV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7CiB9CisKK3N0YXRpYyB2b2lkIGhleGR1bXAoY29u c3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQoreworCWNvbnN0IHNpemVfdCByb3dzaXplID0gOCAq IHNpemVvZih1MzIpOworCWNvbnN0IHZvaWQgKnByZXYgPSBOVUxMOworCWJvb2wgc2tpcCA9IGZh bHNlOworCXNpemVfdCBwb3M7CisKKwlmb3IgKHBvcyA9IDA7IHBvcyA8IGxlbjsgcG9zICs9IHJv d3NpemUpIHsKKwkJY2hhciBsaW5lWzEyOF07CisKKwkJaWYgKHByZXYgJiYgIW1lbWNtcChwcmV2 LCBidWYgKyBwb3MsIHJvd3NpemUpKSB7CisJCQlpZiAoIXNraXApIHsKKwkJCQlwcl9pbmZvKCIq XG4iKTsKKwkJCQlza2lwID0gdHJ1ZTsKKwkJCX0KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJV0FS Tl9PTl9PTkNFKGhleF9kdW1wX3RvX2J1ZmZlcihidWYgKyBwb3MsIGxlbiAtIHBvcywKKwkJCQkJ CXJvd3NpemUsIHNpemVvZih1MzIpLAorCQkJCQkJbGluZSwgc2l6ZW9mKGxpbmUpLAorCQkJCQkJ ZmFsc2UpID49IHNpemVvZihsaW5lKSk7CisJCXByX2luZm8oIlslMDR6eF0gJXNcbiIsIHBvcywg bGluZSk7CisKKwkJcHJldiA9IGJ1ZiArIHBvczsKKwkJc2tpcCA9IGZhbHNlOworCX0KK30KKwor c3RhdGljIGludCBsaXZlX2xyY19sYXlvdXQodm9pZCAqYXJnKQoreworCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSBhcmc7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50 ZWxfZW5naW5lX2lkIGlkOworCXUzMiAqbWVtOworCWludCBlcnI7CisKKwkvKgorCSAqIENoZWNr IHRoZSByZWdpc3RlcnMgb2Zmc2V0cyB3ZSB1c2UgdG8gY3JlYXRlIHRoZSBpbml0aWFsIHJlZyBz dGF0ZQorCSAqIG1hdGNoIHRoZSBsYXlvdXQgc2F2ZWQgYnkgSFcuCisJICovCisKKwltZW0gPSBr bWFsbG9jKFBBR0VfU0laRSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtZW0pCisJCXJldHVybiAtRU5P TUVNOworCisJZXJyID0gMDsKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+aTkxNSwgaWQp IHsKKwkJdTMyICpodywgKmxyYzsKKwkJaW50IGR3OworCisJCWlmICghZW5naW5lLT5kZWZhdWx0 X3N0YXRlKQorCQkJY29udGludWU7CisKKwkJaHcgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChl bmdpbmUtPmRlZmF1bHRfc3RhdGUsCisJCQkJCSAgICAgSTkxNV9NQVBfV0IpOworCQlpZiAoSVNf RVJSKGh3KSkgeworCQkJZXJyID0gUFRSX0VSUihodyk7CisJCQlicmVhazsKKwkJfQorCQlodyAr PSBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgLyBzaXplb2YoKmh3KTsKKworCQlscmMgPSBtZW1z ZXQobWVtLCAwLCBQQUdFX1NJWkUpOworCQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUobHJjLAor CQkJCQkgZW5naW5lLT5rZXJuZWxfY29udGV4dCwKKwkJCQkJIGVuZ2luZSwKKwkJCQkJIGVuZ2lu ZS0+a2VybmVsX2NvbnRleHQtPnJpbmcsCisJCQkJCSB0cnVlKTsKKworCQlkdyA9IDA7CisJCWRv IHsKKwkJCXUzMiBscmkgPSBod1tkd107CisKKwkJCWlmIChscmkgPT0gMCkgeworCQkJCWR3Kys7 CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWlmICgobHJpICYgR0VOTUFTSygzMSwgMjMpKSAh PSBNSV9JTlNUUigweDIyLCAwKSkgeworCQkJCXByX2VycigiJXM6IEV4cGVjdGVkIExSSSBjb21t YW5kIGF0IGR3b3JkICVkLCBmb3VuZCAlMDh4XG4iLAorCQkJCSAgICAgICBlbmdpbmUtPm5hbWUs IGR3LCBscmkpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlm IChscmNbZHddICE9IGxyaSkgeworCQkJCXByX2VycigiJXM6IExSSSBjb21tYW5kIG1pc21hdGNo IGF0IGR3b3JkICVkLCBleHBlY3RlZCAlMDh4IGZvdW5kICUwOHhcbiIsCisJCQkJICAgICAgIGVu Z2luZS0+bmFtZSwgZHcsIGxyaSwgbHJjW2R3XSk7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQli cmVhazsKKwkJCX0KKworCQkJbHJpICY9IDB4N2Y7CisJCQlscmkrKzsKKwkJCWR3Kys7CisKKwkJ CXdoaWxlIChscmkpIHsKKwkJCQlpZiAoaHdbZHddICE9IGxyY1tkd10pIHsKKwkJCQkJcHJfZXJy KCIlczogRGlmZmVyZW50IHJlZ2lzdGVycyBmb3VuZCBhdCBkd29yZCAlZCwgZXhwZWN0ZWQgJXgs IGZvdW5kICV4XG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1lLCBkdywgaHdbZHddLCBscmNb ZHddKTsKKwkJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJLyoK KwkJCQkgKiBTa2lwIG92ZXIgdGhlIGFjdHVhbCByZWdpc3RlciB2YWx1ZSBhcyB3ZQorCQkJCSAq IGV4cGVjdCB0aGF0IHRvIGRpZmZlci4KKwkJCQkgKi8KKwkJCQlkdyArPSAyOworCQkJCWxyaSAt PSAyOworCQkJfQorCQl9IHdoaWxlICgobHJjW2R3XSAmIH5CSVQoMCkpICE9IE1JX0JBVENIX0JV RkZFUl9FTkQpOworCisJCWlmIChlcnIpIHsKKwkJCXByX2luZm8oIiVzOiBIVyByZWdpc3RlciBp bWFnZTpcbiIsIGVuZ2luZS0+bmFtZSk7CisJCQloZXhkdW1wKGh3LCBQQUdFX1NJWkUpOworCisJ CQlwcl9pbmZvKCIlczogU1cgcmVnaXN0ZXIgaW1hZ2U6XG4iLCBlbmdpbmUtPm5hbWUpOworCQkJ aGV4ZHVtcChscmMsIFBBR0VfU0laRSk7CisJCX0KKworCQlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7CisJCWlmIChlcnIpCisJCQlicmVhazsKKwl9CisK KwlrZnJlZShtZW0pOworCXJldHVybiBlcnI7Cit9CisKK2ludCBpbnRlbF9scmNfbGl2ZV9zZWxm dGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChsaXZlX2xyY19sYXlvdXQp LAorCX07CisKKwlpZiAoIUhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoaTkxNSkpCisJCXJldHVy biAwOworCisJcmV0dXJuIGludGVsX2d0X2xpdmVfc3VidGVzdHModGVzdHMsICZpOTE1LT5ndCk7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IGMxYjc2NDIzMzc2MS4uNTI0ZjY3MTBi N2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMTY3MywxMCArMTY3Myw4IEBAIHN0 YXRpYyB1MzIgb2FfY29uZmlnX2ZsZXhfcmVnKGNvbnN0IHN0cnVjdCBpOTE1X29hX2NvbmZpZyAq b2FfY29uZmlnLAogICogaW4gdGhlIGNhc2UgdGhhdCB0aGUgT0EgdW5pdCBoYXMgYmVlbiBkaXNh YmxlZC4KICAqLwogc3RhdGljIHZvaWQKLWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAotCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwKLQkJCSAgICAgICB1MzIgKnJlZ19zdGF0ZSwKLQkJCSAgICAgICBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKK2dlbjhfdXBkYXRlX3JlZ19zdGF0ZV91 bmxvY2tlZChjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgICAgY29uc3Qg c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGNlLT5lbmdpbmUtPmk5MTU7CiAJdTMyIGN0eF9vYWN0eGN0cmwgPSBpOTE1 LT5wZXJmLmN0eF9vYWN0eGN0cmxfb2Zmc2V0OwpAQCAtMTY5MSwyMSArMTY4OSwxOSBAQCBnZW44 X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSwKIAkJRVVfUEVSRl9DTlRMNSwKIAkJRVVfUEVSRl9DTlRMNiwKIAl9OworCXUzMiAqcmVnX3N0 YXRlID0gY2UtPmxyY19yZWdfc3RhdGU7CiAJaW50IGk7CiAKLQlDVFhfUkVHKHJlZ19zdGF0ZSwg Y3R4X29hY3R4Y3RybCwgR0VOOF9PQUNUWENPTlRST0wsCisJcmVnX3N0YXRlW2N0eF9vYWN0eGN0 cmwgKyAxXSA9CiAJCShzdHJlYW0tPnBlcmlvZF9leHBvbmVudCA8PCBHRU44X09BX1RJTUVSX1BF UklPRF9TSElGVCkgfAogCQkoc3RyZWFtLT5wZXJpb2RpYyA/IEdFTjhfT0FfVElNRVJfRU5BQkxF IDogMCkgfAotCQlHRU44X09BX0NPVU5URVJfUkVTVU1FKTsKKwkJR0VOOF9PQV9DT1VOVEVSX1JF U1VNRTsKIAotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZsZXhfcmVncyk7IGkrKykgewot CQlDVFhfUkVHKHJlZ19zdGF0ZSwgY3R4X2ZsZXhldTAgKyBpICogMiwgZmxleF9yZWdzW2ldLAot CQkJb2FfY29uZmlnX2ZsZXhfcmVnKG9hX2NvbmZpZywgZmxleF9yZWdzW2ldKSk7Ci0JfQorCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZsZXhfcmVncyk7IGkrKykKKwkJcmVnX3N0YXRlW2N0 eF9mbGV4ZXUwICsgaSAqIDIgKyAxXSA9CisJCQlvYV9jb25maWdfZmxleF9yZWcoc3RyZWFtLT5v YV9jb25maWcsIGZsZXhfcmVnc1tpXSk7CiAKLQlDVFhfUkVHKHJlZ19zdGF0ZSwKLQkJQ1RYX1Jf UFdSX0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsCi0JCWludGVsX3NzZXVfbWFrZV9y cGNzKGk5MTUsICZjZS0+c3NldSkpOworCXJlZ19zdGF0ZVtDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9 IGludGVsX3NzZXVfbWFrZV9ycGNzKGk5MTUsICZjZS0+c3NldSk7CiB9CiAKIHN0cnVjdCBmbGV4 IHsKQEAgLTE3MjksNyArMTcyNSw3IEBAIGdlbjhfc3RvcmVfZmxleChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKIAlvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgKyBMUkNfU1RB VEVfUE4gKiBQQUdFX1NJWkU7CiAJZG8gewogCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9H RU40IHwgTUlfVVNFX0dHVFQ7Ci0JCSpjcysrID0gb2Zmc2V0ICsgKGZsZXgtPm9mZnNldCArIDEp ICogc2l6ZW9mKHUzMik7CisJCSpjcysrID0gb2Zmc2V0ICsgZmxleC0+b2Zmc2V0ICogc2l6ZW9m KHUzMik7CiAJCSpjcysrID0gMDsKIAkJKmNzKysgPSBmbGV4LT52YWx1ZTsKIAl9IHdoaWxlIChm bGV4KyssIC0tY291bnQpOwpAQCAtMTg2Myw3ICsxODU5LDcgQEAgc3RhdGljIGludCBnZW44X2Nv bmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJLyogVGhl IE1NSU8gb2Zmc2V0cyBmb3IgRmxleCBFVSByZWdpc3RlcnMgYXJlbid0IGNvbnRpZ3VvdXMgKi8K IAljb25zdCB1MzIgY3R4X2ZsZXhldTAgPSBpOTE1LT5wZXJmLmN0eF9mbGV4ZXUwX29mZnNldDsK LSNkZWZpbmUgY3R4X2ZsZXhldU4oTikgKGN0eF9mbGV4ZXUwICsgMiAqIChOKSkKKyNkZWZpbmUg Y3R4X2ZsZXhldU4oTikgKGN0eF9mbGV4ZXUwICsgMiAqIChOKSArIDEpCiAJc3RydWN0IGZsZXgg cmVnc1tdID0gewogCQl7CiAJCQlHRU44X1JfUFdSX0NMS19TVEFURSwKQEAgLTE4NzEsNyArMTg2 Nyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCX0sCiAJCXsKIAkJCUdFTjhfT0FDVFhDT05UUk9MLAot CQkJaTkxNS0+cGVyZi5jdHhfb2FjdHhjdHJsX29mZnNldCwKKwkJCWk5MTUtPnBlcmYuY3R4X29h Y3R4Y3RybF9vZmZzZXQgKyAxLAogCQkJKChzdHJlYW0tPnBlcmlvZF9leHBvbmVudCA8PCBHRU44 X09BX1RJTUVSX1BFUklPRF9TSElGVCkgfAogCQkJIChzdHJlYW0tPnBlcmlvZGljID8gR0VOOF9P QV9USU1FUl9FTkFCTEUgOiAwKSB8CiAJCQkgR0VOOF9PQV9DT1VOVEVSX1JFU1VNRSkKQEAgLTIy OTksOSArMjI5NSw4IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXJldHVybiByZXQ7CiB9CiAKLXZvaWQgaTkxNV9vYV9p bml0X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlLAotCQkJICAgIHUzMiAqcmVncykKK3ZvaWQgaTkxNV9vYV9p bml0X3JlZ19zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW07CiAKQEAgLTIzMTMsNyArMjMwOCw3IEBAIHZvaWQgaTkxNV9vYV9pbml0 X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAlzdHJlYW0gPSBl bmdpbmUtPmk5MTUtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbTsKIAlpZiAoc3RyZWFtKQotCQlnZW44 X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RyZWFtLCBjZSwgcmVncywgc3RyZWFtLT5vYV9j b25maWcpOworCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY2UsIHN0cmVhbSk7CiB9 CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuaAppbmRleCBhNDEyYjE2ZDlmZmMuLmY0ZmIz MTExODRiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmgKQEAgLTI1LDggKzI1LDcgQEAgaW50 IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKIGludCBpOTE1X3BlcmZf cmVtb3ZlX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKLXZvaWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JCQkgICAgc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAotCQkJICAgIHUzMiAqcmVnX3N0YXRlKTsKK3ZvaWQgaTkxNV9vYV9pbml0X3Jl Z19zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogI2VuZGlmIC8qIF9fSTkxNV9QRVJGX0hf XyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2 ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVf c2VsZnRlc3RzLmgKaW5kZXggMWNjZjBmNzMxYWMwLi42NmQ4M2MxMzkwYzEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaApA QCAtMTUsNiArMTUsNyBAQCBzZWxmdGVzdCh3b3JrYXJvdW5kcywgaW50ZWxfd29ya2Fyb3VuZHNf bGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChndF9lbmdpbmVzLCBpbnRlbF9lbmdpbmVfbGl2ZV9z ZWxmdGVzdHMpCiBzZWxmdGVzdChndF90aW1lbGluZXMsIGludGVsX3RpbWVsaW5lX2xpdmVfc2Vs ZnRlc3RzKQogc2VsZnRlc3QoZ3RfY29udGV4dHMsIGludGVsX2NvbnRleHRfbGl2ZV9zZWxmdGVz dHMpCitzZWxmdGVzdChndF9scmMsIGludGVsX2xyY19saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0 KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3RfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChhY3RpdmUs IGk5MTVfYWN0aXZlX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3Qob2JqZWN0cywgaTkxNV9nZW1f b2JqZWN0X2xpdmVfc2VsZnRlc3RzKQotLSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng=