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 12:55:02 +0000 Message-ID: <20191128125502.3886404-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 dC5jIHwgNDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTc1YzNmZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHly 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 cF9hcmcuaGFuZGxlID0gYTsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2EgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYjsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2IgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJaWd0 X2luZm8oIkFbJXNdOiB7ZmQ6JWQsIGhhbmRsZTolZCwgb2Zmc2V0OiUiUFJJeDY0In1cbiIsCisJ CQkgdC0+bmFtZSwgQSwgYSwgb2Zmc2V0X2EpOworCQlpZ3RfaW5mbygiQlslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBCLCBiLCBvZmZz ZXRfYik7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1RfUkVB RCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBfRkFJ TEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0gbW1h cDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3Rf YXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25vbmJs b2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7 CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsKKwor CQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYsCisJ CQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0cikK KwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyogbm8g c2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5jICov CisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAocHRy LCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0aWMg dm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQgbmNw dXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90ICpo YW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50MzJf dCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBfRkFJ TEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3RydWN0 IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50IGkg PSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9hcmcu aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0gSTkx NV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tpXSwg bW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0UsICZv bGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQ X09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisKKwkJ CQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hBUkVE LCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBNQVBf RkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQltdW5t YXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRShoYW5k bGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJaWd0 X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykKKwkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFwKGhh bmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2 NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2NF90 IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFs LCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRfbnBh Z2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1aW50 NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9IG1h eDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9IHdo aWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkpICE9 IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlfQXRv bWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitzdGF0 aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUg KmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lP Q1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9h c3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVhZF9j bGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBtbWFw X29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJc3Ry dWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdlczsK KwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMyOwor CQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4LCBu cGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9jdGwo aTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5o YW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJ CQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBhZ2Ug PCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICogNDA5 NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNpemVv Zih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9tX3dj KHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0ciAr IHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4 KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChwdHIp CisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVhdGUu aGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgmYXJn LT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29mZnNl dF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9CisK K3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJc3Ry dWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQgPSB0 aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEyKSwg LyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhyZWFk W25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBp KyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFy Zyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsK KwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVpbnRw dHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0aW9u c1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlnZW1f cmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlmeSBt YXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWlndF9z dWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0ZXN0 X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgiQ2hl Y2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOworCWln dF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9zdWJ0 ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9mKCJw Zi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVj ayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIpOwor CWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsKKwor CWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKworCWln dF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0ZSAx MDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAg LTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAknZ2Vt X21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1fbW1h cF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxfcHdy aXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4 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 1E5ACC432C0 for ; Thu, 28 Nov 2019 12:55:17 +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 EC3A42176D for ; Thu, 28 Nov 2019 12:55:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EC3A42176D 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 86D2489AB3; Thu, 28 Nov 2019 12:55:16 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 27E0D89AB3; Thu, 28 Nov 2019 12:55:14 +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 19376043-1500050 for multiple; Thu, 28 Nov 2019 12:55:07 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Thu, 28 Nov 2019 12:55:02 +0000 Message-Id: <20191128125502.3886404-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: <20191128125502.cs-Ve30nd0Z5W6b4Y9qXt9UsvWKg1iDc38yCTpQhgdQ@z> RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKRmV3IHNp bXBsZSB0ZXN0cyB3aGljaCB0cmllcyB0byBjcmVhdGUgLyBtbWFwIGJ1ZmZlciBvYmplY3RzCnVz aW5nIEdFTV9NTUFQX09GRlNFVCB1QVBJLgoKdjI6IGNoYW5nZSBmcm9tIFdDIC0+IFdCIChhY2Nv cmRpbmcgdG8gQ2hyaXMgcmV2aWV3IGNvbW1lbnQpCnYzOiBhZGQgbW1hcC1vZmZzZXQtY2xvc2Ut cmFjZSB0ZXN0CgpTaWduZWQtb2ZmLWJ5OiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFy ekBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBWYW5zaGlkaGFyIEtvbmRhIDx2YW5zaGlkaGFyLnIua29uZGFAaW50 ZWwuY29tPgotLS0KUmVxdWlyZWQgKGxvb2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBp ZGVhcyk6CiBzaXplIC0gY2hlY2sgd2UgY2FuIGhhbmRsZSBvYmplY3RzIGJleW9uZCBhIHJlYXNv bmFibGUgbGltaXQgKG5vdGUgdGhlCmtlcm5lbCBmYWlscyBhdCBiZXlvbmQgUkFNKQogZm9ya2Vk IC0gaW50ZXJhY3Rpb25zIHdpdGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MK ICAgICAgICAgIHRocmVhZHMvcHJvY2Vzc2VzCiBzdXNwZW5kIC0gY2hlY2sgc3BlZWQgaXMgY29u c2lzdGVudCBiZWZvcmUvYWZ0ZXIgc3VzcGVuZAogY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBj aGVja2VyIGJldHdlZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNl dC5jIHwgNDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTc1YzNmZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHly 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 cF9hcmcuaGFuZGxlID0gYTsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2EgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYjsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2IgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJaWd0 X2luZm8oIkFbJXNdOiB7ZmQ6JWQsIGhhbmRsZTolZCwgb2Zmc2V0OiUiUFJJeDY0In1cbiIsCisJ CQkgdC0+bmFtZSwgQSwgYSwgb2Zmc2V0X2EpOworCQlpZ3RfaW5mbygiQlslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBCLCBiLCBvZmZz ZXRfYik7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1RfUkVB RCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBfRkFJ TEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0gbW1h cDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3Rf YXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25vbmJs b2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7 CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsKKwor CQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYsCisJ CQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0cikK KwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyogbm8g c2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5jICov CisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAocHRy LCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0aWMg dm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQgbmNw dXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90ICpo YW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50MzJf dCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBfRkFJ TEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3RydWN0 IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50IGkg PSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9hcmcu aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0gSTkx NV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tpXSwg bW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0UsICZv bGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQ X09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisKKwkJ CQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hBUkVE LCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBNQVBf RkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQltdW5t YXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRShoYW5k bGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJaWd0 X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykKKwkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFwKGhh bmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2 NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2NF90 IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFs LCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRfbnBh Z2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1aW50 NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9IG1h eDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9IHdo aWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkpICE9 IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlfQXRv bWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitzdGF0 aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUg KmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lP Q1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9h c3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVhZF9j bGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBtbWFw X29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJc3Ry dWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdlczsK KwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMyOwor CQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4LCBu cGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9jdGwo aTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5o YW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJ CQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBhZ2Ug PCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICogNDA5 NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNpemVv Zih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9tX3dj KHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0ciAr IHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4 KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChwdHIp CisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVhdGUu aGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgmYXJn LT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29mZnNl dF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9CisK K3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJc3Ry dWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQgPSB0 aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEyKSwg LyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhyZWFk W25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBp KyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFy Zyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsK KwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVpbnRw dHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0aW9u c1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlnZW1f cmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlmeSBt YXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWlndF9z dWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0ZXN0 X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgiQ2hl Y2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOworCWln dF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9zdWJ0 ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9mKCJw Zi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVj ayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIpOwor CWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsKKwor CWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKworCWln dF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0ZSAx MDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAg LTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAknZ2Vt X21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1fbW1h cF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxfcHdy aXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 28 Nov 2019 12:55:02 +0000 Message-Id: <20191128125502.3886404-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 dC5jIHwgNDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTc1YzNmZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQxNiBAQAorLyoKKyAqIENvcHly 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 cF9hcmcuaGFuZGxlID0gYTsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2EgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJbW1h cF9hcmcuaGFuZGxlID0gYjsKKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1 LCAmbW1hcF9hcmcpLCAwKTsKKwkJb2Zmc2V0X2IgPSBtbWFwX2FyZy5vZmZzZXQ7CisKKwkJaWd0 X2luZm8oIkFbJXNdOiB7ZmQ6JWQsIGhhbmRsZTolZCwgb2Zmc2V0OiUiUFJJeDY0In1cbiIsCisJ CQkgdC0+bmFtZSwgQSwgYSwgb2Zmc2V0X2EpOworCQlpZ3RfaW5mbygiQlslc106IHtmZDolZCwg aGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKKwkJCSB0LT5uYW1lLCBCLCBiLCBvZmZz ZXRfYik7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1RfUkVB RCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBfRkFJ TEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0gbW1h cDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3Rf YXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25vbmJs b2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7 CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsKKwor CQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYsCisJ CQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0cikK KwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyogbm8g c2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5jICov CisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAocHRy LCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0aWMg dm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQgbmNw dXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90ICpo YW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50MzJf dCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBfRkFJ TEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3RydWN0 IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50IGkg PSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9hcmcu aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0gSTkx NV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tpXSwg bW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0UsICZv bGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQ X09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisKKwkJ CQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hBUkVE LCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBNQVBf RkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQltdW5t YXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRShoYW5k bGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJaWd0 X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykKKwkJ aW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFwKGhh bmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2 NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2NF90 IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFs LCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRfbnBh Z2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1aW50 NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9IG1h eDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9IHdo aWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkpICE9 IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlfQXRv bWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitzdGF0 aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUg KmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lP Q1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9h c3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVhZF9j bGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5zaWdu ZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBtbWFw X29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJc3Ry dWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdlczsK KwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMyOwor CQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4LCBu cGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9jdGwo aTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5o YW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJ CQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBhZ2Ug PCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICogNDA5 NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNpemVv Zih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9tX3dj KHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0ciAr IHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4 KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChwdHIp CisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVhdGUu aGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgmYXJn LT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29mZnNl dF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9CisK K3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJc3Ry dWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQgPSB0 aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEyKSwg LyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9D RVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhyZWFk W25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBp KyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFy Zyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsK KwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVpbnRw dHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0aW9u c1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWlndF9m aXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlnZW1f cmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlmeSBt YXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWlndF9z dWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0ZXN0 X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgiQ2hl Y2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOworCWln dF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9zdWJ0 ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9mKCJw Zi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJDaGVj ayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIpOwor CWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsKKwor CWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKworCWln dF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0ZSAx MDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAg LTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAknZ2Vt X21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1fbW1h cF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxfcHdy aXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p Z3QtZGV2