From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH libdrm 06/10] tests: kms: Implement universal planes test Date: Wed, 9 Dec 2015 18:37:44 +0100 Message-ID: <1449682668-22487-6-git-send-email-thierry.reding@gmail.com> References: <1449682668-22487-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-f175.google.com (mail-pf0-f175.google.com [209.85.192.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6CC26E2A9 for ; Wed, 9 Dec 2015 09:38:10 -0800 (PST) Received: by pfnn128 with SMTP id n128so33246824pfn.0 for ; Wed, 09 Dec 2015 09:38:10 -0800 (PST) In-Reply-To: <1449682668-22487-1-git-send-email-thierry.reding@gmail.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 Cc: Emil Velikov , Hyungwon Hwang List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoaXMgc21hbGwgcHJv Z3JhbSBhbGxvd3MgdW5pdmVyc2FsIHBsYW5lcyB0byBiZSB0ZXN0ZWQuIEN1cnJlbnRseSB0aGlz Cmlzbid0IHZlcnkgZmxleGlibGUgYmVjYXVzZSBpdCBhbGxvd3Mgb25seSB0aGUgZmlyc3QgcGxh bmUgb2YgYSBnaXZlbgp0eXBlIHRvIGJlIHRlc3RlZCBvbiB0aGUgZmlyc3QgQ1JUQy4gSG93ZXZl ciBpdCBzaG91bGQgYmUgc2ltcGxlIHRvCmV4dGVuZCB0aGlzIHdpdGggc29tZSBhZGRpdGlvbmFs IGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8 dHJlZGluZ0BudmlkaWEuY29tPgotLS0KIHRlc3RzL2ttcy9NYWtlZmlsZS5hbSAgICAgICAgICAg IHwgICA5ICstCiB0ZXN0cy9rbXMva21zLXVuaXZlcnNhbC1wbGFuZXMuYyB8IDM1OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzY1IGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21z L2ttcy11bml2ZXJzYWwtcGxhbmVzLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9rbXMvTWFrZWZpbGUu YW0gYi90ZXN0cy9rbXMvTWFrZWZpbGUuYW0KaW5kZXggZjI4YjcyOWMwNjhjLi42NjQ1YWY3YWNh ZTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttcy9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy9rbXMvTWFr ZWZpbGUuYW0KQEAgLTIxLDExICsyMSwxNiBAQCBsaWJrbXNfdGVzdF9sYV9MSUJBREQgPSBcCiAK IGlmIEhBVkVfSU5TVEFMTF9URVNUUwogYmluX1BST0dSQU1TID0gXAotCWttcy1zdGVhbC1jcnRj CisJa21zLXN0ZWFsLWNydGMgXAorCWttcy11bml2ZXJzYWwtcGxhbmVzCiBlbHNlCiBub2luc3Rf UFJPR1JBTVMgPSBcCi0Ja21zLXN0ZWFsLWNydGMKKwlrbXMtc3RlYWwtY3J0YyBcCisJa21zLXVu aXZlcnNhbC1wbGFuZXMKIGVuZGlmCiAKIGttc19zdGVhbF9jcnRjX1NPVVJDRVMgPSBrbXMtc3Rl YWwtY3J0Yy5jCiBrbXNfc3RlYWxfY3J0Y19MREFERCA9IGxpYmttcy10ZXN0LmxhIC4uL3V0aWwv bGlidXRpbC5sYSAkKENBSVJPX0xJQlMpCisKK2ttc191bml2ZXJzYWxfcGxhbmVzX1NPVVJDRVMg PSBrbXMtdW5pdmVyc2FsLXBsYW5lcy5jCitrbXNfdW5pdmVyc2FsX3BsYW5lc19MREFERCA9IGxp Ymttcy10ZXN0LmxhICQoQ0FJUk9fTElCUykKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttcy9rbXMtdW5p dmVyc2FsLXBsYW5lcy5jIGIvdGVzdHMva21zL2ttcy11bml2ZXJzYWwtcGxhbmVzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MTUxMjMxZmY4NjAKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9rbXMva21zLXVuaXZlcnNhbC1wbGFuZXMuYwpAQCAtMCwwICsxLDM1 OCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IE5WSURJQSBDb3Jwb3JhdGlvbgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZkZWYgSEFW RV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxmY250 bC5oPgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRl IDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8ZHJtX2ZvdXJjYy5oPgorI2luY2x1ZGUgInhm ODZkcm0uaCIKKworI2luY2x1ZGUgInV0aWwvY29tbW9uLmgiCisjaW5jbHVkZSAibGlia21zLXRl c3QuaCIKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGZvcm1hdHNbXSA9IHsKKwlEUk1fRk9STUFU X1hSR0I4ODg4LAorCURSTV9GT1JNQVRfWEJHUjg4ODgsCisJRFJNX0ZPUk1BVF9SR0JBODg4OCwK K307CisKK3N0YXRpYyB1aW50MzJfdCBjaG9vc2VfZm9ybWF0KHN0cnVjdCBrbXNfcGxhbmUgKnBs YW5lKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo Zm9ybWF0cyk7IGkrKykKKwkJaWYgKGttc19wbGFuZV9zdXBwb3J0c19mb3JtYXQocGxhbmUsIGZv cm1hdHNbaV0pKQorCQkJcmV0dXJuIGZvcm1hdHNbaV07CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgcHJlcGFyZV9mcmFtZWJ1ZmZlcihzdHJ1Y3Qga21zX2ZyYW1lYnVmZmVyICpmYiwg Ym9vbCBpbnZlcnQpCit7CisJY29uc3QgdW5zaWduZWQgaW50IGJsb2NrX3NpemUgPSAxNjsKKwl1 aW50MzJfdCBjb2xvcnNbMl07CisJdW5zaWduZWQgaW50IGksIGo7CisJdWludDMyX3QgKmJ1ZjsK Kwl2b2lkICpwdHI7CisJaW50IGVycjsKKworCXN3aXRjaCAoZmItPmZvcm1hdCkgeworCWNhc2Ug RFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJcHJpbnRmKCJ1c2luZyBYUkdCODg4OCBmb3JtYXRcbiIp OworCQkgICAgICAgICAgIC8qIFhYUlJHR0JCICovCisJCWNvbG9yc1swXSA9IDB4ZmZmZjAwMDA7 CisJCWNvbG9yc1sxXSA9IDB4ZmYwMDAwZmY7CisJCWJyZWFrOworCisJY2FzZSBEUk1fRk9STUFU X1hCR1I4ODg4OgorCQlwcmludGYoInVzaW5nIFhCR1I4ODg4IGZvcm1hdFxuIik7CisJCSAgICAg ICAgICAgLyogWFhCQkdHUlIgKi8KKwkJY29sb3JzWzBdID0gMHhmZjAwMDBmZjsKKwkJY29sb3Jz WzFdID0gMHhmZmZmMDAwMDsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9GT1JNQVRfUkdCQTg4ODg6 CisJCXByaW50ZigidXNpbmcgUkdCQTg4ODggZm9ybWF0XG4iKTsKKwkJICAgICAgICAgICAvKiBS UkdHQkJBQSAqLworCQljb2xvcnNbMF0gPSAweGZmMDAwMGZmOworCQljb2xvcnNbMV0gPSAweDAw MDBmZmZmOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWNvbG9yc1swXSA9IDB4ZmZmZmZmZmY7 CisJCWNvbG9yc1sxXSA9IDB4ZmZmZmZmZmY7CisJCWJyZWFrOworCX0KKworCWVyciA9IGttc19m cmFtZWJ1ZmZlcl9tYXAoZmIsICZwdHIpOworCWlmIChlcnIgPCAwKSB7CisJCWZwcmludGYoc3Rk ZXJyLCAia21zX2ZyYW1lYnVmZmVyX21hcCgpIGZhaWxlZDogJXNcbiIsCisJCQlzdHJlcnJvcigt ZXJyKSk7CisJCXJldHVybjsKKwl9CisKKwlidWYgPSBwdHI7CisKKwlmb3IgKGogPSAwOyBqIDwg ZmItPmhlaWdodDsgaisrKSB7CisJCWZvciAoaSA9IDA7IGkgPCBmYi0+d2lkdGg7IGkrKykgewor CQkJdW5zaWduZWQgaW50IGNvbG9yID0gKGogLyBibG9ja19zaXplKSBeCisJCQkJCSAgICAgKGkg LyBibG9ja19zaXplKTsKKworCQkJaWYgKGludmVydCkKKwkJCQljb2xvciBePSBjb2xvcjsKKwor CQkJKmJ1ZisrID0gY29sb3JzW2NvbG9yICYgMV07CisJCX0KKwl9CisKKwlrbXNfZnJhbWVidWZm ZXJfdW5tYXAoZmIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorewor CXN0YXRpYyBjb25zdCBjaGFyIG9wdHNbXSA9ICJjaG9wdiI7CisJc3RhdGljIHN0cnVjdCBvcHRp b24gb3B0aW9uc1tdID0geworCQl7ICJjdXJzb3IiLCAwLCAwLCAnYycgfSwKKwkJeyAiaGVscCIs IDAsIDAsICdoJyB9LAorCQl7ICJvdmVybGF5IiwgMCwgMCwgJ28nIH0sCisJCXsgInByaW1hcnki LCAwLCAwLCAncCcgfSwKKwkJeyAidmVyYm9zZSIsIDAsIDAsICd2JyB9LAorCQl7IDAsIDAsIDAs IDAgfSwKKwl9OworCXN0cnVjdCBrbXNfZnJhbWVidWZmZXIgKmN1cnNvciA9IE5VTEw7CisJc3Ry dWN0IGttc19mcmFtZWJ1ZmZlciAqcm9vdCA9IE5VTEw7CisJc3RydWN0IGttc19mcmFtZWJ1ZmZl ciAqZmIgPSBOVUxMOworCXN0cnVjdCBrbXNfZGV2aWNlICpkZXZpY2U7CisJYm9vbCB1c2Vfb3Zl cmxheSA9IGZhbHNlOworCWJvb2wgdXNlX3ByaW1hcnkgPSBmYWxzZTsKKwlzdHJ1Y3Qga21zX3Bs YW5lICpwbGFuZTsKKwlib29sIHVzZV9jdXJzb3IgPSBmYWxzZTsKKwlib29sIHZlcmJvc2UgPSBm YWxzZTsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQgb3B0LCBpZHg7CisJaW50IGZkLCBlcnI7CisK Kwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsIG9wdHMsIG9wdGlvbnMsICZp ZHgpKSAhPSAtMSkgeworCQlzd2l0Y2ggKG9wdCkgeworCQljYXNlICdjJzoKKwkJCXVzZV9jdXJz b3IgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSAnaCc6CisJCQlicmVhazsKKworCQljYXNl ICdvJzoKKwkJCXVzZV9vdmVybGF5ID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgJ3AnOgor CQkJdXNlX3ByaW1hcnkgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSAndic6CisJCQl2ZXJi b3NlID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlwcmludGYoInVua25vd24g b3B0aW9uIFwiJWNcIlxuIiwgb3B0KTsKKwkJCXJldHVybiAxOworCQl9CisJfQorCisJaWYgKG9w dGluZCA+PSBhcmdjKSB7CisJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzIFtvcHRpb25zXSBE RVZJQ0VcbiIsIGFyZ3ZbMF0pOworCQlyZXR1cm4gMTsKKwl9CisKKwlmZCA9IG9wZW4oYXJndltv cHRpbmRdLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJvcGVu KCkgZmFpbGVkOiAlbVxuIik7CisJCXJldHVybiAxOworCX0KKworCWVyciA9IGRybVNldENsaWVu dENhcChmZCwgRFJNX0NMSUVOVF9DQVBfVU5JVkVSU0FMX1BMQU5FUywgMSk7CisJaWYgKGVyciA8 IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJkcm1TZXRDbGllbnRDYXAoKSBmYWlsZWQ6ICVkXG4i LCBlcnIpOworCQlyZXR1cm4gMTsKKwl9CisKKwlkZXZpY2UgPSBrbXNfZGV2aWNlX29wZW4oZmQp OworCWlmICghZGV2aWNlKQorCQlyZXR1cm4gMTsKKworCWlmICh2ZXJib3NlKSB7CisJCXByaW50 ZigiU2NyZWVuczogJXVcbiIsIGRldmljZS0+bnVtX3NjcmVlbnMpOworCisJCWZvciAoaSA9IDA7 IGkgPCBkZXZpY2UtPm51bV9zY3JlZW5zOyBpKyspIHsKKwkJCXN0cnVjdCBrbXNfc2NyZWVuICpz Y3JlZW4gPSBkZXZpY2UtPnNjcmVlbnNbaV07CisJCQljb25zdCBjaGFyICpzdGF0dXMgPSAiZGlz Y29ubmVjdGVkIjsKKworCQkJaWYgKHNjcmVlbi0+Y29ubmVjdGVkKQorCQkJCXN0YXR1cyA9ICJj b25uZWN0ZWQiOworCisJCQlwcmludGYoIiAgJXU6ICV4XG4iLCBpLCBzY3JlZW4tPmlkKTsKKwkJ CXByaW50ZigiICAgIFN0YXR1czogJXNcbiIsIHN0YXR1cyk7CisJCQlwcmludGYoIiAgICBOYW1l OiAlc1xuIiwgc2NyZWVuLT5uYW1lKTsKKwkJCXByaW50ZigiICAgIFJlc29sdXRpb246ICV1eCV1 XG4iLCBzY3JlZW4tPndpZHRoLAorCQkJICAgICAgIHNjcmVlbi0+aGVpZ2h0KTsKKwkJfQorCisJ CXByaW50ZigiUGxhbmVzOiAldVxuIiwgZGV2aWNlLT5udW1fcGxhbmVzKTsKKworCQlmb3IgKGkg PSAwOyBpIDwgZGV2aWNlLT5udW1fcGxhbmVzOyBpKyspIHsKKwkJCXN0cnVjdCBrbXNfcGxhbmUg KnBsYW5lID0gZGV2aWNlLT5wbGFuZXNbaV07CisJCQljb25zdCBjaGFyICp0eXBlID0gTlVMTDsK KworCQkJc3dpdGNoIChwbGFuZS0+dHlwZSkgeworCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVS TEFZOgorCQkJCXR5cGUgPSAib3ZlcmxheSI7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWToKKwkJCQl0eXBlID0gInByaW1hcnkiOworCQkJCWJyZWFrOworCisJ CQljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKKwkJCQl0eXBlID0gImN1cnNvciI7CisJCQkJ YnJlYWs7CisJCQl9CisKKwkJCXByaW50ZigiICAldTogJXBcbiIsIGksIHBsYW5lKTsKKwkJCXBy aW50ZigiICAgIElEOiAleFxuIiwgcGxhbmUtPmlkKTsKKwkJCXByaW50ZigiICAgIENSVEM6ICV4 XG4iLCBwbGFuZS0+Y3J0Yy0+aWQpOworCQkJcHJpbnRmKCIgICAgVHlwZTogJXggKCVzKVxuIiwg cGxhbmUtPnR5cGUsIHR5cGUpOworCQl9CisJfQorCisJaWYgKHVzZV9jdXJzb3IpIHsKKwkJdW5z aWduZWQgaW50IHgsIHk7CisJCXVpbnQzMl90IGZvcm1hdDsKKworCQlwbGFuZSA9IGttc19kZXZp Y2VfZmluZF9wbGFuZV9ieV90eXBlKGRldmljZSwKKwkJCQkJCSAgICAgIERSTV9QTEFORV9UWVBF X0NVUlNPUiwKKwkJCQkJCSAgICAgIDApOworCQlpZiAoIXBsYW5lKSB7CisJCQlmcHJpbnRmKHN0 ZGVyciwgIm5vIGN1cnNvciBwbGFuZSBmb3VuZFxuIik7CisJCQlyZXR1cm4gMTsKKwkJfQorCisJ CWZvcm1hdCA9IGNob29zZV9mb3JtYXQocGxhbmUpOworCQlpZiAoIWZvcm1hdCkgeworCQkJZnBy aW50ZihzdGRlcnIsICJubyBtYXRjaGluZyBmb3JtYXQgZm91bmRcbiIpOworCQkJcmV0dXJuIDE7 CisJCX0KKworCQljdXJzb3IgPSBrbXNfZnJhbWVidWZmZXJfY3JlYXRlKGRldmljZSwgMzIsIDMy LCBmb3JtYXQpOworCQlpZiAoIWN1cnNvcikgeworCQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQg dG8gY3JlYXRlIGN1cnNvciBidWZmZXJcbiIpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQlwcmVw YXJlX2ZyYW1lYnVmZmVyKGN1cnNvciwgZmFsc2UpOworCisJCXggPSAoZGV2aWNlLT5zY3JlZW5z WzBdLT53aWR0aCAtIGN1cnNvci0+d2lkdGgpIC8gMjsKKwkJeSA9IChkZXZpY2UtPnNjcmVlbnNb MF0tPmhlaWdodCAtIGN1cnNvci0+aGVpZ2h0KSAvIDI7CisKKwkJa21zX3BsYW5lX3NldChwbGFu ZSwgY3Vyc29yLCB4LCB5KTsKKwl9CisKKwlpZiAodXNlX292ZXJsYXkpIHsKKwkJdWludDMyX3Qg Zm9ybWF0OworCisJCXBsYW5lID0ga21zX2RldmljZV9maW5kX3BsYW5lX2J5X3R5cGUoZGV2aWNl LAorCQkJCQkJICAgICAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKKwkJCQkJCSAgICAgIDApOwor CQlpZiAoIXBsYW5lKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIG92ZXJsYXkgcGxhbmUgZm91 bmRcbiIpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQlmb3JtYXQgPSBjaG9vc2VfZm9ybWF0KHBs YW5lKTsKKwkJaWYgKCFmb3JtYXQpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAibm8gbWF0Y2hpbmcg Zm9ybWF0IGZvdW5kXG4iKTsKKwkJCXJldHVybiAxOworCQl9CisKKwkJZmIgPSBrbXNfZnJhbWVi dWZmZXJfY3JlYXRlKGRldmljZSwgMzIwLCAyNDAsIGZvcm1hdCk7CisJCWlmICghZmIpCisJCQly ZXR1cm4gMTsKKworCQlwcmVwYXJlX2ZyYW1lYnVmZmVyKGZiLCBmYWxzZSk7CisKKwkJa21zX3Bs YW5lX3NldChwbGFuZSwgZmIsIDAsIDApOworCX0KKworCWlmICh1c2VfcHJpbWFyeSkgeworCQl1 bnNpZ25lZCBpbnQgeCwgeTsKKwkJdWludDMyX3QgZm9ybWF0OworCisJCXBsYW5lID0ga21zX2Rl dmljZV9maW5kX3BsYW5lX2J5X3R5cGUoZGV2aWNlLAorCQkJCQkJICAgICAgRFJNX1BMQU5FX1RZ UEVfUFJJTUFSWSwKKwkJCQkJCSAgICAgIDApOworCQlpZiAoIXBsYW5lKSB7CisJCQlmcHJpbnRm KHN0ZGVyciwgIm5vIHByaW1hcnkgcGxhbmUgZm91bmRcbiIpOworCQkJcmV0dXJuIDE7CisJCX0K KworCQlmb3JtYXQgPSBjaG9vc2VfZm9ybWF0KHBsYW5lKTsKKwkJaWYgKCFmb3JtYXQpIHsKKwkJ CWZwcmludGYoc3RkZXJyLCAibm8gbWF0Y2hpbmcgZm9ybWF0IGZvdW5kXG4iKTsKKwkJCXJldHVy biAxOworCQl9CisKKwkJcm9vdCA9IGttc19mcmFtZWJ1ZmZlcl9jcmVhdGUoZGV2aWNlLCA2NDAs IDQ4MCwgZm9ybWF0KTsKKwkJaWYgKCFyb290KQorCQkJcmV0dXJuIDE7CisKKwkJcHJlcGFyZV9m cmFtZWJ1ZmZlcihyb290LCB0cnVlKTsKKworCQl4ID0gKGRldmljZS0+c2NyZWVuc1swXS0+d2lk dGggLSByb290LT53aWR0aCkgLyAyOworCQl5ID0gKGRldmljZS0+c2NyZWVuc1swXS0+aGVpZ2h0 IC0gcm9vdC0+aGVpZ2h0KSAvIDI7CisKKwkJa21zX3BsYW5lX3NldChwbGFuZSwgcm9vdCwgeCwg eSk7CisJfQorCisJd2hpbGUgKDEpIHsKKwkJc3RydWN0IHRpbWV2YWwgdGltZW91dCA9IHsgMSwg MCB9OworCQlmZF9zZXQgZmRzOworCisJCUZEX1pFUk8oJmZkcyk7CisJCUZEX1NFVChTVERJTl9G SUxFTk8sICZmZHMpOworCisJCWVyciA9IHNlbGVjdChTVERJTl9GSUxFTk8gKyAxLCAmZmRzLCBO VUxMLCBOVUxMLCAmdGltZW91dCk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlmcHJpbnRmKHN0ZGVy ciwgInNlbGVjdCgpIGZhaWxlZDogJW1cbiIpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiB0aW1l b3V0ICovCisJCWlmIChlcnIgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChGRF9JU1NFVChT VERJTl9GSUxFTk8sICZmZHMpKQorCQkJYnJlYWs7CisJfQorCisJaWYgKGN1cnNvcikKKwkJa21z X2ZyYW1lYnVmZmVyX2ZyZWUoY3Vyc29yKTsKKworCWlmIChyb290KQorCQlrbXNfZnJhbWVidWZm ZXJfZnJlZShyb290KTsKKworCWlmIChmYikKKwkJa21zX2ZyYW1lYnVmZmVyX2ZyZWUoZmIpOwor CisJa21zX2RldmljZV9jbG9zZShkZXZpY2UpOworCWNsb3NlKGZkKTsKKworCXJldHVybiAwOwor fQotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==