From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Avoid race of intel_crt_detect_hotplug() with HPD interrupt, v2 Date: Wed, 23 Sep 2015 16:57:17 +0200 Message-ID: <20150923145717.GF3383@phenom.ffwll.local> References: <20150902144619.GI1367@phenom.ffwll.local> <1443017727-27813-1-git-send-email-eich@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id B6DF86EDBB for ; Wed, 23 Sep 2015 07:54:26 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so73285169wic.1 for ; Wed, 23 Sep 2015 07:54:25 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1443017727-27813-1-git-send-email-eich@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Egbert Eich Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjMsIDIwMTUgYXQgMDQ6MTU6MjdQTSArMDIwMCwgRWdiZXJ0IEVpY2ggd3Jv dGU6Cj4gQW4gSFBEIGludGVycnVwdCBtYXkgZmlyZSB3aGlsZSB3ZSBhcmUgaW4gYSBmdW5jdGlv biB0aGF0IGNoYW5nZXMKPiB0aGUgUE9SVF9IT1RQTFVHX0VOIHJlZ2lzdGVyIC0gZXNwZWNpYWxs eSB3aGVuIGFuIEhQRCBpbnRlcnJ1cHQKPiBzdG9ybSBvY2N1cnMuCj4gU2luY2UgdGhlIGludGVy cnVwdCBoYW5kbGVyIGNoYW5nZXMgdGhlIGVuYWJsZWQgSFBEIGxpbmVzIHdoZW4gaXQKPiBkZXRl Y3RzIHN1Y2ggYSBzdG9ybSB0aGUgcmVhZC1tb2RpZnktd3JpdGUgY3ljbGVzIG1heSBpbnRlcmZl cmUuCj4gVG8gYXZvaWQgdGhpcywgc2hpbGVkIHRoZSBybXcgY3ljbGVzIHdpdGggSVJRIHNhdmUg c3BpbmxvY2tzLgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBJbXBsZW1lbnQgYSBmdW5jdGlv biB3aGljaCB0YWtlcyBjYXJlIG9mIGFjY2Vzc2luZyBQT1JUX0hPVFBMVUdfRU4uCj4gCj4gU2ln bmVkLW9mZi1ieTogRWdiZXJ0IEVpY2ggPGVpY2hAc3VzZS5kZT4KCkxvb2tzIHByZXR0eS4gUXVl dWVkIGZvciAtbmV4dCwgdGhhbmtzIGZvciB0aGUgcGF0Y2ggKGFzc3VtaW5nIHRoYXQgd2UKZG9u J3QgbmVlZCB0aGlzIGZvciAtZml4ZXMgc2luY2UgdGhlcmUncyBubyBidWcgcmVwb3J0IGxpbmtl ZCkuIFBsZWFzZQpjb3JyZWN0IG1lIHNvIEkgY2FuIGRyb3AgdGhpcyBhbmQgbGV0IEphbmkgcGlj ayBpdCB1cCBpbnN0ZWFkLgotRGFuaWVsCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggIHwgIDMgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgfCA2 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jIHwgMTEgKysrKy0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDU5 IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IGluZGV4IGJmMzNkNmUuLmE2Yjc1NzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtMjczNyw2ICsyNzM3LDkgQEAgaTkxNV9kaXNhYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCj4gIAo+ICB2b2lkIHZhbGxl eXZpZXdfZW5hYmxlX2Rpc3BsYXlfaXJxcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+ICB2b2lkIHZhbGxleXZpZXdfZGlzYWJsZV9kaXNwbGF5X2lycXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpOTE1X2hvdHBsdWdfaW50ZXJydXB0X3Vw ZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICB1aW50MzJf dCBtYXNrLAo+ICsJCQkJICAgdWludDMyX3QgYml0cyk7Cj4gIHZvaWQKPiAgaXJvbmxha2VfZW5h YmxlX2Rpc3BsYXlfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1h c2spOwo+ICB2b2lkCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggYThhYTc5Ny4uZmY4 NWVhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0xNjcsNiArMTY3LDQ0IEBA IHN0YXRpYyBjb25zdCB1MzIgaHBkX2J4dFtIUERfTlVNX1BJTlNdID0gewo+ICAKPiAgc3RhdGlj IHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgcG1faWlyKTsKPiAgCj4gKy8qIEZvciBkaXNwbGF5IGhvdHBsdWcgaW50ZXJydXB0 ICovCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICtpOTE1X2hvdHBsdWdfaW50ZXJydXB0X3VwZGF0 ZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICB1 aW50MzJfdCBtYXNrLAo+ICsJCQkJICAgICB1aW50MzJfdCBiaXRzKQo+ICt7Cj4gKwl1aW50MzJf dCB2YWw7Cj4gKwo+ICsJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ ICsJV0FSTl9PTihiaXRzICYgfm1hc2spOwo+ICsKPiArCXZhbCA9IEk5MTVfUkVBRChQT1JUX0hP VFBMVUdfRU4pOwo+ICsJdmFsICY9IH5tYXNrOwo+ICsJdmFsIHw9IGJpdHM7Cj4gKwlJOTE1X1dS SVRFKFBPUlRfSE9UUExVR19FTiwgdmFsKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGk5MTVfaG90 cGx1Z19pbnRlcnJ1cHRfdXBkYXRlIC0gdXBkYXRlIGhvdHBsdWcgaW50ZXJydXB0IGVuYWJsZQo+ ICsgKiBAZGV2X3ByaXY6IGRyaXZlciBwcml2YXRlCj4gKyAqIEBtYXNrOiBiaXRzIHRvIHVwZGF0 ZQo+ICsgKiBAYml0czogYml0cyB0byBlbmFibGUKPiArICogTk9URTogdGhlIEhQRCBlbmFibGUg Yml0cyBhcmUgbW9kaWZpZWQgYm90aCBpbnNpZGUgYW5kIG91dHNpZGUKPiArICogb2YgYW4gaW50 ZXJydXB0IGNvbnRleHQuIFRvIGF2b2lkIHRoYXQgcmVhZC1tb2RpZnktd3JpdGUgY3ljbGVzCj4g KyAqIGludGVyZmVyLCB0aGVzZSBiaXRzIGFyZSBwcm90ZWN0ZWQgYnkgYSBzcGlubG9jay4gU2lu Y2UgdGhpcwo+ICsgKiBmdW5jdGlvbiBpcyB1c3VhbGx5IG5vdCBjYWxsZWQgZnJvbSBhIGNvbnRl eHQgd2hlcmUgdGhlIGxvY2sgaXMKPiArICogaGVsZCBhbHJlYWR5LCB0aGlzIGZ1bmN0aW9uIGFj cXVpcmVzIHRoZSBsb2NrIGl0c2VsZi4gQSBub24tbG9ja2luZwo+ICsgKiB2ZXJzaW9uIGlzIGFs c28gYXZhaWxhYmxlLgo+ICsgKi8KPiArdm9pZCBpOTE1X2hvdHBsdWdfaW50ZXJydXB0X3VwZGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICB1aW50MzJfdCBt YXNrLAo+ICsJCQkJICAgdWludDMyX3QgYml0cykKPiArewo+ICsJc3Bpbl9sb2NrX2lycSgmZGV2 X3ByaXYtPmlycV9sb2NrKTsKPiArCWk5MTVfaG90cGx1Z19pbnRlcnJ1cHRfdXBkYXRlX2xvY2tl ZChkZXZfcHJpdiwgbWFzaywgYml0cyk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5p cnFfbG9jayk7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBpbGtfdXBkYXRlX2Rpc3BsYXlfaXJxIC0g dXBkYXRlIERFSU1SCj4gICAqIEBkZXZfcHJpdjogZHJpdmVyIHByaXZhdGUKPiBAQCAtMzA3NCw3 ICszMTEyLDcgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Jlc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gIAo+IC0J STkxNV9XUklURShQT1JUX0hPVFBMVUdfRU4sIDApOwo+ICsJaTkxNV9ob3RwbHVnX2ludGVycnVw dF91cGRhdGUoZGV2X3ByaXYsIDB4RkZGRkZGRkYsIDApOwo+ICAJSTkxNV9XUklURShQT1JUX0hP VFBMVUdfU1RBVCwgSTkxNV9SRUFEKFBPUlRfSE9UUExVR19TVEFUKSk7Cj4gIAo+ICAJZm9yX2Vh Y2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiBAQCAtMzQ5MCw3ICszNTI4LDcgQEAgc3RhdGljIHZv aWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgewo+ICAJZGV2X3ByaXYtPmlycV9tYXNrID0gfjA7Cj4gIAo+IC0JSTkxNV9X UklURShQT1JUX0hPVFBMVUdfRU4sIDApOwo+ICsJaTkxNV9ob3RwbHVnX2ludGVycnVwdF91cGRh dGUoZGV2X3ByaXYsIDB4ZmZmZmZmZmYsIDApOwo+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9UUExV R19FTik7Cj4gIAo+ICAJSTkxNV9XUklURShWTFZfSUlSLCAweGZmZmZmZmZmKTsKPiBAQCAtMzg2 NCw3ICszOTAyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHJt X2RldmljZSAqIGRldikKPiAgCWludCBwaXBlOwo+ICAKPiAgCWlmIChJOTE1X0hBU19IT1RQTFVH KGRldikpIHsKPiAtCQlJOTE1X1dSSVRFKFBPUlRfSE9UUExVR19FTiwgMCk7Cj4gKwkJaTkxNV9o b3RwbHVnX2ludGVycnVwdF91cGRhdGUoZGV2X3ByaXYsIDB4ZmZmZmZmZmYsIDApOwo+ICAJCUk5 MTVfV1JJVEUoUE9SVF9IT1RQTFVHX1NUQVQsIEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfU1RBVCkp Owo+ICAJfQo+ICAKPiBAQCAtMzg5OCw3ICszOTM2LDcgQEAgc3RhdGljIGludCBpOTE1X2lycV9w b3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCUk5MTVfVVNFUl9JTlRFUlJV UFQ7Cj4gIAo+ICAJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2KSkgewo+IC0JCUk5MTVfV1JJVEUo UE9SVF9IT1RQTFVHX0VOLCAwKTsKPiArCQlpOTE1X2hvdHBsdWdfaW50ZXJydXB0X3VwZGF0ZShk ZXZfcHJpdiwgMHhmZmZmZmZmZiwgMCk7Cj4gIAkJUE9TVElOR19SRUFEKFBPUlRfSE9UUExVR19F Tik7Cj4gIAo+ICAJCS8qIEVuYWJsZSBpbiBJRVIuLi4gKi8KPiBAQCAtNDA2MCw3ICs0MDk4LDcg QEAgc3RhdGljIHZvaWQgaTkxNV9pcnFfdW5pbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICogZGV2 KQo+ICAJaW50IHBpcGU7Cj4gIAo+ICAJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2KSkgewo+IC0J CUk5MTVfV1JJVEUoUE9SVF9IT1RQTFVHX0VOLCAwKTsKPiArCQlpOTE1X2hvdHBsdWdfaW50ZXJy dXB0X3VwZGF0ZShkZXZfcHJpdiwgMHhmZmZmZmZmZiwgMCk7Cj4gIAkJSTkxNV9XUklURShQT1JU X0hPVFBMVUdfU1RBVCwgSTkxNV9SRUFEKFBPUlRfSE9UUExVR19TVEFUKSk7Cj4gIAl9Cj4gIAo+ IEBAIC00MDgxLDcgKzQxMTksNyBAQCBzdGF0aWMgdm9pZCBpOTY1X2lycV9wcmVpbnN0YWxsKHN0 cnVjdCBkcm1fZGV2aWNlICogZGV2KQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWludCBwaXBlOwo+ICAKPiAtCUk5MTVfV1JJVEUo UE9SVF9IT1RQTFVHX0VOLCAwKTsKPiArCWk5MTVfaG90cGx1Z19pbnRlcnJ1cHRfdXBkYXRlKGRl dl9wcml2LCAweGZmZmZmZmZmLCAwKTsKPiAgCUk5MTVfV1JJVEUoUE9SVF9IT1RQTFVHX1NUQVQs IEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfU1RBVCkpOwo+ICAKPiAgCUk5MTVfV1JJVEUoSFdTVEFN LCAweGVmZmUpOwo+IEBAIC00MTQyLDcgKzQxODAsNyBAQCBzdGF0aWMgaW50IGk5NjVfaXJxX3Bv c3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlJOTE1X1dSSVRFKElFUiwgZW5h YmxlX21hc2spOwo+ICAJUE9TVElOR19SRUFEKElFUik7Cj4gIAo+IC0JSTkxNV9XUklURShQT1JU X0hPVFBMVUdfRU4sIDApOwo+ICsJaTkxNV9ob3RwbHVnX2ludGVycnVwdF91cGRhdGUoZGV2X3By aXYsIDB4ZmZmZmZmZmYsIDApOwo+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9UUExVR19FTik7Cj4g IAo+ICAJaTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChkZXYpOwo+IEBAIC00MTU3LDIyICs0MTk1 LDIyIEBAIHN0YXRpYyB2b2lkIGk5MTVfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAKPiAgCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAg Cj4gLQlob3RwbHVnX2VuID0gSTkxNV9SRUFEKFBPUlRfSE9UUExVR19FTik7Cj4gLQlob3RwbHVn X2VuICY9IH5IT1RQTFVHX0lOVF9FTl9NQVNLOwo+ICAJLyogTm90ZSBIRE1JIGFuZCBEUCBzaGFy ZSBob3RwbHVnIGJpdHMgKi8KPiAgCS8qIGVuYWJsZSBiaXRzIGFyZSB0aGUgc2FtZSBmb3IgYWxs IGdlbmVyYXRpb25zICovCj4gLQlob3RwbHVnX2VuIHw9IGludGVsX2hwZF9lbmFibGVkX2lycXMo ZGV2LCBocGRfbWFza19pOTE1KTsKPiArCWhvdHBsdWdfZW4gPSBpbnRlbF9ocGRfZW5hYmxlZF9p cnFzKGRldiwgaHBkX21hc2tfaTkxNSk7Cj4gIAkvKiBQcm9ncmFtbWluZyB0aGUgQ1JUIGRldGVj dGlvbiBwYXJhbWV0ZXJzIHRlbmRzCj4gIAkgICB0byBnZW5lcmF0ZSBhIHNwdXJpb3VzIGhvdHBs dWcgZXZlbnQgYWJvdXQgdGhyZWUKPiAgCSAgIHNlY29uZHMgbGF0ZXIuICBTbyBqdXN0IGRvIGl0 IG9uY2UuCj4gIAkqLwo+ICAJaWYgKElTX0c0WChkZXYpKQo+ICAJCWhvdHBsdWdfZW4gfD0gQ1JU X0hPVFBMVUdfQUNUSVZBVElPTl9QRVJJT0RfNjQ7Cj4gLQlob3RwbHVnX2VuICY9IH5DUlRfSE9U UExVR19WT0xUQUdFX0NPTVBBUkVfTUFTSzsKPiAgCWhvdHBsdWdfZW4gfD0gQ1JUX0hPVFBMVUdf Vk9MVEFHRV9DT01QQVJFXzUwOwo+ICAKPiAgCS8qIElnbm9yZSBUViBzaW5jZSBpdCdzIGJ1Z2d5 ICovCj4gLQlJOTE1X1dSSVRFKFBPUlRfSE9UUExVR19FTiwgaG90cGx1Z19lbik7Cj4gKwlpOTE1 X2hvdHBsdWdfaW50ZXJydXB0X3VwZGF0ZV9sb2NrZWQoZGV2X3ByaXYsCj4gKwkJCQkgICAgICAo SE9UUExVR19JTlRfRU5fTUFTSwo+ICsJCQkJICAgICAgIHwgQ1JUX0hPVFBMVUdfVk9MVEFHRV9D T01QQVJFX01BU0spLAo+ICsJCQkJICAgICAgaG90cGx1Z19lbik7Cj4gIH0KPiAgCj4gIHN0YXRp YyBpcnFyZXR1cm5fdCBpOTY1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiBAQCAt NDI4NSw3ICs0MzIzLDcgQEAgc3RhdGljIHZvaWQgaTk2NV9pcnFfdW5pbnN0YWxsKHN0cnVjdCBk cm1fZGV2aWNlICogZGV2KQo+ICAJaWYgKCFkZXZfcHJpdikKPiAgCQlyZXR1cm47Cj4gIAo+IC0J STkxNV9XUklURShQT1JUX0hPVFBMVUdfRU4sIDApOwo+ICsJaTkxNV9ob3RwbHVnX2ludGVycnVw dF91cGRhdGUoZGV2X3ByaXYsIDB4ZmZmZmZmZmYsIDApOwo+ICAJSTkxNV9XUklURShQT1JUX0hP VFBMVUdfU1RBVCwgSTkxNV9SRUFEKFBPUlRfSE9UUExVR19TVEFUKSk7Cj4gIAo+ICAJSTkxNV9X UklURShIV1NUQU0sIDB4ZmZmZmZmZmYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gaW5k ZXggYWY1ZTQzYi4uNmNlMzhlMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jcnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gQEAg LTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0ZWN0X2hvdHBsdWcoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXUzMiBob3RwbHVnX2VuLCBvcmlnLCBzdGF0Owo+ ICsJdTMyIHN0YXQ7Cj4gIAlib29sIHJldCA9IGZhbHNlOwo+ICAJaW50IGksIHRyaWVzID0gMDsK PiAgCj4gQEAgLTM5NSwxMiArMzk1LDEyIEBAIHN0YXRpYyBib29sIGludGVsX2NydF9kZXRlY3Rf aG90cGx1ZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCXRyaWVzID0gMjsK PiAgCWVsc2UKPiAgCQl0cmllcyA9IDE7Cj4gLQlob3RwbHVnX2VuID0gb3JpZyA9IEk5MTVfUkVB RChQT1JUX0hPVFBMVUdfRU4pOwo+IC0JaG90cGx1Z19lbiB8PSBDUlRfSE9UUExVR19GT1JDRV9E RVRFQ1Q7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IHRyaWVzIDsgaSsrKSB7Cj4gIAkJLyogdHVy biBvbiB0aGUgRk9SQ0VfREVURUNUICovCj4gLQkJSTkxNV9XUklURShQT1JUX0hPVFBMVUdfRU4s IGhvdHBsdWdfZW4pOwo+ICsJCWk5MTVfaG90cGx1Z19pbnRlcnJ1cHRfdXBkYXRlKGRldl9wcml2 LAo+ICsJCQkJCSAgICAgIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVCwKPiArCQkJCQkgICAgICBD UlRfSE9UUExVR19GT1JDRV9ERVRFQ1QpOwo+ICAJCS8qIHdhaXQgZm9yIEZPUkNFX0RFVEVDVCB0 byBnbyBvZmYgKi8KPiAgCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfRU4p ICYKPiAgCQkJICAgICAgQ1JUX0hPVFBMVUdfRk9SQ0VfREVURUNUKSA9PSAwLAo+IEBAIC00MTUs OCArNDE1LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X2RldGVjdF9ob3RwbHVnKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAkvKiBjbGVhciB0aGUgaW50ZXJydXB0IHdlIGp1 c3QgZ2VuZXJhdGVkLCBpZiBhbnkgKi8KPiAgCUk5MTVfV1JJVEUoUE9SVF9IT1RQTFVHX1NUQVQs IENSVF9IT1RQTFVHX0lOVF9TVEFUVVMpOwo+ICAKPiAtCS8qIGFuZCBwdXQgdGhlIGJpdHMgYmFj ayAqLwo+IC0JSTkxNV9XUklURShQT1JUX0hPVFBMVUdfRU4sIG9yaWcpOwo+ICsJaTkxNV9ob3Rw bHVnX2ludGVycnVwdF91cGRhdGUoZGV2X3ByaXYsIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVCwg MCk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IC0tIAo+IDEuOC40LjUKPiAKCi0tIApEYW5p ZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxv Zy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=