From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Rawat Subject: [PATCH v2 2/2] drm/selftest: Add drm damage helper selftest Date: Tue, 16 Oct 2018 13:46:09 -0700 Message-ID: <20181016204609.1555-2-drawat@vmware.com> References: <20181016204609.1555-1-drawat@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EX13-EDG-OU-002.vmware.com (ex13-edg-ou-002.vmware.com [208.91.0.190]) by gabe.freedesktop.org (Postfix) with ESMTPS id A3A636E29D for ; Tue, 16 Oct 2018 20:46:54 +0000 (UTC) In-Reply-To: <20181016204609.1555-1-drawat@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-graphics-maintainer@vmware.com Cc: Daniel Vetter , Deepak Rawat , alexandru-cosmin.gheorghe@arm.com List-Id: dri-devel@lists.freedesktop.org U2VsZnRlc3QgZm9yIGRybSBkYW1hZ2UgaGVscGVyIGl0ZXJhdG9yIGZ1bmN0aW9ucy4KCkNjOiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogYWxleGFuZHJ1LWNvc21p bi5naGVvcmdoZUBhcm0uY29tClNpZ25lZC1vZmYtYnk6IERlZXBhayBSYXdhdCA8ZHJhd2F0QHZt d2FyZS5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xs LmNoPgpSZXZpZXdlZC1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICB8ICAg MyArLQogLi4uL3NlbGZ0ZXN0cy9kcm1fZGFtYWdlX2hlbHBlcl9zZWxmdGVzdHMuaCAgIHwgIDIy ICsKIC4uLi9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2RhbWFnZV9oZWxwZXIuYyAgICB8IDgyOCAr KysrKysrKysrKysrKysrKysKIC4uLi9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21vZGVzZXRfY29t bW9uLmMgICB8ICAxMCArLQogLi4uL2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21t b24uaCAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgODYyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9k cm1fZGFtYWdlX2hlbHBlcl9zZWxmdGVzdHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9zZWxm dGVzdHMvTWFrZWZpbGUKaW5kZXggN2U2NTgxOTIxZGEwLi5jNmU2M2VkMTJmMDIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3NlbGZ0ZXN0cy9NYWtlZmlsZQpAQCAtMSwzICsxLDQgQEAKLXRlc3QtZHJtX21vZGVzZXQt eSA6PSB0ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5vIHRlc3QtZHJtX3BsYW5lX2hlbHBlci5vCit0 ZXN0LWRybV9tb2Rlc2V0LXkgOj0gdGVzdC1kcm1fbW9kZXNldF9jb21tb24ubyB0ZXN0LWRybV9w bGFuZV9oZWxwZXIubyBcCisJCSAgICAgIHRlc3QtZHJtX2RhbWFnZV9oZWxwZXIubwogCiBvYmot JChDT05GSUdfRFJNX0RFQlVHX1NFTEZURVNUKSArPSB0ZXN0LWRybV9tbS5vIHRlc3QtZHJtX21v ZGVzZXQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fZGFtYWdl X2hlbHBlcl9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2RhbWFn ZV9oZWxwZXJfc2VsZnRlc3RzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4zYTFjYmUwNWJlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vc2Vs ZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oCkBAIC0wLDAgKzEsMjIgQEAKKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCitzZWxmdGVzdChkYW1hZ2VfaXRl cl9ub19kYW1hZ2UsIGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2UpCitzZWxmdGVzdChkYW1hZ2Vf aXRlcl9ub19kYW1hZ2VfZnJhY3Rpb25hbF9zcmMsIGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vf ZnJhY3Rpb25hbF9zcmMpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfc3JjX21vdmVk LCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX3NyY19tb3ZlZCkKK3NlbGZ0ZXN0KGRhbWFnZV9p dGVyX25vX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCwgaWd0X2RhbWFnZV9pdGVyX25vX2Rh bWFnZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCkKK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFn ZV9ub3RfdmlzaWJsZSwgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub3RfdmlzaWJsZSkKK3Nl bGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjLCBpZ3RfZGFtYWdlX2l0ZXJfbm9f ZGFtYWdlX25vX2NydGMpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fZmIsIGln dF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm9fZmIpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW1w bGVfZGFtYWdlLCBpZ3RfZGFtYWdlX2l0ZXJfc2ltcGxlX2RhbWFnZSkKK3NlbGZ0ZXN0KGRhbWFn ZV9pdGVyX3NpbmdsZV9kYW1hZ2UsIGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlKQorc2Vs ZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjLCBpZ3RfZGFtYWdl X2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjKQorc2VsZnRlc3QoZGFtYWdlX2l0ZXJf c2luZ2xlX2RhbWFnZV9vdXRzaWRlX3NyYywgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vf b3V0c2lkZV9zcmMpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9u YWxfc3JjLCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyYykKK3Nl bGZ0ZXN0KGRhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X2ZyYWN0aW9uYWxfc3Jj LCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3RfZnJhY3Rpb25hbF9zcmMp CitzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX291dHNpZGVfZnJhY3Rpb25hbF9z cmMsIGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX291dHNpZGVfZnJhY3Rpb25hbF9zcmMp CitzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX3NyY19tb3ZlZCwgaWd0X2RhbWFn ZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3JjX21vdmVkKQorc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2lu Z2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCwgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9k YW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92ZWQpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Us IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2UpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Vfb25l X2ludGVyc2VjdCwgaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9vbmVfaW50ZXJzZWN0KQorc2VsZnRl c3QoZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlLCBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdl X29uZV9vdXRzaWRlKQorc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX3NyY19tb3ZlZCwgaWd0 X2RhbWFnZV9pdGVyX2RhbWFnZV9zcmNfbW92ZWQpCitzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1h Z2Vfbm90X3Zpc2libGUsIGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfbm90X3Zpc2libGUpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2RhbWFnZV9oZWxwZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWNlYzc3NzhlNWIyCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kYW1hZ2Vf aGVscGVyLmMKQEAgLTAsMCArMSw4MjggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wCisvKgorICogVGVzdCBjYXNlIGZvciBkcm1fZGFtYWdlX2hlbHBlciBmdW5jdGlvbnMK KyAqLworCisjZGVmaW5lIHByX2ZtdChmbXQpICJkcm1fZGFtYWdlX2hlbHBlcjogIiBmbXQKKwor I2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5oPgorCisjaW5jbHVkZSAidGVzdC1kcm1f bW9kZXNldF9jb21tb24uaCIKKworI2RlZmluZSBURVNUUyAiZHJtX2RhbWFnZV9oZWxwZXJfc2Vs ZnRlc3RzLmgiCisjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmgiCisKK3N0YXRpYyB2b2lkIHNldF9w bGFuZV9zcmMoc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsIGludCB4MSwgaW50IHkxLCBp bnQgeDIsCisJCQkgIGludCB5MikKK3sKKwlzdGF0ZS0+c3JjLngxID0geDE7CisJc3RhdGUtPnNy Yy55MSA9IHkxOworCXN0YXRlLT5zcmMueDIgPSB4MjsKKwlzdGF0ZS0+c3JjLnkyID0geTI7Cit9 CisKK3N0YXRpYyB2b2lkIHNldF9kYW1hZ2VfY2xpcChzdHJ1Y3QgZHJtX21vZGVfcmVjdCAqciwg aW50IHgxLCBpbnQgeTEsIGludCB4MiwKKwkJCSAgICBpbnQgeTIpCit7CisJci0+eDEgPSB4MTsK KwlyLT55MSA9IHkxOworCXItPngyID0geDI7CisJci0+eTIgPSB5MjsKK30KKworc3RhdGljIHZv aWQgc2V0X2RhbWFnZV9ibG9iKHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGFtYWdlX2Jsb2Is CisJCQkgICAgc3RydWN0IGRybV9tb2RlX3JlY3QgKnIsIHVpbnQzMl90IHNpemUpCit7CisJZGFt YWdlX2Jsb2ItPmxlbmd0aCA9IHNpemU7CisJZGFtYWdlX2Jsb2ItPmRhdGEgPSByOworfQorCitz dGF0aWMgdm9pZCBzZXRfcGxhbmVfZGFtYWdlKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl LAorCQkJICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRhbWFnZV9ibG9iKQoreworCXN0 YXRlLT5mYl9kYW1hZ2VfY2xpcHMgPSBkYW1hZ2VfYmxvYjsKK30KKworc3RhdGljIGJvb2wgY2hl Y2tfZGFtYWdlX2NsaXAoc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsIHN0cnVjdCBkcm1f cmVjdCAqciwKKwkJCSAgICAgIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MikKK3sKKwkv KgorCSAqIFJvdW5kIGRvd24geDEveTEgYW5kIHJvdW5kIHVwIHgyL3kyLiBUaGlzIGlzIGJlY2F1 c2UgZGFtYWdlIGlzIG5vdCBpbgorCSAqIDE2LjE2IGZpeGVkIHBvaW50IHNvIHRvIGNhdGNoIGFs bCBwaXhlbHMuCisJICovCisJaW50IHNyY194MSA9IHN0YXRlLT5zcmMueDEgPj4gMTY7CisJaW50 IHNyY195MSA9IHN0YXRlLT5zcmMueTEgPj4gMTY7CisJaW50IHNyY194MiA9IChzdGF0ZS0+c3Jj LngyID4+IDE2KSArICEhKHN0YXRlLT5zcmMueDIgJiAweEZGRkYpOworCWludCBzcmNfeTIgPSAo c3RhdGUtPnNyYy55MiA+PiAxNikgKyAhIShzdGF0ZS0+c3JjLnkyICYgMHhGRkZGKTsKKworCWlm ICh4MSA+PSB4MiB8fCB5MSA+PSB5MikgeworCQlwcl9lcnIoIkNhbm5vdCBoYXZlIGRhbWFnZSBj bGlwIHdpdGggbm8gZGltZW50aW9uLlxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAo eDEgPCBzcmNfeDEgfHwgeTEgPCBzcmNfeTEgfHwgeDIgPiBzcmNfeDIgfHwgeTIgPiBzcmNfeTIp IHsKKwkJcHJfZXJyKCJEYW1hZ2UgY2Fubm90IGJlIG91dHNpZGUgcm91bmRlZCBwbGFuZSBzcmMu XG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChyLT54MSAhPSB4MSB8fCByLT55MSAh PSB5MSB8fCByLT54MiAhPSB4MiB8fCByLT55MiAhPSB5MikgeworCQlwcl9lcnIoIkRhbWFnZSA9 ICVkICVkICVkICVkXG4iLCByLT54MSwgci0+eTEsIHItPngyLCByLT55Mik7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0 ZXJfbm9fZGFtYWdlKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVy X2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7CisJ c3RydWN0IGRybV9yZWN0IGNsaXA7CisJdWludDMyX3QgbnVtX2hpdHMgPSAwOworCisJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKKwkJLndpZHRoID0gMjA0OCwKKwkJLmhlaWdodCA9IDIw NDgKKwl9OworCisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKKwkJLmNydGMgPSBa RVJPX1NJWkVfUFRSLAorCQkuZmIgPSAmZmIsCisJCS52aXNpYmxlID0gdHJ1ZSwKKwl9OworCisJ LyogUGxhbmUgc3JjIHNhbWUgYXMgZmIgc2l6ZS4gKi8KKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3Rh dGUsIDAsIDAsIGZiLndpZHRoIDw8IDE2LCBmYi5oZWlnaHQgPDwgMTYpOworCXNldF9wbGFuZV9z cmMoJnN0YXRlLCAwLCAwLCBmYi53aWR0aCA8PCAxNiwgZmIuaGVpZ2h0IDw8IDE2KTsKKwlkcm1f YXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUp OworCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKKwkJbnVt X2hpdHMrKzsKKworCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcGxhbmUgc3Jj IGFzIGRhbWFnZS4iKTsKKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlw LCAwLCAwLCAyMDQ4LCAyMDQ4KSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3Rf ZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX2ZyYWN0aW9uYWxfc3JjKHZvaWQgKmlnbm9yZWQpCit7CisJ c3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9w bGFuZV9zdGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9yZWN0IGNsaXA7CisJdWludDMyX3Qg bnVtX2hpdHMgPSAwOworCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKKwkJLndpZHRo ID0gMjA0OCwKKwkJLmhlaWdodCA9IDIwNDgKKwl9OworCisJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBzdGF0ZSA9IHsKKwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLAorCQkuZmIgPSAmZmIsCisJCS52 aXNpYmxlID0gdHJ1ZSwKKwl9OworCisJLyogUGxhbmUgc3JjIGhhcyBmcmFjdGlvbmFsIHBhcnQu ICovCisJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAweDNmZmZlLCAweDNmZmZlLAorCQkgICAg ICAweDNmZmZlICsgKDEwMjQgPDwgMTYpLCAweDNmZmZlICsgKDc2OCA8PCAxNikpOworCXNldF9w bGFuZV9zcmMoJnN0YXRlLCAweDNmZmZlLCAweDNmZmZlLAorCQkgICAgICAweDNmZmZlICsgKDEw MjQgPDwgMTYpLCAweDNmZmZlICsgKDc2OCA8PCAxNikpOworCWRybV9hdG9taWNfaGVscGVyX2Rh bWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19m b3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJ TChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiByb3VuZGVkIG9mZiBwbGFuZSBzcmMgYXMg ZGFtYWdlLiIpOworCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDMs IDMsIDEwMjgsIDc3MikpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2RhbWFn ZV9pdGVyX25vX2RhbWFnZV9zcmNfbW92ZWQodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJt X2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl IG9sZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0cyA9 IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lkdGggPSAyMDQ4LAor CQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0g eworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJLnZpc2libGUgPSB0 cnVlLAorCX07CisKKwkvKiBQbGFuZSBzcmMgbW92ZWQgc2luY2Ugb2xkIHBsYW5lIHN0YXRlLiAq LworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2 KTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMTAgPDwgMTYsIDEwIDw8IDE2LAorCQkgICAgICAo MTAgKyAxMDI0KSA8PCAxNiwgKDEwICsgNzY4KSA8PCAxNik7CisJZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKKwlkcm1fYXRvbWlj X2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51bV9oaXRzKys7CisKKwlG QUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHBsYW5lIHNyYyBhcyBkYW1hZ2UuIik7 CisJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMTAsIDEwLCAxMDM0 LCA3NzgpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9u b19kYW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92ZWQodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3Qg ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlIG9sZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0 cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lkdGggPSAyMDQ4 LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRl ID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJLnZpc2libGUg PSB0cnVlLAorCX07CisKKwkvKiBQbGFuZSBzcmMgaGFzIGZyYWN0aW9uYWwgcGFydCBhbmQgaXQg bW92ZWQgc2luY2Ugb2xkIHBsYW5lIHN0YXRlLiAqLworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0 ZSwgMHgzZmZmZSwgMHgzZmZmZSwKKwkJICAgICAgMHgzZmZmZSArICgxMDI0IDw8IDE2KSwgMHgz ZmZmZSArICg3NjggPDwgMTYpKTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0 MDAwMiwKKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwg MTYpKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0 YXRlLCAmc3RhdGUpOworCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAm Y2xpcCkKKwkJbnVtX2hpdHMrKzsKKworCUZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1 cm4gcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsKKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgm c3RhdGUsICZjbGlwLCA0LCA0LCAxMDI5LCA3NzMpKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm90X3Zpc2libGUodm9pZCAqaWdub3Jl ZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1 aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewor CQkud2lkdGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZm YiwKKwkJLnZpc2libGUgPSBmYWxzZSwKKwl9OworCisJc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRl LCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOworCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAw LCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9p dGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3JfZWFj aF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChudW1f aGl0cyAhPSAwLCAiU2hvdWxkIGhhdmUgbm8gZGFtYWdlLiIpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjKHZvaWQgKmlnbm9y ZWQpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9yZWN0IGNsaXA7CisJ dWludDMyX3QgbnVtX2hpdHMgPSAwOworCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsK KwkJLndpZHRoID0gMjA0OCwKKwkJLmhlaWdodCA9IDIwNDgKKwl9OworCisJc3RydWN0IGRybV9w bGFuZV9zdGF0ZSBzdGF0ZSA9IHsKKwkJLmNydGMgPSAwLAorCQkuZmIgPSAmZmIsCisJfTsKKwor CXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsK KwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKKwlk cm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3Rh dGUpOworCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKKwkJ bnVtX2hpdHMrKzsKKworCUZBSUwobnVtX2hpdHMgIT0gMCwgIlNob3VsZCBoYXZlIG5vIGRhbWFn ZS4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19k YW1hZ2Vfbm9fZmIodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKKwlz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5m YiA9IDAsCisJfTsKKworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAx NiwgNzY4IDw8IDE2KTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwg NzY4IDw8IDE2KTsKKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAm b2xkX3N0YXRlLCAmc3RhdGUpOworCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZp dGVyLCAmY2xpcCkKKwkJbnVtX2hpdHMrKzsKKworCUZBSUwobnVtX2hpdHMgIT0gMCwgIlNob3Vs ZCBoYXZlIG5vIGRhbWFnZS4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9k YW1hZ2VfaXRlcl9zaW1wbGVfZGFtYWdlKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRybV9h dG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBv bGRfc3RhdGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOworCXN0cnVj dCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJf dCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lk dGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJ LnZpc2libGUgPSB0cnVlLAorCX07CisKKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAs IDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEw MjQgPDwgMTYsIDc2OCA8PCAxNik7CisJLyogRGFtYWdlIHNldCB0byBwbGFuZSBzcmMgKi8KKwlz ZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMCwgMCwgMTAyNCwgNzY4KTsKKwlzZXRfZGFtYWdlX2Js b2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7CisJc2V0X3BsYW5lX2Rh bWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7CisJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0 ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKKwlkcm1fYXRvbWljX2Zvcl9lYWNo X3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51bV9oaXRzKys7CisKKwlGQUlMKG51bV9o aXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsKKwlGQUlMX09OKCFj aGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAwLCAwLCAxMDI0LCA3NjgpKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlKHZv aWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0 ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9wcm9w ZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOworCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKKwlz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lkdGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0 OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpF Uk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJLnZpc2libGUgPSB0cnVlLAorCX07CisKKwlz ZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7CisJ c2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7CisJc2V0 X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDI1NiwgMTkyLCA3NjgsIDU3Nik7CisJc2V0X2RhbWFnZV9i bG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6ZW9mKGRhbWFnZSkpOworCXNldF9wbGFuZV9k YW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9p dGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3JfZWFj aF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChudW1f aGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBkYW1hZ2Ugd2hlbiBzZXQuIik7CisJRkFJTF9PTigh Y2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjU2LCAxOTIsIDc2OCwgNTc2KSk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFn ZV9pbnRlcnNlY3Rfc3JjKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVs cGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7 CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOworCXN0cnVjdCBkcm1fbW9k ZV9yZWN0IGRhbWFnZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0 cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lkdGggPSAyMDQ4 LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRl ID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJLnZpc2libGUg PSB0cnVlLAorCX07CisKKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwg MTYsIDc2OCA8PCAxNik7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYs IDc2OCA8PCAxNik7CisJLyogRGFtYWdlIGludGVyc2VjdCB3aXRoIHBsYW5lIHNyYy4gKi8KKwlz ZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMjU2LCAxOTIsIDEzNjAsIDc2OCk7CisJc2V0X2RhbWFn ZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6ZW9mKGRhbWFnZSkpOworCXNldF9wbGFu ZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFn ZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3Jf ZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChu dW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBkYW1hZ2UgY2xpcHBlZCB0byBzcmMuIik7CisJ RkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMjU2LCAxOTIsIDEwMjQs IDc2OCkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3Np bmdsZV9kYW1hZ2Vfb3V0c2lkZV9zcmModm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0 b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7CisJc3RydWN0 IGRybV9tb2RlX3JlY3QgZGFtYWdlOworCXN0cnVjdCBkcm1fcmVjdCBjbGlwOworCXVpbnQzMl90 IG51bV9oaXRzID0gMDsKKworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7CisJCS53aWR0 aCA9IDIwNDgsCisJCS5oZWlnaHQgPSAyMDQ4CisJfTsKKworCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgc3RhdGUgPSB7CisJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKKwkJLmZiID0gJmZiLAorCQku dmlzaWJsZSA9IHRydWUsCisJfTsKKworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwg MTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAy NCA8PCAxNiwgNzY4IDw8IDE2KTsKKwkvKiBEYW1hZ2UgY2xpcCBvdXRzaWRlIHBsYW5lIHNyYyAq LworCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAxMzYwLCAxMzYwLCAxMzgwLCAxMzgwKTsKKwlz ZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7CisJ c2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7CisJZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKKwlkcm1fYXRv bWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51bV9oaXRzKys7CisK KwlGQUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2UuIik7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFj dGlvbmFsX3NyYyh2b2lkICppZ25vcmVkKQoreworCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9k YW1hZ2VfaXRlciBpdGVyOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOworCXN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKKwlzdHJ1Y3QgZHJtX21vZGVfcmVj dCBkYW1hZ2U7CisJc3RydWN0IGRybV9yZWN0IGNsaXA7CisJdWludDMyX3QgbnVtX2hpdHMgPSAw OworCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKKwkJLndpZHRoID0gMjA0OCwKKwkJ LmhlaWdodCA9IDIwNDgKKwl9OworCisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsK KwkJLmNydGMgPSBaRVJPX1NJWkVfUFRSLAorCQkuZmIgPSAmZmIsCisJCS52aXNpYmxlID0gdHJ1 ZSwKKwl9OworCisJLyogUGxhbmUgc3JjIGhhcyBmcmFjdGlvbmFsIHBhcnQuICovCisJc2V0X3Bs YW5lX3NyYygmb2xkX3N0YXRlLCAweDQwMDAyLCAweDQwMDAyLAorCQkgICAgICAweDQwMDAyICsg KDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOworCXNldF9wbGFuZV9zcmMoJnN0 YXRlLCAweDQwMDAyLCAweDQwMDAyLAorCQkgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAw eDQwMDAyICsgKDc2OCA8PCAxNikpOworCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAxMCwgMTAs IDI1NiwgMzMwKTsKKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXpl b2YoZGFtYWdlKSk7CisJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7CisJ ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0 YXRlKTsKKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJ CW51bV9oaXRzKys7CisKKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFn ZSB3aGVuIHNldC4iKTsKKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlw LCAxMCwgMTAsIDI1NiwgMzMwKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3Rf ZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3RfZnJhY3Rpb25hbF9zcmModm9pZCAq aWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsK KwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgZGFtYWdlX2Jsb2I7CisJc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOworCXN0cnVj dCBkcm1fcmVjdCBjbGlwOworCXVpbnQzMl90IG51bV9oaXRzID0gMDsKKworCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgZmIgPSB7CisJCS53aWR0aCA9IDIwNDgsCisJCS5oZWlnaHQgPSAyMDQ4CisJ fTsKKworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7CisJCS5jcnRjID0gWkVST19T SVpFX1BUUiwKKwkJLmZiID0gJmZiLAorCQkudmlzaWJsZSA9IHRydWUsCisJfTsKKworCS8qIFBs YW5lIHNyYyBoYXMgZnJhY3Rpb25hbCBwYXJ0LiAqLworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0 ZSwgMHg0MDAwMiwgMHg0MDAwMiwKKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0 MDAwMiArICg3NjggPDwgMTYpKTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0 MDAwMiwKKwkJICAgICAgMHg0MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwg MTYpKTsKKwkvKiBEYW1hZ2UgaW50ZXJzZWN0IHdpdGggcGxhbmUgc3JjLiAqLworCXNldF9kYW1h Z2VfY2xpcCgmZGFtYWdlLCAxMCwgMSwgMTM2MCwgMzMwKTsKKwlzZXRfZGFtYWdlX2Jsb2IoJmRh bWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7CisJc2V0X3BsYW5lX2RhbWFnZSgm c3RhdGUsICZkYW1hZ2VfYmxvYik7CisJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5p dCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5l X2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51bV9oaXRzKys7CisKKwlGQUlMKG51bV9oaXRzICE9 IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSBjbGlwcGVkIHRvIHJvdW5kZWQgb2ZmIHNyYy4iKTsK KwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAxMCwgNCwgMTAyOSwg MzMwKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2lu Z2xlX2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxfc3JjKHZvaWQgKmlnbm9yZWQpCit7CisJc3Ry dWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9i OworCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsK Kwl1aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0g eworCQkud2lkdGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9 ICZmYiwKKwkJLnZpc2libGUgPSB0cnVlLAorCX07CisKKwkvKiBQbGFuZSBzcmMgaGFzIGZyYWN0 aW9uYWwgcGFydC4gKi8KKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAw MDIsCisJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2 KSk7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCisJCSAgICAgIDB4 NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7CisJLyogRGFtYWdl IGNsaXAgb3V0c2lkZSBwbGFuZSBzcmMgKi8KKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMTM2 MCwgMTM2MCwgMTM4MCwgMTM4MCk7CisJc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRh bWFnZSwgc2l6ZW9mKGRhbWFnZSkpOworCXNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdl X2Jsb2IpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRf c3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIs ICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChudW1faGl0cyAhPSAwLCAiU2hvdWxkIGhh dmUgbm8gZGFtYWdlLiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2RhbWFn ZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0 IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOwor CXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1 aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewor CQkud2lkdGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZm YiwKKwkJLnZpc2libGUgPSB0cnVlLAorCX07CisKKwkvKiBQbGFuZSBzcmMgbW92ZWQgc2luY2Ug b2xkIHBsYW5lIHN0YXRlLiAqLworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAy NCA8PCAxNiwgNzY4IDw8IDE2KTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMTAgPDwgMTYsIDEw IDw8IDE2LAorCQkgICAgICAoMTAgKyAxMDI0KSA8PCAxNiwgKDEwICsgNzY4KSA8PCAxNik7CisJ c2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDIwLCAzMCwgMjU2LCAyNTYpOworCXNldF9kYW1hZ2Vf YmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsKKwlzZXRfcGxhbmVf ZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2Vf aXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOworCWRybV9hdG9taWNfZm9yX2Vh Y2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKKwkJbnVtX2hpdHMrKzsKKworCUZBSUwobnVt X2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsKKwlGQUlM X09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAxMCwgMTAsIDEwMzQsIDc3OCkp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9k YW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92ZWQodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJt X2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl IG9sZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7CisJc3Ry dWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlOworCXN0cnVjdCBkcm1fcmVjdCBjbGlwOworCXVpbnQz Ml90IG51bV9oaXRzID0gMDsKKworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7CisJCS53 aWR0aCA9IDIwNDgsCisJCS5oZWlnaHQgPSAyMDQ4CisJfTsKKworCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgc3RhdGUgPSB7CisJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKKwkJLmZiID0gJmZiLAor CQkudmlzaWJsZSA9IHRydWUsCisJfTsKKworCS8qIFBsYW5lIHNyYyB3aXRoIGZyYWN0aW9uYWwg cGFydCBtb3ZlZCBzaW5jZSBvbGQgcGxhbmUgc3RhdGUuICovCisJc2V0X3BsYW5lX3NyYygmb2xk X3N0YXRlLCAweDNmZmZlLCAweDNmZmZlLAorCQkgICAgICAweDNmZmZlICsgKDEwMjQgPDwgMTYp LCAweDNmZmZlICsgKDc2OCA8PCAxNikpOworCXNldF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAy LCAweDQwMDAyLAorCQkgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2 OCA8PCAxNikpOworCS8qIERhbWFnZSBpbnRlcnNlY3Qgd2l0aCBwbGFuZSBzcmMuICovCisJc2V0 X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDIwLCAzMCwgMTM2MCwgMjU2KTsKKwlzZXRfZGFtYWdlX2Js b2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7CisJc2V0X3BsYW5lX2Rh bWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7CisJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0 ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKKwlkcm1fYXRvbWljX2Zvcl9lYWNo X3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51bV9oaXRzKys7CisKKwlGQUlMKG51bV9o aXRzICE9IDEsICJTaG91bGQgcmV0dXJuIHJvdW5kZWQgb2ZmIHBsYW5lIHNyYyBhcyBkYW1hZ2Uu Iik7CisJRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgNCwgNCwgMTAy OSwgNzczKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJf ZGFtYWdlKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFn ZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7CisJc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOworCXN0cnVjdCBkcm1fbW9kZV9yZWN0IGRh bWFnZVsyXTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1aW50MzJfdCBudW1faGl0cyA9IDA7 CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0geworCQkud2lkdGggPSAyMDQ4LAorCQku aGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewor CQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZmYiwKKwkJLnZpc2libGUgPSB0cnVl LAorCX07CisKKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2 OCA8PCAxNik7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8 PCAxNik7CisJLyogMiBkYW1hZ2UgY2xpcHMuICovCisJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2Vb MF0sIDIwLCAzMCwgMjAwLCAxODApOworCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzFdLCAyNDAs IDIwMCwgMjgwLCAyNTApOworCXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2Vb MF0sIHNpemVvZihkYW1hZ2UpKTsKKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9i bG9iKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0 YXRlLCAmc3RhdGUpOworCWRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAm Y2xpcCkgeworCQlpZiAobnVtX2hpdHMgPT0gMCkKKwkJCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9j bGlwKCZzdGF0ZSwgJmNsaXAsIDIwLCAzMCwgMjAwLCAxODApKTsKKwkJaWYgKG51bV9oaXRzID09 IDEpCisJCQlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAyNDAsIDIw MCwgMjgwLCAyNTApKTsKKwkJbnVtX2hpdHMrKzsKKwl9CisKKwlGQUlMKG51bV9oaXRzICE9IDIs ICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX2ludGVyc2VjdCh2b2lkICppZ25v cmVkKQoreworCXN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOworCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRlOworCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiBkYW1hZ2VfYmxvYjsKKwlzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2VbMl07CisJc3RydWN0 IGRybV9yZWN0IGNsaXA7CisJdWludDMyX3QgbnVtX2hpdHMgPSAwOworCisJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciBmYiA9IHsKKwkJLndpZHRoID0gMjA0OCwKKwkJLmhlaWdodCA9IDIwNDgKKwl9 OworCisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHsKKwkJLmNydGMgPSBaRVJPX1NJ WkVfUFRSLAorCQkuZmIgPSAmZmIsCisJCS52aXNpYmxlID0gdHJ1ZSwKKwl9OworCisJc2V0X3Bs YW5lX3NyYygmb2xkX3N0YXRlLCAweDQwMDAyLCAweDQwMDAyLAorCQkgICAgICAweDQwMDAyICsg KDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOworCXNldF9wbGFuZV9zcmMoJnN0 YXRlLCAweDQwMDAyLCAweDQwMDAyLAorCQkgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAw eDQwMDAyICsgKDc2OCA8PCAxNikpOworCS8qIDIgZGFtYWdlIGNsaXBzLCBvbmUgaW50ZXJzZWN0 IHBsYW5lIHNyYy4gKi8KKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMjAsIDMwLCAyMDAs IDE4MCk7CisJc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2VbMV0sIDIsIDIsIDEzNjAsIDEzNjApOwor CXNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2VbMF0sIHNpemVvZihkYW1hZ2Up KTsKKwlzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKKwlkcm1fYXRvbWlj X2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOworCWRy bV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkgeworCQlpZiAobnVt X2hpdHMgPT0gMCkKKwkJCUZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAs IDIwLCAzMCwgMjAwLCAxODApKTsKKwkJaWYgKG51bV9oaXRzID09IDEpCisJCQlGQUlMX09OKCFj aGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCA0LCA0LCAxMDI5LCA3NzMpKTsKKwkJbnVt X2hpdHMrKzsKKwl9CisKKwlGQUlMKG51bV9oaXRzICE9IDIsICJTaG91bGQgcmV0dXJuIGRhbWFn ZSB3aGVuIHNldC4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9kYW1hZ2Vf aXRlcl9kYW1hZ2Vfb25lX291dHNpZGUodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0 b21pY19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7CisJc3RydWN0 IGRybV9tb2RlX3JlY3QgZGFtYWdlWzJdOworCXN0cnVjdCBkcm1fcmVjdCBjbGlwOworCXVpbnQz Ml90IG51bV9oaXRzID0gMDsKKworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7CisJCS53 aWR0aCA9IDIwNDgsCisJCS5oZWlnaHQgPSAyMDQ4CisJfTsKKworCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgc3RhdGUgPSB7CisJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKKwkJLmZiID0gJmZiLAor CQkudmlzaWJsZSA9IHRydWUsCisJfTsKKworCXNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwg MCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKKwlzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwg MTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKKwkvKiAyIGRhbWFnZSBjbGlwcywgb25lIG91dHNpZGUg cGxhbmUgc3JjLiAqLworCXNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlWzBdLCAxMzYwLCAxMzYwLCAx MzgwLCAxMzgwKTsKKwlzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMjQwLCAyMDAsIDI4MCwg MjUwKTsKKwlzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlWzBdLCBzaXplb2Yo ZGFtYWdlKSk7CisJc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7CisJZHJt X2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRl KTsKKwlkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCisJCW51 bV9oaXRzKys7CisKKwlGQUlMKG51bV9oaXRzICE9IDEsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3 aGVuIHNldC4iKTsKKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAy NDAsIDIwMCwgMjgwLCAyNTApKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9k YW1hZ2VfaXRlcl9kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQpCit7CisJc3RydWN0IGRy bV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSBvbGRfc3RhdGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOworCXN0 cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZVsyXTsKKwlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKKwl1 aW50MzJfdCBudW1faGl0cyA9IDA7CisKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewor CQkud2lkdGggPSAyMDQ4LAorCQkuaGVpZ2h0ID0gMjA0OAorCX07CisKKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlIHN0YXRlID0geworCQkuY3J0YyA9IFpFUk9fU0laRV9QVFIsCisJCS5mYiA9ICZm YiwKKwkJLnZpc2libGUgPSB0cnVlLAorCX07CisKKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUs IDB4NDAwMDIsIDB4NDAwMDIsCisJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAw MDIgKyAoNzY4IDw8IDE2KSk7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4M2ZmZmUsIDB4M2Zm ZmUsCisJCSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2 KSk7CisJLyogMiBkYW1hZ2UgY2xpcHMsIG9uZSBvdXRzaWRlIHBsYW5lIHNyYy4gKi8KKwlzZXRf ZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2MCwgMTM4MCwgMTM4MCk7CisJc2V0X2Rh bWFnZV9jbGlwKCZkYW1hZ2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7CisJc2V0X2RhbWFnZV9i bG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRhbWFnZSkpOworCXNldF9wbGFu ZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFn ZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3Jf ZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChu dW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiByb3VuZCBvZmYgcGxhbmUgc3JjIGFzIGRhbWFn ZS4iKTsKKwlGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAzLCAzLCAx MDI4LCA3NzIpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRl cl9kYW1hZ2Vfbm90X3Zpc2libGUodm9pZCAqaWdub3JlZCkKK3sKKwlzdHJ1Y3QgZHJtX2F0b21p Y19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9z dGF0ZTsKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7CisJc3RydWN0IGRy bV9tb2RlX3JlY3QgZGFtYWdlWzJdOworCXN0cnVjdCBkcm1fcmVjdCBjbGlwOworCXVpbnQzMl90 IG51bV9oaXRzID0gMDsKKworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7CisJCS53aWR0 aCA9IDIwNDgsCisJCS5oZWlnaHQgPSAyMDQ4CisJfTsKKworCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgc3RhdGUgPSB7CisJCS5jcnRjID0gWkVST19TSVpFX1BUUiwKKwkJLmZiID0gJmZiLAorCQku dmlzaWJsZSA9IGZhbHNlLAorCX07CisKKwlzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAw MDIsIDB4NDAwMDIsCisJCSAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAo NzY4IDw8IDE2KSk7CisJc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4M2ZmZmUsIDB4M2ZmZmUsCisJ CSAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7CisJ LyogMiBkYW1hZ2UgY2xpcHMsIG9uZSBvdXRzaWRlIHBsYW5lIHNyYy4gKi8KKwlzZXRfZGFtYWdl X2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2MCwgMTM4MCwgMTM4MCk7CisJc2V0X2RhbWFnZV9j bGlwKCZkYW1hZ2VbMV0sIDI0MCwgMjAwLCAyODAsIDI1MCk7CisJc2V0X2RhbWFnZV9ibG9iKCZk YW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRhbWFnZSkpOworCXNldF9wbGFuZV9kYW1h Z2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOworCWRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVy X2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7CisJZHJtX2F0b21pY19mb3JfZWFjaF9w bGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQorCQludW1faGl0cysrOworCisJRkFJTChudW1faGl0 cyAhPSAwLCAiU2hvdWxkIG5vdCByZXR1cm4gYW55IGRhbWFnZS4iKTsKKworCXJldHVybiAwOwor fQorCisjaW5jbHVkZSAiZHJtX3NlbGZ0ZXN0LmMiCisKKy8qKgorICogdGVzdF9kcm1fZGFtYWdl X2hlbHBlciAtIFJ1biBkcm0gZGFtYWdlIGhlbHBlciBzZWxmdGVzdHMuCisgKi8KK2ludCB0ZXN0 X2RybV9kYW1hZ2VfaGVscGVyKHZvaWQpCit7CisJaW50IGVycjsKKworCWVyciA9IHJ1bl9zZWxm dGVzdHMoc2VsZnRlc3RzLCBBUlJBWV9TSVpFKHNlbGZ0ZXN0cyksIE5VTEwpOworCisJcmV0dXJu IGVyciA+IDAgPyAwIDogZXJyOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5jIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0 cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5jCmluZGV4IGZhZDUyMDkwNDNmMS4uNDNhOWFiNTIy YTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21vZGVz ZXRfY29tbW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rl c2V0X2NvbW1vbi5jCkBAIC05LDcgKzksMTUgQEAKIAogc3RhdGljIGludCBfX2luaXQgdGVzdF9k cm1fbW9kZXNldF9pbml0KHZvaWQpCiB7Ci0JcmV0dXJuIHRlc3RfZHJtX3BsYW5lX2hlbHBlcigp OworCWludCByZXQgPSAwLCBlcnI7CisKKwlpZiAoKGVyciA9IHRlc3RfZHJtX3BsYW5lX2hlbHBl cigpKSkKKwkJcmV0ID0gZXJyOworCisJaWYgKChlcnIgPSB0ZXN0X2RybV9kYW1hZ2VfaGVscGVy KCkpKQorCQlyZXQgPSBlcnI7CisKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBfX2V4 aXQgdGVzdF9kcm1fbW9kZXNldF9leGl0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21vZGVzZXRfY29tbW9uLmggYi9kcml2ZXJzL2dwdS9kcm0v c2VsZnRlc3RzL3Rlc3QtZHJtX21vZGVzZXRfY29tbW9uLmgKaW5kZXggYmRlYmEyNjQ2NjFmLi41 ZmE4ZmIwN2UwZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1k cm1fbW9kZXNldF9jb21tb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3Qt ZHJtX21vZGVzZXRfY29tbW9uLmgKQEAgLTE0LDUgKzE0LDYgQEAKICNkZWZpbmUgRkFJTF9PTih4 KSBGQUlMKCh4KSwgIiVzIiwgIkZBSUxfT04oIiBfX3N0cmluZ2lmeSh4KSAiKVxuIikKIAogaW50 IHRlc3RfZHJtX3BsYW5lX2hlbHBlcih2b2lkKTsKK2ludCB0ZXN0X2RybV9kYW1hZ2VfaGVscGVy KHZvaWQpOwogCiAjZW5kaWYKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==