From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-779193-1521135672-2-17566222181415898301 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, RCVD_IN_DNSWL_MED -2.3, SPF_PASS -0.001, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='140.211.166.137', Host='smtp4.osuosl.org', Country='US', FromHeader='org', MailFrom='org' X-Spam-charsets: plain='utf-8' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: driverdev-devel-bounces@linuxdriverproject.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1521135670; b=OAubSoW7PHGnFNWkr+Ui2lU350fWLzg8q883+bLkQd2g5h3 aJZO1Ri7fYEhlZZs1H6UEOvzqishqZ+il1eU56Lwof1/keV8tYxP9/UF9l+uO5Wp 64wNUI41tU01wif2H2dORQ5/eVYHHfMb34EcItT0bPyZTXTaUpr8AkBg9BsTBp+c GqlJf2T7+unaAbd9bw7tzQx7r8AHUZ5G37EpxHEv2PBxp24ZKMwuG3FMiDV6xMKS yAKud0KYiS3P+1+OHUl9oganazi4BTRrIeQlP3fWC5Uv0F3wNKqYmhzF8RZLdLcr jM99ZxNOzGG7R/GiXtFA0/TDA9ZtuAT/fBY6dYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=date:from:to:subject:message-id :in-reply-to:references:mime-version:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:cc:content-type :content-transfer-encoding:sender; s=arctest; t=1521135670; bh=J m+u0AfL9cVsQWMh2hG3rIG9JOBfEy1WNbbOhUu8z8U=; b=grCGei+SM08pv2XQN v5aRh7xC0Xs3Yf4MfuK+RsSuHUDwgUAll22nGUhdu4wcTJDewgVVxbSY17R5vUyh tX9VK10Ck5VdH592MfMM7ihKdn0cWvokVyG89st1svb7Xrj9DyGQVkOx+utMTO39 Z8ZC2/X2fsyaq4thxCc9VqHVzzEJW3ki1B1Lowlo0ZZQfUshRo0F631RR5hVdX+H 8uOYhmtI7t9GXUU0+RxMFwpVeTm/oTVXAKRYy0lhU+fyFijXWNwvruZjxCugstp/ eJ89M7be7v6vow8jBfpic46p1H1znPEj3WMCo6FmrG5hlJ7hgg/qnOFmqsjPTCsf 4X1Gw== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=fail (message has been altered; 2048-bit rsa key sha256) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b=Uo2Hdoea x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20150623; dmarc=none (p=none,has-list-id=yes,d=none) header.from=networkplumber.org; iprev=pass policy.iprev=140.211.166.137 (smtp4.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=fraxinus.osuosl.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-google-dkim=fail (message has been altered; 2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=KsQXuj1v; x-ptr=fail x-ptr-helo=fraxinus.osuosl.org x-ptr-lookup=smtp4.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=networkplumber.org header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128 Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=fail (message has been altered; 2048-bit rsa key sha256) header.d=networkplumber-org.20150623.gappssmtp.com header.i=@networkplumber-org.20150623.gappssmtp.com header.b=Uo2Hdoea x-bits=2048 x-keytype=rsa x-algorithm=sha256 x-selector=20150623; dmarc=none (p=none,has-list-id=yes,d=none) header.from=networkplumber.org; iprev=pass policy.iprev=140.211.166.137 (smtp4.osuosl.org); spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org smtp.helo=fraxinus.osuosl.org; x-aligned-from=fail; x-category=clean score=-100 state=0; x-google-dkim=fail (message has been altered; 2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=KsQXuj1v; x-ptr=fail x-ptr-helo=fraxinus.osuosl.org x-ptr-lookup=smtp4.osuosl.org; x-return-mx=pass smtp.domain=linuxdriverproject.org smtp.result=pass smtp_is_org_domain=yes header.domain=networkplumber.org header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128 X-Remote-Delivered-To: driverdev-devel@osuosl.org X-Google-Smtp-Source: AG47ELsNkPzJ838+ZX4Uh+MRznjf3p04lMIT5u0KJJUf0Eo/W5V9GGjR0c6KljGUN7xJyn1WF2CDVA== Date: Thu, 15 Mar 2018 10:40:52 -0700 From: Stephen Hemminger To: Mohammed Gamal Subject: Re: [PATCH] hv_netvsc: Make sure out channel is fully opened on send Message-ID: <20180315104052.14698f66@xeon-e3> In-Reply-To: <1521131053.30828.1.camel@redhat.com> References: <1520968010-20733-1-git-send-email-mgamal@redhat.com> <20180313123521.5b486da1@xeon-e3> <1521019321.8260.1.camel@redhat.com> <1521131053.30828.1.camel@redhat.com> MIME-Version: 1.0 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.24 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: otubo@redhat.com, sthemmin@microsoft.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, vkuznets@redhat.com, davem@davemloft.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: T24gVGh1LCAxNSBNYXIgMjAxOCAxNzoyNDoxMyArMDEwMApNb2hhbW1lZCBHYW1hbCA8bWdhbWFs QHJlZGhhdC5jb20+IHdyb3RlOgoKPiBPbiBXZWQsIDIwMTgtMDMtMTQgYXQgMTA6MjIgKzAxMDAs IE1vaGFtbWVkIEdhbWFsIHdyb3RlOgo+ID4gT24gVHVlLCAyMDE4LTAzLTEzIGF0IDEyOjM1IC0w NzAwLCBTdGVwaGVuIEhlbW1pbmdlciB3cm90ZTogIAo+ID4gPiBPbiBUdWUsIDEzIE1hciAyMDE4 IDIwOjA2OjUwICswMTAwCj4gPiA+IE1vaGFtbWVkIEdhbWFsIDxtZ2FtYWxAcmVkaGF0LmNvbT4g d3JvdGU6Cj4gPiA+ICAgCj4gPiA+ID4gRHJpbmcgaGlnaCBuZXR3b3JrIHRyYWZmaWMgY2hhbmdl cyB0byBuZXR3b3JrIGludGVyZmFjZQo+ID4gPiA+IHBhcmFtZXRlcnMKPiA+ID4gPiBzdWNoIGFz IG51bWJlciBvZiBjaGFubmVscyBvciBNVFUgY2FuIGNhdXNlIGEga2VybmVsIHBhbmljIHdpdGgg YQo+ID4gPiA+IE5VTEwKPiA+ID4gPiBwb2ludGVyIGRlcmVmZXJlbmNlLiBUaGlzIGlzIGR1ZSB0 byBuZXR2c2NfZGV2aWNlX3JlbW92ZSgpIGJlaW5nCj4gPiA+ID4gY2FsbGVkIGFuZCBkZWFsbG9j YXRpbmcgdGhlIGNoYW5uZWwgcmluZyBidWZmZXJzLCB3aGljaCBjYW4gdGhlbgo+ID4gPiA+IGJl Cj4gPiA+ID4gYWNjZXNzZWQgYnkgbmV0dnNjX3NlbmRfcGt0KCkgYmVmb3JlIHRoZXkncmUgYWxs b2NhdGVkIG9uIGNhbGxpbmcKPiA+ID4gPiBuZXR2c2NfZGV2aWNlX2FkZCgpCj4gPiA+ID4gCj4g PiA+ID4gVGhlIHBhdGNoIGZpeGVzIHRoaXMgcHJvYmxlbSBieSBjaGVja2luZyB0aGUgY2hhbm5l bCBzdGF0ZSBhbmQKPiA+ID4gPiByZXR1cm5pbmcKPiA+ID4gPiBFTk9ERVYgaWYgbm90IHlldCBv cGVuZWQuIFdlIGFsc28gbW92ZSB0aGUgY2FsbCB0bwo+ID4gPiA+IGh2X3JpbmdidWZfYXZhaWxf cGVyY2VudCgpCj4gPiA+ID4gd2hpY2ggbWF5IGFjY2VzcyB0aGUgdW5pbml0aWFsaXplZCByaW5n IGJ1ZmZlci4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNb2hhbW1lZCBHYW1hbCA8 bWdhbWFsQHJlZGhhdC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gwqBkcml2ZXJzL25ldC9oeXBl cnYvbmV0dnNjLmMgfCA1ICsrKy0tCj4gPiA+ID4gwqAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMKPiA+ID4gPiBiL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2 c2MuYwo+ID4gPiA+IGluZGV4IDAyNjVkNzAuLjQ0YTgzNTggMTAwNjQ0Cj4gPiA+ID4gLS0tIGEv ZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvaHlw ZXJ2L25ldHZzYy5jCj4gPiA+ID4gQEAgLTc1Nyw3ICs3NTcsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCBuZXR2c2Nfc2VuZF9wa3QoCj4gPiA+ID4gwqAJc3RydWN0IG5ldGRldl9xdWV1ZSAqdHhxID0g bmV0ZGV2X2dldF90eF9xdWV1ZShuZGV2LAo+ID4gPiA+IHBhY2tldC0+cV9pZHgpOwo+ID4gPiA+ IMKgCXU2NCByZXFfaWQ7Cj4gPiA+ID4gwqAJaW50IHJldDsKPiA+ID4gPiAtCXUzMiByaW5nX2F2 YWlsID0gaHZfcmluZ2J1Zl9hdmFpbF9wZXJjZW50KCZvdXRfY2hhbm5lbC0gIAo+ID4gPiA+ID4g b3V0Ym91bmQpOyAgCj4gPiA+ID4gCj4gPiA+ID4gKwl1MzIgcmluZ19hdmFpbDsKPiA+ID4gPiDC oAo+ID4gPiA+IMKgCW52bXNnLmhkci5tc2dfdHlwZSA9IE5WU1BfTVNHMV9UWVBFX1NFTkRfUk5E SVNfUEtUOwo+ID4gPiA+IMKgCWlmIChza2IpCj4gPiA+ID4gQEAgLTc3Myw3ICs3NzMsNyBAQCBz dGF0aWMgaW5saW5lIGludCBuZXR2c2Nfc2VuZF9wa3QoCj4gPiA+ID4gwqAKPiA+ID4gPiDCoAly ZXFfaWQgPSAodWxvbmcpc2tiOwo+ID4gPiA+IMKgCj4gPiA+ID4gLQlpZiAob3V0X2NoYW5uZWwt PnJlc2NpbmQpCj4gPiA+ID4gKwlpZiAob3V0X2NoYW5uZWwtPnJlc2NpbmQgfHwgb3V0X2NoYW5u ZWwtPnN0YXRlICE9Cj4gPiA+ID4gQ0hBTk5FTF9PUEVORURfU1RBVEUpCj4gPiA+ID4gwqAJCXJl dHVybiAtRU5PREVWOwo+ID4gPiA+IMKgCj4gPiA+ID4gwqAJaWYgKHBhY2tldC0+cGFnZV9idWZf Y250KSB7Cj4gPiA+ID4gQEAgLTc5MSw2ICs3OTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBuZXR2 c2Nfc2VuZF9wa3QoCj4gPiA+ID4gwqAJCQkJwqDCoMKgwqDCoMKgwqBWTUJVU19EQVRBX1BBQ0tF VF9GTEFHX0NPCj4gPiA+ID4gTVAKPiA+ID4gPiBMRVRJT05fUkVRVUVTVEVEKTsKPiA+ID4gPiDC oAl9Cj4gPiA+ID4gwqAKPiA+ID4gPiArCXJpbmdfYXZhaWwgPSBodl9yaW5nYnVmX2F2YWlsX3Bl cmNlbnQoJm91dF9jaGFubmVsLSAgCj4gPiA+ID4gPiBvdXRib3VuZCk7ICAKPiA+ID4gPiAKPiA+ ID4gPiDCoAlpZiAocmV0ID09IDApIHsKPiA+ID4gPiDCoAkJYXRvbWljX2luY19yZXR1cm4oJm52 Y2hhbi0+cXVldWVfc2VuZHMpOwo+ID4gPiA+IMKgICAKPiA+ID4gCj4gPiA+IFRoYW5rcyBmb3Ig eW91ciBwYXRjaC4gWWVzIHRoZXJlIGFyZSByYWNlcyB3aXRoIHRoZSBjdXJyZW50IHVwZGF0ZQo+ ID4gPiBsb2dpYy4gVGhlIHJvb3QgY2F1c2UgZ29lcyBoaWdoZXIgdXAgaW4gdGhlIGZsb3c7IHRo ZSBzZW5kIHF1ZXVlcwo+ID4gPiBzaG91bGQKPiA+ID4gYmUgc3RvcHBlZCBiZWZvcmUgbmV0dnNj X2RldmljZV9yZW1vdmUgaXMgY2FsbGVkLiBTb2x2aW5nIGl0IHdoZXJlCj4gPiA+IHlvdSB0cmll ZAo+ID4gPiB0byBpcyByYWN5IGFuZCBub3QgZ29pbmcgdG8gd29yayByZWxpYWJseS4KPiA+ID4g Cj4gPiA+IE5ldHdvcmsgcGF0Y2hlcyBzaG91bGQgZ28gdG8gbmV0ZGV2QHZnZXIua2VybmVsLm9y Zwo+ID4gPiAKPiA+ID4gWW91IGNhbid0IG1vdmUgdGhlIHJpbmdfYXZhaWwgY2hlY2sgdW50aWwg YWZ0ZXIgdGhlCj4gPiA+IHZtYnVzX3NlbmRwYWNrZXQKPiA+ID4gYmVjYXVzZQo+ID4gPiB0aGF0 IHdpbGwgYnJlYWsgdGhlIGZsb3cgY29udHJvbCBsb2dpYy4KPiA+ID4gICAKPiA+IAo+ID4gV2h5 PyBJIGRvbid0IHNlZSByaW5nX2F2YWlsIGJlaW5nIHVzZWQgYmVmb3JlIHRoYXQgcG9pbnQuICAK PiAKPiBBaCwgc3R1cGlkIG1lLiB2bWJ1c19zZW5kcGFja2V0KCkgd2lsbCB3cml0ZSB0byB0aGUg cmluZyBidWZmZXIgYW5kCj4gdGhhdCBtZWFucyB0aGF0IHJpbmdfYXZhaWwgdmFsdWUgd2lsbCBi ZSBkaWZmZXJlbnQgdGhhbiB0aGUgZXhwZWN0ZWQuCj4gCj4gPiAgIAo+ID4gPiBJbnN0ZWFkLCB5 b3Ugc2hvdWxkIGp1c3QgbW92ZSB0aGUgYXZhaWxfcmVhZCBjaGVjayB1bnRpbCBqdXN0IGFmdGVy Cj4gPiA+IHRoZSBleGlzdGluZyByZXNjaW5kCj4gPiA+IGNoZWNrLgo+ID4gPiAKPiA+ID4gQWxz bywgeW91IHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZvciBPUEVORURfU1RBVEUsIGp1c3QgcmVz Y2luZCBpcwo+ID4gPiBlbm91Z2guICAKPiA+IAo+ID4gVGhhdCByYXJlbHkgbWl0aWdhdGVkIHRo ZSByYWNlLiBjaGFubmVsLT5yZXNjaW5kIGZsYWcgaXMgc2V0IG9uIHZtYnVzCj4gPiBleGl0IC0g Y2FsbGVkIG9uIG1vZHVsZSB1bmxvYWQgLSBhbmQgd2hlbiBhIHJlc2NpbmQgb2ZmZXIgaXMgcmVj ZWl2ZWQKPiA+IGZyb20gdGhlIGhvc3QsIHdoaWNoIEFGQUlDVCBkb2Vzbid0IGhhcHBlbiBvbiBl dmVyeSBjYWxsIHRvCj4gPiBuZXR2c2NfZGV2aWNlX3JlbW92ZSwgc28gaXQncyBxdWl0ZSBwb3Nz aWJsZSB0aGF0IHRoZSByaW5nYnVmZmVyIGlzCj4gPiBhY2Nlc3NlZCBiZWZvcmUgaXQncyBhbGxv Y2F0ZWQgYWdhaW4gb24gY2hhbm5lbCBvcGVuIGFuZCBoZW5jZSB0aGUKPiA+IGNoZWNrIGZvciBP UEVORURfU1RBVCAtIHdoaWNoIGlzIG9ubHkgc2V0IGFmdGVyIGFsbCB2bWJ1cyBkYXRhIGlzCj4g PiBpbml0aWFsaXplZC4KPiA+ICAgCj4gCj4gUGVyaGFwcyBJIGhhdmVuJ3QgYmVlbiBjbGVhciBl bm91Z2guIFRoZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UKPiBoYXBwZW5zIGluIHRoZSBjYWxs IHRvIGh2X3JpbmdidWZfYXZhaWxfcGVyY2VudCgpIHdoaWNoIGlzIHVzZWQgdG8KPiBjYWxjdWxh dGUgcmluZ19hdmFpbC7CoAo+IAo+IFNvIHdlIG5lZWQgdG8gc3RvcCB0aGUgcXVldWVzIGJlZm9y ZSBjYWxsaW5nIGl0IGlmIHRoZSBjaGFubmVsJ3MgcmluZwo+IGJ1ZmZlcnMgaGF2ZW4ndCBiZWVu IGFsbG9jYXRlZCB5ZXQsIGJ1dCBPVE9IIHdlIHNob3VsZCBvbmx5IHN0b3AgdGhlCj4gcXVldWVz IGJhc2VkIHVwb24gdGhlIHZhbHVlIG9mIHJpbmdfYXZhaWwsIHNvIHRoaXMgbGVhZHMgaW50byBh IGNoaWNrZW4KPiBhbmQgZWdnIHNpdHVhdGlvbi7CoAo+IAo+IElzIG15IG9ic2VydmF0aW9uIGhl cmUgY29ycmVjdD8gUGxlYXNlIGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywKPiBTdGVwaGVuLgoK VGhpcyBpcyBhIGZhciBtb3JlIGRyYXN0aWMgd29yayBvZiB0aGUgc2h1dGRvd24gbG9naWMgd2hp Y2ggSSBhbSBzdGlsbCB3b3JraW5nCm9uLiBUaGUgY3VycmVudCBuZXR2c2MgZHJpdmVyIGlzIG5v dCBkb2luZyBhIGdvb2Qgam9iIG9mIGhhbmRsaW5nIGNvbmN1cnJlbnQKc2VuZC9yZWNlaXZlcyBk dXJpbmcgcmluZyBjaGFuZ2VzLgoKCkZyb20gYTIyZGExOGI0MWFkNTAyNDM0MGRkZGNjOTg5ZDkx ODk4NzgzNmY2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3RlcGhlbiBIZW1taW5n ZXIgPHN0aGVtbWluQG1pY3Jvc29mdC5jb20+CkRhdGU6IFR1ZSwgNiBGZWIgMjAxOCAxNTowNTox OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGh2X25ldHZzYzogY29tbW9uIGRldGFjaCBsb2dpYwoK TWFrZSBjb21tb24gZnVuY3Rpb24gZm9yIGRldGFjaGluZyBpbnRlcm5hbHMgb2YgZGV2aWNlCmR1 cmluZyBjaGFuZ2VzIHRvIE1UVSBhbmQgUlNTLiBNYWtlIHN1cmUgbm8gbW9yZSBwYWNrZXRzCmFy ZSB0cmFuc21pdHRlZCBhbmQgYWxsIHBhY2tldHMgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZQpk b2luZyBkZXZpY2UgdGVhcmRvd24uCgpDaGFuZ2VzIHRyYW5zbWl0IGVuYWJsaW5nIGxvZ2ljIHNv IHRoYXQgdHJhbnNtaXQgcXVldWVzIGFyZSBkaXNhYmxlZApkdXJpbmcgdGhlIHBlcmlvZCB3aGVu IGxvd2VyIGRldmljZSBpcyBiZWluZyBjaGFuZ2VkLiBBbmQgZW5hYmxlZApvbmx5IGFmdGVyIHN1 YiBjaGFubmVscyBhcmUgc2V0dXAuIFRoaXMgYXZvaWRzIGlzc3VlIHdoZXJlIGl0IGNvdWxkCmJl IHRoYXQgYSBwYWNrZXQgd2FzIGJlaW5nIHNlbnQgd2hpbGUgc3ViY2hhbm5lbCB3YXMgbm90IGlu aXRpYWxpemVkLgoKU2lnbmVkLW9mZi1ieTogU3RlcGhlbiBIZW1taW5nZXIgPHN0aGVtbWluQG1p Y3Jvc29mdC5jb20+Ci0tLQogZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaCAgIHwgICAx IC0KIGRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYyAgICAgICB8ICAyMCArLS0KIGRyaXZlcnMv bmV0L2h5cGVydi9uZXR2c2NfZHJ2LmMgICB8IDI2OCArKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jIHwgIDE0ICst CiA0IGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspLCAxNDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L2h5cGVydl9uZXQuaCBiL2RyaXZlcnMvbmV0 L2h5cGVydi9oeXBlcnZfbmV0LmgKaW5kZXggY2Q1MzhkNWE3OTg2Li4zMjg2MTAzNmMzZmMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9oeXBlcnZfbmV0LmgKKysrIGIvZHJpdmVycy9u ZXQvaHlwZXJ2L2h5cGVydl9uZXQuaApAQCAtMjEyLDcgKzIxMiw2IEBAIHZvaWQgbmV0dnNjX2No YW5uZWxfY2Iodm9pZCAqY29udGV4dCk7CiBpbnQgbmV0dnNjX3BvbGwoc3RydWN0IG5hcGlfc3Ry dWN0ICpuYXBpLCBpbnQgYnVkZ2V0KTsKIAogdm9pZCBybmRpc19zZXRfc3ViY2hhbm5lbChzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKncpOwotYm9vbCBybmRpc19maWx0ZXJfb3BlbmVkKGNvbnN0IHN0cnVj dCBuZXR2c2NfZGV2aWNlICpudmRldik7CiBpbnQgcm5kaXNfZmlsdGVyX29wZW4oc3RydWN0IG5l dHZzY19kZXZpY2UgKm52ZGV2KTsKIGludCBybmRpc19maWx0ZXJfY2xvc2Uoc3RydWN0IG5ldHZz Y19kZXZpY2UgKm52ZGV2KTsKIHN0cnVjdCBuZXR2c2NfZGV2aWNlICpybmRpc19maWx0ZXJfZGV2 aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9o eXBlcnYvbmV0dnNjLmMgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMKaW5kZXggOGM5NWEz Nzk3YjJmLi4zMWIxYzZjNDMwYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2 c2MuYworKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMKQEAgLTU3Myw4ICs1NzMsNiBA QCB2b2lkIG5ldHZzY19kZXZpY2VfcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSkKIAkJ PSBydG5sX2RlcmVmZXJlbmNlKG5ldF9kZXZpY2VfY3R4LT5udmRldik7CiAJaW50IGk7CiAKLQlj YW5jZWxfd29ya19zeW5jKCZuZXRfZGV2aWNlLT5zdWJjaGFuX3dvcmspOwotCiAJbmV0dnNjX3Jl dm9rZV9idWYoZGV2aWNlLCBuZXRfZGV2aWNlKTsKIAogCVJDVV9JTklUX1BPSU5URVIobmV0X2Rl dmljZV9jdHgtPm52ZGV2LCBOVUxMKTsKQEAgLTY2MSwxNCArNjU5LDE4IEBAIHN0YXRpYyB2b2lk IG5ldHZzY19zZW5kX3R4X2NvbXBsZXRlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXRfZGV2aWNl LAogCXF1ZXVlX3NlbmRzID0KIAkJYXRvbWljX2RlY19yZXR1cm4oJm5ldF9kZXZpY2UtPmNoYW5f dGFibGVbcV9pZHhdLnF1ZXVlX3NlbmRzKTsKIAotCWlmIChuZXRfZGV2aWNlLT5kZXN0cm95ICYm IHF1ZXVlX3NlbmRzID09IDApCi0JCXdha2VfdXAoJm5ldF9kZXZpY2UtPndhaXRfZHJhaW4pOwor CWlmICh1bmxpa2VseShuZXRfZGV2aWNlLT5kZXN0cm95KSkgeworCQlpZiAocXVldWVfc2VuZHMg PT0gMCkKKwkJCXdha2VfdXAoJm5ldF9kZXZpY2UtPndhaXRfZHJhaW4pOworCX0gZWxzZSB7CisJ CXN0cnVjdCBuZXRkZXZfcXVldWUgKnR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUobmRldiwgcV9p ZHgpOwogCi0JaWYgKG5ldGlmX3R4X3F1ZXVlX3N0b3BwZWQobmV0ZGV2X2dldF90eF9xdWV1ZShu ZGV2LCBxX2lkeCkpICYmCi0JICAgIChodl9yaW5nYnVmX2F2YWlsX3BlcmNlbnQoJmNoYW5uZWwt Pm91dGJvdW5kKSA+IFJJTkdfQVZBSUxfUEVSQ0VOVF9ISVdBVEVSIHx8Ci0JICAgICBxdWV1ZV9z ZW5kcyA8IDEpKSB7Ci0JCW5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShu ZGV2LCBxX2lkeCkpOwotCQluZGV2X2N0eC0+ZXRoX3N0YXRzLndha2VfcXVldWUrKzsKKwkJaWYg KG5ldGlmX3R4X3F1ZXVlX3N0b3BwZWQodHhxKSAmJgorCQkgICAgKGh2X3JpbmdidWZfYXZhaWxf cGVyY2VudCgmY2hhbm5lbC0+b3V0Ym91bmQpID4gUklOR19BVkFJTF9QRVJDRU5UX0hJV0FURVIg fHwKKwkJICAgICBxdWV1ZV9zZW5kcyA8IDEpKSB7CisJCQluZXRpZl90eF93YWtlX3F1ZXVlKHR4 cSk7CisJCQluZGV2X2N0eC0+ZXRoX3N0YXRzLndha2VfcXVldWUrKzsKKwkJfQogCX0KIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzY19kcnYuYyBiL2RyaXZlcnMvbmV0 L2h5cGVydi9uZXR2c2NfZHJ2LmMKaW5kZXggZmFlYTBiZTE4OTI0Li43MjFmYWM3Y2FkODEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2NfZHJ2LmMKKysrIGIvZHJpdmVycy9u ZXQvaHlwZXJ2L25ldHZzY19kcnYuYwpAQCAtNDYsNyArNDYsOCBAQAogCiAjaW5jbHVkZSAiaHlw ZXJ2X25ldC5oIgogCi0jZGVmaW5lIFJJTkdfU0laRV9NSU4JCTY0CisjZGVmaW5lIFJJTkdfU0la RV9NSU4JNjQKKyNkZWZpbmUgUkVUUllfTUFYCTIwMDAKIAogI2RlZmluZSBMSU5LQ0hBTkdFX0lO VCAoMiAqIEhaKQogI2RlZmluZSBWRl9UQUtFT1ZFUl9JTlQgKEhaIC8gMTApCkBAIC0xMjMsMTAg KzEyNCw4IEBAIHN0YXRpYyBpbnQgbmV0dnNjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldCkK IAl9CiAKIAlyZGV2ID0gbnZkZXYtPmV4dGVuc2lvbjsKLQlpZiAoIXJkZXYtPmxpbmtfc3RhdGUp IHsKKwlpZiAoIXJkZXYtPmxpbmtfc3RhdGUpCiAJCW5ldGlmX2NhcnJpZXJfb24obmV0KTsKLQkJ bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5ldCk7Ci0JfQogCiAJaWYgKHZmX25ldGRldikgewog CQkvKiBTZXR0aW5nIHN5bnRoZXRpYyBkZXZpY2UgdXAgdHJhbnNwYXJlbnRseSBzZXRzCkBAIC0x NDIsMzYgKzE0MSwyNSBAQCBzdGF0aWMgaW50IG5ldHZzY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNl ICpuZXQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbmV0dnNjX2Nsb3NlKHN0cnVjdCBu ZXRfZGV2aWNlICpuZXQpCitzdGF0aWMgaW50IG5ldHZzY193YWl0X3VudGlsX2VtcHR5KHN0cnVj dCBuZXR2c2NfZGV2aWNlICpudmRldikKIHsKLQlzdHJ1Y3QgbmV0X2RldmljZV9jb250ZXh0ICpu ZXRfZGV2aWNlX2N0eCA9IG5ldGRldl9wcml2KG5ldCk7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKnZm X25ldGRldgotCQk9IHJ0bmxfZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtPnZmX25ldGRldik7 Ci0Jc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2ID0gcnRubF9kZXJlZmVyZW5jZShuZXRfZGV2 aWNlX2N0eC0+bnZkZXYpOwotCWludCByZXQgPSAwOwotCXUzMiBhcmVhZCwgaSwgbXNlYyA9IDEw LCByZXRyeSA9IDAsIHJldHJ5X21heCA9IDIwOwotCXN0cnVjdCB2bWJ1c19jaGFubmVsICpjaG47 Ci0KLQluZXRpZl90eF9kaXNhYmxlKG5ldCk7Ci0KLQkvKiBObyBuZWVkIHRvIGNsb3NlIHJuZGlz IGZpbHRlciBpZiBpdCBpcyByZW1vdmVkIGFscmVhZHkgKi8KLQlpZiAoIW52ZGV2KQotCQlnb3Rv IG91dDsKLQotCXJldCA9IHJuZGlzX2ZpbHRlcl9jbG9zZShudmRldik7Ci0JaWYgKHJldCAhPSAw KSB7Ci0JCW5ldGRldl9lcnIobmV0LCAidW5hYmxlIHRvIGNsb3NlIGRldmljZSAocmV0ICVkKS5c biIsIHJldCk7Ci0JCXJldHVybiByZXQ7Ci0JfQorCXVuc2lnbmVkIGludCByZXRyeSA9IDA7CisJ aW50IGk7CiAKIAkvKiBFbnN1cmUgcGVuZGluZyBieXRlcyBpbiByaW5nIGFyZSByZWFkICovCi0J d2hpbGUgKHRydWUpIHsKLQkJYXJlYWQgPSAwOworCWZvciAoOzspIHsKKwkJdTMyIGFyZWFkID0g MDsKKwogCQlmb3IgKGkgPSAwOyBpIDwgbnZkZXYtPm51bV9jaG47IGkrKykgewotCQkJY2huID0g bnZkZXYtPmNoYW5fdGFibGVbaV0uY2hhbm5lbDsKKwkJCXN0cnVjdCB2bWJ1c19jaGFubmVsICpj aG4KKwkJCQk9IG52ZGV2LT5jaGFuX3RhYmxlW2ldLmNoYW5uZWw7CisKIAkJCWlmICghY2huKQog CQkJCWNvbnRpbnVlOwogCisJCQkvKiBtYWtlIHN1cmUgcmVjZWl2ZSBub3QgcnVubmluZyBub3cg Ki8KKwkJCW5hcGlfc3luY2hyb25pemUoJm52ZGV2LT5jaGFuX3RhYmxlW2ldLm5hcGkpOworCiAJ CQlhcmVhZCA9IGh2X2dldF9ieXRlc190b19yZWFkKCZjaG4tPmluYm91bmQpOwogCQkJaWYgKGFy ZWFkKQogCQkJCWJyZWFrOwpAQCAtMTgxLDIyICsxNjksNDAgQEAgc3RhdGljIGludCBuZXR2c2Nf Y2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCkKIAkJCQlicmVhazsKIAkJfQogCi0JCXJldHJ5 Kys7Ci0JCWlmIChyZXRyeSA+IHJldHJ5X21heCB8fCBhcmVhZCA9PSAwKQotCQkJYnJlYWs7CisJ CWlmIChhcmVhZCA9PSAwKQorCQkJcmV0dXJuIDA7CiAKLQkJbXNsZWVwKG1zZWMpOworCQlpZiAo KytyZXRyeSA+IFJFVFJZX01BWCkKKwkJCXJldHVybiAtRVRJTUVET1VUOwogCi0JCWlmIChtc2Vj IDwgMTAwMCkKLQkJCW1zZWMgKj0gMjsKKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwogCX0K K30KIAotCWlmIChhcmVhZCkgewotCQluZXRkZXZfZXJyKG5ldCwgIlJpbmcgYnVmZmVyIG5vdCBl bXB0eSBhZnRlciBjbG9zaW5nIHJuZGlzXG4iKTsKLQkJcmV0ID0gLUVUSU1FRE9VVDsKK3N0YXRp YyBpbnQgbmV0dnNjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpCit7CisJc3RydWN0IG5l dF9kZXZpY2VfY29udGV4dCAqbmV0X2RldmljZV9jdHggPSBuZXRkZXZfcHJpdihuZXQpOworCXN0 cnVjdCBuZXRfZGV2aWNlICp2Zl9uZXRkZXYKKwkJPSBydG5sX2RlcmVmZXJlbmNlKG5ldF9kZXZp Y2VfY3R4LT52Zl9uZXRkZXYpOworCXN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldiA9IHJ0bmxf ZGVyZWZlcmVuY2UobmV0X2RldmljZV9jdHgtPm52ZGV2KTsKKwlpbnQgcmV0OworCisJbmV0aWZf dHhfZGlzYWJsZShuZXQpOworCisJLyogTm8gbmVlZCB0byBjbG9zZSBybmRpcyBmaWx0ZXIgaWYg aXQgaXMgcmVtb3ZlZCBhbHJlYWR5ICovCisJaWYgKCFudmRldikKKwkJcmV0dXJuIDA7CisKKwly ZXQgPSBybmRpc19maWx0ZXJfY2xvc2UobnZkZXYpOworCWlmIChyZXQgIT0gMCkgeworCQluZXRk ZXZfZXJyKG5ldCwgInVuYWJsZSB0byBjbG9zZSBkZXZpY2UgKHJldCAlZCkuXG4iLCByZXQpOwor CQlyZXR1cm4gcmV0OwogCX0KIAotb3V0OgorCXJldCA9IG5ldHZzY193YWl0X3VudGlsX2VtcHR5 KG52ZGV2KTsKKwlpZiAocmV0KQorCQluZXRkZXZfZXJyKG5ldCwgIlJpbmcgYnVmZmVyIG5vdCBl bXB0eSBhZnRlciBjbG9zaW5nIHJuZGlzXG4iKTsKKwogCWlmICh2Zl9uZXRkZXYpCiAJCWRldl9j bG9zZSh2Zl9uZXRkZXYpOwogCkBAIC04NDUsMTYgKzg1MSw3NiBAQCBzdGF0aWMgdm9pZCBuZXR2 c2NfZ2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsCiAJfQogfQogCitzdGF0aWMg aW50IG5ldHZzY19kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCisJCQkgc3RydWN0IG5l dHZzY19kZXZpY2UgKm52ZGV2KQoreworCXN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQgKm5kZXZf Y3R4ID0gbmV0ZGV2X3ByaXYobmRldik7CisJc3RydWN0IGh2X2RldmljZSAqaGRldiA9IG5kZXZf Y3R4LT5kZXZpY2VfY3R4OworCWludCByZXQ7CisKKwkvKiBEb24ndCB0cnkgY29udGludWluZyB0 byB0cnkgYW5kIHNldHVwIHN1YiBjaGFubmVscyAqLworCWlmIChjYW5jZWxfd29ya19zeW5jKCZu dmRldi0+c3ViY2hhbl93b3JrKSkKKwkJbnZkZXYtPm51bV9jaG4gPSAxOworCisJLyogSWYgZGV2 aWNlIHdhcyB1cCAocmVjZWl2aW5nKSB0aGVuIHNodXRkb3duICovCisJaWYgKG5ldGlmX3J1bm5p bmcobmRldikpIHsKKwkJbmV0aWZfdHhfZGlzYWJsZShuZGV2KTsKKworCQlyZXQgPSBybmRpc19m aWx0ZXJfY2xvc2UobnZkZXYpOworCQlpZiAocmV0KSB7CisJCQluZXRkZXZfZXJyKG5kZXYsCisJ CQkJICAgInVuYWJsZSB0byBjbG9zZSBkZXZpY2UgKHJldCAlZCkuXG4iLCByZXQpOworCQkJcmV0 dXJuIHJldDsKKwkJfQorCisJCXJldCA9IG5ldHZzY193YWl0X3VudGlsX2VtcHR5KG52ZGV2KTsK KwkJaWYgKHJldCkgeworCQkJbmV0ZGV2X2VycihuZGV2LAorCQkJCSAgICJSaW5nIGJ1ZmZlciBu b3QgZW1wdHkgYWZ0ZXIgY2xvc2luZyBybmRpc1xuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisJ fQorCisJcm5kaXNfZmlsdGVyX2RldmljZV9yZW1vdmUoaGRldiwgbnZkZXYpOworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IG5ldHZzY19hdHRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYs CisJCQkgc3RydWN0IG5ldHZzY19kZXZpY2VfaW5mbyAqZGV2X2luZm8pCit7CisJc3RydWN0IG5l dF9kZXZpY2VfY29udGV4dCAqbmRldl9jdHggPSBuZXRkZXZfcHJpdihuZGV2KTsKKwlzdHJ1Y3Qg aHZfZGV2aWNlICpoZGV2ID0gbmRldl9jdHgtPmRldmljZV9jdHg7CisJc3RydWN0IG5ldHZzY19k ZXZpY2UgKm52ZGV2OworCXN0cnVjdCBybmRpc19kZXZpY2UgKnJkZXY7CisJaW50IHJldDsKKwor CW52ZGV2ID0gcm5kaXNfZmlsdGVyX2RldmljZV9hZGQoaGRldiwgZGV2X2luZm8pOworCWlmIChJ U19FUlIobnZkZXYpKQorCQlyZXR1cm4gUFRSX0VSUihudmRldik7CisKKwluZXRpZl9jYXJyaWVy X29mZihuZGV2KTsKKworCWlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7CisJCXJldCA9IHJuZGlz X2ZpbHRlcl9vcGVuKG52ZGV2KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcmRl diA9IG52ZGV2LT5leHRlbnNpb247CisJCWlmICghcmRldi0+bGlua19zdGF0ZSkKKwkJCW5ldGlm X2NhcnJpZXJfb24obmRldik7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgbmV0 dnNjX3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LAogCQkJICAgICAgIHN0cnVj dCBldGh0b29sX2NoYW5uZWxzICpjaGFubmVscykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZV9jb250 ZXh0ICpuZXRfZGV2aWNlX2N0eCA9IG5ldGRldl9wcml2KG5ldCk7Ci0Jc3RydWN0IGh2X2Rldmlj ZSAqZGV2ID0gbmV0X2RldmljZV9jdHgtPmRldmljZV9jdHg7CiAJc3RydWN0IG5ldHZzY19kZXZp Y2UgKm52ZGV2ID0gcnRubF9kZXJlZmVyZW5jZShuZXRfZGV2aWNlX2N0eC0+bnZkZXYpOwogCXVu c2lnbmVkIGludCBvcmlnLCBjb3VudCA9IGNoYW5uZWxzLT5jb21iaW5lZF9jb3VudDsKIAlzdHJ1 Y3QgbmV0dnNjX2RldmljZV9pbmZvIGRldmljZV9pbmZvOwotCWJvb2wgd2FzX29wZW5lZDsKLQlp bnQgcmV0ID0gMDsKKwlpbnQgcmV0OwogCiAJLyogV2UgZG8gbm90IHN1cHBvcnQgc2VwYXJhdGUg Y291bnQgZm9yIHJ4LCB0eCwgb3Igb3RoZXIgKi8KIAlpZiAoY291bnQgPT0gMCB8fApAQCAtODcx LDkgKzkzNyw2IEBAIHN0YXRpYyBpbnQgbmV0dnNjX3NldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2Rl dmljZSAqbmV0LAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCW9yaWcgPSBudmRldi0+bnVtX2NobjsK LQl3YXNfb3BlbmVkID0gcm5kaXNfZmlsdGVyX29wZW5lZChudmRldik7Ci0JaWYgKHdhc19vcGVu ZWQpCi0JCXJuZGlzX2ZpbHRlcl9jbG9zZShudmRldik7CiAKIAltZW1zZXQoJmRldmljZV9pbmZv LCAwLCBzaXplb2YoZGV2aWNlX2luZm8pKTsKIAlkZXZpY2VfaW5mby5udW1fY2huID0gY291bnQ7 CkBAIC04ODIsMjggKzk0NSwxNyBAQCBzdGF0aWMgaW50IG5ldHZzY19zZXRfY2hhbm5lbHMoc3Ry dWN0IG5ldF9kZXZpY2UgKm5ldCwKIAlkZXZpY2VfaW5mby5yZWN2X3NlY3Rpb25zID0gbnZkZXYt PnJlY3Zfc2VjdGlvbl9jbnQ7CiAJZGV2aWNlX2luZm8ucmVjdl9zZWN0aW9uX3NpemUgPSBudmRl di0+cmVjdl9zZWN0aW9uX3NpemU7CiAKLQlybmRpc19maWx0ZXJfZGV2aWNlX3JlbW92ZShkZXYs IG52ZGV2KTsKKwlyZXQgPSBuZXR2c2NfZGV0YWNoKG5ldCwgbnZkZXYpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CiAKLQludmRldiA9IHJuZGlzX2ZpbHRlcl9kZXZpY2VfYWRkKGRldiwgJmRl dmljZV9pbmZvKTsKLQlpZiAoSVNfRVJSKG52ZGV2KSkgewotCQlyZXQgPSBQVFJfRVJSKG52ZGV2 KTsKKwlyZXQgPSBuZXR2c2NfYXR0YWNoKG5ldCwgJmRldmljZV9pbmZvKTsKKwlpZiAocmV0KSB7 CiAJCWRldmljZV9pbmZvLm51bV9jaG4gPSBvcmlnOwotCQludmRldiA9IHJuZGlzX2ZpbHRlcl9k ZXZpY2VfYWRkKGRldiwgJmRldmljZV9pbmZvKTsKLQotCQlpZiAoSVNfRVJSKG52ZGV2KSkgewot CQkJbmV0ZGV2X2VycihuZXQsICJyZXN0b3JpbmcgY2hhbm5lbCBzZXR0aW5nIGZhaWxlZDogJWxk XG4iLAotCQkJCSAgIFBUUl9FUlIobnZkZXYpKTsKLQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJaWYg KG5ldHZzY19hdHRhY2gobmV0LCAmZGV2aWNlX2luZm8pKQorCQkJbmV0ZGV2X2VycihuZXQsICJy ZXN0b3JpbmcgY2hhbm5lbCBzZXR0aW5nIGZhaWxlZFxuIik7CiAJfQogCi0JaWYgKHdhc19vcGVu ZWQpCi0JCXJuZGlzX2ZpbHRlcl9vcGVuKG52ZGV2KTsKLQotCS8qIFdlIG1heSBoYXZlIG1pc3Nl ZCBsaW5rIGNoYW5nZSBub3RpZmljYXRpb25zICovCi0JbmV0X2RldmljZV9jdHgtPmxhc3RfcmVj b25maWcgPSAwOwotCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbmV0X2RldmljZV9jdHgtPmR3b3Jr LCAwKTsKLQogCXJldHVybiByZXQ7CiB9CiAKQEAgLTk2OSwxMCArMTAyMSw4IEBAIHN0YXRpYyBp bnQgbmV0dnNjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBtdHUpCiAJ c3RydWN0IG5ldF9kZXZpY2VfY29udGV4dCAqbmRldmN0eCA9IG5ldGRldl9wcml2KG5kZXYpOwog CXN0cnVjdCBuZXRfZGV2aWNlICp2Zl9uZXRkZXYgPSBydG5sX2RlcmVmZXJlbmNlKG5kZXZjdHgt PnZmX25ldGRldik7CiAJc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2ID0gcnRubF9kZXJlZmVy ZW5jZShuZGV2Y3R4LT5udmRldik7Ci0Jc3RydWN0IGh2X2RldmljZSAqaGRldiA9IG5kZXZjdHgt PmRldmljZV9jdHg7CiAJaW50IG9yaWdfbXR1ID0gbmRldi0+bXR1OwogCXN0cnVjdCBuZXR2c2Nf ZGV2aWNlX2luZm8gZGV2aWNlX2luZm87Ci0JYm9vbCB3YXNfb3BlbmVkOwogCWludCByZXQgPSAw OwogCiAJaWYgKCFudmRldiB8fCBudmRldi0+ZGVzdHJveSkKQEAgLTk4NSwxMSArMTAzNSw2IEBA IHN0YXRpYyBpbnQgbmV0dnNjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGlu dCBtdHUpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCW5ldGlmX2RldmljZV9kZXRhY2gobmRldik7 Ci0Jd2FzX29wZW5lZCA9IHJuZGlzX2ZpbHRlcl9vcGVuZWQobnZkZXYpOwotCWlmICh3YXNfb3Bl bmVkKQotCQlybmRpc19maWx0ZXJfY2xvc2UobnZkZXYpOwotCiAJbWVtc2V0KCZkZXZpY2VfaW5m bywgMCwgc2l6ZW9mKGRldmljZV9pbmZvKSk7CiAJZGV2aWNlX2luZm8ubnVtX2NobiA9IG52ZGV2 LT5udW1fY2huOwogCWRldmljZV9pbmZvLnNlbmRfc2VjdGlvbnMgPSBudmRldi0+c2VuZF9zZWN0 aW9uX2NudDsKQEAgLTk5NywzNSArMTA0MiwyNyBAQCBzdGF0aWMgaW50IG5ldHZzY19jaGFuZ2Vf bXR1KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBpbnQgbXR1KQogCWRldmljZV9pbmZvLnJlY3Zf c2VjdGlvbnMgPSBudmRldi0+cmVjdl9zZWN0aW9uX2NudDsKIAlkZXZpY2VfaW5mby5yZWN2X3Nl Y3Rpb25fc2l6ZSA9IG52ZGV2LT5yZWN2X3NlY3Rpb25fc2l6ZTsKIAotCXJuZGlzX2ZpbHRlcl9k ZXZpY2VfcmVtb3ZlKGhkZXYsIG52ZGV2KTsKKwlyZXQgPSBuZXR2c2NfZGV0YWNoKG5kZXYsIG52 ZGV2KTsKKwlpZiAocmV0KQorCQlnb3RvIHJvbGxiYWNrX3ZmOwogCiAJbmRldi0+bXR1ID0gbXR1 OwogCi0JbnZkZXYgPSBybmRpc19maWx0ZXJfZGV2aWNlX2FkZChoZGV2LCAmZGV2aWNlX2luZm8p OwotCWlmIChJU19FUlIobnZkZXYpKSB7Ci0JCXJldCA9IFBUUl9FUlIobnZkZXYpOwotCi0JCS8q IEF0dGVtcHQgcm9sbGJhY2sgdG8gb3JpZ2luYWwgTVRVICovCi0JCW5kZXYtPm10dSA9IG9yaWdf bXR1OwotCQludmRldiA9IHJuZGlzX2ZpbHRlcl9kZXZpY2VfYWRkKGhkZXYsICZkZXZpY2VfaW5m byk7Ci0KLQkJaWYgKHZmX25ldGRldikKLQkJCWRldl9zZXRfbXR1KHZmX25ldGRldiwgb3JpZ19t dHUpOwotCi0JCWlmIChJU19FUlIobnZkZXYpKSB7Ci0JCQluZXRkZXZfZXJyKG5kZXYsICJyZXN0 b3JpbmcgbXR1IGZhaWxlZDogJWxkXG4iLAotCQkJCSAgIFBUUl9FUlIobnZkZXYpKTsKLQkJCXJl dHVybiByZXQ7Ci0JCX0KLQl9CisJcmV0ID0gbmV0dnNjX2F0dGFjaChuZGV2LCAmZGV2aWNlX2lu Zm8pOworCWlmIChyZXQpCisJCWdvdG8gcm9sbGJhY2s7CiAKLQlpZiAod2FzX29wZW5lZCkKLQkJ cm5kaXNfZmlsdGVyX29wZW4obnZkZXYpOworCXJldHVybiAwOwogCi0JbmV0aWZfZGV2aWNlX2F0 dGFjaChuZGV2KTsKK3JvbGxiYWNrOgorCS8qIEF0dGVtcHQgcm9sbGJhY2sgdG8gb3JpZ2luYWwg TVRVICovCisJbmRldi0+bXR1ID0gb3JpZ19tdHU7CiAKLQkvKiBXZSBtYXkgaGF2ZSBtaXNzZWQg bGluayBjaGFuZ2Ugbm90aWZpY2F0aW9ucyAqLwotCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbmRl dmN0eC0+ZHdvcmssIDApOworCWlmIChuZXR2c2NfYXR0YWNoKG5kZXYsICZkZXZpY2VfaW5mbykp CisJCW5ldGRldl9lcnIobmRldiwgInJlc3RvcmluZyBtdHUgZmFpbGVkXG4iKTsKK3JvbGxiYWNr X3ZmOgorCWlmICh2Zl9uZXRkZXYpCisJCWRldl9zZXRfbXR1KHZmX25ldGRldiwgb3JpZ19tdHUp OwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTE1MzEsMTEgKzE1NjgsOSBAQCBzdGF0aWMgaW50IG5l dHZzY19zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogewogCXN0cnVjdCBu ZXRfZGV2aWNlX2NvbnRleHQgKm5kZXZjdHggPSBuZXRkZXZfcHJpdihuZGV2KTsKIAlzdHJ1Y3Qg bmV0dnNjX2RldmljZSAqbnZkZXYgPSBydG5sX2RlcmVmZXJlbmNlKG5kZXZjdHgtPm52ZGV2KTsK LQlzdHJ1Y3QgaHZfZGV2aWNlICpoZGV2ID0gbmRldmN0eC0+ZGV2aWNlX2N0eDsKIAlzdHJ1Y3Qg bmV0dnNjX2RldmljZV9pbmZvIGRldmljZV9pbmZvOwogCXN0cnVjdCBldGh0b29sX3JpbmdwYXJh bSBvcmlnOwogCXUzMiBuZXdfdHgsIG5ld19yeDsKLQlib29sIHdhc19vcGVuZWQ7CiAJaW50IHJl dCA9IDA7CiAKIAlpZiAoIW52ZGV2IHx8IG52ZGV2LT5kZXN0cm95KQpAQCAtMTU2MCwzNCArMTU5 NSwxOCBAQCBzdGF0aWMgaW50IG5ldHZzY19zZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNl ICpuZGV2LAogCWRldmljZV9pbmZvLnJlY3Zfc2VjdGlvbnMgPSBuZXdfcng7CiAJZGV2aWNlX2lu Zm8ucmVjdl9zZWN0aW9uX3NpemUgPSBudmRldi0+cmVjdl9zZWN0aW9uX3NpemU7CiAKLQluZXRp Zl9kZXZpY2VfZGV0YWNoKG5kZXYpOwotCXdhc19vcGVuZWQgPSBybmRpc19maWx0ZXJfb3BlbmVk KG52ZGV2KTsKLQlpZiAod2FzX29wZW5lZCkKLQkJcm5kaXNfZmlsdGVyX2Nsb3NlKG52ZGV2KTsK LQotCXJuZGlzX2ZpbHRlcl9kZXZpY2VfcmVtb3ZlKGhkZXYsIG52ZGV2KTsKLQotCW52ZGV2ID0g cm5kaXNfZmlsdGVyX2RldmljZV9hZGQoaGRldiwgJmRldmljZV9pbmZvKTsKLQlpZiAoSVNfRVJS KG52ZGV2KSkgewotCQlyZXQgPSBQVFJfRVJSKG52ZGV2KTsKKwlyZXQgPSBuZXR2c2NfZGV0YWNo KG5kZXYsIG52ZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCisJcmV0ID0gbmV0dnNj X2F0dGFjaChuZGV2LCAmZGV2aWNlX2luZm8pOworCWlmIChyZXQpIHsKIAkJZGV2aWNlX2luZm8u c2VuZF9zZWN0aW9ucyA9IG9yaWcudHhfcGVuZGluZzsKIAkJZGV2aWNlX2luZm8ucmVjdl9zZWN0 aW9ucyA9IG9yaWcucnhfcGVuZGluZzsKLQkJbnZkZXYgPSBybmRpc19maWx0ZXJfZGV2aWNlX2Fk ZChoZGV2LCAmZGV2aWNlX2luZm8pOwotCQlpZiAoSVNfRVJSKG52ZGV2KSkgewotCQkJbmV0ZGV2 X2VycihuZGV2LCAicmVzdG9yaW5nIHJpbmdwYXJhbSBmYWlsZWQ6ICVsZFxuIiwKLQkJCQkgICBQ VFJfRVJSKG52ZGV2KSk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9Ci0JfQotCi0JaWYgKHdhc19vcGVu ZWQpCi0JCXJuZGlzX2ZpbHRlcl9vcGVuKG52ZGV2KTsKLQluZXRpZl9kZXZpY2VfYXR0YWNoKG5k ZXYpOwogCi0JLyogV2UgbWF5IGhhdmUgbWlzc2VkIGxpbmsgY2hhbmdlIG5vdGlmaWNhdGlvbnMg Ki8KLQluZGV2Y3R4LT5sYXN0X3JlY29uZmlnID0gMDsKLQlzY2hlZHVsZV9kZWxheWVkX3dvcmso Jm5kZXZjdHgtPmR3b3JrLCAwKTsKKwkJaWYgKG5ldHZzY19hdHRhY2gobmRldiwgJmRldmljZV9p bmZvKSkKKwkJCW5ldGRldl9lcnIobmRldiwgInJlc3RvcmluZyByaW5ncGFyYW0gZmFpbGVkIik7 CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTIwNzIsOCArMjA5MSw4IEBAIHN0YXRpYyBpbnQg bmV0dnNjX3Byb2JlKHN0cnVjdCBodl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgbmV0dnNjX3Jl bW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG5ldF9kZXZpY2VfY29udGV4 dCAqbmRldl9jdHg7Ci0Jc3RydWN0IG5ldF9kZXZpY2UgKnZmX25ldGRldjsKLQlzdHJ1Y3QgbmV0 X2RldmljZSAqbmV0OworCXN0cnVjdCBuZXRfZGV2aWNlICp2Zl9uZXRkZXYsICpuZXQ7CisJc3Ry dWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2OwogCiAJbmV0ID0gaHZfZ2V0X2RydmRhdGEoZGV2KTsK IAlpZiAobmV0ID09IE5VTEwpIHsKQEAgLTIwODMsOCArMjEwMiw2IEBAIHN0YXRpYyBpbnQgbmV0 dnNjX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpCiAKIAluZGV2X2N0eCA9IG5ldGRldl9w cml2KG5ldCk7CiAKLQluZXRpZl9kZXZpY2VfZGV0YWNoKG5ldCk7Ci0KIAljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJm5kZXZfY3R4LT5kd29yayk7CiAKIAkvKgpAQCAtMjA5MiwxNCArMjEwOSwx OSBAQCBzdGF0aWMgaW50IG5ldHZzY19yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2KQogCSAq IHJlbW92ZWQuIEFsc28gYmxvY2tzIG10dSBhbmQgY2hhbm5lbCBjaGFuZ2VzLgogCSAqLwogCXJ0 bmxfbG9jaygpOworCiAJdmZfbmV0ZGV2ID0gcnRubF9kZXJlZmVyZW5jZShuZGV2X2N0eC0+dmZf bmV0ZGV2KTsKIAlpZiAodmZfbmV0ZGV2KQogCQluZXR2c2NfdW5yZWdpc3Rlcl92Zih2Zl9uZXRk ZXYpOwogCisJbnZkZXYgPSBydG5sX2RlcmVmZXJlbmNlKG5kZXZfY3R4LT5udmRldik7CisJaWYg KG52ZGV2KSB7CisJCWNhbmNlbF93b3JrX3N5bmMoJm52ZGV2LT5zdWJjaGFuX3dvcmspOworCQly bmRpc19maWx0ZXJfZGV2aWNlX3JlbW92ZShkZXYsIG52ZGV2KTsKKwl9CisKIAl1bnJlZ2lzdGVy X25ldGRldmljZShuZXQpOwogCi0Jcm5kaXNfZmlsdGVyX2RldmljZV9yZW1vdmUoZGV2LAotCQkJ CSAgIHJ0bmxfZGVyZWZlcmVuY2UobmRldl9jdHgtPm52ZGV2KSk7CiAJcnRubF91bmxvY2soKTsK IAogCWh2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9o eXBlcnYvcm5kaXNfZmlsdGVyLmMgYi9kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMK aW5kZXggYTk3NDZmOWZiZjRiLi4zY2NiMGM2MjYzYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L2h5cGVydi9ybmRpc19maWx0ZXIuYworKysgYi9kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmls dGVyLmMKQEAgLTExMjIsNiArMTEyMiw3IEBAIHZvaWQgcm5kaXNfc2V0X3N1YmNoYW5uZWwoc3Ry dWN0IHdvcmtfc3RydWN0ICp3KQogCWZvciAoaSA9IDA7IGkgPCBWUlNTX1NFTkRfVEFCX1NJWkU7 IGkrKykKIAkJbmRldl9jdHgtPnR4X3RhYmxlW2ldID0gaSAlIG52ZGV2LT5udW1fY2huOwogCisJ bmV0aWZfdHhfd2FrZV9hbGxfcXVldWVzKG5kZXYpOwogCXJ0bmxfdW5sb2NrKCk7CiAJcmV0dXJu OwogCkBAIC0xMTMyLDYgKzExMzMsNyBAQCB2b2lkIHJuZGlzX3NldF9zdWJjaGFubmVsKHN0cnVj dCB3b3JrX3N0cnVjdCAqdykKIAogCW52ZGV2LT5tYXhfY2huID0gMTsKIAludmRldi0+bnVtX2No biA9IDE7CisJbmV0aWZfd2FrZV9xdWV1ZShuZGV2KTsKIHVubG9jazoKIAlydG5sX3VubG9jaygp OwogfQpAQCAtMTMyNiw2ICsxMzI4LDggQEAgc3RydWN0IG5ldHZzY19kZXZpY2UgKnJuZGlzX2Zp bHRlcl9kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldiwKIAogCWlmIChuZXRfZGV2aWNl LT5udW1fY2huID4gMSkKIAkJc2NoZWR1bGVfd29yaygmbmV0X2RldmljZS0+c3ViY2hhbl93b3Jr KTsKKwllbHNlCisJCW5ldGlmX3dha2VfcXVldWUobmV0KTsKIAogb3V0OgogCS8qIGlmIHVuYXZh aWxhYmxlLCBqdXN0IHByb2NlZWQgd2l0aCBvbmUgcXVldWUgKi8KQEAgLTEzNDYsOSArMTM1MCw2 IEBAIHZvaWQgcm5kaXNfZmlsdGVyX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2 LAogewogCXN0cnVjdCBybmRpc19kZXZpY2UgKnJuZGlzX2RldiA9IG5ldF9kZXYtPmV4dGVuc2lv bjsKIAotCS8qIERvbid0IHRyeSBhbmQgc2V0dXAgc3ViIGNoYW5uZWxzIGlmIGFib3V0IHRvIGhh bHQgKi8KLQljYW5jZWxfd29ya19zeW5jKCZuZXRfZGV2LT5zdWJjaGFuX3dvcmspOwotCiAJLyog SGFsdCBhbmQgcmVsZWFzZSB0aGUgcm5kaXMgZGV2aWNlICovCiAJcm5kaXNfZmlsdGVyX2hhbHRf ZGV2aWNlKG5ldF9kZXYsIHJuZGlzX2Rldik7CiAKQEAgLTEzNzIsMTAgKzEzNzMsMyBAQCBpbnQg cm5kaXNfZmlsdGVyX2Nsb3NlKHN0cnVjdCBuZXR2c2NfZGV2aWNlICpudmRldikKIAogCXJldHVy biBybmRpc19maWx0ZXJfY2xvc2VfZGV2aWNlKG52ZGV2LT5leHRlbnNpb24pOwogfQotCi1ib29s IHJuZGlzX2ZpbHRlcl9vcGVuZWQoY29uc3Qgc3RydWN0IG5ldHZzY19kZXZpY2UgKm52ZGV2KQot ewotCWNvbnN0IHN0cnVjdCBybmRpc19kZXZpY2UgKmRldiA9IG52ZGV2LT5leHRlbnNpb247Ci0K LQlyZXR1cm4gZGV2LT5zdGF0ZSA9PSBSTkRJU19ERVZfREFUQUlOSVRJQUxJWkVEOwotfQotLSAK Mi4xNi4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZGV2ZWwgbWFpbGluZyBsaXN0CmRldmVsQGxpbnV4ZHJpdmVycHJvamVjdC5vcmcKaHR0cDovL2Ry aXZlcmRldi5saW51eGRyaXZlcnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2 LWRldmVsCg==