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:10:45 +0000 Message-ID: <20191128131045.3886684-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 dC5jIHwgNDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDMwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTAyZjBmYjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyNiBAQAorLyoKKyAqIENvcHly 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 SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQlwdHIgPSBtbWFw NjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBCLCBvZmZzZXRfYSk7CisJCWlndF9h c3NlcnQocHRyID09IE1BUF9GQUlMRUQpOworCisJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9U X1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9iKTsKKwkJaWd0X2Fzc2VydChwdHIgPT0gTUFQ X0ZBSUxFRCk7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1Rf UkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBf RkFJTEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0g bW1hcDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlp Z3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25v bmJsb2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkx NSk7CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsK KworCQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0 cikKKwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyog bm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5j ICovCisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAo cHRyLCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0 aWMgdm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQg bmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90 ICpoYW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50 MzJfdCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1B UF9TSEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBf RkFJTEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50 IGkgPSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9h cmcuaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0g STkxNV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0Us ICZvbGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9N TUFQX09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisK KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hB UkVELCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBN QVBfRkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQlt dW5tYXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRSho YW5kbGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJ aWd0X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykK KwkJaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFw KGhhbmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2Fw X3U2NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2 NF90IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xk dmFsLCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRf bnBhZ2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1 aW50NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9 IG1heDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9 IHdoaWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkp ICE9IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlf QXRvbWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitz dGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVh dGUgKmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWln dF9hc3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVh ZF9jbGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5z aWduZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBt bWFwX29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJ c3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdl czsKKwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMy OworCQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4 LCBucGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9j dGwoaTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0 ZS5oYW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAor CQkJCQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5h dWdodHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBh Z2UgPCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICog NDA5NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNp emVvZih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9t X3djKHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0 ciArIHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0la RSh4KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChw dHIpCisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVh dGUuaGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgm YXJnLT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29m ZnNldF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9 CisKK3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJ c3RydWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQg PSB0aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEy KSwgLyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05Q Uk9DRVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhy ZWFkW25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVz OyBpKyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwg JmFyZyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKysp IHsKKwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVp bnRwdHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0 aW9uc1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWln dF9maXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQln ZW1fcmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlm eSBtYXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWln dF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0 ZXN0X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgi Q2hlY2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOwor CWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9z dWJ0ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9m KCJwZi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJD aGVjayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIp OworCWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsK KworCWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKwor CWlndF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMv bWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0 ZSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQK QEAgLTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAkn Z2VtX21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxf cHdyaXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4 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 347D4C432C0 for ; Thu, 28 Nov 2019 13:11:02 +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 122BF2071F for ; Thu, 28 Nov 2019 13:11:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 122BF2071F 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 76BF56E7EA; Thu, 28 Nov 2019 13:11:01 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA2F06E7EA; Thu, 28 Nov 2019 13:10:59 +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 19376280-1500050 for multiple; Thu, 28 Nov 2019 13:10:47 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Thu, 28 Nov 2019 13:10:45 +0000 Message-Id: <20191128131045.3886684-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: <20191128131045.sMFoN3yLOESFlhP9_AqnaHdwCGMUI18pph3nMyAbFbI@z> RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKRmV3IHNp bXBsZSB0ZXN0cyB3aGljaCB0cmllcyB0byBjcmVhdGUgLyBtbWFwIGJ1ZmZlciBvYmplY3RzCnVz aW5nIEdFTV9NTUFQX09GRlNFVCB1QVBJLgoKdjI6IGNoYW5nZSBmcm9tIFdDIC0+IFdCIChhY2Nv cmRpbmcgdG8gQ2hyaXMgcmV2aWV3IGNvbW1lbnQpCnYzOiBhZGQgbW1hcC1vZmZzZXQtY2xvc2Ut cmFjZSB0ZXN0CgpTaWduZWQtb2ZmLWJ5OiBMdWthc3ogS2FsYW1hcnogPGx1a2Fzei5rYWxhbWFy ekBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25p ZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+CkNjOiBWYW5zaGlkaGFyIEtvbmRhIDx2YW5zaGlkaGFyLnIua29uZGFAaW50 ZWwuY29tPgotLS0KUmVxdWlyZWQgKGxvb2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBp ZGVhcyk6CiBzaXplIC0gY2hlY2sgd2UgY2FuIGhhbmRsZSBvYmplY3RzIGJleW9uZCBhIHJlYXNv bmFibGUgbGltaXQgKG5vdGUgdGhlCmtlcm5lbCBmYWlscyBhdCBiZXlvbmQgUkFNKQogZm9ya2Vk IC0gaW50ZXJhY3Rpb25zIHdpdGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MK ICAgICAgICAgIHRocmVhZHMvcHJvY2Vzc2VzCiBzdXNwZW5kIC0gY2hlY2sgc3BlZWQgaXMgY29u c2lzdGVudCBiZWZvcmUvYWZ0ZXIgc3VzcGVuZAogY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBj aGVja2VyIGJldHdlZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNl dC5jIHwgNDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDMwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTAyZjBmYjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyNiBAQAorLyoKKyAqIENvcHly 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 SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQlwdHIgPSBtbWFw NjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBCLCBvZmZzZXRfYSk7CisJCWlndF9h c3NlcnQocHRyID09IE1BUF9GQUlMRUQpOworCisJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9U X1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9iKTsKKwkJaWd0X2Fzc2VydChwdHIgPT0gTUFQ X0ZBSUxFRCk7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1Rf UkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBf RkFJTEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0g bW1hcDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlp Z3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25v bmJsb2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkx NSk7CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsK KworCQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0 cikKKwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyog bm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5j ICovCisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAo cHRyLCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0 aWMgdm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQg bmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90 ICpoYW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50 MzJfdCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1B UF9TSEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBf RkFJTEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50 IGkgPSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9h cmcuaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0g STkxNV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0Us ICZvbGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9N TUFQX09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisK KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hB UkVELCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBN QVBfRkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQlt dW5tYXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRSho YW5kbGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJ aWd0X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykK KwkJaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFw KGhhbmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2Fw X3U2NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2 NF90IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xk dmFsLCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRf bnBhZ2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1 aW50NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9 IG1heDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9 IHdoaWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkp ICE9IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlf QXRvbWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitz dGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVh dGUgKmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWln dF9hc3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVh ZF9jbGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5z aWduZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBt bWFwX29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJ c3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdl czsKKwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMy OworCQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4 LCBucGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9j dGwoaTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0 ZS5oYW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAor CQkJCQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5h dWdodHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBh Z2UgPCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICog NDA5NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNp emVvZih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9t X3djKHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0 ciArIHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0la RSh4KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChw dHIpCisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVh dGUuaGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgm YXJnLT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29m ZnNldF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9 CisKK3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJ c3RydWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQg PSB0aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEy KSwgLyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05Q Uk9DRVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhy ZWFkW25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVz OyBpKyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwg JmFyZyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKysp IHsKKwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVp bnRwdHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0 aW9uc1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWln dF9maXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQln ZW1fcmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlm eSBtYXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWln dF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0 ZXN0X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgi Q2hlY2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOwor CWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9z dWJ0ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9m KCJwZi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJD aGVjayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIp OworCWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsK KworCWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKwor CWlndF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMv bWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0 ZSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQK QEAgLTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAkn Z2VtX21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxf cHdyaXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 28 Nov 2019 13:10:45 +0000 Message-Id: <20191128131045.3886684-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 dC5jIHwgNDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDMwIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCgpk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMzI1LDYgKzMyNSw5IEBA IGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIFRFU1RTX3Byb2dzICs9IGdlbV9t bWFwX2d0dAogZ2VtX21tYXBfZ3R0X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwX2d0dC5jCiAKK1RF U1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldAorZ2VtX21tYXBfb2Zmc2V0X1NPVVJDRVMgPSBp OTE1L2dlbV9tbWFwX29mZnNldC5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9tbWFwX29mZnNldF9l eGhhdXN0aW9uCiBnZW1fbW1hcF9vZmZzZXRfZXhoYXVzdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbi5jCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21t YXBfb2Zmc2V0LmMgYi90ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTAyZjBmYjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwpAQCAtMCwwICsxLDQyNiBAQAorLyoKKyAqIENvcHly 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 SXg2NCJ9XG4iLAorCQkJIHQtPm5hbWUsIEIsIGIsIG9mZnNldF9iKTsKKworCQlwdHIgPSBtbWFw NjQoMCwgNDA5NiwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBCLCBvZmZzZXRfYSk7CisJCWlndF9h c3NlcnQocHRyID09IE1BUF9GQUlMRUQpOworCisJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9U X1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9iKTsKKwkJaWd0X2Fzc2VydChwdHIgPT0gTUFQ X0ZBSUxFRCk7CisKKwkJY2xvc2UoQik7CisKKwkJcHRyID0gbW1hcDY0KDAsIDQwOTYsIFBST1Rf UkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlpZ3RfYXNzZXJ0KHB0ciAhPSBNQVBf RkFJTEVEKTsKKwkJbXVubWFwKHB0ciwgNDA5Nik7CisKKwkJY2xvc2UoQSk7CisKKwkJcHRyID0g bW1hcDY0KDAsIDQwOTYsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgQSwgb2Zmc2V0X2EpOworCQlp Z3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBmX25v bmJsb2NrKGludCBpOTE1KQoreworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkx NSk7CisKKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKKwkJdWludDMyX3QgKnB0cjsK KworCQlwdHIgPSBfX2dlbV9tbWFwX29mZnNldChpOTE1LCBzcGluLT5oYW5kbGUsIDAsIDQwOTYs CisJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJCXQtPnR5cGUpOworCQlpZiAoIXB0 cikKKwkJCWNvbnRpbnVlOworCisJCWlndF9zZXRfdGltZW91dCgxLCB0LT5uYW1lKTsKKwkJLyog bm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFzeW5j ICovCisJCXB0clsyNTZdID0gMDsKKwkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKworCQltdW5tYXAo cHRyLCA0MDk2KTsKKwl9CisKKwlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOworfQorCitzdGF0 aWMgdm9pZCBjbG9zZV9yYWNlKGludCBpOTE1LCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQg bmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKwlfQXRvbWljIHVpbnQzMl90 ICpoYW5kbGVzOworCXNpemVfdCBsZW4gPSBBTElHTigobmNwdXMgKyAxKSAqIHNpemVvZih1aW50 MzJfdCksIDQwOTYpOworCisJaGFuZGxlcyA9IG1tYXA2NCgwLCBsZW4sIFBST1RfV1JJVEUsIE1B UF9TSEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQoaGFuZGxlcyAhPSBNQVBf RkFJTEVEKTsKKworCWlndF9mb3JrKGNoaWxkLCBuY3B1cyArIDEpIHsKKwkJZG8geworCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9OworCQkJY29uc3QgaW50 IGkgPSAxICsgcmFuZG9tKCkgJSBuY3B1czsKKwkJCXVpbnQzMl90IG9sZDsKKworCQkJbW1hcF9h cmcuaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKKwkJCW1tYXBfYXJnLmZsYWdzID0g STkxNV9NTUFQX09GRlNFVF9XQjsKKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKKwkJCWlvY3RsKGk5MTUsIERSTV9JT0NUTF9HRU1fQ0xPU0Us ICZvbGQpOworCisJCQlpZiAoaW9jdGwoaTkxNSwKKwkJCQkgIERSTV9JT0NUTF9JOTE1X0dFTV9N TUFQX09GRlNFVCwKKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKKwkJCQl2b2lkICpwdHI7CisK KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKKwkJCQkJICAgICBQUk9UX1dSSVRFLCBNQVBfU0hB UkVELCBpOTE1LAorCQkJCQkgICAgIG1tYXBfYXJnLm9mZnNldCk7CisJCQkJaWYgKHB0ciAhPSBN QVBfRkFJTEVEKSB7CisJCQkJCSoodm9sYXRpbGUgdWludDMyX3QgKilwdHIgPSAwOworCQkJCQlt dW5tYXAocHRyLCA0MDk2KTsKKwkJCQl9CisJCQl9CisKKwkJfSB3aGlsZSAoIVJFQURfT05DRSho YW5kbGVzWzBdKSk7CisJfQorCisJc2xlZXAodGltZW91dCk7CisJaGFuZGxlc1swXSA9IDE7CisJ aWd0X3dhaXRjaGlsZHJlbigpOworCisJZm9yIChpbnQgaSA9IDE7IGkgPD0gbmNwdXM7IGkrKykK KwkJaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0dFTV9DTE9TRSwgaGFuZGxlc1tpXSk7CisJbXVubWFw KGhhbmRsZXMsIGxlbik7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2Fw X3U2NChfQXRvbWljKHVpbnQ2NF90KSAqcHRyLAorCQkJCQl1aW50NjRfdCBvbGR2YWwsIHVpbnQ2 NF90IG5ld3ZhbCkKK3sKKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xk dmFsLCBuZXd2YWwpOworCXJldHVybiBvbGR2YWw7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZXRf bnBhZ2VzKF9BdG9taWModWludDY0X3QpICpnbG9iYWwsIHVpbnQ2NF90IG5wYWdlcykKK3sKKwl1 aW50NjRfdCB0cnksIG9sZCwgbWF4OworCisJbWF4ID0gKmdsb2JhbDsKKwlkbyB7CisJCW9sZCA9 IG1heDsKKwkJdHJ5ID0gMSArIG5wYWdlcyAlIChtYXggLyAyKTsKKwkJbWF4IC09IHRyeTsKKwl9 IHdoaWxlICgobWF4ID0gYXRvbWljX2NvbXBhcmVfc3dhcF91NjQoZ2xvYmFsLCBvbGQsIG1heCkp ICE9IG9sZCk7CisKKwlyZXR1cm4gdHJ5OworfQorCitzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKKwlf QXRvbWljKHVpbnQ2NF90KSBtYXg7CisJaW50IHRpbWVvdXQ7CisJaW50IGk5MTU7Cit9OworCitz dGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVh dGUgKmNyZWF0ZSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJN X0lPQ1RMX0k5MTVfR0VNX0NSRUFURSwgY3JlYXRlKSkgeworCQllcnIgPSAtZXJybm87CisJCWln dF9hc3N1bWUoZXJyICE9IDApOworCX0KKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgdm9pZCAqdGhyZWFkX2NsZWFyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHRocmVh ZF9jbGVhciAqYXJnID0gZGF0YTsKKwljb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKnQ7CisJdW5z aWduZWQgbG9uZyBjaGVja2VkID0gMDsKKwlpbnQgaTkxNSA9IGFyZy0+aTkxNTsKKworCXQgPSBt bWFwX29mZnNldF90eXBlczsKKwlpZ3RfdW50aWxfdGltZW91dChhcmctPnRpbWVvdXQpIHsKKwkJ c3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgY3JlYXRlID0ge307CisJCXVpbnQ2NF90IG5wYWdl czsKKwkJdm9pZCAqcHRyOworCisJCW5wYWdlcyA9IHJhbmRvbSgpOworCQlucGFnZXMgPDw9IDMy OworCQlucGFnZXMgfD0gcmFuZG9tKCk7CisJCW5wYWdlcyA9IGdldF9ucGFnZXMoJmFyZy0+bWF4 LCBucGFnZXMpOworCQljcmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKKworCQljcmVhdGVfaW9j dGwoaTkxNSwgJmNyZWF0ZSk7CisJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0 ZS5oYW5kbGUsIDAsIGNyZWF0ZS5zaXplLAorCQkJCQlQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAor CQkJCQl0LT50eXBlKTsKKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5h dWdodHkgYXMgcG9zc2libGUgKi8KKwkJZm9yICh1aW50NjRfdCBwYWdlID0gMDsgcHRyICYmIHBh Z2UgPCBucGFnZXM7IHBhZ2UrKykgeworCQkJdWludDY0X3QgeFs4XSA9IHsKKwkJCQlwYWdlICog NDA5NiArCisJCQkJCXNpemVvZih4KSAqICgocGFnZSAlICg0MDk2IC0gc2l6ZW9mKHgpKSAvIHNp emVvZih4KSkpCisJCQl9OworCisJCQlpZiAocGFnZSAmIDEpCisJCQkJaWd0X21lbWNweV9mcm9t X3djKHgsIHB0ciArIHhbMF0sIHNpemVvZih4KSk7CisJCQllbHNlCisJCQkJbWVtY3B5KHgsIHB0 ciArIHhbMF0sIHNpemVvZih4KSk7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0la RSh4KTsgaSsrKQorCQkJCWlndF9hc3NlcnRfZXFfdTY0KHhbaV0sIDApOworCQl9CisJCWlmIChw dHIpCisJCQltdW5tYXAocHRyLCBjcmVhdGUuc2l6ZSk7CisJCWdlbV9jbG9zZShpOTE1LCBjcmVh dGUuaGFuZGxlKTsKKwkJY2hlY2tlZCArPSBucGFnZXM7CisKKwkJYXRvbWljX2ZldGNoX2FkZCgm YXJnLT5tYXgsIG5wYWdlcyk7CisKKwkJaWYgKCEoKyt0KS0+bmFtZSkKKwkJCXQgPSBtbWFwX29m ZnNldF90eXBlczsKKwl9CisKKwlyZXR1cm4gKHZvaWQgKikodWludHB0cl90KWNoZWNrZWQ7Cit9 CisKK3N0YXRpYyB2b2lkIGFsd2F5c19jbGVhcihpbnQgaTkxNSwgaW50IHRpbWVvdXQpCit7CisJ c3RydWN0IHRocmVhZF9jbGVhciBhcmcgPSB7CisJCS5pOTE1ID0gaTkxNSwKKwkJLnRpbWVvdXQg PSB0aW1lb3V0LAorCQkubWF4ID0gaW50ZWxfZ2V0X2F2YWlsX3JhbV9tYigpIDw8ICgyMCAtIDEy KSwgLyogaW4gcGFnZXMgKi8KKwl9OworCWNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05Q Uk9DRVNTT1JTX09OTE4pOworCXVuc2lnbmVkIGxvbmcgY2hlY2tlZDsKKwlwdGhyZWFkX3QgdGhy ZWFkW25jcHVzXTsKKwl2b2lkICpyZXN1bHQ7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVz OyBpKyspCisJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRbaV0sIE5VTEwsIHRocmVhZF9jbGVhciwg JmFyZyk7CisKKwljaGVja2VkID0gMDsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKysp IHsKKwkJcHRocmVhZF9qb2luKHRocmVhZFtpXSwgJnJlc3VsdCk7CisJCWNoZWNrZWQgKz0gKHVp bnRwdHJfdClyZXN1bHQ7CisJfQorCWlndF9pbmZvKCJDaGVja2VkICUnbHUgcGFnZSBhbGxvY2F0 aW9uc1xuIiwgY2hlY2tlZCk7Cit9CisKKworaWd0X21haW4KK3sKKwlpbnQgaTkxNTsKKworCWln dF9maXh0dXJlIHsKKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQln ZW1fcmVxdWlyZV9tbWFwX29mZnNldChpOTE1KTsKKwl9CisKKwlpZ3RfZGVzY3JpYmUoIlZlcmlm eSBtYXBwaW5nIHRvIGludmFsaWQgZ2VtIG9iamVjdHMgd29uJ3QgYmUgY3JlYXRlZCIpOworCWln dF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQorCQliYWRfb2JqZWN0KGk5MTUpOworCWlndF9zdWJ0 ZXN0X2YoImJhZC1mbGFncyIpCisJCWJhZF9mbGFncyhpOTE1KTsKKworCWlndF9kZXNjcmliZSgi Q2hlY2sgYnVmZmVyIG9iamVjdCBtYXBwaW5nIHBlcnNpc3RzIGFmdGVyIGdlbV9jbG9zZSIpOwor CWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCisJCWJhc2ljX3VhZihpOTE1KTsKKworCWlndF9z dWJ0ZXN0X2YoImlzb2xhdGlvbiIpCisJCWlzb2xhdGlvbihpOTE1KTsKKwlpZ3Rfc3VidGVzdF9m KCJwZi1ub25ibG9jayIpCisJCXBmX25vbmJsb2NrKGk5MTUpOworCisJaWd0X2Rlc2NyaWJlKCJD aGVjayByYWNlIGJldHdlZW4gY2xvc2UgYW5kIG1tYXAgb2Zmc2V0IGJldHdlZW4gdGhyZWFkcyIp OworCWlndF9zdWJ0ZXN0X2YoImNsb3NlLXJhY2UiKQorCQljbG9zZV9yYWNlKGk5MTUsIDIwKTsK KworCWlndF9zdWJ0ZXN0X2YoImNsZWFyIikKKwkJYWx3YXlzX2NsZWFyKGk5MTUsIDIwKTsKKwor CWlndF9maXh0dXJlIHsKKwkJY2xvc2UoaTkxNSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMv bWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCAxODc4OGQ0NGIuLjA1ZGVhMWY0 ZSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQK QEAgLTE3NCw2ICsxNzQsNyBAQCBpOTE1X3Byb2dzID0gWwogCSdnZW1fbWVkaWFfdm1lJywKIAkn Z2VtX21tYXAnLAogCSdnZW1fbW1hcF9ndHQnLAorCSdnZW1fbW1hcF9vZmZzZXQnLAogCSdnZW1f bW1hcF9vZmZzZXRfZXhoYXVzdGlvbicsCiAJJ2dlbV9tbWFwX3djJywKIAknZ2VtX3BhcnRpYWxf cHdyaXRlX3ByZWFkJywKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2