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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 04553C6FD20 for ; Tue, 21 Mar 2023 20:21:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rQ2D4oRVtARyBSqIFZZl8lLn5xUf/vdHCzzHd+ke7Ok=; b=EFjhjamdj9M53c 2QbGyw5Bex8oERIeMAmvH7Uw3SPrkitEqLB6+stJGLxpdJ8vr+6hiRVquNu98DK3+JbFqHLeKVKff H4/oIlQ5HwXI/ZH4jZEh5OBVsMheWyoL0qfkz3I86kMeSjSdcf+ZUvhnhIhQdX9dhjVcH7idOqr6z tVxZOyOQXwbKUCxsorT2cZqrT2850E7L3Hxtfc+Gyeg4oKof3eJpahqS6ZgRkCWztgSsM4sYASC7j exLftumOnrWX68+Bw3mGqEDJtrOXDrtbH5sLfhDGvQ2SEAPUebsYxLF1IDZKgQMMyazD1YQWCVjgl DHFzv2PI1XCXCKBTVlqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1peiSi-00DfIi-2u; Tue, 21 Mar 2023 20:20:04 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1peiSe-00DfDR-20 for linux-arm-kernel@lists.infradead.org; Tue, 21 Mar 2023 20:20:03 +0000 Received: by mail-ed1-x52a.google.com with SMTP id b20so31568631edd.1 for ; Tue, 21 Mar 2023 13:19:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679429992; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=zilK0d0Uf3iuezoEwzx+OD3k9KAQ8GpwZUTkAXC8lkI=; b=wtBFPpjIV7KiImWUl3z6Q64vdi8IywvzOJPBt1juWZyXgq9JY5obeloe6CMlt3c8l2 n4OhQYP1hm4QknTg/dqNXV6G8smfonfZsYEP/EWnLLMP9TQPyE42cTukUZsAVj2uWLfE p5nOus3r9n6uY1kH2T0EFUPWiXMzPQV5MicLhUI3PLnV0aKYebzaXU3t3tmlHorYeMKY BZC7d94PaBML8zRpZ+1+C30SpztE+cm3EygWFUgF0ihhe3OBP2g/5zEoyWRJBTnOLhxg jq6A+33Mx28bPUnH4eECNaF5zKUIXmj4wZw59AbTs7ZKayTRLjm1dJaDhPPHDCyMGZqL lTQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679429992; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zilK0d0Uf3iuezoEwzx+OD3k9KAQ8GpwZUTkAXC8lkI=; b=pS5AmMf70My0Z098DjlYCgZa+WDYhyYNHhsnRKtpaRZzBiuYvFiNZhdRBqToDQ6dk7 pk8UFEihNSyMoFsO8uL8KT9KaF2rxbw9KUgOTccXyjlOsQnQ5U/wnFIevmg7JPUO6nvj D+h9WWIY77wKC4c+nt8685hYwNVGDWaiOIIne08nD/Qmo8KDd3Xhax5GEtuL1zb67jCu kKhuZhaYglhqL2+7Nb5KUfZ6lerpcrybv2yrwdvzPziHvN5DB4lll+NL1FLdvZEavU8e 8lxxaMGcL7mYJwjxxlg5Va/I28GL3Of70D1WAlce2AchwssLOv35zE4GR7Q349bNNF5K KNAg== X-Gm-Message-State: AO0yUKUKk9vtIXnVdv/CL15LFVt9YmX8cw08Yjud2O4CYS+DCA0M3Aja kCoItsddliBO5ziXz/w5pEMYnQ== X-Google-Smtp-Source: AK7set/P2f6JVMVgK8V1xGvovTLyqEKgqENGNj+wWyaiirzrrCld75wthFFfg2Vyka2tWaiswC5O5w== X-Received: by 2002:a17:906:7b96:b0:925:5549:f81c with SMTP id s22-20020a1709067b9600b009255549f81cmr4394298ejo.6.1679429991780; Tue, 21 Mar 2023 13:19:51 -0700 (PDT) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id fi9-20020a170906da0900b00931faf03db0sm5915177ejb.27.2023.03.21.13.19.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Mar 2023 13:19:51 -0700 (PDT) Message-ID: <3fe1023a-99b7-e905-20c1-12a51b57f701@linaro.org> Date: Tue, 21 Mar 2023 20:19:48 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v11 16/26] firmware: qcom_scm: Register Gunyah platform ops Content-Language: en-US To: Elliot Berman , Alex Elder , Andy Gross , Bjorn Andersson , Konrad Dybcio , Prakruthi Deepak Heragu Cc: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Jonathan Corbet , Bagas Sanjaya , Will Deacon , Catalin Marinas , Jassi Brar , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230304010632.2127470-1-quic_eberman@quicinc.com> <20230304010632.2127470-17-quic_eberman@quicinc.com> <6c2e3fac-1bd8-be10-6e10-e200ee9b55f2@linaro.org> From: Srinivas Kandagatla In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230321_132000_716548_2D3BDC4E X-CRM114-Status: GOOD ( 34.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMS8wMy8yMDIzIDE4OjQwLCBFbGxpb3QgQmVybWFuIHdyb3RlOgo+IAo+IAo+IE9uIDMv MjEvMjAyMyA3OjI0IEFNLCBTcmluaXZhcyBLYW5kYWdhdGxhIHdyb3RlOgo+PiBIaSBFbGxpb3Qs Cj4+Cj4+IE9uIDA0LzAzLzIwMjMgMDE6MDYsIEVsbGlvdCBCZXJtYW4gd3JvdGU6Cj4+PiBRdWFs Y29tbSBwbGF0Zm9ybXMgaGF2ZSBhIGZpcm13YXJlIGVudGl0eSB3aGljaCBwZXJmb3JtcyBhY2Nl c3MgY29udHJvbAo+Pj4gdG8gcGh5c2ljYWwgcGFnZXMuIER5bmFtaWNhbGx5IHN0YXJ0ZWQgR3Vu eWFoIHZpcnR1YWwgbWFjaGluZXMgdXNlIHRoZQo+Pj4gUUNPTV9TQ01fUk1fTUFOQUdFRF9WTUlE IGZvciBhY2Nlc3MuIExpbnV4IHRodXMgbmVlZHMgdG8gYXNzaWduIGFjY2Vzcwo+Pj4gdG8gdGhl IG1lbW9yeSB1c2VkIGJ5IGd1ZXN0IFZNcy4gR3VueWFoIGRvZXNuJ3QgZG8gdGhpcyBvcGVyYXRp b24gZm9yIHVzCj4+PiBzaW5jZSBpdCBpcyB0aGUgY3VycmVudCBWTSAodHlwaWNhbGx5IFZNSURf SExPUykgZGVsZWdhdGluZyB0aGUgYWNjZXNzCj4+PiBhbmQgbm90IEd1bnlhaCBpdHNlbGYuIFVz ZSB0aGUgR3VueWFoIHBsYXRmb3JtIG9wcyB0byBhY2hpZXZlIHRoaXMgc28KPj4+IHRoYXQgb25s eSBRdWFsY29tbSBwbGF0Zm9ybXMgYXR0ZW1wdCB0byBtYWtlIHRoZSBuZWVkZWQgU0NNIGNhbGxz Lgo+Pj4KPj4+IENvLWRldmVsb3BlZC1ieTogUHJha3J1dGhpIERlZXBhayBIZXJhZ3UgPHF1aWNf cGhlcmFndUBxdWljaW5jLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IFByYWtydXRoaSBEZWVwYWsg SGVyYWd1IDxxdWljX3BoZXJhZ3VAcXVpY2luYy5jb20+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBFbGxp b3QgQmVybWFuIDxxdWljX2ViZXJtYW5AcXVpY2luYy5jb20+Cj4+PiAtLS0KPj4+IMKgIGRyaXZl cnMvZmlybXdhcmUvS2NvbmZpZ8KgwqDCoMKgwqDCoCB8wqDCoCAyICsKPj4+IMKgIGRyaXZlcnMv ZmlybXdhcmUvcWNvbV9zY20uY8KgwqDCoCB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPj4+IMKgIGluY2x1ZGUvbGludXgvZ3VueWFoX3JzY19tZ3IuaCB8wqDCoCAyICst Cj4+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZyBiL2RyaXZlcnMv ZmlybXdhcmUvS2NvbmZpZwo+Pj4gaW5kZXggYjU5ZTMwNDFmZDYyLi5iODg4MDY4ZmY2ZjIgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL0tjb25maWcKPj4+ICsrKyBiL2RyaXZlcnMv ZmlybXdhcmUvS2NvbmZpZwo+Pj4gQEAgLTIxNCw2ICsyMTQsOCBAQCBjb25maWcgTVRLX0FEU1Bf SVBDCj4+PiDCoCBjb25maWcgUUNPTV9TQ00KPj4+IMKgwqDCoMKgwqAgdHJpc3RhdGUKPj4+ICvC oMKgwqAgc2VsZWN0IFZJUlRfRFJJVkVSUwo+Pj4gK8KgwqDCoCBzZWxlY3QgR1VOWUFIX1BMQVRG T1JNX0hPT0tTCj4+Pgo+Pgo+PiBJIHN0aWxsIGhhdmUgY29uY2VybnMgd2l0aCB0aGlzIHNlbGVj dHMgaW4gS2NvbmZpZyBvbiBvbGRlciBRdWFsY29tbSAKPj4gcGxhdGZvcm1zIHRoYXQgdXNlIFND TSBhbmQgZG8gbm90IGhhdmUgR1VOWUFILgo+Pgo+PiBJbiBvdXIgbGFzdCBkaXNjdXNzaW5nIHlv dSBtZW50aW9uZWQgdGhlIHJlcXVpcmVtZW50IGZvcgo+PiAiQ09ORklHX0dVTllBSD15IGFuZCBD T05GSUdfUUNPTV9TQ009bSIKPj4KPj4gSSB0aGluayB0aGF0IHNob3VsZCBiZSBkb2FibGUgYW5k IHJlbW92ZSBzZWxlY3RpbmcgaWYgeW91IGNhbiBtYWtlIGEgCj4+IHNlcGFyYXRlIEdVTllBSF9R Q09NX1BMQVRGT1JNX0hPT0tTIGRyaXZlcgo+Pgo+PiBEb2VzIHRoaXMgd29yaz8KPiAKPiBUaGlz IHdvcmtzIGZvciBBbmRyb2lkIGFuZCBhbGwgdGhlIFF1YWxjb21tIHZlbmRvciAoZG93bnN0cmVh bSkgCj4gcGxhdGZvcm1zIHdoZXJlIHdlIGNhbiBleHBsaWNpdGx5IGxvYWQgbW9kdWxlcy4gSSBk b24ndCB0aGluayB0aGlzIAo+IG1vZHVsZSB3b3VsZCBiZSBpbXBsaWNpdGx5IGxvYWRlZCBieSBh bnkga2VybmVsIG1lY2hhbmlzbS4KCldlIGNvdWxkIGFsc28gbG9hZCB0aGlzIG1vZHVsZSBiYXNl ZCBvbiBVVUlEIG1hdGNoIGF0IHRoZSBndW55YWggY29yZSAKbGV2ZWwgdG9vLCBpZiB0aGF0IGhl bHBzLgoKCi0tc3JpbmkKCj4gCj4+IMKgPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPmN1dDwtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IMKgRnJvbSAxZmI3OTk1YWVjZjE3Y2FlZmQw OWZmYjUxNjU3OWJjNGFjOWFjMzAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+PiBGcm9tOiBT cmluaXZhcyBLYW5kYWdhdGxhIDxzcmluaXZhcy5rYW5kYWdhdGxhQGxpbmFyby5vcmc+Cj4+IERh dGU6IFR1ZSwgMjEgTWFyIDIwMjMgMTM6MzQ6MDIgKzAwMDAKPj4gU3ViamVjdDogW1BBVENIXSB2 aXJ0OiBndW55YWg6IGFkZCBxY29tIHBsYXRmb3JtIGhvb2tzCj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IFNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5pdmFzLmthbmRhZ2F0bGFAbGluYXJvLm9yZz4KPj4g LS0tCj4+IMKgwqBkcml2ZXJzL2Zpcm13YXJlL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIgLS0KPj4gwqDCoGRyaXZlcnMvZmlybXdhcmUvcWNv bV9zY20uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE0ICsrKy0tLS0t Cj4+IMKgwqBkcml2ZXJzL3ZpcnQvZ3VueWFoL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDUgKysrCj4+IMKgwqBkcml2ZXJzL3ZpcnQvZ3VueWFoL01ha2Vm aWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMSArCj4+IMKgwqAuLi4v dmlydC9ndW55YWgvZ3VueWFoX3Fjb21fcGxhdGZvcm1faG9va3MuY8KgIHwgMzUgKysrKysrKysr KysrKysrKysrKwo+PiDCoMKgaW5jbHVkZS9saW51eC9maXJtd2FyZS9xY29tL3Fjb21fc2NtLmjC oMKgwqDCoMKgwqDCoCB8wqAgMyArKwo+PiDCoMKgNiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRp b25zKCspLCAxMiBkZWxldGlvbnMoLSkKPj4gwqDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L3ZpcnQvZ3VueWFoL2d1bnlhaF9xY29tX3BsYXRmb3JtX2hvb2tzLmMKPj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZyBiL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZwo+ PiBpbmRleCBiODg4MDY4ZmY2ZjIuLmI1OWUzMDQxZmQ2MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9maXJtd2FyZS9LY29uZmlnCj4+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvS2NvbmZpZwo+PiBA QCAtMjE0LDggKzIxNCw2IEBAIGNvbmZpZyBNVEtfQURTUF9JUEMKPj4KPj4gwqDCoGNvbmZpZyBR Q09NX1NDTQo+PiDCoMKgwqDCoMKgIHRyaXN0YXRlCj4+IC3CoMKgwqAgc2VsZWN0IFZJUlRfRFJJ VkVSUwo+PiAtwqDCoMKgIHNlbGVjdCBHVU5ZQUhfUExBVEZPUk1fSE9PS1MKPj4KPj4gwqDCoGNv bmZpZyBRQ09NX1NDTV9ET1dOTE9BRF9NT0RFX0RFRkFVTFQKPj4gwqDCoMKgwqDCoCBib29sICJR dWFsY29tbSBkb3dubG9hZCBtb2RlIGVuYWJsZWQgYnkgZGVmYXVsdCIKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20uYyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9zY20u Ywo+PiBpbmRleCA1MjczY2Y2NGVlMmEuLjE5NGVhMmJjOWExZCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9maXJtd2FyZS9xY29tX3NjbS5jCj4+ICsrKyBiL2RyaXZlcnMvZmlybXdhcmUvcWNvbV9z Y20uYwo+PiBAQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHFjb21fc2NtX2xtaF9kY3ZzaCh1MzIg cGF5bG9hZF9mbiwgdTMyIAo+PiBwYXlsb2FkX3JlZywgdTMyIHBheWxvYWRfdmFsLAo+PiDCoMKg fQo+PiDCoMKgRVhQT1JUX1NZTUJPTChxY29tX3NjbV9sbWhfZGN2c2gpOwo+Pgo+PiAtc3RhdGlj IGludCBxY29tX3NjbV9naF9ybV9wcmVfbWVtX3NoYXJlKHN0cnVjdCBnaF9ybSAqcm0sIHN0cnVj dCAKPj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkKPj4gK2ludCBxY29tX3NjbV9naF9y bV9wcmVfbWVtX3NoYXJlKHN0cnVjdCBnaF9ybV9tZW1fcGFyY2VsICptZW1fcGFyY2VsKQo+PiDC oMKgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBxY29tX3NjbV92bXBlcm0gKm5ld19wZXJtczsKPj4g wqDCoMKgwqDCoCB1NjQgc3JjLCBzcmNfY3B5Owo+PiBAQCAtMTM1OSw4ICsxMzU5LDkgQEAgc3Rh dGljIGludCBxY29tX3NjbV9naF9ybV9wcmVfbWVtX3NoYXJlKHN0cnVjdCAKPj4gZ2hfcm0gKnJt LCBzdHJ1Y3QgZ2hfcm1fbWVtX3BhcmNlCj4+IMKgwqDCoMKgwqAga2ZyZWUobmV3X3Blcm1zKTsK Pj4gwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoMKgfQo+PiArRVhQT1JUX1NZTUJPTF9HUEwo cWNvbV9zY21fZ2hfcm1fcHJlX21lbV9zaGFyZSk7Cj4+Cj4+IC1zdGF0aWMgaW50IHFjb21fc2Nt X2doX3JtX3Bvc3RfbWVtX3JlY2xhaW0oc3RydWN0IGdoX3JtICpybSwgc3RydWN0IAo+PiBnaF9y bV9tZW1fcGFyY2VsICptZW1fcGFyY2VsKQo+PiAraW50IHFjb21fc2NtX2doX3JtX3Bvc3RfbWVt X3JlY2xhaW0oc3RydWN0IGdoX3JtX21lbV9wYXJjZWwgKm1lbV9wYXJjZWwpCj4+IMKgwqB7Cj4+ IMKgwqDCoMKgwqAgc3RydWN0IHFjb21fc2NtX3ZtcGVybSBuZXdfcGVybXM7Cj4+IMKgwqDCoMKg wqAgdTY0IHNyYyA9IDAsIHNyY19jcHk7Cj4+IEBAIC0xMzg4LDExICsxMzg5LDcgQEAgc3RhdGlj IGludCAKPj4gcWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbShzdHJ1Y3QgZ2hfcm0gKnJt LCBzdHJ1Y3QgZ2hfcm1fbWVtX3BhCj4+Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqDC oH0KPj4gLQo+PiAtc3RhdGljIHN0cnVjdCBnaF9ybV9wbGF0Zm9ybV9vcHMgcWNvbV9zY21fZ2hf cm1fcGxhdGZvcm1fb3BzID0gewo+PiAtwqDCoMKgIC5wcmVfbWVtX3NoYXJlID0gcWNvbV9zY21f Z2hfcm1fcHJlX21lbV9zaGFyZSwKPj4gLcKgwqDCoCAucG9zdF9tZW1fcmVjbGFpbSA9IHFjb21f c2NtX2doX3JtX3Bvc3RfbWVtX3JlY2xhaW0sCj4+IC19Owo+PiArRVhQT1JUX1NZTUJPTF9HUEwo cWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbSk7Cj4+Cj4+IMKgwqBzdGF0aWMgaW50IHFj b21fc2NtX2ZpbmRfZGxvYWRfYWRkcmVzcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHU2NCAqYWRkcikK Pj4gwqDCoHsKPj4gQEAgLTE1OTcsOSArMTU5NCw2IEBAIHN0YXRpYyBpbnQgcWNvbV9zY21fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAKPj4gKnBkZXYpCj4+IMKgwqDCoMKgwqAgaWYgKGRv d25sb2FkX21vZGUpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBxY29tX3NjbV9zZXRfZG93bmxvYWRf bW9kZSh0cnVlKTsKPj4KPj4gLcKgwqDCoCBpZiAoZGV2bV9naF9ybV9yZWdpc3Rlcl9wbGF0Zm9y bV9vcHMoJnBkZXYtPmRldiwgCj4+ICZxY29tX3NjbV9naF9ybV9wbGF0Zm9ybV9vcHMpKQo+PiAt wqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oX19zY20tPmRldiwgIkd1bnlhaCBSTSBwbGF0Zm9ybSBv cHMgd2VyZSBhbHJlYWR5IAo+PiByZWdpc3RlcmVkXG4iKTsKPj4gLQo+PiDCoMKgwqDCoMKgIHJl dHVybiAwOwo+PiDCoMKgfQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0L2d1bnlhaC9L Y29uZmlnIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9LY29uZmlnCj4+IGluZGV4IGJkOGUzMTE4NDk2 Mi4uYTljNDhkNjUxOGY3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3ZpcnQvZ3VueWFoL0tjb25m aWcKPj4gKysrIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9LY29uZmlnCj4+IEBAIC0xNiw2ICsxNiwx MSBAQCBjb25maWcgR1VOWUFICj4+IMKgwqBjb25maWcgR1VOWUFIX1BMQVRGT1JNX0hPT0tTCj4+ IMKgwqDCoMKgwqAgdHJpc3RhdGUKPj4KPj4gK2NvbmZpZyBHVU5ZQUhfUUNPTV9QTEFURk9STV9I T09LUwo+PiArwqDCoMKgIHRyaXN0YXRlICJHdW55YWggUGxhdGZvcm0gaG9va3MgZm9yIFF1YWxj b21tIgo+PiArwqDCoMKgwqDCoMKgwqAgZGVwZW5kcyBvbiBBUkNIX1FDT00gJiYgUUNPTV9TQ00K Pj4gK8KgwqDCoCBkZXBlbmRzIG9uIEdVTllBSAo+PiArCj4+IMKgwqBjb25maWcgR1VOWUFIX1ZD UFUKPj4gwqDCoMKgwqDCoCB0cmlzdGF0ZSAiUnVubmFibGUgR3VueWFoIHZDUFVzIgo+PiDCoMKg wqDCoMKgIGRlcGVuZHMgb24gR1VOWUFICj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvZ3Vu eWFoL01ha2VmaWxlIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9NYWtlZmlsZQo+PiBpbmRleCA3MzQ3 YjE0NzA0OTEuLmMzM2Y3MDFiYjVjOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy92aXJ0L2d1bnlh aC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL3ZpcnQvZ3VueWFoL01ha2VmaWxlCj4+IEBAIC0y LDYgKzIsNyBAQAo+Pgo+PiDCoMKgb2JqLSQoQ09ORklHX0dVTllBSCkgKz0gZ3VueWFoLm8KPj4g wqDCoG9iai0kKENPTkZJR19HVU5ZQUhfUExBVEZPUk1fSE9PS1MpICs9IGd1bnlhaF9wbGF0Zm9y bV9ob29rcy5vCj4+ICtvYmotJChDT05GSUdfR1VOWUFIX1FDT01fUExBVEZPUk1fSE9PS1MpICs9 IGd1bnlhaF9xY29tX3BsYXRmb3JtX2hvb2tzLm8KPj4KPj4gwqDCoGd1bnlhaF9yc2NfbWdyLXkg Kz0gcnNjX21nci5vIHJzY19tZ3JfcnBjLm8gdm1fbWdyLm8gdm1fbWdyX21tLm8KPj4gwqDCoG9i ai0kKENPTkZJR19HVU5ZQUgpICs9IGd1bnlhaF9yc2NfbWdyLm8KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdmlydC9ndW55YWgvZ3VueWFoX3Fjb21fcGxhdGZvcm1faG9va3MuYyAKPj4gYi9kcml2 ZXJzL3ZpcnQvZ3VueWFoL2d1bnlhaF9xY29tX3BsYXRmb3JtX2hvb2tzLmMKPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zMzMyZjg0MTM0ZDMKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL3ZpcnQvZ3VueWFoL2d1bnlhaF9xY29tX3BsYXRmb3Jt X2hvb2tzLmMKPj4gQEAgLTAsMCArMSwzNSBAQAo+PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13 YXJlL3Fjb20vcWNvbV9zY20uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ndW55YWhfcnNjX21nci5o Pgo+PiArCj4+ICtzdGF0aWMgaW50IHFjb21fZ2hfcm1fcHJlX21lbV9zaGFyZShzdHJ1Y3QgZ2hf cm0gKnJtLCBzdHJ1Y3QgCj4+IGdoX3JtX21lbV9wYXJjZWwgKm1lbV9wYXJjZWwpCj4+ICt7Cj4+ ICvCoMKgwqAgcmV0dXJuIHFjb21fc2NtX2doX3JtX3ByZV9tZW1fc2hhcmUobWVtX3BhcmNlbCk7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcWNvbV9naF9ybV9wb3N0X21lbV9yZWNsYWltKHN0 cnVjdCBnaF9ybSAqcm0sIHN0cnVjdCAKPj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkK Pj4gK3sKPj4gK8KgwqDCoCByZXR1cm4gcWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbSht ZW1fcGFyY2VsKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBnaF9ybV9wbGF0Zm9ybV9v cHMgcWNvbV9naF9wbGF0Zm9ybV9ob29rc19vcHMgPSB7Cj4+ICvCoMKgwqAgLnByZV9tZW1fc2hh cmUgPSBxY29tX2doX3JtX3ByZV9tZW1fc2hhcmUsCj4+ICvCoMKgwqAgLnBvc3RfbWVtX3JlY2xh aW0gPSBxY29tX2doX3JtX3Bvc3RfbWVtX3JlY2xhaW0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMg aW50IF9faW5pdCBxY29tX2doX3BsYXRmb3JtX2hvb2tzX3JlZ2lzdGVyKHZvaWQpCj4+ICt7Cj4+ ICvCoMKgwqAgcmV0dXJuIGdoX3JtX3JlZ2lzdGVyX3BsYXRmb3JtX29wcygmcWNvbV9naF9wbGF0 Zm9ybV9ob29rc19vcHMpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgcWNvbV9n aF9wbGF0Zm9ybV9ob29rc191bnJlZ2lzdGVyKHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqAgZ2hfcm1f dW5yZWdpc3Rlcl9wbGF0Zm9ybV9vcHMoJnFjb21fZ2hfcGxhdGZvcm1faG9va3Nfb3BzKTsKPj4g K30KPj4gKwo+PiArbW9kdWxlX2luaXQocWNvbV9naF9wbGF0Zm9ybV9ob29rc19yZWdpc3Rlcik7 Cj4+ICttb2R1bGVfZXhpdChxY29tX2doX3BsYXRmb3JtX2hvb2tzX3VucmVnaXN0ZXIpOwo+PiAr Cj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBHdW55 YWggUGxhdGZvcm0gSG9va3MgCj4+IGRyaXZlciIpOwo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maXJtd2FyZS9xY29tL3Fjb21fc2Nt LmggCj4+IGIvaW5jbHVkZS9saW51eC9maXJtd2FyZS9xY29tL3Fjb21fc2NtLmgKPj4gaW5kZXgg MWU0NDlhNWQ3ZjVjLi45YjBkMzNkYjgwM2QgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1ZGUvbGludXgv ZmlybXdhcmUvcWNvbS9xY29tX3NjbS5oCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvZmlybXdhcmUv cWNvbS9xY29tX3NjbS5oCj4+IEBAIC0xMjEsNSArMTIxLDggQEAgZXh0ZXJuIGludCBxY29tX3Nj bV9sbWhfZGN2c2godTMyIHBheWxvYWRfZm4sIHUzMiAKPj4gcGF5bG9hZF9yZWcsIHUzMiBwYXls b2FkX3ZhbCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0IGxp bWl0X25vZGUsIHUzMiBub2RlX2lkLCB1NjQgdmVyc2lvbik7Cj4+IMKgwqBleHRlcm4gaW50IHFj b21fc2NtX2xtaF9wcm9maWxlX2NoYW5nZSh1MzIgcHJvZmlsZV9pZCk7Cj4+IMKgwqBleHRlcm4g Ym9vbCBxY29tX3NjbV9sbWhfZGN2c2hfYXZhaWxhYmxlKHZvaWQpOwo+PiArc3RydWN0IGdoX3Jt X21lbV9wYXJjZWw7Cj4+ICtleHRlcm4gaW50IHFjb21fc2NtX2doX3JtX3Bvc3RfbWVtX3JlY2xh aW0oc3RydWN0IGdoX3JtX21lbV9wYXJjZWwgCj4+ICptZW1fcGFyY2VsKTsKPj4gK2V4dGVybiBp bnQgcWNvbV9zY21fZ2hfcm1fcHJlX21lbV9zaGFyZShzdHJ1Y3QgZ2hfcm1fbWVtX3BhcmNlbCAK Pj4gKm1lbV9wYXJjZWwpOwo+Pgo+PiDCoMKgI2VuZGlmCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLT5jdXQ8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4KPj4+IMKgIGNvbmZpZyBRQ09N X1NDTV9ET1dOTE9BRF9NT0RFX0RFRkFVTFQKPj4+IMKgwqDCoMKgwqAgYm9vbCAiUXVhbGNvbW0g ZG93bmxvYWQgbW9kZSBlbmFibGVkIGJ5IGRlZmF1bHQiCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9maXJtd2FyZS9xY29tX3NjbS5jIGIvZHJpdmVycy9maXJtd2FyZS9xY29tX3NjbS5jCj4+PiBp bmRleCBiOTU2MTZiMzViZmYuLjg5YTI2MWE5ZTAyMSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv ZmlybXdhcmUvcWNvbV9zY20uYwo+Pj4gKysrIGIvZHJpdmVycy9maXJtd2FyZS9xY29tX3NjbS5j Cj4+PiBAQCAtMjAsNiArMjAsNyBAQAo+Pj4gwqAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+Pj4g wqAgI2luY2x1ZGUgPGxpbnV4L3Jlc2V0LWNvbnRyb2xsZXIuaD4KPj4+IMKgICNpbmNsdWRlIDxs aW51eC9hcm0tc21jY2MuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvZ3VueWFoX3JzY19tZ3IuaD4K Pj4+IMKgICNpbmNsdWRlICJxY29tX3NjbS5oIgo+Pj4gQEAgLTMwLDYgKzMxLDkgQEAgbW9kdWxl X3BhcmFtKGRvd25sb2FkX21vZGUsIGJvb2wsIDApOwo+Pj4gwqAgI2RlZmluZSBTQ01fSEFTX0lG QUNFX0NMS8KgwqDCoCBCSVQoMSkKPj4+IMKgICNkZWZpbmUgU0NNX0hBU19CVVNfQ0xLwqDCoMKg wqDCoMKgwqAgQklUKDIpCj4+PiArI2RlZmluZSBRQ09NX1NDTV9STV9NQU5BR0VEX1ZNSUTCoMKg wqAgMHgzQQo+Pj4gKyNkZWZpbmUgUUNPTV9TQ01fTUFYX01BTkFHRURfVk1JRMKgwqDCoCAweDNG Cj4+PiArCj4+PiDCoCBzdHJ1Y3QgcWNvbV9zY20gewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2 aWNlICpkZXY7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBjbGsgKmNvcmVfY2xrOwo+Pj4gQEAgLTEy OTksNiArMTMwMyw5OSBAQCBpbnQgcWNvbV9zY21fbG1oX2RjdnNoKHUzMiBwYXlsb2FkX2ZuLCB1 MzIgCj4+PiBwYXlsb2FkX3JlZywgdTMyIHBheWxvYWRfdmFsLAo+Pj4gwqAgfQo+Pj4gwqAgRVhQ T1JUX1NZTUJPTChxY29tX3NjbV9sbWhfZGN2c2gpOwo+Pj4gK3N0YXRpYyBpbnQgcWNvbV9zY21f Z2hfcm1fcHJlX21lbV9zaGFyZShzdHJ1Y3QgZ2hfcm0gKnJtLCBzdHJ1Y3QgCj4+PiBnaF9ybV9t ZW1fcGFyY2VsICptZW1fcGFyY2VsKQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3RydWN0IHFjb21fc2Nt X3ZtcGVybSAqbmV3X3Blcm1zOwo+Pj4gK8KgwqDCoCB1NjQgc3JjLCBzcmNfY3B5Owo+Pj4gK8Kg wqDCoCBpbnQgcmV0ID0gMCwgaSwgbjsKPj4+ICvCoMKgwqAgdTE2IHZtaWQ7Cj4+PiArCj4+PiAr wqDCoMKgIG5ld19wZXJtcyA9IGtjYWxsb2MobWVtX3BhcmNlbC0+bl9hY2xfZW50cmllcywgCj4+ PiBzaXplb2YoKm5ld19wZXJtcyksIEdGUF9LRVJORUwpOwo+Pj4gK8KgwqDCoCBpZiAoIW5ld19w ZXJtcykKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4+ICsKPj4+ICvCoMKg wqAgZm9yIChuID0gMDsgbiA8IG1lbV9wYXJjZWwtPm5fYWNsX2VudHJpZXM7IG4rKykgewo+Pj4g K8KgwqDCoMKgwqDCoMKgIHZtaWQgPSBsZTE2X3RvX2NwdShtZW1fcGFyY2VsLT5hY2xfZW50cmll c1tuXS52bWlkKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodm1pZCA8PSBRQ09NX1NDTV9NQVhf TUFOQUdFRF9WTUlEKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3X3Blcm1zW25dLnZt aWQgPSB2bWlkOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG5ld19wZXJtc1tuXS52bWlkID0gUUNPTV9TQ01fUk1fTUFOQUdFRF9WTUlEOwo+Pj4g K8KgwqDCoMKgwqDCoMKgIGlmIChtZW1fcGFyY2VsLT5hY2xfZW50cmllc1tuXS5wZXJtcyAmIEdI X1JNX0FDTF9YKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3X3Blcm1zW25dLnBlcm0g fD0gUUNPTV9TQ01fUEVSTV9FWEVDOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChtZW1fcGFyY2Vs LT5hY2xfZW50cmllc1tuXS5wZXJtcyAmIEdIX1JNX0FDTF9XKQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbmV3X3Blcm1zW25dLnBlcm0gfD0gUUNPTV9TQ01fUEVSTV9XUklURTsKPj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAobWVtX3BhcmNlbC0+YWNsX2VudHJpZXNbbl0ucGVybXMgJiBHSF9S TV9BQ0xfUikKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld19wZXJtc1tuXS5wZXJtIHw9 IFFDT01fU0NNX1BFUk1fUkVBRDsKPj4+ICvCoMKgwqAgfQo+Pj4gKwo+Pj4gK8KgwqDCoCBzcmMg PSAoMXVsbCA8PCBRQ09NX1NDTV9WTUlEX0hMT1MpOwo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3IgKGkg PSAwOyBpIDwgbWVtX3BhcmNlbC0+bl9tZW1fZW50cmllczsgaSsrKSB7Cj4+PiArwqDCoMKgwqDC oMKgwqAgc3JjX2NweSA9IHNyYzsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAKPj4+IHFjb21f c2NtX2Fzc2lnbl9tZW0obGU2NF90b19jcHUobWVtX3BhcmNlbC0+bWVtX2VudHJpZXNbaV0uaXBh X2Jhc2UpLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbGU2NF90b19jcHUobWVtX3BhcmNlbC0+bWVtX2VudHJpZXNbaV0uc2l6ZSksCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3JjX2NweSwgbmV3 X3Blcm1zLCAKPj4+IG1lbV9wYXJjZWwtPm5fYWNsX2VudHJpZXMpOwo+Pj4gK8KgwqDCoMKgwqDC oMKgIGlmIChyZXQpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyYyA9IDA7Cj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKG4gPSAwOyBuIDwgbWVtX3BhcmNlbC0+bl9hY2xf ZW50cmllczsgbisrKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZtaWQg PSBsZTE2X3RvX2NwdShtZW1fcGFyY2VsLT5hY2xfZW50cmllc1tuXS52bWlkKTsKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHZtaWQgPD0gUUNPTV9TQ01fTUFYX01BTkFH RURfVk1JRCkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcmMg fD0gKDF1bGwgPDwgdm1pZCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVs c2UKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcmMgfD0gKDF1 bGwgPDwgUUNPTV9TQ01fUk1fTUFOQUdFRF9WTUlEKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIH0KPj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld19wZXJtc1swXS52bWlk ID0gUUNPTV9TQ01fVk1JRF9ITE9TOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Zm9yIChpLS07IGkgPj0gMDsgaS0tKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNyY19jcHkgPSBzcmM7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdB Uk5fT05fT05DRShxY29tX3NjbV9hc3NpZ25fbWVtKAo+Pj4gKyBsZTY0X3RvX2NwdShtZW1fcGFy Y2VsLT5tZW1fZW50cmllc1tpXS5pcGFfYmFzZSksCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZTY0X3RvX2NwdShtZW1fcGFyY2VsLT5tZW1fZW50 cmllc1tpXS5zaXplKSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZzcmNfY3B5LCBuZXdfcGVybXMsIDEpKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoMKg wqDCoMKgIH0KPj4+ICvCoMKgwqAgfQo+Pj4gKwo+Pj4gK8KgwqDCoCBrZnJlZShuZXdfcGVybXMp Owo+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHFj b21fc2NtX2doX3JtX3Bvc3RfbWVtX3JlY2xhaW0oc3RydWN0IGdoX3JtICpybSwgc3RydWN0IAo+ Pj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCkKPj4+ICt7Cj4+PiArwqDCoMKgIHN0cnVj dCBxY29tX3NjbV92bXBlcm0gbmV3X3Blcm1zOwo+Pj4gK8KgwqDCoCB1NjQgc3JjID0gMCwgc3Jj X2NweTsKPj4+ICvCoMKgwqAgaW50IHJldCA9IDAsIGksIG47Cj4+PiArwqDCoMKgIHUxNiB2bWlk Owo+Pj4gKwo+Pj4gK8KgwqDCoCBuZXdfcGVybXMudm1pZCA9IFFDT01fU0NNX1ZNSURfSExPUzsK Pj4+ICvCoMKgwqAgbmV3X3Blcm1zLnBlcm0gPSBRQ09NX1NDTV9QRVJNX0VYRUMgfCBRQ09NX1ND TV9QRVJNX1dSSVRFIHwgCj4+PiBRQ09NX1NDTV9QRVJNX1JFQUQ7Cj4+PiArCj4+PiArwqDCoMKg IGZvciAobiA9IDA7IG4gPCBtZW1fcGFyY2VsLT5uX2FjbF9lbnRyaWVzOyBuKyspIHsKPj4+ICvC oMKgwqDCoMKgwqDCoCB2bWlkID0gbGUxNl90b19jcHUobWVtX3BhcmNlbC0+YWNsX2VudHJpZXNb bl0udm1pZCk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHZtaWQgPD0gUUNPTV9TQ01fTUFYX01B TkFHRURfVk1JRCkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyYyB8PSAoMXVsbCA8PCB2 bWlkKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzcmMgfD0gKDF1bGwgPDwgUUNPTV9TQ01fUk1fTUFOQUdFRF9WTUlEKTsKPj4+ICvCoMKgwqAg fQo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbWVtX3BhcmNlbC0+bl9tZW1fZW50 cmllczsgaSsrKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgc3JjX2NweSA9IHNyYzsKPj4+ICvCoMKg wqDCoMKgwqDCoCByZXQgPSAKPj4+IHFjb21fc2NtX2Fzc2lnbl9tZW0obGU2NF90b19jcHUobWVt X3BhcmNlbC0+bWVtX2VudHJpZXNbaV0uaXBhX2Jhc2UpLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGU2NF90b19jcHUobWVtX3BhcmNlbC0+bWVt X2VudHJpZXNbaV0uc2l6ZSksCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAmc3JjX2NweSwgJm5ld19wZXJtcywgMSk7Cj4+PiArwqDCoMKgwqDCoMKg wqAgV0FSTl9PTl9PTkNFKHJldCk7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgcmV0 dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBnaF9ybV9wbGF0Zm9ybV9v cHMgcWNvbV9zY21fZ2hfcm1fcGxhdGZvcm1fb3BzID0gewo+Pj4gK8KgwqDCoCAucHJlX21lbV9z aGFyZSA9IHFjb21fc2NtX2doX3JtX3ByZV9tZW1fc2hhcmUsCj4+PiArwqDCoMKgIC5wb3N0X21l bV9yZWNsYWltID0gcWNvbV9zY21fZ2hfcm1fcG9zdF9tZW1fcmVjbGFpbSwKPj4+ICt9Owo+Pj4g Kwo+Pj4gwqAgc3RhdGljIGludCBxY29tX3NjbV9maW5kX2Rsb2FkX2FkZHJlc3Moc3RydWN0IGRl dmljZSAqZGV2LCB1NjQgKmFkZHIpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkZXZp Y2Vfbm9kZSAqdGNzcjsKPj4+IEBAIC0xNTAyLDYgKzE1OTksOSBAQCBzdGF0aWMgaW50IHFjb21f c2NtX3Byb2JlKHN0cnVjdCAKPj4+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+IMKgwqDCoMKg wqAgaWYgKGRvd25sb2FkX21vZGUpCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcWNvbV9zY21fc2V0 X2Rvd25sb2FkX21vZGUodHJ1ZSk7Cj4+PiArwqDCoMKgIGlmIChkZXZtX2doX3JtX3JlZ2lzdGVy X3BsYXRmb3JtX29wcygmcGRldi0+ZGV2LCAKPj4+ICZxY29tX3NjbV9naF9ybV9wbGF0Zm9ybV9v cHMpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRldl93YXJuKF9fc2NtLT5kZXYsICJHdW55YWggUk0g cGxhdGZvcm0gb3BzIHdlcmUgYWxyZWFkeSAKPj4+IHJlZ2lzdGVyZWRcbiIpOwo+Pj4gKwo+Pj4g wqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+IMKgIH0KPj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2d1bnlhaF9yc2NfbWdyLmggCj4+PiBiL2luY2x1ZGUvbGludXgvZ3VueWFoX3JzY19tZ3Iu aAo+Pj4gaW5kZXggNTE1MDg3OTMxYTJiLi5hY2Y4YzE1NDVhNmMgMTAwNjQ0Cj4+PiAtLS0gYS9p bmNsdWRlL2xpbnV4L2d1bnlhaF9yc2NfbWdyLmgKPj4+ICsrKyBiL2luY2x1ZGUvbGludXgvZ3Vu eWFoX3JzY19tZ3IuaAo+Pj4gQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnQgZ2hfcm1fZ2V0X2h5cF9y ZXNvdXJjZXMoc3RydWN0IGdoX3JtICpybSwgdTE2IAo+Pj4gdm1pZCwKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGdoX3JtX2h5cF9yZXNvdXJjZXMgKipyZXNv dXJjZXMpOwo+Pj4gwqAgaW50IGdoX3JtX2dldF92bWlkKHN0cnVjdCBnaF9ybSAqcm0sIHUxNiAq dm1pZCk7Cj4+PiAtc3RydWN0IGd1bnlhaF9ybV9wbGF0Zm9ybV9vcHMgewo+Pj4gK3N0cnVjdCBn aF9ybV9wbGF0Zm9ybV9vcHMgewo+Pj4gwqDCoMKgwqDCoCBpbnQgKCpwcmVfbWVtX3NoYXJlKShz dHJ1Y3QgZ2hfcm0gKnJtLCBzdHJ1Y3QgZ2hfcm1fbWVtX3BhcmNlbCAKPj4+ICptZW1fcGFyY2Vs KTsKPj4+IMKgwqDCoMKgwqAgaW50ICgqcG9zdF9tZW1fcmVjbGFpbSkoc3RydWN0IGdoX3JtICpy bSwgc3RydWN0IAo+Pj4gZ2hfcm1fbWVtX3BhcmNlbCAqbWVtX3BhcmNlbCk7Cj4+PiDCoCB9OwoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=