From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Ser, Simon" Date: Wed, 10 Jul 2019 11:57:30 +0000 Message-ID: <7eca4f4def5f732d1f9269e2c75eca8da62a78b2.camel@intel.com> References: <296f249138cb4f55466294b07a7aba25801ff146.1560374714.git.rodrigosiqueiramelo@gmail.com> In-Reply-To: <296f249138cb4f55466294b07a7aba25801ff146.1560374714.git.rodrigosiqueiramelo@gmail.com> Content-Language: en-US Content-ID: <2B4183584016DF4DA1C2B6E47578637C@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH V6 i-g-t 2/6] kms_writeback: Add initial writeback tests 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: "Liviu.Dudau@arm.com" , "Hiler, Arkadiusz" , "Brian.Starkey@arm.com" , "Latvala, Petri" , "rodrigosiqueiramelo@gmail.com" , "daniel@ffwll.ch" Cc: "igt-dev@lists.freedesktop.org" , "intel-gfx@lists.freedesktop.org" , "nd@arm.com" List-ID: SGksDQoNClRoYW5rcyBmb3IgdGhlIHBhdGNoISBIZXJlIGFyZSBhIGZldyBjb21tZW50cy4NCg0K Rm9yIGJvbnVzIHBvaW50cywgaXQgd291bGQgYmUgbmljZSB0byBhZGQgaWd0X2Rlc2NyaWJlIGRl c2NyaXB0aW9ucyBvZg0KZWFjaCBzdWItdGVzdC4NCg0KT24gV2VkLCAyMDE5LTA2LTEyIGF0IDIz OjE2IC0wMzAwLCBCcmlhbiBTdGFya2V5IHdyb3RlOg0KPiBBZGQgdGVzdHMgZm9yIHRoZSBXUklU RUJBQ0tfUElYRUxfRk9STUFUUywgV1JJVEVCQUNLX09VVF9GRU5DRV9QVFIgYW5kDQo+IFdSSVRF QkFDS19GQl9JRCBwcm9wZXJ0aWVzIG9uIHdyaXRlYmFjayBjb25uZWN0b3JzLCBlbnN1cmluZyB0 aGVpcg0KPiBiZWhhdmlvdXIgaXMgY29ycmVjdC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEJyaWFu IFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4NCj4gW3JlYmFzZWQgYW5kIHVwZGF0ZWQg ZG9fd3JpdGViYWNrX3Rlc3QoKSBmdW5jdGlvbiB0byBhZGRyZXNzIGZlZWRiYWNrXQ0KPiBTaWdu ZWQtb2ZmLWJ5OiBMaXZpdSBEdWRhdSA8bGl2aXUuZHVkYXVAYXJtLmNvbT4NCj4gLS0tDQo+ICB0 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsNCj4gIHRlc3RzL2ttc193cml0ZWJhY2suYyAg fCAzMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIHRlc3Rz L21lc29uLmJ1aWxkICAgICAgfCAgIDEgKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAzMTYgaW5zZXJ0 aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc193cml0ZWJhY2suYw0KPiAN Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzDQo+IGluZGV4IDAyN2VkODJmLi4wM2NjOGVmYSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcw0KPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+IEBAIC03 Nyw2ICs3Nyw3IEBAIFRFU1RTX3Byb2dzID0gXA0KPiAgCWttc191bml2ZXJzYWxfcGxhbmUgXA0K PiAgCWttc192YmxhbmsgXA0KPiAgCWttc192cnIgXA0KPiArCWttc193cml0ZWJhY2sgXA0KPiAg CW1ldGFfdGVzdCBcDQo+ICAJcGVyZiBcDQo+ICAJcGVyZl9wbXUgXA0KPiBkaWZmIC0tZ2l0IGEv dGVzdHMva21zX3dyaXRlYmFjay5jIGIvdGVzdHMva21zX3dyaXRlYmFjay5jDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwLi42NmVmNDhhNg0KPiAtLS0gL2Rldi9udWxs DQo+ICsrKyBiL3Rlc3RzL2ttc193cml0ZWJhY2suYw0KPiBAQCAtMCwwICsxLDMxNCBAQA0KPiAr LyoNCj4gKyAqIChDKSBDT1BZUklHSFQgMjAxNyBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gKyAqDQo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KPiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwNCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24NCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KPiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlDQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQNCj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUNCj4gKyAqIFNvZnR3YXJlLg0KPiArICoNCj4g KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SDQo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTA0KPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H DQo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTDQo+ICsgKiBJTiBUSEUgU09GVFdBUkUuDQo+ICsg Kg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxlcnJuby5oPg0KPiArI2luY2x1ZGUgPHN0ZGJv b2wuaD4NCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiAr DQo+ICsjaW5jbHVkZSAiaWd0LmgiDQo+ICsjaW5jbHVkZSAiaWd0X2NvcmUuaCINCj4gKyNpbmNs dWRlICJpZ3RfZmIuaCINCj4gKw0KPiArc3RhdGljIGRybU1vZGVQcm9wZXJ0eUJsb2JSZXMgKmdl dF93cml0ZWJhY2tfZm9ybWF0c19ibG9iKGlndF9vdXRwdXRfdCAqb3V0cHV0KQ0KPiArew0KPiAr CWRybU1vZGVQcm9wZXJ0eUJsb2JSZXMgKmJsb2IgPSBOVUxMOw0KPiArCXVpbnQ2NF90IGJsb2Jf aWQ7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IGttc3Rlc3RfZ2V0X3Byb3BlcnR5KG91 dHB1dC0+ZGlzcGxheS0+ZHJtX2ZkLA0KPiArCQkJCSAgIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rv ci0+Y29ubmVjdG9yX2lkLA0KPiArCQkJCSAgIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1IsDQo+ ICsJCQkJICAgaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9DT05ORUNUT1JfV1JJVEVCQUNL X1BJWEVMX0ZPUk1BVFNdLA0KPiArCQkJCSAgIE5VTEwsICZibG9iX2lkLCBOVUxMKTsNCj4gKwlp ZiAocmV0KQ0KPiArCQlibG9iID0gZHJtTW9kZUdldFByb3BlcnR5QmxvYihvdXRwdXQtPmRpc3Bs YXktPmRybV9mZCwgYmxvYl9pZCk7DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0KGJsb2IpOw0KPiArDQo+ ICsJcmV0dXJuIGJsb2I7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sIGNoZWNrX3dyaXRlYmFj a19jb25maWcoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQpDQo+ ICt7DQo+ICsJaWd0X2ZiX3QgaW5wdXRfZmIsIG91dHB1dF9mYjsNCj4gKwlpZ3RfcGxhbmVfdCAq cGxhbmU7DQo+ICsJdWludDMyX3Qgd3JpdGViYWNrX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4 ODg7DQo+ICsJdWludDY0X3QgdGlsaW5nID0gaWd0X2ZiX21vZF90b190aWxpbmcoMCk7DQo+ICsJ aW50IHdpZHRoLCBoZWlnaHQsIHJldDsNCj4gKwlkcm1Nb2RlTW9kZUluZm8gb3ZlcnJpZGVfbW9k ZSA9IHsNCj4gKwkJLmNsb2NrID0gMjUxNzUsDQo+ICsJCS5oZGlzcGxheSA9IDY0MCwNCj4gKwkJ LmhzeW5jX3N0YXJ0ID0gNjU2LA0KPiArCQkuaHN5bmNfZW5kID0gNzUyLA0KPiArCQkuaHRvdGFs ID0gODAwLA0KPiArCQkuaHNrZXcgPSAwLA0KPiArCQkudmRpc3BsYXkgPSA0ODAsDQo+ICsJCS52 c3luY19zdGFydCA9IDQ5MCwNCj4gKwkJLnZzeW5jX2VuZCA9IDQ5MiwNCj4gKwkJLnZ0b3RhbCA9 IDUyNSwNCj4gKwkJLnZzY2FuID0gMCwNCj4gKwkJLnZyZWZyZXNoID0gNjAsDQo+ICsJCS5mbGFn cyA9IERSTV9NT0RFX0ZMQUdfTkhTWU5DIHwgRFJNX01PREVfRkxBR19OVlNZTkMsDQo+ICsJCS5u YW1lID0geyI2NDB4NDgwLTYwIn0sDQo+ICsJfTsNCj4gKwlpZ3Rfb3V0cHV0X292ZXJyaWRlX21v ZGUob3V0cHV0LCAmb3ZlcnJpZGVfbW9kZSk7DQo+ICsNCj4gKwl3aWR0aCA9IG92ZXJyaWRlX21v ZGUuaGRpc3BsYXk7DQo+ICsJaGVpZ2h0ID0gb3ZlcnJpZGVfbW9kZS52ZGlzcGxheTsNCj4gKw0K PiArCXJldCA9IGlndF9jcmVhdGVfZmIoZGlzcGxheS0+ZHJtX2ZkLCB3aWR0aCwgaGVpZ2h0LCBE Uk1fRk9STUFUX1hSR0I4ODg4LCB0aWxpbmcsICZpbnB1dF9mYik7DQo+ICsJaWd0X2Fzc2VydChy ZXQgPj0gMCk7DQo+ICsNCj4gKwlyZXQgPSBpZ3RfY3JlYXRlX2ZiKGRpc3BsYXktPmRybV9mZCwg d2lkdGgsIGhlaWdodCwgd3JpdGViYWNrX2Zvcm1hdCwgdGlsaW5nLCAmb3V0cHV0X2ZiKTsNCj4g KwlpZ3RfYXNzZXJ0KHJldCA+PSAwKTsNCj4gKw0KPiArCXBsYW5lID0gaWd0X291dHB1dF9nZXRf cGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOw0KPiArCWlndF9wbGFu ZV9zZXRfZmIocGxhbmUsICZpbnB1dF9mYik7DQo+ICsJaWd0X291dHB1dF9zZXRfd3JpdGViYWNr X2ZiKG91dHB1dCwgJm91dHB1dF9mYik7DQo+ICsNCj4gKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlf Y29tbWl0X2F0b21pYyhkaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwNCj4gKwkJ CQkJICAgIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsNCg0KT2theSwgd2Un cmUgdXNpbmcgYXRvbWljIHRlc3Qtb25seSBtb2RlIHRvIGtub3cgaWYgd2UgY2FuIHBlcmZvcm0g dGVzdHMNCndpdGggdGhlIHdyaXRlYmFjayBvdXRwdXQuIEl0J3MgcHJvYmFibHkgZmluZSwgYnV0 IHdlIGRvbid0IHVzZQ0KV1JJVEVCQUNLX1BJWEVMX0ZPUk1BVFMsIHdoaWNoIG1ha2VzIG1lIGEg bGl0dGxlIGJpdCBzYWQuDQoNCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsNCj4g KwlpZ3RfcmVtb3ZlX2ZiKGRpc3BsYXktPmRybV9mZCwgJmlucHV0X2ZiKTsNCj4gKwlpZ3RfcmVt b3ZlX2ZiKGRpc3BsYXktPmRybV9mZCwgJm91dHB1dF9mYik7DQo+ICsNCj4gKwlyZXR1cm4gIXJl dDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlndF9vdXRwdXRfdCAqa21zX3dyaXRlYmFja19nZXRf b3V0cHV0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXkpDQo+ICt7DQo+ICsJaW50IGk7DQo+ICsNCj4g Kwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsNCj4gKwkJaWd0X291 dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsNCj4gKwkJaW50IGo7DQo+ICsN Cj4gKwkJaWYgKG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJN X01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSykNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJCWtt c3Rlc3RfZm9yY2VfY29ubmVjdG9yKGRpc3BsYXktPmRybV9mZCwgb3V0cHV0LT5jb25maWcuY29u bmVjdG9yLCBGT1JDRV9DT05ORUNUT1JfT04pOw0KDQpIbW0uIElzIHRoaXMgcmVhbGx5IG5lY2Vz c2FyeT8gIlJlYWwiIHVzZXJzcGFjZSB3b24ndCBkbyB0aGlzLCBzbyBJDQpkb24ndCB0aGluayB3 ZSBuZWVkIHRvIGVpdGhlci4NCg0KPiArCQlmb3IgKGogPSAwOyBqIDwgaWd0X2Rpc3BsYXlfZ2V0 X25fcGlwZXMoZGlzcGxheSk7IGorKykgew0KPiArCQkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIGopOw0KPiArDQo+ICsJCQlpZiAoY2hlY2tfd3JpdGViYWNrX2NvbmZpZyhkaXNwbGF5LCBv dXRwdXQpKSB7DQo+ICsJCQkJaWd0X2RlYnVnKCJVc2luZyBjb25uZWN0b3IgJXU6JXMgb24gcGlw ZSAlZFxuIiwNCj4gKwkJCQkJICBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9p ZCwNCj4gKwkJCQkJICBvdXRwdXQtPm5hbWUsIGopOw0KPiArCQkJCXJldHVybiBvdXRwdXQ7DQo+ ICsJCQl9DQoNCldlIGNvdWxkIHByb2JhYmx5IGFkZCBhbiBpZ3RfZGVidWcgc3RhdGVtZW50IGlu IGNhc2Ugd2UgZG9uJ3QgdXNlIHRoaXMNCndyaXRlYmFjayBvdXRwdXQuDQoNCj4gKwkJfQ0KPiAr DQo+ICsJCS8qIFJlc3RvcmUgYW55IGNvbm5lY3RvcnMgd2UgZG9uJ3QgdXNlLCBzbyB3ZSBkb24n dCB0cmlwIG9uIHRoZW0gbGF0ZXIgKi8NCj4gKwkJa21zdGVzdF9mb3JjZV9jb25uZWN0b3IoZGlz cGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3IsIEZPUkNFX0NPTk5FQ1RPUl9V TlNQRUNJRklFRCk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIE5VTEw7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIGNoZWNrX3dyaXRlYmFja19mYl9pZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkN Cj4gK3sNCj4gKwl1aW50NjRfdCBjaGVja19mYl9pZDsNCj4gKw0KPiArCWNoZWNrX2ZiX2lkID0g aWd0X291dHB1dF9nZXRfcHJvcChvdXRwdXQsIElHVF9DT05ORUNUT1JfV1JJVEVCQUNLX0ZCX0lE KTsNCj4gKwlpZ3RfYXNzZXJ0KGNoZWNrX2ZiX2lkID09IDApOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IGRvX3dyaXRlYmFja190ZXN0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50MzJfdCBm bGFncywNCj4gKwkJCSAgICAgIHVpbnQzMl90IGZiX2lkLCBpbnQzMl90ICpvdXRfZmVuY2VfcHRy LA0KPiArCQkJICAgICAgYm9vbCBwdHJfdmFsaWQpDQoNCmZsYWdzIHNlZW1zIHRvIGFsd2F5cyBi ZSBzZXQgdG8gRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQuIFdlIGNhbg0KcHJvYmFibHkg cmVtb3ZlIHRoZSBwYXJhbWV0ZXIgZnJvbSB0aGlzIGZ1bmN0aW9uLg0KDQo+ICt7DQo+ICsJaW50 IHJldDsNCj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gb3V0cHV0LT5kaXNwbGF5Ow0KPiAr CXN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgKmNvbmZpZyA9ICZvdXRwdXQtPmNvbmZp ZzsNCj4gKw0KPiArCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVD VE9SX0NSVENfSUQsIGNvbmZpZy0+Y3J0Yy0+Y3J0Y19pZCk7DQo+ICsJaWd0X291dHB1dF9zZXRf cHJvcF92YWx1ZShvdXRwdXQsIElHVF9DT05ORUNUT1JfV1JJVEVCQUNLX0ZCX0lELCBmYl9pZCk7 DQo+ICsJaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShvdXRwdXQsIElHVF9DT05ORUNUT1JfV1JJ VEVCQUNLX09VVF9GRU5DRV9QVFIsICh1aW50NjRfdClvdXRfZmVuY2VfcHRyKTsNCj4gKw0KPiAr CWlmIChwdHJfdmFsaWQpDQo+ICsJCSpvdXRfZmVuY2VfcHRyID0gMDsNCj4gKw0KPiArCXJldCA9 IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKGRpc3BsYXksIGZsYWdzLCBOVUxMKTsNCj4g Kw0KPiArCWlmIChwdHJfdmFsaWQpDQo+ICsJCWlndF9hc3NlcnQoKm91dF9mZW5jZV9wdHIgPT0g LTEpOw0KDQpJJ20gY29uZnVzZWQuIFdoeSBzaG91bGQgdGhpcyBiZSAtMSBldmVuIGlmIHdlDQpp Z3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyBzdWNjZWVkcz8NCg0KPiArCS8qIFdSSVRFQkFD S19GQl9JRCBtdXN0IGFsd2F5cyByZWFkIGFzIHplcm8gKi8NCj4gKwljaGVja193cml0ZWJhY2tf ZmJfaWQob3V0cHV0KTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGludmFsaWRfb3V0X2ZlbmNlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfZmJfdCAq dmFsaWRfZmIsIGlndF9mYl90ICppbnZhbGlkX2ZiKQ0KPiArew0KPiArCWludCBpLCByZXQ7DQo+ ICsJaW50MzJfdCBvdXRfZmVuY2U7DQo+ICsJc3RydWN0IHsNCj4gKwkJdWludDMyX3QgZmJfaWQ7 DQo+ICsJCWJvb2wgcHRyX3ZhbGlkOw0KPiArCQlpbnQzMl90ICpvdXRfZmVuY2VfcHRyOw0KPiAr CX0gaW52YWxpZF90ZXN0c1tdID0gew0KPiArCQl7DQo+ICsJCQkvKiBObyBvdXRwdXQgYnVmZmVy LCBidXQgdGhlIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSIHNldC4gKi8NCj4gKwkJCS5mYl9pZCA9 IDAsDQo+ICsJCQkucHRyX3ZhbGlkID0gdHJ1ZSwNCj4gKwkJCS5vdXRfZmVuY2VfcHRyID0gJm91 dF9mZW5jZSwNCj4gKwkJfSwNCj4gKwkJew0KPiArCQkJLyogSW52YWxpZCBvdXRwdXQgYnVmZmVy LiAqLw0KPiArCQkJLmZiX2lkID0gaW52YWxpZF9mYi0+ZmJfaWQsDQo+ICsJCQkucHRyX3ZhbGlk ID0gdHJ1ZSwNCj4gKwkJCS5vdXRfZmVuY2VfcHRyID0gJm91dF9mZW5jZSwNCj4gKwkJfSwNCg0K VGhpcyBkb2Vzbid0IGJlbG9uZyBpbiB0aGlzIGZ1bmN0aW9uIChpbnZhbGlkX291dF9mZW5jZSks IHNpbmNlIHRoaXMNCmNoZWNrcyBhbiBpbnZhbGlkIGZyYW1lYnVmZmVyLCBub3QgYW4gaW52YWxp ZCBmZW5jZS4gV2Ugc2hvdWxkIHByb2JhYmx5DQptb3ZlIGl0IHRvIHdyaXRlYmFja19mYl9pZCAo YW5kIHJlbmFtZSB0aGF0IGZ1bmN0aW9uIHRvIHRlc3RfZmI/KS4NCg0KPiArCQl7DQo+ICsJCQkv KiBJbnZhbGlkIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSLiAqLw0KPiArCQkJLmZiX2lkID0gdmFs aWRfZmItPmZiX2lkLA0KPiArCQkJLnB0cl92YWxpZCA9IGZhbHNlLA0KPiArCQkJLm91dF9mZW5j ZV9wdHIgPSAoaW50MzJfdCAqKTB4OCwNCj4gKwkJfSwNCj4gKwl9Ow0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaW52YWxpZF90ZXN0cyk7IGkrKykgew0KPiArCQlyZXQgPSBk b193cml0ZWJhY2tfdGVzdChvdXRwdXQsIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULA0K PiArCQkJCQlpbnZhbGlkX3Rlc3RzW2ldLmZiX2lkLA0KPiArCQkJCQlpbnZhbGlkX3Rlc3RzW2ld Lm91dF9mZW5jZV9wdHIsDQo+ICsJCQkJCWludmFsaWRfdGVzdHNbaV0ucHRyX3ZhbGlkKTsNCj4g KwkJaWd0X2Fzc2VydChyZXQgIT0gMCk7DQoNCk1heWJlIHdlIGNhbiBjaGVjayBmb3IgLXJldCA9 PSBFSU5WQUw/DQoNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHdyaXRlYmFja19m Yl9pZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X2ZiX3QgKnZhbGlkX2ZiLCBpZ3RfZmJfdCAq aW52YWxpZF9mYikNCg0KaW52YWxpZF9mYiBkb2Vzbid0IHNlZW0gdG8gYmUgdXNlZCBoZXJlLiB2 YWxpZF9mYiBzZWVtcyB0byBiZSBzZXQgdG8NCnRoZSBpbnB1dCBmcmFtZWJ1ZmZlci4gSXQncyBw cm9iYWJseSBub3QgYSBnb29kIGlkZWEgdG8gdXNlIHRoZSBzYW1lIEZCDQpmb3IgaW5wdXQgYW5k IHdyaXRlYmFjayBvdXRwdXQuDQoNCj4gK3sNCj4gKw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwkv KiBWYWxpZCBvdXRwdXQgYnVmZmVyICovDQo+ICsJcmV0ID0gZG9fd3JpdGViYWNrX3Rlc3Qob3V0 cHV0LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwNCj4gKwkJCQl2YWxpZF9mYi0+ZmJf aWQsIE5VTEwsIGZhbHNlKTsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsNCj4gKw0KPiArCS8q IEludmFsaWQgb2JqZWN0IGZvciBXUklURUJBQ0tfRkJfSUQgKi8NCj4gKwlyZXQgPSBkb193cml0 ZWJhY2tfdGVzdChvdXRwdXQsIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULA0KPiArCQkJ CW91dHB1dC0+aWQsIE5VTEwsIGZhbHNlKTsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAtRUlOVkFM KTsNCj4gKw0KPiArCS8qIFplcm8gV1JJVEVCQUNLX0ZCX0lEICovDQo+ICsJcmV0ID0gZG9fd3Jp dGViYWNrX3Rlc3Qob3V0cHV0LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwNCj4gKwkJ CQkwLCBOVUxMLCBmYWxzZSk7DQo+ICsJaWd0X2Fzc2VydChyZXQgPT0gMCk7DQo+ICt9DQo+ICsN Cj4gK2lndF9tYWluDQo+ICt7DQo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Ow0KPiArCWlndF9v dXRwdXRfdCAqb3V0cHV0Ow0KPiArCWlndF9wbGFuZV90ICpwbGFuZTsNCj4gKwlpZ3RfZmJfdCBp bnB1dF9mYjsNCj4gKwlkcm1Nb2RlTW9kZUluZm8gbW9kZTsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ ICsJbWVtc2V0KCZkaXNwbGF5LCAwLCBzaXplb2YoZGlzcGxheSkpOw0KPiArDQo+ICsJaWd0X2Zp eHR1cmUgew0KPiArCQlkaXNwbGF5LmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJ VkVSX0FOWSk7DQo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRpc3BsYXkuZHJt X2ZkKTsNCj4gKw0KPiArCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7DQo+ICsNCj4g KwkJaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGlzcGxheSwgZGlzcGxheS5kcm1fZmQpOw0KPiArDQo+ ICsJCWlndF9yZXF1aXJlKGRpc3BsYXkuaXNfYXRvbWljKTsNCj4gKw0KPiArCQlvdXRwdXQgPSBr bXNfd3JpdGViYWNrX2dldF9vdXRwdXQoJmRpc3BsYXkpOw0KPiArCQlpZ3RfcmVxdWlyZShvdXRw dXQpOw0KPiArDQo+ICsJCWlmIChvdXRwdXQtPnVzZV9vdmVycmlkZV9tb2RlKQ0KPiArCQkJbWVt Y3B5KCZtb2RlLCAmb3V0cHV0LT5vdmVycmlkZV9tb2RlLCBzaXplb2YobW9kZSkpOw0KPiArCQll bHNlDQo+ICsJCQltZW1jcHkoJm1vZGUsICZvdXRwdXQtPmNvbmZpZy5kZWZhdWx0X21vZGUsIHNp emVvZihtb2RlKSk7DQo+ICsNCj4gKwkJcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBl KG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7DQo+ICsJCWlndF9yZXF1aXJlKHBsYW5l KTsNCg0KTWF5YmUgd2UgY2FuIGFzc2VydCBvbiB0aGlzPw0KDQo+ICsJCXJldCA9IGlndF9jcmVh dGVfZmIoZGlzcGxheS5kcm1fZmQsIG1vZGUuaGRpc3BsYXksDQo+ICsJCQkJICAgIG1vZGUudmRp c3BsYXksDQo+ICsJCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ICsJCQkJICAgIGlndF9m Yl9tb2RfdG9fdGlsaW5nKDApLA0KDQpUaGlzIGlzIHN1cHBvc2VkIHRvIHRha2UgYSBtb2RpZmll ci4gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHdvdWxkIGJlDQpiZXR0ZXIgdG8gbWFrZSB0aGlzIGNs ZWFyLg0KDQooQXBwbGllcyB0byBvdGhlciBsaW5lcyBvZiB0aGlzIHBhdGNoKQ0KDQo+ICsJCQkJ ICAgICZpbnB1dF9mYik7DQo+ICsJCWlndF9hc3NlcnQocmV0ID49IDApOw0KPiArCQlpZ3RfcGxh bmVfc2V0X2ZiKHBsYW5lLCAmaW5wdXRfZmIpOw0KPiArCX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0 KCJ3cml0ZWJhY2stcGl4ZWwtZm9ybWF0cyIpIHsNCj4gKwkJZHJtTW9kZVByb3BlcnR5QmxvYlJl cyAqZm9ybWF0c19ibG9iID0gZ2V0X3dyaXRlYmFja19mb3JtYXRzX2Jsb2Iob3V0cHV0KTsNCg0K TmVlZCB0byBkcm1Nb2RlRnJlZVByb3BlcnR5QmxvYiB0aGlzLg0KDQo+ICsJCWNvbnN0IGNoYXIg KnZhbGlkX2NoYXJzID0gIjAxMjM0NTYgQUJDR05SVVZYWSI7DQo+ICsJCXVuc2lnbmVkIGludCBp Ow0KPiArCQljaGFyICpjOw0KPiArDQo+ICsJCS8qDQo+ICsJCSAqIFdlIGRvbid0IGhhdmUgYSBj b21wcmVoZW5zaXZlIGxpc3Qgb2YgZm9ybWF0cywgc28ganVzdCBjaGVjaw0KPiArCQkgKiB0aGF0 IHRoZSBibG9iIGxlbmd0aCBpcyBzZW5zaWJsZSBhbmQgdGhhdCBpdCBkb2Vzbid0IGNvbnRhaW4N Cj4gKwkJICogYW55IG91dGxhbmRpc2ggY2hhcmFjdGVycw0KPiArCQkgKi8NCj4gKwkJaWd0X2Fz c2VydCghKGZvcm1hdHNfYmxvYi0+bGVuZ3RoICUgNCkpOw0KPiArCQljID0gZm9ybWF0c19ibG9i LT5kYXRhOw0KPiArCQlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0c19ibG9iLT5sZW5ndGg7IGkrKykN Cj4gKwkJCWlndF9hc3NlcnRfZihzdHJjaHIodmFsaWRfY2hhcnMsIGNbaV0pLA0KPiArCQkJCSAg ICAgIlVuZXhwZWN0ZWQgY2hhcmFjdGVyICVjXG4iLCBjW2ldKTsNCg0KSG9uZXN0bHksIEknbSBu b3QgYSBmYW4gb2YgdGhpcyBjaGVjay4gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBmb3VyY2MN CmNvZGVzIHdpbGwgYmUgbWFkZSBmcm9tIEFTQ0lJIGNoYXJhY3RlcnMsIGluIGZhY3Qgc29tZSBm b3JtYXRzIGFscmVhZHkNCmhhdmUgbm9uLXByaW50YWJsZSBjaGFycyBpbiB0aGVtLiBJIGRvbid0 IHdhbnQgdG8gaGF2ZSB0byB1cGRhdGUgdGhpcw0KdGVzdCB3aGVuIGEgbmV3IGZvdXJjYyBmb3Jt YXQgaXMgYWRkZWQuDQoNCldlIGN1cnJlbnRseSBkb24ndCBoYXZlIGEgdGVzdCBmb3IgSU5fRk9S TUFUUy4gSWYgd2UgcmVhbGx5IHdhbnQgdG8NCmNoZWNrIGZvcm1hdHMsIHdlIGNvdWxkIGhhdmUg YSBiaWcgYXJyYXkgb2Yga25vd24gZm9ybWF0cyBhbmQgYWRkIGENCmJvb2wgaXNfdmFsaWRfZm9y bWF0KHVpbnQzMl90IGZtdCkgZnVuY3Rpb24uDQoNCj4gKwl9DQo+ICsNCj4gKwlpZ3Rfc3VidGVz dCgid3JpdGViYWNrLWludmFsaWQtb3V0LWZlbmNlIikgew0KPiArCQlpZ3RfZmJfdCBpbnZhbGlk X2ZiOw0KDQppbnZhbGlkX291dHB1dF9mYiB3b3VsZCBiZSBhIGJldHRlciBuYW1lIElNSE8uDQoN Cj4gKwkJcmV0ID0gaWd0X2NyZWF0ZV9mYihkaXNwbGF5LmRybV9mZCwgbW9kZS5oZGlzcGxheSAv IDIsDQo+ICsJCQkJICAgIG1vZGUudmRpc3BsYXkgLyAyLA0KPiArCQkJCSAgICBEUk1fRk9STUFU X1hSR0I4ODg4LA0KPiArCQkJCSAgICBpZ3RfZmJfbW9kX3RvX3RpbGluZygwKSwNCj4gKwkJCQkg ICAgJmludmFsaWRfZmIpOw0KPiArCQlpZ3RfcmVxdWlyZShyZXQgPiAwKTsNCg0KV2Ugc2hvdWxk IHByb2JhYmx5IHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZTogcmV0IGlzIHNpZ25lZCwNCmlndF9j cmVhdGVfZmIgaXNuJ3QuIEFsc28gcmV0IGRvZXNuJ3QgbWFrZSBpdCBjbGVhciB0aGF0IHRoZSBy ZXR1cm4NCnZhbHVlIGlzIHRoZSBLTVMgZnJhbWVidWZmZXIgSUQuDQoNCihBcHBsaWVzIHRvIG90 aGVyIHN1YnRlc3RzKQ0KDQo+ICsJCWludmFsaWRfb3V0X2ZlbmNlKG91dHB1dCwgJmlucHV0X2Zi LCAmaW52YWxpZF9mYik7DQoNCihTdGlsbCBub3Qgc3VyZSB3aHkgd2UgcHJvdmlkZSB0aGUgaW5w dXQgRkIgdG8gdGhpcyBmdW5jdGlvbi4pDQoNCj4gKwkJaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRy bV9mZCwgJmludmFsaWRfZmIpOw0KPiArCX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0KCJ3cml0ZWJh Y2stZmItaWQiKSB7DQo+ICsJCWlndF9mYl90IG91dHB1dF9mYjsNCj4gKwkJcmV0ID0gaWd0X2Ny ZWF0ZV9mYihkaXNwbGF5LmRybV9mZCwgbW9kZS5oZGlzcGxheSwgbW9kZS52ZGlzcGxheSwNCj4g KwkJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gKwkJCQkgICAgaWd0X2ZiX21vZF90b190 aWxpbmcoMCksDQo+ICsJCQkJICAgICZvdXRwdXRfZmIpOw0KPiArCQlpZ3RfcmVxdWlyZShyZXQg PiAwKTsNCj4gKw0KPiArCQl3cml0ZWJhY2tfZmJfaWQob3V0cHV0LCAmaW5wdXRfZmIsICZvdXRw dXRfZmIpOw0KPiArDQo+ICsJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1fZmQsICZvdXRwdXRf ZmIpOw0KPiArCX0NCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJaWd0X3JlbW92ZV9mYihk aXNwbGF5LmRybV9mZCwgJmlucHV0X2ZiKTsNCj4gKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGlzcGxh eSk7DQo+ICsJfQ0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0 cy9tZXNvbi5idWlsZA0KPiBpbmRleCBmMTY4ZmJiYS4uOWM3N2NmY2QgMTAwNjQ0DQo+IC0tLSBh L3Rlc3RzL21lc29uLmJ1aWxkDQo+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkDQo+IEBAIC02Myw2 ICs2Myw3IEBAIHRlc3RfcHJvZ3MgPSBbDQo+ICAJJ2ttc191bml2ZXJzYWxfcGxhbmUnLA0KPiAg CSdrbXNfdmJsYW5rJywNCj4gIAkna21zX3ZycicsDQo+ICsJJ2ttc193cml0ZWJhY2snLA0KPiAg CSdtZXRhX3Rlc3QnLA0KPiAgCSdwYW5mcm9zdF9nZXRfcGFyYW0nLA0KPiAgCSdwYW5mcm9zdF9n ZW1fbmV3JywNCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCj4gaWd0LWRldiBtYWlsaW5nIGxpc3QNCj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=