From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65791C43381 for ; Mon, 1 Apr 2019 18:41:54 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2DAF3206C0 for ; Mon, 1 Apr 2019 18:41:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Dt+Fu0/o"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="Lmfp8mfm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2DAF3206C0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ok6XdNMAhUFqZkVWNJPv9S3GLRy3BPFuodKza57F/pQ=; b=Dt+Fu0/oeL2y9A 717LLmzjmAMRq+oAvyg7SWya5hNBbvzuUKJCHqMFBMer70p1vvbemsfu+5OEg3ZyMUP52eIAU/QzX ctfZ7X/pzZqlDtUUQb90Kxmzbj/GMcdPZZOQV+T622mcBtG4Hq5Hi4vAN8y8enPsRtbeEPSIjYzSC i3dV9tLASdfzUbJKUFGhSYJYVI6iRitrz5ZDkpjKta9wGmGvv9aUHfZALZEU46V+gtFbHzkyx4pnk Knz08kMDn1hss8ibpZpEvd3yXY9+7qvoPoAK83pTL5raxdaM+3BEKfVIfv/qIv3mE+VbjYy6RHWku XhzQIBTl7jGzy1Sq2pSA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hB1sX-0000Gu-Rj; Mon, 01 Apr 2019 18:41:53 +0000 Received: from us01smtprelay-2.synopsys.com ([198.182.47.9] helo=smtprelay.synopsys.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hB1sU-0000Gb-2t for linux-i3c@lists.infradead.org; Mon, 01 Apr 2019 18:41:52 +0000 Received: from mailhost.synopsys.com (unknown [10.12.135.161]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtprelay.synopsys.com (Postfix) with ESMTPS id 7FA6E24E2977; Mon, 1 Apr 2019 11:41:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1554144109; bh=irEYjwlzcyQE85UxbTrmWLlKSNFeFBRNc05JJSKAysc=; h=Subject:To:CC:References:From:Date:In-Reply-To:From; b=Lmfp8mfmqNVp1p/hhEPfy4z9KhSIH0PkStFGUc9iOoXuwuEGaXvwEmgyEOl27q2y9 MfVjkvvWK3YNliWwjfc/S2dANRDoKMUHyM8I9vnQrJpthrjQcE5s0U2HJ3WcxL0yeH Zqq8EXqHjRkQxNAmcRHwgRTSrcQnmWprfNkgIdurVsZ4BdwG67g8seH/PDrwQEIlGt EUHtI+SzExqqReR6B7ZLuAF/HVhtZYRk5o0c7hKhAfjyPPzIc05gi3+hHjQ9CMwhQh Qn8f/UqcTVU67dDEFFbW6hYFC8c936Gzl7BWGbNukZFJ6vsJ4hCO1S8x6MRDlJxhzR qxOgq+YaVnizA== Received: from us01wehtc1.internal.synopsys.com (us01wehtc1-vip.internal.synopsys.com [10.12.239.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mailhost.synopsys.com (Postfix) with ESMTPS id F32CCA0070; Mon, 1 Apr 2019 18:41:46 +0000 (UTC) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by us01wehtc1.internal.synopsys.com (10.12.239.231) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 1 Apr 2019 11:41:46 -0700 Received: from DE02WEHTCA.internal.synopsys.com (10.225.19.92) by DE02WEHTCB.internal.synopsys.com (10.225.19.94) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 1 Apr 2019 20:41:44 +0200 Received: from [10.0.2.15] (10.107.19.140) by DE02WEHTCA.internal.synopsys.com (10.225.19.80) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 1 Apr 2019 20:41:43 +0200 Subject: Re: [PATCH v4 3/6] i3c: Add support for mastership request to I3C subsystem To: Przemyslaw Gaj , References: <20190310135843.21154-1-pgaj@cadence.com> <20190310135843.21154-4-pgaj@cadence.com> From: vitor Message-ID: <06a6f65b-a397-27c9-fa4f-e2147080be12@synopsys.com> Date: Mon, 1 Apr 2019 19:41:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190310135843.21154-4-pgaj@cadence.com> Content-Language: en-US X-Originating-IP: [10.107.19.140] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190401_114150_141975_AC54CDED X-CRM114-Status: GOOD ( 35.72 ) X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux I3C List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-i3c@lists.infradead.org, agolec@cadence.com, rafalc@cadence.com, vitor.soares@synopsys.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org SGkgUHJ6ZW1laywKCk9uIDEwLzAzLzE5IDEzOjU4LCBQcnplbXlzbGF3IEdhaiB3cm90ZToKPiBU aGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbWFzdGVyc2hpcCByZXF1ZXN0IHRvIEkzQyBzdWJz eXN0ZW0uCj4KPiBNYXN0ZXJzaGlwIGV2ZW50IGlzIGVuYWJsZWQgZ2xvYmFsbHkuCj4KPiBNYXN0 ZXJzaGlwIGlzIHJlcXVlc3RlZCBhdXRvbWF0aWNhbGx5IHdoZW4gZGV2aWNlIGRyaXZlcgo+IHRy aWVzIHRvIHRyYW5zZmVyIGRhdGEgdXNpbmcgbWFzdGVyIGNvbnRyb2xsZXIgaW4gc2xhdmUgbW9k ZS4KPgo+IFRoZXJlIGlzIHN0aWxsIHNvbWUgbGltaXRhdGlvbjoKPiAtIEkyQyBkZXZpY2VzIGFy ZSByZWdpc3RlcmVkIG9uIHNlY29uZGFyeSBtYXN0ZXIgc2lkZSBpZiBib2FyZGluZm8KPiBlbnRy eSBtYXRjaGluZyB0aGUgaW5mbyB0cmFuc21pdHRlZCB0aHJvdWdoIHRoZSBERUZTTFZTIGZyYW1l Lgo+Cj4gU2lnbmVkLW9mZi1ieTogUHJ6ZW15c2xhdyBHYWogPHBnYWpAY2FkZW5jZS5jb20+Cj4K PiAtLS0KPgo+IE1haW4gY2hhbmdlcyBiZXR3ZWVuIHYzIGFuZCB2NDoKPiAtIEFkZCBpM2NfbWFz dGVyX2FjcXVpcmVfYnVzX293bmVyc2hpcCB0byBhY3F1aXJlIHRoZSBidXMKPiAtIFJlZmFjdG9y ZWQgdGhlIGNvZGUKPgo+IE1haW4gY2hhbmdlcyBiZXR3ZWVuIHYyIGFuZCB2MzoKPiAtIEFkZCBp M2NfYnVzX2Rvd25ncmFkZV9tYWludGVuYW5jZV9sb2NrKCkgZm9yIGRvd25ncmFkaW5nIHRoZSBi dXMKPiBsb2NrIGZyb20gbWFpbnRlbmFuY2UgdG8gbm9ybWFsIHVzZQo+IC0gQWRkIGFkZGl0aW9u YWwgZmllbGRzIHRvIGkyY19kZXZfZGVzYyBmb3IgREVGU0xWUyBwdXJwb3NlIChhZGRyLCBsdnIp Cj4gLSBBZGQgaTNjX21hc3Rlcl9yZWdpc3Rlcl9uZXdfaTJjX2RldnMoKSBmdW5jdGlvbiB0byBy ZWdpc3RlciBJMkMgZGV2aWNlcwo+IC0gUmV3b3JrZWQgSTJDIGRldmljZXMgcmVnaXN0cmF0aW9u IG9uIHNlY29uZGFyeSBtYXN0ZXIgc2lkZQo+Cj4gQ2hhbmdlcyBpbiB2MjoKPiAtIEFkZCBtYXN0 ZXJzaGlwIGRpc2FibGUgZXZlbnQgaG9vawo+IC0gQ2hhbmdlZCBuYW1lIG9mIG1hc3RlcnNoaXAg ZW5hYmxlIGV2ZW50IGhvb2sKPiAtIEFkZCBmdW5jdGlvbiB0byB0ZXN0IGlmIG1hc3RlciBvd25z IHRoZSBidXMKPiAtIEFkZCBmdW5jdGlvbiB0byB0ZXN0IGlmIG1hc3RlciBvd25zIHRoZSBidXMK PiAtIFJlbW92ZWQgb3BfbW9kZQo+IC0gQ2hhbmdlZCBwYXJhbWV0ZXIgb2YgaTNjX21hc3Rlcl9n ZXRfYWNjbXN0X2xvY2tlZCwgbm8gbmVlZCB0bwo+IHBhc3MgZnVsbCBpM2NfZGV2aWNlX2luZm8K PiAtIENoYW5nZWQgbmFtZSBvZiBtYXN0ZXJzaGlwIGVuYWJsZSBldmVudCBob29rCj4gLSBBZGQg ZnVuY3Rpb24gdG8gdGVzdCBpZiBtYXN0ZXIgb3ducyB0aGUgYnVzCj4gLSBSZW1vdmVkIG9wX21v ZGUKPiAtIENoYW5nZWQgcGFyYW1ldGVyIG9mIGkzY19tYXN0ZXJfZ2V0X2FjY21zdF9sb2NrZWQs IG5vIG5lZWQgdG8KPiBwYXNzIGZ1bGwgaTNjX2RldmljZV9pbmZvCj4gLSBSZW1vdmVkIHJlZHVu ZGFudCBERUZTTFZTIGNvbW1hbmQgYmVmb3JlIEdFVEFDQ01TVAo+IC0gQWRkIGkzY19tYXN0ZXJf YnVzX3Rha2VvdmVyIGZ1bmN0aW9uLiBUaGVyZSBpcyBhIG5lZWQgdG8gbG9jawo+IHRoZSBidXMg YmVmb3JlIGFkZGluZyBkZXZpY2VzIGFuZCBubyBtYXR0ZXIgb2YgdGhlIGNvbnRyb2xsZXIKPiBk ZXZpY2VzIGhhdmUgdG8gYmUgYWRkZWQgYWZ0ZXIgbWFzdGVyc2hpcCB0YWtlb3Zlci4KPiAtIEFk ZCBkZXZpY2UgcmVnaXN0cmF0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbiBvbiBzZWNvbmRhcnkg bWFzdGVyCj4gc2lkZS4gRGV2aWNlcyByZWNlaXZlZCBieSBERUZTTFZTIChpZiBvY2N1cmVkKS4g SWYgbm90LCBkZXZpY2UKPiBpbml0aWFsaXphdGlvbiBpcyBkZWZmZXJlZCB1bnRpbGwgbmV4dCBt YXN0ZXJzaGlwIHJlcXVlc3QuCj4gLS0tCj4gIGRyaXZlcnMvaTNjL2RldmljZS5jICAgICAgIHwg IDI2ICsrKwo+ICBkcml2ZXJzL2kzYy9pbnRlcm5hbHMuaCAgICB8ICAgNCArCj4gIGRyaXZlcnMv aTNjL21hc3Rlci5jICAgICAgIHwgNDE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLQo+ICBpbmNsdWRlL2xpbnV4L2kzYy9tYXN0ZXIuaCB8ICAxNyArKwo+ICA0 IGZpbGVzIGNoYW5nZWQsIDM5MSBpbnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2kzYy9kZXZpY2UuYyBiL2RyaXZlcnMvaTNjL2RldmljZS5jCj4g aW5kZXggNjljYzA0MC4uYjYwZjYzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2kzYy9kZXZpY2Uu Ywo+ICsrKyBiL2RyaXZlcnMvaTNjL2RldmljZS5jCj4gQEAgLTQzLDcgKzQzLDEzIEBAIGludCBp M2NfZGV2aWNlX2RvX3ByaXZfeGZlcnMoc3RydWN0IGkzY19kZXZpY2UgKmRldiwKPiAgCX0KPiAg Cj4gIAlpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi0+YnVzKTsKPiArCXJldCA9IGkzY19tYXN0 ZXJfYWNxdWlyZV9idXNfb3duZXJzaGlwKGRldi0+ZGVzYy0+Y29tbW9uLm1hc3Rlcik7Cj4gKwlp ZiAocmV0KQo+ICsJCWdvdG8gZXJyX3VubG9ja19idXM7Cj4gKwo+ICAJcmV0ID0gaTNjX2Rldl9k b19wcml2X3hmZXJzX2xvY2tlZChkZXYtPmRlc2MsIHhmZXJzLCBueGZlcnMpOwo+ICsKPiArZXJy X3VubG9ja19idXM6Cj4gIAlpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LT5idXMpOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gQEAgLTExNCwxMSArMTIwLDE3IEBAIGludCBpM2NfZGV2aWNlX2Vu YWJsZV9pYmkoc3RydWN0IGkzY19kZXZpY2UgKmRldikKPiAgCWludCByZXQgPSAtRU5PRU5UOwo+ ICAKPiAgCWkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LT5idXMpOwo+ICsJcmV0ID0gaTNjX21h c3Rlcl9hY3F1aXJlX2J1c19vd25lcnNoaXAoZGV2LT5kZXNjLT5jb21tb24ubWFzdGVyKTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBlcnJfdW5sb2NrX2J1czsKPiArCj4gIAlpZiAoZGV2LT5kZXNj KSB7Cj4gIAkJbXV0ZXhfbG9jaygmZGV2LT5kZXNjLT5pYmlfbG9jayk7Cj4gIAkJcmV0ID0gaTNj X2Rldl9lbmFibGVfaWJpX2xvY2tlZChkZXYtPmRlc2MpOwo+ICAJCW11dGV4X3VubG9jaygmZGV2 LT5kZXNjLT5pYmlfbG9jayk7Cj4gIAl9Cj4gKwo+ICtlcnJfdW5sb2NrX2J1czoKPiAgCWkzY19i dXNfbm9ybWFsdXNlX3VubG9jayhkZXYtPmJ1cyk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiBAQCAt MTQ1LDExICsxNTcsMTcgQEAgaW50IGkzY19kZXZpY2VfcmVxdWVzdF9pYmkoc3RydWN0IGkzY19k ZXZpY2UgKmRldiwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpM2NfYnVzX25vcm1hbHVz ZV9sb2NrKGRldi0+YnVzKTsKPiArCXJldCA9IGkzY19tYXN0ZXJfYWNxdWlyZV9idXNfb3duZXJz aGlwKGRldi0+ZGVzYy0+Y29tbW9uLm1hc3Rlcik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJy X3VubG9ja19idXM7Cj4gKwo+ICAJaWYgKGRldi0+ZGVzYykgewo+ICAJCW11dGV4X2xvY2soJmRl di0+ZGVzYy0+aWJpX2xvY2spOwo+ICAJCXJldCA9IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2Vk KGRldi0+ZGVzYywgcmVxKTsKPiAgCQltdXRleF91bmxvY2soJmRldi0+ZGVzYy0+aWJpX2xvY2sp Owo+ICAJfQo+ICsKPiArZXJyX3VubG9ja19idXM6Cj4gIAlpM2NfYnVzX25vcm1hbHVzZV91bmxv Y2soZGV2LT5idXMpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAgLTE2NiwxMiArMTg0LDIwIEBA IEVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfcmVxdWVzdF9pYmkpOwo+ICAgKi8KPiAgdm9p ZCBpM2NfZGV2aWNlX2ZyZWVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpCj4gIHsKPiArCWlu dCByZXQ7Cj4gKwo+ICAJaTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtPmJ1cyk7Cj4gKwlyZXQg PSBpM2NfbWFzdGVyX2FjcXVpcmVfYnVzX293bmVyc2hpcChkZXYtPmRlc2MtPmNvbW1vbi5tYXN0 ZXIpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl91bmxvY2tfYnVzOwo+ICsKPiAgCWlmIChk ZXYtPmRlc2MpIHsKPiAgCQltdXRleF9sb2NrKCZkZXYtPmRlc2MtPmliaV9sb2NrKTsKPiAgCQlp M2NfZGV2X2ZyZWVfaWJpX2xvY2tlZChkZXYtPmRlc2MpOwo+ICAJCW11dGV4X3VubG9jaygmZGV2 LT5kZXNjLT5pYmlfbG9jayk7Cj4gIAl9Cj4gKwo+ICtlcnJfdW5sb2NrX2J1czoKPiAgCWkzY19i dXNfbm9ybWFsdXNlX3VubG9jayhkZXYtPmJ1cyk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwo aTNjX2RldmljZV9mcmVlX2liaSk7CgpDYW4ndCB3ZSB2ZXJpZnkgaWYgaXQgaXMgdGhlIGN1cnJl bnQgbWFzdGVyIG5vIG1hc3Rlci5jIHNpZGU/Cgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2kzYy9p bnRlcm5hbHMuaCBiL2RyaXZlcnMvaTNjL2ludGVybmFscy5oCj4gaW5kZXggODZiN2I0NC4uOTI5 Y2E2YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaAo+ICsrKyBiL2RyaXZl cnMvaTNjL2ludGVybmFscy5oCj4gQEAgLTE0LDYgKzE0LDEwIEBAIGV4dGVybiBzdHJ1Y3QgYnVz X3R5cGUgaTNjX2J1c190eXBlOwo+ICAKPiAgdm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0 cnVjdCBpM2NfYnVzICpidXMpOwo+ICB2b2lkIGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhzdHJ1 Y3QgaTNjX2J1cyAqYnVzKTsKPiArdm9pZCBpM2NfYnVzX2Rvd25ncmFkZV9tYWludGVuYW5jZV9s b2NrKHN0cnVjdCBpM2NfYnVzICpidXMpOwo+ICtpbnQgaTNjX21hc3Rlcl9hY3F1aXJlX2J1c19v d25lcnNoaXAoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKTsKPiAraW50IGkz Y19tYXN0ZXJfcmVxdWVzdF9tYXN0ZXJzaGlwX2xvY2tlZChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250 cm9sbGVyICptYXN0ZXIpOwo+ICsKPiAgCj4gIGludCBpM2NfZGV2X2RvX3ByaXZfeGZlcnNfbG9j a2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldiwKPiAgCQkJCSBzdHJ1Y3QgaTNjX3ByaXZfeGZl ciAqeGZlcnMsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTNjL21hc3Rlci5jIGIvZHJpdmVycy9p M2MvbWFzdGVyLmMKPiBpbmRleCBhZWE0MzA5Li43YTg0MTU4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvaTNjL21hc3Rlci5jCj4gKysrIGIvZHJpdmVycy9pM2MvbWFzdGVyLmMKPiBAQCAtOTMsNiAr OTMsMjAgQEAgdm9pZCBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soc3RydWN0IGkzY19idXMgKmJ1 cykKPiAgCXVwX3JlYWQoJmJ1cy0+bG9jayk7Cj4gIH0KPiAgCj4gKy8qKgo+ICsgKiBpM2NfYnVz X2Rvd25ncmFkZV9tYWludGVuYW5jZV9sb2NrIC0gRG93bmdyYWRlIHRoZSBidXMgbG9jayB0byBu b3JtYWwKPiArICogb3BlcmF0aW9uCj4gKyAqIEBidXM6IEkzQyBidXMgdG8gZG93bmdyYWRlIHRo ZSBsb2NrIG9uCj4gKyAqCj4gKyAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIG1haW50ZW5hbmNl IG9wZXJhdGlvbiBpcyBkb25lIGFuZCBub3JtYWwKPiArICogb3BlcmF0aW9uIGlzIHBsYW5uZWQu IFNlZSBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soKSBhbmQKPiArICogaTNjX2J1c19ub3JtYWx1 c2VfbG9jaygpIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICt2b2lkIGkzY19idXNfZG93bmdy YWRlX21haW50ZW5hbmNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cykKPiArewo+ICsJZG93bmdy YWRlX3dyaXRlKCZidXMtPmxvY2spOwo+ICt9Cj4gKwo+ICBzdGF0aWMgc3RydWN0IGkzY19tYXN0 ZXJfY29udHJvbGxlciAqZGV2X3RvX2kzY21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsK PiAgCXJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVy LCBkZXYpOwo+IEBAIC0zNDEsNiArMzU1LDIyIEBAIHN0YXRpYyBpbnQgaTNjX2RldmljZV9wcm9i ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAlyZXR1cm4gZHJpdmVyLT5wcm9iZShpM2NkZXYpOwo+ ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpM2NfbWFzdGVyX2VuYWJsZV9tcl9ldmVudHMoc3RydWN0 IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKQo+ICt7Cj4gKwlpZiAoIW1hc3Rlci0+b3Bz LT5lbmFibGVfbXJfZXZlbnRzKQo+ICsJCXJldHVybjsKPiArCj4gKwltYXN0ZXItPm9wcy0+ZW5h YmxlX21yX2V2ZW50cyhtYXN0ZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpM2NfbWFzdGVy X2Rpc2FibGVfbXJfZXZlbnRzKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikK PiArewo+ICsJaWYgKCFtYXN0ZXItPm9wcy0+ZGlzYWJsZV9tcl9ldmVudHMpCj4gKwkJcmV0dXJu Owo+ICsKPiArCW1hc3Rlci0+b3BzLT5kaXNhYmxlX21yX2V2ZW50cyhtYXN0ZXIpOwo+ICt9Cj4g KwoKZG8gd2Ugd2FudCB0byBkbyB0aGlzIGluIGJyb2FkY2FzdD8gSXMgaXQgc2F2ZSB0byBnaXZl IG1hc3RlcnNoaXAgY2FwYWJpbGl0aWVzIHRvIGFsbCBkZXZpY2VzPwoKPiAgc3RhdGljIGludCBp M2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBpM2Nf ZGV2aWNlICppM2NkZXYgPSBkZXZfdG9faTNjZGV2KGRldik7Cj4gQEAgLTQ2Miw2ICs0OTIsMzYg QEAgc3RhdGljIGludCBpM2NfYnVzX2luaXQoc3RydWN0IGkzY19idXMgKmkzY2J1cykKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICtpbnQgaTNjX21hc3Rlcl9yZXF1ZXN0X21hc3RlcnNoaXBfbG9j a2VkKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiArewo+ICsJaWYgKFdB Uk5fT04obWFzdGVyLT5pbml0X2RvbmUgJiYKPiArCSAgICAhcndzZW1faXNfbG9ja2VkKCZtYXN0 ZXItPmJ1cy5sb2NrKSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKCFtYXN0ZXIt Pm9wcy0+cmVxdWVzdF9tYXN0ZXJzaGlwKQo+ICsJCXJldHVybiAtRU5PVFNVUFA7Cj4gKwo+ICsJ cmV0dXJuIG1hc3Rlci0+b3BzLT5yZXF1ZXN0X21hc3RlcnNoaXAobWFzdGVyKTsKPiArfQo+ICsK PiAraW50IGkzY19tYXN0ZXJfYWNxdWlyZV9idXNfb3duZXJzaGlwKHN0cnVjdCBpM2NfbWFzdGVy X2NvbnRyb2xsZXIgKm1hc3RlcikKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAobWFzdGVy LT5idXMuY3VyX21hc3RlciAhPSBtYXN0ZXItPnRoaXMpIHsKPiArCQlpM2NfYnVzX25vcm1hbHVz ZV91bmxvY2soJm1hc3Rlci0+YnVzKTsKPiArCQlpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soJm1h c3Rlci0+YnVzKTsKPiArCj4gKwkJcmV0ID0gaTNjX21hc3Rlcl9yZXF1ZXN0X21hc3RlcnNoaXBf bG9ja2VkKG1hc3Rlcik7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlpM2NfYnVzX21haW50ZW5hbmNl X3VubG9jaygmbWFzdGVyLT5idXMpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCQlpM2Nf YnVzX2Rvd25ncmFkZV9tYWludGVuYW5jZV9sb2NrKCZtYXN0ZXItPmJ1cyk7Cj4gKwl9Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBpM2NfYnVzX21v ZGVfc3RyaW5nc1tdID0gewo+ICAJW0kzQ19CVVNfTU9ERV9QVVJFXSA9ICJwdXJlIiwKPiAgCVtJ M0NfQlVTX01PREVfTUlYRURfRkFTVF0gPSAibWl4ZWQtZmFzdCIsCj4gQEAgLTYyMCw2ICs2ODAs MjUgQEAgaTNjX21hc3Rlcl9hbGxvY19pMmNfZGV2KHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xs ZXIgKm1hc3RlciwKPiAgCj4gIAlkZXYtPmNvbW1vbi5tYXN0ZXIgPSBtYXN0ZXI7Cj4gIAlkZXYt PmJvYXJkaW5mbyA9IGJvYXJkaW5mbzsKPiArCWRldi0+YWRkciA9IGJvYXJkaW5mby0+YmFzZS5h ZGRyOwo+ICsJZGV2LT5sdnIgPSBib2FyZGluZm8tPmx2cjsKPiArCj4gKwlyZXR1cm4gZGV2Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGkyY19kZXZfZGVzYyAqCj4gK2kzY19tYXN0ZXJfYWxs b2NfaTJjX2Rldl9ub19ib2FyZGluZm8oc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFz dGVyLAo+ICsJCQkJICAgICAgdTE2IGFkZHIsIHU4IGx2cikKPiArewo+ICsJc3RydWN0IGkyY19k ZXZfZGVzYyAqZGV2Owo+ICsKPiArCWRldiA9IGt6YWxsb2Moc2l6ZW9mKCpkZXYpLCBHRlBfS0VS TkVMKTsKPiArCWlmICghZGV2KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiAr CWRldi0+Y29tbW9uLm1hc3RlciA9IG1hc3RlcjsKPiArCWRldi0+YWRkciA9IGFkZHI7Cj4gKwlk ZXYtPmx2ciA9IGx2cjsKPiAgCj4gIAlyZXR1cm4gZGV2Owo+ICB9Cj4gQEAgLTY5Myw2ICs3NzIs OSBAQCBpM2NfbWFzdGVyX2ZpbmRfaTJjX2Rldl9ieV9hZGRyKGNvbnN0IHN0cnVjdCBpM2NfbWFz dGVyX2NvbnRyb2xsZXIgKm1hc3RlciwKPiAgCXN0cnVjdCBpMmNfZGV2X2Rlc2MgKmRldjsKPiAg Cj4gIAlpM2NfYnVzX2Zvcl9lYWNoX2kyY2RldigmbWFzdGVyLT5idXMsIGRldikgewo+ICsJCWlm ICghZGV2LT5ib2FyZGluZm8pCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAgCQlpZiAoZGV2LT5ib2Fy ZGluZm8tPmJhc2UuYWRkciA9PSBhZGRyKQo+ICAJCQlyZXR1cm4gZGV2Owo+ICAJfQo+IEBAIC05 MzksOCArMTAyMSw4IEBAIGludCBpM2NfbWFzdGVyX2RlZnNsdnNfbG9ja2VkKHN0cnVjdCBpM2Nf bWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiAgCj4gIAlkZXNjID0gZGVmc2x2cy0+c2xhdmVz Owo+ICAJaTNjX2J1c19mb3JfZWFjaF9pMmNkZXYoYnVzLCBpMmNkZXYpIHsKPiAtCQlkZXNjLT5s dnIgPSBpMmNkZXYtPmJvYXJkaW5mby0+bHZyOwo+IC0JCWRlc2MtPnN0YXRpY19hZGRyID0gaTJj ZGV2LT5ib2FyZGluZm8tPmJhc2UuYWRkciA8PCAxOwo+ICsJCWRlc2MtPmx2ciA9IGkyY2Rldi0+ bHZyOwo+ICsJCWRlc2MtPnN0YXRpY19hZGRyID0gaTJjZGV2LT5hZGRyIDw8IDE7Cj4gIAkJZGVz YysrOwo+ICAJfQo+ICAKPiBAQCAtMTQ5Miw2ICsxNTc0LDgzIEBAIGkzY19tYXN0ZXJfcmVnaXN0 ZXJfbmV3X2kzY19kZXZzKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiAg CX0KPiAgfQo+ICAKPiArc3RhdGljIHN0cnVjdCBpMmNfZGV2X2JvYXJkaW5mbyAqCj4gK2kzY19t YXN0ZXJfZmluZF9pMmNfYm9hcmRpbmZvKGNvbnN0IHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xs ZXIgKm1hc3RlciwKPiArCQkJICAgICAgdTE2IGFkZHIsIHU4IGx2cikKPiArewo+ICsJc3RydWN0 IGkyY19kZXZfYm9hcmRpbmZvICppMmNib2FyZGluZm87Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShpMmNib2FyZGluZm8sICZtYXN0ZXItPmJvYXJkaW5mby5pMmMsIG5vZGUpIHsKPiArCQlp ZiAoaTJjYm9hcmRpbmZvLT5iYXNlLmFkZHIgPT0gYWRkciAmJgo+ICsJCSAgICBpMmNib2FyZGlu Zm8tPmx2ciA9PSBsdnIpCj4gKwkJCXJldHVybiBpMmNib2FyZGluZm87Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2kzY19tYXN0ZXJfcmVnaXN0 ZXJfbmV3X2kyY19kZXZzKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiAr ewo+ICsJc3RydWN0IGkyY19hZGFwdGVyICphZGFwID0gaTNjX21hc3Rlcl90b19pMmNfYWRhcHRl cihtYXN0ZXIpOwo+ICsJc3RydWN0IGkyY19kZXZfZGVzYyAqaTJjZGV2Owo+ICsKPiArCWlmICgh bWFzdGVyLT5pbml0X2RvbmUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWkzY19idXNfZm9yX2VhY2hf aTJjZGV2KCZtYXN0ZXItPmJ1cywgaTJjZGV2KSB7Cj4gKwkJaWYgKGkyY2Rldi0+ZGV2KQo+ICsJ CQljb250aW51ZTsKPiArCj4gKwkJaWYgKCFpMmNkZXYtPmJvYXJkaW5mbykKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCWkyY2Rldi0+ZGV2ID0gaTJjX25ld19kZXZpY2UoYWRhcCwgJmkyY2Rldi0+ Ym9hcmRpbmZvLT5iYXNlKTsKPiArCX0KPiArfQo+ICsKPiArLyoqCj4gKyAqIGkzY19tYXN0ZXJf Z2V0X2FjY21zdF9sb2NrZWQoKSAtIHNlbmQgYSBHRVRBQ0NNU1QgQ0NDIGNvbW1hbmQKPiArICog QG1hc3RlcjogbWFzdGVyIHVzZWQgdG8gc2VuZCBmcmFtZXMgb24gdGhlIGJ1cwo+ICsgKiBAaW5m bzogSTNDIGRldmljZSBpbmZvcm1hdGlvbgo+ICsgKgo+ICsgKiBTZW5kIGEgR0VUQUNDTVNUIEND QyBjb21tYW5kLgo+ICsgKgo+ICsgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIGN1cmVu dCBtYXN0ZXIgYWNrbm93bGVkZ2VzIGJ1cyB0YWtlb3Zlci4KPiArICoKPiArICogVGhpcyBmdW5j dGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBidXMgbG9jayBoZWxkIGluIHdyaXRlIG1vZGUu Cj4gKyAqCj4gKyAqIFJldHVybjogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGEgcG9zaXRpdmUgSTND IGVycm9yIGNvZGUgaWYgdGhlIGVycm9yIGlzCj4gKyAqIG9uZSBvZiB0aGUgb2ZmaWNpYWwgTXgg ZXJyb3IgY29kZXMsIGFuZCBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+ICsgKi8K PiAraW50IGkzY19tYXN0ZXJfZ2V0X2FjY21zdF9sb2NrZWQoc3RydWN0IGkzY19tYXN0ZXJfY29u dHJvbGxlciAqbWFzdGVyLAo+ICsJCQkJIHU4IGFkZHIpCj4gK3sKPiArCXN0cnVjdCBpM2NfY2Nj X2dldGFjY21zdCAqYWNjbXN0Owo+ICsJc3RydWN0IGkzY19jY2NfY21kX2Rlc3QgZGVzdDsKPiAr CXN0cnVjdCBpM2NfY2NjX2NtZCBjbWQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWFjY21zdCA9IGkz Y19jY2NfY21kX2Rlc3RfaW5pdCgmZGVzdCwgYWRkciwgc2l6ZW9mKCphY2Ntc3QpKTsKPiArCWlm ICghYWNjbXN0KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWkzY19jY2NfY21kX2luaXQo JmNtZCwgdHJ1ZSwgSTNDX0NDQ19HRVRBQ0NNU1QsICZkZXN0LCAxKTsKPiArCj4gKwlyZXQgPSBp M2NfbWFzdGVyX3NlbmRfY2NjX2NtZF9sb2NrZWQobWFzdGVyLCAmY21kKTsKPiArCWlmIChyZXQp Cj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJaWYgKGRlc3QucGF5bG9hZC5sZW4gIT0gc2l6ZW9mKCph Y2Ntc3QpKQo+ICsJCXJldCA9IC1FSU87Cj4gKwo+ICtvdXQ6Cj4gKwlpM2NfY2NjX2NtZF9kZXN0 X2NsZWFudXAoJmRlc3QpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJP TF9HUEwoaTNjX21hc3Rlcl9nZXRfYWNjbXN0X2xvY2tlZCk7Cj4gKwo+ICAvKioKPiAgICogaTNj X21hc3Rlcl9kb19kYWEoKSAtIGRvIGEgREFBIChEeW5hbWljIEFkZHJlc3MgQXNzaWdubWVudCkK PiAgICogQG1hc3RlcjogbWFzdGVyIGRvaW5nIHRoZSBEQUEKPiBAQCAtMTU1OSwxMCArMTcxOCw2 IEBAIGludCBpM2NfbWFzdGVyX3NldF9pbmZvKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIg Km1hc3RlciwKPiAgCWlmICghaTNjX2J1c19kZXZfYWRkcl9pc19hdmFpbCgmbWFzdGVyLT5idXMs IGluZm8tPmR5bl9hZGRyKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAoSTNDX0JD Ul9ERVZJQ0VfUk9MRShpbmZvLT5iY3IpID09IEkzQ19CQ1JfSTNDX01BU1RFUiAmJgo+IC0JICAg IG1hc3Rlci0+c2Vjb25kYXJ5KQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAgCWlmIChtYXN0 ZXItPnRoaXMpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IEBAIC0xNjA3LDQzICsxNzYyLDEz IEBAIHN0YXRpYyB2b2lkIGkzY19tYXN0ZXJfZGV0YWNoX2ZyZWVfZGV2cyhzdHJ1Y3QgaTNjX21h c3Rlcl9jb250cm9sbGVyICptYXN0ZXIpCj4gIAkJCQkgY29tbW9uLm5vZGUpIHsKPiAgCQlpM2Nf bWFzdGVyX2RldGFjaF9pMmNfZGV2KGkyY2Rldik7Cj4gIAkJaTNjX2J1c19zZXRfYWRkcl9zbG90 X3N0YXR1cygmbWFzdGVyLT5idXMsCj4gLQkJCQkJaTJjZGV2LT5ib2FyZGluZm8tPmJhc2UuYWRk ciwKPiAtCQkJCQlJM0NfQUREUl9TTE9UX0ZSRUUpOwo+ICsJCQkJCSAgICAgaTJjZGV2LT5hZGRy LAo+ICsJCQkJCSAgICAgSTNDX0FERFJfU0xPVF9GUkVFKTsKPiAgCQlpM2NfbWFzdGVyX2ZyZWVf aTJjX2RldihpMmNkZXYpOwo+ICAJfQo+ICB9Cj4gIAo+IC0vKioKPiAtICogaTNjX21hc3Rlcl9i dXNfaW5pdCgpIC0gaW5pdGlhbGl6ZSBhbiBJM0MgYnVzCj4gLSAqIEBtYXN0ZXI6IG1haW4gbWFz dGVyIGluaXRpYWxpemluZyB0aGUgYnVzCj4gLSAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgZm9s bG93aW5nIGFsbCBpbml0aWFsaXNhdGlvbiBzdGVwcyBkZXNjcmliZWQgaW4gdGhlIEkzQwo+IC0g KiBzcGVjaWZpY2F0aW9uOgo+IC0gKgo+IC0gKiAxLiBBdHRhY2ggSTJDIGFuZCBzdGF0aWNhbGx5 IGRlZmluZWQgSTNDIGRldnMgdG8gdGhlIG1hc3RlciBzbyB0aGF0IHRoZQo+IC0gKiAgICBtYXN0 ZXIgY2FuIGZpbGwgaXRzIGludGVybmFsIGRldmljZSB0YWJsZSBhcHByb3ByaWF0ZWx5Cj4gLSAq Cj4gLSAqIDIuIENhbGwgJmkzY19tYXN0ZXJfY29udHJvbGxlcl9vcHMtPmJ1c19pbml0KCkgbWV0 aG9kIHRvIGluaXRpYWxpemUKPiAtICogICAgdGhlIG1hc3RlciBjb250cm9sbGVyLiBUaGF0J3Mg dXN1YWxseSB3aGVyZSB0aGUgYnVzIG1vZGUgaXMgc2VsZWN0ZWQKPiAtICogICAgKHB1cmUgYnVz IG9yIG1peGVkIGZhc3Qvc2xvdyBidXMpCj4gLSAqCj4gLSAqIDMuIEluc3RydWN0IGFsbCBkZXZp Y2VzIG9uIHRoZSBidXMgdG8gZHJvcCB0aGVpciBkeW5hbWljIGFkZHJlc3MuIFRoaXMgaXMKPiAt ICogICAgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aGVuIHRoZSBidXMgd2FzIHByZXZpb3VzbHkg Y29uZmlndXJlZCBieSBzb21lb25lCj4gLSAqICAgIGVsc2UgKGZvciBleGFtcGxlIHRoZSBib290 bG9hZGVyKQo+IC0gKgo+IC0gKiA0LiBEaXNhYmxlIGFsbCBzbGF2ZSBldmVudHMuCj4gLSAqCj4g LSAqIDUuIFByZS1hc3NpZ24gZHluYW1pYyBhZGRyZXNzZXMgcmVxdWVzdGVkIGJ5IHRoZSBGVyB3 aXRoIFNFVERBU0EgZm9yIEkzQwo+IC0gKiAgICBkZXZpY2VzIHRoYXQgaGF2ZSBhIHN0YXRpYyBh ZGRyZXNzCj4gLSAqCj4gLSAqIDYuIERvIGEgREFBIChEeW5hbWljIEFkZHJlc3MgQXNzaWdubWVu dCkgdG8gYXNzaWduIGR5bmFtaWMgYWRkcmVzc2VzIHRvIGFsbAo+IC0gKiAgICByZW1haW5pbmcg STNDIGRldmljZXMKPiAtICoKPiAtICogT25jZSB0aGlzIGlzIGRvbmUsIGFsbCBJM0MgYW5kIEky QyBkZXZpY2VzIHNob3VsZCBiZSB1c2FibGUuCj4gLSAqCj4gLSAqIFJldHVybjogYSAwIGluIGNh c2Ugb2Ygc3VjY2VzcywgYW4gbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gLSAqLwo+ IC1zdGF0aWMgaW50IGkzY19tYXN0ZXJfYnVzX2luaXQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJv bGxlciAqbWFzdGVyKQo+ICtzdGF0aWMgaW50IGkzY19tYXN0ZXJfYXR0YWNoX3N0YXRpY19kZXZz KHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiAgewo+ICAJZW51bSBpM2Nf YWRkcl9zbG90X3N0YXR1cyBzdGF0dXM7Cj4gIAlzdHJ1Y3QgaTJjX2Rldl9ib2FyZGluZm8gKmky Y2JvYXJkaW5mbzsKPiBAQCAtMTY1MiwzMiArMTc3NywyNCBAQCBzdGF0aWMgaW50IGkzY19tYXN0 ZXJfYnVzX2luaXQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKQo+ICAJc3Ry dWN0IGkyY19kZXZfZGVzYyAqaTJjZGV2Owo+ICAJaW50IHJldDsKPiAgCj4gLQkvKgo+IC0JICog Rmlyc3QgYXR0YWNoIGFsbCBkZXZpY2VzIHdpdGggc3RhdGljIGRlZmluaXRpb25zIHByb3ZpZGVk IGJ5IHRoZQo+IC0JICogRlcuCj4gLQkgKi8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoaTJjYm9h cmRpbmZvLCAmbWFzdGVyLT5ib2FyZGluZm8uaTJjLCBub2RlKSB7Cj4gIAkJc3RhdHVzID0gaTNj X2J1c19nZXRfYWRkcl9zbG90X3N0YXR1cygmbWFzdGVyLT5idXMsCj4gIAkJCQkJCSAgICAgIGky Y2JvYXJkaW5mby0+YmFzZS5hZGRyKTsKPiAtCQlpZiAoc3RhdHVzICE9IEkzQ19BRERSX1NMT1Rf RlJFRSkgewo+IC0JCQlyZXQgPSAtRUJVU1k7Cj4gLQkJCWdvdG8gZXJyX2RldGFjaF9kZXZzOwo+ IC0JCX0KPiArCQlpZiAoc3RhdHVzICE9IEkzQ19BRERSX1NMT1RfRlJFRSkKPiArCQkJcmV0dXJu IC1FQlVTWTsKPiAgCj4gIAkJaTNjX2J1c19zZXRfYWRkcl9zbG90X3N0YXR1cygmbWFzdGVyLT5i dXMsCj4gIAkJCQkJICAgICBpMmNib2FyZGluZm8tPmJhc2UuYWRkciwKPiAgCQkJCQkgICAgIEkz Q19BRERSX1NMT1RfSTJDX0RFVik7Cj4gIAo+ICAJCWkyY2RldiA9IGkzY19tYXN0ZXJfYWxsb2Nf aTJjX2RldihtYXN0ZXIsIGkyY2JvYXJkaW5mbyk7Cj4gLQkJaWYgKElTX0VSUihpMmNkZXYpKSB7 Cj4gLQkJCXJldCA9IFBUUl9FUlIoaTJjZGV2KTsKPiAtCQkJZ290byBlcnJfZGV0YWNoX2RldnM7 Cj4gLQkJfQo+ICsJCWlmIChJU19FUlIoaTJjZGV2KSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoaTJj ZGV2KTsKPiAgCj4gIAkJcmV0ID0gaTNjX21hc3Rlcl9hdHRhY2hfaTJjX2RldihtYXN0ZXIsIGky Y2Rldik7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlpM2NfbWFzdGVyX2ZyZWVfaTJjX2RldihpMmNk ZXYpOwo+IC0JCQlnb3RvIGVycl9kZXRhY2hfZGV2czsKPiArCQkJcmV0dXJuIHJldDsKPiAgCQl9 Cj4gIAl9Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGkzY2JvYXJkaW5mbywgJm1hc3Rlci0+Ym9h cmRpbmZvLmkzYywgbm9kZSkgewo+IEBAIC0xNjg3LDI4ICsxODA0LDcxIEBAIHN0YXRpYyBpbnQg aTNjX21hc3Rlcl9idXNfaW5pdChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIp Cj4gIAo+ICAJCWlmIChpM2Nib2FyZGluZm8tPmluaXRfZHluX2FkZHIpIHsKPiAgCQkJc3RhdHVz ID0gaTNjX2J1c19nZXRfYWRkcl9zbG90X3N0YXR1cygmbWFzdGVyLT5idXMsCj4gLQkJCQkJCWkz Y2JvYXJkaW5mby0+aW5pdF9keW5fYWRkcik7Cj4gLQkJCWlmIChzdGF0dXMgIT0gSTNDX0FERFJf U0xPVF9GUkVFKSB7Cj4gLQkJCQlyZXQgPSAtRUJVU1k7Cj4gLQkJCQlnb3RvIGVycl9kZXRhY2hf ZGV2czsKPiAtCQkJfQo+ICsJCQkJCQkJICAgICAgaTNjYm9hcmRpbmZvLT5pbml0X2R5bl9hZGRy KTsKPiArCQkJaWYgKHN0YXR1cyAhPSBJM0NfQUREUl9TTE9UX0ZSRUUpCj4gKwkJCQlyZXR1cm4g LUVCVVNZOwo+ICAJCX0KPiAgCj4gIAkJaTNjZGV2ID0gaTNjX21hc3Rlcl9hbGxvY19pM2NfZGV2 KG1hc3RlciwgJmluZm8pOwo+IC0JCWlmIChJU19FUlIoaTNjZGV2KSkgewo+IC0JCQlyZXQgPSBQ VFJfRVJSKGkzY2Rldik7Cj4gLQkJCWdvdG8gZXJyX2RldGFjaF9kZXZzOwo+IC0JCX0KPiArCQlp ZiAoSVNfRVJSKGkzY2RldikpCj4gKwkJCXJldHVybiBQVFJfRVJSKGkzY2Rldik7Cj4gIAo+ICAJ CWkzY2Rldi0+Ym9hcmRpbmZvID0gaTNjYm9hcmRpbmZvOwo+ICAKPiAgCQlyZXQgPSBpM2NfbWFz dGVyX2F0dGFjaF9pM2NfZGV2KG1hc3RlciwgaTNjZGV2KTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJ CWkzY19tYXN0ZXJfZnJlZV9pM2NfZGV2KGkzY2Rldik7Cj4gLQkJCWdvdG8gZXJyX2RldGFjaF9k ZXZzOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAgCX0KPiAgCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGkzY19tYXN0ZXJfYnVzX2luaXQoKSAtIGluaXRpYWxpemUgYW4g STNDIGJ1cwo+ICsgKiBAbWFzdGVyOiBtYWluIG1hc3RlciBpbml0aWFsaXppbmcgdGhlIGJ1cwo+ ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGZvbGxvd2luZyBhbGwgaW5pdGlhbGlzYXRpb24g c3RlcHMgZGVzY3JpYmVkIGluIHRoZSBJM0MKPiArICogc3BlY2lmaWNhdGlvbjoKPiArICoKPiAr ICogMS4gQXR0YWNoIEkyQyBhbmQgc3RhdGljYWxseSBkZWZpbmVkIEkzQyBkZXZzIHRvIHRoZSBt YXN0ZXIgc28gdGhhdCB0aGUKPiArICogICAgbWFzdGVyIGNhbiBmaWxsIGl0cyBpbnRlcm5hbCBk ZXZpY2UgdGFibGUgYXBwcm9wcmlhdGVseQo+ICsgKgo+ICsgKiAyLiBDYWxsICZpM2NfbWFzdGVy X2NvbnRyb2xsZXJfb3BzLT5idXNfaW5pdCgpIG1ldGhvZCB0byBpbml0aWFsaXplCj4gKyAqICAg IHRoZSBtYXN0ZXIgY29udHJvbGxlci4gVGhhdCdzIHVzdWFsbHkgd2hlcmUgdGhlIGJ1cyBtb2Rl IGlzIHNlbGVjdGVkCj4gKyAqICAgIChwdXJlIGJ1cyBvciBtaXhlZCBmYXN0L3Nsb3cgYnVzKQo+ ICsgKgo+ICsgKiAzLiBJbnN0cnVjdCBhbGwgZGV2aWNlcyBvbiB0aGUgYnVzIHRvIGRyb3AgdGhl aXIgZHluYW1pYyBhZGRyZXNzLiBUaGlzIGlzCj4gKyAqICAgIHBhcnRpY3VsYXJseSBpbXBvcnRh bnQgd2hlbiB0aGUgYnVzIHdhcyBwcmV2aW91c2x5IGNvbmZpZ3VyZWQgYnkgc29tZW9uZQo+ICsg KiAgICBlbHNlIChmb3IgZXhhbXBsZSB0aGUgYm9vdGxvYWRlcikKPiArICoKPiArICogNC4gRGlz YWJsZSBhbGwgc2xhdmUgZXZlbnRzLgo+ICsgKgo+ICsgKiA1LiBQcmUtYXNzaWduIGR5bmFtaWMg YWRkcmVzc2VzIHJlcXVlc3RlZCBieSB0aGUgRlcgd2l0aCBTRVREQVNBIGZvciBJM0MKPiArICog ICAgZGV2aWNlcyB0aGF0IGhhdmUgYSBzdGF0aWMgYWRkcmVzcwo+ICsgKgo+ICsgKiA2LiBEbyBh IERBQSAoRHluYW1pYyBBZGRyZXNzIEFzc2lnbm1lbnQpIHRvIGFzc2lnbiBkeW5hbWljIGFkZHJl c3NlcyB0byBhbGwKPiArICogICAgcmVtYWluaW5nIEkzQyBkZXZpY2VzCj4gKyAqCj4gKyAqIE9u Y2UgdGhpcyBpcyBkb25lLCBhbGwgSTNDIGFuZCBJMkMgZGV2aWNlcyBzaG91bGQgYmUgdXNhYmxl Lgo+ICsgKgo+ICsgKiBSZXR1cm46IGEgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGFuIG5lZ2F0aXZl IGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+ICsgKi8KPiArc3RhdGljIGludCBpM2NfbWFzdGVyX2J1 c19pbml0KHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcikKPiArewo+ICsJc3Ry dWN0IGkzY19kZXZfZGVzYyAqaTNjZGV2Owo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICog Rmlyc3QgYXR0YWNoIGFsbCBkZXZpY2VzIHdpdGggc3RhdGljIGRlZmluaXRpb25zIHByb3ZpZGVk IGJ5IHRoZQo+ICsJICogRlcuCj4gKwkgKi8KPiArCWlmICghbWFzdGVyLT5zZWNvbmRhcnkpIHsK PiArCQlyZXQgPSBpM2NfbWFzdGVyX2F0dGFjaF9zdGF0aWNfZGV2cyhtYXN0ZXIpOwo+ICsJCWlm IChyZXQpCj4gKwkJCWdvdG8gZXJyX2RldGFjaF9kZXZzOwo+ICsJfQoKV2hlbiBkbyB3ZSBnZXQg dGhlIGkzY19kZXZfaW5mbygpPwoKPiAgCS8qCj4gIAkgKiBOb3cgZXhlY3V0ZSB0aGUgY29udHJv bGxlciBzcGVjaWZpYyAtPmJ1c19pbml0KCkgcm91dGluZSwgd2hpY2gKPiAgCSAqIG1pZ2h0IGNv bmZpZ3VyZSBpdHMgaW50ZXJuYWwgbG9naWMgdG8gbWF0Y2ggdGhlIGJ1cyBsaW1pdGF0aW9ucy4K PiBAQCAtMTcyOSw2ICsxODg5LDEzIEBAIHN0YXRpYyBpbnQgaTNjX21hc3Rlcl9idXNfaW5pdChz dHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIpCj4gIAl9Cj4gIAo+ICAJLyoKPiAr CSAqIERvbid0IHJlc2V0IGFkZHJlc3NlcyBpZiB0aGlzIGlzIHNlY29uZGFyeSBtYXN0ZXIuCj4g KwkgKiBTZWNvbmRhcnkgbWFzdGVycyBjYW4ndCBkbyBEQUEuCj4gKwkgKi8KPiArCWlmIChtYXN0 ZXItPnNlY29uZGFyeSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwkvKgo+ICAJICogUmVzZXQgYWxs IGR5bmFtaWMgYWRkcmVzcyB0aGF0IG1heSBoYXZlIGJlZW4gYXNzaWduZWQgYmVmb3JlCj4gIAkg KiAoYXNzaWduZWQgYnkgdGhlIGJvb3Rsb2FkZXIgZm9yIGV4YW1wbGUpLgo+ICAJICovCj4gQEAg LTE3OTEsNiArMTk1OCw0OSBAQCBpM2NfbWFzdGVyX3NlYXJjaF9pM2NfZGV2X2R1cGxpY2F0ZShz dHJ1Y3QgaTNjX2Rldl9kZXNjICpyZWZkZXYpCj4gIAlyZXR1cm4gTlVMTDsKPiAgfQo+ICAKPiAr aW50IGkzY19tYXN0ZXJfYWRkX2kyY19kZXYoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAq bWFzdGVyLAo+ICsJCQkgICB1MTYgYWRkciwgdTggbHZyKQo+ICt7Cj4gKwllbnVtIGkzY19hZGRy X3Nsb3Rfc3RhdHVzIHN0YXR1czsKPiArCXN0cnVjdCBpMmNfZGV2X2Rlc2MgKmkyY2RldjsKPiAr CWludCByZXQ7Cj4gKwo+ICsJaWYgKCFtYXN0ZXIpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJc3RhdHVzID0gaTNjX2J1c19nZXRfYWRkcl9zbG90X3N0YXR1cygmbWFzdGVyLT5idXMsCj4g KwkJCQkJICAgICAgYWRkcik7Cj4gKwlpZiAoc3RhdHVzICE9IEkzQ19BRERSX1NMT1RfRlJFRSkK PiArCQlyZXR1cm4gLUVCVVNZOwo+ICsKPiArCWkzY19idXNfc2V0X2FkZHJfc2xvdF9zdGF0dXMo Jm1hc3Rlci0+YnVzLCBhZGRyLAo+ICsJCQkJICAgICBJM0NfQUREUl9TTE9UX0kyQ19ERVYpOwo+ ICsKPiArCWkyY2RldiA9IGkzY19tYXN0ZXJfYWxsb2NfaTJjX2Rldl9ub19ib2FyZGluZm8obWFz dGVyLCBhZGRyLCBsdnIpOwo+ICsJaWYgKElTX0VSUihpMmNkZXYpKSB7Cj4gKwkJcmV0ID0gUFRS X0VSUihpMmNkZXYpOwo+ICsJCWdvdG8gZXJyX2ZyZWVfZGV2Owo+ICsJfQo+ICsKPiArCWkyY2Rl di0+Ym9hcmRpbmZvID0gaTNjX21hc3Rlcl9maW5kX2kyY19ib2FyZGluZm8obWFzdGVyLCBhZGRy LCBsdnIpOwo+ICsKPiArCXJldCA9IGkzY19tYXN0ZXJfYXR0YWNoX2kyY19kZXYobWFzdGVyLCBp MmNkZXYpOwo+ICsJaWYgKHJldCkgewo+ICsJCXJldCA9IFBUUl9FUlIoaTJjZGV2KTsKPiArCQln b3RvIGVycl9mcmVlX2RldjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9mcmVl X2RldjoKPiArCWkzY19idXNfc2V0X2FkZHJfc2xvdF9zdGF0dXMoJm1hc3Rlci0+YnVzLCBhZGRy LAo+ICsJCQkJICAgICBJM0NfQUREUl9TTE9UX0ZSRUUpOwo+ICsJaTNjX21hc3Rlcl9mcmVlX2ky Y19kZXYoaTJjZGV2KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xf R1BMKGkzY19tYXN0ZXJfYWRkX2kyY19kZXYpOwo+ICsKPiAgLyoqCj4gICAqIGkzY19tYXN0ZXJf YWRkX2kzY19kZXZfbG9ja2VkKCkgLSBhZGQgYW4gSTNDIHNsYXZlIHRvIHRoZSBidXMKPiAgICog QG1hc3RlcjogbWFzdGVyIHVzZWQgdG8gc2VuZCBmcmFtZXMgb24gdGhlIGJ1cwo+IEBAIC0yMTEz LDExICsyMzIzLDE3IEBAIHN0YXRpYyBpbnQgaTNjX21hc3Rlcl9pMmNfYWRhcHRlcl94ZmVyKHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwKPiAgCX0KPiAgCj4gIAlpM2NfYnVzX25vcm1hbHVzZV9s b2NrKCZtYXN0ZXItPmJ1cyk7Cj4gKwlyZXQgPSBpM2NfbWFzdGVyX2FjcXVpcmVfYnVzX293bmVy c2hpcChtYXN0ZXIpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl91bmxvY2tfYnVzOwo+ICsK PiAgCWRldiA9IGkzY19tYXN0ZXJfZmluZF9pMmNfZGV2X2J5X2FkZHIobWFzdGVyLCBhZGRyKTsK PiAgCWlmICghZGV2KQo+ICAJCXJldCA9IC1FTk9FTlQ7Cj4gIAllbHNlCj4gIAkJcmV0ID0gbWFz dGVyLT5vcHMtPmkyY194ZmVycyhkZXYsIHhmZXJzLCBueGZlcnMpOwo+ICsKPiArZXJyX3VubG9j a19idXM6Cj4gIAlpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soJm1hc3Rlci0+YnVzKTsKPiAgCj4g IAlyZXR1cm4gcmV0ID8gcmV0IDogbnhmZXJzOwo+IEBAIC0yMTUxLDggKzIzNjcsMTIgQEAgc3Rh dGljIGludCBpM2NfbWFzdGVyX2kyY19hZGFwdGVyX2luaXQoc3RydWN0IGkzY19tYXN0ZXJfY29u dHJvbGxlciAqbWFzdGVyKQo+ICAJICogV2Ugc2lsZW50bHkgaWdub3JlIGZhaWx1cmVzIGhlcmUu IFRoZSBidXMgc2hvdWxkIGtlZXAgd29ya2luZwo+ICAJICogY29ycmVjdGx5IGV2ZW4gaWYgb25l IG9yIG1vcmUgaTJjIGRldmljZXMgYXJlIG5vdCByZWdpc3RlcmVkLgo+ICAJICovCj4gLQlpM2Nf YnVzX2Zvcl9lYWNoX2kyY2RldigmbWFzdGVyLT5idXMsIGkyY2RldikKPiArCWkzY19idXNfZm9y X2VhY2hfaTJjZGV2KCZtYXN0ZXItPmJ1cywgaTJjZGV2KSB7Cj4gKwkJaWYgKCFpMmNkZXYtPmJv YXJkaW5mbykKPiArCQkJY29udGludWU7Cj4gKwo+ICAJCWkyY2Rldi0+ZGV2ID0gaTJjX25ld19k ZXZpY2UoYWRhcCwgJmkyY2Rldi0+Ym9hcmRpbmZvLT5iYXNlKTsKPiArCX0KPiAgCj4gIAlyZXR1 cm4gMDsKPiAgfQo+IEBAIC0yMzkzLDE4ICsyNjEzLDQzIEBAIHN0YXRpYyBpbnQgaTNjX21hc3Rl cl9jaGVja19vcHMoY29uc3Qgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlcl9vcHMgKm9wcykK PiAgCSAgICAgIW9wcy0+cmVjeWNsZV9pYmlfc2xvdCkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4g IAo+ICsJaWYgKG9wcy0+cmVxdWVzdF9tYXN0ZXJzaGlwICYmCj4gKwkgICAgKCFvcHMtPmVuYWJs ZV9tcl9ldmVudHMgfHwgIW9wcy0+ZGlzYWJsZV9tcl9ldmVudHMpKQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICAvKioKPiArICogaTNjX21hc3Rlcl9y ZWdpc3Rlcl9uZXdfZGV2cygpIC0gcmVnaXN0ZXIgbmV3IGRldmljZXMKPiArICogQG1hc3Rlcjog bWFzdGVyIHVzZWQgdG8gc2VuZCBmcmFtZXMgb24gdGhlIGJ1cwo+ICsgKgo+ICsgKiBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIGRldmljZXMgd2VyZSBub3QgYWRkZWQKPiArICogZHVyaW5n IGluaXRpYWxpemF0aW9uIG9yIHdoZW4gbmV3IGRldmljZSBqb2luZWQgdGhlIGJ1cwo+ICsgKiB3 aGljaCB3YXMgdW5kZXIgY29udHJvbCBvZiBkaWZmZXJlbnQgbWFzdGVyLgo+ICsgKi8KPiArdm9p ZCBpM2NfbWFzdGVyX3JlZ2lzdGVyX25ld19kZXZzKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xs ZXIgKm1hc3RlcikKPiArewo+ICsJLyoKPiArCSAqIFdlIGNhbiByZWdpc3RlciBJM0MgZGV2aWNl cyByZWNlaXZlZCBmcm9tIG1hc3RlciBieSBERUZTTFZTLgo+ICsJICovCj4gKwlpM2NfYnVzX25v cm1hbHVzZV9sb2NrKCZtYXN0ZXItPmJ1cyk7Cj4gKwlpM2NfbWFzdGVyX3JlZ2lzdGVyX25ld19p M2NfZGV2cyhtYXN0ZXIpOwo+ICsJaTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKCZtYXN0ZXItPmJ1 cyk7Cj4gKwo+ICsJaTNjX2J1c19ub3JtYWx1c2VfbG9jaygmbWFzdGVyLT5idXMpOwo+ICsJaTNj X21hc3Rlcl9yZWdpc3Rlcl9uZXdfaTJjX2RldnMobWFzdGVyKTsKPiArCWkzY19idXNfbm9ybWFs dXNlX3VubG9jaygmbWFzdGVyLT5idXMpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGkzY19t YXN0ZXJfcmVnaXN0ZXJfbmV3X2RldnMpOwo+ICsKCsKgSSB3b3VsZCBzYXkgYSBmdW5jdGlvbiB0 byBhZGQgREVWU0xWUy4gRnJvbSB0aGUgbWFzdGVyIGRyaXZlciB5b3UgY2FuIHBhY2sgYWxsCsKg cmVjZWl2ZWQgc2xhdmVzIGludG8gaTNjX2NjY19kZWZzbHZzIHN0cnVjdCBhbmQgcmVseSB0aGUg dGFzayBvZiBhZGQgdGhvc2UKwqBkZXZpY2VzIHRvIHRoZSBzdWJzeXN0ZW0uCgo+ICsvKioKPiAg ICogaTNjX21hc3Rlcl9yZWdpc3RlcigpIC0gcmVnaXN0ZXIgYW4gSTNDIG1hc3Rlcgo+ICAgKiBA bWFzdGVyOiBtYXN0ZXIgdXNlZCB0byBzZW5kIGZyYW1lcyBvbiB0aGUgYnVzCj4gICAqIEBwYXJl bnQ6IHRoZSBwYXJlbnQgZGV2aWNlICh0aGUgb25lIHRoYXQgcHJvdmlkZXMgdGhpcyBJM0MgbWFz dGVyCj4gICAqCSAgICBjb250cm9sbGVyKQo+ICAgKiBAb3BzOiB0aGUgbWFzdGVyIGNvbnRyb2xs ZXIgb3BlcmF0aW9ucwo+IC0gKiBAc2Vjb25kYXJ5OiB0cnVlIGlmIHlvdSBhcmUgcmVnaXN0ZXJp bmcgYSBzZWNvbmRhcnkgbWFzdGVyLiBXaWxsIHJldHVybgo+IC0gKgkgICAgICAgLUVOT1RTVVBQ IGlmIHNldCB0byB0cnVlIHNpbmNlIHNlY29uZGFyeSBtYXN0ZXJzIGFyZSBub3QgeWV0Cj4gLSAq CSAgICAgICBzdXBwb3J0ZWQKPiArICogQHNlY29uZGFyeTogdHJ1ZSBpZiB5b3UgYXJlIHJlZ2lz dGVyaW5nIGEgc2Vjb25kYXJ5IG1hc3Rlci4KPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiB0YWtl cyBjYXJlIG9mIGV2ZXJ5dGhpbmcgZm9yIHlvdToKPiAgICoKPiBAQCAtMjQyNywxMCArMjY3Miw2 IEBAIGludCBpM2NfbWFzdGVyX3JlZ2lzdGVyKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIg Km1hc3RlciwKPiAgCXN0cnVjdCBpMmNfZGV2X2JvYXJkaW5mbyAqaTJjYmk7Cj4gIAlpbnQgcmV0 Owo+ICAKPiAtCS8qIFdlIGRvIG5vdCBzdXBwb3J0IHNlY29uZGFyeSBtYXN0ZXJzIHlldC4gKi8K PiAtCWlmIChzZWNvbmRhcnkpCj4gLQkJcmV0dXJuIC1FTk9UU1VQUDsKPiAtCj4gIAlyZXQgPSBp M2NfbWFzdGVyX2NoZWNrX29wcyhvcHMpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ IEBAIC0yNTA0LDkgKzI3NDUsMTEgQEAgaW50IGkzY19tYXN0ZXJfcmVnaXN0ZXIoc3RydWN0IGkz Y19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyLAo+ICAJICogcmVnaXN0ZXIgSTNDIGRldmljZXMg ZGljb3ZlcmVkIGR1cmluZyB0aGUgaW5pdGlhbCBEQUEuCj4gIAkgKi8KPiAgCW1hc3Rlci0+aW5p dF9kb25lID0gdHJ1ZTsKPiAtCWkzY19idXNfbm9ybWFsdXNlX2xvY2soJm1hc3Rlci0+YnVzKTsK PiAtCWkzY19tYXN0ZXJfcmVnaXN0ZXJfbmV3X2kzY19kZXZzKG1hc3Rlcik7Cj4gLQlpM2NfYnVz X25vcm1hbHVzZV91bmxvY2soJm1hc3Rlci0+YnVzKTsKPiArCWkzY19tYXN0ZXJfcmVnaXN0ZXJf bmV3X2RldnMobWFzdGVyKTsKPiArCj4gKwlpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soJm1hc3Rl ci0+YnVzKTsKPiArCWkzY19tYXN0ZXJfZW5hYmxlX21yX2V2ZW50cyhtYXN0ZXIpOwo+ICsJaTNj X2J1c19tYWludGVuYW5jZV91bmxvY2soJm1hc3Rlci0+YnVzKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgCj4gQEAgLTI1MjQsNiArMjc2NywzMCBAQCBpbnQgaTNjX21hc3Rlcl9yZWdpc3RlcihzdHJ1 Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIsCj4gIEVYUE9SVF9TWU1CT0xfR1BMKGkz Y19tYXN0ZXJfcmVnaXN0ZXIpOwo+ICAKPiAgLyoqCj4gKyAqIGkzY19tYXN0ZXJfbWFzdGVyc2hp cF9hY2soKSAtIHBlcmZvcm1zIG9wZXJhdGlvbnMgYmVmb3JlIGJ1cyBoYW5kb3Zlci4KPiArICog QG1hc3RlcjogbWFzdGVyIHVzZWQgdG8gc2VuZCBmcmFtZXMgb24gdGhlIGJ1cwo+ICsgKiBAYWRk cjogSTNDIGRldmljZSBhZGRyZXNzCj4gKyAqCj4gKyAqIEJhc2ljYWxseSwgaXQgc2VuZHMgREVG U0xWUyBjb21tYW5kIHRvIGVuc3VyZSBuZXcgbWFzdGVyIGlzIHRha2luZwo+ICsgKiB0aGUgYnVz IHdpdGggY29tcGxldGUgbGlzdCBvZiBkZXZpY2VzIGFuZCB0aGVuIGFja25vd2xlZGdlcyBidXMg dGFrZW92ZXIuCj4gKyAqCj4gKyAqIFJldHVybjogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGEgbmVn YXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtpbnQgaTNjX21hc3Rlcl9tYXN0 ZXJzaGlwX2FjayhzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIsCj4gKwkJCSAg ICAgIHU4IGFkZHIpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJaTNjX2J1c19tYWludGVuYW5j ZV9sb2NrKCZtYXN0ZXItPmJ1cyk7Cj4gKwlyZXQgPSBpM2NfbWFzdGVyX2dldF9hY2Ntc3RfbG9j a2VkKG1hc3RlciwgYWRkcik7Cj4gKwlpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jaygmbWFzdGVy LT5idXMpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoaTNj X21hc3Rlcl9tYXN0ZXJzaGlwX2Fjayk7Cj4gKwo+ICsKPiArLyoqCj4gICAqIGkzY19tYXN0ZXJf dW5yZWdpc3RlcigpIC0gdW5yZWdpc3RlciBhbiBJM0MgbWFzdGVyCj4gICAqIEBtYXN0ZXI6IG1h c3RlciB1c2VkIHRvIHNlbmQgZnJhbWVzIG9uIHRoZSBidXMKPiAgICoKPiBAQCAtMjUzMyw2ICsy ODAwLDEwIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGkzY19tYXN0ZXJfcmVnaXN0ZXIpOwo+ICAgKi8K PiAgaW50IGkzY19tYXN0ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVy ICptYXN0ZXIpCj4gIHsKPiArCWkzY19idXNfbWFpbnRlbmFuY2VfbG9jaygmbWFzdGVyLT5idXMp Owo+ICsJaTNjX21hc3Rlcl9kaXNhYmxlX21yX2V2ZW50cyhtYXN0ZXIpOwo+ICsJaTNjX2J1c19t YWludGVuYW5jZV91bmxvY2soJm1hc3Rlci0+YnVzKTsKPiArCj4gIAlpM2NfbWFzdGVyX2kyY19h ZGFwdGVyX2NsZWFudXAobWFzdGVyKTsKPiAgCWkzY19tYXN0ZXJfdW5yZWdpc3Rlcl9pM2NfZGV2 cyhtYXN0ZXIpOwo+ICAJaTNjX21hc3Rlcl9idXNfY2xlYW51cChtYXN0ZXIpOwo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L2kzYy9tYXN0ZXIuaCBiL2luY2x1ZGUvbGludXgvaTNjL21hc3Rl ci5oCj4gaW5kZXggNDJiYjIxNS4uZjMyYWZkMyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4 L2kzYy9tYXN0ZXIuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvaTNjL21hc3Rlci5oCj4gQEAgLTQy MSw2ICs0MjEsMTIgQEAgc3RydWN0IGkzY19idXMgewo+ICAgKgkJICAgICAgZm9yIGEgZnV0dXJl IElCSQo+ICAgKgkJICAgICAgVGhpcyBtZXRob2QgaXMgbWFuZGF0b3J5IG9ubHkgaWYgLT5yZXF1 ZXN0X2liaSBpcyBub3QKPiAgICoJCSAgICAgIE5VTEwuCj4gKyAqIEByZXF1ZXN0X21hc3RlcnNo aXA6IHJlcXVlc3RzIGJ1cyBtYXN0ZXJzaGlwLiBNYXN0ZXJzaGlwIGlzIHJlcXVlc3RlZAo+ICsg KiAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHdoZW4gZGV2aWNlIGRyaXZlciB3 YW50cyB0byB0cmFuc2Zlcgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICBkYXRhIHVzaW5nIG1h c3RlciBpbiBzbGF2ZSBtb2RlLgo+ICsgKiBAZW5hYmxlX21yX2V2ZW50czogZW5hYmxlIHRoZSBN YXN0ZXJzaGlwIGV2ZW50Lgo+ICsgKiAgICAgICAgICAgICAgICAgICAgTWFzdGVyc2hpcCBkb2Vz IG5vdCByZXF1aXJlIGhhbmRsZXIuCj4gKyAqIEBkaXNhYmxlX21yX2V2ZW50czogZGlzYWJsZSB0 aGUgTWFzdGVyc2hpcCBldmVudC4KPiAgICovCj4gIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xs ZXJfb3BzIHsKPiAgCWludCAoKmJ1c19pbml0KShzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVy ICptYXN0ZXIpOwo+IEBAIC00NDcsNiArNDUzLDEwIEBAIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRy b2xsZXJfb3BzIHsKPiAgCWludCAoKmRpc2FibGVfaWJpKShzdHJ1Y3QgaTNjX2Rldl9kZXNjICpk ZXYpOwo+ICAJdm9pZCAoKnJlY3ljbGVfaWJpX3Nsb3QpKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRl diwKPiAgCQkJCSBzdHJ1Y3QgaTNjX2liaV9zbG90ICpzbG90KTsKPiArCXZvaWQgKCp1cGRhdGVf ZGV2cykoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKTsKPiArCWludCAoKnJl cXVlc3RfbWFzdGVyc2hpcCkoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKTsK PiArCWludCAoKmVuYWJsZV9tcl9ldmVudHMpKHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIg Km1hc3Rlcik7Cj4gKwlpbnQgKCpkaXNhYmxlX21yX2V2ZW50cykoc3RydWN0IGkzY19tYXN0ZXJf Y29udHJvbGxlciAqbWFzdGVyKTsKPiAgfTsKPiAgCj4gIC8qKgo+IEBAIC01MjYsNiArNTM2LDgg QEAgaW50IGkzY19tYXN0ZXJfZGVmc2x2c19sb2NrZWQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJv bGxlciAqbWFzdGVyKTsKPiAgaW50IGkzY19tYXN0ZXJfZ2V0X2ZyZWVfYWRkcihzdHJ1Y3QgaTNj X21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIsCj4gIAkJCSAgICAgdTggc3RhcnRfYWRkcik7Cj4g IAo+ICtpbnQgaTNjX21hc3Rlcl9hZGRfaTJjX2RldihzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9s bGVyICptYXN0ZXIsCj4gKwkJCSAgIHUxNiBhZGRyLCB1OCBsdnIpOwo+ICBpbnQgaTNjX21hc3Rl cl9hZGRfaTNjX2Rldl9sb2NrZWQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVy LAo+ICAJCQkJICB1OCBhZGRyKTsKPiAgaW50IGkzY19tYXN0ZXJfZG9fZGFhKHN0cnVjdCBpM2Nf bWFzdGVyX2NvbnRyb2xsZXIgKm1hc3Rlcik7Cj4gQEAgLTUzOCw2ICs1NTAsMTEgQEAgaW50IGkz Y19tYXN0ZXJfcmVnaXN0ZXIoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyLAo+ ICAJCQljb25zdCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyX29wcyAqb3BzLAo+ICAJCQli b29sIHNlY29uZGFyeSk7Cj4gIGludCBpM2NfbWFzdGVyX3VucmVnaXN0ZXIoc3RydWN0IGkzY19t YXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKTsKPiAraW50IGkzY19tYXN0ZXJfZ2V0X2FjY21zdF9s b2NrZWQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyLAo+ICsJCQkJIHU4IGFk ZHIpOwo+ICtpbnQgaTNjX21hc3Rlcl9tYXN0ZXJzaGlwX2FjayhzdHJ1Y3QgaTNjX21hc3Rlcl9j b250cm9sbGVyICptYXN0ZXIsCj4gKwkJCSAgICAgIHU4IGFkZHIpOwo+ICt2b2lkIGkzY19tYXN0 ZXJfcmVnaXN0ZXJfbmV3X2RldnMoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVy KTsKPiAgCj4gIC8qKgo+ICAgKiBpM2NfZGV2X2dldF9tYXN0ZXJfZGF0YSgpIC0gZ2V0IG1hc3Rl ciBwcml2YXRlIGRhdGEgYXR0YWNoZWQgdG8gYW4gSTNDCgpCZXN0IHJlZ2FyZHMsClZpdG9yIFNv YXJlcwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtaTNjIG1haWxpbmcgbGlzdApsaW51eC1pM2NAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWkzYwo=