From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 11/14] HACK drm/i915/scheduler: emulate a scheduler for guc Date: Thu, 1 Dec 2016 10:45:51 +0000 Message-ID: References: <20161107135950.28861-1-chris@chris-wilson.co.uk> <20161114085703.16540-1-chris@chris-wilson.co.uk> <20161114085703.16540-11-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCC816E782 for ; Thu, 1 Dec 2016 10:45:54 +0000 (UTC) In-Reply-To: <20161114085703.16540-11-chris@chris-wilson.co.uk> 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 Ck9uIDE0LzExLzIwMTYgMDg6NTcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGlzIGVtdWxhdGVz IGV4ZWNsaXN0cyBvbiB0b3Agb2YgdGhlIEd1QyBpbiBvcmRlciB0byBkZWZlciBzdWJtaXNzaW9u IG9mCj4gcmVxdWVzdHMgdG8gdGhlIGhhcmR3YXJlLiBUaGlzIGRlZmVycmFsIGFsbG93cyB0aW1l IGZvciBoaWdoIHByaW9yaXR5Cj4gcmVxdWVzdHMgdG8gZ2F6dW1wIHRoZWlyIHdheSB0byB0aGUg aGVhZCBvZiB0aGUgcXVldWUsIGhvd2V2ZXIgaXQgbmVyZnMKPiB0aGUgR3VDIGJ5IGNvbnZlcnRp bmcgaXQgYmFjayBpbnRvIGEgc2ltcGxlIGV4ZWNsaXN0ICh3aGVyZSB0aGUgQ1BVIGhhcwo+IHRv IHdha2UgdXAgYWZ0ZXIgZXZlcnkgcmVxdWVzdCB0byBmZWVkIG5ldyBjb21tYW5kcyBpbnRvIHRo ZSBHdUMpLgoKQXMgaXQgaXMgc3RhcnRpbmcgdG8gc2luayBpbiB3ZSdsbCBoYXZlIHRvIGRvIGFk ZCB0aGlzIGhhY2sgc29vbmVyIG9yIApsYXRlciwgcmV2aWV3IGNvbW1lbnRzIGJlbG93LgoKQWxz bywgd291bGQgeW91IGJlIE9LIHRvIHJlYmFzZSB0aGlzIG9yIHdvdWxkIHByZWZlciB0byBkZWxl Z2F0ZSBpdD8KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgMyAtLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDc2 IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDQ0NjIxMTI3MjVlZi4uMDg4ZjVhOTllY2Zj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBA IC00NjksNyArNDY5LDcgQEAgaW50IGk5MTVfZ3VjX3dxX3Jlc2VydmUoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAJdTMyIGZyZWVzcGFjZTsKPiAgCWludCByZXQ7Cj4K PiAtCXNwaW5fbG9jaygmZ2MtPndxX2xvY2spOwo+ICsJc3Bpbl9sb2NrX2lycSgmZ2MtPndxX2xv Y2spOwo+ICAJZnJlZXNwYWNlID0gQ0lSQ19TUEFDRShnYy0+d3FfdGFpbCwgZGVzYy0+aGVhZCwg Z2MtPndxX3NpemUpOwo+ICAJZnJlZXNwYWNlIC09IGdjLT53cV9yc3ZkOwo+ICAJaWYgKGxpa2Vs eShmcmVlc3BhY2UgPj0gd3FpX3NpemUpKSB7Cj4gQEAgLTQ3OSw3ICs0NzksNyBAQCBpbnQgaTkx NV9ndWNfd3FfcmVzZXJ2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4g IAkJZ2MtPm5vX3dxX3NwYWNlKys7Cj4gIAkJcmV0ID0gLUVBR0FJTjsKPiAgCX0KPiAtCXNwaW5f dW5sb2NrKCZnYy0+d3FfbG9jayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmdjLT53cV9sb2NrKTsK Pgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC00OTEsOSArNDkxLDkgQEAgdm9pZCBpOTE1X2d1 Y193cV91bnJlc2VydmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Cj4g IAlHRU1fQlVHX09OKFJFQURfT05DRShnYy0+d3FfcnN2ZCkgPCB3cWlfc2l6ZSk7Cj4KPiAtCXNw aW5fbG9jaygmZ2MtPndxX2xvY2spOwo+ICsJc3Bpbl9sb2NrX2lycSgmZ2MtPndxX2xvY2spOwo+ ICAJZ2MtPndxX3JzdmQgLT0gd3FpX3NpemU7Cj4gLQlzcGluX3VubG9jaygmZ2MtPndxX2xvY2sp Owo+ICsJc3Bpbl91bmxvY2tfaXJxKCZnYy0+d3FfbG9jayk7Cj4gIH0KPgo+ICAvKiBDb25zdHJ1 Y3QgYSBXb3JrIEl0ZW0gYW5kIGFwcGVuZCBpdCB0byB0aGUgR3VDJ3MgV29yayBRdWV1ZSAqLwo+ IEBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIAlycS0+cHJldmlvdXNfY29udGV4dCA9IGVuZ2lu ZS0+bGFzdF9jb250ZXh0Owo+ICAJZW5naW5lLT5sYXN0X2NvbnRleHQgPSBycS0+Y3R4Owo+Cj4g LQlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gKwlfX2k5MTVfZ2VtX3JlcXVlc3Rfc3Vi bWl0KHJxKTsKPgo+ICAJc3Bpbl9sb2NrKCZjbGllbnQtPndxX2xvY2spOwo+ICAJZ3VjX3dxX2l0 ZW1fYXBwZW5kKGNsaWVudCwgcnEpOwo+IEBAIC02NjUsNiArNjY1LDcwIEBAIHN0YXRpYyB2b2lk IGk5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICAJc3Bp bl91bmxvY2soJmNsaWVudC0+d3FfbG9jayk7Cj4gIH0KCkNvbmZ1c2VkIG1lIGF0IGZpcnN0IGhl cmUgdW50aWwgSSBub3RpY2VkIGVuZ2luZS0+c3VibWl0X3JlcXVlc3Qgd2lsbCBiZSAKdGhlIGV4 ZWNsaXN0X3N1Ym1pdF9yZXF1ZXN0IGxhdGVyLiBQZXJoYXBzIGl0IHdvdWxkIGJlIGdvb2QgdG8g cmVuYW1lIGEgCmxvdCBvZiB0aGluZ3Mgbm93LCBsaWtlIGVuZ2luZS0+cmVxdWVzdF9xdWV1ZSwg CmludGVsX2VuZ2luZV9zdWJtaXRfcmVxdWVzdCBhbmQgbWF5YmUgbW9yZT8KCj4KPiArc3RhdGlj IGJvb2wgaTkxNV9ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g K3sKPiArCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZW5naW5lLT5leGVjbGlzdF9wb3J0 Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpsYXN0ID0gcG9ydFswXS5yZXF1ZXN0 Owo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCXN0cnVjdCByYl9ub2RlICpyYjsKPiArCWJv b2wgc3VibWl0ID0gZmFsc2U7Cj4gKwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiArCXJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKPiAr CXdoaWxlIChyYikgewo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yID0K PiArCQkJcmJfZW50cnkocmIsIHR5cGVvZigqY3Vyc29yKSwgcHJpb3RyZWUubm9kZSk7Cj4gKwo+ ICsJCWlmIChsYXN0ICYmIGN1cnNvci0+Y3R4ICE9IGxhc3QtPmN0eCkgewoKTm90IHN1cmUgaWYg R1ZUIGNvbWVzIGludG8gdGhlIHBpY3R1cmUgaGVyZSwgYnV0IGl0IGRvZXMgbm90IHNvdW5kcyBs aWtlIAppdCB3b3VsZCBoYXJtIHRvIHVzZSBjYW5fbWVyZ2VfY3R4IGhlcmU/Cgo+ICsJCQlpZiAo cG9ydCAhPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQpCj4gKwkJCQlicmVhazsKCkl0IG1heSBiZSBh biBvdmVya2lsbCBmb3IgdGhlIGZpcnN0IHZlcnNpb24sIGJ1dCBJIHdhcyB0aGlua2luZyB0aGF0 IHdlIApkb24ndCBoYXZlIHRvIGxpbWl0IGl0IHRvIHR3byBhdCBhIHRpbWUuIEFuZCBpdCB3b3Vs ZCBkZXBlbmQgb24gCm1lYXN1cmluZyBvZiBjb3Vyc2UuIEJ1dCBwZXJoYXBzIGl0IHdvdWxkIG1h a2Ugc2Vuc2UgdG8gZG8gdGhlIApnZW5lcmFsaXNhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHN1cHBv cnRlZCBwb3J0cyBzdHJhaWdodCBhd2F5LgoKPiArCj4gKwkJCWk5MTVfZ2VtX3JlcXVlc3RfYXNz aWduKCZwb3J0LT5yZXF1ZXN0LCBsYXN0KTsKPiArCQkJZG1hX2ZlbmNlX2VuYWJsZV9zd19zaWdu YWxpbmcoJmxhc3QtPmZlbmNlKTsKPiArCQkJcG9ydCsrOwo+ICsJCX0KPiArCj4gKwkJcmIgPSBy Yl9uZXh0KHJiKTsKPiArCQlyYl9lcmFzZSgmY3Vyc29yLT5wcmlvdHJlZS5ub2RlLCAmZW5naW5l LT5leGVjbGlzdF9xdWV1ZSk7Cj4gKwkJUkJfQ0xFQVJfTk9ERSgmY3Vyc29yLT5wcmlvdHJlZS5u b2RlKTsKPiArCQljdXJzb3ItPnByaW90cmVlLnByaW9yaXR5ID0gSU5UX01BWDsKPiArCj4gKwkJ aTkxNV9ndWNfc3VibWl0KGN1cnNvcik7Cj4gKwkJbGFzdCA9IGN1cnNvcjsKPiArCQlzdWJtaXQg PSB0cnVlOwo+ICsJfQo+ICsJaWYgKHN1Ym1pdCkgewo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfYXNz aWduKCZwb3J0LT5yZXF1ZXN0LCBsYXN0KTsKPiArCQlkbWFfZmVuY2VfZW5hYmxlX3N3X3NpZ25h bGluZygmbGFzdC0+ZmVuY2UpOwo+ICsJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiAr CX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZs YWdzKTsKPiArCj4gKwlyZXR1cm4gc3VibWl0Owo+ICt9CgpXZSBjb3VsZCB0aGVvcmV0aWNhbGx5 IHNoYXJlIG1vc3Qgb2YgdGhlIGV4ZWNsaXN0X2RlcXVldWUgYW5kIGp1c3QgZG8gYSAKY291cGxl IHRoaW5ncyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gdGhlIG1vZGUuCgpMb29rcyBsaWtlIG9u ZSBjb3VsZCBiZSBhIG5ldyBlbmdpbmUtPnN1Ym1pdF9wb3J0cyB2ZnVuYy4gQW5kIHRoZXJlIGlz IAphbHNvIHRoZSBsaXRlIHJlc3RvcmUgV0EgYW5kIHN3IHNpZ25hbGxpbmcgdG8gZGVzaWduIGlu IG5pY2VseSwgYnV0IGl0IAptYXkgYmUgd29ydGggc2hhcmluZyB0aGUgY29kZS4gSXQgd291bGQg YmUgcmVuYW1lZCB0byBzb21ldGlobmcgbGlrZSAKc2NoZWR1bGVyX2RlcXVldWUgb3Igc29tZXRo aW5nLgoKPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ3VjX2lycV9oYW5kbGVyKHVuc2lnbmVkIGxv bmcgZGF0YSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwo+ICsJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQg PSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJxOwo+ICsJYm9vbCBzdWJtaXQ7Cj4gKwo+ICsJZG8gewo+ICsJCXJxID0gcG9ydFswXS5yZXF1 ZXN0Owo+ICsJCXdoaWxlIChycSAmJiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsK PiArCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEpOwo+ICsJCQlycSA9IHBvcnRbMV0ucmVxdWVz dDsKPiArCQkJcG9ydFswXS5yZXF1ZXN0ID0gcnE7Cj4gKwkJCXBvcnRbMV0ucmVxdWVzdCA9IE5V TEw7Cj4gKwkJfQo+ICsKPiArCQlzdWJtaXQgPSBmYWxzZTsKPiArCQlpZiAoIXBvcnRbMV0ucmVx dWVzdCkKPiArCQkJc3VibWl0ID0gaTkxNV9ndWNfZGVxdWV1ZShlbmdpbmUpOwo+ICsJfSB3aGls ZSAoc3VibWl0KTsKPiArfQo+ICsKPiAgLyoKPiAgICogRXZlcnl0aGluZyBiZWxvdyBoZXJlIGlz IGNvbmNlcm5lZCB3aXRoIHNldHVwICYgdGVhcmRvd24sIGFuZCBpcwo+ICAgKiB0aGVyZWZvcmUg bm90IHBhcnQgb2YgdGhlIHNvbWV3aGF0IHRpbWUtY3JpdGljYWwgYmF0Y2gtc3VibWlzc2lvbgo+ IEBAIC0xNTMxLDE2ICsxNTk1LDEzIEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4KPiAgCS8qIFRha2Ugb3ZlciBmcm9t IG1hbnVhbCBjb250cm9sIG9mIEVMU1AgKGV4ZWNsaXN0cykgKi8KPiAgCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+IC0JCWVuZ2luZS0+c3VibWl0X3JlcXVlc3QgPSBp OTE1X2d1Y19zdWJtaXQ7Cj4gLQkJZW5naW5lLT5zY2hlZHVsZSA9IE5VTEw7Cj4gKwkJdGFza2xl dF9pbml0KCZlbmdpbmUtPmlycV90YXNrbGV0LAo+ICsJCQkgICAgIGk5MTVfZ3VjX2lycV9oYW5k bGVyLAo+ICsJCQkgICAgICh1bnNpZ25lZCBsb25nKWVuZ2luZSk7Cj4KPiAgCQkvKiBSZXBsYXkg dGhlIGN1cnJlbnQgc2V0IG9mIHByZXZpb3VzbHkgc3VibWl0dGVkIHJlcXVlc3RzICovCj4gLQkJ bGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LAo+IC0JCQkJICAgICZlbmdpbmUtPnRpbWVsaW5l LT5yZXF1ZXN0cywgbGluaykgewo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVu Z2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQo+ICAJCQljbGllbnQtPndxX3JzdmQgKz0g c2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gLQkJCWlmIChpOTE1X3N3X2ZlbmNlX2RvbmUo JnJlcXVlc3QtPnN1Ym1pdCkpCj4gLQkJCQlpOTE1X2d1Y19zdWJtaXQocmVxdWVzdCk7Cj4gLQkJ fQo+ICAJfQo+Cj4gIAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCBj YjhhNzVmNmNhMTYuLjE4ZGNlNGM2NmQ1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ IEBAIC0xMzQxLDggKzEzNDEsMTAgQEAgc3RhdGljIHZvaWQgc25iX2d0X2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIF9fYWx3YXlzX2lubGlu ZSB2b2lkCj4gIGdlbjhfY3NfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgaWlyLCBpbnQgdGVzdF9zaGlmdCkKPiAgewo+IC0JaWYgKGlpciAmIChHVF9SRU5E RVJfVVNFUl9JTlRFUlJVUFQgPDwgdGVzdF9zaGlmdCkpCj4gKwlpZiAoaWlyICYgKEdUX1JFTkRF Ul9VU0VSX0lOVEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkgewo+ICsJCXRhc2tsZXRfc2NoZWR1bGUo JmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwoKVGhpcyB3b3VsZCBiZSBiZXR0ZXIgbWFkZSBjb25kaXRp b25hbCBvbiBHdUMgc3VibWlzc2lvbiBqdXN0IHRvIGNhbGxpbmcgCnRhc2tsZXRfc2NoZWR1bGUg dHdpY2UgKG9jY2FzaW9uYWxseSkgaW4gZXhlY2xpc3QgbW9kZS4KCj4gIAkJbm90aWZ5X3Jpbmco ZW5naW5lKTsKPiArCX0KPiAgCWlmIChpaXIgJiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBU IDw8IHRlc3Rfc2hpZnQpKQo+ICAJCXRhc2tsZXRfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2ts ZXQpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBkMTNhMzM1YWQ4M2Eu LmZmYWIyNTVlNTVhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE0MjUs OSArMTQyNSw2IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiAgCXJlcXVlc3QtPnJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0g LTE7Cj4gIAlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyZXF1ZXN0LT5yaW5nKTsKPgo+IC0JaWYg KGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+IC0JCXJldHVybjsKPiAtCj4gIAkvKiBDYXRj aCB1cCB3aXRoIGFueSBtaXNzZWQgY29udGV4dC1zd2l0Y2ggaW50ZXJydXB0cyAqLwo+ICAJSTkx NV9XUklURShSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpLCBfTUFTS0VEX0ZJRUxEKDB4 ZmZmZiwgMCkpOwo+ICAJaWYgKHJlcXVlc3QtPmN0eCAhPSBwb3J0WzBdLnJlcXVlc3QtPmN0eCkg ewo+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=