From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v7] drm/i915: Apply missed interrupt after reset w/a to all ringbuffer gen Date: Tue, 18 Dec 2018 16:15:09 +0200 Message-ID: <20181218141509.GB20097@intel.com> References: <20181213085359.31541-1-chris@chris-wilson.co.uk> <20181218102712.11058-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EE486E009 for ; Tue, 18 Dec 2018 14:15:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181218102712.11058-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMTgsIDIwMTggYXQgMTA6Mjc6MTJBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEhhdmluZyBjb21wbGV0ZWQgYSB0ZXN0IHJ1biBvZiBnZW1fZWlvIGFjcm9zcyBhbGwg bWFjaGluZXMgaW4gQ0kgd2UgYWxzbwo+IG9ic2VydmUgdGhlIHBoZW5vbWVub24gKG9mIGxvc3Qg aW50ZXJydXB0cyBhZnRlciByZXNldHRpbmcgdGhlIEdQVSkgb24KPiBnZW4zIG1hY2hpbmVzIGFz IHdlbGwgYXMgdGhlIHByZXZpb3VzbHkgc2lnaHRlZCBnZW42L2dlbjcuIExldCdzIGFwcGx5Cj4g dGhlIHNhbWUgSFdTVEFNIHdvcmthcm91bmQgdGhhdCB3YXMgZWZmZWN0aXZlIGZvciBnZW42KyBm b3IgYWxsLCBhcwo+IGFsdGhvdWdoIHdlIGhhdmVuJ3Qgc2VlbiB0aGUgc2FtZSBmYWlsdXJlIG9u IGdlbjQvNSBpdCBzZWVtcyBwcnVkZW50IHRvCj4ga2VlcCB0aGUgY29kZSB0aGUgc2FtZS4KPiAK PiBBcyBhIGNvbnNlcXVlbmNlIHdlIGNhbiByZW1vdmUgdGhlIGV4dHJhIHNldHRpbmcgb2YgSFdT VEFNIGFuZCBhcHBseSB0aGUKPiByZWdpc3RlciBmcm9tIGEgc2luZ2xlIHNpdGUuCj4gCj4gdjI6 IERlbGF6eSBhbmQgbW92ZSB0aGUgSFdTVEFNIGludG8gaXRzIG93biBmdW5jdGlvbgo+IHYzOiBN YXNrIG9mZiBhbGwgSFdTUCB3cml0ZXMgb24gZHJpdmVyIHVubG9hZCBhbmQgZW5naW5lIGNsZWFu dXAuCj4gdjQ6IEFuZCB3aGF0IGFib3V0IHRoZSBwaHlzaWNhbCBod3NwPwo+IHY1OiBObywgZW5n aW5lLT5pbml0X2h3KCkgaXMgbm90IGNhbGxlZCBmcm9tIGRyaXZlcl9pbml0X2h3KCksIGRvbid0 IGJlCj4gZGFmdC4gUmVhbGx5IHNjcnViIEhXU1RBTSBhcyBlYXJseSBhcyB3ZSBjYW4gaW4gZHJp dmVyX2luaXRfbW1pbygpCj4gdjY6IFJlbmFtZSBzZXRfaHdzcCBhcyBpdCB3YXMgc2V0dGluZyB0 aGUgbWFzayBub3QgdGhlIGh3c3AgcmVnaXN0ZXIuCj4gdjc6IFZpbGxlIHBvaW50ZWQgb3V0IHRo YXQgYWx0aG91Z2ggdmNzKGJzZCkgd2FzIGludHJvZHVjZWQgZm9yIGc0eC9pbGssCj4gcGVyLWVu Z2luZSBIV1NUQU0gd2FzIG5vdCBpbnRyb2R1Y2VkIHVudGlsIGdlbjYhCj4gCj4gUmVmZXJlbmNl czogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzM1Cj4g U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g Q2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CgpSZXZpZXdlZC1ieTog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICAgOSAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgIDMxICsrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAxMDEgKysrKysrKysrKysrKysrLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMiAr Cj4gIDUgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggZTJkYWM5YjVmNGNlLi4wYzdmYzk4OTA4 OTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMzU4Niw5ICszNTg2LDYgQEAg c3RhdGljIHZvaWQgaXJvbmxha2VfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiAgCj4gLQlpZiAoSVNfR0VOKGRldl9wcml2LCA1KSkKPiAtCQlJOTE1X1dSSVRFKEhXU1RBTSwg MHhmZmZmZmZmZik7Cj4gLQo+ICAJR0VOM19JUlFfUkVTRVQoREUpOwo+ICAJaWYgKElTX0dFTihk ZXZfcHJpdiwgNykpCj4gIAkJSTkxNV9XUklURShHRU43X0VSUl9JTlQsIDB4ZmZmZmZmZmYpOwo+ IEBAIC00MzY4LDggKzQzNjUsNiBAQCBzdGF0aWMgdm9pZCBpOHh4X2lycV9yZXNldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWk5eHhfcGlwZXN0YXRfaXJxX3Jlc2V0KGRldl9wcml2 KTsKPiAgCj4gLQlJOTE1X1dSSVRFMTYoSFdTVEFNLCAweGZmZmYpOwo+IC0KPiAgCUdFTjJfSVJR X1JFU0VUKCk7Cj4gIH0KPiAgCj4gQEAgLTQ1MzcsOCArNDUzMiw2IEBAIHN0YXRpYyB2b2lkIGk5 MTVfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaTl4eF9waXBlc3Rh dF9pcnFfcmVzZXQoZGV2X3ByaXYpOwo+ICAKPiAtCUk5MTVfV1JJVEUoSFdTVEFNLCAweGZmZmZm ZmZmKTsKPiAtCj4gIAlHRU4zX0lSUV9SRVNFVCgpOwo+ICB9Cj4gIAo+IEBAIC00NjQ4LDggKzQ2 NDEsNiBAQCBzdGF0aWMgdm9pZCBpOTY1X2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAKPiAgCWk5eHhfcGlwZXN0YXRfaXJxX3Jlc2V0KGRldl9wcml2KTsKPiAgCj4gLQlJOTE1 X1dSSVRFKEhXU1RBTSwgMHhmZmZmZmZmZik7Cj4gLQo+ICAJR0VOM19JUlFfUkVTRVQoKTsKPiAg fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDZmMTY1 ZjlhZDJiZi4uZDNkZWMzMWRmMTIzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKPiBAQCAtMjYxLDYgKzI2MSwzMSBAQCBzdGF0aWMgdm9pZCBfX3NwcmludF9lbmdp bmVfbmFtZShjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgZW5naW5lX2luZm8gKmluZm8pCj4gIAkJ CSBpbmZvLT5pbnN0YW5jZSkgPj0gSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FKTsKPiAgfQo+ICAK PiArdm9pZCBpbnRlbF9lbmdpbmVfc2V0X2h3c3Bfd3JpdGVtYXNrKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgdTMyIG1hc2spCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiArCWk5MTVfcmVnX3QgaHdzdGFtOwo+ICsKPiAr CS8qCj4gKwkgKiBUaG91Z2ggdGhleSBhZGRlZCBtb3JlIHJpbmdzIG9uIGc0eC9pbGssIHRoZXkg ZGlkIG5vdCBhZGQKPiArCSAqIHBlci1lbmdpbmUgSFdTVEFNIHVudGlsIGdlbjYuCj4gKwkgKi8K PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNiAmJiBlbmdpbmUtPmNsYXNzICE9IFJFTkRF Ul9DTEFTUykKPiArCQlyZXR1cm47Cj4gKwo+ICsJaHdzdGFtID0gUklOR19IV1NUQU0oZW5naW5l LT5tbWlvX2Jhc2UpOwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMykKPiArCQlJOTE1 X1dSSVRFKGh3c3RhbSwgbWFzayk7Cj4gKwllbHNlCj4gKwkJSTkxNV9XUklURTE2KGh3c3RhbSwg bWFzayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9zYW5pdGl6ZV9tbWlv KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJLyogTWFzayBvZmYgYWxs IHdyaXRlcyBpbnRvIHRoZSB1bmtub3duIEhXU1AgKi8KPiArCWludGVsX2VuZ2luZV9zZXRfaHdz cF93cml0ZW1hc2soZW5naW5lLCB+MHUpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50Cj4gIGludGVs X2VuZ2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAg ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQpCj4gQEAgLTMxMiw2ICszMzcsOSBAQCBpbnRlbF9lbmdp bmVfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCUFUT01J Q19JTklUX05PVElGSUVSX0hFQUQoJmVuZ2luZS0+Y29udGV4dF9zdGF0dXNfbm90aWZpZXIpOwo+ ICAKPiArCS8qIFNjcnViIG1taW8gc3RhdGUgb24gdGFrZW92ZXIgKi8KPiArCWludGVsX2VuZ2lu ZV9zYW5pdGl6ZV9tbWlvKGVuZ2luZSk7Cj4gKwo+ICAJZGV2X3ByaXYtPmVuZ2luZV9jbGFzc1tp bmZvLT5jbGFzc11baW5mby0+aW5zdGFuY2VdID0gZW5naW5lOwo+ICAJZGV2X3ByaXYtPmVuZ2lu ZVtpZF0gPSBlbmdpbmU7Cj4gIAlyZXR1cm4gMDsKPiBAQCAtNDk1LDYgKzUyMyw5IEBAIHZvaWQg aW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gIAo+ICBzdGF0aWMgdm9pZCBjbGVhbnVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgewo+ICsJLyogUHJldmVudCB3cml0ZXMgaW50byBIV1NQIGFmdGVy IHJldHVybmluZyB0aGUgcGFnZSB0byB0aGUgc3lzdGVtICovCj4gKwlpbnRlbF9lbmdpbmVfc2V0 X2h3c3Bfd3JpdGVtYXNrKGVuZ2luZSwgfjB1KTsKPiArCj4gIAlpZiAoSFdTX05FRURTX1BIWVNJ Q0FMKGVuZ2luZS0+aTkxNSkpIHsKPiAgCQl2b2lkICphZGRyID0gZmV0Y2hfYW5kX3plcm8oJmVu Z2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiBpbmRleCAxYzk3NDhmMzkxZmUuLmIwNWQwNTYxZjk5YSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gQEAgLTE2NTUsNyArMTY1NSw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9l eGVjbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gIAo+IC0JSTkxNV9X UklURShSSU5HX0hXU1RBTShlbmdpbmUtPm1taW9fYmFzZSksIDB4ZmZmZmZmZmYpOwo+ICsJaW50 ZWxfZW5naW5lX3NldF9od3NwX3dyaXRlbWFzayhlbmdpbmUsIH4wdSk7IC8qIEhXU1RBTSAqLwo+ ICAKPiAgCS8qCj4gIAkgKiBNYWtlIHN1cmUgd2UncmUgbm90IGVuYWJsaW5nIHRoZSBuZXcgMTIt ZGVlcCBDU0IKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXgg ZmRlY2EyYjg3N2M5Li42NWZkOTJlYjA3MWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTM3OSwxMSArMzc5LDI1IEBAIGdlbjdfcmVuZGVyX3Jpbmdf Zmx1c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyB2b2lkIHJpbmdfc2V0dXBfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lkIHNldF9od3N0YW0oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgbWFzaykKPiArewo+ICsJLyoKPiArCSAqIEtl ZXAgdGhlIHJlbmRlciBpbnRlcnJ1cHQgdW5tYXNrZWQgYXMgdGhpcyBwYXBlcnMgb3Zlcgo+ICsJ ICogbG9zdCBpbnRlcnJ1cHRzIGZvbGxvd2luZyBhIHJlc2V0Lgo+ICsJICovCj4gKwlpZiAoZW5n aW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKPiArCQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+ aTkxNSkgPj0gNikKPiArCQkJbWFzayAmPSB+QklUKDApOwo+ICsJCWVsc2UKPiArCQkJbWFzayAm PSB+STkxNV9VU0VSX0lOVEVSUlVQVDsKPiArCX0KPiArCj4gKwlpbnRlbF9lbmdpbmVfc2V0X2h3 c3Bfd3JpdGVtYXNrKGVuZ2luZSwgbWFzayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldF9o d3NfcGdhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgcGh5c19hZGRyX3QgcGh5cykK PiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1 Owo+IC0Jc3RydWN0IHBhZ2UgKnBhZ2UgPSB2aXJ0X3RvX3BhZ2UoZW5naW5lLT5zdGF0dXNfcGFn ZS5wYWdlX2FkZHIpOwo+IC0JcGh5c19hZGRyX3QgcGh5cyA9IFBGTl9QSFlTKHBhZ2VfdG9fcGZu KHBhZ2UpKTsKPiAgCXUzMiBhZGRyOwo+ICAKPiAgCWFkZHIgPSBsb3dlcl8zMl9iaXRzKHBoeXMp Owo+IEBAIC0zOTMsMTIgKzQwNywyMiBAQCBzdGF0aWMgdm9pZCByaW5nX3NldHVwX3BoeXNfc3Rh dHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJSTkxNV9XUklURShI V1NfUEdBLCBhZGRyKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9z dGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lk IHJpbmdfc2V0dXBfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK3sKPiArCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19wYWdlKGVuZ2luZS0+c3Rh dHVzX3BhZ2UucGFnZV9hZGRyKTsKPiArCXBoeXNfYWRkcl90IHBoeXMgPSBQRk5fUEhZUyhwYWdl X3RvX3BmbihwYWdlKSk7Cj4gKwo+ICsJc2V0X2h3c19wZ2EoZW5naW5lLCBwaHlzKTsKPiArCXNl dF9od3N0YW0oZW5naW5lLCB+MHUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXRfaHdzcChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBvZmZzZXQpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCWk5MTVfcmVn X3QgbW1pbzsKPiArCWk5MTVfcmVnX3QgaHdzcDsKPiAgCj4gLQkvKiBUaGUgcmluZyBzdGF0dXMg cGFnZSBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciBuZXh0IHRvIHRoZSByZXN0IG9mCj4gKwkvKgo+ ICsJICogVGhlIHJpbmcgc3RhdHVzIHBhZ2UgYWRkcmVzc2VzIGFyZSBubyBsb25nZXIgbmV4dCB0 byB0aGUgcmVzdCBvZgo+ICAJICogdGhlIHJpbmcgcmVnaXN0ZXJzIGFzIG9mIGdlbjcuCj4gIAkg Ki8KPiAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDcpKSB7Cj4gQEAgLTQxMCw1NiArNDM0LDU1IEBA IHN0YXRpYyB2b2lkIGludGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAJCWRlZmF1bHQ6Cj4gIAkJCUdFTV9CVUdfT04oZW5naW5lLT5p ZCk7Cj4gIAkJY2FzZSBSQ1M6Cj4gLQkJCW1taW8gPSBSRU5ERVJfSFdTX1BHQV9HRU43Owo+ICsJ CQlod3NwID0gUkVOREVSX0hXU19QR0FfR0VONzsKPiAgCQkJYnJlYWs7Cj4gIAkJY2FzZSBCQ1M6 Cj4gLQkJCW1taW8gPSBCTFRfSFdTX1BHQV9HRU43Owo+ICsJCQlod3NwID0gQkxUX0hXU19QR0Ff R0VONzsKPiAgCQkJYnJlYWs7Cj4gIAkJY2FzZSBWQ1M6Cj4gLQkJCW1taW8gPSBCU0RfSFdTX1BH QV9HRU43Owo+ICsJCQlod3NwID0gQlNEX0hXU19QR0FfR0VONzsKPiAgCQkJYnJlYWs7Cj4gIAkJ Y2FzZSBWRUNTOgo+IC0JCQltbWlvID0gVkVCT1hfSFdTX1BHQV9HRU43Owo+ICsJCQlod3NwID0g VkVCT1hfSFdTX1BHQV9HRU43Owo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAl9IGVsc2UgaWYgKElT X0dFTihkZXZfcHJpdiwgNikpIHsKPiAtCQltbWlvID0gUklOR19IV1NfUEdBX0dFTjYoZW5naW5l LT5tbWlvX2Jhc2UpOwo+ICsJCWh3c3AgPSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9f YmFzZSk7Cj4gIAl9IGVsc2Ugewo+IC0JCW1taW8gPSBSSU5HX0hXU19QR0EoZW5naW5lLT5tbWlv X2Jhc2UpOwo+ICsJCWh3c3AgPSBSSU5HX0hXU19QR0EoZW5naW5lLT5tbWlvX2Jhc2UpOwo+ICAJ fQo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAtCQl1MzIgbWFzayA9 IH4wdTsKPiArCUk5MTVfV1JJVEUoaHdzcCwgb2Zmc2V0KTsKPiArCVBPU1RJTkdfUkVBRChod3Nw KTsKPiArfQo+ICAKPiAtCQkvKgo+IC0JCSAqIEtlZXAgdGhlIHJlbmRlciBpbnRlcnJ1cHQgdW5t YXNrZWQgYXMgdGhpcyBwYXBlcnMgb3Zlcgo+IC0JCSAqIGxvc3QgaW50ZXJydXB0cyBmb2xsb3dp bmcgYSByZXNldC4KPiAtCQkgKi8KPiAtCQlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpCj4gLQkJCW1h c2sgJj0gfkJJVCgwKTsKPiArc3RhdGljIHZvaWQgZmx1c2hfY3NfdGxiKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZW5naW5lLT5pOTE1Owo+ICsJaTkxNV9yZWdfdCBpbnN0cG0gPSBSSU5HX0lOU1RQTShl bmdpbmUtPm1taW9fYmFzZSk7Cj4gIAo+IC0JCUk5MTVfV1JJVEUoUklOR19IV1NUQU0oZW5naW5l LT5tbWlvX2Jhc2UpLCBtYXNrKTsKPiAtCX0KPiArCWlmICghSVNfR0VOX1JBTkdFKGRldl9wcml2 LCA2LCA3KSkKPiArCQlyZXR1cm47Cj4gIAo+IC0JSTkxNV9XUklURShtbWlvLCBlbmdpbmUtPnN0 YXR1c19wYWdlLmdndHRfb2Zmc2V0KTsKPiAtCVBPU1RJTkdfUkVBRChtbWlvKTsKPiArCS8qIHJp bmcgc2hvdWxkIGJlIGlkbGUgYmVmb3JlIGlzc3VpbmcgYSBzeW5jIGZsdXNoKi8KPiArCVdBUk5f T04oKEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpID09IDApOwo+ICAKPiAtCS8q IEZsdXNoIHRoZSBUTEIgZm9yIHRoaXMgcGFnZSAqLwo+IC0JaWYgKElTX0dFTl9SQU5HRShkZXZf cHJpdiwgNiwgNykpIHsKPiAtCQlpOTE1X3JlZ190IHJlZyA9IFJJTkdfSU5TVFBNKGVuZ2luZS0+ bW1pb19iYXNlKTsKPiArCUk5MTVfV1JJVEUoaW5zdHBtLAo+ICsJCSAgIF9NQVNLRURfQklUX0VO QUJMRShJTlNUUE1fVExCX0lOVkFMSURBVEUgfAo+ICsJCQkJICAgICAgSU5TVFBNX1NZTkNfRkxV U0gpKTsKPiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAg ICBpbnN0cG0sIElOU1RQTV9TWU5DX0ZMVVNILCAwLAo+ICsJCQkJICAgIDEwMDApKQo+ICsJCURS TV9FUlJPUigiJXM6IHdhaXQgZm9yIFN5bmNGbHVzaCB0byBjb21wbGV0ZSBmb3IgVExCIGludmFs aWRhdGlvbiB0aW1lZCBvdXRcbiIsCj4gKwkJCSAgZW5naW5lLT5uYW1lKTsKPiArfQo+ICAKPiAt CQkvKiByaW5nIHNob3VsZCBiZSBpZGxlIGJlZm9yZSBpc3N1aW5nIGEgc3luYyBmbHVzaCovCj4g LQkJV0FSTl9PTigoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgPT0gMCk7Cj4g K3N0YXRpYyB2b2lkIHJpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICt7Cj4gKwlzZXRfaHdzcChlbmdpbmUsIGVuZ2luZS0+c3RhdHVzX3BhZ2Uu Z2d0dF9vZmZzZXQpOwo+ICsJc2V0X2h3c3RhbShlbmdpbmUsIH4wdSk7Cj4gIAo+IC0JCUk5MTVf V1JJVEUocmVnLAo+IC0JCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX1RMQl9JTlZBTElE QVRFIHwKPiAtCQkJCQkgICAgICBJTlNUUE1fU1lOQ19GTFVTSCkpOwo+IC0JCWlmIChpbnRlbF93 YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAtCQkJCQkgICAgcmVnLCBJTlNUUE1fU1lOQ19G TFVTSCwgMCwKPiAtCQkJCQkgICAgMTAwMCkpCj4gLQkJCURSTV9FUlJPUigiJXM6IHdhaXQgZm9y IFN5bmNGbHVzaCB0byBjb21wbGV0ZSBmb3IgVExCIGludmFsaWRhdGlvbiB0aW1lZCBvdXRcbiIs Cj4gLQkJCQkgIGVuZ2luZS0+bmFtZSk7Cj4gLQl9Cj4gKwlmbHVzaF9jc190bGIoZW5naW5lKTsK PiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiBAQCAtNTI5LDcgKzU1Miw3IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1v bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlpZiAoSFdTX05FRURTX1BIWVNJ Q0FMKGRldl9wcml2KSkKPiAgCQlyaW5nX3NldHVwX3BoeXNfc3RhdHVzX3BhZ2UoZW5naW5lKTsK PiAgCWVsc2UKPiAtCQlpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4gKwkJ cmluZ19zZXR1cF9zdGF0dXNfcGFnZShlbmdpbmUpOwo+ICAKPiAgCWludGVsX2VuZ2luZV9yZXNl dF9icmVhZGNydW1icyhlbmdpbmUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCj4gaW5kZXggMWFlNzRlNTc5Mzg2Li42YjQxYjljZTVmNWIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTkwMyw2ICs5MDMsOCBAQCBp bnQgaW50ZWxfaW5pdF92ZWJveF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwo+ICBpbnQgaW50ZWxfZW5naW5lX3N0b3BfY3Moc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPiAgdm9pZCBpbnRlbF9lbmdpbmVfY2FuY2VsX3N0b3BfY3Moc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgCj4gK3ZvaWQgaW50ZWxfZW5naW5lX3NldF9od3Nw X3dyaXRlbWFzayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBtYXNrKTsKPiAr Cj4gIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHU2NCBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVh ZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAKPiAtLSAKPiAyLjIw LjAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==