From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 063E06E5CC for ; Wed, 17 Mar 2021 14:47:10 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 17 Mar 2021 15:46:01 +0100 Message-Id: <20210317144610.108372-27-zbigniew.kempczynski@intel.com> In-Reply-To: <20210317144610.108372-1-zbigniew.kempczynski@intel.com> References: <20210317144610.108372-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v26 26/35] tests/api_intel_allocator: Simple allocator test suite 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: igt-dev@lists.freedesktop.org List-ID: RnJvbTogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgoK V2Ugd2FudCB0byB2ZXJpZnkgYWxsb2NhdG9yIHdvcmtzIGFzIGV4cGVjdGVkLiBUcnkgdG8gZXhw bG9pdCBpdC4KClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEb21pbmlrIEdyemVnb3J6ZWsg PGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2FwaV9pbnRlbF9hbGxvY2F0b3IuYyB8 IDU2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDU2OCBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkxNS9hcGlfaW50ZWxfYWxsb2NhdG9yLmMKCmRp ZmYgLS1naXQgYS90ZXN0cy9pOTE1L2FwaV9pbnRlbF9hbGxvY2F0b3IuYyBiL3Rlc3RzL2k5MTUv YXBpX2ludGVsX2FsbG9jYXRvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MC4uNTJhY2QyZmYzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYWxs b2NhdG9yLmMKQEAgLTAsMCArMSw1NjcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp bmNsdWRlIDxzdGRhdG9taWMuaD4KKyNpbmNsdWRlICJpOTE1L2dlbS5oIgorI2luY2x1ZGUgImln dC5oIgorI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpbnRlbF9hbGxvY2F0b3IuaCIK KworI2RlZmluZSBPQkpfU0laRSAxMDI0CisKK3N0cnVjdCB0ZXN0X29iaiB7CisJdWludDMyX3Qg aGFuZGxlOworCXVpbnQ2NF90IG9mZnNldDsKKwl1aW50NjRfdCBzaXplOworfTsKKworc3RhdGlj IF9BdG9taWModWludDMyX3QpIG5leHRfaGFuZGxlOworCitzdGF0aWMgaW5saW5lIHVpbnQzMl90 IGdlbV9oYW5kbGVfZ2VuKHZvaWQpCit7CisJcmV0dXJuIGF0b21pY19mZXRjaF9hZGQoJm5leHRf aGFuZGxlLCAxKTsKK30KKworc3RhdGljIHZvaWQgYWxsb2Nfc2ltcGxlKGludCBmZCkKK3sKKwl1 aW50NjRfdCBhaG5kOworCXVpbnQ2NF90IG9mZnNldDAsIG9mZnNldDEsIHNpemUgPSAweDEwMDAs IGFsaWduID0gMHgxMDAwOworCWJvb2wgaXNfYWxsb2NhdGVkLCBmcmVlZDsKKworCWFobmQgPSBp bnRlbF9hbGxvY2F0b3Jfb3BlbihmZCwgMCwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKKwlv ZmZzZXQwID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQsIDEsIHNpemUsIGFsaWduKTsKKwlv ZmZzZXQxID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQsIDEsIHNpemUsIGFsaWduKTsKKwlp Z3RfYXNzZXJ0KG9mZnNldDAgPT0gb2Zmc2V0MSk7CisKKwlpc19hbGxvY2F0ZWQgPSBpbnRlbF9h bGxvY2F0b3JfaXNfYWxsb2NhdGVkKGFobmQsIDEsIHNpemUsIG9mZnNldDApOworCWlndF9hc3Nl cnQoaXNfYWxsb2NhdGVkKTsKKworCWZyZWVkID0gaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwg MSk7CisJaWd0X2Fzc2VydChmcmVlZCk7CisKKwlpc19hbGxvY2F0ZWQgPSBpbnRlbF9hbGxvY2F0 b3JfaXNfYWxsb2NhdGVkKGFobmQsIDEsIHNpemUsIG9mZnNldDApOworCWlndF9hc3NlcnQoIWlz X2FsbG9jYXRlZCk7CisKKwlmcmVlZCA9IGludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIDEpOwor CWlndF9hc3NlcnQoIWZyZWVkKTsKKworCWlndF9hc3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX2Ns b3NlKGFobmQpLCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQgcmVzZXJ2ZV9zaW1wbGUoaW50IGZk KQoreworCXVpbnQ2NF90IGFobmQsIHN0YXJ0LCBzaXplID0gMHgxMDAwOworCWJvb2wgcmVzZXJ2 ZWQsIHVucmVzZXJ2ZWQ7CisKKwlhaG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDAsIElO VEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCWludGVsX2FsbG9jYXRvcl9nZXRfYWRkcmVzc19yYW5n ZShhaG5kLCAmc3RhcnQsIE5VTEwpOworCisJcmVzZXJ2ZWQgPSBpbnRlbF9hbGxvY2F0b3JfcmVz ZXJ2ZShhaG5kLCAwLCBzaXplLCBzdGFydCk7CisJaWd0X2Fzc2VydChyZXNlcnZlZCk7CisKKwly ZXNlcnZlZCA9IGludGVsX2FsbG9jYXRvcl9pc19yZXNlcnZlZChhaG5kLCBzaXplLCBzdGFydCk7 CisJaWd0X2Fzc2VydChyZXNlcnZlZCk7CisKKwlyZXNlcnZlZCA9IGludGVsX2FsbG9jYXRvcl9y ZXNlcnZlKGFobmQsIDAsIHNpemUsIHN0YXJ0KTsKKwlpZ3RfYXNzZXJ0KCFyZXNlcnZlZCk7CisK Kwl1bnJlc2VydmVkID0gaW50ZWxfYWxsb2NhdG9yX3VucmVzZXJ2ZShhaG5kLCAwLCBzaXplLCBz dGFydCk7CisJaWd0X2Fzc2VydCh1bnJlc2VydmVkKTsKKworCXJlc2VydmVkID0gaW50ZWxfYWxs b2NhdG9yX2lzX3Jlc2VydmVkKGFobmQsIHNpemUsIHN0YXJ0KTsKKwlpZ3RfYXNzZXJ0KCFyZXNl cnZlZCk7CisKKwlpZ3RfYXNzZXJ0X2VxKGludGVsX2FsbG9jYXRvcl9jbG9zZShhaG5kKSwgdHJ1 ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2VydmUoaW50IGZkLCB1aW50OF90IHR5cGUpCit7CisJ c3RydWN0IHRlc3Rfb2JqIG9iajsKKwl1aW50NjRfdCBhaG5kLCBvZmZzZXQgPSAweDQwMDAwLCBz aXplID0gMHgxMDAwOworCisJYWhuZCA9IGludGVsX2FsbG9jYXRvcl9vcGVuKGZkLCAwLCB0eXBl KTsKKworCWlndF9hc3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX3Jlc2VydmUoYWhuZCwgMCwgc2l6 ZSwgb2Zmc2V0KSwgdHJ1ZSk7CisJLyogdHJ5IG92ZXJsYXBwaW5nIHdvbid0IHN1Y2NlZWQgKi8K KwlpZ3RfYXNzZXJ0X2VxKGludGVsX2FsbG9jYXRvcl9yZXNlcnZlKGFobmQsIDAsIHNpemUsIG9m ZnNldCArIHNpemUvMiksIGZhbHNlKTsKKworCW9iai5oYW5kbGUgPSBnZW1faGFuZGxlX2dlbigp OworCW9iai5zaXplID0gT0JKX1NJWkU7CisJb2JqLm9mZnNldCA9IGludGVsX2FsbG9jYXRvcl9h bGxvYyhhaG5kLCBvYmouaGFuZGxlLCBvYmouc2l6ZSwgMCk7CisKKwlpZ3RfYXNzZXJ0X2VxKGlu dGVsX2FsbG9jYXRvcl9yZXNlcnZlKGFobmQsIDAsIG9iai5zaXplLCBvYmoub2Zmc2V0KSwgZmFs c2UpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIG9iai5oYW5kbGUpOworCWlndF9hc3Nl cnRfZXEoaW50ZWxfYWxsb2NhdG9yX3Jlc2VydmUoYWhuZCwgMCwgb2JqLnNpemUsIG9iai5vZmZz ZXQpLCB0cnVlKTsKKworCWlndF9hc3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX3VucmVzZXJ2ZShh aG5kLCAwLCBvYmouc2l6ZSwgb2JqLm9mZnNldCksIHRydWUpOworCWlndF9hc3NlcnRfZXEoaW50 ZWxfYWxsb2NhdG9yX3VucmVzZXJ2ZShhaG5kLCAwLCBzaXplLCBvZmZzZXQpLCB0cnVlKTsKKwlp Z3RfYXNzZXJ0X2VxKGludGVsX2FsbG9jYXRvcl9yZXNlcnZlKGFobmQsIDAsIHNpemUsIG9mZnNl dCArIHNpemUvMiksIHRydWUpOworCWlndF9hc3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX3VucmVz ZXJ2ZShhaG5kLCAwLCBzaXplLCBvZmZzZXQgKyBzaXplLzIpLCB0cnVlKTsKKworCWlndF9hc3Nl cnRfZXEoaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpLCB0cnVlKTsKK30KKworc3RhdGljIGJv b2wgb3ZlcmxhcHMoc3RydWN0IHRlc3Rfb2JqICpidWYxLCBzdHJ1Y3QgdGVzdF9vYmogKmJ1ZjIp Cit7CisJdWludDY0X3QgYmVnaW4xID0gYnVmMS0+b2Zmc2V0OworCXVpbnQ2NF90IGVuZDEgPSBi dWYxLT5vZmZzZXQgKyBidWYxLT5zaXplOworCXVpbnQ2NF90IGJlZ2luMiA9IGJ1ZjItPm9mZnNl dDsKKwl1aW50NjRfdCBlbmQyID0gYnVmMi0+b2Zmc2V0ICsgYnVmMi0+c2l6ZTsKKworCXJldHVy biAoZW5kMSA+IGJlZ2luMiAmJiBlbmQyID4gZW5kMSkgfHwgKGVuZDIgPiBiZWdpbjEgJiYgZW5k MSA+IGVuZDIpOworfQorCitzdGF0aWMgdm9pZCBiYXNpY19hbGxvYyhpbnQgZmQsIGludCBjbnQs IHVpbnQ4X3QgdHlwZSkKK3sKKwlzdHJ1Y3QgdGVzdF9vYmogKm9iajsKKwl1aW50NjRfdCBhaG5k OworCWludCBpLCBqOworCisJYWhuZCA9IGludGVsX2FsbG9jYXRvcl9vcGVuKGZkLCAwLCB0eXBl KTsKKwlvYmogPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0ZXN0X29iaikgKiBjbnQpOworCisJZm9y IChpID0gMDsgaSA8IGNudDsgaSsrKSB7CisJCWlndF9wcm9ncmVzcygiYWxsb2NhdGluZyBvYmpl Y3RzOiAiLCBpLCBjbnQpOworCQlvYmpbaV0uaGFuZGxlID0gZ2VtX2hhbmRsZV9nZW4oKTsKKwkJ b2JqW2ldLnNpemUgPSBPQkpfU0laRTsKKwkJb2JqW2ldLm9mZnNldCA9IGludGVsX2FsbG9jYXRv cl9hbGxvYyhhaG5kLCBvYmpbaV0uaGFuZGxlLAorCQkJCQkJICAgICAgb2JqW2ldLnNpemUsIDQw OTYpOworCQlpZ3RfYXNzZXJ0X2VxKG9ialtpXS5vZmZzZXQgJSA0MDk2LCAwKTsKKwl9CisKKwlm b3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKwkJaWd0X3Byb2dyZXNzKCJjaGVjayBvdmVybGFw cGluZzogIiwgaSwgY250KTsKKworCQlpZiAodHlwZSA9PSBJTlRFTF9BTExPQ0FUT1JfUkFORE9N KQorCQkJY29udGludWU7CisKKwkJZm9yIChqID0gMDsgaiA8IGNudDsgaisrKSB7CisJCQlpZiAo aiA9PSBpKQorCQkJCWNvbnRpbnVlOworCQkJCWlndF9hc3NlcnQoIW92ZXJsYXBzKCZvYmpbaV0s ICZvYmpbal0pKTsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworCQlp Z3RfcHJvZ3Jlc3MoImZyZWVpbmcgb2JqZWN0czogIiwgaSwgY250KTsKKwkJaW50ZWxfYWxsb2Nh dG9yX2ZyZWUoYWhuZCwgb2JqW2ldLmhhbmRsZSk7CisJfQorCisJZnJlZShvYmopOworCWlndF9h c3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpLCB0cnVlKTsKK30KKworc3RhdGlj IHZvaWQgcmV1c2UoaW50IGZkLCB1aW50OF90IHR5cGUpCit7CisJc3RydWN0IHRlc3Rfb2JqIG9i alsxMjhdLCB0bXA7CisJdWludDY0X3QgYWhuZCwgcHJldl9vZmZzZXQ7CisJaW50IGk7CisKKwlh aG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDAsIHR5cGUpOworCisJZm9yIChpID0gMDsg aSA8IDEyODsgaSsrKSB7CisJCW9ialtpXS5oYW5kbGUgPSBnZW1faGFuZGxlX2dlbigpOworCQlv YmpbaV0uc2l6ZSA9IE9CSl9TSVpFOworCQlvYmpbaV0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9y X2FsbG9jKGFobmQsIG9ialtpXS5oYW5kbGUsCisJCQkJCQkgICAgICBvYmpbaV0uc2l6ZSwgMHg0 MCk7CisJfQorCisJLyogY2hlY2sgc2ltcGxlIHJldXNlICovCisJZm9yIChpID0gMDsgaSA8IDEy ODsgaSsrKSB7CisJCXByZXZfb2Zmc2V0ID0gb2JqW2ldLm9mZnNldDsKKwkJb2JqW2ldLm9mZnNl dCA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kLCBvYmpbaV0uaGFuZGxlLAorCQkJCQkJICAg ICAgb2JqW2ldLnNpemUsIDApOworCQlpZ3RfYXNzZXJ0KHByZXZfb2Zmc2V0ID09IG9ialtpXS5v ZmZzZXQpOworCX0KKwlpLS07CisKKwkvKiBmcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJvICov CisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwgb2JqW2ldLmhhbmRsZSk7CisJLyogYWxsb2Mg ZGlmZmVyZW50IGJ1ZmZlciB0byBmaWxsIGZyZWVkIGhvbGUgKi8KKwl0bXAuaGFuZGxlID0gZ2Vt X2hhbmRsZV9nZW4oKTsKKwl0bXAub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQs IHRtcC5oYW5kbGUsIE9CSl9TSVpFLCAwKTsKKwlpZ3RfYXNzZXJ0KHByZXZfb2Zmc2V0ID09IHRt cC5vZmZzZXQpOworCisJb2JqW2ldLm9mZnNldCA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5k LCBvYmpbaV0uaGFuZGxlLAorCQkJCQkgICAgICBvYmpbaV0uc2l6ZSwgMCk7CisJaWd0X2Fzc2Vy dChwcmV2X29mZnNldCAhPSBvYmpbaV0ub2Zmc2V0KTsKKwlpbnRlbF9hbGxvY2F0b3JfZnJlZShh aG5kLCB0bXAuaGFuZGxlKTsKKworCWZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykKKwkJaW50ZWxf YWxsb2NhdG9yX2ZyZWUoYWhuZCwgb2JqW2ldLmhhbmRsZSk7CisKKwlpZ3RfYXNzZXJ0X2VxKGlu dGVsX2FsbG9jYXRvcl9jbG9zZShhaG5kKSwgdHJ1ZSk7Cit9CisKK3N0cnVjdCBpYWxfdGhyZWFk X2FyZ3MgeworCXVpbnQ2NF90IGFobmQ7CisJcHRocmVhZF90IHRocmVhZDsKKwl1aW50MzJfdCAq aGFuZGxlczsKKwl1aW50NjRfdCAqb2Zmc2V0czsKKwl1aW50MzJfdCBjb3VudDsKKwlpbnQgdGhy ZWFkczsKKwlpbnQgaWR4OworfTsKKworc3RhdGljIHZvaWQgKmFsbG9jX2JvX2luX3RocmVhZCh2 b2lkICphcmcpCit7CisJc3RydWN0IGlhbF90aHJlYWRfYXJncyAqYSA9IGFyZzsKKwlpbnQgaTsK KworCWZvciAoaSA9IGEtPmlkeDsgaSA8IGEtPmNvdW50OyBpICs9IGEtPnRocmVhZHMpIHsKKwkJ YS0+aGFuZGxlc1tpXSA9IGdlbV9oYW5kbGVfZ2VuKCk7CisJCWEtPm9mZnNldHNbaV0gPSBpbnRl bF9hbGxvY2F0b3JfYWxsb2MoYS0+YWhuZCwgYS0+aGFuZGxlc1tpXSwgT0JKX1NJWkUsCisJCQkJ CQkgICAgICAxVUwgPDwgKChyYW5kb20oKSAlIDIwKSArIDEpKTsKKwl9CisKKwlyZXR1cm4gTlVM TDsKK30KKworc3RhdGljIHZvaWQgKmZyZWVfYm9faW5fdGhyZWFkKHZvaWQgKmFyZykKK3sKKwlz dHJ1Y3QgaWFsX3RocmVhZF9hcmdzICphID0gYXJnOworCWludCBpOworCisJZm9yIChpID0gKGEt PmlkeCArIDEpICUgYS0+dGhyZWFkczsgaSA8IGEtPmNvdW50OyBpICs9IGEtPnRocmVhZHMpCisJ CWludGVsX2FsbG9jYXRvcl9mcmVlKGEtPmFobmQsIGEtPmhhbmRsZXNbaV0pOworCisJcmV0dXJu IE5VTEw7Cit9CisKKyNkZWZpbmUgVEhSRUFEUyA2CisKK3N0YXRpYyB2b2lkIHBhcmFsbGVsX29u ZShpbnQgZmQsIHVpbnQ4X3QgdHlwZSkKK3sKKwlzdHJ1Y3QgaWFsX3RocmVhZF9hcmdzIGFbVEhS RUFEU107CisJdWludDMyX3QgKmhhbmRsZXM7CisJdWludDY0X3QgYWhuZCwgKm9mZnNldHM7CisJ aW50IGNvdW50LCBpOworCisJc3JhbmRvbSgweGRlYWRiZWVmKTsKKwlhaG5kID0gaW50ZWxfYWxs b2NhdG9yX29wZW4oZmQsIDAsIHR5cGUpOworCWNvdW50ID0gMVVMIDw8IDEyOworCisJaGFuZGxl cyA9IG1hbGxvYyhzaXplb2YodWludDMyX3QpICogY291bnQpOworCW9mZnNldHMgPSBjYWxsb2Mo MSwgc2l6ZW9mKHVpbnQ2NF90KSAqIGNvdW50KTsKKworCWZvciAoaSA9IDA7IGkgPCBUSFJFQURT OyBpKyspIHsKKwkJYVtpXS5haG5kID0gYWhuZDsKKwkJYVtpXS5oYW5kbGVzID0gaGFuZGxlczsK KwkJYVtpXS5vZmZzZXRzID0gb2Zmc2V0czsKKwkJYVtpXS5jb3VudCA9IGNvdW50OworCQlhW2ld LnRocmVhZHMgPSBUSFJFQURTOworCQlhW2ldLmlkeCA9IGk7CisJCXB0aHJlYWRfY3JlYXRlKCZh W2ldLnRocmVhZCwgTlVMTCwgYWxsb2NfYm9faW5fdGhyZWFkLCAmYVtpXSk7CisJfQorCisJZm9y IChpID0gMDsgaSA8IFRIUkVBRFM7IGkrKykKKwkJcHRocmVhZF9qb2luKGFbaV0udGhyZWFkLCBO VUxMKTsKKworCS8qIENoZWNrIGlmIGFsbCBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworCQkvKiBSZWxvYyArIHJhbmRvbSBhbGxvY2F0b3Jz IGRvbid0IGhhdmUgc3RhdGUuICovCisJCWlmICh0eXBlID09IElOVEVMX0FMTE9DQVRPUl9SRUxP QyB8fCB0eXBlID09IElOVEVMX0FMTE9DQVRPUl9SQU5ET00pCisJCQlicmVhazsKKworCQlpZ3Rf YXNzZXJ0X2VxKG9mZnNldHNbaV0sCisJCQkgICAgICBpbnRlbF9hbGxvY2F0b3JfYWxsb2MoYS0+ YWhuZCwgaGFuZGxlc1tpXSwgT0JKX1NJWkUsIDApKTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwg VEhSRUFEUzsgaSsrKQorCQlwdGhyZWFkX2NyZWF0ZSgmYVtpXS50aHJlYWQsIE5VTEwsIGZyZWVf Ym9faW5fdGhyZWFkLCAmYVtpXSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgVEhSRUFEUzsgaSsrKQor CQlwdGhyZWFkX2pvaW4oYVtpXS50aHJlYWQsIE5VTEwpOworCisJZnJlZShoYW5kbGVzKTsKKwlm cmVlKG9mZnNldHMpOworCisJaWd0X2Fzc2VydF9lcShpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhu ZCksIHRydWUpOworfQorCisjZGVmaW5lIFNJTVBMRV9HUk9VUF9BTExPQ1MgOAorc3RhdGljIHZv aWQgX19zaW1wbGVfYWxsb2NzKGludCBmZCkKK3sKKwl1aW50MzJfdCBoYW5kbGVzW1NJTVBMRV9H Uk9VUF9BTExPQ1NdOworCXVpbnQ2NF90IGFobmQ7CisJdWludDMyX3QgY3R4OworCWludCBpOwor CisJY3R4ID0gcmFuZCgpICUgMjsKKwlhaG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIGN0 eCwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgU0lNUExFX0dS T1VQX0FMTE9DUzsgaSsrKSB7CisJCXVpbnQzMl90IHNpemU7CisKKwkJc2l6ZSA9IChyYW5kKCkg JSA0ICsgMSkgKiAweDEwMDA7CisJCWhhbmRsZXNbaV0gPSBnZW1fY3JlYXRlKGZkLCBzaXplKTsK KwkJaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQsIGhhbmRsZXNbaV0sIHNpemUsIDB4MTAwMCk7 CisJfQorCisJZm9yIChpID0gMDsgaSA8IFNJTVBMRV9HUk9VUF9BTExPQ1M7IGkrKykgeworCQlp Z3RfYXNzZXJ0X2YoaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwgaGFuZGxlc1tpXSkgPT0gMSwK KwkJCSAgICAgIkVycm9yIGZyZWVpbmcgaGFuZGxlOiAldVxuIiwgaGFuZGxlc1tpXSk7CisJCWdl bV9jbG9zZShmZCwgaGFuZGxlc1tpXSk7CisJfQorCisJaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFo bmQpOworfQorCitzdGF0aWMgdm9pZCBmb3JrX3NpbXBsZV9vbmNlKGludCBmZCkKK3sKKwlpbnRl bF9hbGxvY2F0b3JfbXVsdGlwcm9jZXNzX3N0YXJ0KCk7CisKKwlpZ3RfZm9yayhjaGlsZCwgMSkK KwkJX19zaW1wbGVfYWxsb2NzKGZkKTsKKworCWlndF93YWl0Y2hpbGRyZW4oKTsKKworCWludGVs X2FsbG9jYXRvcl9tdWx0aXByb2Nlc3Nfc3RvcCgpOworfQorCisjZGVmaW5lIFNJTVBMRV9USU1F T1VUIDUKK3N0YXRpYyB2b2lkICpfX2Zvcmtfc2ltcGxlX3RocmVhZCh2b2lkICpkYXRhKQorewor CWludCBmZCA9IChpbnQpIChsb25nKSBkYXRhOworCisJaWd0X3VudGlsX3RpbWVvdXQoU0lNUExF X1RJTUVPVVQpIHsKKwkJX19zaW1wbGVfYWxsb2NzKGZkKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsK K30KKworc3RhdGljIHZvaWQgZm9ya19zaW1wbGVfc3RyZXNzKGludCBmZCwgYm9vbCB0d29fbGV2 ZWxfaW5jZXB0aW9uKQoreworCXB0aHJlYWRfdCB0aHJlYWQwLCB0aHJlYWQxOworCXVpbnQ2NF90 IGFobmQwLCBhaG5kMTsKKwlib29sIGFyZV9lbXB0eTsKKworCV9faW50ZWxfYWxsb2NhdG9yX211 bHRpcHJvY2Vzc19wcmVwYXJlKCk7CisKKwlpZ3RfZm9yayhjaGlsZCwgOCkgeworCQlpZiAodHdv X2xldmVsX2luY2VwdGlvbikgeworCQkJcHRocmVhZF9jcmVhdGUoJnRocmVhZDAsIE5VTEwsIF9f Zm9ya19zaW1wbGVfdGhyZWFkLAorCQkJCSAgICAgICAodm9pZCAqKSAobG9uZykgZmQpOworCQkJ cHRocmVhZF9jcmVhdGUoJnRocmVhZDEsIE5VTEwsIF9fZm9ya19zaW1wbGVfdGhyZWFkLAorCQkJ CSAgICAgICAodm9pZCAqKSAobG9uZykgZmQpOworCQl9CisKKwkJaWd0X3VudGlsX3RpbWVvdXQo U0lNUExFX1RJTUVPVVQpIHsKKwkJCV9fc2ltcGxlX2FsbG9jcyhmZCk7CisJCX0KKworCQlpZiAo dHdvX2xldmVsX2luY2VwdGlvbikgeworCQkJcHRocmVhZF9qb2luKHRocmVhZDAsIE5VTEwpOwor CQkJcHRocmVhZF9qb2luKHRocmVhZDEsIE5VTEwpOworCQl9CisJfQorCisJcHRocmVhZF9jcmVh dGUoJnRocmVhZDAsIE5VTEwsIF9fZm9ya19zaW1wbGVfdGhyZWFkLCAodm9pZCAqKSAobG9uZykg ZmQpOworCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQxLCBOVUxMLCBfX2Zvcmtfc2ltcGxlX3RocmVh ZCwgKHZvaWQgKikgKGxvbmcpIGZkKTsKKworCWFobmQwID0gaW50ZWxfYWxsb2NhdG9yX29wZW4o ZmQsIDAsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCWFobmQxID0gaW50ZWxfYWxsb2NhdG9y X29wZW4oZmQsIDEsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJX19pbnRlbF9hbGxvY2F0 b3JfbXVsdGlwcm9jZXNzX3N0YXJ0KCk7CisKKwlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisKKwlwdGhy ZWFkX2pvaW4odGhyZWFkMCwgTlVMTCk7CisJcHRocmVhZF9qb2luKHRocmVhZDEsIE5VTEwpOwor CisJYXJlX2VtcHR5ID0gaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQwKTsKKwlhcmVfZW1wdHkg Jj0gaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQxKTsKKworCWludGVsX2FsbG9jYXRvcl9tdWx0 aXByb2Nlc3Nfc3RvcCgpOworCisJaWd0X2Fzc2VydF9mKGFyZV9lbXB0eSwgIkFsbG9jYXRvcnMg d2VyZSBub3QgZW1wdGllZFxuIik7Cit9CisKK3N0YXRpYyB2b2lkIF9fcmVvcGVuX2FsbG9jcyhp bnQgZmQxLCBpbnQgZmQyLCBib29sIGNoZWNrKQoreworCXVpbnQ2NF90IGFobmQwLCBhaG5kMSwg YWhuZDI7CisKKwlhaG5kMCA9IGludGVsX2FsbG9jYXRvcl9vcGVuKGZkMSwgMCwgSU5URUxfQUxM T0NBVE9SX1NJTVBMRSk7CisJYWhuZDEgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihmZDIsIDAsIElO VEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCWFobmQyID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQy LCAwLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKwlpZ3RfYXNzZXJ0KGFobmQwICE9IGFobmQx KTsKKwlpZ3RfYXNzZXJ0KGFobmQxICE9IGFobmQyKTsKKworCS8qIGluIGZvcmsgbW9kZSB3ZSBj YW4gaGF2ZSBtb3JlIHJlZmVyZW5jZXMsIHNvIHNraXAgY2hlY2sgKi8KKwlpZiAoIWNoZWNrKSB7 CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShhaG5kMCk7CisJCWludGVsX2FsbG9jYXRvcl9jbG9z ZShhaG5kMSk7CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShhaG5kMik7CisJfSBlbHNlIHsKKwkJ aWd0X2Fzc2VydF9lcShpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhuZDApLCB0cnVlKTsKKwkJaWd0 X2Fzc2VydF9lcShpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhuZDEpLCBmYWxzZSk7CisJCWlndF9h c3NlcnRfZXEoaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQyKSwgdHJ1ZSk7CisJfQorfQorCitz dGF0aWMgdm9pZCByZW9wZW4oaW50IGZkKQoreworCWludCBmZDI7CisKKwlpZ3RfcmVxdWlyZV9n ZW0oZmQpOworCisJZmQyID0gZ2VtX3Jlb3Blbl9kcml2ZXIoZmQpOworCisJX19yZW9wZW5fYWxs b2NzKGZkLCBmZDIsIHRydWUpOworCisJY2xvc2UoZmQyKTsKK30KKworI2RlZmluZSBSRU9QRU5f VElNRU9VVCAzCitzdGF0aWMgdm9pZCByZW9wZW5fZm9yayhpbnQgZmQpCit7CisJaW50IGZkMjsK KworCWlndF9yZXF1aXJlX2dlbShmZCk7CisKKwlpbnRlbF9hbGxvY2F0b3JfbXVsdGlwcm9jZXNz X3N0YXJ0KCk7CisKKwlmZDIgPSBnZW1fcmVvcGVuX2RyaXZlcihmZCk7CisKKwlpZ3RfZm9yayhj aGlsZCwgMSkgeworCQlpZ3RfdW50aWxfdGltZW91dChSRU9QRU5fVElNRU9VVCkKKwkJCV9fcmVv cGVuX2FsbG9jcyhmZCwgZmQyLCBmYWxzZSk7CisJfQorCWlndF91bnRpbF90aW1lb3V0KFJFT1BF Tl9USU1FT1VUKQorCQlfX3Jlb3Blbl9hbGxvY3MoZmQsIGZkMiwgZmFsc2UpOworCisJaWd0X3dh aXRjaGlsZHJlbigpOworCisJLyogQ2hlY2sgcmVmZXJlbmNlcyBhdCB0aGUgZW5kICovCisJX19y ZW9wZW5fYWxsb2NzKGZkLCBmZDIsIHRydWUpOworCisJY2xvc2UoZmQyKTsKKworCWludGVsX2Fs bG9jYXRvcl9tdWx0aXByb2Nlc3Nfc3RvcCgpOworfQorCitzdGF0aWMgdm9pZCBvcGVuX3ZtKGlu dCBmZCkKK3sKKwl1aW50NjRfdCBhaG5kWzRdLCBvZmZzZXRbNF0sIHNpemUgPSAweDEwMDA7CisJ aW50IGksIG4gPSBBUlJBWV9TSVpFKGFobmQpOworCisJYWhuZFswXSA9IGludGVsX2FsbG9jYXRv cl9vcGVuX3ZtKGZkLCAxLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKwlhaG5kWzFdID0gaW50 ZWxfYWxsb2NhdG9yX29wZW5fdm0oZmQsIDEsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCWFo bmRbMl0gPSBpbnRlbF9hbGxvY2F0b3Jfb3Blbl92bV9hcyhhaG5kWzFdLCAyKTsKKwlhaG5kWzNd ID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDMsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOwor CisJb2Zmc2V0WzBdID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmRbMF0sIDEsIHNpemUsIDAp OworCW9mZnNldFsxXSA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kWzFdLCAyLCBzaXplLCAw KTsKKwlpZ3RfYXNzZXJ0KG9mZnNldFswXSAhPSBvZmZzZXRbMV0pOworCisJb2Zmc2V0WzJdID0g aW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmRbMl0sIDMsIHNpemUsIDApOworCWlndF9hc3NlcnQo b2Zmc2V0WzBdICE9IG9mZnNldFsyXSAmJiBvZmZzZXRbMV0gIT0gb2Zmc2V0WzJdKTsKKworCW9m ZnNldFszXSA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kWzNdLCAxLCBzaXplLCAwKTsKKwlp Z3RfYXNzZXJ0KG9mZnNldFswXSA9PSBvZmZzZXRbM10pOworCisJLyoKKwkgKiBBcyBhaG5kWzAt Ml0gbGVhZCB0byBzYW1lIGFsbG9jYXRvciBjaGVjayBjYW4gd2UgZnJlZSBhbGwgaGFuZGxlcwor CSAqIHVzaW5nIHNlbGVjdGVkIGFobmQuCisJICovCisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhu ZFswXSwgMSk7CisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZFswXSwgMik7CisJaW50ZWxfYWxs b2NhdG9yX2ZyZWUoYWhuZFswXSwgMyk7CisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZFszXSwg MSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykKKwkJaWd0X2Fzc2VydF9lcShpbnRl bF9hbGxvY2F0b3JfY2xvc2UoYWhuZFtpXSksIChpID09IG4gLSAyKSk7CisJaWd0X2Fzc2VydF9l cShpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhuZFtuLTFdKSwgdHJ1ZSk7Cit9CisKK3N0cnVjdCBh bGxvY2F0b3JzIHsKKwljb25zdCBjaGFyICpuYW1lOworCXVpbnQ4X3QgdHlwZTsKK30gYWxzW10g PSB7CisJeyJzaW1wbGUiLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFfSwKKwl7InJlbG9jIiwgIElO VEVMX0FMTE9DQVRPUl9SRUxPQ30sCisJeyJyYW5kb20iLCBJTlRFTF9BTExPQ0FUT1JfUkFORE9N fSwKKwl7TlVMTCwgMH0sCit9OworCitpZ3RfbWFpbgoreworCWludCBmZDsKKwlzdHJ1Y3QgYWxs b2NhdG9ycyAqYTsKKworCWlndF9maXh0dXJlIHsKKwkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJ VkVSX0lOVEVMKTsKKwkJYXRvbWljX2luaXQoJm5leHRfaGFuZGxlLCAxKTsKKwkJc3JhbmRvbSgw eGRlYWRiZWVmKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJhbGxvYy1zaW1wbGUiKQorCQlhbGxv Y19zaW1wbGUoZmQpOworCisJaWd0X3N1YnRlc3RfZigicmVzZXJ2ZS1zaW1wbGUiKQorCQlyZXNl cnZlX3NpbXBsZShmZCk7CisKKwlpZ3Rfc3VidGVzdF9mKCJyZXVzZSIpCisJCXJldXNlKGZkLCBJ TlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWlndF9zdWJ0ZXN0X2YoInJlc2VydmUiKQorCQly ZXNlcnZlKGZkLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWZvciAoYSA9IGFsczsgYS0+ bmFtZTsgYSsrKSB7CisJCWlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlcy1hbGxvY2F0b3Ii LCBhLT5uYW1lKSB7CisJCQlpZ3RfZHluYW1pYygiYmFzaWMiKQorCQkJCWJhc2ljX2FsbG9jKGZk LCAxVUwgPDwgOCwgYS0+dHlwZSk7CisKKwkJCWlndF9keW5hbWljKCJwYXJhbGxlbC1vbmUiKQor CQkJCXBhcmFsbGVsX29uZShmZCwgYS0+dHlwZSk7CisKKwkJCWlndF9keW5hbWljKCJwcmludCIp CisJCQkJYmFzaWNfYWxsb2MoZmQsIDFVTCA8PCAyLCBhLT50eXBlKTsKKworCQkJaWYgKGEtPnR5 cGUgPT0gSU5URUxfQUxMT0NBVE9SX1NJTVBMRSkgeworCQkJCWlndF9keW5hbWljKCJyZXVzZSIp CisJCQkJCXJldXNlKGZkLCBhLT50eXBlKTsKKworCQkJCWlndF9keW5hbWljKCJyZXNlcnZlIikK KwkJCQkJcmVzZXJ2ZShmZCwgYS0+dHlwZSk7CisJCQl9CisJCX0KKwl9CisKKwlpZ3Rfc3VidGVz dF9mKCJmb3JrLXNpbXBsZS1vbmNlIikKKwkJZm9ya19zaW1wbGVfb25jZShmZCk7CisKKwlpZ3Rf c3VidGVzdF9mKCJmb3JrLXNpbXBsZS1zdHJlc3MiKQorCQlmb3JrX3NpbXBsZV9zdHJlc3MoZmQs IGZhbHNlKTsKKworCWlndF9zdWJ0ZXN0X2YoImZvcmstc2ltcGxlLXN0cmVzcy1zaWduYWwiKSB7 CisJCWlndF9mb3JrX3NpZ25hbF9oZWxwZXIoKTsKKwkJZm9ya19zaW1wbGVfc3RyZXNzKGZkLCBm YWxzZSk7CisJCWlndF9zdG9wX3NpZ25hbF9oZWxwZXIoKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9m KCJ0d28tbGV2ZWwtaW5jZXB0aW9uIikKKwkJZm9ya19zaW1wbGVfc3RyZXNzKGZkLCB0cnVlKTsK KworCWlndF9zdWJ0ZXN0X2YoInR3by1sZXZlbC1pbmNlcHRpb24taW50ZXJydXB0aWJsZSIpIHsK KwkJaWd0X2Zvcmtfc2lnbmFsX2hlbHBlcigpOworCQlmb3JrX3NpbXBsZV9zdHJlc3MoZmQsIHRy dWUpOworCQlpZ3Rfc3RvcF9zaWduYWxfaGVscGVyKCk7CisJfQorCisJaWd0X3N1YnRlc3RfZigi cmVvcGVuIikKKwkJcmVvcGVuKGZkKTsKKworCWlndF9zdWJ0ZXN0X2YoInJlb3Blbi1mb3JrIikK KwkJcmVvcGVuX2ZvcmsoZmQpOworCisJaWd0X3N1YnRlc3RfZigib3Blbi12bSIpCisJCW9wZW5f dm0oZmQpOworCisJaWd0X2ZpeHR1cmUKKwkJY2xvc2UoZmQpOworfQpkaWZmIC0tZ2l0IGEvdGVz dHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCA4MjVlMDE4MzMuLjA2MTY5 MTkwMyAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVp bGQKQEAgLTExMSw2ICsxMTEsNyBAQCB0ZXN0X3Byb2dzID0gWwogXQogCiBpOTE1X3Byb2dzID0g WworCSdhcGlfaW50ZWxfYWxsb2NhdG9yJywKIAknYXBpX2ludGVsX2JiJywKIAknZ2VuM19taXhl ZF9ibGl0cycsCiAJJ2dlbjNfcmVuZGVyX2xpbmVhcl9ibGl0cycsCi0tIAoyLjI2LjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGlu ZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=