From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 41/70] drm/i915: Tidy gen8 IRQ handler Date: Fri, 10 Apr 2015 10:36:49 +0200 Message-ID: <20150410083649.GA12038@phenom.ffwll.local> References: <1428420094-18352-1-git-send-email-chris@chris-wilson.co.uk> <1428420094-18352-42-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by gabe.freedesktop.org (Postfix) with ESMTP id 67F966E8CD for ; Fri, 10 Apr 2015 01:34:51 -0700 (PDT) Received: by widdi4 with SMTP id di4so119839047wid.0 for ; Fri, 10 Apr 2015 01:34:50 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1428420094-18352-42-git-send-email-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 T24gVHVlLCBBcHIgMDcsIDIwMTUgYXQgMDQ6MjE6MDVQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFJlbW92ZSBzb21lIG5lZWRsZXNzIHZhcmlhYmxlcyBhbmQgcGFyYW1ldGVyIHBhc3Np bmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+CgpNZXJnZWQgMyBwYXRjaGVzIHVwIHRvIHRoaXMgb25lLCB0aGFua3MuCi1EYW5pZWwK Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCAxMTMgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDkgaW5z ZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4g aW5kZXggYzJjODBiZjQ5MGM2Li40NmJjYmZmODk3NjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKPiBAQCAtOTg1LDggKzk4NSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Jwc19jaGFu Z2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVybjsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAt CQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiArc3RhdGljIHZvaWQgbm90aWZ5X3Jp bmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgewo+ICAJaWYgKCFpbnRlbF9yaW5n X2luaXRpYWxpemVkKHJpbmcpKQo+ICAJCXJldHVybjsKPiBAQCAtMTI0OCw5ICsxMjQ3LDkgQEAg c3RhdGljIHZvaWQgaWxrX2d0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IHsKPiAgCWlmIChndF9paXIgJgo+ICAJICAgIChHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgfCBH VF9SRU5ERVJfUElQRUNUTF9OT1RJRllfSU5URVJSVVBUKSkKPiAtCQlub3RpZnlfcmluZyhkZXYs ICZkZXZfcHJpdi0+cmluZ1tSQ1NdKTsKPiArCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdb UkNTXSk7Cj4gIAlpZiAoZ3RfaWlyICYgSUxLX0JTRF9VU0VSX0lOVEVSUlVQVCkKPiAtCQlub3Rp ZnlfcmluZyhkZXYsICZkZXZfcHJpdi0+cmluZ1tWQ1NdKTsKPiArCQlub3RpZnlfcmluZygmZGV2 X3ByaXYtPnJpbmdbVkNTXSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNuYl9ndF9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IEBAIC0xMjYwLDExICsxMjU5LDExIEBAIHN0 YXRpYyB2b2lkIHNuYl9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAK PiAgCWlmIChndF9paXIgJgo+ICAJICAgIChHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgfCBHVF9S RU5ERVJfUElQRUNUTF9OT1RJRllfSU5URVJSVVBUKSkKPiAtCQlub3RpZnlfcmluZyhkZXYsICZk ZXZfcHJpdi0+cmluZ1tSQ1NdKTsKPiArCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNT XSk7Cj4gIAlpZiAoZ3RfaWlyICYgR1RfQlNEX1VTRVJfSU5URVJSVVBUKQo+IC0JCW5vdGlmeV9y aW5nKGRldiwgJmRldl9wcml2LT5yaW5nW1ZDU10pOwo+ICsJCW5vdGlmeV9yaW5nKCZkZXZfcHJp di0+cmluZ1tWQ1NdKTsKPiAgCWlmIChndF9paXIgJiBHVF9CTFRfVVNFUl9JTlRFUlJVUFQpCj4g LQkJbm90aWZ5X3JpbmcoZGV2LCAmZGV2X3ByaXYtPnJpbmdbQkNTXSk7Cj4gKwkJbm90aWZ5X3Jp bmcoJmRldl9wcml2LT5yaW5nW0JDU10pOwo+ICAKPiAgCWlmIChndF9paXIgJiAoR1RfQkxUX0NT X0VSUk9SX0lOVEVSUlVQVCB8Cj4gIAkJICAgICAgR1RfQlNEX0NTX0VSUk9SX0lOVEVSUlVQVCB8 Cj4gQEAgLTEyNzUsNjMgKzEyNzQsNjUgQEAgc3RhdGljIHZvaWQgc25iX2d0X2lycV9oYW5kbGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaXZ5YnJpZGdlX3Bhcml0eV9lcnJvcl9pcnFf aGFuZGxlcihkZXYsIGd0X2lpcik7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBnZW44 X2d0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgICAgICAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZ2Vu OF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgICAgICAgdTMyIG1hc3Rlcl9jdGwpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmc7Cj4gLQl1MzIgcmNzLCBiY3MsIHZjczsKPiAtCXVpbnQzMl90IHRtcCA9IDA7Cj4gIAlp cnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsKPiAgCj4gIAlpZiAobWFzdGVyX2N0bCAmIChHRU44 X0dUX1JDU19JUlEgfCBHRU44X0dUX0JDU19JUlEpKSB7Cj4gLQkJdG1wID0gSTkxNV9SRUFEX0ZX KEdFTjhfR1RfSUlSKDApKTsKPiArCQl1MzIgdG1wID0gSTkxNV9SRUFEX0ZXKEdFTjhfR1RfSUlS KDApKTsKPiAgCQlpZiAodG1wKSB7Cj4gIAkJCUk5MTVfV1JJVEVfRlcoR0VOOF9HVF9JSVIoMCks IHRtcCk7Cj4gIAkJCXJldCA9IElSUV9IQU5ETEVEOwo+ICAKPiAtCQkJcmNzID0gdG1wID4+IEdF TjhfUkNTX0lSUV9TSElGVDsKPiAtCQkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tSQ1NdOwo+IC0J CQlpZiAocmNzICYgR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUKQo+IC0JCQkJaW50ZWxfbHJj X2lycV9oYW5kbGVyKHJpbmcpOwo+IC0JCQlpZiAocmNzICYgR1RfUkVOREVSX1VTRVJfSU5URVJS VVBUKQo+IC0JCQkJbm90aWZ5X3JpbmcoZGV2LCByaW5nKTsKPiAtCj4gLQkJCWJjcyA9IHRtcCA+ PiBHRU44X0JDU19JUlFfU0hJRlQ7Cj4gLQkJCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbQkNTXTsK PiAtCQkJaWYgKGJjcyAmIEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCkKPiAtCQkJCWludGVs X2xyY19pcnFfaGFuZGxlcihyaW5nKTsKPiAtCQkJaWYgKGJjcyAmIEdUX1JFTkRFUl9VU0VSX0lO VEVSUlVQVCkKPiAtCQkJCW5vdGlmeV9yaW5nKGRldiwgcmluZyk7Cj4gKwkJCWlmICh0bXAgJiAo R1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9TSElGVCkpCj4gKwkJ CQlpbnRlbF9scmNfaXJxX2hhbmRsZXIoJmRldl9wcml2LT5yaW5nW1JDU10pOwo+ICsJCQlpZiAo dG1wICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X1JDU19JUlFfU0hJRlQpKQo+ ICsJCQkJbm90aWZ5X3JpbmcoJmRldl9wcml2LT5yaW5nW1JDU10pOwo+ICsKPiArCQkJaWYgKHRt cCAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9CQ1NfSVJRX1NISUZUKSkK PiArCQkJCWludGVsX2xyY19pcnFfaGFuZGxlcigmZGV2X3ByaXYtPnJpbmdbQkNTXSk7Cj4gKwkJ CWlmICh0bXAgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfQkNTX0lSUV9TSElG VCkpCj4gKwkJCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbQkNTXSk7Cj4gIAkJfSBlbHNl Cj4gIAkJCURSTV9FUlJPUigiVGhlIG1hc3RlciBjb250cm9sIGludGVycnVwdCBsaWVkIChHVDAp IVxuIik7Cj4gIAl9Cj4gIAo+ICAJaWYgKG1hc3Rlcl9jdGwgJiAoR0VOOF9HVF9WQ1MxX0lSUSB8 IEdFTjhfR1RfVkNTMl9JUlEpKSB7Cj4gLQkJdG1wID0gSTkxNV9SRUFEX0ZXKEdFTjhfR1RfSUlS KDEpKTsKPiArCQl1MzIgdG1wID0gSTkxNV9SRUFEX0ZXKEdFTjhfR1RfSUlSKDEpKTsKPiAgCQlp ZiAodG1wKSB7Cj4gIAkJCUk5MTVfV1JJVEVfRlcoR0VOOF9HVF9JSVIoMSksIHRtcCk7Cj4gIAkJ CXJldCA9IElSUV9IQU5ETEVEOwo+ICAKPiAtCQkJdmNzID0gdG1wID4+IEdFTjhfVkNTMV9JUlFf U0hJRlQ7Cj4gLQkJCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdbVkNTXTsKPiAtCQkJaWYgKHZjcyAm IEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCkKPiAtCQkJCWludGVsX2xyY19pcnFfaGFuZGxl cihyaW5nKTsKPiAtCQkJaWYgKHZjcyAmIEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCkKPiAtCQkJ CW5vdGlmeV9yaW5nKGRldiwgcmluZyk7Cj4gLQo+IC0JCQl2Y3MgPSB0bXAgPj4gR0VOOF9WQ1My X0lSUV9TSElGVDsKPiAtCQkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tWQ1MyXTsKPiAtCQkJaWYg KHZjcyAmIEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCkKPiAtCQkJCWludGVsX2xyY19pcnFf aGFuZGxlcihyaW5nKTsKPiAtCQkJaWYgKHZjcyAmIEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCkK PiAtCQkJCW5vdGlmeV9yaW5nKGRldiwgcmluZyk7Cj4gKwkJCWlmICh0bXAgJiAoR1RfQ09OVEVY VF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfVkNTMV9JUlFfU0hJRlQpKQo+ICsJCQkJaW50ZWxf bHJjX2lycV9oYW5kbGVyKCZkZXZfcHJpdi0+cmluZ1tWQ1NdKTsKPiArCQkJaWYgKHRtcCAmIChH VF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MxX0lSUV9TSElGVCkpCj4gKwkJCQlu b3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbVkNTXSk7Cj4gKwo+ICsJCQlpZiAodG1wICYgKEdU X0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzJfSVJRX1NISUZUKSkKPiArCQkJ CWludGVsX2xyY19pcnFfaGFuZGxlcigmZGV2X3ByaXYtPnJpbmdbVkNTMl0pOwo+ICsJCQlpZiAo dG1wICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzJfSVJRX1NISUZUKSkK PiArCQkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tWQ1MyXSk7Cj4gIAkJfSBlbHNlCj4g IAkJCURSTV9FUlJPUigiVGhlIG1hc3RlciBjb250cm9sIGludGVycnVwdCBsaWVkIChHVDEpIVxu Iik7Cj4gIAl9Cj4gIAo+ICsJaWYgKG1hc3Rlcl9jdGwgJiBHRU44X0dUX1ZFQ1NfSVJRKSB7Cj4g KwkJdTMyIHRtcCA9IEk5MTVfUkVBRF9GVyhHRU44X0dUX0lJUigzKSk7Cj4gKwkJaWYgKHRtcCkg ewo+ICsJCQlJOTE1X1dSSVRFX0ZXKEdFTjhfR1RfSUlSKDMpLCB0bXApOwo+ICsJCQlyZXQgPSBJ UlFfSEFORExFRDsKPiArCj4gKwkJCWlmICh0bXAgJiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJS VVBUIDw8IEdFTjhfVkVDU19JUlFfU0hJRlQpKQo+ICsJCQkJaW50ZWxfbHJjX2lycV9oYW5kbGVy KCZkZXZfcHJpdi0+cmluZ1tWRUNTXSk7Cj4gKwkJCWlmICh0bXAgJiAoR1RfUkVOREVSX1VTRVJf SU5URVJSVVBUIDw8IEdFTjhfVkVDU19JUlFfU0hJRlQpKQo+ICsJCQkJbm90aWZ5X3JpbmcoJmRl dl9wcml2LT5yaW5nW1ZFQ1NdKTsKPiArCQl9IGVsc2UKPiArCQkJRFJNX0VSUk9SKCJUaGUgbWFz dGVyIGNvbnRyb2wgaW50ZXJydXB0IGxpZWQgKEdUMykhXG4iKTsKPiArCX0KPiArCj4gIAlpZiAo bWFzdGVyX2N0bCAmIEdFTjhfR1RfUE1fSVJRKSB7Cj4gLQkJdG1wID0gSTkxNV9SRUFEX0ZXKEdF TjhfR1RfSUlSKDIpKTsKPiArCQl1MzIgdG1wID0gSTkxNV9SRUFEX0ZXKEdFTjhfR1RfSUlSKDIp KTsKPiAgCQlpZiAodG1wICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpIHsKPiAgCQkJSTkxNV9X UklURV9GVyhHRU44X0dUX0lJUigyKSwKPiAgCQkJCSAgICAgIHRtcCAmIGRldl9wcml2LT5wbV9y cHNfZXZlbnRzKTsKPiBAQCAtMTM0MSwyMiArMTM0Miw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBn ZW44X2d0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCURSTV9FUlJP UigiVGhlIG1hc3RlciBjb250cm9sIGludGVycnVwdCBsaWVkIChQTSkhXG4iKTsKPiAgCX0KPiAg Cj4gLQlpZiAobWFzdGVyX2N0bCAmIEdFTjhfR1RfVkVDU19JUlEpIHsKPiAtCQl0bXAgPSBJOTE1 X1JFQURfRlcoR0VOOF9HVF9JSVIoMykpOwo+IC0JCWlmICh0bXApIHsKPiAtCQkJSTkxNV9XUklU RV9GVyhHRU44X0dUX0lJUigzKSwgdG1wKTsKPiAtCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gLQo+ IC0JCQl2Y3MgPSB0bXAgPj4gR0VOOF9WRUNTX0lSUV9TSElGVDsKPiAtCQkJcmluZyA9ICZkZXZf cHJpdi0+cmluZ1tWRUNTXTsKPiAtCQkJaWYgKHZjcyAmIEdUX0NPTlRFWFRfU1dJVENIX0lOVEVS UlVQVCkKPiAtCQkJCWludGVsX2xyY19pcnFfaGFuZGxlcihyaW5nKTsKPiAtCQkJaWYgKHZjcyAm IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCkKPiAtCQkJCW5vdGlmeV9yaW5nKGRldiwgcmluZyk7 Cj4gLQkJfSBlbHNlCj4gLQkJCURSTV9FUlJPUigiVGhlIG1hc3RlciBjb250cm9sIGludGVycnVw dCBsaWVkIChHVDMpIVxuIik7Cj4gLQl9Cj4gLQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBA QCAtMTY1MSw3ICsxNjM2LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKQo+ICAKPiAgCWlmIChI QVNfVkVCT1goZGV2X3ByaXYtPmRldikpIHsKPiAgCQlpZiAocG1faWlyICYgUE1fVkVCT1hfVVNF Ul9JTlRFUlJVUFQpCj4gLQkJCW5vdGlmeV9yaW5nKGRldl9wcml2LT5kZXYsICZkZXZfcHJpdi0+ cmluZ1tWRUNTXSk7Cj4gKwkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tWRUNTXSk7Cj4g IAo+ICAJCWlmIChwbV9paXIgJiBQTV9WRUJPWF9DU19FUlJPUl9JTlRFUlJVUFQpCj4gIAkJCURS TV9ERUJVRygiQ29tbWFuZCBwYXJzZXIgZXJyb3IsIHBtX2lpciAweCUwOHhcbiIsIHBtX2lpcik7 Cj4gQEAgLTE4NDUsNyArMTgzMCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjaGVycnl2aWV3X2ly cV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiAgCQkJSTkxNV9XUklURShWTFZfSUlSLCBp aXIpOwo+ICAJCX0KPiAgCj4gLQkJZ2VuOF9ndF9pcnFfaGFuZGxlcihkZXYsIGRldl9wcml2LCBt YXN0ZXJfY3RsKTsKPiArCQlnZW44X2d0X2lycV9oYW5kbGVyKGRldl9wcml2LCBtYXN0ZXJfY3Rs KTsKPiAgCj4gIAkJLyogQ2FsbCByZWdhcmRsZXNzLCBhcyBzb21lIHN0YXR1cyBiaXRzIG1pZ2h0 IG5vdCBiZQo+ICAJCSAqIHNpZ25hbGxlZCBpbiBpaXIgKi8KPiBAQCAtMjE4Nyw3ICsyMTcyLDcg QEAgc3RhdGljIGlycXJldHVybl90IGdlbjhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJn KQo+ICAKPiAgCS8qIEZpbmQsIGNsZWFyLCB0aGVuIHByb2Nlc3MgZWFjaCBzb3VyY2Ugb2YgaW50 ZXJydXB0ICovCj4gIAo+IC0JcmV0ID0gZ2VuOF9ndF9pcnFfaGFuZGxlcihkZXYsIGRldl9wcml2 LCBtYXN0ZXJfY3RsKTsKPiArCXJldCA9IGdlbjhfZ3RfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIG1h c3Rlcl9jdGwpOwo+ICAKPiAgCWlmIChtYXN0ZXJfY3RsICYgR0VOOF9ERV9NSVNDX0lSUSkgewo+ ICAJCXRtcCA9IEk5MTVfUkVBRChHRU44X0RFX01JU0NfSUlSKTsKPiBAQCAtMzY5Miw3ICszNjc3 LDcgQEAgc3RhdGljIGlycXJldHVybl90IGk4eHhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKQo+ICAJCW5ld19paXIgPSBJOTE1X1JFQUQxNihJSVIpOyAvKiBGbHVzaCBwb3N0ZWQgd3Jp dGVzICovCj4gIAo+ICAJCWlmIChpaXIgJiBJOTE1X1VTRVJfSU5URVJSVVBUKQo+IC0JCQlub3Rp ZnlfcmluZyhkZXYsICZkZXZfcHJpdi0+cmluZ1tSQ1NdKTsKPiArCQkJbm90aWZ5X3JpbmcoJmRl dl9wcml2LT5yaW5nW1JDU10pOwo+ICAKPiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBl KSB7Cj4gIAkJCWludCBwbGFuZSA9IHBpcGU7Cj4gQEAgLTM4ODMsNyArMzg2OCw3IEBAIHN0YXRp YyBpcnFyZXR1cm5fdCBpOTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiAgCQlu ZXdfaWlyID0gSTkxNV9SRUFEKElJUik7IC8qIEZsdXNoIHBvc3RlZCB3cml0ZXMgKi8KPiAgCj4g IAkJaWYgKGlpciAmIEk5MTVfVVNFUl9JTlRFUlJVUFQpCj4gLQkJCW5vdGlmeV9yaW5nKGRldiwg JmRldl9wcml2LT5yaW5nW1JDU10pOwo+ICsJCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdb UkNTXSk7Cj4gIAo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiAgCQkJaW50 IHBsYW5lID0gcGlwZTsKPiBAQCAtNDExMCw5ICs0MDk1LDkgQEAgc3RhdGljIGlycXJldHVybl90 IGk5NjVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAJCW5ld19paXIgPSBJOTE1 X1JFQUQoSUlSKTsgLyogRmx1c2ggcG9zdGVkIHdyaXRlcyAqLwo+ICAKPiAgCQlpZiAoaWlyICYg STkxNV9VU0VSX0lOVEVSUlVQVCkKPiAtCQkJbm90aWZ5X3JpbmcoZGV2LCAmZGV2X3ByaXYtPnJp bmdbUkNTXSk7Cj4gKwkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tSQ1NdKTsKPiAgCQlp ZiAoaWlyICYgSTkxNV9CU0RfVVNFUl9JTlRFUlJVUFQpCj4gLQkJCW5vdGlmeV9yaW5nKGRldiwg JmRldl9wcml2LT5yaW5nW1ZDU10pOwo+ICsJCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdb VkNTXSk7Cj4gIAo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiAgCQkJaWYg KHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTICYm Cj4gLS0gCj4gMi4xLjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==