From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH 3/5] drm/i915/perf: allow for CS OA configs to be created lazily Date: Tue, 21 May 2019 17:55:00 +0100 Message-ID: <1b29c839-a03d-d033-f755-e06c5239a66c@intel.com> References: <20190521140855.3957-1-lionel.g.landwerlin@intel.com> <20190521140855.3957-4-lionel.g.landwerlin@intel.com> <155845698911.23981.10616480836626822176@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A2F989533 for ; Tue, 21 May 2019 16:55:02 +0000 (UTC) In-Reply-To: <155845698911.23981.10616480836626822176@skylake-alporthouse-com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjEvMDUvMjAxOSAxNzo0MywgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IFF1b3RpbmcgTGlvbmVs IExhbmR3ZXJsaW4gKDIwMTktMDUtMjEgMTU6MDg6NTMpCj4+IEhlcmUgd2UgaW50cm9kdWNlIGEg bWVjaGFuaXNtIGJ5IHdoaWNoIHRoZSBleGVjYnVmIHBhcnQgb2YgdGhlIGk5MTUKPj4gZHJpdmVy IHdpbGwgYmUgYWJsZSB0byByZXF1ZXN0IHRoYXQgYSBiYXRjaCBidWZmZXIgY29udGFpbmluZyB0 aGUKPj4gcHJvZ3JhbW1pbmcgZm9yIGEgcGFydGljdWxhciBPQSBjb25maWcgYmUgY3JlYXRlZC4K Pj4KPj4gV2UnbGwgZXhlY3V0ZSB0aGVzZSBPQSBjb25maWd1cmF0aW9uIGJ1ZmZlcnMgcmlnaHQg YmVmb3JlIGV4ZWN1dGluZyBhCj4+IHNldCBvZiB1c2Vyc3BhY2UgY29tbWFuZHMgc28gdGhhdCBh IHBhcnRpY3VsYXIgdXNlciBiYXRjaGJ1ZmZlciBiZQo+PiBleGVjdXRlZCB3aXRoIGEgZ2l2ZW4g T0EgY29uZmlndXJhdGlvbi4KPj4KPj4gVGhpcyBtZWNoYW5pc20gZXNzZW50aWFsbHkgYWxsb3dz IHRoZSB1c2Vyc3BhY2UgZHJpdmVyIHRvIGdvIHRocm91Z2gKPj4gc2V2ZXJhbCBPQSBjb25maWd1 cmF0aW9uIHdpdGhvdXQgaGF2aW5nIHRvIG9wZW4vY2xvc2UgdGhlIGk5MTUvcGVyZgo+PiBzdHJl YW0uCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5k d2VybGluQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3B1X2NvbW1hbmRzLmggfCAgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICAgICAgIHwgIDIyICsrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGVyZi5jICAgICAgICAgICAgIHwgMTg3ICsrKysrKysrKysrKysrKystLS0KPj4gICAzIGZp bGVzIGNoYW5nZWQsIDE3OCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKPj4gaW5kZXggYTM0 ZWNlNTNhNzcxLi5iYmNiODBjZjJhODUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oCj4+IEBAIC0xMjYsNiArMTI2LDcgQEAKPj4gICAgKi8K Pj4gICAjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfSU1NKHgpICAgICAgICBNSV9JTlNUUigweDIy LCAyKih4KS0xKQo+PiAgICNkZWZpbmUgICBNSV9MUklfRk9SQ0VfUE9TVEVEICAgICAgICAgICgx PDwxMikKPj4gKyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9JTU1fTUFYX1JFR1MgKDEyNikKPj4g ICAjZGVmaW5lIE1JX1NUT1JFX1JFR0lTVEVSX01FTSAgICAgICAgTUlfSU5TVFIoMHgyNCwgMSkK Pj4gICAjZGVmaW5lIE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44ICAgTUlfSU5TVFIoMHgyNCwg MikKPj4gICAjZGVmaW5lICAgTUlfU1JNX0xSTV9HTE9CQUxfR1RUICAgICAgICAgICAgICAgICgx PDwyMikKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDFhZDM4MThkMjY3Ni4uYWJk NTY0YmZhMDNiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTEyNzQsNiAr MTI3NCwxMCBAQCBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgewo+PiAgICAgICAgICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc1syXTsKPj4gICAgICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgc3lz ZnNfbWV0cmljX2lkOwo+PiAgIAo+PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7Cj4+ICsKPj4gKyAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHZtYV9saW5rOwo+PiArCj4+ ICAgICAgICAgIGF0b21pY190IHJlZl9jb3VudDsKPj4gICB9Owo+PiAgIAo+PiBAQCAtMTg1Niwx MSArMTg2MCwyMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4+ICAgICAgICAgICAgICAg ICAgc3RydWN0IG11dGV4IG1ldHJpY3NfbG9jazsKPj4gICAKPj4gICAgICAgICAgICAgICAgICAv Kgo+PiAtICAgICAgICAgICAgICAgICogTGlzdCBvZiBkeW5hbWljIGNvbmZpZ3VyYXRpb25zLCB5 b3UgbmVlZCB0byBob2xkCj4+IC0gICAgICAgICAgICAgICAgKiBkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2xvY2sgdG8gYWNjZXNzIGl0Lgo+PiArICAgICAgICAgICAgICAgICogTGlzdCBvZiBkeW5h bWljIGNvbmZpZ3VyYXRpb25zIChzdHJ1Y3QgaTkxNV9vYV9jb25maWcpLCB5b3UKPj4gKyAgICAg ICAgICAgICAgICAqIG5lZWQgdG8gaG9sZCBkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2sgdG8g YWNjZXNzIGl0Lgo+PiAgICAgICAgICAgICAgICAgICAqLwo+PiAgICAgICAgICAgICAgICAgIHN0 cnVjdCBpZHIgbWV0cmljc19pZHI7Cj4+ICAgCj4+ICsgICAgICAgICAgICAgICAvKgo+PiArICAg ICAgICAgICAgICAgICogTGlzdCBvZiBkeW5hbWljIGNvbmZpZ3VyYXRpb25zIChzdHJ1Y3QgaTkx NV9vYV9jb25maWcpCj4+ICsgICAgICAgICAgICAgICAgKiB3aGljaCBoYXZlIGFuIGFsbG9jYXRl ZCBidWZmZXIgaW4gR0dUVCBmb3IgcmVjb25maWd1cmF0aW9uLAo+PiArICAgICAgICAgICAgICAg ICogeW91IG5lZWQgdG8gaG9sZCBkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2sgdG8gYWNjZXNz IGl0Lgo+PiArICAgICAgICAgICAgICAgICogRWxlbWVudHMgYXJlIGFkZGVkIHRvIHRoZSBsaXN0 IGxhemlsbHkgb24gZXhlY2J1ZiAod2hlbiBhCj4+ICsgICAgICAgICAgICAgICAgKiBwYXJ0aWN1 bGFyIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWVzdGVkKS4gVGhlIGxpc3QgaXMgZnJlZWQKPj4gKyAg ICAgICAgICAgICAgICAqIHVwb24gY2xvc2luZyB0aGUgcGVyZiBzdHJlYW0uCj4+ICsgICAgICAg ICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbWV0cmljc19i dWZmZXJzOwo+PiArCj4+ICAgICAgICAgICAgICAgICAgLyoKPj4gICAgICAgICAgICAgICAgICAg KiBMb2NrIGFzc29jaWF0ZWQgd2l0aCBhbnl0aGluZyBiZWxvdyB3aXRoaW4gdGhpcyBzdHJ1Y3R1 cmUKPj4gICAgICAgICAgICAgICAgICAgKiBleGNlcHQgZXhjbHVzaXZlX3N0cmVhbS4KPj4gQEAg LTMxMzYsNiArMzE1MCwxMCBAQCBpbnQgaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gICB2b2lkIGk5MTVfb2FfaW5pdF9y ZWdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1MzIgKnJlZ19zdGF0ZSk7Cj4+ICtpbnQgaTkxNV9wZXJmX2dldF9v YV9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgbWV0cmljc19zZXQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKipvdXRfY29uZmlnLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKipvdXRfb2JqKTsKPj4g ICAKPj4gICAvKiBpOTE1X2dlbV9ldmljdC5jICovCj4+ICAgaW50IF9fbXVzdF9jaGVjayBpOTE1 X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4+IGluZGV4IDhjN2ZhN2Y3MDE0Yi4uN2UwZWJkNGJjOGYy IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+PiBAQCAtMzY1LDkgKzM2NSwxNiBA QCBzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgewo+PiAgICAgICAgICBpbnQgb2FfcGVyaW9k X2V4cG9uZW50Owo+PiAgIH07Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBmcmVlX29hX2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQo+PiArc3RhdGljIHZvaWQg cHV0X29hX2NvbmZpZyhzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKPj4gICB7Cj4+ ICsgICAgICAgaWYgKCFhdG9taWNfZGVjX2FuZF90ZXN0KCZvYV9jb25maWctPnJlZl9jb3VudCkp Cj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICAgICBpZiAob2FfY29uZmln LT5vYmopIHsKPj4gKyAgICAgICAgICAgICAgIGxpc3RfZGVsKCZvYV9jb25maWctPnZtYV9saW5r KTsKPj4gKyAgICAgICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9wdXQob2FfY29uZmlnLT5vYmop Owo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgICBpZiAoIVBUUl9FUlIob2FfY29uZmlnLT5m bGV4X3JlZ3MpKQo+PiAgICAgICAgICAgICAgICAgIGtmcmVlKG9hX2NvbmZpZy0+ZmxleF9yZWdz KTsKPj4gICAgICAgICAgaWYgKCFQVFJfRVJSKG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MpKQo+ PiBAQCAtMzc3LDM4ICszODQsMTQyIEBAIHN0YXRpYyB2b2lkIGZyZWVfb2FfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAgICAgICAga2ZyZWUob2FfY29uZmln KTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBwdXRfb2FfY29uZmlnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKPj4gK3N0YXRpYyB1MzIgKndyaXRlX2NzX21p X2xyaSh1MzIgKmNzLCBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKnJlZ19kYXRhLCB1MzIgbl9y ZWdzKQo+PiAgIHsKPj4gLSAgICAgICBpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJm9hX2NvbmZp Zy0+cmVmX2NvdW50KSkKPj4gLSAgICAgICAgICAgICAgIHJldHVybjsKPj4gKyAgICAgICB1MzIg aTsKPj4gKwo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3JlZ3M7IGkrKykgewo+PiArICAg ICAgICAgICAgICAgaWYgKChpICUgTUlfTE9BRF9SRUdJU1RFUl9JTU1fTUFYX1JFR1MpID09IDAp IHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdTMyIG5fbHJpID0gbWluKG5fcmVncyAtIGks Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodTMyKSBNSV9MT0FE X1JFR0lTVEVSX0lNTV9NQVhfUkVHUyk7Cj4+ICAgCj4+IC0gICAgICAgZnJlZV9vYV9jb25maWco ZGV2X3ByaXYsIG9hX2NvbmZpZyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICpjcysrID0g TUlfTE9BRF9SRUdJU1RFUl9JTU0obl9scmkpOwo+PiArICAgICAgICAgICAgICAgfQo+PiArICAg ICAgICAgICAgICAgKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChyZWdfZGF0YVtpXS5hZGRy KTsKPj4gKyAgICAgICAgICAgICAgICpjcysrID0gcmVnX2RhdGFbaV0udmFsdWU7Cj4+ICsgICAg ICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIGNzOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBp bnQgZ2V0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+IC0g ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWV0cmljc19zZXQsCj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKipvdXRfY29uZmlnKQo+PiArc3RhdGlj IGludCBhbGxvY19vYV9jb25maWdfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfb2FfY29u ZmlnICpvYV9jb25maWcpCj4+ICAgewo+PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpibzsKPj4gKyAgICAgICBzaXplX3QgY29uZmlnX2xlbmd0aCA9IDA7Cj4+ICAgICAgICAg IGludCByZXQ7Cj4+ICsgICAgICAgdTMyICpjczsKPj4gICAKPj4gLSAgICAgICBpZiAobWV0cmlj c19zZXQgPT0gMSkgewo+PiAtICAgICAgICAgICAgICAgKm91dF9jb25maWcgPSAmZGV2X3ByaXYt PnBlcmYub2EudGVzdF9jb25maWc7Cj4+IC0gICAgICAgICAgICAgICBhdG9taWNfaW5jKCZkZXZf cHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5yZWZfY291bnQpOwo+PiAtICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4+ICsgICAgICAgaWYgKG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuID4gMCkgewo+ PiArICAgICAgICAgICAgICAgY29uZmlnX2xlbmd0aCArPSBESVZfUk9VTkRfVVAob2FfY29uZmln LT5tdXhfcmVnc19sZW4sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNSV9MT0FEX1JFR0lTVEVSX0lNTV9NQVhfUkVHUykgKiA0Owo+PiArICAgICAgICAg ICAgICAgY29uZmlnX2xlbmd0aCArPSBvYV9jb25maWctPm11eF9yZWdzX2xlbiAqIDg7Cj4+ICsg ICAgICAgfQo+PiArICAgICAgIGlmIChvYV9jb25maWctPmJfY291bnRlcl9yZWdzX2xlbiA+IDAp IHsKPj4gKyAgICAgICAgICAgICAgIGNvbmZpZ19sZW5ndGggKz0gRElWX1JPVU5EX1VQKG9hX2Nv bmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUlfTE9BRF9SRUdJU1RFUl9JTU1fTUFYX1JFR1MpICogNDsKPj4g KyAgICAgICAgICAgICAgIGNvbmZpZ19sZW5ndGggKz0gb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVn c19sZW4gKiA4Owo+PiAgICAgICAgICB9Cj4+ICsgICAgICAgaWYgKG9hX2NvbmZpZy0+ZmxleF9y ZWdzX2xlbiA+IDApIHsKPj4gKyAgICAgICAgICAgICAgIGNvbmZpZ19sZW5ndGggKz0gRElWX1JP VU5EX1VQKG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbiwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1JX0xPQURfUkVHSVNURVJfSU1NX01BWF9SRUdTKSAq IDQ7Cj4+ICsgICAgICAgICAgICAgICBjb25maWdfbGVuZ3RoICs9IG9hX2NvbmZpZy0+ZmxleF9y ZWdzX2xlbiAqIDg7Cj4+ICsgICAgICAgfQo+PiArICAgICAgIGNvbmZpZ19sZW5ndGggKz0gNDsg LyogTUlfQkFUQ0hfQlVGRkVSX0VORCAqLwo+PiArICAgICAgIGNvbmZpZ19sZW5ndGggPSBBTElH Tihjb25maWdfbGVuZ3RoLCBJOTE1X0dUVF9QQUdFX1NJWkUpOwo+PiAgIAo+PiAtICAgICAgIHJl dCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2Nr KTsKPj4gKyAgICAgICByZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmaTkxNS0+ ZHJtKTsKPiBzdHJ1Y3RfbXV0ZXggbm90IHJlcXVpcmVkIGZvciBjcmVhdGluZy9wb3B1bGF0aW5n IGFuIG9iamVjdC4KCgpPaCBuaWNlISBJJ2xsIGNsZWFuIHRoaXMgdXAuCgpUaGFua3MhCgoKPgo+ PiAgICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICAg Cj4+IC0gICAgICAgKm91dF9jb25maWcgPSBpZHJfZmluZCgmZGV2X3ByaXYtPnBlcmYubWV0cmlj c19pZHIsIG1ldHJpY3Nfc2V0KTsKPj4gLSAgICAgICBpZiAoISpvdXRfY29uZmlnKQo+PiAtICAg ICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKPj4gLSAgICAgICBlbHNlCj4+IC0gICAgICAgICAg ICAgICBhdG9taWNfaW5jKCYoKm91dF9jb25maWcpLT5yZWZfY291bnQpOwo+PiArICAgICAgIGJv ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShpOTE1LCBjb25maWdfbGVuZ3RoKTsKPj4gKyAgICAg ICBpZiAoSVNfRVJSKGJvKSkgewo+PiArICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihibyk7 Cj4+ICsgICAgICAgICAgICAgICBnb3RvIHVubG9jazsKPj4gKyAgICAgICB9Cj4+ICAgCj4+IC0g ICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOwo+PiArICAg ICAgIGNzID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoYm8sIEk5MTVfTUFQX1dCKTsKPj4gKyAg ICAgICBpZiAoSVNfRVJSKGNzKSkgewo+PiArICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihj cyk7Cj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycl91bnJlZjsKPj4gKyAgICAgICB9Cj4+ICsK Pj4gKyAgICAgICBtZW1zZXQoY3MsIDAsIGNvbmZpZ19sZW5ndGgpOwo+IEFscmVhZHkgemVyb2Vk LCBhbmQgd3JpdGVfY3NfbWlfbHJpKCkgbGVhdmVzIG5vIGhvbGVzLgo+Cj4+ICsgICAgICAgY3Mg PSB3cml0ZV9jc19taV9scmkoY3MsIG9hX2NvbmZpZy0+bXV4X3JlZ3MsIG9hX2NvbmZpZy0+bXV4 X3JlZ3NfbGVuKTsKPj4gKyAgICAgICBjcyA9IHdyaXRlX2NzX21pX2xyaShjcywgb2FfY29uZmln LT5iX2NvdW50ZXJfcmVncywgb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVnc19sZW4pOwo+PiArICAg ICAgIGNzID0gd3JpdGVfY3NfbWlfbHJpKGNzLCBvYV9jb25maWctPmZsZXhfcmVncywgb2FfY29u ZmlnLT5mbGV4X3JlZ3NfbGVuKTsKPj4gKwo+PiArICAgICAgICpjcysrID0gTUlfQkFUQ0hfQlVG RkVSX0VORDsKPj4gKwo+IGk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAoYm8pOwo+Cj4+ICsgICAg ICAgaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChibyk7Cj4+ICsKPj4gKyAgICAgICBvYV9jb25m aWctPm9iaiA9IGJvOwo+PiArCj4+ICsgICAgICAgZ290byB1bmxvY2s7Cj4+ICsKPj4gK2Vycl91 bnJlZjoKPj4gKyAgICAgICBvYV9jb25maWctPm9iaiA9IE5VTEw7Cj4gd2FzIG5ldmVyIHNldC4K Pgo+PiArICAgICAgIGk5MTVfZ2VtX29iamVjdF9wdXQoYm8pOwo+IFlvdSBjb3VsZCBhdm9pZCB0 aGUgdW5jb25kaXRpb25hbCBqdW1wIGJ5IGp1c3QgdGFraW5nIHRoZSByZWYgaW4KPiBvYV9jb25m aWctPm9iaiA9IGk5MTVfZ2VtX29iamVjdF9nZXQoYm8pOwo+Cj4+ICt1bmxvY2s6Cj4+ICsgICAg ICAgbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPj4gKyAgICAgICByZXR1 cm4gcmV0Owo+PiArfQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeA==