From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/2] drm/i915/scheduler: emulate a scheduler for guc Date: Wed, 15 Feb 2017 11:56:28 +0000 Message-ID: <980204c2-d563-fcc3-8af7-e6d9b49d63cf@linux.intel.com> References: <20170214114412.8841-1-chris@chris-wilson.co.uk> <20170214114412.8841-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 160526E8C2 for ; Wed, 15 Feb 2017 11:56:31 +0000 (UTC) In-Reply-To: <20170214114412.8841-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 Ck9uIDE0LzAyLzIwMTcgMTE6NDQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGlzIGVtdWxhdGVz IGV4ZWNsaXN0cyBvbiB0b3Agb2YgdGhlIEd1QyBpbiBvcmRlciB0byBkZWZlciBzdWJtaXNzaW9u IG9mCj4gcmVxdWVzdHMgdG8gdGhlIGhhcmR3YXJlLiBUaGlzIGRlZmVycmFsIGFsbG93cyB0aW1l IGZvciBoaWdoIHByaW9yaXR5Cj4gcmVxdWVzdHMgdG8gZ2F6dW1wIHRoZWlyIHdheSB0byB0aGUg aGVhZCBvZiB0aGUgcXVldWUsIGhvd2V2ZXIgaXQgbmVyZnMKPiB0aGUgR3VDIGJ5IGNvbnZlcnRp bmcgaXQgYmFjayBpbnRvIGEgc2ltcGxlIGV4ZWNsaXN0ICh3aGVyZSB0aGUgQ1BVIGhhcwo+IHRv IHdha2UgdXAgYWZ0ZXIgZXZlcnkgcmVxdWVzdCB0byBmZWVkIG5ldyBjb21tYW5kcyBpbnRvIHRo ZSBHdUMpLgo+Cj4gdjI6IERyb3AgaGFjayBzdGF0dXMgLSB0aG91Z2ggaWlyYyB0aGVyZSBpcyBz dGlsbCBhIGxvY2tkZXAgaW52ZXJzaW9uCj4gYmV0d2VlbiBmZW5jZSBhbmQgZW5naW5lLT50aW1l bGluZS0+bG9jayAod2hpY2ggaXMgaW1wb3NzaWJsZSBhcyB0aGUKPiBuZXN0aW5nIG9ubHkgb2Nj dXJzIG9uIGRpZmZlcmVudCBmZW5jZXMgLSBob3BlZnVsbHkganVzdCByZXF1aXJlcyBzb21lCj4g anVkaWNpb3VzIGxvY2tkZXAgYW5ub3RhdGlvbikKPiB2MzogQXBwbHkgbG9ja2RlcCBuZXN0aW5n IHRvIGVuYWJsaW5nIHNpZ25hbGluZyBvbiB0aGUgcmVxdWVzdCwgdXNpbmcKPiB0aGUgcGF0dGVy biB3ZSBhbHJlYWR5IGhhdmUgaW4gX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdCgpOwo+IHY0OiBS ZXBsYXlpbmcgcmVxdWVzdHMgYWZ0ZXIgYSBoYW5nIGFsc28gbm93IG5lZWRzIHRoZSB0aW1lbGlu ZQo+IHNwaW5sb2NrLCB0byBkaXNhYmxlIHRoZSBpbnRlcnJ1cHRzIGF0IGxlYXN0Cj4gdjU6IEhv bGQgd3EgbG9jayBmb3IgY29tcGxldGVuZXNzLCBhbmQgZW1pdCBhIHRyYWNlcG9pbnQgZm9yIGVu YWJsaW5nIHNpZ25hbAo+IHY2OiBSZW9yZGVyIGludGVycnVwdCBjaGVja2luZyBmb3IgYSBoYXBw aWVyIGdjYy4KPiB2NzogT25seSBzaWduYWwgdGhlIHRhc2tsZXQgYWZ0ZXIgYSB1c2VyLWludGVy cnVwdCBpZiB1c2luZyBndWMgc2NoZWR1bGluZwo+IHY4OiBSZXN0b3JlIGxvc3QgdXBkYXRlIG9m IHJxIHRocm91Z2ggdGhlIGk5MTVfZ3VjX2lycV9oYW5kbGVyIChUdnJ0a28pCj4gdjk6IEF2b2lk IHJlLWluaXRpYWxpc2luZyB0aGUgZW5naW5lLT5pcnFfdGFza2xldCBmcm9tIGluc2lkZSBhIHJl c2V0Cj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNv bT4KPiBSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4Lmlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICB8ICAxMyArKystCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8ICAgNSArLQo+ICAzIGZpbGVzIGNoYW5nZWQs IDExNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCA4Y2VkOWUyNmYwNzUuLjU4NjA2OTFh YWE0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtMjUsNiArMjUsOCBAQAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgI2luY2x1ZGUg ImludGVsX3VjLmgiCj4KPiArI2luY2x1ZGUgPHRyYWNlL2V2ZW50cy9kbWFfZmVuY2UuaD4KPiAr Cj4gIC8qKgo+ICAgKiBET0M6IEd1Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Npb24KPiAgICoKPiBA QCAtMzQ4LDcgKzM1MCw3IEBAIGludCBpOTE1X2d1Y193cV9yZXNlcnZlKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCXUzMiBmcmVlc3BhY2U7Cj4gIAlpbnQgcmV0Owo+ Cj4gLQlzcGluX2xvY2soJmNsaWVudC0+d3FfbG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZjbGll bnQtPndxX2xvY2spOwo+ICAJZnJlZXNwYWNlID0gQ0lSQ19TUEFDRShjbGllbnQtPndxX3RhaWws IGRlc2MtPmhlYWQsIGNsaWVudC0+d3Ffc2l6ZSk7Cj4gIAlmcmVlc3BhY2UgLT0gY2xpZW50LT53 cV9yc3ZkOwo+ICAJaWYgKGxpa2VseShmcmVlc3BhY2UgPj0gd3FpX3NpemUpKSB7Cj4gQEAgLTM1 OCw3ICszNjAsNyBAQCBpbnQgaTkxNV9ndWNfd3FfcmVzZXJ2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkJY2xpZW50LT5ub193cV9zcGFjZSsrOwo+ICAJCXJldCA9 IC1FQUdBSU47Cj4gIAl9Cj4gLQlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKPiArCXNw aW5fdW5sb2NrX2lycSgmY2xpZW50LT53cV9sb2NrKTsKPgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ IEBAIC0zNzAsOSArMzcyLDkgQEAgdm9pZCBpOTE1X2d1Y193cV91bnJlc2VydmUoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Cj4gIAlHRU1fQlVHX09OKFJFQURfT05DRShj bGllbnQtPndxX3JzdmQpIDwgd3FpX3NpemUpOwo+Cj4gLQlzcGluX2xvY2soJmNsaWVudC0+d3Ff bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZjbGllbnQtPndxX2xvY2spOwo+ICAJY2xpZW50LT53 cV9yc3ZkIC09IHdxaV9zaXplOwo+IC0Jc3Bpbl91bmxvY2soJmNsaWVudC0+d3FfbG9jayk7Cj4g KwlzcGluX3VubG9ja19pcnEoJmNsaWVudC0+d3FfbG9jayk7Cj4gIH0KPgo+ICAvKiBDb25zdHJ1 Y3QgYSBXb3JrIEl0ZW0gYW5kIGFwcGVuZCBpdCB0byB0aGUgR3VDJ3MgV29yayBRdWV1ZSAqLwo+ IEBAIC01MzIsMTAgKzUzNCw5NyBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ3VjX3N1Ym1pdChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+Cj4gIHN0YXRpYyB2b2lkIGk5MTVfZ3VjX3N1 Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICB7Cj4gLQlpOTE1X2dlbV9y ZXF1ZXN0X3N1Ym1pdChycSk7Cj4gKwlfX2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHJxKTsKPiAg CV9faTkxNV9ndWNfc3VibWl0KHJxKTsKPiAgfQo+Cj4gK3N0YXRpYyB2b2lkIG5lc3RlZF9lbmFi bGVfc2lnbmFsaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gK3sKPiArCS8q IElmIHdlIHVzZSBkbWFfZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZygpIGRpcmVjdGx5LCBsb2Nr ZGVwCj4gKwkgKiBkZXRlY3RzIGFuIG9yZGVyaW5nIGlzc3VlIGJldHdlZW4gdGhlIGZlbmNlIGxv Y2tjbGFzcyBhbmQgdGhlCj4gKwkgKiBnbG9iYWxfdGltZWxpbmUuIFRoaXMgY2lyY3VsYXIgZGVw ZW5kZW5jeSBjYW4gb25seSBvY2N1ciB2aWEgMgo+ICsJICogZGlmZmVyZW50IGZlbmNlcyAoYnV0 IHNhbWUgZmVuY2UgbG9ja2NsYXNzKSwgc28gd2UgdXNlIHRoZSBuZXN0aW5nCj4gKwkgKiBhbm5v dGF0aW9uIGhlcmUgdG8gcHJldmVudCB0aGUgd2FybiwgZXF1aXZhbGVudCB0byB0aGUgbmVzdGlu Zwo+ICsJICogaW5zaWRlIGk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KCkgZm9yIHdoZW4gd2UgYWxz byBlbmFibGUgdGhlCj4gKwkgKiBzaWduYWxlci4KPiArCSAqLwo+ICsKPiArCWlmICh0ZXN0X2Fu ZF9zZXRfYml0KERNQV9GRU5DRV9GTEFHX0VOQUJMRV9TSUdOQUxfQklULAo+ICsJCQkgICAgICZy cS0+ZmVuY2UuZmxhZ3MpKQo+ICsJCXJldHVybjsKPiArCj4gKwlHRU1fQlVHX09OKHRlc3RfYml0 KERNQV9GRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwgJnJxLT5mZW5jZS5mbGFncykpOwo+ICsJdHJh Y2VfZG1hX2ZlbmNlX2VuYWJsZV9zaWduYWwoJnJxLT5mZW5jZSk7Cj4gKwo+ICsJc3Bpbl9sb2Nr X25lc3RlZCgmcnEtPmxvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKPiArCWludGVsX2VuZ2lu ZV9lbmFibGVfc2lnbmFsaW5nKHJxKTsKPiArCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIGk5MTVfZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGVuZ2luZS0+ ZXhlY2xpc3RfcG9ydDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdCA9IHBv cnRbMF0ucmVxdWVzdDsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwlzdHJ1Y3QgcmJfbm9k ZSAqcmI7Cj4gKwlib29sIHN1Ym1pdCA9IGZhbHNlOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZl KCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlyYiA9IGVuZ2luZS0+ZXhlY2xp c3RfZmlyc3Q7Cj4gKwl3aGlsZSAocmIpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKmN1cnNvciA9Cj4gKwkJCXJiX2VudHJ5KHJiLCB0eXBlb2YoKmN1cnNvciksIHByaW90cmVl Lm5vZGUpOwo+ICsKPiArCQlpZiAobGFzdCAmJiBjdXJzb3ItPmN0eCAhPSBsYXN0LT5jdHgpIHsK PiArCQkJaWYgKHBvcnQgIT0gZW5naW5lLT5leGVjbGlzdF9wb3J0KQo+ICsJCQkJYnJlYWs7Cj4g Kwo+ICsJCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmcG9ydC0+cmVxdWVzdCwgbGFzdCk7Cj4g KwkJCW5lc3RlZF9lbmFibGVfc2lnbmFsaW5nKGxhc3QpOwo+ICsJCQlwb3J0Kys7Cj4gKwkJfQo+ ICsKPiArCQlyYiA9IHJiX25leHQocmIpOwo+ICsJCXJiX2VyYXNlKCZjdXJzb3ItPnByaW90cmVl Lm5vZGUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiArCQlSQl9DTEVBUl9OT0RFKCZjdXJz b3ItPnByaW90cmVlLm5vZGUpOwo+ICsJCWN1cnNvci0+cHJpb3RyZWUucHJpb3JpdHkgPSBJTlRf TUFYOwo+ICsKPiArCQlpOTE1X2d1Y19zdWJtaXQoY3Vyc29yKTsKPiArCQlsYXN0ID0gY3Vyc29y Owo+ICsJCXN1Ym1pdCA9IHRydWU7Cj4gKwl9Cj4gKwlpZiAoc3VibWl0KSB7Cj4gKwkJaTkxNV9n ZW1fcmVxdWVzdF9hc3NpZ24oJnBvcnQtPnJlcXVlc3QsIGxhc3QpOwo+ICsJCW5lc3RlZF9lbmFi bGVfc2lnbmFsaW5nKGxhc3QpOwo+ICsJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiAr CX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZs YWdzKTsKPiArCj4gKwlyZXR1cm4gc3VibWl0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1 X2d1Y19pcnFfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCj4gK3sKPiArCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKPiAr CXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZW5naW5lLT5leGVjbGlzdF9wb3J0Owo+ICsJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKPiArCWJvb2wgc3VibWl0Owo+ICsKPiAr CWRvIHsKPiArCQlycSA9IHBvcnRbMF0ucmVxdWVzdDsKPiArCQl3aGlsZSAocnEgJiYgaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7Cj4gKwkJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJx KTsKPiArCQkJcG9ydFswXS5yZXF1ZXN0ID0gcG9ydFsxXS5yZXF1ZXN0Owo+ICsJCQlwb3J0WzFd LnJlcXVlc3QgPSBOVUxMOwo+ICsJCQlycSA9IHBvcnRbMF0ucmVxdWVzdDsKPiArCQl9Cj4gKwo+ ICsJCXN1Ym1pdCA9IGZhbHNlOwo+ICsJCWlmICghcG9ydFsxXS5yZXF1ZXN0KQo+ICsJCQlzdWJt aXQgPSBpOTE1X2d1Y19kZXF1ZXVlKGVuZ2luZSk7Cj4gKwl9IHdoaWxlIChzdWJtaXQpOwo+ICt9 Cj4gKwo+ICAvKgo+ICAgKiBFdmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgY29uY2VybmVkIHdpdGgg c2V0dXAgJiB0ZWFyZG93biwgYW5kIGlzCj4gICAqIHRoZXJlZm9yZSBub3QgcGFydCBvZiB0aGUg c29tZXdoYXQgdGltZS1jcml0aWNhbCBiYXRjaC1zdWJtaXNzaW9uCj4gQEAgLTk0NCwxNSArMTAz MywyNSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJLyogVGFrZSBvdmVyIGZyb20gbWFudWFsIGNvbnRyb2wgb2Yg RUxTUCAoZXhlY2xpc3RzKSAqLwo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGlkKSB7Cj4gIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKPiArCQl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+Cj4gLQkJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGk5MTVfZ3VjX3N1 Ym1pdDsKPiAtCQllbmdpbmUtPnNjaGVkdWxlID0gTlVMTDsKPiArCQkvKiBUaGUgdGFza2xldCB3 YXMgaW5pdGlhbGlzZWQgYnkgZXhlY2xpc3RzLCBhbmQgbWF5IGJlIGluCj4gKwkJICogYSBzdGF0 ZSBvZiBmbHV4IChhY3Jvc3MgYSByZXNldCkgYW5kIHNvIHdlIGp1c3Qgd2FudCB0bwo+ICsJCSAq IHRha2Ugb3ZlciB0aGUgY2FsbGJhY2sgd2l0aG91dCBjaGFuZ2luZyBhbnkgb3RoZXIgc3RhdGUK PiArCQkgKiBpbiB0aGUgdGFza2xldC4KPiArCQkgKi8KPiArCQllbmdpbmUtPmlycV90YXNrbGV0 LmZ1bmMgPSBpOTE1X2d1Y19pcnFfaGFuZGxlcjsKPgo+ICAJCS8qIFJlcGxheSB0aGUgY3VycmVu dCBzZXQgb2YgcHJldmlvdXNseSBzdWJtaXR0ZWQgcmVxdWVzdHMgKi8KPiArCQlzcGluX2xvY2tf aXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICAJCWxpc3RfZm9yX2Vh Y2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewo+ICsJCQlz cGluX2xvY2soJmNsaWVudC0+d3FfbG9jayk7Cj4gIAkJCWNsaWVudC0+d3FfcnN2ZCArPSBzaXpl b2Yoc3RydWN0IGd1Y193cV9pdGVtKTsKPiArCQkJc3Bpbl91bmxvY2soJmNsaWVudC0+d3FfbG9j ayk7Cj4gKwo+ICAJCQlfX2k5MTVfZ3VjX3N1Ym1pdChycSk7Cj4gIAkJfQo+ICsJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAgCX0KPgo+ ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggY2RjN2RhNjBkMzdh Li5hYTg4NmI1ZmIyY2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMTM1MCwx MyArMTM1MCwyMCBAQCBzdGF0aWMgdm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQKPiAg Z2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBp aXIsIGludCB0ZXN0X3NoaWZ0KQo+ICB7Cj4gLQlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lO VEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkKPiAtCQlub3RpZnlfcmluZyhlbmdpbmUpOwo+ICsJYm9v bCB0YXNrbGV0ID0gZmFsc2U7Cj4KPiAgCWlmIChpaXIgJiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5U RVJSVVBUIDw8IHRlc3Rfc2hpZnQpKSB7Cj4gIAkJc2V0X2JpdChFTkdJTkVfSVJRX0VYRUNMSVNU LCAmZW5naW5lLT5pcnFfcG9zdGVkKTsKPiAtCQl0YXNrbGV0X2hpX3NjaGVkdWxlKCZlbmdpbmUt PmlycV90YXNrbGV0KTsKPiArCQl0YXNrbGV0ID0gdHJ1ZTsKPiAgCX0KPiArCj4gKwlpZiAoaWly ICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCB0ZXN0X3NoaWZ0KSkgewo+ICsJCW5vdGlm eV9yaW5nKGVuZ2luZSk7Cj4gKwkJdGFza2xldCB8PSBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lv bjsKCkhtLi4gbm90aWNlZCB0aGF0IEJYVCB3YXMgcXVpdGUgdW5oYXBweSBpbiBDST8KCkkgd29u ZGVyIGlmIHdlIG5lZWQgdG8gc2V0IEVOR0lORV9JUlFfRVhFQ0xJU1RTIGhlcmUgKGFuZCBjbGVh ciBpdCBpbiAKdGhlIGlycSB0YXNrbGV0IGFzIHdlbGwpIHRvIGJlIGZ1bGx5IGlkZW50aWNhbCBi ZXR3ZWVuIHRoZSB0d28gYmFja2VuZHMuCgpOb3Qgc2F5aW5nIHRoYXQgd2FzIHRoZSByZWFzb24g Zm9yIHRoZSBDSSB1bmhhcHBpbmVzcywganVzdCBhbiAKb2JzZXJ2YXRpb24gYXQgdGhpcyBzdGFn ZS4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gKwl9Cj4gKwo+ICsJaWYgKHRhc2tsZXQpCj4gKwkJdGFz a2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5pcnFfdGFza2xldCk7Cj4gIH0KPgo+ICBzdGF0aWMg aXJxcmV0dXJuX3QgZ2VuOF9ndF9pcnFfYWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGFmNzE3ZTEzNTZhOS4uMDll NTc3NTVjMzI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTMwMCw3ICsx MzAwLDcgQEAgc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+Cj4gIAkvKiBBZnRlciBhIEdQVSByZXNldCwgd2UgbWF5IGhhdmUg cmVxdWVzdHMgdG8gcmVwbGF5ICovCj4gIAljbGVhcl9iaXQoRU5HSU5FX0lSUV9FWEVDTElTVCwg JmVuZ2luZS0+aXJxX3Bvc3RlZCk7Cj4gLQlpZiAoIWV4ZWNsaXN0c19lbHNwX2lkbGUoZW5naW5l KSkgewo+ICsJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiAmJiAhZXhlY2xpc3RzX2Vs c3BfaWRsZShlbmdpbmUpKSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiUmVzdGFydGluZyAlcyBm cm9tIHJlcXVlc3RzIFsweCV4LCAweCV4XVxuIiwKPiAgCQkJCSBlbmdpbmUtPm5hbWUsCj4gIAkJ CQkgcG9ydF9zZXFubygmZW5naW5lLT5leGVjbGlzdF9wb3J0WzBdKSwKPiBAQCAtMTM4NSw5ICsx Mzg1LDYgQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+ICAJcmVxdWVzdC0+cmluZy0+bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsK PiAgCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJlcXVlc3QtPnJpbmcpOwo+Cj4gLQlpZiAoaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4gLQkJcmV0dXJuOwo+IC0KPiAgCS8qIENhdGNoIHVw IHdpdGggYW55IG1pc3NlZCBjb250ZXh0LXN3aXRjaCBpbnRlcnJ1cHRzICovCj4gIAlpZiAocmVx dWVzdC0+Y3R4ICE9IHBvcnRbMF0ucmVxdWVzdC0+Y3R4KSB7Cj4gIAkJaTkxNV9nZW1fcmVxdWVz dF9wdXQocG9ydFswXS5yZXF1ZXN0KTsKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK