From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset Date: Thu, 28 Nov 2019 13:05:28 +0000 Message-ID: <20191128130528.3886476-1-chris@chris-wilson.co.uk> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> 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 Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKRmV3IHNp bXBsZSB0ZXN0cyB3aGljaCB0cmllcyB0byBjcmVhdGUgLyBtbWFwIGJ1ZmZlciBvYmplY3RzCnVz aW5nIEdFTV9NTUFQX09GRlNFVCB1QVBJLgoKdjI6IGNoYW5nZSBmcm9tIFdDIC0+IFdCIChhY2Nv cmRpbmcgdG8gQ2hyaXMgcmV2aWV3IGNvbW1lbnQpCnYzOiBhZGQgbW1hcC1vZmZzZXQtY2xvc2Ut cmFjZSB0ZXN0CgpTaWduZWQtb2ZmLWJ5OiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFy ekBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBWYW5zaGlkaGFyIEtvbmRhIDx2YW5zaGlkaGFyLnIua29uZGFAaW50 ZWwuY29tPgotLS0KUmVxdWlyZWQgKGxvb2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBp ZGVhcyk6CiBzaXplIC0gY2hlY2sgd2UgY2FuIGhhbmRsZSBvYmplY3RzIGJleW9uZCBhIHJlYXNv bmFibGUgbGltaXQgKG5vdGUgdGhlCmtlcm5lbCBmYWlscyBhdCBiZXlvbmQgUkFNKQogZm9ya2Vk IC0gaW50ZXJhY3Rpb25zIHdpdGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MK ICAgICAgICAgIHRocmVhZHMvcHJvY2Vzc2VzCiBzdXNwZW5kIC0gY2hlY2sgc3BlZWQgaXMgY29u c2lzdGVudCBiZWZvcmUvYWZ0ZXIgc3VzcGVuZAogY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBj aGVja2VyIGJldHdlZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNl dC5jIHwgNDIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjBmZmMzY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRhdG9taWMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgImRybS5oIgorCisjaW5jbHVkZSAi aWd0LmgiCisjaW5jbHVkZSAiaWd0X3g4Ni5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiQmFz aWMgTU1BUF9PRkZTRVQgSU9DVEwgdGVzdHMgZm9yIG1lbSByZWdpb25zXG4iKTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7CisJY29uc3QgY2hhciAqbmFtZTsKKwl1bnNpZ25l ZCBpbnQgdHlwZTsKKwl1bnNpZ25lZCBpbnQgZG9tYWluOworfSBtbWFwX29mZnNldF90eXBlc1td ID0geworCXsgImd0dCIsIEk5MTVfTU1BUF9PRkZTRVRfR1RULCBJOTE1X0dFTV9ET01BSU5fR1RU IH0sCisJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9ET01BSU5fQ1BVIH0s CisJeyAid2MiLCBJOTE1X01NQVBfT0ZGU0VUX1dDLCBJOTE1X0dFTV9ET01BSU5fV0MgfSwKKwl7 ICJ1YyIsIEk5MTVfTU1BUF9PRkZTRVRfVUMsIEk5MTVfR0VNX0RPTUFJTl9XQyB9LAorCXt9LAor fTsKKworI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKF9fdCkgXAorCWZvciAoY29u c3Qgc3RydWN0IG1tYXBfb2Zmc2V0ICpfX3QgPSBtbWFwX29mZnNldF90eXBlczsgXAorCSAgICAg KF9fdCktPm5hbWU7IFwKKwkgICAgIChfX3QpKyspCisKK3N0YXRpYyBpbnQgbW1hcF9vZmZzZXRf aW9jdGwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgKmFyZykKK3sK KwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X01NQVBfT0ZGU0VULCBhcmcpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIp OworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBiYWRf b2JqZWN0KGludCBpOTE1KQoreworCXVpbnQzMl90IHJlYWxfaGFuZGxlOworCXVpbnQzMl90IGhh bmRsZXNbMjBdOworCWludCBpID0gMDsKKworCXJlYWxfaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1 LCA0MDk2KTsKKworCWhhbmRsZXNbaSsrXSA9IDB4ZGVhZGJlZWY7CisJZm9yIChpbnQgYml0ID0g MDsgYml0IDwgMTY7IGJpdCsrKQorCQloYW5kbGVzW2krK10gPSByZWFsX2hhbmRsZSB8ICgxIDw8 IChiaXQgKyAxNikpOworCWhhbmRsZXNbaV0gPSByZWFsX2hhbmRsZSArIDE7CisKKwlmb3IgKDsg aSA+PSAwOyBpLS0pIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7 CisJCQkuaGFuZGxlID0gaGFuZGxlc1tpXSwKKwkJCS5mbGFncyA9IEk5MTVfTU1BUF9PRkZTRVRf V0IsCisJCX07CisKKwkJaWd0X2RlYnVnKCJUcnlpbmcgTU1BUCBJT0NUTCB3aXRoIGhhbmRsZSAl eFxuIiwKKwkJCSAgaGFuZGxlc1tpXSk7CisJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9j dGwoaTkxNSwgJmFyZyksCisJCQkgICAgICAtRU5PRU5UKTsKKwl9CisKKwlnZW1fY2xvc2UoaTkx NSwgcmVhbF9oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYWRfZmxhZ3MoaW50IGk5MTUpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7CisJCS5oYW5kbGUgPSBn ZW1fY3JlYXRlKGk5MTUsIDQwOTYpLAorCQkuZmxhZ3MgPSAtMXVsbCwKKwl9OworCisJaWd0X2Fz c2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmYXJnKSwgLUVJTlZBTCk7CisJZ2VtX2Ns b3NlKGk5MTUsIGFyZy5oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYXNpY191YWYoaW50IGk5 MTUpCit7CisJY29uc3QgdWludDMyX3Qgb2JqX3NpemUgPSA0MDk2OworCisJZm9yX2VhY2hfbW1h cF9vZmZzZXRfdHlwZSh0KSB7CisJCXVpbnQzMl90IGhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwg b2JqX3NpemUpOworCQl1aW50OF90ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7CisKKwkJYWRkciA9 IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGhhbmRsZSwgMCwgb2JqX3NpemUsCisJCQkJCSBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJCQkgdC0+dHlwZSk7CisJCWlmICghYWRkcikgeworCQkJ Z2VtX2Nsb3NlKGk5MTUsIGhhbmRsZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWV4cGVjdGVk ID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmV4cGVjdGVkKSk7CisJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCAwKTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChhZGRy LCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY2xlYXIg b24gZ2VtX2NyZWF0ZSgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKwkJZnJlZShleHBlY3RlZCk7 CisKKwkJYnVmID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmJ1ZikpOworCQltZW1zZXQoYnVm ICsgMTAyNCwgMHgwMSwgMTAyNCk7CisJCWdlbV93cml0ZShpOTE1LCBoYW5kbGUsIDAsIGJ1Ziwg b2JqX3NpemUpOworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 CisJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBvYmpfc2l6ZSkgPT0gMCwKKwkJCSAg ICAgIm1tYXAoJXMpIG5vdCBjb2hlcmVudCB3aXRoIGdlbV93cml0ZSgpXG4iLAorCQkJICAgICB0 LT5uYW1lKTsKKworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgdC0+ ZG9tYWluKTsKKwkJbWVtc2V0KGFkZHIgKyAyMDQ4LCAweGZmLCAxMDI0KTsKKwkJZ2VtX3JlYWQo aTkxNSwgaGFuZGxlLCAwLCBidWYsIG9ial9zaXplKTsKKwkJZ2VtX3NldF9kb21haW4oaTkxNSwg aGFuZGxlLCB0LT5kb21haW4sIDApOworCQlpZ3RfYXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwg b2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1f cmVhZCgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKworCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxl KTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAorCQkJ ICAgICAibW1hcCglcykgbm90IHJlc2lkZW50IGFmdGVyIGdlbV9jbG9zZSgpXG4iLAorCQkJICAg ICB0LT5uYW1lKTsKKwkJZnJlZShidWYpOworCisJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOworCQltdW5tYXAoYWRkciwgb2JqX3NpemUpOworCX0KK30KKworc3RhdGljIHZvaWQg aXNvbGF0aW9uKGludCBpOTE1KQoreworCWZvcl9lYWNoX21tYXBfb2Zmc2V0X3R5cGUodCkgewor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0IG1tYXBfYXJnID0geworCQkJLmZsYWdz ID0gdC0+dHlwZQorCQl9OworCQlpbnQgQSA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQlp bnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQl1aW50NjRfdCBvZmZzZXRfYSwgb2Zm c2V0X2I7CisJCXVpbnQzMl90IGEsIGI7CisJCXZvaWQgKnB0cjsKKworCQlhID0gZ2VtX2NyZWF0 ZShBLCA0MDk2KTsKKwkJYiA9IGdlbV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYTsKKwkJaWYgKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2Fy ZykpIHsKKwkJCWNsb3NlKEEpOworCQkJY2xvc2UoQik7CisJCQljb250aW51ZTsKKwkJfQorCQlv ZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKKworCQltbWFwX2FyZy5oYW5kbGUgPSBiOworCQlp Z3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2FyZyksIDApOworCQlv ZmZzZXRfYiA9IG1tYXBfYXJnLm9mZnNldDsKKworCQlpZ3RfaW5mbygiQVslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBBLCBhLCBvZmZz ZXRfYSk7CisJCWlndF9pbmZvKCJCWyVzXToge2ZkOiVkLCBoYW5kbGU6JWQsIG9mZnNldDolIlBS SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQljbG9zZShCKTsK KworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBBLCBvZmZz ZXRfYSk7CisJCWlndF9hc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCQltdW5tYXAocHRyLCA0 MDk2KTsKKworCQljbG9zZShBKTsKKworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFE LCBNQVBfU0hBUkVELCBBLCBvZmZzZXRfYSk7CisJCWlndF9hc3NlcnQocHRyID09IE1BUF9GQUlM RUQpOworCX0KK30KKworc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCit7CisJaWd0 X3NwaW5fdCAqc3BpbiA9IGlndF9zcGluX25ldyhpOTE1KTsKKworCWZvcl9lYWNoX21tYXBfb2Zm c2V0X3R5cGUodCkgeworCQl1aW50MzJfdCAqcHRyOworCisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zm c2V0KGk5MTUsIHNwaW4tPmhhbmRsZSwgMCwgNDA5NiwKKwkJCQkJUFJPVF9SRUFEIHwgUFJPVF9X UklURSwKKwkJCQkJdC0+dHlwZSk7CisJCWlmICghcHRyKQorCQkJY29udGludWU7CisKKwkJaWd0 X3NldF90aW1lb3V0KDEsIHQtPm5hbWUpOworCQkvKiBubyBzZXQtZG9tYWluIGFzIHdlIHdhbnQg dG8gdmVyaWZ5IHRoZSBwYWdlZmF1bHQgaXMgYXN5bmMgKi8KKwkJcHRyWzI1Nl0gPSAwOworCQlp Z3RfcmVzZXRfdGltZW91dCgpOworCisJCW11bm1hcChwdHIsIDQwOTYpOworCX0KKworCWlndF9z cGluX2ZyZWUoaTkxNSwgc3Bpbik7Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5 MTUsIGludCB0aW1lb3V0KQoreworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7CisJc2l6ZV90IGxlbiA9 IEFMSUdOKChuY3B1cyArIDEpICogc2l6ZW9mKHVpbnQzMl90KSwgNDA5Nik7CisKKwloYW5kbGVz ID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwg MCk7CisJaWd0X2Fzc2VydChoYW5kbGVzICE9IE1BUF9GQUlMRUQpOworCisJaWd0X2ZvcmsoY2hp bGQsIG5jcHVzICsgMSkgeworCQlkbyB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zm c2V0IG1tYXBfYXJnID0ge307CisJCQljb25zdCBpbnQgaSA9IDEgKyByYW5kb20oKSAlIG5jcHVz OworCQkJdWludDMyX3Qgb2xkOworCisJCQltbWFwX2FyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5 MTUsIDQwOTYpOworCQkJbW1hcF9hcmcuZmxhZ3MgPSBJOTE1X01NQVBfT0ZGU0VUX1dCOworCQkJ b2xkID0gYXRvbWljX2V4Y2hhbmdlKCZoYW5kbGVzW2ldLCBtbWFwX2FyZy5oYW5kbGUpOworCQkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgJm9sZCk7CisKKwkJCWlmIChpb2N0bChp OTE1LAorCQkJCSAgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULAorCQkJCSAgJm1tYXBf YXJnKSAhPSAtMSkgeworCQkJCXZvaWQgKnB0cjsKKworCQkJCXB0ciA9IG1tYXA2NCgwLCA0MDk2 LAorCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGk5MTUsCisJCQkJCSAgICAgbW1h cF9hcmcub2Zmc2V0KTsKKwkJCQlpZiAocHRyICE9IE1BUF9GQUlMRUQpIHsKKwkJCQkJKih2b2xh dGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7CisJCQkJCW11bm1hcChwdHIsIDQwOTYpOworCQkJCX0K KwkJCX0KKworCQl9IHdoaWxlICghUkVBRF9PTkNFKGhhbmRsZXNbMF0pKTsKKwl9CisKKwlzbGVl cCh0aW1lb3V0KTsKKwloYW5kbGVzWzBdID0gMTsKKwlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisKKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQorCQlpb2N0bChpOTE1LCBEUk1fSU9DVExf R0VNX0NMT1NFLCBoYW5kbGVzW2ldKTsKKwltdW5tYXAoaGFuZGxlcywgbGVuKTsKK30KKworc3Rh dGljIHVpbnQ2NF90IGF0b21pY19jb21wYXJlX3N3YXBfdTY0KF9BdG9taWModWludDY0X3QpICpw dHIsCisJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQoreworCWF0b21pY19j b21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhwdHIsICZvbGR2YWwsIG5ld3ZhbCk7CisJcmV0dXJuIG9s ZHZhbDsKK30KKworc3RhdGljIHVpbnQ2NF90IGdldF9ucGFnZXMoX0F0b21pYyh1aW50NjRfdCkg Kmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQoreworCXVpbnQ2NF90IHRyeSwgb2xkLCBtYXg7CisK KwltYXggPSAqZ2xvYmFsOworCWRvIHsKKwkJb2xkID0gbWF4OworCQl0cnkgPSAxICsgbnBhZ2Vz ICUgKG1heCAvIDIpOworCQltYXggLT0gdHJ5OworCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29t cGFyZV9zd2FwX3U2NChnbG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKKworCXJldHVybiB0cnk7 Cit9CisKK3N0cnVjdCB0aHJlYWRfY2xlYXIgeworCV9BdG9taWModWludDY0X3QpIG1heDsKKwlp bnQgdGltZW91dDsKKwlpbnQgaTkxNTsKK307CisKK3N0YXRpYyBpbnQgY3JlYXRlX2lvY3RsKGlu dCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSAqY3JlYXRlKQoreworCWludCBlcnIg PSAwOworCisJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCBj cmVhdGUpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIgIT0gMCk7CisJfQor CisJZXJybm8gPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xl YXIodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyICphcmcgPSBkYXRhOworCWNv bnN0IHN0cnVjdCBtbWFwX29mZnNldCAqdDsKKwl1bnNpZ25lZCBsb25nIGNoZWNrZWQgPSAwOwor CWludCBpOTE1ID0gYXJnLT5pOTE1OworCisJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCWlndF91 bnRpbF90aW1lb3V0KGFyZy0+dGltZW91dCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0 ZSBjcmVhdGUgPSB7fTsKKwkJdWludDY0X3QgbnBhZ2VzOworCQl2b2lkICpwdHI7CisKKwkJbnBh Z2VzID0gcmFuZG9tKCk7CisJCW5wYWdlcyA8PD0gMzI7CisJCW5wYWdlcyB8PSByYW5kb20oKTsK KwkJbnBhZ2VzID0gZ2V0X25wYWdlcygmYXJnLT5tYXgsIG5wYWdlcyk7CisJCWNyZWF0ZS5zaXpl ID0gbnBhZ2VzIDw8IDEyOworCisJCWNyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRlKTsKKwkJcHRy ID0gX19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgY3JlYXRlLmhhbmRsZSwgMCwgY3JlYXRlLnNpemUs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQkvKiBObyBz ZXQtZG9tYWlucyBhcyB3ZSBhcmUgYmVpbmcgYXMgbmF1Z2h0eSBhcyBwb3NzaWJsZSAqLworCQlm b3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFnZSA8IG5wYWdlczsgcGFnZSsrKSB7CisJ CQl1aW50NjRfdCB4WzhdID0geworCQkJCXBhZ2UgKiA0MDk2ICsKKwkJCQkJc2l6ZW9mKHgpICog KChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkpIC8gc2l6ZW9mKHgpKSkKKwkJCX07CisKKwkJCWlm IChwYWdlICYgMSkKKwkJCQlpZ3RfbWVtY3B5X2Zyb21fd2MoeCwgcHRyICsgeFswXSwgc2l6ZW9m KHgpKTsKKwkJCWVsc2UKKwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKKwor CQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHgpOyBpKyspCisJCQkJaWd0X2Fzc2Vy dF9lcV91NjQoeFtpXSwgMCk7CisJCX0KKwkJaWYgKHB0cikKKwkJCW11bm1hcChwdHIsIGNyZWF0 ZS5zaXplKTsKKwkJZ2VtX2Nsb3NlKGk5MTUsIGNyZWF0ZS5oYW5kbGUpOworCQljaGVja2VkICs9 IG5wYWdlczsKKworCQlhdG9taWNfZmV0Y2hfYWRkKCZhcmctPm1heCwgbnBhZ2VzKTsKKworCQlp ZiAoISgrK3QpLT5uYW1lKQorCQkJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCX0KKworCXJldHVy biAodm9pZCAqKSh1aW50cHRyX3QpY2hlY2tlZDsKK30KKworc3RhdGljIHZvaWQgYWx3YXlzX2Ns ZWFyKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9 IHsKKwkJLmk5MTUgPSBpOTE1LAorCQkudGltZW91dCA9IHRpbWVvdXQsCisJCS5tYXggPSBpbnRl bF9nZXRfYXZhaWxfcmFtX21iKCkgPDwgKDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLworCX07CisJ Y29uc3QgaW50IG5jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTik7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkOworCXB0aHJlYWRfdCB0aHJlYWRbbmNwdXNdOworCXZvaWQgKnJlc3Vs dDsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykKKwkJcHRocmVhZF9jcmVhdGUo JnRocmVhZFtpXSwgTlVMTCwgdGhyZWFkX2NsZWFyLCAmYXJnKTsKKworCWNoZWNrZWQgPSAwOwor CWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykgeworCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKKwkJY2hlY2tlZCArPSAodWludHB0cl90KXJlc3VsdDsKKwl9CisJaWd0 X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsKK30KKwor CitpZ3RfbWFpbgoreworCWludCBpOTE1OworCisJaWd0X2ZpeHR1cmUgeworCQlpOTE1ID0gZHJt X29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWdlbV9yZXF1aXJlX21tYXBfb2Zmc2V0KGk5 MTUpOworCX0KKworCWlndF9kZXNjcmliZSgiVmVyaWZ5IG1hcHBpbmcgdG8gaW52YWxpZCBnZW0g b2JqZWN0cyB3b24ndCBiZSBjcmVhdGVkIik7CisJaWd0X3N1YnRlc3RfZigiYmFkLW9iamVjdCIp CisJCWJhZF9vYmplY3QoaTkxNSk7CisJaWd0X3N1YnRlc3RfZigiYmFkLWZsYWdzIikKKwkJYmFk X2ZsYWdzKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVjayBidWZmZXIgb2JqZWN0IG1hcHBp bmcgcGVyc2lzdHMgYWZ0ZXIgZ2VtX2Nsb3NlIik7CisJaWd0X3N1YnRlc3RfZigiYmFzaWMtdWFm IikKKwkJYmFzaWNfdWFmKGk5MTUpOworCisJaWd0X3N1YnRlc3RfZigiaXNvbGF0aW9uIikKKwkJ aXNvbGF0aW9uKGk5MTUpOworCWlndF9zdWJ0ZXN0X2YoInBmLW5vbmJsb2NrIikKKwkJcGZfbm9u YmxvY2soaTkxNSk7CisKKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIHJhY2UgYmV0d2VlbiBjbG9zZSBh bmQgbW1hcCBvZmZzZXQgYmV0d2VlbiB0aHJlYWRzIik7CisJaWd0X3N1YnRlc3RfZigiY2xvc2Ut cmFjZSIpCisJCWNsb3NlX3JhY2UoaTkxNSwgMjApOworCisJaWd0X3N1YnRlc3RfZigiY2xlYXIi KQorCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOworCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShp OTE1KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDE4Nzg4ZDQ0Yi4uMDVkZWExZjRlIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNv bi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTc0LDYgKzE3NCw3IEBAIGk5MTVf cHJvZ3MgPSBbCiAJJ2dlbV9tZWRpYV92bWUnLAogCSdnZW1fbW1hcCcsCiAJJ2dlbV9tbWFwX2d0 dCcsCisJJ2dlbV9tbWFwX29mZnNldCcsCiAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywK IAknZ2VtX21tYXBfd2MnLAogCSdnZW1fcGFydGlhbF9wd3JpdGVfcHJlYWQnLAotLSAKMi4yNC4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= 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.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,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 DA24FC432C0 for ; Thu, 28 Nov 2019 13:05:46 +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 B69C62176D for ; Thu, 28 Nov 2019 13:05:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B69C62176D 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 4BF3A6E817; Thu, 28 Nov 2019 13:05:46 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id BADC56E804; Thu, 28 Nov 2019 13:05:43 +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 19376202-1500050 for multiple; Thu, 28 Nov 2019 13:05:31 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Thu, 28 Nov 2019 13:05:28 +0000 Message-Id: <20191128130528.3886476-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 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" Message-ID: <20191128130528.VLnkaHo4oSNLr5CFS5hi8oyjUpuQLXmO5MsNUN55OYY@z> RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKRmV3IHNp bXBsZSB0ZXN0cyB3aGljaCB0cmllcyB0byBjcmVhdGUgLyBtbWFwIGJ1ZmZlciBvYmplY3RzCnVz aW5nIEdFTV9NTUFQX09GRlNFVCB1QVBJLgoKdjI6IGNoYW5nZSBmcm9tIFdDIC0+IFdCIChhY2Nv cmRpbmcgdG8gQ2hyaXMgcmV2aWV3IGNvbW1lbnQpCnYzOiBhZGQgbW1hcC1vZmZzZXQtY2xvc2Ut cmFjZSB0ZXN0CgpTaWduZWQtb2ZmLWJ5OiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFy ekBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBWYW5zaGlkaGFyIEtvbmRhIDx2YW5zaGlkaGFyLnIua29uZGFAaW50 ZWwuY29tPgotLS0KUmVxdWlyZWQgKGxvb2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBp ZGVhcyk6CiBzaXplIC0gY2hlY2sgd2UgY2FuIGhhbmRsZSBvYmplY3RzIGJleW9uZCBhIHJlYXNv bmFibGUgbGltaXQgKG5vdGUgdGhlCmtlcm5lbCBmYWlscyBhdCBiZXlvbmQgUkFNKQogZm9ya2Vk IC0gaW50ZXJhY3Rpb25zIHdpdGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MK ICAgICAgICAgIHRocmVhZHMvcHJvY2Vzc2VzCiBzdXNwZW5kIC0gY2hlY2sgc3BlZWQgaXMgY29u c2lzdGVudCBiZWZvcmUvYWZ0ZXIgc3VzcGVuZAogY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBj aGVja2VyIGJldHdlZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNl dC5jIHwgNDIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjBmZmMzY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRhdG9taWMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgImRybS5oIgorCisjaW5jbHVkZSAi aWd0LmgiCisjaW5jbHVkZSAiaWd0X3g4Ni5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiQmFz aWMgTU1BUF9PRkZTRVQgSU9DVEwgdGVzdHMgZm9yIG1lbSByZWdpb25zXG4iKTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7CisJY29uc3QgY2hhciAqbmFtZTsKKwl1bnNpZ25l ZCBpbnQgdHlwZTsKKwl1bnNpZ25lZCBpbnQgZG9tYWluOworfSBtbWFwX29mZnNldF90eXBlc1td ID0geworCXsgImd0dCIsIEk5MTVfTU1BUF9PRkZTRVRfR1RULCBJOTE1X0dFTV9ET01BSU5fR1RU IH0sCisJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9ET01BSU5fQ1BVIH0s CisJeyAid2MiLCBJOTE1X01NQVBfT0ZGU0VUX1dDLCBJOTE1X0dFTV9ET01BSU5fV0MgfSwKKwl7 ICJ1YyIsIEk5MTVfTU1BUF9PRkZTRVRfVUMsIEk5MTVfR0VNX0RPTUFJTl9XQyB9LAorCXt9LAor fTsKKworI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKF9fdCkgXAorCWZvciAoY29u c3Qgc3RydWN0IG1tYXBfb2Zmc2V0ICpfX3QgPSBtbWFwX29mZnNldF90eXBlczsgXAorCSAgICAg KF9fdCktPm5hbWU7IFwKKwkgICAgIChfX3QpKyspCisKK3N0YXRpYyBpbnQgbW1hcF9vZmZzZXRf aW9jdGwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgKmFyZykKK3sK KwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X01NQVBfT0ZGU0VULCBhcmcpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIp OworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBiYWRf b2JqZWN0KGludCBpOTE1KQoreworCXVpbnQzMl90IHJlYWxfaGFuZGxlOworCXVpbnQzMl90IGhh bmRsZXNbMjBdOworCWludCBpID0gMDsKKworCXJlYWxfaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1 LCA0MDk2KTsKKworCWhhbmRsZXNbaSsrXSA9IDB4ZGVhZGJlZWY7CisJZm9yIChpbnQgYml0ID0g MDsgYml0IDwgMTY7IGJpdCsrKQorCQloYW5kbGVzW2krK10gPSByZWFsX2hhbmRsZSB8ICgxIDw8 IChiaXQgKyAxNikpOworCWhhbmRsZXNbaV0gPSByZWFsX2hhbmRsZSArIDE7CisKKwlmb3IgKDsg aSA+PSAwOyBpLS0pIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7 CisJCQkuaGFuZGxlID0gaGFuZGxlc1tpXSwKKwkJCS5mbGFncyA9IEk5MTVfTU1BUF9PRkZTRVRf V0IsCisJCX07CisKKwkJaWd0X2RlYnVnKCJUcnlpbmcgTU1BUCBJT0NUTCB3aXRoIGhhbmRsZSAl eFxuIiwKKwkJCSAgaGFuZGxlc1tpXSk7CisJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9j dGwoaTkxNSwgJmFyZyksCisJCQkgICAgICAtRU5PRU5UKTsKKwl9CisKKwlnZW1fY2xvc2UoaTkx NSwgcmVhbF9oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYWRfZmxhZ3MoaW50IGk5MTUpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7CisJCS5oYW5kbGUgPSBn ZW1fY3JlYXRlKGk5MTUsIDQwOTYpLAorCQkuZmxhZ3MgPSAtMXVsbCwKKwl9OworCisJaWd0X2Fz c2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmYXJnKSwgLUVJTlZBTCk7CisJZ2VtX2Ns b3NlKGk5MTUsIGFyZy5oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYXNpY191YWYoaW50IGk5 MTUpCit7CisJY29uc3QgdWludDMyX3Qgb2JqX3NpemUgPSA0MDk2OworCisJZm9yX2VhY2hfbW1h cF9vZmZzZXRfdHlwZSh0KSB7CisJCXVpbnQzMl90IGhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwg b2JqX3NpemUpOworCQl1aW50OF90ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7CisKKwkJYWRkciA9 IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGhhbmRsZSwgMCwgb2JqX3NpemUsCisJCQkJCSBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJCQkgdC0+dHlwZSk7CisJCWlmICghYWRkcikgeworCQkJ Z2VtX2Nsb3NlKGk5MTUsIGhhbmRsZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWV4cGVjdGVk ID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmV4cGVjdGVkKSk7CisJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCAwKTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChhZGRy LCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY2xlYXIg b24gZ2VtX2NyZWF0ZSgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKwkJZnJlZShleHBlY3RlZCk7 CisKKwkJYnVmID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmJ1ZikpOworCQltZW1zZXQoYnVm ICsgMTAyNCwgMHgwMSwgMTAyNCk7CisJCWdlbV93cml0ZShpOTE1LCBoYW5kbGUsIDAsIGJ1Ziwg b2JqX3NpemUpOworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 CisJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBvYmpfc2l6ZSkgPT0gMCwKKwkJCSAg ICAgIm1tYXAoJXMpIG5vdCBjb2hlcmVudCB3aXRoIGdlbV93cml0ZSgpXG4iLAorCQkJICAgICB0 LT5uYW1lKTsKKworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgdC0+ ZG9tYWluKTsKKwkJbWVtc2V0KGFkZHIgKyAyMDQ4LCAweGZmLCAxMDI0KTsKKwkJZ2VtX3JlYWQo aTkxNSwgaGFuZGxlLCAwLCBidWYsIG9ial9zaXplKTsKKwkJZ2VtX3NldF9kb21haW4oaTkxNSwg aGFuZGxlLCB0LT5kb21haW4sIDApOworCQlpZ3RfYXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwg b2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1f cmVhZCgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKworCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxl KTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAorCQkJ ICAgICAibW1hcCglcykgbm90IHJlc2lkZW50IGFmdGVyIGdlbV9jbG9zZSgpXG4iLAorCQkJICAg ICB0LT5uYW1lKTsKKwkJZnJlZShidWYpOworCisJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOworCQltdW5tYXAoYWRkciwgb2JqX3NpemUpOworCX0KK30KKworc3RhdGljIHZvaWQg aXNvbGF0aW9uKGludCBpOTE1KQoreworCWZvcl9lYWNoX21tYXBfb2Zmc2V0X3R5cGUodCkgewor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0IG1tYXBfYXJnID0geworCQkJLmZsYWdz ID0gdC0+dHlwZQorCQl9OworCQlpbnQgQSA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQlp bnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQl1aW50NjRfdCBvZmZzZXRfYSwgb2Zm c2V0X2I7CisJCXVpbnQzMl90IGEsIGI7CisJCXZvaWQgKnB0cjsKKworCQlhID0gZ2VtX2NyZWF0 ZShBLCA0MDk2KTsKKwkJYiA9IGdlbV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYTsKKwkJaWYgKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2Fy ZykpIHsKKwkJCWNsb3NlKEEpOworCQkJY2xvc2UoQik7CisJCQljb250aW51ZTsKKwkJfQorCQlv ZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKKworCQltbWFwX2FyZy5oYW5kbGUgPSBiOworCQlp Z3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2FyZyksIDApOworCQlv ZmZzZXRfYiA9IG1tYXBfYXJnLm9mZnNldDsKKworCQlpZ3RfaW5mbygiQVslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBBLCBhLCBvZmZz ZXRfYSk7CisJCWlndF9pbmZvKCJCWyVzXToge2ZkOiVkLCBoYW5kbGU6JWQsIG9mZnNldDolIlBS SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQljbG9zZShCKTsK KworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBBLCBvZmZz ZXRfYSk7CisJCWlndF9hc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCQltdW5tYXAocHRyLCA0 MDk2KTsKKworCQljbG9zZShBKTsKKworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFE LCBNQVBfU0hBUkVELCBBLCBvZmZzZXRfYSk7CisJCWlndF9hc3NlcnQocHRyID09IE1BUF9GQUlM RUQpOworCX0KK30KKworc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCit7CisJaWd0 X3NwaW5fdCAqc3BpbiA9IGlndF9zcGluX25ldyhpOTE1KTsKKworCWZvcl9lYWNoX21tYXBfb2Zm c2V0X3R5cGUodCkgeworCQl1aW50MzJfdCAqcHRyOworCisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zm c2V0KGk5MTUsIHNwaW4tPmhhbmRsZSwgMCwgNDA5NiwKKwkJCQkJUFJPVF9SRUFEIHwgUFJPVF9X UklURSwKKwkJCQkJdC0+dHlwZSk7CisJCWlmICghcHRyKQorCQkJY29udGludWU7CisKKwkJaWd0 X3NldF90aW1lb3V0KDEsIHQtPm5hbWUpOworCQkvKiBubyBzZXQtZG9tYWluIGFzIHdlIHdhbnQg dG8gdmVyaWZ5IHRoZSBwYWdlZmF1bHQgaXMgYXN5bmMgKi8KKwkJcHRyWzI1Nl0gPSAwOworCQlp Z3RfcmVzZXRfdGltZW91dCgpOworCisJCW11bm1hcChwdHIsIDQwOTYpOworCX0KKworCWlndF9z cGluX2ZyZWUoaTkxNSwgc3Bpbik7Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5 MTUsIGludCB0aW1lb3V0KQoreworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7CisJc2l6ZV90IGxlbiA9 IEFMSUdOKChuY3B1cyArIDEpICogc2l6ZW9mKHVpbnQzMl90KSwgNDA5Nik7CisKKwloYW5kbGVz ID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwg MCk7CisJaWd0X2Fzc2VydChoYW5kbGVzICE9IE1BUF9GQUlMRUQpOworCisJaWd0X2ZvcmsoY2hp bGQsIG5jcHVzICsgMSkgeworCQlkbyB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zm c2V0IG1tYXBfYXJnID0ge307CisJCQljb25zdCBpbnQgaSA9IDEgKyByYW5kb20oKSAlIG5jcHVz OworCQkJdWludDMyX3Qgb2xkOworCisJCQltbWFwX2FyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5 MTUsIDQwOTYpOworCQkJbW1hcF9hcmcuZmxhZ3MgPSBJOTE1X01NQVBfT0ZGU0VUX1dCOworCQkJ b2xkID0gYXRvbWljX2V4Y2hhbmdlKCZoYW5kbGVzW2ldLCBtbWFwX2FyZy5oYW5kbGUpOworCQkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgJm9sZCk7CisKKwkJCWlmIChpb2N0bChp OTE1LAorCQkJCSAgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULAorCQkJCSAgJm1tYXBf YXJnKSAhPSAtMSkgeworCQkJCXZvaWQgKnB0cjsKKworCQkJCXB0ciA9IG1tYXA2NCgwLCA0MDk2 LAorCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGk5MTUsCisJCQkJCSAgICAgbW1h cF9hcmcub2Zmc2V0KTsKKwkJCQlpZiAocHRyICE9IE1BUF9GQUlMRUQpIHsKKwkJCQkJKih2b2xh dGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7CisJCQkJCW11bm1hcChwdHIsIDQwOTYpOworCQkJCX0K KwkJCX0KKworCQl9IHdoaWxlICghUkVBRF9PTkNFKGhhbmRsZXNbMF0pKTsKKwl9CisKKwlzbGVl cCh0aW1lb3V0KTsKKwloYW5kbGVzWzBdID0gMTsKKwlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisKKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQorCQlpb2N0bChpOTE1LCBEUk1fSU9DVExf R0VNX0NMT1NFLCBoYW5kbGVzW2ldKTsKKwltdW5tYXAoaGFuZGxlcywgbGVuKTsKK30KKworc3Rh dGljIHVpbnQ2NF90IGF0b21pY19jb21wYXJlX3N3YXBfdTY0KF9BdG9taWModWludDY0X3QpICpw dHIsCisJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQoreworCWF0b21pY19j b21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhwdHIsICZvbGR2YWwsIG5ld3ZhbCk7CisJcmV0dXJuIG9s ZHZhbDsKK30KKworc3RhdGljIHVpbnQ2NF90IGdldF9ucGFnZXMoX0F0b21pYyh1aW50NjRfdCkg Kmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQoreworCXVpbnQ2NF90IHRyeSwgb2xkLCBtYXg7CisK KwltYXggPSAqZ2xvYmFsOworCWRvIHsKKwkJb2xkID0gbWF4OworCQl0cnkgPSAxICsgbnBhZ2Vz ICUgKG1heCAvIDIpOworCQltYXggLT0gdHJ5OworCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29t cGFyZV9zd2FwX3U2NChnbG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKKworCXJldHVybiB0cnk7 Cit9CisKK3N0cnVjdCB0aHJlYWRfY2xlYXIgeworCV9BdG9taWModWludDY0X3QpIG1heDsKKwlp bnQgdGltZW91dDsKKwlpbnQgaTkxNTsKK307CisKK3N0YXRpYyBpbnQgY3JlYXRlX2lvY3RsKGlu dCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSAqY3JlYXRlKQoreworCWludCBlcnIg PSAwOworCisJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCBj cmVhdGUpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIgIT0gMCk7CisJfQor CisJZXJybm8gPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xl YXIodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyICphcmcgPSBkYXRhOworCWNv bnN0IHN0cnVjdCBtbWFwX29mZnNldCAqdDsKKwl1bnNpZ25lZCBsb25nIGNoZWNrZWQgPSAwOwor CWludCBpOTE1ID0gYXJnLT5pOTE1OworCisJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCWlndF91 bnRpbF90aW1lb3V0KGFyZy0+dGltZW91dCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0 ZSBjcmVhdGUgPSB7fTsKKwkJdWludDY0X3QgbnBhZ2VzOworCQl2b2lkICpwdHI7CisKKwkJbnBh Z2VzID0gcmFuZG9tKCk7CisJCW5wYWdlcyA8PD0gMzI7CisJCW5wYWdlcyB8PSByYW5kb20oKTsK KwkJbnBhZ2VzID0gZ2V0X25wYWdlcygmYXJnLT5tYXgsIG5wYWdlcyk7CisJCWNyZWF0ZS5zaXpl ID0gbnBhZ2VzIDw8IDEyOworCisJCWNyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRlKTsKKwkJcHRy ID0gX19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgY3JlYXRlLmhhbmRsZSwgMCwgY3JlYXRlLnNpemUs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQkvKiBObyBz ZXQtZG9tYWlucyBhcyB3ZSBhcmUgYmVpbmcgYXMgbmF1Z2h0eSBhcyBwb3NzaWJsZSAqLworCQlm b3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFnZSA8IG5wYWdlczsgcGFnZSsrKSB7CisJ CQl1aW50NjRfdCB4WzhdID0geworCQkJCXBhZ2UgKiA0MDk2ICsKKwkJCQkJc2l6ZW9mKHgpICog KChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkpIC8gc2l6ZW9mKHgpKSkKKwkJCX07CisKKwkJCWlm IChwYWdlICYgMSkKKwkJCQlpZ3RfbWVtY3B5X2Zyb21fd2MoeCwgcHRyICsgeFswXSwgc2l6ZW9m KHgpKTsKKwkJCWVsc2UKKwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKKwor CQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHgpOyBpKyspCisJCQkJaWd0X2Fzc2Vy dF9lcV91NjQoeFtpXSwgMCk7CisJCX0KKwkJaWYgKHB0cikKKwkJCW11bm1hcChwdHIsIGNyZWF0 ZS5zaXplKTsKKwkJZ2VtX2Nsb3NlKGk5MTUsIGNyZWF0ZS5oYW5kbGUpOworCQljaGVja2VkICs9 IG5wYWdlczsKKworCQlhdG9taWNfZmV0Y2hfYWRkKCZhcmctPm1heCwgbnBhZ2VzKTsKKworCQlp ZiAoISgrK3QpLT5uYW1lKQorCQkJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCX0KKworCXJldHVy biAodm9pZCAqKSh1aW50cHRyX3QpY2hlY2tlZDsKK30KKworc3RhdGljIHZvaWQgYWx3YXlzX2Ns ZWFyKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9 IHsKKwkJLmk5MTUgPSBpOTE1LAorCQkudGltZW91dCA9IHRpbWVvdXQsCisJCS5tYXggPSBpbnRl bF9nZXRfYXZhaWxfcmFtX21iKCkgPDwgKDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLworCX07CisJ Y29uc3QgaW50IG5jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTik7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkOworCXB0aHJlYWRfdCB0aHJlYWRbbmNwdXNdOworCXZvaWQgKnJlc3Vs dDsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykKKwkJcHRocmVhZF9jcmVhdGUo JnRocmVhZFtpXSwgTlVMTCwgdGhyZWFkX2NsZWFyLCAmYXJnKTsKKworCWNoZWNrZWQgPSAwOwor CWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykgeworCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKKwkJY2hlY2tlZCArPSAodWludHB0cl90KXJlc3VsdDsKKwl9CisJaWd0 X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsKK30KKwor CitpZ3RfbWFpbgoreworCWludCBpOTE1OworCisJaWd0X2ZpeHR1cmUgeworCQlpOTE1ID0gZHJt X29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWdlbV9yZXF1aXJlX21tYXBfb2Zmc2V0KGk5 MTUpOworCX0KKworCWlndF9kZXNjcmliZSgiVmVyaWZ5IG1hcHBpbmcgdG8gaW52YWxpZCBnZW0g b2JqZWN0cyB3b24ndCBiZSBjcmVhdGVkIik7CisJaWd0X3N1YnRlc3RfZigiYmFkLW9iamVjdCIp CisJCWJhZF9vYmplY3QoaTkxNSk7CisJaWd0X3N1YnRlc3RfZigiYmFkLWZsYWdzIikKKwkJYmFk X2ZsYWdzKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVjayBidWZmZXIgb2JqZWN0IG1hcHBp bmcgcGVyc2lzdHMgYWZ0ZXIgZ2VtX2Nsb3NlIik7CisJaWd0X3N1YnRlc3RfZigiYmFzaWMtdWFm IikKKwkJYmFzaWNfdWFmKGk5MTUpOworCisJaWd0X3N1YnRlc3RfZigiaXNvbGF0aW9uIikKKwkJ aXNvbGF0aW9uKGk5MTUpOworCWlndF9zdWJ0ZXN0X2YoInBmLW5vbmJsb2NrIikKKwkJcGZfbm9u YmxvY2soaTkxNSk7CisKKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIHJhY2UgYmV0d2VlbiBjbG9zZSBh bmQgbW1hcCBvZmZzZXQgYmV0d2VlbiB0aHJlYWRzIik7CisJaWd0X3N1YnRlc3RfZigiY2xvc2Ut cmFjZSIpCisJCWNsb3NlX3JhY2UoaTkxNSwgMjApOworCisJaWd0X3N1YnRlc3RfZigiY2xlYXIi KQorCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOworCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShp OTE1KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDE4Nzg4ZDQ0Yi4uMDVkZWExZjRlIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNv bi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTc0LDYgKzE3NCw3IEBAIGk5MTVf cHJvZ3MgPSBbCiAJJ2dlbV9tZWRpYV92bWUnLAogCSdnZW1fbW1hcCcsCiAJJ2dlbV9tbWFwX2d0 dCcsCisJJ2dlbV9tbWFwX29mZnNldCcsCiAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywK IAknZ2VtX21tYXBfd2MnLAogCSdnZW1fcGFydGlhbF9wd3JpdGVfcHJlYWQnLAotLSAKMi4yNC4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 28 Nov 2019 13:05:28 +0000 Message-Id: <20191128130528.3886476-1-chris@chris-wilson.co.uk> In-Reply-To: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKRmV3IHNp bXBsZSB0ZXN0cyB3aGljaCB0cmllcyB0byBjcmVhdGUgLyBtbWFwIGJ1ZmZlciBvYmplY3RzCnVz aW5nIEdFTV9NTUFQX09GRlNFVCB1QVBJLgoKdjI6IGNoYW5nZSBmcm9tIFdDIC0+IFdCIChhY2Nv cmRpbmcgdG8gQ2hyaXMgcmV2aWV3IGNvbW1lbnQpCnYzOiBhZGQgbW1hcC1vZmZzZXQtY2xvc2Ut cmFjZSB0ZXN0CgpTaWduZWQtb2ZmLWJ5OiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFy ekBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBWYW5zaGlkaGFyIEtvbmRhIDx2YW5zaGlkaGFyLnIua29uZGFAaW50 ZWwuY29tPgotLS0KUmVxdWlyZWQgKGxvb2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBp ZGVhcyk6CiBzaXplIC0gY2hlY2sgd2UgY2FuIGhhbmRsZSBvYmplY3RzIGJleW9uZCBhIHJlYXNv bmFibGUgbGltaXQgKG5vdGUgdGhlCmtlcm5lbCBmYWlscyBhdCBiZXlvbmQgUkFNKQogZm9ya2Vk IC0gaW50ZXJhY3Rpb25zIHdpdGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MK ICAgICAgICAgIHRocmVhZHMvcHJvY2Vzc2VzCiBzdXNwZW5kIC0gY2hlY2sgc3BlZWQgaXMgY29u c2lzdGVudCBiZWZvcmUvYWZ0ZXIgc3VzcGVuZAogY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBj aGVja2VyIGJldHdlZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNl dC5jIHwgNDIwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjBmZmMzY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUg PHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRhdG9taWMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgImRybS5oIgorCisjaW5jbHVkZSAi aWd0LmgiCisjaW5jbHVkZSAiaWd0X3g4Ni5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiQmFz aWMgTU1BUF9PRkZTRVQgSU9DVEwgdGVzdHMgZm9yIG1lbSByZWdpb25zXG4iKTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7CisJY29uc3QgY2hhciAqbmFtZTsKKwl1bnNpZ25l ZCBpbnQgdHlwZTsKKwl1bnNpZ25lZCBpbnQgZG9tYWluOworfSBtbWFwX29mZnNldF90eXBlc1td ID0geworCXsgImd0dCIsIEk5MTVfTU1BUF9PRkZTRVRfR1RULCBJOTE1X0dFTV9ET01BSU5fR1RU IH0sCisJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9ET01BSU5fQ1BVIH0s CisJeyAid2MiLCBJOTE1X01NQVBfT0ZGU0VUX1dDLCBJOTE1X0dFTV9ET01BSU5fV0MgfSwKKwl7 ICJ1YyIsIEk5MTVfTU1BUF9PRkZTRVRfVUMsIEk5MTVfR0VNX0RPTUFJTl9XQyB9LAorCXt9LAor fTsKKworI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKF9fdCkgXAorCWZvciAoY29u c3Qgc3RydWN0IG1tYXBfb2Zmc2V0ICpfX3QgPSBtbWFwX29mZnNldF90eXBlczsgXAorCSAgICAg KF9fdCktPm5hbWU7IFwKKwkgICAgIChfX3QpKyspCisKK3N0YXRpYyBpbnQgbW1hcF9vZmZzZXRf aW9jdGwoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgKmFyZykKK3sK KwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VN X01NQVBfT0ZGU0VULCBhcmcpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIp OworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBiYWRf b2JqZWN0KGludCBpOTE1KQoreworCXVpbnQzMl90IHJlYWxfaGFuZGxlOworCXVpbnQzMl90IGhh bmRsZXNbMjBdOworCWludCBpID0gMDsKKworCXJlYWxfaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1 LCA0MDk2KTsKKworCWhhbmRsZXNbaSsrXSA9IDB4ZGVhZGJlZWY7CisJZm9yIChpbnQgYml0ID0g MDsgYml0IDwgMTY7IGJpdCsrKQorCQloYW5kbGVzW2krK10gPSByZWFsX2hhbmRsZSB8ICgxIDw8 IChiaXQgKyAxNikpOworCWhhbmRsZXNbaV0gPSByZWFsX2hhbmRsZSArIDE7CisKKwlmb3IgKDsg aSA+PSAwOyBpLS0pIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7 CisJCQkuaGFuZGxlID0gaGFuZGxlc1tpXSwKKwkJCS5mbGFncyA9IEk5MTVfTU1BUF9PRkZTRVRf V0IsCisJCX07CisKKwkJaWd0X2RlYnVnKCJUcnlpbmcgTU1BUCBJT0NUTCB3aXRoIGhhbmRsZSAl eFxuIiwKKwkJCSAgaGFuZGxlc1tpXSk7CisJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9j dGwoaTkxNSwgJmFyZyksCisJCQkgICAgICAtRU5PRU5UKTsKKwl9CisKKwlnZW1fY2xvc2UoaTkx NSwgcmVhbF9oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYWRfZmxhZ3MoaW50IGk5MTUpCit7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7CisJCS5oYW5kbGUgPSBn ZW1fY3JlYXRlKGk5MTUsIDQwOTYpLAorCQkuZmxhZ3MgPSAtMXVsbCwKKwl9OworCisJaWd0X2Fz c2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmYXJnKSwgLUVJTlZBTCk7CisJZ2VtX2Ns b3NlKGk5MTUsIGFyZy5oYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBiYXNpY191YWYoaW50IGk5 MTUpCit7CisJY29uc3QgdWludDMyX3Qgb2JqX3NpemUgPSA0MDk2OworCisJZm9yX2VhY2hfbW1h cF9vZmZzZXRfdHlwZSh0KSB7CisJCXVpbnQzMl90IGhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwg b2JqX3NpemUpOworCQl1aW50OF90ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7CisKKwkJYWRkciA9 IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGhhbmRsZSwgMCwgb2JqX3NpemUsCisJCQkJCSBQUk9U X1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJCQkgdC0+dHlwZSk7CisJCWlmICghYWRkcikgeworCQkJ Z2VtX2Nsb3NlKGk5MTUsIGhhbmRsZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWV4cGVjdGVk ID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmV4cGVjdGVkKSk7CisJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCAwKTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChhZGRy LCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY2xlYXIg b24gZ2VtX2NyZWF0ZSgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKwkJZnJlZShleHBlY3RlZCk7 CisKKwkJYnVmID0gY2FsbG9jKG9ial9zaXplLCBzaXplb2YoKmJ1ZikpOworCQltZW1zZXQoYnVm ICsgMTAyNCwgMHgwMSwgMTAyNCk7CisJCWdlbV93cml0ZShpOTE1LCBoYW5kbGUsIDAsIGJ1Ziwg b2JqX3NpemUpOworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 CisJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBvYmpfc2l6ZSkgPT0gMCwKKwkJCSAg ICAgIm1tYXAoJXMpIG5vdCBjb2hlcmVudCB3aXRoIGdlbV93cml0ZSgpXG4iLAorCQkJICAgICB0 LT5uYW1lKTsKKworCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgdC0+ ZG9tYWluKTsKKwkJbWVtc2V0KGFkZHIgKyAyMDQ4LCAweGZmLCAxMDI0KTsKKwkJZ2VtX3JlYWQo aTkxNSwgaGFuZGxlLCAwLCBidWYsIG9ial9zaXplKTsKKwkJZ2VtX3NldF9kb21haW4oaTkxNSwg aGFuZGxlLCB0LT5kb21haW4sIDApOworCQlpZ3RfYXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwg b2JqX3NpemUpID09IDAsCisJCQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1f cmVhZCgpXG4iLAorCQkJICAgICB0LT5uYW1lKTsKKworCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxl KTsKKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAorCQkJ ICAgICAibW1hcCglcykgbm90IHJlc2lkZW50IGFmdGVyIGdlbV9jbG9zZSgpXG4iLAorCQkJICAg ICB0LT5uYW1lKTsKKwkJZnJlZShidWYpOworCisJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOworCQltdW5tYXAoYWRkciwgb2JqX3NpemUpOworCX0KK30KKworc3RhdGljIHZvaWQg aXNvbGF0aW9uKGludCBpOTE1KQoreworCWZvcl9lYWNoX21tYXBfb2Zmc2V0X3R5cGUodCkgewor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0IG1tYXBfYXJnID0geworCQkJLmZsYWdz ID0gdC0+dHlwZQorCQl9OworCQlpbnQgQSA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQlp bnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOworCQl1aW50NjRfdCBvZmZzZXRfYSwgb2Zm c2V0X2I7CisJCXVpbnQzMl90IGEsIGI7CisJCXZvaWQgKnB0cjsKKworCQlhID0gZ2VtX2NyZWF0 ZShBLCA0MDk2KTsKKwkJYiA9IGdlbV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYTsKKwkJaWYgKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2Fy ZykpIHsKKwkJCWNsb3NlKEEpOworCQkJY2xvc2UoQik7CisJCQljb250aW51ZTsKKwkJfQorCQlv ZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKKworCQltbWFwX2FyZy5oYW5kbGUgPSBiOworCQlp Z3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFwX2FyZyksIDApOworCQlv ZmZzZXRfYiA9IG1tYXBfYXJnLm9mZnNldDsKKworCQlpZ3RfaW5mbygiQVslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBBLCBhLCBvZmZz ZXRfYSk7CisJCWlndF9pbmZvKCJCWyVzXToge2ZkOiVkLCBoYW5kbGU6JWQsIG9mZnNldDolIlBS SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQljbG9zZShCKTsK KworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBBLCBvZmZz ZXRfYSk7CisJCWlndF9hc3NlcnQocHRyICE9IE1BUF9GQUlMRUQpOworCQltdW5tYXAocHRyLCA0 MDk2KTsKKworCQljbG9zZShBKTsKKworCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwgUFJPVF9SRUFE LCBNQVBfU0hBUkVELCBBLCBvZmZzZXRfYSk7CisJCWlndF9hc3NlcnQocHRyID09IE1BUF9GQUlM RUQpOworCX0KK30KKworc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCit7CisJaWd0 X3NwaW5fdCAqc3BpbiA9IGlndF9zcGluX25ldyhpOTE1KTsKKworCWZvcl9lYWNoX21tYXBfb2Zm c2V0X3R5cGUodCkgeworCQl1aW50MzJfdCAqcHRyOworCisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zm c2V0KGk5MTUsIHNwaW4tPmhhbmRsZSwgMCwgNDA5NiwKKwkJCQkJUFJPVF9SRUFEIHwgUFJPVF9X UklURSwKKwkJCQkJdC0+dHlwZSk7CisJCWlmICghcHRyKQorCQkJY29udGludWU7CisKKwkJaWd0 X3NldF90aW1lb3V0KDEsIHQtPm5hbWUpOworCQkvKiBubyBzZXQtZG9tYWluIGFzIHdlIHdhbnQg dG8gdmVyaWZ5IHRoZSBwYWdlZmF1bHQgaXMgYXN5bmMgKi8KKwkJcHRyWzI1Nl0gPSAwOworCQlp Z3RfcmVzZXRfdGltZW91dCgpOworCisJCW11bm1hcChwdHIsIDQwOTYpOworCX0KKworCWlndF9z cGluX2ZyZWUoaTkxNSwgc3Bpbik7Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5 MTUsIGludCB0aW1lb3V0KQoreworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7CisJc2l6ZV90IGxlbiA9 IEFMSUdOKChuY3B1cyArIDEpICogc2l6ZW9mKHVpbnQzMl90KSwgNDA5Nik7CisKKwloYW5kbGVz ID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwg MCk7CisJaWd0X2Fzc2VydChoYW5kbGVzICE9IE1BUF9GQUlMRUQpOworCisJaWd0X2ZvcmsoY2hp bGQsIG5jcHVzICsgMSkgeworCQlkbyB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfb2Zm c2V0IG1tYXBfYXJnID0ge307CisJCQljb25zdCBpbnQgaSA9IDEgKyByYW5kb20oKSAlIG5jcHVz OworCQkJdWludDMyX3Qgb2xkOworCisJCQltbWFwX2FyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5 MTUsIDQwOTYpOworCQkJbW1hcF9hcmcuZmxhZ3MgPSBJOTE1X01NQVBfT0ZGU0VUX1dCOworCQkJ b2xkID0gYXRvbWljX2V4Y2hhbmdlKCZoYW5kbGVzW2ldLCBtbWFwX2FyZy5oYW5kbGUpOworCQkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgJm9sZCk7CisKKwkJCWlmIChpb2N0bChp OTE1LAorCQkJCSAgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULAorCQkJCSAgJm1tYXBf YXJnKSAhPSAtMSkgeworCQkJCXZvaWQgKnB0cjsKKworCQkJCXB0ciA9IG1tYXA2NCgwLCA0MDk2 LAorCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGk5MTUsCisJCQkJCSAgICAgbW1h cF9hcmcub2Zmc2V0KTsKKwkJCQlpZiAocHRyICE9IE1BUF9GQUlMRUQpIHsKKwkJCQkJKih2b2xh dGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7CisJCQkJCW11bm1hcChwdHIsIDQwOTYpOworCQkJCX0K KwkJCX0KKworCQl9IHdoaWxlICghUkVBRF9PTkNFKGhhbmRsZXNbMF0pKTsKKwl9CisKKwlzbGVl cCh0aW1lb3V0KTsKKwloYW5kbGVzWzBdID0gMTsKKwlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisKKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQorCQlpb2N0bChpOTE1LCBEUk1fSU9DVExf R0VNX0NMT1NFLCBoYW5kbGVzW2ldKTsKKwltdW5tYXAoaGFuZGxlcywgbGVuKTsKK30KKworc3Rh dGljIHVpbnQ2NF90IGF0b21pY19jb21wYXJlX3N3YXBfdTY0KF9BdG9taWModWludDY0X3QpICpw dHIsCisJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQoreworCWF0b21pY19j b21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhwdHIsICZvbGR2YWwsIG5ld3ZhbCk7CisJcmV0dXJuIG9s ZHZhbDsKK30KKworc3RhdGljIHVpbnQ2NF90IGdldF9ucGFnZXMoX0F0b21pYyh1aW50NjRfdCkg Kmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQoreworCXVpbnQ2NF90IHRyeSwgb2xkLCBtYXg7CisK KwltYXggPSAqZ2xvYmFsOworCWRvIHsKKwkJb2xkID0gbWF4OworCQl0cnkgPSAxICsgbnBhZ2Vz ICUgKG1heCAvIDIpOworCQltYXggLT0gdHJ5OworCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29t cGFyZV9zd2FwX3U2NChnbG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKKworCXJldHVybiB0cnk7 Cit9CisKK3N0cnVjdCB0aHJlYWRfY2xlYXIgeworCV9BdG9taWModWludDY0X3QpIG1heDsKKwlp bnQgdGltZW91dDsKKwlpbnQgaTkxNTsKK307CisKK3N0YXRpYyBpbnQgY3JlYXRlX2lvY3RsKGlu dCBpOTE1LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSAqY3JlYXRlKQoreworCWludCBlcnIg PSAwOworCisJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCBj cmVhdGUpKSB7CisJCWVyciA9IC1lcnJubzsKKwkJaWd0X2Fzc3VtZShlcnIgIT0gMCk7CisJfQor CisJZXJybm8gPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xl YXIodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyICphcmcgPSBkYXRhOworCWNv bnN0IHN0cnVjdCBtbWFwX29mZnNldCAqdDsKKwl1bnNpZ25lZCBsb25nIGNoZWNrZWQgPSAwOwor CWludCBpOTE1ID0gYXJnLT5pOTE1OworCisJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCWlndF91 bnRpbF90aW1lb3V0KGFyZy0+dGltZW91dCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0 ZSBjcmVhdGUgPSB7fTsKKwkJdWludDY0X3QgbnBhZ2VzOworCQl2b2lkICpwdHI7CisKKwkJbnBh Z2VzID0gcmFuZG9tKCk7CisJCW5wYWdlcyA8PD0gMzI7CisJCW5wYWdlcyB8PSByYW5kb20oKTsK KwkJbnBhZ2VzID0gZ2V0X25wYWdlcygmYXJnLT5tYXgsIG5wYWdlcyk7CisJCWNyZWF0ZS5zaXpl ID0gbnBhZ2VzIDw8IDEyOworCisJCWNyZWF0ZV9pb2N0bChpOTE1LCAmY3JlYXRlKTsKKwkJcHRy ID0gX19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgY3JlYXRlLmhhbmRsZSwgMCwgY3JlYXRlLnNpemUs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQkvKiBObyBz ZXQtZG9tYWlucyBhcyB3ZSBhcmUgYmVpbmcgYXMgbmF1Z2h0eSBhcyBwb3NzaWJsZSAqLworCQlm b3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFnZSA8IG5wYWdlczsgcGFnZSsrKSB7CisJ CQl1aW50NjRfdCB4WzhdID0geworCQkJCXBhZ2UgKiA0MDk2ICsKKwkJCQkJc2l6ZW9mKHgpICog KChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkpIC8gc2l6ZW9mKHgpKSkKKwkJCX07CisKKwkJCWlm IChwYWdlICYgMSkKKwkJCQlpZ3RfbWVtY3B5X2Zyb21fd2MoeCwgcHRyICsgeFswXSwgc2l6ZW9m KHgpKTsKKwkJCWVsc2UKKwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKKwor CQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHgpOyBpKyspCisJCQkJaWd0X2Fzc2Vy dF9lcV91NjQoeFtpXSwgMCk7CisJCX0KKwkJaWYgKHB0cikKKwkJCW11bm1hcChwdHIsIGNyZWF0 ZS5zaXplKTsKKwkJZ2VtX2Nsb3NlKGk5MTUsIGNyZWF0ZS5oYW5kbGUpOworCQljaGVja2VkICs9 IG5wYWdlczsKKworCQlhdG9taWNfZmV0Y2hfYWRkKCZhcmctPm1heCwgbnBhZ2VzKTsKKworCQlp ZiAoISgrK3QpLT5uYW1lKQorCQkJdCA9IG1tYXBfb2Zmc2V0X3R5cGVzOworCX0KKworCXJldHVy biAodm9pZCAqKSh1aW50cHRyX3QpY2hlY2tlZDsKK30KKworc3RhdGljIHZvaWQgYWx3YXlzX2Ns ZWFyKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9 IHsKKwkJLmk5MTUgPSBpOTE1LAorCQkudGltZW91dCA9IHRpbWVvdXQsCisJCS5tYXggPSBpbnRl bF9nZXRfYXZhaWxfcmFtX21iKCkgPDwgKDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLworCX07CisJ Y29uc3QgaW50IG5jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfT05MTik7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkOworCXB0aHJlYWRfdCB0aHJlYWRbbmNwdXNdOworCXZvaWQgKnJlc3Vs dDsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykKKwkJcHRocmVhZF9jcmVhdGUo JnRocmVhZFtpXSwgTlVMTCwgdGhyZWFkX2NsZWFyLCAmYXJnKTsKKworCWNoZWNrZWQgPSAwOwor CWZvciAoaW50IGkgPSAwOyBpIDwgbmNwdXM7IGkrKykgeworCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKKwkJY2hlY2tlZCArPSAodWludHB0cl90KXJlc3VsdDsKKwl9CisJaWd0 X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsKK30KKwor CitpZ3RfbWFpbgoreworCWludCBpOTE1OworCisJaWd0X2ZpeHR1cmUgeworCQlpOTE1ID0gZHJt X29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWdlbV9yZXF1aXJlX21tYXBfb2Zmc2V0KGk5 MTUpOworCX0KKworCWlndF9kZXNjcmliZSgiVmVyaWZ5IG1hcHBpbmcgdG8gaW52YWxpZCBnZW0g b2JqZWN0cyB3b24ndCBiZSBjcmVhdGVkIik7CisJaWd0X3N1YnRlc3RfZigiYmFkLW9iamVjdCIp CisJCWJhZF9vYmplY3QoaTkxNSk7CisJaWd0X3N1YnRlc3RfZigiYmFkLWZsYWdzIikKKwkJYmFk X2ZsYWdzKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVjayBidWZmZXIgb2JqZWN0IG1hcHBp bmcgcGVyc2lzdHMgYWZ0ZXIgZ2VtX2Nsb3NlIik7CisJaWd0X3N1YnRlc3RfZigiYmFzaWMtdWFm IikKKwkJYmFzaWNfdWFmKGk5MTUpOworCisJaWd0X3N1YnRlc3RfZigiaXNvbGF0aW9uIikKKwkJ aXNvbGF0aW9uKGk5MTUpOworCWlndF9zdWJ0ZXN0X2YoInBmLW5vbmJsb2NrIikKKwkJcGZfbm9u YmxvY2soaTkxNSk7CisKKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIHJhY2UgYmV0d2VlbiBjbG9zZSBh bmQgbW1hcCBvZmZzZXQgYmV0d2VlbiB0aHJlYWRzIik7CisJaWd0X3N1YnRlc3RfZigiY2xvc2Ut cmFjZSIpCisJCWNsb3NlX3JhY2UoaTkxNSwgMjApOworCisJaWd0X3N1YnRlc3RfZigiY2xlYXIi KQorCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOworCisJaWd0X2ZpeHR1cmUgeworCQljbG9zZShp OTE1KTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29u LmJ1aWxkCmluZGV4IDE4Nzg4ZDQ0Yi4uMDVkZWExZjRlIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNv bi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTc0LDYgKzE3NCw3IEBAIGk5MTVf cHJvZ3MgPSBbCiAJJ2dlbV9tZWRpYV92bWUnLAogCSdnZW1fbW1hcCcsCiAJJ2dlbV9tbWFwX2d0 dCcsCisJJ2dlbV9tbWFwX29mZnNldCcsCiAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywK IAknZ2VtX21tYXBfd2MnLAogCSdnZW1fcGFydGlhbF9wd3JpdGVfcHJlYWQnLAotLSAKMi4yNC4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=