From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4926C32771 for ; Sat, 18 Jan 2020 22:16:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7D48B24673 for ; Sat, 18 Jan 2020 22:16:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7D48B24673 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E88FD6E162; Sat, 18 Jan 2020 22:16:09 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 52B806E161; Sat, 18 Jan 2020 22:16:08 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 19931244-1500050 for multiple; Sat, 18 Jan 2020 22:16:01 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Sat, 18 Jan 2020 22:16:00 +0000 Message-Id: <20200118221600.3713905-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] i915: Exercise VM_WAIT ioctl X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogaW5jbHVkZS9kcm0tdWFwaS9pOTE1X2RybS5oIHwgIDM3ICsrKwogbGliL2lndF9kdW1teWxv YWQuYyAgICAgICAgIHwgICAyICsKIGxpYi9pZ3RfZHVtbXlsb2FkLmggICAgICAgICB8ICAgNSAr LQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgIHwgICAzICsKIHRlc3RzL2k5MTUvZ2VtX3Zt X3dhaXQuYyAgICB8IDUyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRl c3RzL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU2OSBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5 MTUvZ2VtX3ZtX3dhaXQuYwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvaTkxNV9kcm0u aCBiL2luY2x1ZGUvZHJtLXVhcGkvaTkxNV9kcm0uaAppbmRleCBiOTRlOTkxYmUuLjYyZTVjY2Qy YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0tdWFwaS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUv ZHJtLXVhcGkvaTkxNV9kcm0uaApAQCAtMzU5LDYgKzM1OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9k cm1faTkxNV9zYXJlYSB7CiAjZGVmaW5lIERSTV9JOTE1X1FVRVJZCQkJMHgzOQogI2RlZmluZSBE Uk1fSTkxNV9HRU1fVk1fQ1JFQVRFCQkweDNhCiAjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9ERVNU Uk9ZCQkweDNiCisjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9XQUlUCQkweDNjCiAvKiBNdXN0IGJl IGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyAqLwogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lO SVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9p bml0X3QpCkBAIC00MjIsNiArNDIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVh IHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUVVFUlkJCQlEUk1fSU9XUihEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfUVVFUlksIHN0cnVjdCBkcm1faTkxNV9xdWVyeSkKICNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfR0VNX1ZNX0NSRUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sKQogI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fVk1fREVTVFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29u dHJvbCkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX1dBSVQJRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9WTV9XQUlULCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Zt X3dhaXQpCiAKIC8qIEFsbG93IGRyaXZlcnMgdG8gc3VibWl0IGJhdGNoYnVmZmVycyBkaXJlY3Rs eSB0byBoYXJkd2FyZSwgcmVseWluZwogICogb24gdGhlIHNlY3VyaXR5IG1lY2hhbmlzbXMgcHJv dmlkZWQgYnkgaGFyZHdhcmUuCkBAIC0xODI0LDYgKzE4MjYsNDEgQEAgc3RydWN0IGRybV9pOTE1 X2dlbV92bV9jb250cm9sIHsKIAlfX3UzMiB2bV9pZDsKIH07CiAKKy8qCisgKiAoKklPVkEgJiBN QVNLKSBPUCAoVkFMVUUgJiBNQVNLKQorICoKKyAqIE9QOgorICogLSBFUSwgTkVRCisgKiAtIEdU LCBHVEUKKyAqIC0gTFQsIExURQorICogLSBCRUZPUkUsIEFGVEVSCisgKgorICovCitzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3ZtX3dhaXQgeworCV9fdTY0IGV4dGVuc2lvbnM7CisJX191NjQgaW92YTsK KwlfX3UzMiB2bV9pZDsKKwlfX3UxNiBvcDsKKyNkZWZpbmUgSTkxNV9WTV9XQUlUX0VRCQkwCisj ZGVmaW5lIEk5MTVfVk1fV0FJVF9ORVEJMQorI2RlZmluZSBJOTE1X1ZNX1dBSVRfR1QJCTIKKyNk ZWZpbmUgSTkxNV9WTV9XQUlUX0dURQkzCisjZGVmaW5lIEk5MTVfVk1fV0FJVF9MVAkJNAorI2Rl ZmluZSBJOTE1X1ZNX1dBSVRfTFRFCTUKKyNkZWZpbmUgSTkxNV9WTV9XQUlUX0JFRk9SRQk2Cisj ZGVmaW5lIEk5MTVfVk1fV0FJVF9BRlRFUgk3CisjZGVmaW5lIEk5MTVfVk1fV0FJVF9QQVNTRUQJ OAorCV9fdTE2IGZsYWdzOworI2RlZmluZSBJOTE1X1ZNX1dBSVRfQUJTVElNRSAweDEKKwlfX3U2 NCB2YWx1ZTsKKwlfX3U2NCBtYXNrOworI2RlZmluZSBJOTE1X1ZNX1dBSVRfVTgJCTB4ZmZ1Cisj ZGVmaW5lIEk5MTVfVk1fV0FJVF9VMTYJMHhmZmZmdQorI2RlZmluZSBJOTE1X1ZNX1dBSVRfVTMy CTB4ZmZmZmZmZmZ1bAorI2RlZmluZSBJOTE1X1ZNX1dBSVRfVTY0CTB4ZmZmZmZmZmZmZmZmZmZm ZnVsbAorCV9fdTY0IHRpbWVvdXQ7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgewog CS8qCiAJICogUmVnaXN0ZXIgb2Zmc2V0LgpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQu YyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmMKaW5kZXggYjdmNGNhY2EzLi43YmMzNzg4OWIgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAt MTc2LDYgKzE3Niw4IEBAIGVtaXRfcmVjdXJzaXZlX2JhdGNoKGlndF9zcGluX3QgKnNwaW4sCiAJ CX0KIAogCQkqY3MrKyA9IDE7CisJCWlmIChvcHRzLT5mbGFncyAmIElHVF9TUElOX1dBS0VfUlVO KQorCQkJKmNzKysgPSAweDIgPDwgMjM7CiAKIAkJZXhlY2J1Zi0+YnVmZmVyX2NvdW50Kys7CiAJ fQpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgK aW5kZXggNDIxY2ExODNiLi44MjY0ODM0Y2UgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2Fk LmgKKysrIGIvbGliL2lndF9kdW1teWxvYWQuaApAQCAtNjAsOCArNjAsOSBAQCBzdHJ1Y3QgaWd0 X3NwaW5fZmFjdG9yeSB7CiAjZGVmaW5lIElHVF9TUElOX0ZFTkNFX0lOICAgICAgKDEgPDwgMCkK ICNkZWZpbmUgSUdUX1NQSU5fRkVOQ0VfT1VUICAgICAoMSA8PCAxKQogI2RlZmluZSBJR1RfU1BJ Tl9QT0xMX1JVTiAgICAgICgxIDw8IDIpCi0jZGVmaW5lIElHVF9TUElOX0ZBU1QgICAgICAgICAg KDEgPDwgMykKLSNkZWZpbmUgSUdUX1NQSU5fTk9fUFJFRU1QVElPTiAoMSA8PCA0KQorI2RlZmlu ZSBJR1RfU1BJTl9XQUtFX1JVTiAgICAgICgxIDw8IDMpCisjZGVmaW5lIElHVF9TUElOX0ZBU1Qg ICAgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgSUdUX1NQSU5fTk9fUFJFRU1QVElPTiAoMSA8PCA1 KQogCiBpZ3Rfc3Bpbl90ICoKIF9faWd0X3NwaW5fZmFjdG9yeShpbnQgZmQsIGNvbnN0IHN0cnVj dCBpZ3Rfc3Bpbl9mYWN0b3J5ICpvcHRzKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDgwNmViMDJkMC4uMDhjNjY0Nzc2 IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKQEAgLTQ3Miw2ICs0NzIsOSBAQCBnZW1fdXNlcnB0cl9ibGl0c19TT1VSQ0VTID0g aTkxNS9nZW1fdXNlcnB0cl9ibGl0cy5jCiBURVNUU19wcm9ncyArPSBnZW1fd2FpdAogZ2VtX3dh aXRfU09VUkNFUyA9IGk5MTUvZ2VtX3dhaXQuYwogCitURVNUU19wcm9ncyArPSBnZW1fdm1fd2Fp dAorZ2VtX3ZtX3dhaXRfU09VUkNFUyA9IGk5MTUvZ2VtX3ZtX3dhaXQuYworCiBURVNUU19wcm9n cyArPSBnZW1fd29ya2Fyb3VuZHMKIGdlbV93b3JrYXJvdW5kc19TT1VSQ0VTID0gaTkxNS9nZW1f d29ya2Fyb3VuZHMuYwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV92bV93YWl0LmMgYi90 ZXN0cy9pOTE1L2dlbV92bV93YWl0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwLi42MzEwN2JkZDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9pOTE1L2dlbV92bV93YWl0 LmMKQEAgLTAsMCArMSw1MjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq LworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fdm0uaCIKKworc3RhdGlj IGludCBfX2dlbV92bV93YWl0KGludCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX3dhaXQg KncpCit7CisJaW50IGVycjsKKworCWVyciA9IDA7CisJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1f SU9DVExfSTkxNV9HRU1fVk1fV0FJVCwgdykpIHsKKwkJZXJyID0gLWVycm5vOworCQlpZ3RfYXNz dW1lKGVycik7CisJfQorCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHVpbnQzMl90IGdldF92 bShpbnQgaTkxNSwgdWludDMyX3QgY3R4KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSBhcmcgPSB7CisJCS5jdHhfaWQgPSBjdHgsCisJCS5wYXJhbSA9IEk5MTVfQ09OVEVY VF9QQVJBTV9WTSwKKwl9OworCisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZhcmcpOwor CXJldHVybiBhcmcudmFsdWU7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBfX2JhdGNoX2NyZWF0ZShp bnQgaTkxNSwgdWludDMyX3Qgb2Zmc2V0KQoreworCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JB VENIX0JVRkZFUl9FTkQ7CisJdWludDMyX3QgaGFuZGxlOworCisJaGFuZGxlID0gZ2VtX2NyZWF0 ZShpOTE1LCBvZmZzZXQgKyA0KTsKKwlnZW1fd3JpdGUoaTkxNSwgaGFuZGxlLCBvZmZzZXQsICZi YmUsIHNpemVvZihiYmUpKTsKKworCXJldHVybiBoYW5kbGU7Cit9CisKK3N0YXRpYyB1aW50MzJf dCBiYXRjaF9jcmVhdGUoaW50IGk5MTUpCit7CisJcmV0dXJuIF9fYmF0Y2hfY3JlYXRlKGk5MTUs IDApOworfQorCitzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIKK3ZtX2Jp bmQoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZz ZXQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdID0geworCQl7 CisJCQkuaGFuZGxlID0gaGFuZGxlLAorCQkJLm9mZnNldCA9IG9mZnNldCwKKwkJCS5mbGFncyA9 IEVYRUNfT0JKRUNUX1BJTk5FRCwKKwkJfSwKKwkJeyAuaGFuZGxlID0gYmF0Y2hfY3JlYXRlKGk5 MTUpLCB9CisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0geworCQku YnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKSwKKwkJLmJ1ZmZlcl9jb3VudCA9IDIs CisJCS5yc3ZkMSA9IGN0eCwKKwl9OworCisJZ2VtX2V4ZWNidWYoaTkxNSwgJmViKTsKKwlnZW1f Y2xvc2UoaTkxNSwgb2JqWzFdLmhhbmRsZSk7CisKKwlpZ3RfYXNzZXJ0X2VxX3U2NChvYmpbMF0u b2Zmc2V0LCBvZmZzZXQpOworCXJldHVybiBvYmpbMF07Cit9CisKK3N0YXRpYyB2b2lkIGludmFs aWRfbWFzayhpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX3dhaXQgd2FpdDsK Kwl1aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpOworCisJdm1fYmluZChp OTE1LCAwLCBoYW5kbGUsIDApOworCisJbWVtc2V0KCZ3YWl0LCAwLCBzaXplb2Yod2FpdCkpOwor CXdhaXQudm1faWQgPSBnZXRfdm0oaTkxNSwgMCk7CisJd2FpdC5vcCA9IEk5MTVfVk1fV0FJVF9F UTsKKwl3YWl0Lm1hc2sgPSBJOTE1X1ZNX1dBSVRfVTMyOworCWlndF9hc3NlcnRfZXEoX19nZW1f dm1fd2FpdChpOTE1LCAmd2FpdCksIDApOworCisJLyogSGF2aW5nIHByb3ZlZCB3ZSBoYXZlIGFu IG90aGVyd2lzZSB2YWxpZCBhcmcuLiAqLworCXdhaXQubWFzayA9IDA7CisJaWd0X2Fzc2VydF9l cShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwgLUVJTlZBTCk7CisKKwlnZW1fdm1fZGVzdHJv eShpOTE1LCB3YWl0LnZtX2lkKTsKKwlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKK30KKworc3Rh dGljIHZvaWQgaW52YWxpZF9mbGFncyhpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3ZtX3dhaXQgd2FpdDsKKwl1aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYp OworCisJdm1fYmluZChpOTE1LCAwLCBoYW5kbGUsIDApOworCisJbWVtc2V0KCZ3YWl0LCAwLCBz aXplb2Yod2FpdCkpOworCXdhaXQudm1faWQgPSBnZXRfdm0oaTkxNSwgMCk7CisJd2FpdC5vcCA9 IEk5MTVfVk1fV0FJVF9FUTsKKwl3YWl0Lm1hc2sgPSBJOTE1X1ZNX1dBSVRfVTMyOworCWlndF9h c3NlcnRfZXEoX19nZW1fdm1fd2FpdChpOTE1LCAmd2FpdCksIDApOworCisJLyogSGF2aW5nIHBy b3ZlZCB3ZSBoYXZlIGFuIG90aGVyd2lzZSB2YWxpZCBhcmcuLiAqLworCXdhaXQuZmxhZ3MgPSAw eGZmZmY7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwgLUVJTlZB TCk7CisKKwlnZW1fdm1fZGVzdHJveShpOTE1LCB3YWl0LnZtX2lkKTsKKwlnZW1fY2xvc2UoaTkx NSwgaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgaW52YWxpZF9pb3ZhKGludCBpOTE1KQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fd2FpdCB3YWl0OworCXVpbnQzMl90IGhhbmRsZSA9IGdl bV9jcmVhdGUoaTkxNSwgNDA5Nik7CisKKwl2bV9iaW5kKGk5MTUsIDAsIGhhbmRsZSwgMCk7CisK KwltZW1zZXQoJndhaXQsIDAsIHNpemVvZih3YWl0KSk7CisJd2FpdC52bV9pZCA9IGdldF92bShp OTE1LCAwKTsKKwl3YWl0Lm9wID0gSTkxNV9WTV9XQUlUX0VROworCXdhaXQubWFzayA9IEk5MTVf Vk1fV0FJVF9VMzI7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwg MCk7CisKKwkvKiBOYXR1cmFsIGFsaWdubWVudHMgKi8KKwl3YWl0Lm1hc2sgPSBJOTE1X1ZNX1dB SVRfVTg7CisJd2FpdC5pb3ZhID0gMHgxOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChp OTE1LCAmd2FpdCksIDApOworCisJd2FpdC5tYXNrID0gSTkxNV9WTV9XQUlUX1UxNjsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLCAtRUlOVkFMKTsKKwl3YWl0Lmlv dmEgPSAweDI7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwgMCk7 CisKKwl3YWl0Lm1hc2sgPSBJOTE1X1ZNX1dBSVRfVTMyOworCWlndF9hc3NlcnRfZXEoX19nZW1f dm1fd2FpdChpOTE1LCAmd2FpdCksIC1FSU5WQUwpOworCXdhaXQuaW92YSA9IDB4NDsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLCAwKTsKKworCXdhaXQubWFzayA9 IEk5MTVfVk1fV0FJVF9VNjQ7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3 YWl0KSwgLUVJTlZBTCk7CisKKwlnZW1fdm1fZGVzdHJveShpOTE1LCB3YWl0LnZtX2lkKTsKKwln ZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKm9wX3JlcHIo aW50IG9wKQoreworCXN3aXRjaCAob3ApIHsKKyNkZWZpbmUgQ0FTRSh4KSBjYXNlIEk5MTVfVk1f V0FJVF8jI3g6IHJldHVybiAjeAorCQlDQVNFKEVRKTsKKwkJQ0FTRShORVEpOworCQlDQVNFKEdU KTsKKwkJQ0FTRShHVEUpOworCQlDQVNFKExUKTsKKwkJQ0FTRShMVEUpOworCQlDQVNFKEJFRk9S RSk7CisJCUNBU0UoQUZURVIpOworCQlDQVNFKFBBU1NFRCk7CisJZGVmYXVsdDogcmV0dXJuICJ1 bmtub3duIjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGJhc2ljKGludCBpOTE1KQoreworCXN0YXRp YyBjb25zdCBzdHJ1Y3QgeworCQl1bnNpZ25lZCBpbnQgb3A7CisJCXVpbnQzMl90IGEsIGI7CisJ CWludCByZXN1bHQ7CisjZGVmaW5lIEdPT0QgMAorI2RlZmluZSBCQUQgLUVUSU1FCisJfSBvcHNb XSA9IHsKKwkJeyBJOTE1X1ZNX1dBSVRfRVEsIDAsIDAsIEdPT0QgfSwKKwkJeyBJOTE1X1ZNX1dB SVRfRVEsIDAsIDEsIEJBRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9FUSwgMSwgMCwgQkFEIH0sCisJ CXsgSTkxNV9WTV9XQUlUX0VRLCAxLCAxLCBHT09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX0VRLCAw LCAtMSwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0VRLCAtMSwgMCwgQkFEIH0sCisJCXsgSTkx NV9WTV9XQUlUX0VRLCAtMSwgLTEsIEdPT0QgfSwKKworCQl7IEk5MTVfVk1fV0FJVF9ORVEsIDAs IDAsIEJBRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9ORVEsIDAsIDEsIEdPT0QgfSwKKwkJeyBJOTE1 X1ZNX1dBSVRfTkVRLCAxLCAwLCBHT09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX05FUSwgMSwgMSwg QkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX05FUSwgMCwgLTEsIEdPT0QgfSwKKwkJeyBJOTE1X1ZN X1dBSVRfTkVRLCAtMSwgMCwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9ORVEsIC0xLCAtMSwg QkFEIH0sCisKKwkJeyBJOTE1X1ZNX1dBSVRfR1QsIDAsIDAsIEJBRCB9LAorCQl7IEk5MTVfVk1f V0FJVF9HVCwgMSwgMCwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9HVCwgMSwgMSwgQkFEIH0s CisJCXsgSTkxNV9WTV9XQUlUX0dULCAwLCAxLCBCQUQgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfR1Qs IC0xLCAwLCBHT09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX0dULCAwLCAtMSwgQkFEIH0sCisKKwkJ eyBJOTE1X1ZNX1dBSVRfR1RFLCAwLCAwLCBHT09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX0dURSwg MSwgMCwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9HVEUsIDEsIDEsIEdPT0QgfSwKKwkJeyBJ OTE1X1ZNX1dBSVRfR1RFLCAwLCAxLCBCQUQgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfR1RFLCAtMSwg MCwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9HVEUsIDAsIC0xLCBCQUQgfSwKKworCQl7IEk5 MTVfVk1fV0FJVF9MVCwgMCwgMCwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0xULCAxLCAwLCBC QUQgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfTFQsIDEsIDEsIEJBRCB9LAorCQl7IEk5MTVfVk1fV0FJ VF9MVCwgMCwgMSwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9MVCwgLTEsIDAsIEJBRCB9LAor CQl7IEk5MTVfVk1fV0FJVF9MVCwgMCwgLTEsIEdPT0QgfSwKKworCQl7IEk5MTVfVk1fV0FJVF9M VEUsIDAsIDAsIEdPT0QgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfTFRFLCAxLCAwLCBCQUQgfSwKKwkJ eyBJOTE1X1ZNX1dBSVRfTFRFLCAxLCAxLCBHT09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX0xURSwg MCwgMSwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9MVEUsIC0xLCAwLCBCQUQgfSwKKwkJeyBJ OTE1X1ZNX1dBSVRfTFRFLCAwLCAtMSwgR09PRCB9LAorCisJCXsgSTkxNV9WTV9XQUlUX0JFRk9S RSwgMCwgMCwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0JFRk9SRSwgMSwgMCwgQkFEIH0sCisJ CXsgSTkxNV9WTV9XQUlUX0JFRk9SRSwgMSwgMSwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0JF Rk9SRSwgMCwgMSwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9CRUZPUkUsIC0xLCAwLCBHT09E IH0sCisJCXsgSTkxNV9WTV9XQUlUX0JFRk9SRSwgMCwgLTEsIEJBRCB9LAorCisJCXsgSTkxNV9W TV9XQUlUX0FGVEVSLCAwLCAwLCBCQUQgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfQUZURVIsIDEsIDAs IEdPT0QgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfQUZURVIsIDEsIDEsIEJBRCB9LAorCQl7IEk5MTVf Vk1fV0FJVF9BRlRFUiwgMCwgMSwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0FGVEVSLCAtMSwg MCwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlUX0FGVEVSLCAwLCAtMSwgR09PRCB9LAorCisJCXsg STkxNV9WTV9XQUlUX1BBU1NFRCwgMCwgMCwgR09PRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9QQVNT RUQsIDEsIDAsIEdPT0QgfSwKKwkJeyBJOTE1X1ZNX1dBSVRfUEFTU0VELCAxLCAxLCBHT09EIH0s CisJCXsgSTkxNV9WTV9XQUlUX1BBU1NFRCwgMCwgMSwgQkFEIH0sCisJCXsgSTkxNV9WTV9XQUlU X1BBU1NFRCwgLTEsIDAsIEJBRCB9LAorCQl7IEk5MTVfVk1fV0FJVF9QQVNTRUQsIDAsIC0xLCBH T09EIH0sCisJCXsgSTkxNV9WTV9XQUlUX1BBU1NFRCwgLTEsIC0xLCBHT09EIH0sCisJfTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX3dhaXQgd2FpdDsKKwl1aW50MzJfdCBoYW5kbGUgPSBnZW1f Y3JlYXRlKGk5MTUsIDQwOTYpOworCXVpbnQzMl90ICp4ID0gZ2VtX21tYXBfX3djKGk5MTUsIGhh bmRsZSwgMCwgNDA5NiwgUFJPVF9XUklURSk7CisKKwl2bV9iaW5kKGk5MTUsIDAsIGhhbmRsZSwg MCk7CisKKwltZW1zZXQoJndhaXQsIDAsIHNpemVvZih3YWl0KSk7CisJd2FpdC52bV9pZCA9IGdl dF92bShpOTE1LCAwKTsKKwl3YWl0Lm9wID0gSTkxNV9WTV9XQUlUX0VROworCXdhaXQubWFzayA9 IEk5MTVfVk1fV0FJVF9VMzI7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3 YWl0KSwgMCk7CisJd2FpdC5vcCA9IEk5MTVfVk1fV0FJVF9ORVE7CisJaWd0X2Fzc2VydF9lcShf X2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwgLUVUSU1FKTsKKworCWZvciAoaW50IGkgPSAwOyBp IDwgQVJSQVlfU0laRShvcHMpOyBpKyspIHsKKwkJKnggPSBvcHNbaV0uYTsKKwkJd2FpdC52YWx1 ZSA9IG9wc1tpXS5iOworCQl3YWl0Lm9wID0gb3BzW2ldLm9wOworCQlpZ3RfYXNzZXJ0X2YoX19n ZW1fdm1fd2FpdChpOTE1LCAmd2FpdCkgPT0gb3BzW2ldLnJlc3VsdCwKKwkJCSAgICAgIippb3Zh OiAlMDh4IHdhaXQ6IHsgb3A6JXMsIHZhbHVlOiUwOHgsIH0sIHJlc3VsdDogJWQsIGV4cGVjdGVk OiAlZFxuIiwKKwkJCSAgICAgb3BzW2ldLmEsIG9wX3JlcHIob3BzW2ldLm9wKSwgb3BzW2ldLmIs CisJCQkgICAgIF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLAorCQkJICAgICBvcHNbaV0ucmVz dWx0KTsKKwl9CisKKwlnZW1fdm1fZGVzdHJveShpOTE1LCB3YWl0LnZtX2lkKTsKKwltdW5tYXAo eCwgNDA5Nik7CisJZ2VtX2Nsb3NlKGk5MTUsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyB2b2lkIHN0 b3JlX2R3b3JkKGludCBpOTE1LAorCQkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLAorCQkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKnRhcmdl dCwKKwkJCWludCBvZmZzZXQsIHVpbnQzMl90IHZhbHVlKQoreworCWNvbnN0IGludCBnZW4gPSBp bnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChpOTE1KSk7CisJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg ZXhlY2J1ZjsKKwl1aW50MzJfdCBiYXRjaFsxNl07CisJaW50IGk7CisKKwltZW1zZXQoJmV4ZWNi dWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcihvYmopOworCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsKKwlleGVjYnVmLmZsYWdz ID0gZS0+ZmxhZ3M7CisJaWYgKGdlbiA+IDMgJiYgZ2VuIDwgNikKKwkJZXhlY2J1Zi5mbGFncyB8 PSBJOTE1X0VYRUNfU0VDVVJFOworCisJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOworCW1l bWNweShvYmosIHRhcmdldCwgc2l6ZW9mKCp0YXJnZXQpKTsKKwlvYmpbMV0uaGFuZGxlID0gZ2Vt X2NyZWF0ZShpOTE1LCA0MDk2KTsKKworCWkgPSAwOworCWJhdGNoW2ldID0gTUlfU1RPUkVfRFdP UkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CisJaWYgKGdlbiA+PSA4KSB7CisJCWJh dGNoWysraV0gPSB0YXJnZXQtPm9mZnNldCArIG9mZnNldDsKKwkJYmF0Y2hbKytpXSA9ICh0YXJn ZXQtPm9mZnNldCArIG9mZnNldCkgPj4gMzI7CisJfSBlbHNlIGlmIChnZW4gPj0gNCkgeworCQli YXRjaFsrK2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IHRhcmdldC0+b2Zmc2V0ICsgb2Zmc2V0Owor CX0gZWxzZSB7CisJCWJhdGNoW2ldLS07CisJCWJhdGNoWysraV0gPSB0YXJnZXQtPm9mZnNldCAr IG9mZnNldDsKKwl9CisJYmF0Y2hbKytpXSA9IHZhbHVlOworCWJhdGNoWysraV0gPSBNSV9CQVRD SF9CVUZGRVJfRU5EOworCWdlbV93cml0ZShpOTE1LCBvYmpbMV0uaGFuZGxlLCAwLCBiYXRjaCwg c2l6ZW9mKGJhdGNoKSk7CisKKwlnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7CisJZ2VtX2Ns b3NlKGk5MTUsIG9ialsxXS5oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBzaWduYWwoaW50IGk5 MTUsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3ZtX3dhaXQgd2FpdDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MiBvYmogPQorCQl2bV9iaW5kKGk5MTUsIDAsIGdlbV9jcmVhdGUoaTkxNSwgNDA5NiksIDAp OworCisJbWVtc2V0KCZ3YWl0LCAwLCBzaXplb2Yod2FpdCkpOworCXdhaXQudm1faWQgPSBnZXRf dm0oaTkxNSwgMCk7CisJd2FpdC5pb3ZhID0gb2JqLm9mZnNldDsKKwl3YWl0Lm9wID0gSTkxNV9W TV9XQUlUX0VROworCXdhaXQubWFzayA9IEk5MTVfVk1fV0FJVF9VMzI7CisJaWd0X2Fzc2VydF9l cShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0KSwgMCk7CisKKwl3YWl0Lm9wID0gSTkxNV9WTV9X QUlUX05FUTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLCAtRVRJ TUUpOworCisJc3RvcmVfZHdvcmQoaTkxNSwgZSwgJm9iaiwgMCwgMSk7CisJZ2VtX3N5bmMoaTkx NSwgb2JqLmhhbmRsZSk7CisKKwl3YWl0Lm9wID0gSTkxNV9WTV9XQUlUX05FUTsKKwlpZ3RfYXNz ZXJ0X2VxKF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLCAwKTsKKworCXdhaXQub3AgPSBJOTE1 X1ZNX1dBSVRfRVE7CisJd2FpdC52YWx1ZSA9IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93 YWl0KGk5MTUsICZ3YWl0KSwgMCk7CisKKwl3YWl0Lm9wID0gSTkxNV9WTV9XQUlUX05FUTsKKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX3ZtX3dhaXQoaTkxNSwgJndhaXQpLCAtRVRJTUUpOworCisJaWd0 X2ZvcmsoY2hpbGQsIDEpIHsKKwkJdXNsZWVwKDUwMDAwKTsKKwkJc3RvcmVfZHdvcmQoaTkxNSwg ZSwgJm9iaiwgMCwgMik7CisJfQorCisJd2FpdC50aW1lb3V0ID0gTlNFQ19QRVJfU0VDOworCWln dF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChpOTE1LCAmd2FpdCksIDApOworCWlndF93YWl0Y2hp bGRyZW4oKTsKKworCWdlbV92bV9kZXN0cm95KGk5MTUsIHdhaXQudm1faWQpOworCWdlbV9jbG9z ZShpOTE1LCBvYmouaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgc3BpbihpbnQgaTkxNSwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQoreworCXN0cnVjdCBkcm1faTkx NV9nZW1fdm1fd2FpdCB3YWl0OworCWlndF9zcGluX3QgKnNwaW47CisKKwlzcGluID0gaWd0X3Nw aW5fbmV3KGk5MTUsCisJCQkgICAgLmVuZ2luZSA9IGUtPmZsYWdzLAorCQkJICAgIC5mbGFncyA9 IElHVF9TUElOX1BPTExfUlVOIHwgSUdUX1NQSU5fV0FLRV9SVU4pOworCWlndF9zcGluX2J1c3l3 YWl0X3VudGlsX3N0YXJ0ZWQoc3Bpbik7CisKKwltZW1zZXQoJndhaXQsIDAsIHNpemVvZih3YWl0 KSk7CisJd2FpdC52bV9pZCA9IGdldF92bShpOTE1LCAwKTs7CisJd2FpdC5pb3ZhID0gc3Bpbi0+ b2JqWzBdLm9mZnNldDsKKwl3YWl0Lm9wID0gSTkxNV9WTV9XQUlUX05FUTsKKwl3YWl0Lm1hc2sg PSBJOTE1X1ZNX1dBSVRfVTMyOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChpOTE1LCAm d2FpdCksIDApOworCisJaWd0X3NwaW5fZW5kKHNwaW4pOworCWlndF9zcGluX3Jlc2V0KHNwaW4p OworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChpOTE1LCAmd2FpdCksIC1FVElNRSk7CisK KwlpZ3RfZm9yayhjaGlsZCwgMSkgeworCQl1c2xlZXAoNTAwMDApOworCQlnZW1fZXhlY2J1Zihp OTE1LCAmc3Bpbi0+ZXhlY2J1Zik7CisJfQorCisJd2FpdC50aW1lb3V0ID0gTlNFQ19QRVJfU0VD OworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChpOTE1LCAmd2FpdCksIDApOworCisJaWd0 X3dhaXRjaGlsZHJlbigpOworCWlndF9zcGluX2ZyZWUoaTkxNSwgc3Bpbik7CisKKwlnZW1fdm1f ZGVzdHJveShpOTE1LCB3YWl0LnZtX2lkKTsKK30KKworc3RhdGljIHZvaWQgaGFuZyhpbnQgaTkx NSwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQoreworCXN0cnVjdCBk cm1faTkxNV9nZW1fdm1fd2FpdCB3YWl0OworCWlndF9zcGluX3QgKnNwaW47CisKKwlzcGluID0g aWd0X3NwaW5fbmV3KGk5MTUsCisJCQkgICAgLmVuZ2luZSA9IGUtPmZsYWdzLAorCQkJICAgIC5m bGFncyA9IChJR1RfU1BJTl9QT0xMX1JVTiB8CisJCQkJICAgICAgSUdUX1NQSU5fTk9fUFJFRU1Q VElPTikpOworCWlndF9zcGluX2J1c3l3YWl0X3VudGlsX3N0YXJ0ZWQoc3Bpbik7CisKKwltZW1z ZXQoJndhaXQsIDAsIHNpemVvZih3YWl0KSk7CisJd2FpdC52bV9pZCA9IGdldF92bShpOTE1LCAw KTs7CisJd2FpdC5pb3ZhID0gc3Bpbi0+b2JqWzBdLm9mZnNldDsKKwl3YWl0Lm9wID0gSTkxNV9W TV9XQUlUX05FUTsKKwl3YWl0Lm1hc2sgPSBJOTE1X1ZNX1dBSVRfVTMyOworCWlndF9hc3NlcnRf ZXEoX19nZW1fdm1fd2FpdChpOTE1LCAmd2FpdCksIDApOworCisJaWd0X3NwaW5fZW5kKHNwaW4p OworCWlndF9zcGluX3Jlc2V0KHNwaW4pOworCWlndF9hc3NlcnRfZXEoX19nZW1fdm1fd2FpdChp OTE1LCAmd2FpdCksIC1FVElNRSk7CisKKwlpZ3RfZm9yayhjaGlsZCwgMSkgeworCQl1c2xlZXAo NTAwMDApOworCQlnZW1fZXhlY2J1ZihpOTE1LCAmc3Bpbi0+ZXhlY2J1Zik7CisJfQorCisJd2Fp dC50aW1lb3V0ID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV92bV93YWl0KGk5MTUsICZ3YWl0 KSwgMCk7CisKKwlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisJaWd0X3NwaW5fZnJlZShpOTE1LCBzcGlu KTsKKworCWdlbV92bV9kZXN0cm95KGk5MTUsIHdhaXQudm1faWQpOworfQorCitzdGF0aWMgYm9v bCBoYXNfdm1fd2FpdChpbnQgaTkxNSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX3dhaXQg d2FpdCA9IHsgLm1hc2sgPSAtMXVsbCB9OworCisJcmV0dXJuIF9fZ2VtX3ZtX3dhaXQoaTkxNSwg JndhaXQpID09IC1FTk9FTlQ7Cit9CisKK3N0YXRpYyBib29sIGhhc192bShpbnQgaTkxNSkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnID0geworCQkucGFyYW0gPSBJ OTE1X0NPTlRFWFRfUEFSQU1fVk0sCisJfTsKKworCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJh bShpOTE1LCAmYXJnKSkKKwkJcmV0dXJuIGZhbHNlOworCisJZ2VtX3ZtX2Rlc3Ryb3koaTkxNSwg YXJnLnZhbHVlKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworaWd0X21haW4KK3sKKwljb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisJaW50IGk5MTUgPSAtMTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsK KwkJaWd0X3JlcXVpcmUoaGFzX3ZtKGk5MTUpKTsKKwkJaWd0X3JlcXVpcmUoaGFzX3ZtX3dhaXQo aTkxNSkpOworCQlpZ3RfcmVxdWlyZV9nZW0oaTkxNSk7CisJfQorCisJaWd0X3N1YnRlc3QoImlu dmFsaWQtbWFzayIpCisJCWludmFsaWRfbWFzayhpOTE1KTsKKworCWlndF9zdWJ0ZXN0KCJpbnZh bGlkLWZsYWdzIikKKwkJaW52YWxpZF9mbGFncyhpOTE1KTsKKworCWlndF9zdWJ0ZXN0KCJpbnZh bGlkLWlvdmEiKQorCQlpbnZhbGlkX2lvdmEoaTkxNSk7CisKKwlpZ3Rfc3VidGVzdCgiYmFzaWMi KQorCQliYXNpYyhpOTE1KTsKKworCWlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pYygic2lnbmFsIikg eworCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShpOTE1LCBlKSB7CisJCQlpZ3RfZHluYW1p Y19mKCIlcyIsIGUtPm5hbWUpCisJCQkJc2lnbmFsKGk5MTUsIGUpOworCQl9CisJfQorCisJaWd0 X3N1YnRlc3Rfd2l0aF9keW5hbWljKCJzcGluIikgeworCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2Vu Z2luZShpOTE1LCBlKSB7CisJCQlpZ3RfZHluYW1pY19mKCIlcyIsIGUtPm5hbWUpCisJCQkJc3Bp bihpOTE1LCBlKTsKKwkJfQorCX0KKworCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJaWd0X2hhbmdf dCBoaDsKKworCQlpZ3RfZml4dHVyZQorCQkJaGggPSBpZ3RfYWxsb3dfaGFuZyhpOTE1LCAwLCAw KTsKKworCQlpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMoImhhbmciKSB7CisJCQlfX2Zvcl9lYWNo X3BoeXNpY2FsX2VuZ2luZShpOTE1LCBlKSB7CisJCQkJaWd0X2R5bmFtaWNfZigiJXMiLCBlLT5u YW1lKQorCQkJCQloYW5nKGk5MTUsIGUpOworCQkJfQorCQl9CisKKwkJaWd0X2ZpeHR1cmUKKwkJ CWlndF9kaXNhbGxvd19oYW5nKGk5MTUsIGhoKTsKKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWNs b3NlKGk5MTUpOworCX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMv bWVzb24uYnVpbGQKaW5kZXggYTc5ZDIyYmExLi4xNTRiN2FkMTYgMTAwNjQ0Ci0tLSBhL3Rlc3Rz L21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0yMjMsNiArMjIzLDcgQEAg aTkxNV9wcm9ncyA9IFsKIAknZ2VtX3VucmVmX2FjdGl2ZV9idWZmZXJzJywKIAknZ2VtX3VzZXJw dHJfYmxpdHMnLAogCSdnZW1fdm1fY3JlYXRlJywKKwknZ2VtX3ZtX3dhaXQnLAogCSdnZW1fd2Fp dCcsCiAJJ2dlbV93b3JrYXJvdW5kcycsCiAJJ2dlbV93cml0ZV9yZWFkX3Jpbmdfc3dpdGNoJywK LS0gCjIuMjUuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==