From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH 5/5] drm/i915/execlists: Flush pending preemption events during reset Date: Tue, 20 Mar 2018 17:17:34 -0700 Message-ID: <20180321001734.GA19343@jeffdesk> References: <20180320001848.4405-1-chris@chris-wilson.co.uk> <20180320001848.4405-5-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7966E6E02E for ; Wed, 21 Mar 2018 00:32:24 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180320001848.4405-5-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMTI6MTg6NDhBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IENhdGNoIHVwIHdpdGggdGhlIGluZmxpZ2h0IENTQiBldmVudHMsIGFmdGVyIGRpc2Fi bGluZyB0aGUgdGFza2xldAo+IGJlZm9yZSBkZWNpZGluZyB3aGljaCByZXF1ZXN0IHdhcyB0cnVs eSBndWlsdHkgb2YgaGFuZ2luZyB0aGUgR1BVLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNaWNoYcWCIFdpbmlhcnNraSA8 bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+Cj4gQ0M6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwu dGhpZXJyeUBpbnRlbC5jb20+Cj4gQ2M6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29t Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyB8IDM1NSArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE5NyBp bnNlcnRpb25zKCspLCAxNTggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiBpbmRleCBlNWEzZmZiYzI3M2EuLmJlYjgxZjEzYTNjYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gQEAgLTgyOCwxODYgKzgyOCwxOTIgQEAgc3RhdGljIHZvaWQgZXhlY2xp c3RzX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAls b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cj4gIH0KPiAgCj4gLS8qCj4gLSAqIENoZWNrIHRoZSB1 bnJlYWQgQ29udGV4dCBTdGF0dXMgQnVmZmVycyBhbmQgbWFuYWdlIHRoZSBzdWJtaXNzaW9uIG9m IG5ldwo+IC0gKiBjb250ZXh0cyB0byB0aGUgRUxTUCBhY2NvcmRpbmdseS4KPiAtICovCj4gLXN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRh KQo+ICtzdGF0aWMgdm9pZCBwcm9jZXNzX2NzYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSAoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqKWRhdGE7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNs aXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiAgCXN0cnVjdCBl eGVjbGlzdF9wb3J0ICogY29uc3QgcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owo+ICsJdW5zaWduZWQgaW50IGhlYWQs IHRhaWw7Cj4gKwljb25zdCB1MzIgKmJ1ZjsKPiAgCWJvb2wgZncgPSBmYWxzZTsKPiAgCj4gLQkv KiBXZSBjYW4gc2tpcCBhY3F1aXJpbmcgaW50ZWxfcnVudGltZV9wbV9nZXQoKSBoZXJlIGFzIGl0 IHdhcyB0YWtlbgo+IC0JICogb24gb3VyIGJlaGFsZiBieSB0aGUgcmVxdWVzdCAoc2VlIGk5MTVf Z2VtX21hcmtfYnVzeSgpKSBhbmQgaXQgd2lsbAo+IC0JICogbm90IGJlIHJlbGlucXVpc2hlZCB1 bnRpbCB0aGUgZGV2aWNlIGlzIGlkbGUgKHNlZQo+IC0JICogaTkxNV9nZW1faWRsZV93b3JrX2hh bmRsZXIoKSkuIEFzIGEgcHJlY2F1dGlvbiwgd2UgbWFrZSBzdXJlCj4gLQkgKiB0aGF0IGFsbCBF TFNQIGFyZSBkcmFpbmVkIGkuZS4gd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIENTQiwKPiAtCSAqIGJl Zm9yZSBhbGxvd2luZyBvdXJzZWx2ZXMgdG8gaWRsZSBhbmQgY2FsbGluZyBpbnRlbF9ydW50aW1l X3BtX3B1dCgpLgo+IC0JICovCj4gLQlHRU1fQlVHX09OKCFkZXZfcHJpdi0+Z3QuYXdha2UpOwo+ ICsJaWYgKHVubGlrZWx5KGV4ZWNsaXN0cy0+Y3NiX3VzZV9tbWlvKSkgewo+ICsJCWJ1ZiA9ICh1 MzIgKiBfX2ZvcmNlKQo+ICsJCQkoaTkxNS0+cmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJ TkdfQ09OVEVYVF9TVEFUVVNfQlVGX0xPKGVuZ2luZSwgMCkpKTsKPiArCQlleGVjbGlzdHMtPmNz Yl9oZWFkID0gLTE7IC8qIGZvcmNlIG1taW8gcmVhZCBvZiBDU0IgcHRycyAqLwo+ICsJfSBlbHNl IHsKPiArCQkvKiBUaGUgSFdTUCBjb250YWlucyBhIChjYWNoZWFibGUpIG1pcnJvciBvZiB0aGUg Q1NCICovCj4gKwkJYnVmID0gJmVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyW0k5MTVfSFdT X0NTQl9CVUYwX0lOREVYXTsKPiArCX0KPiAgCj4gLQkvKiBQcmVmZXIgZG9pbmcgdGVzdF9hbmRf Y2xlYXJfYml0KCkgYXMgYSB0d28gc3RhZ2Ugb3BlcmF0aW9uIHRvIGF2b2lkCj4gLQkgKiBpbXBv c2luZyB0aGUgY29zdCBvZiBhIGxvY2tlZCBhdG9taWMgdHJhbnNhY3Rpb24gd2hlbiBzdWJtaXR0 aW5nIGEKPiAtCSAqIG5ldyByZXF1ZXN0IChvdXRzaWRlIG9mIHRoZSBjb250ZXh0LXN3aXRjaCBp bnRlcnJ1cHQpLgo+ICsJLyoKPiArCSAqIFRoZSB3cml0ZSB3aWxsIGJlIG9yZGVyZWQgYnkgdGhl IHVuY2FjaGVkIHJlYWQgKGl0c2VsZgo+ICsJICogYSBtZW1vcnkgYmFycmllciksIHNvIHdlIGRv IG5vdCBuZWVkIGFub3RoZXIgaW4gdGhlIGZvcm0KPiArCSAqIG9mIGEgbG9ja2VkIGluc3RydWN0 aW9uLiBUaGUgcmFjZSBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHQKPiArCSAqIGhhbmRsZXIgYW5kIHRo ZSBzcGxpdCB0ZXN0L2NsZWFyIGlzIGhhcm1sZXNzIGFzIHdlIG9yZGVyCj4gKwkgKiBvdXIgY2xl YXIgYmVmb3JlIHRoZSBDU0IgcmVhZC4gSWYgdGhlIGludGVycnVwdCBhcnJpdmVkCj4gKwkgKiBm aXJzdCBiZXR3ZWVuIHRoZSB0ZXN0IGFuZCB0aGUgY2xlYXIsIHdlIHJlYWQgdGhlIHVwZGF0ZWQK PiArCSAqIENTQiBhbmQgY2xlYXIgdGhlIGJpdC4gSWYgdGhlIGludGVycnVwdCBhcnJpdmVzIGFz IHdlIHJlYWQKPiArCSAqIHRoZSBDU0Igb3IgbGF0ZXIgKGkuZS4gYWZ0ZXIgd2UgaGFkIGNsZWFy ZWQgdGhlIGJpdCkgdGhlIGJpdAo+ICsJICogaXMgc2V0IGFuZCB3ZSBkbyBhIG5ldyBsb29wLgo+ ICAJICovCj4gLQl3aGlsZSAodGVzdF9iaXQoRU5HSU5FX0lSUV9FWEVDTElTVCwgJmVuZ2luZS0+ aXJxX3Bvc3RlZCkpIHsKPiAtCQkvKiBUaGUgSFdTUCBjb250YWlucyBhIChjYWNoZWFibGUpIG1p cnJvciBvZiB0aGUgQ1NCICovCj4gLQkJY29uc3QgdTMyICpidWYgPQo+IC0JCQkmZW5naW5lLT5z dGF0dXNfcGFnZS5wYWdlX2FkZHJbSTkxNV9IV1NfQ1NCX0JVRjBfSU5ERVhdOwo+IC0JCXVuc2ln bmVkIGludCBoZWFkLCB0YWlsOwo+IC0KPiAtCQlpZiAodW5saWtlbHkoZXhlY2xpc3RzLT5jc2Jf dXNlX21taW8pKSB7Cj4gLQkJCWJ1ZiA9ICh1MzIgKiBfX2ZvcmNlKQo+IC0JCQkJKGRldl9wcml2 LT5yZWdzICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8o ZW5naW5lLCAwKSkpOwo+IC0JCQlleGVjbGlzdHMtPmNzYl9oZWFkID0gLTE7IC8qIGZvcmNlIG1t aW8gcmVhZCBvZiBDU0IgcHRycyAqLwo+IC0JCX0KPiArCV9fY2xlYXJfYml0KEVOR0lORV9JUlFf RVhFQ0xJU1QsICZlbmdpbmUtPmlycV9wb3N0ZWQpOwo+ICsJaWYgKHVubGlrZWx5KGV4ZWNsaXN0 cy0+Y3NiX2hlYWQgPT0gLTEpKSB7IC8qIGZvbGxvd2luZyBhIHJlc2V0ICovCj4gKwkJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwgZXhlY2xpc3RzLT5md19kb21haW5zKTsKPiArCQlm dyA9IHRydWU7Cj4gKwo+ICsJCWhlYWQgPSByZWFkbChpOTE1LT5yZWdzICsgaTkxNV9tbWlvX3Jl Z19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSkpOwo+ICsJCXRhaWwgPSBH RU44X0NTQl9XUklURV9QVFIoaGVhZCk7Cj4gKwkJaGVhZCA9IEdFTjhfQ1NCX1JFQURfUFRSKGhl YWQpOwo+ICsJCWV4ZWNsaXN0cy0+Y3NiX2hlYWQgPSBoZWFkOwo+ICsJfSBlbHNlIHsKPiArCQlj b25zdCBpbnQgd3JpdGVfaWR4ID0KPiArCQkJaW50ZWxfaHdzX2NzYl93cml0ZV9pbmRleChpOTE1 KSAtCj4gKwkJCUk5MTVfSFdTX0NTQl9CVUYwX0lOREVYOwo+ICsKPiArCQloZWFkID0gZXhlY2xp c3RzLT5jc2JfaGVhZDsKPiArCQl0YWlsID0gUkVBRF9PTkNFKGJ1Zlt3cml0ZV9pZHhdKTsKPiAr CX0KPiArCUdFTV9UUkFDRSgiJXMgY3MtaXJxIGhlYWQ9JWQgWyVkJXNdLCB0YWlsPSVkIFslZCVz XVxuIiwKPiArCQkgIGVuZ2luZS0+bmFtZSwKPiArCQkgIGhlYWQsIEdFTjhfQ1NCX1JFQURfUFRS KHJlYWRsKGk5MTUtPnJlZ3MgKyBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NPTlRFWFRfU1RB VFVTX1BUUihlbmdpbmUpKSkpLCBmdyA/ICIiIDogIj8iLAo+ICsJCSAgdGFpbCwgR0VOOF9DU0Jf V1JJVEVfUFRSKHJlYWRsKGk5MTUtPnJlZ3MgKyBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NP TlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSkpLCBmdyA/ICIiIDogIj8iKTsKPiArCj4gKwl3aGls ZSAoaGVhZCAhPSB0YWlsKSB7Cj4gKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwkJdW5z aWduZWQgaW50IHN0YXR1czsKPiArCQl1bnNpZ25lZCBpbnQgY291bnQ7Cj4gKwo+ICsJCWlmICgr K2hlYWQgPT0gR0VOOF9DU0JfRU5UUklFUykKPiArCQkJaGVhZCA9IDA7Cj4gIAo+IC0JCS8qIFRo ZSB3cml0ZSB3aWxsIGJlIG9yZGVyZWQgYnkgdGhlIHVuY2FjaGVkIHJlYWQgKGl0c2VsZgo+IC0J CSAqIGEgbWVtb3J5IGJhcnJpZXIpLCBzbyB3ZSBkbyBub3QgbmVlZCBhbm90aGVyIGluIHRoZSBm b3JtCj4gLQkJICogb2YgYSBsb2NrZWQgaW5zdHJ1Y3Rpb24uIFRoZSByYWNlIGJldHdlZW4gdGhl IGludGVycnVwdAo+IC0JCSAqIGhhbmRsZXIgYW5kIHRoZSBzcGxpdCB0ZXN0L2NsZWFyIGlzIGhh cm1sZXNzIGFzIHdlIG9yZGVyCj4gLQkJICogb3VyIGNsZWFyIGJlZm9yZSB0aGUgQ1NCIHJlYWQu IElmIHRoZSBpbnRlcnJ1cHQgYXJyaXZlZAo+IC0JCSAqIGZpcnN0IGJldHdlZW4gdGhlIHRlc3Qg YW5kIHRoZSBjbGVhciwgd2UgcmVhZCB0aGUgdXBkYXRlZAo+IC0JCSAqIENTQiBhbmQgY2xlYXIg dGhlIGJpdC4gSWYgdGhlIGludGVycnVwdCBhcnJpdmVzIGFzIHdlIHJlYWQKPiAtCQkgKiB0aGUg Q1NCIG9yIGxhdGVyIChpLmUuIGFmdGVyIHdlIGhhZCBjbGVhcmVkIHRoZSBiaXQpIHRoZSBiaXQK PiAtCQkgKiBpcyBzZXQgYW5kIHdlIGRvIGEgbmV3IGxvb3AuCj4gKwkJLyoKPiArCQkgKiBXZSBh cmUgZmx5aW5nIG5lYXIgZHJhZ29ucyBhZ2Fpbi4KPiArCQkgKgo+ICsJCSAqIFdlIGhvbGQgYSBy ZWZlcmVuY2UgdG8gdGhlIHJlcXVlc3QgaW4gZXhlY2xpc3RfcG9ydFtdCj4gKwkJICogYnV0IG5v IG1vcmUgdGhhbiB0aGF0LiBXZSBhcmUgb3BlcmF0aW5nIGluIHNvZnRpcnEKPiArCQkgKiBjb250 ZXh0IGFuZCBzbyBjYW5ub3QgaG9sZCBhbnkgbXV0ZXggb3Igc2xlZXAuIFRoYXQKPiArCQkgKiBw cmV2ZW50cyB1cyBzdG9wcGluZyB0aGUgcmVxdWVzdHMgd2UgYXJlIHByb2Nlc3NpbmcKPiArCQkg KiBpbiBwb3J0W10gZnJvbSBiZWluZyByZXRpcmVkIHNpbXVsdGFuZW91c2x5ICh0aGUKPiArCQkg KiBicmVhZGNydW1iIHdpbGwgYmUgY29tcGxldGUgYmVmb3JlIHdlIHNlZSB0aGUKPiArCQkgKiBj b250ZXh0LXN3aXRjaCkuIEFzIHdlIG9ubHkgaG9sZCB0aGUgcmVmZXJlbmNlIHRvIHRoZQo+ICsJ CSAqIHJlcXVlc3QsIGFueSBwb2ludGVyIGNoYXNpbmcgdW5kZXJuZWF0aCB0aGUgcmVxdWVzdAo+ ICsJCSAqIGlzIHN1YmplY3QgdG8gYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUuIFRodXMgd2UK PiArCQkgKiBzdG9yZSBhbGwgb2YgdGhlIGJvb2trZWVwaW5nIHdpdGhpbiBwb3J0W10gYXMKPiAr CQkgKiByZXF1aXJlZCwgYW5kIGF2b2lkIHVzaW5nIHVuZ3VhcmRlZCBwb2ludGVycyBiZW5lYXRo Cj4gKwkJICogcmVxdWVzdCBpdHNlbGYuIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlIGF0b21pYwo+ ICsJCSAqIHN0YXR1cyBub3RpZmllci4KPiAgCQkgKi8KPiAtCQlfX2NsZWFyX2JpdChFTkdJTkVf SVJRX0VYRUNMSVNULCAmZW5naW5lLT5pcnFfcG9zdGVkKTsKPiAtCQlpZiAodW5saWtlbHkoZXhl Y2xpc3RzLT5jc2JfaGVhZCA9PSAtMSkpIHsgLyogZm9sbG93aW5nIGEgcmVzZXQgKi8KPiAtCQkJ aWYgKCFmdykgewo+IC0JCQkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsCj4g LQkJCQkJCQkgICBleGVjbGlzdHMtPmZ3X2RvbWFpbnMpOwo+IC0JCQkJZncgPSB0cnVlOwo+IC0J CQl9Cj4gIAo+IC0JCQloZWFkID0gcmVhZGwoZGV2X3ByaXYtPnJlZ3MgKyBpOTE1X21taW9fcmVn X29mZnNldChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSk7Cj4gLQkJCXRhaWwgPSBH RU44X0NTQl9XUklURV9QVFIoaGVhZCk7Cj4gLQkJCWhlYWQgPSBHRU44X0NTQl9SRUFEX1BUUiho ZWFkKTsKPiAtCQkJZXhlY2xpc3RzLT5jc2JfaGVhZCA9IGhlYWQ7Cj4gLQkJfSBlbHNlIHsKPiAt CQkJY29uc3QgaW50IHdyaXRlX2lkeCA9Cj4gLQkJCQlpbnRlbF9od3NfY3NiX3dyaXRlX2luZGV4 KGRldl9wcml2KSAtCj4gLQkJCQlJOTE1X0hXU19DU0JfQlVGMF9JTkRFWDsKPiArCQlzdGF0dXMg PSBSRUFEX09OQ0UoYnVmWzIgKiBoZWFkXSk7IC8qIG1heWJlIG1taW8hICovCj4gKwkJR0VNX1RS QUNFKCIlcyBjc2JbJWRdOiBzdGF0dXM9MHglMDh4OjB4JTA4eCwgYWN0aXZlPTB4JXhcbiIsCj4g KwkJCSAgZW5naW5lLT5uYW1lLCBoZWFkLAo+ICsJCQkgIHN0YXR1cywgYnVmWzIqaGVhZCArIDFd LAo+ICsJCQkgIGV4ZWNsaXN0cy0+YWN0aXZlKTsKPiArCj4gKwkJaWYgKHN0YXR1cyAmIChHRU44 X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUgfAo+ICsJCQkgICAgICBHRU44X0NUWF9TVEFUVVNfUFJF RU1QVEVEKSkKPiArCQkJZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAo+ICsJCQkJCSAg ICAgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4gKwkJaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NU QVRVU19BQ1RJVkVfSURMRSkKPiArCQkJZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMs Cj4gKwkJCQkJICAgICAgIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwo+ICsKPiArCQlpZiAoIShz dGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExFVEVEX01BU0spKQo+ICsJCQljb250aW51ZTsK PiAgCj4gLQkJCWhlYWQgPSBleGVjbGlzdHMtPmNzYl9oZWFkOwo+IC0JCQl0YWlsID0gUkVBRF9P TkNFKGJ1Zlt3cml0ZV9pZHhdKTsKPiAtCQl9Cj4gLQkJR0VNX1RSQUNFKCIlcyBjcy1pcnEgaGVh ZD0lZCBbJWQlc10sIHRhaWw9JWQgWyVkJXNdXG4iLAo+IC0JCQkgIGVuZ2luZS0+bmFtZSwKPiAt CQkJICBoZWFkLCBHRU44X0NTQl9SRUFEX1BUUihyZWFkbChkZXZfcHJpdi0+cmVncyArIGk5MTVf bW1pb19yZWdfb2Zmc2V0KFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkpKSksIGZ3ID8g IiIgOiAiPyIsCj4gLQkJCSAgdGFpbCwgR0VOOF9DU0JfV1JJVEVfUFRSKHJlYWRsKGRldl9wcml2 LT5yZWdzICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5n aW5lKSkpKSwgZncgPyAiIiA6ICI/Iik7Cj4gKwkJLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBhIENP TVBMRVRFRCB8IElETEVfQUNUSVZFISAqLwo+ICsJCUdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9D VFhfU1RBVFVTX0lETEVfQUNUSVZFKTsKPiAgCj4gLQkJd2hpbGUgKGhlYWQgIT0gdGFpbCkgewo+ IC0JCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCQkJdW5zaWduZWQgaW50IHN0YXR1czsK PiAtCQkJdW5zaWduZWQgaW50IGNvdW50Owo+ICsJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFU VVNfQ09NUExFVEUgJiYKPiArCQkgICAgYnVmWzIqaGVhZCArIDFdID09IGV4ZWNsaXN0cy0+cHJl ZW1wdF9jb21wbGV0ZV9zdGF0dXMpIHsKPiArCQkJR0VNX1RSQUNFKCIlcyBwcmVlbXB0LWlkbGVc biIsIGVuZ2luZS0+bmFtZSk7Cj4gKwkJCWNvbXBsZXRlX3ByZWVtcHRfY29udGV4dChleGVjbGlz dHMpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gIAo+IC0JCQlpZiAoKytoZWFkID09IEdFTjhf Q1NCX0VOVFJJRVMpCj4gLQkJCQloZWFkID0gMDsKPiArCQlpZiAoc3RhdHVzICYgR0VOOF9DVFhf U1RBVFVTX1BSRUVNUFRFRCAmJgo+ICsJCSAgICBleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0 cywKPiArCQkJCQlFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpKQo+ICsJCQljb250aW51ZTsKPiAg Cj4gLQkJCS8qIFdlIGFyZSBmbHlpbmcgbmVhciBkcmFnb25zIGFnYWluLgo+IC0JCQkgKgo+IC0J CQkgKiBXZSBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZXF1ZXN0IGluIGV4ZWNsaXN0X3BvcnRb XQo+IC0JCQkgKiBidXQgbm8gbW9yZSB0aGFuIHRoYXQuIFdlIGFyZSBvcGVyYXRpbmcgaW4gc29m dGlycQo+IC0JCQkgKiBjb250ZXh0IGFuZCBzbyBjYW5ub3QgaG9sZCBhbnkgbXV0ZXggb3Igc2xl ZXAuIFRoYXQKPiAtCQkJICogcHJldmVudHMgdXMgc3RvcHBpbmcgdGhlIHJlcXVlc3RzIHdlIGFy ZSBwcm9jZXNzaW5nCj4gLQkJCSAqIGluIHBvcnRbXSBmcm9tIGJlaW5nIHJldGlyZWQgc2ltdWx0 YW5lb3VzbHkgKHRoZQo+IC0JCQkgKiBicmVhZGNydW1iIHdpbGwgYmUgY29tcGxldGUgYmVmb3Jl IHdlIHNlZSB0aGUKPiAtCQkJICogY29udGV4dC1zd2l0Y2gpLiBBcyB3ZSBvbmx5IGhvbGQgdGhl IHJlZmVyZW5jZSB0byB0aGUKPiAtCQkJICogcmVxdWVzdCwgYW55IHBvaW50ZXIgY2hhc2luZyB1 bmRlcm5lYXRoIHRoZSByZXF1ZXN0Cj4gLQkJCSAqIGlzIHN1YmplY3QgdG8gYSBwb3RlbnRpYWwg dXNlLWFmdGVyLWZyZWUuIFRodXMgd2UKPiAtCQkJICogc3RvcmUgYWxsIG9mIHRoZSBib29ra2Vl cGluZyB3aXRoaW4gcG9ydFtdIGFzCj4gLQkJCSAqIHJlcXVpcmVkLCBhbmQgYXZvaWQgdXNpbmcg dW5ndWFyZGVkIHBvaW50ZXJzIGJlbmVhdGgKPiAtCQkJICogcmVxdWVzdCBpdHNlbGYuIFRoZSBz YW1lIGFwcGxpZXMgdG8gdGhlIGF0b21pYwo+IC0JCQkgKiBzdGF0dXMgbm90aWZpZXIuCj4gLQkJ CSAqLwo+ICsJCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAo+ICsJ CQkJCQlFWEVDTElTVFNfQUNUSVZFX1VTRVIpKTsKPiAgCj4gLQkJCXN0YXR1cyA9IFJFQURfT05D RShidWZbMiAqIGhlYWRdKTsgLyogbWF5YmUgbW1pbyEgKi8KPiAtCQkJR0VNX1RSQUNFKCIlcyBj c2JbJWRdOiBzdGF0dXM9MHglMDh4OjB4JTA4eCwgYWN0aXZlPTB4JXhcbiIsCj4gLQkJCQkgIGVu Z2luZS0+bmFtZSwgaGVhZCwKPiAtCQkJCSAgc3RhdHVzLCBidWZbMipoZWFkICsgMV0sCj4gLQkJ CQkgIGV4ZWNsaXN0cy0+YWN0aXZlKTsKPiAtCj4gLQkJCWlmIChzdGF0dXMgJiAoR0VOOF9DVFhf U1RBVFVTX0lETEVfQUNUSVZFIHwKPiAtCQkJCSAgICAgIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBU RUQpKQo+IC0JCQkJZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAo+IC0JCQkJCQkgICAg IEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwo+IC0JCQlpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RB VFVTX0FDVElWRV9JRExFKQo+IC0JCQkJZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMs Cj4gLQkJCQkJCSAgICAgICBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKPiAtCj4gLQkJCWlmICgh KHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19DT01QTEVURURfTUFTSykpCj4gLQkJCQljb250aW51 ZTsKPiArCQlycSA9IHBvcnRfdW5wYWNrKHBvcnQsICZjb3VudCk7Cj4gKwkJR0VNX1RSQUNFKCIl cyBvdXRbMF06IGN0eD0lZC4lZCwgc2Vxbm89JXgsIHByaW89JWRcbiIsCj4gKwkJCSAgZW5naW5l LT5uYW1lLAo+ICsJCQkgIHBvcnQtPmNvbnRleHRfaWQsIGNvdW50LAo+ICsJCQkgIHJxID8gcnEt Pmdsb2JhbF9zZXFubyA6IDAsCj4gKwkJCSAgcnEgPyBycV9wcmlvKHJxKSA6IDApOwo+ICsKPiAr CQkvKiBDaGVjayB0aGUgY29udGV4dC9kZXNjIGlkIGZvciB0aGlzIGV2ZW50IG1hdGNoZXMgKi8K PiArCQlHRU1fREVCVUdfQlVHX09OKGJ1ZlsyICogaGVhZCArIDFdICE9IHBvcnQtPmNvbnRleHRf aWQpOwo+ICsKPiArCQlHRU1fQlVHX09OKGNvdW50ID09IDApOwo+ICsJCWlmICgtLWNvdW50ID09 IDApIHsKPiArCQkJR0VNX0JVR19PTihzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVE KTsKPiArCQkJR0VNX0JVR19PTihwb3J0X2lzc2V0KCZwb3J0WzFdKSAmJgo+ICsJCQkJICAgIShz dGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKTsKPiArCQkJR0VNX0JVR19P TighaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpOwo+ICsJCQlleGVjbGlzdHNfY29udGV4dF9z Y2hlZHVsZV9vdXQocnEpOwo+ICsJCQl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKPiArCQkJ aTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gKwo+ICsJCQlHRU1fVFJBQ0UoIiVzIGNvbXBsZXRlZCBj dHg9JWRcbiIsCj4gKwkJCQkgIGVuZ2luZS0+bmFtZSwgcG9ydC0+Y29udGV4dF9pZCk7Cj4gKwo+ ICsJCQlleGVjbGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOwo+ICsJCX0gZWxz ZSB7Cj4gKwkJCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhycSwgY291bnQpKTsKPiArCQl9Cj4g IAo+IC0JCQkvKiBXZSBzaG91bGQgbmV2ZXIgZ2V0IGEgQ09NUExFVEVEIHwgSURMRV9BQ1RJVkUh ICovCj4gLQkJCUdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZF KTsKPiArCQkvKiBBZnRlciB0aGUgZmluYWwgZWxlbWVudCwgdGhlIGh3IHNob3VsZCBiZSBpZGxl ICovCj4gKwkJR0VNX0JVR19PTihwb3J0X2NvdW50KHBvcnQpID09IDAgJiYKPiArCQkJICAgIShz dGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpKTsKPiArCQlpZiAocG9ydF9jb3Vu dChwb3J0KSA9PSAwKQo+ICsJCQlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywKPiAr CQkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9VU0VSKTsKPiArCX0KPiAgCj4gLQkJCWlmIChz dGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExFVEUgJiYKPiAtCQkJICAgIGJ1ZlsyKmhlYWQg KyAxXSA9PSBleGVjbGlzdHMtPnByZWVtcHRfY29tcGxldGVfc3RhdHVzKSB7Cj4gLQkJCQlHRU1f VFJBQ0UoIiVzIHByZWVtcHQtaWRsZVxuIiwgZW5naW5lLT5uYW1lKTsKPiAtCQkJCWNvbXBsZXRl X3ByZWVtcHRfY29udGV4dChleGVjbGlzdHMpOwo+IC0JCQkJY29udGludWU7Cj4gLQkJCX0KPiAr CWlmIChoZWFkICE9IGV4ZWNsaXN0cy0+Y3NiX2hlYWQpIHsKPiArCQlleGVjbGlzdHMtPmNzYl9o ZWFkID0gaGVhZDsKPiArCQl3cml0ZWwoX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BUUl9N QVNLLCBoZWFkIDw8IDgpLAo+ICsJCSAgICAgICBpOTE1LT5yZWdzICsgaTkxNV9tbWlvX3JlZ19v ZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSkpOwo+ICsJfQo+ICAKPiAtCQkJ aWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQgJiYKPiAtCQkJICAgIGV4ZWNs aXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAo+IC0JCQkJCQlFWEVDTElTVFNfQUNUSVZFX1BSRUVN UFQpKQo+IC0JCQkJY29udGludWU7Cj4gKwlpZiAodW5saWtlbHkoZncpKQo+ICsJCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KGk5MTUsIGV4ZWNsaXN0cy0+ZndfZG9tYWlucyk7Cj4gK30KPiAg Cj4gLQkJCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAo+IC0JCQkJ CQkJRVhFQ0xJU1RTX0FDVElWRV9VU0VSKSk7Cj4gLQo+IC0JCQlycSA9IHBvcnRfdW5wYWNrKHBv cnQsICZjb3VudCk7Cj4gLQkJCUdFTV9UUkFDRSgiJXMgb3V0WzBdOiBjdHg9JWQuJWQsIHNlcW5v PSV4LCBwcmlvPSVkXG4iLAo+IC0JCQkJICBlbmdpbmUtPm5hbWUsCj4gLQkJCQkgIHBvcnQtPmNv bnRleHRfaWQsIGNvdW50LAo+IC0JCQkJICBycSA/IHJxLT5nbG9iYWxfc2Vxbm8gOiAwLAo+IC0J CQkJICBycSA/IHJxX3ByaW8ocnEpIDogMCk7Cj4gLQo+IC0JCQkvKiBDaGVjayB0aGUgY29udGV4 dC9kZXNjIGlkIGZvciB0aGlzIGV2ZW50IG1hdGNoZXMgKi8KPiAtCQkJR0VNX0RFQlVHX0JVR19P TihidWZbMiAqIGhlYWQgKyAxXSAhPSBwb3J0LT5jb250ZXh0X2lkKTsKPiAtCj4gLQkJCUdFTV9C VUdfT04oY291bnQgPT0gMCk7Cj4gLQkJCWlmICgtLWNvdW50ID09IDApIHsKPiAtCQkJCUdFTV9C VUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCk7Cj4gLQkJCQlHRU1fQlVH X09OKHBvcnRfaXNzZXQoJnBvcnRbMV0pICYmCj4gLQkJCQkJICAgIShzdGF0dXMgJiBHRU44X0NU WF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKTsKPiAtCQkJCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVz dF9jb21wbGV0ZWQocnEpKTsKPiAtCQkJCWV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxlX291dChy cSk7Cj4gLQkJCQl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKPiAtCQkJCWk5MTVfcmVxdWVz dF9wdXQocnEpOwo+IC0KPiAtCQkJCUdFTV9UUkFDRSgiJXMgY29tcGxldGVkIGN0eD0lZFxuIiwK PiAtCQkJCQkgIGVuZ2luZS0+bmFtZSwgcG9ydC0+Y29udGV4dF9pZCk7Cj4gLQo+IC0JCQkJZXhl Y2xpc3RzX3BvcnRfY29tcGxldGUoZXhlY2xpc3RzLCBwb3J0KTsKPiAtCQkJfSBlbHNlIHsKPiAt CQkJCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhycSwgY291bnQpKTsKPiAtCQkJfQo+ICsvKgo+ ICsgKiBDaGVjayB0aGUgdW5yZWFkIENvbnRleHQgU3RhdHVzIEJ1ZmZlcnMgYW5kIG1hbmFnZSB0 aGUgc3VibWlzc2lvbiBvZiBuZXcKPiArICogY29udGV4dHMgdG8gdGhlIEVMU1AgYWNjb3JkaW5n bHkuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0KHVu c2lnbmVkIGxvbmcgZGF0YSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0 IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICopZGF0YTsKPiAgCj4gLQkJCS8qIEFm dGVyIHRoZSBmaW5hbCBlbGVtZW50LCB0aGUgaHcgc2hvdWxkIGJlIGlkbGUgKi8KPiAtCQkJR0VN X0JVR19PTihwb3J0X2NvdW50KHBvcnQpID09IDAgJiYKPiAtCQkJCSAgICEoc3RhdHVzICYgR0VO OF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSk7Cj4gLQkJCWlmIChwb3J0X2NvdW50KHBvcnQpID09 IDApCj4gLQkJCQlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywKPiAtCQkJCQkJICAg ICAgIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Cj4gLQkJfQo+ICsJLyoKPiArCSAqIFdlIGNhbiBz a2lwIGFjcXVpcmluZyBpbnRlbF9ydW50aW1lX3BtX2dldCgpIGhlcmUgYXMgaXQgd2FzIHRha2Vu Cj4gKwkgKiBvbiBvdXIgYmVoYWxmIGJ5IHRoZSByZXF1ZXN0IChzZWUgaTkxNV9nZW1fbWFya19i dXN5KCkpIGFuZCBpdCB3aWxsCj4gKwkgKiBub3QgYmUgcmVsaW5xdWlzaGVkIHVudGlsIHRoZSBk ZXZpY2UgaXMgaWRsZSAoc2VlCj4gKwkgKiBpOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlcigpKS4g QXMgYSBwcmVjYXV0aW9uLCB3ZSBtYWtlIHN1cmUKPiArCSAqIHRoYXQgYWxsIEVMU1AgYXJlIGRy YWluZWQgaS5lLiB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgQ1NCLAo+ICsJICogYmVmb3JlIGFsbG93 aW5nIG91cnNlbHZlcyB0byBpZGxlIGFuZCBjYWxsaW5nIGludGVsX3J1bnRpbWVfcG1fcHV0KCku Cj4gKwkgKi8KPiArCUdFTV9CVUdfT04oIWVuZ2luZS0+aTkxNS0+Z3QuYXdha2UpOwo+ICAKPiAt CQlpZiAoaGVhZCAhPSBleGVjbGlzdHMtPmNzYl9oZWFkKSB7Cj4gLQkJCWV4ZWNsaXN0cy0+Y3Ni X2hlYWQgPSBoZWFkOwo+IC0JCQl3cml0ZWwoX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BU Ul9NQVNLLCBoZWFkIDw8IDgpLAo+IC0JCQkgICAgICAgZGV2X3ByaXYtPnJlZ3MgKyBpOTE1X21t aW9fcmVnX29mZnNldChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSk7Cj4gLQkJfQo+ IC0JfQo+ICsJLyoKPiArCSAqIFByZWZlciBkb2luZyB0ZXN0X2FuZF9jbGVhcl9iaXQoKSBhcyBh IHR3byBzdGFnZSBvcGVyYXRpb24gdG8gYXZvaWQKPiArCSAqIGltcG9zaW5nIHRoZSBjb3N0IG9m IGEgbG9ja2VkIGF0b21pYyB0cmFuc2FjdGlvbiB3aGVuIHN1Ym1pdHRpbmcgYQo+ICsJICogbmV3 IHJlcXVlc3QgKG91dHNpZGUgb2YgdGhlIGNvbnRleHQtc3dpdGNoIGludGVycnVwdCkuCj4gKwkg Ki8KPiArCWlmICh0ZXN0X2JpdChFTkdJTkVfSVJRX0VYRUNMSVNULCAmZW5naW5lLT5pcnFfcG9z dGVkKSkKVGhpcyB3YXMgYSAnd2hpbGUnIGJlZm9yZSByZWZhY3RvcmluZy4gU2hvdWxkbid0IGl0 IHN0aWxsIGJlIGluIG9yZGVyIHRvIGNhdGNoCm5ldyBpcnFfcG9zdGVkIGR1cmluZyBwcm9jZXNz aW5nPwoKQlRXLCBJIGhhdmUgcmV2aXNlZCBhbmQgcmViYXNlZCB0aGUgZm9yY2UgcHJlZW1wdGlv biBwYXRjaGVzIG9uIGRybS10aXAgd2l0aAp0aGlzIGFuZCB0aGUgb3RoZXIgcmVsYXRlZCBwYXRj aGVzIHlvdSBoYXZlIHByb3Bvc2VkLiBJIGp1c3Qgc3RhcnRlZCBydW5uaW5nCm15IElHVCB0ZXN0 IHRoYXQgY292ZXJzIHRoZSBpbm5vY2VudCBjb250ZXh0IG9uIHBvcnRbMV0gc2NlbmFyaW8gdGhh dCB3ZQpkaXNjdXNzZWQgb24gSVJDLiBHZXR0aW5nIGEgc3BvcmFkaWMgZmFpbHVyZSBidXQgbmVl ZCBtb3JlIHRpbWUgdG8gcm9vdCBjYXVzZS4KV2lsbCB1cGRhdGUgc29vbi4KCj4gKwkJcHJvY2Vz c19jc2IoZW5naW5lKTsKPiAgCj4gLQlpZiAoIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3Rz LCBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpKQo+ICsJaWYgKCFleGVjbGlzdHNfaXNfYWN0aXZl KCZlbmdpbmUtPmV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSkKPiAgCQlleGVj bGlzdHNfZGVxdWV1ZShlbmdpbmUpOwo+IC0KPiAtCWlmIChmdykKPiAtCQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgZXhlY2xpc3RzLT5md19kb21haW5zKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQgcXVldWVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gQEAgLTE2NjcsNiArMTY3Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoK PiAgZXhlY2xpc3RzX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0 cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qs ICphY3RpdmU7Cj4gIAo+ICAJLyoKPiAgCSAqIFByZXZlbnQgcmVxdWVzdCBzdWJtaXNzaW9uIHRv IHRoZSBoYXJkd2FyZSB1bnRpbCB3ZSBoYXZlCj4gQEAgLTE2ODgsNyArMTY5NSwzOSBAQCBleGVj bGlzdHNfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkJ dGFza2xldF9raWxsKCZleGVjbGlzdHMtPnRhc2tsZXQpOwo+ICAJdGFza2xldF9kaXNhYmxlKCZl eGVjbGlzdHMtPnRhc2tsZXQpOwo+ICAKPiAtCXJldHVybiBpOTE1X2dlbV9maW5kX2FjdGl2ZV9y ZXF1ZXN0KGVuZ2luZSk7Cj4gKwkvKgo+ICsJICogV2Ugd2FudCB0byBmbHVzaCB0aGUgcGVuZGlu ZyBjb250ZXh0IHN3aXRjaGVzLCBoYXZpbmcgZGlzYWJsZWQKPiArCSAqIHRoZSB0YXNrbGV0IGFi b3ZlLCB3ZSBjYW4gYXNzdW1lIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGV4ZWNsaXN0cy4KPiAr CSAqIEZvciB0aGlzIGFsbG93cyB1cyB0byBjYXRjaCB1cCB3aXRoIGFuIGluZmxpZ2h0IHByZWVt cHRpb24gZXZlbnQsCj4gKwkgKiBhbmQgYXZvaWQgYmxhbWluZyBhbiBpbm5vY2VudCByZXF1ZXN0 IGlmIHRoZSBzdGFsbCB3YXMgZHVlIHRvIHRoZQo+ICsJICogcHJlZW1wdGlvbiBpdHNlbGYuCj4g KwkgKi8KPiArCXByb2Nlc3NfY3NiKGVuZ2luZSk7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBsYXN0 IGFjdGl2ZSByZXF1ZXN0IGNhbiB0aGVuIGJlIG5vIGxhdGVyIHRoYW4gdGhlIGxhc3QgcmVxdWVz dAo+ICsJICogbm93IGluIEVMU1BbMF0uIFNvIHNlYXJjaCBiYWNrd2FyZHMgZnJvbSB0aGVyZSwg c28gdGhhdCBpcyB0aGUgR1BVCj4gKwkgKiBoYXMgYWR2YW5jZWQgYmV5b25kIHRoZSBsYXN0IENT QiB1cGRhdGUsIGl0IHdpbGwgYmUgcGFyZG9uZWQuCj4gKwkgKi8KPiArCWFjdGl2ZSA9IE5VTEw7 Cj4gKwlyZXF1ZXN0ID0gcG9ydF9yZXF1ZXN0KGV4ZWNsaXN0cy0+cG9ydCk7Cj4gKwlpZiAocmVx dWVzdCkgewo+ICsJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwkJbGlzdF9mb3JfZWFjaF9l bnRyeV9mcm9tX3JldmVyc2UocmVxdWVzdCwKPiArCQkJCQkJICZlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cywKPiArCQkJCQkJIGxpbmspIHsKPiArCQkJaWYgKF9faTkxNV9yZXF1ZXN0X2NvbXBs ZXRlZChyZXF1ZXN0LAo+ICsJCQkJCQkgICAgIHJlcXVlc3QtPmdsb2JhbF9zZXFubykpCj4gKwkJ CQlicmVhazsKPiArCj4gKwkJCWFjdGl2ZSA9IHJlcXVlc3Q7Cj4gKwkJfQo+ICsJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiArCX0KPiAr Cj4gKwlyZXR1cm4gYWN0aXZlOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCByZXNldF9pcnEoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC0tIAo+IDIuMTYuMgo+IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK