From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 21/23] drm/i915: Convert intel_pipe_will_have_type() to using atomic state Date: Wed, 4 Mar 2015 17:03:37 +0100 Message-ID: <20150304160337.GF18775@phenom.ffwll.local> References: <1425388937-1247-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1425388937-1247-22-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTP id ADE926E68A for ; Wed, 4 Mar 2015 08:02:30 -0800 (PST) Received: by wggx12 with SMTP id x12so47641897wgg.6 for ; Wed, 04 Mar 2015 08:02:29 -0800 (PST) Content-Disposition: inline In-Reply-To: <1425388937-1247-22-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMDMsIDIwMTUgYXQgMDM6MjI6MTVQTSArMDIwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFBhc3MgYSBjcnRjX3N0YXRlIHRvIGl0IGFuZCBmaW5kIHdo ZXRoZXIgdGhlIHBpcGUgaGFzIGFuIGVuY29kZXIgb2YgYQo+IGdpdmVuIHR5cGUgYnkgbG9va2lu ZyBhdCB0aGUgZHJtX2F0b21pY19zdGF0ZSB0aGUgY3J0Y19zdGF0ZSBwb2ludHMgdG8uCj4gCj4g Tm90ZSB0aGF0IGlzIHBvc3NpYmxlIHRvIHJlYWNoIGk5eHhfZ2V0X3JlZmNsaygpIHdpdGhvdXQg YSBwcm9wZXIgYXRvbWljCj4gc3RhdGUsIHNpbmNlIGluIHRoZSBmdW5jdGlvbiB2bHZfZm9yY2Vf cGxsX29uKCkgYSBtaW5pbWFsbHkgaW5pdGlhbGl6ZWQKPiBjcnRjX3N0YXRlIGlzIGFsbG9jYXRl ZCBpbiB0aGUgc3RhY2suIFdpdGggdGhlIGN1cnJlbnQgY29kZSwgaXQgaXMgbm90Cj4gcG9zc2li bGUgdG8gZW5kIHVwIGluIGEgY2FsbCB0byBpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKCkgd2l0 aCB0aGF0Cj4gYm9ndXMgYXRvbWljIHN0YXRlLiBUbyBhdm9pZCBmdXR1cmUgcHJvYmxlbXMsIGEg Y29tbWVudCBpcyBhZGRlZCB0byB3YXJuCj4gcGVvcGxlIGNoYW5naW5nIHRoYXQgY29kZS4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNl bHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgMiBm aWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwYzZiYTJkLi5hYWI0NDIxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gQEAgLTU0MSw3ICs1NDEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlz cGxheV9mdW5jcyB7Cj4gIAkgKiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFp bHVyZS4KPiAgCSAqLwo+ICAJYm9vbCAoKmZpbmRfZHBsbCkoY29uc3Qgc3RydWN0IGludGVsX2xp bWl0ICpsaW1pdCwKPiAtCQkJICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICBpbnQgdGFyZ2V0LCBpbnQg cmVmY2xrLAo+ICAJCQkgIHN0cnVjdCBkcGxsICptYXRjaF9jbG9jaywKPiAgCQkJICBzdHJ1Y3Qg ZHBsbCAqYmVzdF9jbG9jayk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDUxODkwM2UuLmYzNjUyZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTQzMSwyNSArNDMxLDM3IEBAIGJvb2wgaW50ZWxfcGlwZV9oYXNfdHlwZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0eXBlKQo+ICAgKiBp bnRlbF9waXBlX2hhc190eXBlKCkgYnV0IGxvb2tpbmcgYXQgZW5jb2Rlci0+bmV3X2NydGMgaW5z dGVhZCBvZgo+ICAgKiBlbmNvZGVyLT5jcnRjLgo+ICAgKi8KPiAtc3RhdGljIGJvb2wgaW50ZWxf cGlwZV93aWxsX2hhdmVfdHlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgaW50IHR5cGUpCj4g K3N0YXRpYyBib29sIGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgICAgICBpbnQgdHlwZSkKPiAgewo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcjsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+ bnVtX2Nvbm5lY3RvcjsgaSsrKSB7Cj4gKwkJaWYgKCFzdGF0ZS0+Y29ubmVjdG9yc1tpXSkKPiAr CQkJY29udGludWU7Cj4gKwo+ICsJCWNvbm5lY3Rvcl9zdGF0ZSA9IHN0YXRlLT5jb25uZWN0b3Jf c3RhdGVzW2ldOwo+ICsJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMgIT0gY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKQo+ICsJCQljb250aW51ZTsKPiAgCj4gLQlmb3JfZWFjaF9pbnRlbF9lbmNvZGVy KGRldiwgZW5jb2RlcikKPiAtCQlpZiAoZW5jb2Rlci0+bmV3X2NydGMgPT0gY3J0YyAmJiBlbmNv ZGVyLT50eXBlID09IHR5cGUpCj4gKwkJZW5jb2RlciA9IHRvX2ludGVsX2VuY29kZXIoY29ubmVj dG9yX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IHR5cGUp Cj4gIAkJCXJldHVybiB0cnVlOwo+ICsJfQo+ICAKPiAgCXJldHVybiBmYWxzZTsKPiAgfQoKVGhl IHRyaWNreSBiaXQgaGVyZSBpcyB0aGF0IHdlIG11c3QgaGF2ZSBhbGwgdGhlIGNvbm5lY3RvcnMg YWRkZWQgdG8gdGhlCmRybV9hdG9taWNfc2F0ZSBmb3IgdGhlIGdpdmVuIGNydGMuIE90aGVyd2lz ZSB0aGVyZSBtaWdodCBiZSBubyBjb25uZWN0b3IKYXQgYWxsIGFuZCB3ZSdkIHJldHVybiBhIGJv Z3VzIGFuc3dlci4gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29ubmVjdG9ycwppcyB0aGUgZnVu Y3Rpb24gd2hpY2ggZG9lcyB0aGlzIGZvciB5b3UsIGFuZCBJIHRoaW5rIHdlIG5lZWQgdG8gY2Fs bCBpdApzb21ld2hlcmUgaW4gdGhlIHRvcC1sZXZlbCBjb21wdXRlX2NvbmZpZyBjb2RlLiBBbmQg SSBoYXZlbid0IHNwb3R0ZWQgdGhhdApjYWxsIGFueXdoZXJlIGluIHlvdXIgc2VyaWVzLgoKT3Ro ZXJ3aXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IHdpbGxfaGF2ZV90eXBlIGxvb2tz IGNvcnJlY3QuCi1EYW5pZWwKCj4gIAo+IC1zdGF0aWMgY29uc3QgaW50ZWxfbGltaXRfdCAqaW50 ZWxfaXJvbmxha2VfbGltaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gLQkJCQkJCWludCBy ZWZjbGspCj4gK3N0YXRpYyBjb25zdCBpbnRlbF9saW1pdF90ICoKPiAraW50ZWxfaXJvbmxha2Vf bGltaXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGludCByZWZjbGspCj4g IHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCWNvbnN0 IGludGVsX2xpbWl0X3QgKmxpbWl0Owo+ICAKPiAtCWlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90 eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSkgewo+ICsJaWYgKGludGVsX3BpcGVfd2lsbF9o YXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0xWRFMpKSB7Cj4gIAkJaWYgKGludGVs X2lzX2R1YWxfbGlua19sdmRzKGRldikpIHsKPiAgCQkJaWYgKHJlZmNsayA9PSAxMDAwMDApCj4g IAkJCQlsaW1pdCA9ICZpbnRlbF9saW1pdHNfaXJvbmxha2VfZHVhbF9sdmRzXzEwMG07Cj4gQEAg LTQ2NywyMCArNDc5LDIxIEBAIHN0YXRpYyBjb25zdCBpbnRlbF9saW1pdF90ICppbnRlbF9pcm9u bGFrZV9saW1pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXJldHVybiBsaW1pdDsKPiAg fQo+ICAKPiAtc3RhdGljIGNvbnN0IGludGVsX2xpbWl0X3QgKmludGVsX2c0eF9saW1pdChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiArc3RhdGljIGNvbnN0IGludGVsX2xpbWl0X3QgKgo+ICtp bnRlbF9nNHhfbGltaXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCWNvbnN0IGlu dGVsX2xpbWl0X3QgKmxpbWl0Owo+ICAKPiAtCWlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBl KGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSkgewo+ICsJaWYgKGludGVsX3BpcGVfd2lsbF9oYXZl X3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0xWRFMpKSB7Cj4gIAkJaWYgKGludGVsX2lz X2R1YWxfbGlua19sdmRzKGRldikpCj4gIAkJCWxpbWl0ID0gJmludGVsX2xpbWl0c19nNHhfZHVh bF9jaGFubmVsX2x2ZHM7Cj4gIAkJZWxzZQo+ICAJCQlsaW1pdCA9ICZpbnRlbF9saW1pdHNfZzR4 X3NpbmdsZV9jaGFubmVsX2x2ZHM7Cj4gLQl9IGVsc2UgaWYgKGludGVsX3BpcGVfd2lsbF9oYXZl X3R5cGUoY3J0YywgSU5URUxfT1VUUFVUX0hETUkpIHx8Cj4gLQkJICAgaW50ZWxfcGlwZV93aWxs X2hhdmVfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfQU5BTE9HKSkgewo+ICsJfSBlbHNlIGlmIChp bnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSB8 fAo+ICsJCSAgIGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VU UFVUX0FOQUxPRykpIHsKPiAgCQlsaW1pdCA9ICZpbnRlbF9saW1pdHNfZzR4X2hkbWk7Cj4gLQl9 IGVsc2UgaWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0YywgSU5URUxfT1VUUFVUX1NE Vk8pKSB7Cj4gKwl9IGVsc2UgaWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0 ZSwgSU5URUxfT1VUUFVUX1NEVk8pKSB7Cj4gIAkJbGltaXQgPSAmaW50ZWxfbGltaXRzX2c0eF9z ZHZvOwo+ICAJfSBlbHNlIC8qIFRoZSBvcHRpb24gaXMgZm9yIG90aGVyIG91dHB1dHMgKi8KPiAg CQlsaW1pdCA9ICZpbnRlbF9saW1pdHNfaTl4eF9zZHZvOwo+IEBAIC00ODgsMTcgKzUwMSwxOCBA QCBzdGF0aWMgY29uc3QgaW50ZWxfbGltaXRfdCAqaW50ZWxfZzR4X2xpbWl0KHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJcmV0dXJuIGxpbWl0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgY29uc3Qg aW50ZWxfbGltaXRfdCAqaW50ZWxfbGltaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGludCBy ZWZjbGspCj4gK3N0YXRpYyBjb25zdCBpbnRlbF9saW1pdF90ICoKPiAraW50ZWxfbGltaXQoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGludCByZWZjbGspCj4gIHsKPiAtCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCWNvbnN0IGludGVsX2xp bWl0X3QgKmxpbWl0Owo+ICAKPiAgCWlmIChIQVNfUENIX1NQTElUKGRldikpCj4gLQkJbGltaXQg PSBpbnRlbF9pcm9ubGFrZV9saW1pdChjcnRjLCByZWZjbGspOwo+ICsJCWxpbWl0ID0gaW50ZWxf aXJvbmxha2VfbGltaXQoY3J0Y19zdGF0ZSwgcmVmY2xrKTsKPiAgCWVsc2UgaWYgKElTX0c0WChk ZXYpKSB7Cj4gLQkJbGltaXQgPSBpbnRlbF9nNHhfbGltaXQoY3J0Yyk7Cj4gKwkJbGltaXQgPSBp bnRlbF9nNHhfbGltaXQoY3J0Y19zdGF0ZSk7Cj4gIAl9IGVsc2UgaWYgKElTX1BJTkVWSUVXKGRl dikpIHsKPiAtCQlpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjLCBJTlRFTF9PVVRQ VVRfTFZEUykpCj4gKwkJaWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0xWRFMpKQo+ICAJCQlsaW1pdCA9ICZpbnRlbF9saW1pdHNfcGluZXZpZXdf bHZkczsKPiAgCQllbHNlCj4gIAkJCWxpbWl0ID0gJmludGVsX2xpbWl0c19waW5ldmlld19zZHZv Owo+IEBAIC01MDcsMTQgKzUyMSwxNCBAQCBzdGF0aWMgY29uc3QgaW50ZWxfbGltaXRfdCAqaW50 ZWxfbGltaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGludCByZWZjbGspCj4gIAl9IGVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICAJCWxpbWl0ID0gJmludGVsX2xpbWl0c192bHY7 Cj4gIAl9IGVsc2UgaWYgKCFJU19HRU4yKGRldikpIHsKPiAtCQlpZiAoaW50ZWxfcGlwZV93aWxs X2hhdmVfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfTFZEUykpCj4gKwkJaWYgKGludGVsX3BpcGVf d2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0xWRFMpKQo+ICAJCQlsaW1p dCA9ICZpbnRlbF9saW1pdHNfaTl4eF9sdmRzOwo+ICAJCWVsc2UKPiAgCQkJbGltaXQgPSAmaW50 ZWxfbGltaXRzX2k5eHhfc2R2bzsKPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKGludGVsX3BpcGVfd2ls bF9oYXZlX3R5cGUoY3J0YywgSU5URUxfT1VUUFVUX0xWRFMpKQo+ICsJCWlmIChpbnRlbF9waXBl X3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRTKSkKPiAgCQkJbGlt aXQgPSAmaW50ZWxfbGltaXRzX2k4eHhfbHZkczsKPiAtCQllbHNlIGlmIChpbnRlbF9waXBlX3dp bGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9EVk8pKQo+ICsJCWVsc2UgaWYgKGludGVs X3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0RWTykpCj4gIAkJ CWxpbWl0ID0gJmludGVsX2xpbWl0c19pOHh4X2R2bzsKPiAgCQllbHNlCj4gIAkJCWxpbWl0ID0g JmludGVsX2xpbWl0c19pOHh4X2RhYzsKPiBAQCAtNjAxLDE1ICs2MTUsMTcgQEAgc3RhdGljIGJv b2wgaW50ZWxfUExMX2lzX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIH0KPiAgCj4g IHN0YXRpYyBib29sCj4gLWk5eHhfZmluZF9iZXN0X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAq bGltaXQsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICtpOXh4X2ZpbmRfYmVzdF9kcGxsKGNv bnN0IGludGVsX2xpbWl0X3QgKmxpbWl0LAo+ICsJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgaW50IHRhcmdldCwgaW50IHJlZmNsaywgaW50ZWxfY2xv Y2tfdCAqbWF0Y2hfY2xvY2ssCj4gIAkJICAgIGludGVsX2Nsb2NrX3QgKmJlc3RfY2xvY2spCj4g IHsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2 Owo+ICAJaW50ZWxfY2xvY2tfdCBjbG9jazsKPiAgCWludCBlcnIgPSB0YXJnZXQ7Cj4gIAo+IC0J aWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0YywgSU5URUxfT1VUUFVUX0xWRFMpKSB7 Cj4gKwlpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQ VVRfTFZEUykpIHsKPiAgCQkvKgo+ICAJCSAqIEZvciBMVkRTIGp1c3QgcmVseSBvbiBpdHMgY3Vy cmVudCBzZXR0aW5ncyBmb3IgZHVhbC1jaGFubmVsLgo+ICAJCSAqIFdlIGhhdmVuJ3QgZmlndXJl ZCBvdXQgaG93IHRvIHJlbGlhYmx5IHNldCB1cCBkaWZmZXJlbnQKPiBAQCAtNjYyLDE1ICs2Nzgs MTcgQEAgaTl4eF9maW5kX2Jlc3RfZHBsbChjb25zdCBpbnRlbF9saW1pdF90ICpsaW1pdCwgc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gLXBudl9maW5k X2Jlc3RfZHBsbChjb25zdCBpbnRlbF9saW1pdF90ICpsaW1pdCwgc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gK3Budl9maW5kX2Jlc3RfZHBsbChjb25zdCBpbnRlbF9saW1pdF90ICpsaW1pdCwK PiArCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICBpbnQg dGFyZ2V0LCBpbnQgcmVmY2xrLCBpbnRlbF9jbG9ja190ICptYXRjaF9jbG9jaywKPiAgCQkgICBp bnRlbF9jbG9ja190ICpiZXN0X2Nsb2NrKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCWludGVsX2Nsb2NrX3QgY2xvY2s7Cj4g IAlpbnQgZXJyID0gdGFyZ2V0Owo+ICAKPiAtCWlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBl KGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSkgewo+ICsJaWYgKGludGVsX3BpcGVfd2lsbF9oYXZl X3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0xWRFMpKSB7Cj4gIAkJLyoKPiAgCQkgKiBG b3IgTFZEUyBqdXN0IHJlbHkgb24gaXRzIGN1cnJlbnQgc2V0dGluZ3MgZm9yIGR1YWwtY2hhbm5l bC4KPiAgCQkgKiBXZSBoYXZlbid0IGZpZ3VyZWQgb3V0IGhvdyB0byByZWxpYWJseSBzZXQgdXAg ZGlmZmVyZW50Cj4gQEAgLTcyMSwxMCArNzM5LDEyIEBAIHBudl9maW5kX2Jlc3RfZHBsbChjb25z dCBpbnRlbF9saW1pdF90ICpsaW1pdCwgc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIH0KPiAg Cj4gIHN0YXRpYyBib29sCj4gLWc0eF9maW5kX2Jlc3RfZHBsbChjb25zdCBpbnRlbF9saW1pdF90 ICpsaW1pdCwgc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gK2c0eF9maW5kX2Jlc3RfZHBsbChj b25zdCBpbnRlbF9saW1pdF90ICpsaW1pdCwKPiArCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICBpbnQgdGFyZ2V0LCBpbnQgcmVmY2xrLCBpbnRlbF9jbG9j a190ICptYXRjaF9jbG9jaywKPiAgCQkgICBpbnRlbF9jbG9ja190ICpiZXN0X2Nsb2NrKQo+ICB7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsK PiAgCWludGVsX2Nsb2NrX3QgY2xvY2s7Cj4gIAlpbnQgbWF4X247Cj4gQEAgLTczMyw3ICs3NTMs NyBAQCBnNHhfZmluZF9iZXN0X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsIHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJaW50IGVycl9tb3N0ID0gKHRhcmdldCA+PiA4KSArICh0 YXJnZXQgPj4gOSk7Cj4gIAlmb3VuZCA9IGZhbHNlOwo+ICAKPiAtCWlmIChpbnRlbF9waXBlX3dp bGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSkgewo+ICsJaWYgKGludGVsX3Bp cGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0xWRFMpKSB7Cj4gIAkJ aWYgKGludGVsX2lzX2R1YWxfbGlua19sdmRzKGRldikpCj4gIAkJCWNsb2NrLnAyID0gbGltaXQt PnAyLnAyX2Zhc3Q7Cj4gIAkJZWxzZQo+IEBAIC03NzgsMTAgKzc5OCwxMiBAQCBnNHhfZmluZF9i ZXN0X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsIHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbAo+IC12bHZfZmluZF9iZXN0X2RwbGwoY29uc3Qg aW50ZWxfbGltaXRfdCAqbGltaXQsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICt2bHZfZmlu ZF9iZXN0X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsCj4gKwkJICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICAgaW50IHRhcmdldCwgaW50IHJlZmNs aywgaW50ZWxfY2xvY2tfdCAqbWF0Y2hfY2xvY2ssCj4gIAkJICAgaW50ZWxfY2xvY2tfdCAqYmVz dF9jbG9jaykKPiAgewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7Cj4gIAlpbnRlbF9jbG9ja190IGNsb2NrOwo+ICAJdW5zaWduZWQgaW50IGJl c3RwcG0gPSAxMDAwMDAwOwo+IEBAIC04MzUsMTAgKzg1NywxMiBAQCB2bHZfZmluZF9iZXN0X2Rw bGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbAo+IC1jaHZfZmluZF9iZXN0X2RwbGwoY29uc3QgaW50ZWxf bGltaXRfdCAqbGltaXQsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICtjaHZfZmluZF9iZXN0 X2RwbGwoY29uc3QgaW50ZWxfbGltaXRfdCAqbGltaXQsCj4gKwkJICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICAgaW50IHRhcmdldCwgaW50IHJlZmNsaywgaW50 ZWxfY2xvY2tfdCAqbWF0Y2hfY2xvY2ssCj4gIAkJICAgaW50ZWxfY2xvY2tfdCAqYmVzdF9jbG9j aykKPiAgewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFz ZS5kZXY7Cj4gIAlpbnRlbF9jbG9ja190IGNsb2NrOwo+ICAJdWludDY0X3QgbTI7Cj4gQEAgLTU2 NzgsNyArNTcwMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCSAqIC0gTFZEUyBkdWFsIGNoYW5uZWwgbW9kZQo+ICAJ ICogLSBEb3VibGUgd2lkZSBwaXBlCj4gIAkgKi8KPiAtCWlmICgoaW50ZWxfcGlwZV93aWxsX2hh dmVfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfTFZEUykgJiYKPiArCWlmICgoaW50ZWxfcGlwZV93 aWxsX2hhdmVfdHlwZShwaXBlX2NvbmZpZywgSU5URUxfT1VUUFVUX0xWRFMpICYmCj4gIAkgICAg IGludGVsX2lzX2R1YWxfbGlua19sdmRzKGRldikpIHx8IHBpcGVfY29uZmlnLT5kb3VibGVfd2lk ZSkKPiAgCQlwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAmPSB+MTsKPiAgCj4gQEAgLTU4NjEsMTUg KzU4ODUsMjEgQEAgc3RhdGljIGlubGluZSBib29sIGludGVsX3BhbmVsX3VzZV9zc2Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCSYmICEoZGV2X3ByaXYtPnF1aXJrcyAm IFFVSVJLX0xWRFNfU1NDX0RJU0FCTEUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGk5eHhfZ2V0 X3JlZmNsayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgaW50IG51bV9jb25uZWN0b3JzKQo+ICtz dGF0aWMgaW50IGk5eHhfZ2V0X3JlZmNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiArCQkJICAgaW50IG51bV9jb25uZWN0b3JzKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJaW50IHJlZmNsazsKPiAgCj4g IAlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwkJLyogTm90ZSB0aGF0IHRoaXMgcGF0aCBt YXkgYmUgcmVhY2hlZCB3aXRoIGEgY3J0Y19zdGF0ZSB0aGF0Cj4gKwkJICogaXMgbm90IHBhcnQg b2YgYW4gYXRvbWljIHN0YXRlLCBkdWUgdG8gdmx2X2ZvcmNlX3BsbF9vbigpLgo+ICsJCSAqIFRo YXQgbWVhbnMgd2UgY2FuJ3QgdXNlIGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoKSBvcgo+ICsJ CSAqIGFueXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGUgd2hvbGUgYXRvbWljIHN0YXRlIGhlcmUu Cj4gKwkJICovCj4gIAkJcmVmY2xrID0gMTAwMDAwOwo+IC0JfSBlbHNlIGlmIChpbnRlbF9waXBl X3dpbGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSAmJgo+ICsJfSBlbHNlIGlm IChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRT KSAmJgo+ICAJICAgIGludGVsX3BhbmVsX3VzZV9zc2MoZGV2X3ByaXYpICYmIG51bV9jb25uZWN0 b3JzIDwgMikgewo+ICAJCXJlZmNsayA9IGRldl9wcml2LT52YnQubHZkc19zc2NfZnJlcTsKPiAg CQlEUk1fREVCVUdfS01TKCJ1c2luZyBTU0MgcmVmZXJlbmNlIGNsb2NrIG9mICVkIGtIelxuIiwg cmVmY2xrKTsKPiBAQCAtNTkxMiw3ICs1OTQyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVf cGxsX2RpdmlkZXJzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJY3J0Y19zdGF0ZS0+ZHBs bF9od19zdGF0ZS5mcDAgPSBmcDsKPiAgCj4gIAljcnRjLT5sb3dmcmVxX2F2YWlsID0gZmFsc2U7 Cj4gLQlpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfTFZE UykgJiYKPiArCWlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVM X09VVFBVVF9MVkRTKSAmJgo+ICAJICAgIHJlZHVjZWRfY2xvY2sgJiYgaTkxNS5wb3dlcnNhdmUp IHsKPiAgCQljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmZwMSA9IGZwMjsKPiAgCQljcnRjLT5s b3dmcmVxX2F2YWlsID0gdHJ1ZTsKPiBAQCAtNjIwMCw3ICs2MjMwLDcgQEAgc3RhdGljIHZvaWQg Y2h2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAgICAgICAoMiA8 PCBEUElPX0NIVl9GRUVERldEX0dBSU5fU0hJRlQpKTsKPiAgCj4gIAkvKiBMb29wIGZpbHRlciAq Lwo+IC0JcmVmY2xrID0gaTl4eF9nZXRfcmVmY2xrKGNydGMsIDApOwo+ICsJcmVmY2xrID0gaTl4 eF9nZXRfcmVmY2xrKHBpcGVfY29uZmlnLCAwKTsKPiAgCWxvb3BmaWx0ZXIgPSA1IDw8IERQSU9f Q0hWX1BST1BfQ09FRkZfU0hJRlQgfAo+ICAJCTIgPDwgRFBJT19DSFZfR0FJTl9DVFJMX1NISUZU Owo+ICAJaWYgKHJlZmNsayA9PSAxMDAwMDApCj4gQEAgLTYyMzYsNiArNjI2Niw3IEBAIHZvaWQg dmx2X2ZvcmNlX3BsbF9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwK PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0KPiAgCQl0b19pbnRlbF9jcnRjKGludGVsX2dl dF9jcnRjX2Zvcl9waXBlKGRldiwgcGlwZSkpOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUg cGlwZV9jb25maWcgPSB7Cj4gKwkJLmJhc2UuY3J0YyA9ICZjcnRjLT5iYXNlLAo+ICAJCS5waXhl bF9tdWx0aXBsaWVyID0gMSwKPiAgCQkuZHBsbCA9ICpkcGxsLAo+ICAJfTsKPiBAQCAtNjI4MCwx MiArNjMxMSwxMiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGwoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAo+ICAJaTl4eF91cGRhdGVfcGxsX2RpdmlkZXJzKGNydGMsIGNydGNfc3Rh dGUsIHJlZHVjZWRfY2xvY2spOwo+ICAKPiAtCWlzX3Nkdm8gPSBpbnRlbF9waXBlX3dpbGxfaGF2 ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9TRFZPKSB8fAo+IC0JCWludGVsX3BpcGVfd2lsbF9o YXZlX3R5cGUoY3J0YywgSU5URUxfT1VUUFVUX0hETUkpOwo+ICsJaXNfc2R2byA9IGludGVsX3Bp cGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX1NEVk8pIHx8Cj4gKwkJ aW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSk7 Cj4gIAo+ICAJZHBsbCA9IERQTExfVkdBX01PREVfRElTOwo+ICAKPiAtCWlmIChpbnRlbF9waXBl X3dpbGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSkKPiArCWlmIChpbnRlbF9w aXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRTKSkKPiAgCQlk cGxsIHw9IERQTExCX01PREVfTFZEUzsKPiAgCWVsc2UKPiAgCQlkcGxsIHw9IERQTExCX01PREVf REFDX1NFUklBTDsKPiBAQCAtNjMyOCw3ICs2MzU5LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5z ZHZvX3R2X2Nsb2NrKQo+ICAJCWRwbGwgfD0gUExMX1JFRl9JTlBVVF9UVkNMS0lOQkM7Cj4gLQll bHNlIGlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRT KSAmJgo+ICsJZWxzZSBpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfTFZEUykgJiYKPiAgCQkgaW50ZWxfcGFuZWxfdXNlX3NzYyhkZXZfcHJpdikg JiYgbnVtX2Nvbm5lY3RvcnMgPCAyKQo+ICAJCWRwbGwgfD0gUExMQl9SRUZfSU5QVVRfU1BSRUFE U1BFQ1RSVU1JTjsKPiAgCWVsc2UKPiBAQCAtNjM1OCw3ICs2Mzg5LDcgQEAgc3RhdGljIHZvaWQg aTh4eF91cGRhdGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCWRwbGwgPSBE UExMX1ZHQV9NT0RFX0RJUzsKPiAgCj4gLQlpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShj cnRjLCBJTlRFTF9PVVRQVVRfTFZEUykpIHsKPiArCWlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90 eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRTKSkgewo+ICAJCWRwbGwgfD0gKDEgPDwg KGNsb2NrLT5wMSAtIDEpKSA8PCBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX1NISUZUOwo+ICAJfSBl bHNlIHsKPiAgCQlpZiAoY2xvY2stPnAxID09IDIpCj4gQEAgLTYzNjksMTAgKzY0MDAsMTAgQEAg c3RhdGljIHZvaWQgaTh4eF91cGRhdGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJ CQlkcGxsIHw9IFBMTF9QMl9ESVZJREVfQllfNDsKPiAgCX0KPiAgCj4gLQlpZiAoIUlTX0k4MzAo ZGV2KSAmJiBpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGMsIElOVEVMX09VVFBVVF9EVk8p KQo+ICsJaWYgKCFJU19JODMwKGRldikgJiYgaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfRFZPKSkKPiAgCQlkcGxsIHw9IERQTExfRFZPXzJYX01PREU7 Cj4gIAo+IC0JaWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0YywgSU5URUxfT1VUUFVU X0xWRFMpICYmCj4gKwlpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfTFZEUykgJiYKPiAgCQkgaW50ZWxfcGFuZWxfdXNlX3NzYyhkZXZfcHJpdikg JiYgbnVtX2Nvbm5lY3RvcnMgPCAyKQo+ICAJCWRwbGwgfD0gUExMQl9SRUZfSU5QVVRfU1BSRUFE U1BFQ1RSVU1JTjsKPiAgCWVsc2UKPiBAQCAtNjYwOSw3ICs2NjQwLDcgQEAgc3RhdGljIGludCBp OXh4X2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlyZXR1 cm4gMDsKPiAgCj4gIAlpZiAoIWNydGNfc3RhdGUtPmNsb2NrX3NldCkgewo+IC0JCXJlZmNsayA9 IGk5eHhfZ2V0X3JlZmNsayhjcnRjLCBudW1fY29ubmVjdG9ycyk7Cj4gKwkJcmVmY2xrID0gaTl4 eF9nZXRfcmVmY2xrKGNydGNfc3RhdGUsIG51bV9jb25uZWN0b3JzKTsKPiAgCj4gIAkJLyoKPiAg CQkgKiBSZXR1cm5zIGEgc2V0IG9mIGRpdmlzb3JzIGZvciB0aGUgZGVzaXJlZCB0YXJnZXQgY2xv Y2sgd2l0aAo+IEBAIC02NjE3LDggKzY2NDgsOCBAQCBzdGF0aWMgaW50IGk5eHhfY3J0Y19jb21w dXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAqIHRoZSBjbG9jayBlcXVh dGlvbjogcmVmbGNrICogKDUgKiAobTEgKyAyKSArIChtMiArIDIpKSAvIChuICsKPiAgCQkgKiAy KSAvIHAxIC8gcDIuCj4gIAkJICovCj4gLQkJbGltaXQgPSBpbnRlbF9saW1pdChjcnRjLCByZWZj bGspOwo+IC0JCW9rID0gZGV2X3ByaXYtPmRpc3BsYXkuZmluZF9kcGxsKGxpbWl0LCBjcnRjLAo+ ICsJCWxpbWl0ID0gaW50ZWxfbGltaXQoY3J0Y19zdGF0ZSwgcmVmY2xrKTsKPiArCQlvayA9IGRl dl9wcml2LT5kaXNwbGF5LmZpbmRfZHBsbChsaW1pdCwgY3J0Y19zdGF0ZSwKPiAgCQkJCQkJIGNy dGNfc3RhdGUtPnBvcnRfY2xvY2ssCj4gIAkJCQkJCSByZWZjbGssIE5VTEwsICZjbG9jayk7Cj4g IAkJaWYgKCFvaykgewo+IEBAIC02NjM0LDcgKzY2NjUsNyBAQCBzdGF0aWMgaW50IGk5eHhfY3J0 Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgKiB3ZSB3aWxs IGRpc2FibGUgdGhlIExWRFMgZG93bmNsb2NrIGZlYXR1cmUuCj4gIAkJCSAqLwo+ICAJCQloYXNf cmVkdWNlZF9jbG9jayA9Cj4gLQkJCQlkZXZfcHJpdi0+ZGlzcGxheS5maW5kX2RwbGwobGltaXQs IGNydGMsCj4gKwkJCQlkZXZfcHJpdi0+ZGlzcGxheS5maW5kX2RwbGwobGltaXQsIGNydGNfc3Rh dGUsCj4gIAkJCQkJCQkgICAgZGV2X3ByaXYtPmx2ZHNfZG93bmNsb2NrLAo+ICAJCQkJCQkJICAg IHJlZmNsaywgJmNsb2NrLAo+ICAJCQkJCQkJICAgICZyZWR1Y2VkX2Nsb2NrKTsKPiBAQCAtNzQ2 MiwxMiArNzQ5MywxMSBAQCBzdGF0aWMgYm9vbCBpcm9ubGFrZV9jb21wdXRlX2Nsb2NrcyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAJaW50IHJlZmNsazsKPiAgCWNvbnN0IGludGVsX2xpbWl0X3QgKmxpbWl0Owo+ ICAJYm9vbCByZXQsIGlzX2x2ZHMgPSBmYWxzZTsKPiAgCj4gLQlpc19sdmRzID0gaW50ZWxfcGlw ZV93aWxsX2hhdmVfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRfTFZEUyk7Cj4gKwlpc19s dmRzID0gaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRf TFZEUyk7Cj4gIAo+ICAJcmVmY2xrID0gaXJvbmxha2VfZ2V0X3JlZmNsayhjcnRjKTsKPiAgCj4g QEAgLTc0NzYsOCArNzUwNiw4IEBAIHN0YXRpYyBib29sIGlyb25sYWtlX2NvbXB1dGVfY2xvY2tz KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCSAqIHJlZmNsaywgb3IgRkFMU0UuICBUaGUgcmV0 dXJuZWQgdmFsdWVzIHJlcHJlc2VudCB0aGUgY2xvY2sgZXF1YXRpb246Cj4gIAkgKiByZWZsY2sg KiAoNSAqIChtMSArIDIpICsgKG0yICsgMikpIC8gKG4gKyAyKSAvIHAxIC8gcDIuCj4gIAkgKi8K PiAtCWxpbWl0ID0gaW50ZWxfbGltaXQoaW50ZWxfY3J0YywgcmVmY2xrKTsKPiAtCXJldCA9IGRl dl9wcml2LT5kaXNwbGF5LmZpbmRfZHBsbChsaW1pdCwgaW50ZWxfY3J0YywKPiArCWxpbWl0ID0g aW50ZWxfbGltaXQoY3J0Y19zdGF0ZSwgcmVmY2xrKTsKPiArCXJldCA9IGRldl9wcml2LT5kaXNw bGF5LmZpbmRfZHBsbChsaW1pdCwgY3J0Y19zdGF0ZSwKPiAgCQkJCQkgIGNydGNfc3RhdGUtPnBv cnRfY2xvY2ssCj4gIAkJCQkJICByZWZjbGssIE5VTEwsIGNsb2NrKTsKPiAgCWlmICghcmV0KQo+ IEBAIC03NDkxLDcgKzc1MjEsNyBAQCBzdGF0aWMgYm9vbCBpcm9ubGFrZV9jb21wdXRlX2Nsb2Nr cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJICogZG93bmNsb2NrIGZlYXR1cmUuCj4gIAkJ Ki8KPiAgCQkqaGFzX3JlZHVjZWRfY2xvY2sgPQo+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5maW5k X2RwbGwobGltaXQsIGludGVsX2NydGMsCj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmZpbmRfZHBs bChsaW1pdCwgY3J0Y19zdGF0ZSwKPiAgCQkJCQkJICAgIGRldl9wcml2LT5sdmRzX2Rvd25jbG9j aywKPiAgCQkJCQkJICAgIHJlZmNsaywgY2xvY2ssCj4gIAkJCQkJCSAgICByZWR1Y2VkX2Nsb2Nr KTsKPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KKzQxICgwKSA3OSAzNjUgNTcgNDggLSBodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=