From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/8] drm/i915/execlists: Lift process_csb() out of the irq-off spinlock Date: Fri, 16 Aug 2019 10:50:29 +0300 Message-ID: <871rxl7dmi.fsf@gaia.fi.intel.com> References: <20190814092643.1908-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C16A6EB0D for ; Fri, 16 Aug 2019 07:51:14 +0000 (UTC) In-Reply-To: <20190814092643.1908-1-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSWYgd2Ug b25seSBjYWxsIHByb2Nlc3NfY3NiKCkgZnJvbSB0aGUgdGFza2xldCwgdGhvdWdoIHdlIGxvc2Ug dGhlCj4gYWJpbGl0eSB0byBieXBhc3Mga3NvZnRpcnFkIGludGVycnVwdCBwcm9jZXNzaW5nIG9u IGRpcmVjdCBzdWJtaXNzaW9uCj4gcGF0aHMsIHdlIGNhbiBwdXNoIGl0IG91dCBvZiB0aGUgaXJx LW9mZiBzcGlubG9jay4KPgo+IFRoZSBwZW5hbHR5IGlzIHRoYXQgd2UgdGhlbiBhbGxvdyBzY2hl ZHVsZV9vdXQgdG8gYmUgY2FsbGVkIGNvbmN1cnJlbnRseQo+IHdpdGggc2NoZWR1bGVfaW4gcmVx dWlyaW5nIHVzIHRvIGhhbmRsZSB0aGUgdXNhZ2UgY291bnQgKGJha2VkIGludG8gdGhlCj4gcG9p bnRlciBpdHNlbGYpIGF0b21pY2FsbHkuCj4KPiBBcyB3ZSBkbyBraWNrIHRoZSB0YXNrbGV0cyAo dmlhIGxvY2FsX2JoX2VuYWJsZSgpKSBhZnRlciBvdXIgc3VibWlzc2lvbiwKPiB0aGVyZSBpcyBh IHBvc3NpYmlsaXR5IHRoZXJlIHRvIHNlZSBpZiB3ZSBjYW4gcHVsbCB0aGUgbG9jYWwgc29mdGly cQo+IHByb2Nlc3NpbmcgYmFjayBmcm9tIHRoZSBrc29mdGlycWQuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oIHwgICA0ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAgMiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCAxMzAgKysrKysrKysr KystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaCAgICAgICAgICAg ICB8ICAyMCArKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCA2MiBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9j b250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5 cGVzLmgKPiBpbmRleCBhNjMyYjIwZWM0ZDguLmQ4Y2UyNjZjMDQ5ZiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiBAQCAtNDEsOSArNDEs NyBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICppbmZsaWdodDsKPiAgI2RlZmluZSBp bnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKSBwdHJfbWFza19iaXRzKChjZSktPmluZmxpZ2h0LCAy KQo+IC0jZGVmaW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpICBwdHJfdW5tYXNr X2JpdHMoKGNlKS0+aW5mbGlnaHQsIDIpCj4gLSNkZWZpbmUgaW50ZWxfY29udGV4dF9pbmZsaWdo dF9pbmMoY2UpIHB0cl9jb3VudF9pbmMoJihjZSktPmluZmxpZ2h0KQo+IC0jZGVmaW5lIGludGVs X2NvbnRleHRfaW5mbGlnaHRfZGVjKGNlKSBwdHJfY291bnRfZGVjKCYoY2UpLT5pbmZsaWdodCkK PiArI2RlZmluZSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSBwdHJfdW5tYXNrX2Jp dHMoKGNlKS0+aW5mbGlnaHQsIDIpCj4gIAo+ICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm07Cj4gIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZ2VtX2NvbnRleHQ7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCBkMjA3NTBlNDIwYzAuLmFi ZDRmZGUyZTUyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9j cy5jCj4gQEAgLTE0NjAsNyArMTQ2MCw3IEBAIGludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRz KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCj4gIAkJZm9yIChwb3J0ID0gZXhl Y2xpc3RzLT5wZW5kaW5nOyAocnEgPSAqcG9ydCk7IHBvcnQrKykgewo+ICAJCQkvKiBFeGNsdWRl IGFueSBjb250ZXh0cyBhbHJlYWR5IGNvdW50ZWQgaW4gYWN0aXZlICovCj4gLQkJCWlmIChpbnRl bF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KHJxLT5od19jb250ZXh0KSA9PSAxKQo+ICsJCQlpZiAo IWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQocnEtPmh3X2NvbnRleHQpKQo+ICAJCQkJZW5n aW5lLT5zdGF0cy5hY3RpdmUrKzsKPiAgCQl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jCj4gaW5kZXggNWMyNmM0YWUxMzliLi4wOWQ4Y2I4NjE1Y2YgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IEBAIC01NDcsMjcgKzU0NywzOSBAQCBleGVjbGlzdHNf Y29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25lZCBs b25nIHN0YXR1cykKPiAgCQkJCSAgIHN0YXR1cywgcnEpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgo+ICtfX2V4ZWNsaXN0c19zY2hlZHVsZV9pbihz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq IGNvbnN0IGVuZ2luZSA9IHJxLT5lbmdpbmU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqIGNv bnN0IGNlID0gcnEtPmh3X2NvbnRleHQ7Cj4gKwo+ICsJaW50ZWxfY29udGV4dF9nZXQoY2UpOwo+ ICsKPiArCWludGVsX2d0X3BtX2dldChlbmdpbmUtPmd0KTsKPiArCWV4ZWNsaXN0c19jb250ZXh0 X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOwo+ICsJaW50ZWxf ZW5naW5lX2NvbnRleHRfaW4oZW5naW5lKTsKPiArCj4gKwlyZXR1cm4gZW5naW5lOwo+ICt9Cj4g Kwo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICBleGVjbGlzdHNfc2No ZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBpZHgpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5od19jb250ZXh0Owo+IC0JaW50IGNvdW50Owo+ICsJ c3RydWN0IGludGVsX2NvbnRleHQgKiBjb25zdCBjZSA9IHJxLT5od19jb250ZXh0Owo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqb2xkOwo+ICAKPiArCUdFTV9CVUdfT04oIWludGVsX2VuZ2lu ZV9wbV9pc19hd2FrZShycS0+ZW5naW5lKSk7Cj4gIAl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEs IGlkeCk7Cj4gIAo+IC0JY291bnQgPSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKTsK PiAtCWlmICghY291bnQpIHsKPiAtCQlpbnRlbF9jb250ZXh0X2dldChjZSk7Cj4gLQkJY2UtPmlu ZmxpZ2h0ID0gcnEtPmVuZ2luZTsKPiAtCj4gLQkJaW50ZWxfZ3RfcG1fZ2V0KGNlLT5pbmZsaWdo dC0+Z3QpOwo+IC0JCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NP TlRFWFRfU0NIRURVTEVfSU4pOwo+IC0JCWludGVsX2VuZ2luZV9jb250ZXh0X2luKGNlLT5pbmZs aWdodCk7Cj4gLQl9Cj4gKwlvbGQgPSBSRUFEX09OQ0UoY2UtPmluZmxpZ2h0KTsKPiArCWRvIHsK PiArCQlpZiAoIW9sZCkgewoKVGhlIHNjaGVkdWxlIG91dCBtaWdodCBoYXZlIHN3YXBwZWQgaW5m bGlnaHQgaW4gaGVyZSBydWluaW5nIG91ciBkYXkuClNvIEkgYW0gaGVyZSB0cnlpbmcgdG8gZmln dXJlIG91dCBob3cgeW91IGNhbiBwdWxsIGl0IG9mZi4KCj4gKwkJCVdSSVRFX09OQ0UoY2UtPmlu ZmxpZ2h0LCBfX2V4ZWNsaXN0c19zY2hlZHVsZV9pbihycSkpOwo+ICsJCQlicmVhazsKPiArCQl9 Cj4gKwl9IHdoaWxlICghdHJ5X2NtcHhjaGcoJmNlLT5pbmZsaWdodCwgJm9sZCwgcHRyX2luYyhv bGQpKSk7Cj4gIAo+IC0JaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMoY2UpOwo+ICAJR0VNX0JV R19PTihpbnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKSAhPSBycS0+ZW5naW5lKTsKPiAtCj4gIAly ZXR1cm4gaTkxNV9yZXF1ZXN0X2dldChycSk7Cj4gIH0KPiAgCj4gQEAgLTU4MSwzNSArNTkzLDQ1 IEBAIHN0YXRpYyB2b2lkIGtpY2tfc2libGluZ3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lkCj4g LWV4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK19fZXhl Y2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiArCQkJIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSA9IHJxLT5od19jb250ZXh0Owo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKiBj b25zdCBjZSA9IHJxLT5od19jb250ZXh0Owo+ICAKPiAtCUdFTV9CVUdfT04oIWludGVsX2NvbnRl eHRfaW5mbGlnaHRfY291bnQoY2UpKTsKPiArCWludGVsX2VuZ2luZV9jb250ZXh0X291dChlbmdp bmUpOwo+ICsJZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVY VF9TQ0hFRFVMRV9PVVQpOwo+ICsJaW50ZWxfZ3RfcG1fcHV0KGVuZ2luZS0+Z3QpOwo+ICAKPiAt CXRyYWNlX2k5MTVfcmVxdWVzdF9vdXQocnEpOwo+ICsJLyoKPiArCSAqIElmIHRoaXMgaXMgcGFy dCBvZiBhIHZpcnR1YWwgZW5naW5lLCBpdHMgbmV4dCByZXF1ZXN0IG1heQo+ICsJICogaGF2ZSBi ZWVuIGJsb2NrZWQgd2FpdGluZyBmb3IgYWNjZXNzIHRvIHRoZSBhY3RpdmUgY29udGV4dC4KPiAr CSAqIFdlIGhhdmUgdG8ga2ljayBhbGwgdGhlIHNpYmxpbmdzIGFnYWluIGluIGNhc2Ugd2UgbmVl ZCB0bwo+ICsJICogc3dpdGNoIChlLmcuIHRoZSBuZXh0IHJlcXVlc3QgaXMgbm90IHJ1bm5hYmxl IG9uIHRoaXMKPiArCSAqIGVuZ2luZSkuIEhvcGVmdWxseSwgd2Ugd2lsbCBhbHJlYWR5IGhhdmUg c3VibWl0dGVkIHRoZSBuZXh0Cj4gKwkgKiByZXF1ZXN0IGJlZm9yZSB0aGUgdGFza2xldCBydW5z IGFuZCBkbyBub3QgbmVlZCB0byByZWJ1aWxkCj4gKwkgKiBlYWNoIHZpcnR1YWwgdHJlZSBhbmQg a2ljayBldmVyeW9uZSBhZ2Fpbi4KPiArCSAqLwo+ICsJaWYgKGNlLT5lbmdpbmUgIT0gZW5naW5l KQo+ICsJCWtpY2tfc2libGluZ3MocnEsIGNlKTsKPiAgCj4gLQlpbnRlbF9jb250ZXh0X2luZmxp Z2h0X2RlYyhjZSk7Cj4gLQlpZiAoIWludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpKSB7 Cj4gLQkJaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KGNlLT5pbmZsaWdodCk7Cj4gLQkJZXhlY2xp c3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQp Owo+IC0JCWludGVsX2d0X3BtX3B1dChjZS0+aW5mbGlnaHQtPmd0KTsKPiArCWludGVsX2NvbnRl eHRfcHV0KGNlKTsKPiArfQo+ICAKPiAtCQkvKgo+IC0JCSAqIElmIHRoaXMgaXMgcGFydCBvZiBh IHZpcnR1YWwgZW5naW5lLCBpdHMgbmV4dCByZXF1ZXN0IG1heQo+IC0JCSAqIGhhdmUgYmVlbiBi bG9ja2VkIHdhaXRpbmcgZm9yIGFjY2VzcyB0byB0aGUgYWN0aXZlIGNvbnRleHQuCj4gLQkJICog V2UgaGF2ZSB0byBraWNrIGFsbCB0aGUgc2libGluZ3MgYWdhaW4gaW4gY2FzZSB3ZSBuZWVkIHRv Cj4gLQkJICogc3dpdGNoIChlLmcuIHRoZSBuZXh0IHJlcXVlc3QgaXMgbm90IHJ1bm5hYmxlIG9u IHRoaXMKPiAtCQkgKiBlbmdpbmUpLiBIb3BlZnVsbHksIHdlIHdpbGwgYWxyZWFkeSBoYXZlIHN1 Ym1pdHRlZCB0aGUgbmV4dAo+IC0JCSAqIHJlcXVlc3QgYmVmb3JlIHRoZSB0YXNrbGV0IHJ1bnMg YW5kIGRvIG5vdCBuZWVkIHRvIHJlYnVpbGQKPiAtCQkgKiBlYWNoIHZpcnR1YWwgdHJlZSBhbmQg a2ljayBldmVyeW9uZSBhZ2Fpbi4KPiAtCQkgKi8KPiAtCQljZS0+aW5mbGlnaHQgPSBOVUxMOwo+ IC0JCWlmIChycS0+ZW5naW5lICE9IGNlLT5lbmdpbmUpCj4gLQkJCWtpY2tfc2libGluZ3MocnEs IGNlKTsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK2V4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICogY29u c3QgY2UgPSBycS0+aHdfY29udGV4dDsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmN1ciwg Km9sZDsKPiAgCj4gLQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+IC0JfQo+ICsJdHJhY2VfaTkx NV9yZXF1ZXN0X291dChycSk7Cj4gKwlHRU1fQlVHX09OKGludGVsX2NvbnRleHRfaW5mbGlnaHQo Y2UpICE9IHJxLT5lbmdpbmUpOwo+ICsKPiArCW9sZCA9IFJFQURfT05DRShjZS0+aW5mbGlnaHQp Owo+ICsJZG8KPiArCQljdXIgPSBwdHJfdW5tYXNrX2JpdHMob2xkLCAyKSA/IHB0cl9kZWMob2xk KSA6IE5VTEw7Cj4gKwl3aGlsZSAoIXRyeV9jbXB4Y2hnKCZjZS0+aW5mbGlnaHQsICZvbGQsIGN1 cikpOwo+ICsJaWYgKCFjdXIpCj4gKwkJX19leGVjbGlzdHNfc2NoZWR1bGVfb3V0KHJxLCBvbGQp Owo+ICAKPiAgCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+ICB9Cj4gQEAgLTY4NCw2ICs3MDYsOSBA QCBhc3NlcnRfcGVuZGluZ192YWxpZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqZXhlY2xpc3RzLAo+ICAKPiAgCXRyYWNlX3BvcnRzKGV4ZWNsaXN0cywgbXNnLCBleGVjbGlz dHMtPnBlbmRpbmcpOwo+ICAKPiArCWlmICghZXhlY2xpc3RzLT5wZW5kaW5nWzBdKQo+ICsJCXJl dHVybiBmYWxzZTsKPiArCj4gIAlpZiAoZXhlY2xpc3RzLT5wZW5kaW5nW2V4ZWNsaXN0c19udW1f cG9ydHMoZXhlY2xpc3RzKV0pCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiBAQCAtOTQ0LDkgKzk2 OSwyMSBAQCBuZWVkX3RpbWVzbGljZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGNv bnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICBzdGF0aWMgYm9vbAo+ICBlbmFibGVfdGlt ZXNsaWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0Jc3RydWN0IGk5 MTVfcmVxdWVzdCAqbGFzdCA9IGxhc3RfYWN0aXZlKCZlbmdpbmUtPmV4ZWNsaXN0cyk7Cj4gKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKnBvcnQ7Cj4gKwlpbnQgaGludDsKPiArCj4gKwlw b3J0ID0gZW5naW5lLT5leGVjbGlzdHMuYWN0aXZlOwo+ICsJd2hpbGUgKHBvcnRbMF0gJiYgaTkx NV9yZXF1ZXN0X2NvbXBsZXRlZChwb3J0WzBdKSkKPiArCQlwb3J0Kys7Cj4gKwlpZiAoIXBvcnRb MF0pCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCXJldHVybiBsYXN0ICYmIG5lZWRfdGltZXNs aWNlKGVuZ2luZSwgbGFzdCk7Cj4gKwloaW50ID0gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJp b3JpdHlfaGludDsKPiArCWlmIChwb3J0WzFdKQo+ICsJCWhpbnQgPSBtYXgocnFfcHJpbyhwb3J0 WzFdKSwgaGludCk7Cj4gKwo+ICsJLyogQ29tcGFyZSB0aGUgdHdvIGVuZC1wb2ludHMgYXMgYW4g dW5sb2NrZWQgYXBwcm94aW1hdGlvbiAqLwo+ICsJcmV0dXJuIGhpbnQgPj0gZWZmZWN0aXZlX3By aW8ocG9ydFswXSk7CgpXaGF0IGhhcHBlbnMgaWYgd2UgZ2V0IGl0IHdyb25nPwoKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgcmVjb3JkX3ByZWVtcHRpb24oc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cykKPiBAQCAtMTM1Niw3ICsxMzkzLDYgQEAgc3RhdGljIHZvaWQgcHJv Y2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJY29uc3QgdTggbnVt X2VudHJpZXMgPSBleGVjbGlzdHMtPmNzYl9zaXplOwo+ICAJdTggaGVhZCwgdGFpbDsKPiAgCj4g LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKPiAgCUdFTV9CVUdf T04oVVNFU19HVUNfU1VCTUlTU0lPTihlbmdpbmUtPmk5MTUpKTsKPiAgCj4gIAkvKgo+IEBAIC0x NDI3LDE1ICsxNDYzLDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3NiKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJCSAgICAgICBleGVjbGlzdHMtPnBlbmRpbmcsCj4gIAkJ CQkgICAgICAgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpICoKPiAgCQkJCSAgICAgICBz aXplb2YoKmV4ZWNsaXN0cy0+cGVuZGluZykpOwo+IC0JCQlleGVjbGlzdHMtPnBlbmRpbmdbMF0g PSBOVUxMOwo+IC0KPiAtCQkJdHJhY2VfcG9ydHMoZXhlY2xpc3RzLCAicHJvbW90ZWQiLCBleGVj bGlzdHMtPmFjdGl2ZSk7Cj4gIAo+ICAJCQlpZiAoZW5hYmxlX3RpbWVzbGljZShlbmdpbmUpKQo+ ICAJCQkJbW9kX3RpbWVyKCZleGVjbGlzdHMtPnRpbWVyLCBqaWZmaWVzICsgMSk7Cj4gIAo+ICAJ CQlpZiAoIWluamVjdF9wcmVlbXB0X2hhbmcoZXhlY2xpc3RzKSkKPiAgCQkJCXJpbmdfc2V0X3Bh dXNlZChlbmdpbmUsIDApOwo+ICsKPiArCQkJV1JJVEVfT05DRShleGVjbGlzdHMtPnBlbmRpbmdb MF0sIE5VTEwpOwo+ICAJCQlicmVhazsKPiAgCj4gIAkJY2FzZSBDU0JfQ09NUExFVEU6IC8qIHBv cnQwIGNvbXBsZXRlZCwgYWR2YW5jZWQgdG8gcG9ydDEgKi8KPiBAQCAtMTQ3OSw4ICsxNTE0LDYg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqY29uc3QgZW5naW5lKQo+ICB7Cj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKPiAtCj4gLQlwcm9jZXNzX2NzYihlbmdpbmUpOwo+ICAJ aWYgKCFlbmdpbmUtPmV4ZWNsaXN0cy5wZW5kaW5nWzBdKQo+ICAJCWV4ZWNsaXN0c19kZXF1ZXVl KGVuZ2luZSk7Cj4gIH0KPiBAQCAtMTQ5NCw5ICsxNTI3LDEyIEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICop ZGF0YTsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUo JmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKPiAtCV9fZXhlY2xpc3RzX3N1Ym1pc3Npb25f dGFza2xldChlbmdpbmUpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3Rp dmUubG9jaywgZmxhZ3MpOwo+ICsJcHJvY2Vzc19jc2IoZW5naW5lKTsKPiArCWlmICghZW5naW5l LT5leGVjbGlzdHMucGVuZGluZ1swXSkgewoKIVJFQURfT05DRSguLi4pPyBXb3VsZCBhdGxlYXN0 IHBhaXIgZG9jdW1lbnRhdGljYWxseS4KCj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+ YWN0aXZlLmxvY2ssIGZsYWdzKTsKPiArCQlfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQo ZW5naW5lKTsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2Nr LCBmbGFncyk7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNz aW9uX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91 dGlscy5oCj4gaW5kZXggZDY1MmJhNWQyMzIwLi41NjJmNzU2ZGE0MjEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV91dGlscy5oCj4gQEAgLTE2MSwxNyArMTYxLDE1IEBAIF9fY2hlY2tfc3RydWN0 X3NpemUoc2l6ZV90IGJhc2UsIHNpemVfdCBhcnIsIHNpemVfdCBjb3VudCwgc2l6ZV90ICpzaXpl KQo+ICAJKCh0eXBlb2YocHRyKSkoKHVuc2lnbmVkIGxvbmcpKHB0cikgfCBfX2JpdHMpKTsJCQlc Cj4gIH0pCj4gIAo+IC0jZGVmaW5lIHB0cl9jb3VudF9kZWMocF9wdHIpIGRvIHsJCQkJCVwKPiAt CXR5cGVvZihwX3B0cikgX19wID0gKHBfcHRyKTsJCQkJCVwKPiAtCXVuc2lnbmVkIGxvbmcgX192 ID0gKHVuc2lnbmVkIGxvbmcpKCpfX3ApOwkJCVwKPiAtCSpfX3AgPSAodHlwZW9mKCpwX3B0cikp KC0tX192KTsJCQkJCVwKPiAtfSB3aGlsZSAoMCkKPiAtCj4gLSNkZWZpbmUgcHRyX2NvdW50X2lu YyhwX3B0cikgZG8gewkJCQkJXAo+IC0JdHlwZW9mKHBfcHRyKSBfX3AgPSAocF9wdHIpOwkJCQkJ XAo+IC0JdW5zaWduZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykoKl9fcCk7CQkJXAo+IC0J Kl9fcCA9ICh0eXBlb2YoKnBfcHRyKSkoKytfX3YpOwkJCQkJXAo+IC19IHdoaWxlICgwKQo+ICsj ZGVmaW5lIHB0cl9kZWMocHRyKSAoewkJCQkJCQlcCj4gKwl1bnNpZ25lZCBsb25nIF9fdiA9ICh1 bnNpZ25lZCBsb25nKShwdHIpOwkJCVwKPiArCSh0eXBlb2YocHRyKSkoX192IC0gMSk7CQkJCQkJ XAo+ICt9KQo+ICsKPiArI2RlZmluZSBwdHJfaW5jKHB0cikgKHsJCQkJCQkJXAo+ICsJdW5zaWdu ZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykocHRyKTsJCQlcCj4gKwkodHlwZW9mKHB0cikp KF9fdiArIDEpOwkJCQkJCVwKPiArfSkKClNob3VsZCB3ZSBhZGQgR0VNX0RFQlVHX1dBUk5fT04g aWYgd2Ugb3ZlcmZsb3cgb3IgZG8gd2UKZGV0ZWN0IHRocm91Z2ggb3RoZXIgbWVhbnM/Ci1NaWth Cgo+ICAKPiAgI2RlZmluZSBwYWdlX21hc2tfYml0cyhwdHIpIHB0cl9tYXNrX2JpdHMocHRyLCBQ QUdFX1NISUZUKQo+ICAjZGVmaW5lIHBhZ2VfdW5tYXNrX2JpdHMocHRyKSBwdHJfdW5tYXNrX2Jp dHMocHRyLCBQQUdFX1NISUZUKQo+IC0tIAo+IDIuMjMuMC5yYzEKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4