From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/3] drm/i915/scheduler: emulate a scheduler for guc Date: Wed, 11 Jan 2017 16:55:46 +0000 Message-ID: References: <20170111131304.21974-1-chris@chris-wilson.co.uk> <20170111131304.21974-2-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C436F6E986 for ; Wed, 11 Jan 2017 16:55:49 +0000 (UTC) In-Reply-To: <20170111131304.21974-2-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 Ck9uIDExLzAxLzIwMTcgMTM6MTMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGlzIGVtdWxhdGVz IGV4ZWNsaXN0cyBvbiB0b3Agb2YgdGhlIEd1QyBpbiBvcmRlciB0byBkZWZlciBzdWJtaXNzaW9u IG9mCiAgPiByZXF1ZXN0cyB0byB0aGUgaGFyZHdhcmUuIFRoaXMgZGVmZXJyYWwgYWxsb3dzIHRp bWUgZm9yIGhpZ2ggcHJpb3JpdHkKPiByZXF1ZXN0cyB0byBnYXp1bXAgdGhlaXIgd2F5IHRvIHRo ZSBoZWFkIG9mIHRoZSBxdWV1ZSwgaG93ZXZlciBpdCBuZXJmcwo+IHRoZSBHdUMgYnkgY29udmVy dGluZyBpdCBiYWNrIGludG8gYSBzaW1wbGUgZXhlY2xpc3QgKHdoZXJlIHRoZSBDUFUgaGFzCj4g dG8gd2FrZSB1cCBhZnRlciBldmVyeSByZXF1ZXN0IHRvIGZlZWQgbmV3IGNvbW1hbmRzIGludG8g dGhlIEd1QykuCj4KPiB2MjogRHJvcCBoYWNrIHN0YXR1cyAtIHRob3VnaCBpaXJjIHRoZXJlIGlz IHN0aWxsIGEgbG9ja2RlcCBpbnZlcnNpb24KPiBiZXR3ZWVuIGZlbmNlIGFuZCBlbmdpbmUtPnRp bWVsaW5lLT5sb2NrICh3aGljaCBpcyBpbXBvc3NpYmxlIGFzIHRoZQo+IG5lc3Rpbmcgb25seSBv Y2N1cnMgb24gZGlmZmVyZW50IGZlbmNlcyAtIGhvcGVmdWxseSBqdXN0IHJlcXVpcmVzIHNvbWUK PiBqdWRpY2lvdXMgbG9ja2RlcCBhbm5vdGF0aW9uKQoKSG0gaG0uLi4gc28gZmVuY2UtPmxvY2sg dW5kZXIgdGltZWxpbmUtPmxvY2sgd2hlbiB3ZSBlbmFibGUgc2lnbmFsbGluZywgCndoaWxlIHdl IGFscmVhZHkgaGF2ZSB0aGUgb3Bwb3NpdGUgaW4gdGhlIHN1Ym1pdF9ub3RpZnktPnN1Ym1pdF9y ZXF1ZXN0IAp5ZXM/IFRoYXQgd291bGQgbWVhbiBhIHBlciBmZW5jZSBsb2NrIGNsYXNzLCB3aGlj aCBjYW4ndCB3b3JrLCBvciBhIApuZXN0ZWQgYW5ub3RhdGlvbiBvbiBmZW5jZS0+bG9jaz8gU28g b3V0c2lkZSBpOTE1PwoKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgIDUgKy0KPiAgMyBmaWxlcyBjaGFu Z2VkLCA3NiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCA5MTNkODczNTg5NzIuLmJkYzll MmJjNWViOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJt aXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKPiBAQCAtMzUwLDcgKzM1MCw3IEBAIGludCBpOTE1X2d1Y193cV9yZXNlcnZlKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCXUzMiBmcmVlc3BhY2U7Cj4gIAlpbnQg cmV0Owo+Cj4gLQlzcGluX2xvY2soJmNsaWVudC0+d3FfbG9jayk7Cj4gKwlzcGluX2xvY2tfaXJx KCZjbGllbnQtPndxX2xvY2spOwo+ICAJZnJlZXNwYWNlID0gQ0lSQ19TUEFDRShjbGllbnQtPndx X3RhaWwsIGRlc2MtPmhlYWQsIGNsaWVudC0+d3Ffc2l6ZSk7Cj4gIAlmcmVlc3BhY2UgLT0gY2xp ZW50LT53cV9yc3ZkOwo+ICAJaWYgKGxpa2VseShmcmVlc3BhY2UgPj0gd3FpX3NpemUpKSB7Cj4g QEAgLTM2MCw3ICszNjAsNyBAQCBpbnQgaTkxNV9ndWNfd3FfcmVzZXJ2ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkJY2xpZW50LT5ub193cV9zcGFjZSsrOwo+ICAJ CXJldCA9IC1FQUdBSU47Cj4gIAl9Cj4gLQlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsK PiArCXNwaW5fdW5sb2NrX2lycSgmY2xpZW50LT53cV9sb2NrKTsKPgo+ICAJcmV0dXJuIHJldDsK PiAgfQo+IEBAIC0zNzIsOSArMzcyLDkgQEAgdm9pZCBpOTE1X2d1Y193cV91bnJlc2VydmUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Cj4gIAlHRU1fQlVHX09OKFJFQURf T05DRShjbGllbnQtPndxX3JzdmQpIDwgd3FpX3NpemUpOwo+Cj4gLQlzcGluX2xvY2soJmNsaWVu dC0+d3FfbG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZjbGllbnQtPndxX2xvY2spOwo+ICAJY2xp ZW50LT53cV9yc3ZkIC09IHdxaV9zaXplOwo+IC0Jc3Bpbl91bmxvY2soJmNsaWVudC0+d3FfbG9j ayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmNsaWVudC0+d3FfbG9jayk7Cj4gIH0KPgo+ICAvKiBD b25zdHJ1Y3QgYSBXb3JrIEl0ZW0gYW5kIGFwcGVuZCBpdCB0byB0aGUgR3VDJ3MgV29yayBRdWV1 ZSAqLwo+IEBAIC01MzQsMTAgKzUzNCw3NCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ3VjX3N1Ym1p dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+Cj4gIHN0YXRpYyB2b2lkIGk5MTVf Z3VjX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICB7Cj4gLQlpOTE1 X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gKwlfX2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHJx KTsKPiAgCV9faTkxNV9ndWNfc3VibWl0KHJxKTsKPiAgfQo+Cj4gK3N0YXRpYyBib29sIGk5MTVf Z3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1 Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydDsKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9IHBvcnRbMF0ucmVxdWVzdDsKPiArCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gKwlib29sIHN1Ym1pdCA9 IGZhbHNlOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr LCBmbGFncyk7Cj4gKwlyYiA9IGVuZ2luZS0+ZXhlY2xpc3RfZmlyc3Q7Cj4gKwl3aGlsZSAocmIp IHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1cnNvciA9Cj4gKwkJCXJiX2Vu dHJ5KHJiLCB0eXBlb2YoKmN1cnNvciksIHByaW90cmVlLm5vZGUpOwo+ICsKPiArCQlpZiAobGFz dCAmJiBjdXJzb3ItPmN0eCAhPSBsYXN0LT5jdHgpIHsKPiArCQkJaWYgKHBvcnQgIT0gZW5naW5l LT5leGVjbGlzdF9wb3J0KQo+ICsJCQkJYnJlYWs7Cj4gKwo+ICsJCQlpOTE1X2dlbV9yZXF1ZXN0 X2Fzc2lnbigmcG9ydC0+cmVxdWVzdCwgbGFzdCk7Cj4gKwkJCWRtYV9mZW5jZV9lbmFibGVfc3df c2lnbmFsaW5nKCZsYXN0LT5mZW5jZSk7Cj4gKwkJCXBvcnQrKzsKPiArCQl9Cj4gKwo+ICsJCXJi ID0gcmJfbmV4dChyYik7Cj4gKwkJcmJfZXJhc2UoJmN1cnNvci0+cHJpb3RyZWUubm9kZSwgJmVu Z2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsJCVJCX0NMRUFSX05PREUoJmN1cnNvci0+cHJpb3Ry ZWUubm9kZSk7Cj4gKwkJY3Vyc29yLT5wcmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4gKwo+ ICsJCWk5MTVfZ3VjX3N1Ym1pdChjdXJzb3IpOwo+ICsJCWxhc3QgPSBjdXJzb3I7Cj4gKwkJc3Vi bWl0ID0gdHJ1ZTsKPiArCX0KPiArCWlmIChzdWJtaXQpIHsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0 X2Fzc2lnbigmcG9ydC0+cmVxdWVzdCwgbGFzdCk7Cj4gKwkJZG1hX2ZlbmNlX2VuYWJsZV9zd19z aWduYWxpbmcoJmxhc3QtPmZlbmNlKTsKPiArCQllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gcmI7 Cj4gKwl9Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr LCBmbGFncyk7Cj4gKwo+ICsJcmV0dXJuIHN1Ym1pdDsKPiArfQoKSXQgaXMgYWdhaW4gdGVtcHRp bmcgbWUgdG8gc3VnZ2VzdCBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgZGVxdWV1ZSAKbG9vcC4g TWF5YmUgc29tZXRoaW5nIGxpa2U6CgppOTE1X3JlcXVlc3RfZGVxdWV1ZShlbmdpbmUsIGFzc2ln bl9mdW5jLCBzdWJtaXRfZnVuYykKewoJLi4uCgkKCXdoaWxlIChyYikgewoJCS4uLgoJCWlmICgp IHsKCQkuLi4KCQkJYXNzaWduX2Z1bmMoKTsKCQkJcG9ydCsrOwoJCX0KCQkKCQkuLi4KCgkJc3Vi bWl0X2Z1bmMoKTsKCQlsYXN0ID0gY3Vyc29yOwoJCXN1Ym1pdCA9IHRydWU7Cgl9CglpZiAoc3Vi bWl0KSB7CgkJYXNzaWduX2Z1bmMoKTsKCQllbmdpbmUtPmV4ZWNsaXN0c19maXJzdCA9IHJiOwoJ fQoKCS4uLgp9CgpleGVjbGlzdHNfZGVxdWV1ZV9hc3NpZ24oKQp7CglpOTE1X2dlbV9yZXF1ZXN0 X2Fzc2lnbigpOwp9CgpleGVjbGlzdHNfZGVxZXVlX3N1Ym1pdCgpCnsKCV9faTkxNV9nZW1fcmVx dWVzdF9zdWJtaXQoKTsKfQoKZXhlY2xpc3RzX2RlcXVldWUoKQp7CgkuLi4KCglzdWJtaXQgPSBp OTE1X3JlcXVlc3RfZGVxZXVlKGVuZ2luZSwKCQkJCSAgICAgZXhlY2xpc3RzX2RlcXVldWVfYXNz aWduLAoJCQkJICAgICBleGVjbGlzdHNfZGVxZXVlX3N1Ym1pdCk7CglpZiAoc3VibWl0KQoJCWV4 ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5naW5lKTsKfQoKZ3VjX2RlcXVldWVfYXNzaWduKCkKewoJ aTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oKTsKCWRtYV9mZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5n KCk7Cn0KCmd1Y19kZXF1ZXVlX3N1Ym1pdCgpCnsKCWk5MTVfZ3VjX3N1Ym1pdCgpOwp9CgppOTE1 X2d1Y19kZXF1ZXVlKCkKewoJLi4uCgoJc3VibWl0ID0gaTkxNV9yZXF1ZXN0X2RlcXVldWUoZW5n aW5lLAoJCQkJICAgICAgZ3VjX2RlcXVldWVfYXNzaWduLAoJCQkJICAgICAgZ3VjX2RlcXVldWVf c3VibWl0KTsKCgkuLi4KfQoKPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ3VjX2lycV9oYW5kbGVy KHVuc2lnbmVkIGxvbmcgZGF0YSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwo+ICsJc3RydWN0IGV4ZWNsaXN0 X3BvcnQgKnBvcnQgPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJxOwo+ICsJYm9vbCBzdWJtaXQ7Cj4gKwo+ICsJZG8gewo+ICsJCXJxID0g cG9ydFswXS5yZXF1ZXN0Owo+ICsJCXdoaWxlIChycSAmJiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChycSkpIHsKPiArCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEpOwo+ICsJCQlycSA9IHBv cnRbMV0ucmVxdWVzdDsKPiArCQkJcG9ydFswXS5yZXF1ZXN0ID0gcnE7Cj4gKwkJCXBvcnRbMV0u cmVxdWVzdCA9IE5VTEw7Cj4gKwkJfQo+ICsKPiArCQlzdWJtaXQgPSBmYWxzZTsKPiArCQlpZiAo IXBvcnRbMV0ucmVxdWVzdCkKPiArCQkJc3VibWl0ID0gaTkxNV9ndWNfZGVxdWV1ZShlbmdpbmUp Owo+ICsJfSB3aGlsZSAoc3VibWl0KTsKCk91dGVyIGxvb3AgbG9va3MgdG8gYmUgbm90IG5lZWRl ZCBzaW5jZSB0aGUgaTkxNV9ndWNfZGVxdWV1ZSB3aWxsIGZpbGwgCmJvdGggcG9ydHMgaWYgaXQg Y2FuLiBPciBpdCBpcyBmb3IgdGhlIHVubGlrZWx5IGNhc2UgYSBuZXcgcmVxdWVzdCAKbWFuYWdl cyB0byBnZXQgaW4gYWZ0ZXIgb25lIGFuZCBvbmx5IGhhcyBiZWVuIHN1Ym1pdHRlZD8KCj4gK30K PiArCj4gIC8qCj4gICAqIEV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBjb25jZXJuZWQgd2l0aCBz ZXR1cCAmIHRlYXJkb3duLCBhbmQgaXMKPiAgICogdGhlcmVmb3JlIG5vdCBwYXJ0IG9mIHRoZSBz b21ld2hhdCB0aW1lLWNyaXRpY2FsIGJhdGNoLXN1Ym1pc3Npb24KPiBAQCAtMTQyOCw4ICsxNDky LDkgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkg ewo+ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7Cj4KPiAtCQllbmdpbmUtPnN1 Ym1pdF9yZXF1ZXN0ID0gaTkxNV9ndWNfc3VibWl0Owo+IC0JCWVuZ2luZS0+c2NoZWR1bGUgPSBO VUxMOwo+ICsJCXRhc2tsZXRfaW5pdCgmZW5naW5lLT5pcnFfdGFza2xldCwKPiArCQkJICAgICBp OTE1X2d1Y19pcnFfaGFuZGxlciwKPiArCQkJICAgICAodW5zaWduZWQgbG9uZyllbmdpbmUpOwo+ Cj4gIAkJLyogUmVwbGF5IHRoZSBjdXJyZW50IHNldCBvZiBwcmV2aW91c2x5IHN1Ym1pdHRlZCBy ZXF1ZXN0cyAqLwo+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVsaW5l LT5yZXF1ZXN0cywgbGluaykgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDc1ZmIx ZjY2Y2MwYy4uNjI0MjY3YmViZjU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAg LTEzNDEsOCArMTM0MSwxMCBAQCBzdGF0aWMgdm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZv aWQKPiAgZ2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0KQo+ICB7Cj4gLQlpZiAoaWlyICYgKEdUX1JFTkRFUl9V U0VSX0lOVEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkKPiArCWlmIChpaXIgJiAoR1RfUkVOREVSX1VT RVJfSU5URVJSVVBUIDw8IHRlc3Rfc2hpZnQpKSB7Cj4gKwkJdGFza2xldF9zY2hlZHVsZSgmZW5n aW5lLT5pcnFfdGFza2xldCk7Cj4gIAkJbm90aWZ5X3JpbmcoZW5naW5lKTsKPiArCX0KPiAgCWlm IChpaXIgJiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IHRlc3Rfc2hpZnQpKQo+ICAJ CXRhc2tsZXRfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+ICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBkOWRlNDU1ZGExMzEuLjMzZmU3ZTVjOTM2NCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTEzNTIsNyArMTM1Miw3IEBAIHN0YXRpYyBp bnQgZ2VuOF9pbml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgCURSTV9ERUJVR19EUklWRVIoIkV4ZWNsaXN0cyBlbmFibGVkIGZvciAlc1xuIiwgZW5naW5l LT5uYW1lKTsKPgo+ICAJLyogQWZ0ZXIgYSBHUFUgcmVzZXQsIHdlIG1heSBoYXZlIHJlcXVlc3Rz IHRvIHJlcGxheSAqLwo+IC0JaWYgKCFleGVjbGlzdHNfZWxzcF9pZGxlKGVuZ2luZSkpIHsKPiAr CWlmICghaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gJiYgIWV4ZWNsaXN0c19lbHNwX2lkbGUo ZW5naW5lKSkgewo+ICAJCWVuZ2luZS0+ZXhlY2xpc3RfcG9ydFswXS5jb3VudCA9IDA7Cj4gIAkJ ZW5naW5lLT5leGVjbGlzdF9wb3J0WzFdLmNvdW50ID0gMDsKPiAgCQlleGVjbGlzdHNfc3VibWl0 X3BvcnRzKGVuZ2luZSk7Cj4gQEAgLTE0MjAsOSArMTQyMCw2IEBAIHN0YXRpYyB2b2lkIHJlc2V0 X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCXJlcXVlc3Qt PnJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gIAlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFj ZShyZXF1ZXN0LT5yaW5nKTsKPgo+IC0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQo+ IC0JCXJldHVybjsKPiAtCj4gIAkvKiBDYXRjaCB1cCB3aXRoIGFueSBtaXNzZWQgY29udGV4dC1z d2l0Y2ggaW50ZXJydXB0cyAqLwo+ICAJSTkxNV9XUklURShSSU5HX0NPTlRFWFRfU1RBVFVTX1BU UihlbmdpbmUpLCBfTUFTS0VEX0ZJRUxEKDB4ZmZmZiwgMCkpOwo+ICAJaWYgKHJlcXVlc3QtPmN0 eCAhPSBwb3J0WzBdLnJlcXVlc3QtPmN0eCkgewo+CgpMb29rcyBnb29kLCBtaW51cyB0aGUgbG9j a2luZyBjb25jZXJuLgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK