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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21485C433EF for ; Tue, 26 Oct 2021 07:40:10 +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 D9A56610A6 for ; Tue, 26 Oct 2021 07:40:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D9A56610A6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bR3v6z/bw1aiKwLQqIK0K3lohQu582MP2Q3mPDQ6Sxk=; b=mR7r8Bn4gXhY0C mn70c8vxpZeW2NfmNv2uUAMriuV5a0oveTpentekL4KDYWdgF+yCDsQKJ3XA5US9hKW9CpT3Hmheq anDT3FJAxN4bmyU+iqiaO2tmKIT8Gs5yMhu3cfZOuwpEOGgQWiwWK+q/7qQAbs8rVxbwetNxZXEf3 3GqtoX5oTbo4jm0T7JPOofGMtBTaE9i5G4YY1AZ/5xN0xoYGCBLpjJxKcKd/MgdCyIMqfC4YGC0u+ VaE8URQaV2EUFwwoShiczy1VfmGdrLyHGnUES/TDlATWqIZkwY34BTkI/EdQvepuXkRQvpIpfZCrs Afzhuee9xMMTnbvIV3rQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfH2V-000xLc-Dc; Tue, 26 Oct 2021 07:38:31 +0000 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfH2P-000xKT-3x for linux-arm-kernel@lists.infradead.org; Tue, 26 Oct 2021 07:38:28 +0000 Received: by mail-ed1-x530.google.com with SMTP id n1so10133241edd.0 for ; Tue, 26 Oct 2021 00:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=30q5kxIEdXiTAoHab49pvPfQEz8kl2WL3lf7EEJMaF8=; b=TQfVx5soOa0BZtTvqB1I3oo4HuDPx5/nJqFroAafHxEvA5kqq5LobK+t8NfNi00xCQ y5lJKVHTsk6b7YLFvPi4Y+8arq+5XOEE67HZsxKlidT14uzUhJzRzxr5C8nVsXAZ1siv QdroMvbUAY8kRAPcPsomHeW7hkPmXN70xKZ6HAyY9dW6f6v47gnI9ftKQpqzEMlgwPq8 wIS+u+Lc5SLz6dCvhxp/kO0xn5DFnLmnTevzXFT6W/5Aib/ric/Fe+jp7ke5NZ6TWisZ S7BAugj0rKm9JLMbdG832pU9xCSAE8ZWaxDmtc9TVOA/DMoy5Jbm291Usk56g/y14kPe DXog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=30q5kxIEdXiTAoHab49pvPfQEz8kl2WL3lf7EEJMaF8=; b=YBAhbOX7en3t2aB7PKeF/mgQusB91yDQGtlhCKVfLWXIziYHvG6fweXYwFCOql+x3s FSk5UPCmak/knFuOasnYiHh6LT3ScXUKXdv6S5EEsieRxH0KzFrsoLNpqH85ayvyvvnP SSZvRpou6F2BfUa+I7u50UVhMhilpE3zyyid0e1mogpFB5UlqZWR08EC0sjlVMJVPILP xWHglrDMtr6C7hq2kBnDN4zmCPKfVC49OFMrVmMvc3nXJ7ZXkFy7Fb/10t+RmSgFJNoa EFiNrwsDBz6ahczmiPWhD5l0NgWw1P8AK0ifcsDDsUEKPl4+QejVTC7kRYDoWQDMYoty 4ZdA== X-Gm-Message-State: AOAM531B3xKSIP+0Tg6G3hNvmXLqxE8C5/Bwh3+nKrMyi3tGFOMfaFgt vEQExg5gGd6OJ9v1WvhGwtBD8yhqJ9639RavjqQ6YmXQJcSZ6g== X-Google-Smtp-Source: ABdhPJx7B2TobCFx2Vy6hU4XNbH4ffvrHAtRIH+4xbLo4bO3hLGuJyqnZ46wxEtI3VodVhi/E55aMtk6U4VeoCbsQcg= X-Received: by 2002:a17:906:ca4a:: with SMTP id jx10mr27463057ejb.542.1635233900510; Tue, 26 Oct 2021 00:38:20 -0700 (PDT) MIME-Version: 1.0 References: <20211021150717.2718-1-etienne.carriere@linaro.org> <20211021150717.2718-2-etienne.carriere@linaro.org> <20211025154516.GD6526@e120937-lin> In-Reply-To: <20211025154516.GD6526@e120937-lin> From: Etienne Carriere Date: Tue, 26 Oct 2021 09:38:09 +0200 Message-ID: Subject: Re: [PATCH v5 2/2] firmware: arm_scmi: Add optee transport To: Cristian Marussi Cc: linux-kernel@vger.kernel.org, "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , Sudeep Holla , Vincent Guittot X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211026_003825_233126_90343DF0 X-CRM114-Status: GOOD ( 52.40 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ3Jpc3RpYW4sCgoKT24gTW9uLCAyNSBPY3QgMjAyMSBhdCAxNzo0NSwgQ3Jpc3RpYW4gTWFy dXNzaSA8Y3Jpc3RpYW4ubWFydXNzaUBhcm0uY29tPiB3cm90ZToKPgo+IE9uIFRodSwgT2N0IDIx LCAyMDIxIGF0IDA1OjA3OjE3UE0gKzAyMDAsIEV0aWVubmUgQ2FycmllcmUgd3JvdGU6Cj4gPiBB ZGQgYSBuZXcgdHJhbnNwb3J0IGNoYW5uZWwgdG8gdGhlIFNDTUkgZmlybXdhcmUgaW50ZXJmYWNl IGRyaXZlciBmb3IKPiA+IFNDTUkgbWVzc2FnZSBleGNoYW5nZSBiYXNlZCBvbiBvcHRlZSB0cmFu c3BvcnQgY2hhbm5lbC4gVGhlIG9wdGVlCj4gPiB0cmFuc3BvcnQgaXMgcmVhbGl6ZWQgYnkgY29u bmVjdGluZyBhbmQgaW52b2tpbmcgT1AtVEVFIFNDTUkgc2VydmljZQo+ID4gaW50ZXJmYWNlIFBU QS4KPiA+Cj4KPiBIaSBFdGllbm5lLAo+Cj4gSSBidWxkLXRlc3RlZCBhbmQgdmVyaWZpZWQgcHJl dml1b3MgcmVtYXJrcyBhbmQgaXQgbG9va3MgZ29vZCB0byBtZS4KPgo+IEEgZmV3IG1vcmUgbmV3 IHNtYWxsIHJlbWFya3MgZG93biBiZWxvdywgdGhvdWdoLCB0aGF0IEkgbWlzc2VkIHByZXZpb3Vz bHkuCj4KPiA+IE9wdGVlIHRyYW5zcG9ydCBzdXBwb3J0IChDT05GSUdfQVJNX1NDTUlfVFJBTlNQ T1JUX09QVEVFKSBpcyBkZWZhdWx0Cj4gPiBlbmFibGVkIHdoZW4gb3B0ZWUgZHJpdmVyIChDRkdf T1BURUUpIGlzIGVuYWJsZWQuIEVmZmVjdGl2ZSBvcHRlZQo+IG5pdDogQ09ORklHX09QVEVFID8K ClRydWUuClRoYW5rcyB5b3UgYWxzbyB0byBKw6lyw7RtZSB3aG8gcG9pbnRlZCB0aGF0IHRvIG1l IGJ1dCBJIGZvcmdvdCB0byBmaXggOigKCgo+Cj4gPiB0cmFuc3BvcnQgaXMgc2V0dXAgdXBvbiBP UC1URUUgU0NNSSBzZXJ2aWNlIGRpc2NvdmVyeSBhdCBvcHRlZQo+ID4gZGV2aWNlIGluaXRpYWxp emF0aW9uLiBGb3IgdGhpcyBTQ01JIFVVSUQgaXMgcmVnaXN0ZXJlZCB0byB0aGUgb3B0ZWUKPiA+ IGJ1cyBmb3IgcHJvYmluZy4gVGhpcyBpcyBkb25lIGZyb20gdGhlIGxpbmtfc3VwcGxpZXIgb3Bl cmF0b3Igb2YgdGhlCj4gPiBTQ01JIG9wdGVlIHRyYW5zcG9ydC4KPiA+Cj4gPiBUaGUgb3B0ZWUg dHJhbnNwb3J0IGNhbiB1c2UgYSBzdGF0aWNhbGx5IGRlZmluZWQgc2hhcmVkIG1lbW9yeSBpbgo+ ID4gd2hpY2ggY2FzZSBTQ01JIGRldmljZSB0cmVlIG5vZGUgZGVmaW5lcyBpdCB1c2luZyBhbiAi YXJtLHNjbWktc2htZW0iCj4gPiBjb21wYXRpYmxlIHBoYW5kbGUgdGhyb3VnaCBwcm9wZXJ0eSBz aG1lbS4gQWx0ZXJuYXRpdmVseSwgb3B0ZWUgdHJhbnNwb3J0Cj4gPiBhbGxvY2F0ZXMgdGhlIHNo YXJlZCBtZW1vcnkgYnVmZmVyIGZyb20gdGhlIG9wdGVlIGRyaXZlciB3aGVuIG5vIHNobWVtCj4g PiBwcm9wZXJ0eSBpcyBkZWZpbmVkLgo+ID4KPiA+IFRoZSBwcm90b2NvbCB1c2VkIHRvIGV4Y2hh bmdlIFNDTUkgbWVzc2FnZSBvdmVyIHRoYXQgc2hhcmVkIG1lbW9yeSBpcwo+ID4gbmVnb3RpYXRl ZCBiZXR3ZWVuIG9wdGVlIHRyYW5zcG9ydCBkcml2ZXIgYW5kIHRoZSBPUC1URUUgc2VydmljZSB0 aHJvdWdoCj4gPiBjYXBhYmlsaXRpZXMgZXhjaGFuZ2UuCj4gPgo+ID4gT1AtVEVFIFNDTUkgc2Vy dmljZSBpcyBpbnRlZ3JhdGVkIGluIE9QLVRFRSBzaW5jZSBpdHMgcmVsZWFzZSB0YWcgMy4xMy4w Lgo+ID4gVGhlIHNlcnZpY2UgaW50ZXJmYWNlIGlzIHB1Ymxpc2hlZCBpbiBbMV0uCj4gPgo+ID4g TGluazogWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9PUC1URUUvb3B0ZWVfb3MvYmxvYi8zLjEzLjAv bGliL2xpYnV0ZWUvaW5jbHVkZS9wdGFfc2NtaV9jbGllbnQuaAo+ID4gQ2M6IENyaXN0aWFuIE1h cnVzc2kgPGNyaXN0aWFuLm1hcnVzc2lAYXJtLmNvbT4KPiA+IENjOiBTdWRlZXAgSG9sbGEgPHN1 ZGVlcC5ob2xsYUBhcm0uY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogRXRpZW5uZSBDYXJyaWVyZSA8 ZXRpZW5uZS5jYXJyaWVyZUBsaW5hcm8ub3JnPgo+ID4gLS0tCj4gPiBDaGFuZ2VzIHNpbmNlIHY0 Ogo+ID4gIC0gRml4IGNvbW1pdCBsb2cgdGhhdCB3YXMgbm90IHVwZGF0ZWQgdG8gdjQgY2hhbmdl cy4KPiA+ICAtIE9wZXJhdG9yIHNjbWlfb3B0ZWVfY2hhbl9zZXR1cCgpIGRvbid0IG5lZWQgdGhl IGRlZmVyIHByb2JlCj4gPiAgICBvcGVyYXRpb24sIGl0J3MgYWxyZWFkeSBkb25lIGZyb20gc2Nt aV9vcHRlZV9saW5rX3N1cHBsaWVyKCkuCj4gPgo+ID4gQ2hhbmdlcyBzaW5jZSB2MzoKPiA+ICAt IEZpeCB1c2Ugb2YgY29uZmlndXJhdGlvbiBzd2l0Y2hlcyB3aGVuIENPTkZJR19PUFRFRSBhbmQK PiA+ICAgIENPTkZJR19BUk1fU0NNSV9QUk9UT0NPTCBhcmUgZW5hYmxlZC9tb2R1bGVzL2Rpc2Fi bGVkLgo+ID4gICAgTWltaWNzIHNjbWkgdmlydGlvIGludGVncmF0aW9uLgo+ID4gIC0gSW1wbGVt ZW50IGxpbmtfc3VwcGxpZXIgb3BlcmF0b3IgZm9yIHRoZSBzY21pX29wdGVlIHRyYW5zcG9ydAo+ ID4gICAgdG8gcG9zc2libHkgZGVmZXIgcHJvYmluZyB3aGVuIG9wdGVlIGJ1cyBoYXMgbm90IHll dCBlbnVtZXJhdGVkCj4gPiAgICB0aGUgU0NNSSBPUC1URUUgc2VydmljZS4gVGhlIGZ1bmN0aW9u IGVuc3VyZXMgc2NtaV9vcHRlZSByZWdpc3RlcnMKPiA+ICAgIHRvIG9wdGVlIGJ1cyBlbnVtZXJh dGlvbiB3aGVuIHByb2JlIGlzIGRlZmVycmVkLgo+ID4gIC0gQWRkIG1lbW9yeSBiYXJyaWVycyB0 byBwcm90ZWN0IGdsb2JhbCBvcHRlZSBzZXJ2aWNlIHJlZmVyZW5jZQo+ID4gICAgd2hlbiBpdCdz IHVwZGF0ZWQgYXQgdHJhbnNwb3J0IGluaXRpYWxpemF0aW9uIGFuZCByZW1vdmFsLgo+ID4gIC0g UmVwbGFjZSBlbnVtIHB0YV9zY21pX2NhcHMgd2l0aCBtYWNybyBkZWZpbml0aW9ucyBhcyBlbnVt ZXJhdGVkCj4gPiAgICB0eXBlcyBkbyBub3QgcmVhbGx5IG1hdGNoIGJpdCBmbGFncyBkZWZpbml0 aW9ucy4gVGhlIGNhcGFiaWxpdGllcwo+ID4gICAgZGF0YSBpcyBub3cgb2YgdHlwZSB1MzIuCj4g PiAgLSBVc2Ugc2NtaV9vcHRlZV8gcHJlZml4IGZvciBzY21pIHRyYW5zcG9ydCBvcGVyYXRvciBo YW5kbGVzCj4gPiAgICBhbmQgZmV3IG90aGVyIHJlc291cmNlcy4KPiA+ICAtIEZpeCB0eXBvOiBz L29wdGVlX3NtY2lfcHRhX2NtZC9vcHRlZV9zY21pX3B0YV9jbWQvCj4gPiAgLSBSZW1vdmUgdXNl bGVzcyBEUklWRVJfTkFNRS4KPiA+ICAtIE1pbm9yIHJlb3JkZXJpbmcgaW4gc3RydWN0IG9wdGVl X2NoYW5uZWwuCj4gPiAgLSBSZW1vdmVkIHNvbWUgdXNlbGVzcyBlbXB0eSBsaW5lcy4KPiA+Cj4g PiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gLSBSZWJhc2Ugb24gZm9yLW5leHQvc2NtaSwgYmFzZWQg b24gTGludXggdjUuMTUtcmMxLgo+ID4gLSBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgZHluYW1pYyBh bmQgc3RhdGljIHNoYXJlZCBtZW1vcnkuCj4gPiAtIEZhY3Rvcml6ZSBzb21lIGZ1bmN0aW9ucyBh bmQgc2ltcGxpZnkgdHJhbnNwb3J0IGV4aXQgc2VxdWVuY2UuCj4gPiAtIFJlbmFtZSBkcml2ZXIg c291cmNlIGZpbGUgZnJvbSBvcHRlZV9zZXJ2aWNlLmMgdG8gb3B0ZWUuYy4KPiA+Cj4gPiBObyBj aGFuZ2Ugc2luY2UgdjEKPiA+IC0tLQo+ID4gIGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvS2Nv bmZpZyAgfCAgMTIgKwo+ID4gIGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUgfCAg IDEgKwo+ID4gIGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvY29tbW9uLmggfCAgIDMgKwo+ID4g IGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvZHJpdmVyLmMgfCAgIDMgKwo+ID4gIGRyaXZlcnMv ZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYyAgfCA1NzIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDU5MSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYwo+ID4KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL0tjb25maWcgYi9kcml2ZXJzL2Zp cm13YXJlL2FybV9zY21pL0tjb25maWcKPiA+IGluZGV4IDNkNzA4MWU4NDg1My4uMzA3NDYzNTAz NDljIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9LY29uZmlnCj4g PiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL0tjb25maWcKPiA+IEBAIC03Nyw2ICs3 NywxOCBAQCBjb25maWcgQVJNX1NDTUlfVFJBTlNQT1JUX1ZJUlRJTwo+ID4gICAgICAgICBJZiB5 b3Ugd2FudCB0aGUgQVJNIFNDTUkgUFJPVE9DT0wgc3RhY2sgdG8gaW5jbHVkZSBzdXBwb3J0IGZv ciBhCj4gPiAgICAgICAgIHRyYW5zcG9ydCBiYXNlZCBvbiBWaXJ0SU8sIGFuc3dlciBZLgo+ID4K PiA+ICtjb25maWcgQVJNX1NDTUlfVFJBTlNQT1JUX09QVEVFCj4gPiArICAgICBib29sICJTQ01J IHRyYW5zcG9ydCBiYXNlZCBvbiBPUC1URUUgc2VydmljZSIKPiA+ICsgICAgIGRlcGVuZHMgb24g T1BURUU9eSB8fCBPUFRFRT1BUk1fU0NNSV9QUk9UT0NPTAo+ID4gKyAgICAgc2VsZWN0IEFSTV9T Q01JX0hBVkVfVFJBTlNQT1JUCj4gPiArICAgICBzZWxlY3QgQVJNX1NDTUlfSEFWRV9TSE1FTQo+ ID4gKyAgICAgZGVmYXVsdCB5Cj4gPiArICAgICBoZWxwCj4gPiArICAgICAgIFRoaXMgZW5hYmxl cyB0aGUgT1AtVEVFIHNlcnZpY2UgYmFzZWQgdHJhbnNwb3J0IGZvciBTQ01JLgo+ID4gKwo+ID4g KyAgICAgICBJZiB5b3Ugd2FudCB0aGUgQVJNIFNDTUkgUFJPVE9DT0wgc3RhY2sgdG8gaW5jbHVk ZSBzdXBwb3J0IGZvciBhCj4gPiArICAgICAgIHRyYW5zcG9ydCBiYXNlZCBvbiBPUC1URUUgU0NN SSBzZXJ2aWNlLCBhbnN3ZXIgWS4KPiA+ICsKPiA+ICBlbmRpZiAjQVJNX1NDTUlfUFJPVE9DT0wK PiA+Cj4gPiAgY29uZmlnIEFSTV9TQ01JX1BPV0VSX0RPTUFJTgo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9z Y21pL01ha2VmaWxlCj4gPiBpbmRleCAxZGNmMTIzZDY0YWIuLmVmNjZlYzhjYTkxNyAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUKPiA+ICsrKyBiL2Ry aXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvTWFrZWZpbGUKPiA+IEBAIC02LDYgKzYsNyBAQCBzY21p LXRyYW5zcG9ydC0kKENPTkZJR19BUk1fU0NNSV9UUkFOU1BPUlRfTUFJTEJPWCkgKz0gbWFpbGJv eC5vCj4gPiAgc2NtaS10cmFuc3BvcnQtJChDT05GSUdfQVJNX1NDTUlfVFJBTlNQT1JUX1NNQykg Kz0gc21jLm8KPiA+ICBzY21pLXRyYW5zcG9ydC0kKENPTkZJR19BUk1fU0NNSV9IQVZFX01TRykg Kz0gbXNnLm8KPiA+ICBzY21pLXRyYW5zcG9ydC0kKENPTkZJR19BUk1fU0NNSV9UUkFOU1BPUlRf VklSVElPKSArPSB2aXJ0aW8ubwo+ID4gK3NjbWktdHJhbnNwb3J0LSQoQ09ORklHX0FSTV9TQ01J X1RSQU5TUE9SVF9PUFRFRSkgKz0gb3B0ZWUubwo+ID4gIHNjbWktcHJvdG9jb2xzLXkgPSBiYXNl Lm8gY2xvY2subyBwZXJmLm8gcG93ZXIubyByZXNldC5vIHNlbnNvcnMubyBzeXN0ZW0ubyB2b2x0 YWdlLm8KPiA+ICBzY21pLW1vZHVsZS1vYmpzIDo9ICQoc2NtaS1idXMteSkgJChzY21pLWRyaXZl ci15KSAkKHNjbWktcHJvdG9jb2xzLXkpIFwKPiA+ICAgICAgICAgICAgICAgICAgICQoc2NtaS10 cmFuc3BvcnQteSkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL2Nv bW1vbi5oIGIvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9jb21tb24uaAo+ID4gaW5kZXggZGVh MWJmYmUxMDUyLi42NDM4YjUyNDhjMjQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJl L2FybV9zY21pL2NvbW1vbi5oCj4gPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL2Nv bW1vbi5oCj4gPiBAQCAtNDIxLDYgKzQyMSw5IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc2NtaV9k ZXNjIHNjbWlfc21jX2Rlc2M7Cj4gPiAgI2lmZGVmIENPTkZJR19BUk1fU0NNSV9UUkFOU1BPUlRf VklSVElPCj4gPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzY21pX2Rlc2Mgc2NtaV92aXJ0aW9fZGVz YzsKPiA+ICAjZW5kaWYKPiA+ICsjaWZkZWYgQ09ORklHX0FSTV9TQ01JX1RSQU5TUE9SVF9PUFRF RQo+ID4gK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc2NtaV9kZXNjIHNjbWlfb3B0ZWVfZGVzYzsKPiA+ ICsjZW5kaWYKPiA+Cj4gPiAgdm9pZCBzY21pX3J4X2NhbGxiYWNrKHN0cnVjdCBzY21pX2NoYW5f aW5mbyAqY2luZm8sIHUzMiBtc2dfaGRyLCB2b2lkICpwcml2KTsKPiA+ICB2b2lkIHNjbWlfZnJl ZV9jaGFubmVsKHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sIHN0cnVjdCBpZHIgKmlkciwg aW50IGlkKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL2RyaXZl ci5jIGIvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9kcml2ZXIuYwo+ID4gaW5kZXggYjQwNmIz Zjc4ZjQ2Li5lM2Y4N2UwYzQ5MzYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL2Fy bV9zY21pL2RyaXZlci5jCj4gPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL2FybV9zY21pL2RyaXZl ci5jCj4gPiBAQCAtMTk5OSw2ICsxOTk5LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgc2NtaV9vZl9tYXRjaFtdID0gewo+ID4gICNlbmRpZgo+ID4gICNpZmRlZiBDT05GSUdf QVJNX1NDTUlfVFJBTlNQT1JUX1ZJUlRJTwo+ID4gICAgICAgeyAuY29tcGF0aWJsZSA9ICJhcm0s c2NtaS12aXJ0aW8iLCAuZGF0YSA9ICZzY21pX3ZpcnRpb19kZXNjfSwKPiA+ICsjZW5kaWYKPiA+ ICsjaWZkZWYgQ09ORklHX0FSTV9TQ01JX1RSQU5TUE9SVF9PUFRFRQo+ID4gKyAgICAgeyAuY29t cGF0aWJsZSA9ICJsaW5hcm8sc2NtaS1vcHRlZSIsIC5kYXRhID0gJnNjbWlfb3B0ZWVfZGVzYyB9 LAo+ID4gICNlbmRpZgo+ID4gICAgICAgeyAvKiBTZW50aW5lbCAqLyB9LAo+ID4gIH07Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9maXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jIGIvZHJpdmVycy9m aXJtd2FyZS9hcm1fc2NtaS9vcHRlZS5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi4yYjY2NmM2MzI4MDAKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBi L2RyaXZlcnMvZmlybXdhcmUvYXJtX3NjbWkvb3B0ZWUuYwo+ID4gQEAgLTAsMCArMSw1NzIgQEAK PiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgTGluYXJvIEx0ZC4KPiA+ICsgKi8KPiA+ICsKPiA+ICsj aW5jbHVkZSA8bGludXgvaW8uaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K PiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L211dGV4 Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvdGVl X2Rydi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC91dWlkLmg+Cj4gPiArI2luY2x1ZGUgPHVhcGkv bGludXgvdGVlLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgImNvbW1vbi5oIgo+ID4gKwo+ID4gKyNk ZWZpbmUgU0NNSV9PUFRFRV9NQVhfTVNHX1NJWkUgICAgICAgICAgICAgIDEyOAo+ID4gKwo+ID4g K2VudW0gc2NtaV9vcHRlZV9wdGFfY21kIHsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBQVEFf U0NNSV9DTURfQ0FQQUJJTElUSUVTIC0gR2V0IGNoYW5uZWwgY2FwYWJpbGl0aWVzCj4gPiArICAg ICAgKgo+ID4gKyAgICAgICogW291dF0gICAgdmFsdWVbMF0uYTogQ2FwYWJpbGl0eSBiaXQgbWFz ayAoZW51bSBwdGFfc2NtaV9jYXBzKQo+ID4gKyAgICAgICogW291dF0gICAgdmFsdWVbMF0uYjog RXh0ZW5kZWQgY2FwYWJpbGl0aWVzIG9yIDAKPiA+ICsgICAgICAqLwo+ID4gKyAgICAgUFRBX1ND TUlfQ01EX0NBUEFCSUxJVElFUyA9IDAsCj4gPiArCj4gPiArICAgICAvKgo+ID4gKyAgICAgICog UFRBX1NDTUlfQ01EX1BST0NFU1NfU01UX0NIQU5ORUwgLSBQcm9jZXNzIFNDTUkgbWVzc2FnZSBp biBTTVQgYnVmZmVyCj4gPiArICAgICAgKgo+ID4gKyAgICAgICogW2luXSAgICAgdmFsdWVbMF0u YTogQ2hhbm5lbCBoYW5kbGUKPiA+ICsgICAgICAqCj4gPiArICAgICAgKiBTaGFyZWQgbWVtb3J5 IHVzZWQgZm9yIFNDTUkgbWVzc2FnZS9yZXNwb25zZSBleGhhbmdlIGlzIGV4cGVjdGVkCj4gPiAr ICAgICAgKiBhbHJlYWR5IGlkZW50aWZpZWQgYW5kIGJvdW5kIHRvIGNoYW5uZWwgaGFuZGxlIGlu IGJvdGggU0NNSSBhZ2VudAo+ID4gKyAgICAgICogYW5kIFNDTUkgc2VydmVyIChPUC1URUUpIHBh cnRzLgo+ID4gKyAgICAgICogVGhlIG1lbW9yeSB1c2VzIFNNVCBoZWFkZXIgdG8gY2FycnkgU0NN SSBtZXRhLWRhdGEgKHByb3RvY29sIElEIGFuZAo+ID4gKyAgICAgICogcHJvdG9jb2wgbWVzc2Fn ZSBJRCkuCj4gPiArICAgICAgKi8KPiA+ICsgICAgIFBUQV9TQ01JX0NNRF9QUk9DRVNTX1NNVF9D SEFOTkVMID0gMSwKPiA+ICsKPiA+ICsgICAgIC8qCj4gPiArICAgICAgKiBQVEFfU0NNSV9DTURf UFJPQ0VTU19TTVRfQ0hBTk5FTF9NRVNTQUdFIC0gUHJvY2VzcyBTTVQvU0NNSSBtZXNzYWdlCj4g PiArICAgICAgKgo+ID4gKyAgICAgICogW2luXSAgICAgdmFsdWVbMF0uYTogQ2hhbm5lbCBoYW5k bGUKPiA+ICsgICAgICAqIFtpbi9vdXRdIG1lbXJlZlsxXTogTWVzc2FnZS9yZXNwb25zZSBidWZm ZXIgKFNNVCBhbmQgU0NNSSBwYXlsb2FkKQo+ID4gKyAgICAgICoKPiA+ICsgICAgICAqIFNoYXJl ZCBtZW1vcnkgdXNlZCBmb3IgU0NNSSBtZXNzYWdlL3Jlc3BvbnNlIGlzIGEgU01UIGJ1ZmZlcgo+ ID4gKyAgICAgICogcmVmZXJlbmNlZCBieSBwYXJhbVsxXS4gSXQgc2hhbGwgYmUgMTI4IGJ5dGVz IGxhcmdlIHRvIGZpdCByZXNwb25zZQo+ID4gKyAgICAgICogcGF5bG9hZCB3aGF0ZXZlciBtZXNz YWdlIHBsYXlsb2FkIHNpemUuCj4gPiArICAgICAgKiBUaGUgbWVtb3J5IHVzZXMgU01UIGhlYWRl ciB0byBjYXJyeSBTQ01JIG1ldGEtZGF0YSAocHJvdG9jb2wgSUQgYW5kCj4gPiArICAgICAgKiBw cm90b2NvbCBtZXNzYWdlIElEKS4KPiA+ICsgICAgICAqLwo+ID4gKyAgICAgUFRBX1NDTUlfQ01E X1BST0NFU1NfU01UX0NIQU5ORUxfTUVTU0FHRSA9IDIsCj4gPiArCj4gPiArICAgICAvKgo+ID4g KyAgICAgICogUFRBX1NDTUlfQ01EX0dFVF9DSEFOTkVMIC0gR2V0IGNoYW5uZWwgaGFuZGxlCj4g PiArICAgICAgKgo+ID4gKyAgICAgICogU0NNSSBzaG0gaW5mb3JtYXRpb24gYXJlIDAgaWYgYWdl bnQgZXhwZWN0cyB0byB1c2UgT1AtVEVFIHJlZ3VsYXIgU0hNCj4gPiArICAgICAgKgo+ID4gKyAg ICAgICogW2luXSAgICAgdmFsdWVbMF0uYTogQ2hhbm5lbCBpZGVudGlmaWVyCj4gPiArICAgICAg KiBbb3V0XSAgICB2YWx1ZVswXS5hOiBSZXR1cm5lZCBjaGFubmVsIGhhbmRsZQo+ID4gKyAgICAg ICogW2luXSAgICAgdmFsdWVbMF0uYjogUmVxdWVzdGVkIGNhcGFiaWxpdGllcyBtYXNrIChlbnVt IHB0YV9zY21pX2NhcHMpCj4gPiArICAgICAgKi8KPiA+ICsgICAgIFBUQV9TQ01JX0NNRF9HRVRf Q0hBTk5FTCA9IDMsCj4gPiArfTsKPiA+ICsKPiA+ICsvKgo+ID4gKyAqIE9QLVRFRSBTQ01JIHNl cnZpY2UgY2FwYWJpbGl0aWVzIGJpdCBmbGFncyAoMzJiaXQpCj4gPiArICoKPiA+ICsgKiBQVEFf U0NNSV9DQVBTX1NNVF9IRUFERVIKPiA+ICsgKiBXaGVuIHNldCwgT1AtVEVFIHN1cHBvcnRzIGNv bW1hbmQgdXNpbmcgU01UIGhlYWRlciBwcm90b2NvbCAoU0NNSSBzaG1lbSkgaW4KPiA+ICsgKiBz aGFyZWQgbWVtb3J5IGJ1ZmZlcnMgdG8gY2FycnkgU0NNSSBwcm90b2NvbCBzeW5jaHJvbmlzYXRp b24gaW5mb3JtYXRpb24uCj4gPiArICovCj4gPiArI2RlZmluZSBQVEFfU0NNSV9DQVBTX05PTkUg ICAgICAgICAgIDAKPiA+ICsjZGVmaW5lIFBUQV9TQ01JX0NBUFNfU01UX0hFQURFUiAgICAgQklU KDApCj4gPiArCj4gPiArLyoqCj4gPiArICogc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5lbCAtIERl c2NyaXB0aW9uIG9mIGFuIE9QLVRFRSBTQ01JIGNoYW5uZWwKPiA+ICsgKgo+ID4gKyAqIEBjaGFu bmVsX2lkOiBPUC1URUUgY2hhbm5lbCBJRCB1c2VkIGZvciB0aGlzIHRyYW5zcG9ydAo+ID4gKyAq IEB0ZWVfc2Vzc2lvbjogVEVFIHNlc3Npb24gaWRlbnRpZmllcgo+ID4gKyAqIEBjYXBzOiBPUC1U RUUgU0NNSSBjaGFubmVsIGNhcGFiaWxpdGllcwo+ID4gKyAqIEBtdTogTXV0ZXggcHJvdGVjdGlv biBvbiBjaGFubmVsIGFjY2Vzcwo+ID4gKyAqIEBjaW5mbzogU0NNSSBjaGFubmVsIGluZm9ybWF0 aW9uCj4gPiArICogQHNobWVtOiBWaXJ0dWFsIGJhc2UgYWRkcmVzcyBvZiB0aGUgc2hhcmVkIG1l bW9yeQo+ID4gKyAqIEB0ZWVfc2htOiBSZWZlcmVuY2UgdG8gVEVFIHNoYXJlZCBtZW1vcnkgb3Ig TlVMTCBpZiB1c2luZyBzdGF0aWMgc2htZW0KPiA+ICsgKiBAbGluazogUmVmZXJlbmNlIGluIGFn ZW50J3MgY2hhbm5lbCBsaXN0Cj4gPiArICovCj4gPiArc3RydWN0IHNjbWlfb3B0ZWVfY2hhbm5l bCB7Cj4gPiArICAgICB1MzIgY2hhbm5lbF9pZDsKPiA+ICsgICAgIHUzMiB0ZWVfc2Vzc2lvbjsK PiA+ICsgICAgIHUzMiBjYXBzOwo+ID4gKyAgICAgc3RydWN0IG11dGV4IG11Owo+ID4gKyAgICAg c3RydWN0IHNjbWlfY2hhbl9pbmZvICpjaW5mbzsKPiA+ICsgICAgIHN0cnVjdCBzY21pX3NoYXJl ZF9tZW0gX19pb21lbSAqc2htZW07Cj4gPiArICAgICBzdHJ1Y3QgdGVlX3NobSAqdGVlX3NobTsK PiA+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGluazsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ ID4gKyAqIHN0cnVjdCBzY21pX29wdGVlX2FnZW50IC0gT1AtVEVFIHRyYW5zcG9ydCBwcml2YXRl IGRhdGEKPiA+ICsgKgo+ID4gKyAqIEBkZXY6IERldmljZSB1c2VkIGZvciBjb21tdW5pY2F0aW9u IHdpdGggVEVFCj4gPiArICogQHRlZV9jdHg6IFRFRSBjb250ZXh0IHVzZWQgZm9yIGNvbW11bmlj YXRpb24KPiA+ICsgKiBAY2FwczogU3VwcG9ydGVkIGNoYW5uZWwgY2FwYWJpbGl0aWVzCj4gPiAr ICogQG11OiBNdXRleCBmb3IgcHJvdGVjdGlvbiBvZiBAY2hhbm5lbF9saXN0Cj4gPiArICogQGNo YW5uZWxfbGlzdDogTGlzdCBvZiBhbGwgY3JlYXRlZCBjaGFubmVscyBmb3IgdGhlIGFnZW50Cj4g PiArICovCj4gPiArc3RydWN0IHNjbWlfb3B0ZWVfYWdlbnQgewo+ID4gKyAgICAgc3RydWN0IGRl dmljZSAqZGV2Owo+ID4gKyAgICAgc3RydWN0IHRlZV9jb250ZXh0ICp0ZWVfY3R4Owo+ID4gKyAg ICAgdTMyIGNhcHM7Cj4gPiArICAgICBzdHJ1Y3QgbXV0ZXggbXU7Cj4gPiArICAgICBzdHJ1Y3Qg bGlzdF9oZWFkIGNoYW5uZWxfbGlzdDsKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIFRoZXJlIGNhbiBi ZSBvbmx5IDEgU0NNSSBzZXJ2aWNlIGluIE9QLVRFRSB3ZSBjb25uZWN0IHRvICovCj4gPiArc3Rh dGljIHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICpzY21pX29wdGVlX3ByaXZhdGU7Cj4gPiArCj4g PiArLyogRm9yd2FyZCByZWZlcmVuY2UgdG8gc2NtaV9vcHRlZSB0cmFuc3BvcnQgaW5pdGlhbGl6 YXRpb24gKi8KPiA+ICtzdGF0aWMgaW50IHNjbWlfb3B0ZWVfaW5pdCh2b2lkKTsKPiA+ICsKPiA+ ICsvKiBPcGVuIGEgc2Vzc2lvbiB0b3dhcmQgU0NNSSBPUC1URUUgc2VydmljZSB3aXRoIFJFRV9L RVJORUwgaWRlbnRpdHkgKi8KPiA+ICtzdGF0aWMgaW50IG9wZW5fc2Vzc2lvbihzdHJ1Y3Qgc2Nt aV9vcHRlZV9hZ2VudCAqYWdlbnQsIHUzMiAqdGVlX3Nlc3Npb24pCj4gPiArewo+ID4gKyAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gYWdlbnQtPmRldjsKPiA+ICsgICAgIHN0cnVjdCB0ZWVfY2xp ZW50X2RldmljZSAqc2NtaV9wdGEgPSB0b190ZWVfY2xpZW50X2RldmljZShkZXYpOwo+ID4gKyAg ICAgc3RydWN0IHRlZV9pb2N0bF9vcGVuX3Nlc3Npb25fYXJnIGFyZyA9IHsgfTsKPiA+ICsgICAg IGludCByZXQ7Cj4gPiArCj4gPiArICAgICBtZW1jcHkoYXJnLnV1aWQsIHNjbWlfcHRhLT5pZC51 dWlkLmIsIFRFRV9JT0NUTF9VVUlEX0xFTik7Cj4gPiArICAgICBhcmcuY2xudF9sb2dpbiA9IFRF RV9JT0NUTF9MT0dJTl9SRUVfS0VSTkVMOwo+ID4gKwo+ID4gKyAgICAgcmV0ID0gdGVlX2NsaWVu dF9vcGVuX3Nlc3Npb24oYWdlbnQtPnRlZV9jdHgsICZhcmcsIE5VTEwpOwo+ID4gKyAgICAgaWYg KHJldCA8IDAgfHwgYXJnLnJldCkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkNh bid0IG9wZW4gdGVlIHNlc3Npb246ICVkIC8gJSN4XG4iLCByZXQsIGFyZy5yZXQpOwo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAg ICAqdGVlX3Nlc3Npb24gPSBhcmcuc2Vzc2lvbjsKPiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjbG9zZV9zZXNzaW9uKHN0cnVjdCBzY21pX29w dGVlX2FnZW50ICphZ2VudCwgdTMyIHRlZV9zZXNzaW9uKQo+ID4gK3sKPiA+ICsgICAgIHRlZV9j bGllbnRfY2xvc2Vfc2Vzc2lvbihhZ2VudC0+dGVlX2N0eCwgdGVlX3Nlc3Npb24pOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgaW50IGdldF9jYXBhYmlsaXRpZXMoc3RydWN0IHNjbWlfb3B0ZWVf YWdlbnQgKmFnZW50KQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCB0ZWVfaW9jdGxfaW52b2tlX2Fy ZyBhcmcgPSB7IH07Cj4gPiArICAgICBzdHJ1Y3QgdGVlX3BhcmFtIHBhcmFtWzFdID0geyB9Owo+ ID4gKyAgICAgdTMyIGNhcHM7Cj4gPiArICAgICB1MzIgdGVlX3Nlc3Npb247Cj4gPiArICAgICBp bnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgcmV0ID0gb3Blbl9zZXNzaW9uKGFnZW50LCAmdGVlX3Nl c3Npb24pOwo+ID4gKyAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsK PiA+ICsKPiA+ICsgICAgIGFyZy5mdW5jID0gUFRBX1NDTUlfQ01EX0NBUEFCSUxJVElFUzsKPiA+ ICsgICAgIGFyZy5zZXNzaW9uID0gdGVlX3Nlc3Npb247Cj4gPiArICAgICBhcmcubnVtX3BhcmFt cyA9IDE7Cj4gPiArCj4gPiArICAgICBwYXJhbVswXS5hdHRyID0gVEVFX0lPQ1RMX1BBUkFNX0FU VFJfVFlQRV9WQUxVRV9PVVRQVVQ7Cj4gPiArCj4gPiArICAgICByZXQgPSB0ZWVfY2xpZW50X2lu dm9rZV9mdW5jKGFnZW50LT50ZWVfY3R4LCAmYXJnLCBwYXJhbSk7Cj4gPiArCj4gPiArICAgICBj bG9zZV9zZXNzaW9uKGFnZW50LCB0ZWVfc2Vzc2lvbik7Cj4gPiArCj4gPiArICAgICBpZiAocmV0 IDwgMCB8fCBhcmcucmV0KSB7Cj4gPiArICAgICAgICAgICAgIGRldl9lcnIoYWdlbnQtPmRldiwg IkNhbid0IGdldCBjYXBhYmlsaXRpZXM6ICVkIC8gJSN4XG4iLCByZXQsIGFyZy5yZXQpOwo+ID4g KyAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAr ICAgICBjYXBzID0gcGFyYW1bMF0udS52YWx1ZS5hOwo+ID4gKwo+ID4gKyAgICAgaWYgKCEoY2Fw cyAmIFBUQV9TQ01JX0NBUFNfU01UX0hFQURFUikpIHsKPiA+ICsgICAgICAgICAgICAgZGV2X2Vy cihhZ2VudC0+ZGV2LCAiT1AtVEVFIFNDTUkgUFRBIGRvZXNuJ3Qgc3VwcG9ydCBTTVRcbiIpOwo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiArICAgICB9Cj4gPiArCj4g PiArICAgICBhZ2VudC0+Y2FwcyA9IGNhcHM7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBnZXRfY2hhbm5lbChzdHJ1Y3Qgc2NtaV9vcHRlZV9j aGFubmVsICpjaGFubmVsKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHNj bWlfb3B0ZWVfcHJpdmF0ZS0+ZGV2Owo+ID4gKyAgICAgc3RydWN0IHRlZV9pb2N0bF9pbnZva2Vf YXJnIGFyZyA9IHsgfTsKPiA+ICsgICAgIHN0cnVjdCB0ZWVfcGFyYW0gcGFyYW1bMV0gPSB7IH07 Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgY2FwcyA9IFBUQV9TQ01JX0NBUFNfU01UX0hFQURFUjsK PiA+ICsgICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgICBhcmcuZnVuYyA9IFBUQV9TQ01JX0NN RF9HRVRfQ0hBTk5FTDsKPiA+ICsgICAgIGFyZy5zZXNzaW9uID0gY2hhbm5lbC0+dGVlX3Nlc3Np b247Cj4gPiArICAgICBhcmcubnVtX3BhcmFtcyA9IDE7Cj4gPiArCj4gPiArICAgICBwYXJhbVsw XS5hdHRyID0gVEVFX0lPQ1RMX1BBUkFNX0FUVFJfVFlQRV9WQUxVRV9JTk9VVDsKPiA+ICsgICAg IHBhcmFtWzBdLnUudmFsdWUuYSA9IGNoYW5uZWwtPmNoYW5uZWxfaWQ7Cj4gPiArICAgICBwYXJh bVswXS51LnZhbHVlLmIgPSBjYXBzOwo+ID4gKwo+ID4gKyAgICAgcmV0ID0gdGVlX2NsaWVudF9p bnZva2VfZnVuYyhzY21pX29wdGVlX3ByaXZhdGUtPnRlZV9jdHgsICZhcmcsIHBhcmFtKTsKPiA+ ICsKPiA+ICsgICAgIGlmIChyZXQgfHwgYXJnLnJldCkgewo+ID4gKyAgICAgICAgICAgICBkZXZf ZXJyKGRldiwgIkNhbid0IGdldCBjaGFubmVsIHdpdGggY2FwcyAlI3g6ICVkIC8gJSN4XG4iLCBj YXBzLCByZXQsIGFyZy5yZXQpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICAvKiBGcm9tIG5vdyBvbiB1c2UgY2hhbm5lbCBp ZGVudGlmZXIgcHJvdmlkZWQgYnkgT1AtVEVFIFNDTUkgc2VydmljZSAqLwo+ID4gKyAgICAgY2hh bm5lbC0+Y2hhbm5lbF9pZCA9IHBhcmFtWzBdLnUudmFsdWUuYTsKPiA+ICsgICAgIGNoYW5uZWwt PmNhcHMgPSBjYXBzOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyBpbnQgaW52b2tlX3Byb2Nlc3Nfc210X2NoYW5uZWwoc3RydWN0IHNjbWlfb3B0ZWVf Y2hhbm5lbCAqY2hhbm5lbCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgdGVlX2lvY3RsX2ludm9r ZV9hcmcgYXJnID0geyB9Owo+ID4gKyAgICAgc3RydWN0IHRlZV9wYXJhbSBwYXJhbVsyXSA9IHsg fTsKPiA+ICsgICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAgICBhcmcuc2Vzc2lvbiA9IGNoYW5u ZWwtPnRlZV9zZXNzaW9uOwo+ID4gKyAgICAgcGFyYW1bMF0uYXR0ciA9IFRFRV9JT0NUTF9QQVJB TV9BVFRSX1RZUEVfVkFMVUVfSU5QVVQ7Cj4gPiArICAgICBwYXJhbVswXS51LnZhbHVlLmEgPSBj aGFubmVsLT5jaGFubmVsX2lkOwo+ID4gKwo+ID4gKyAgICAgaWYgKGNoYW5uZWwtPnRlZV9zaG0p IHsKPiA+ICsgICAgICAgICAgICAgcGFyYW1bMV0uYXR0ciA9IFRFRV9JT0NUTF9QQVJBTV9BVFRS X1RZUEVfTUVNUkVGX0lOT1VUOwo+ID4gKyAgICAgICAgICAgICBwYXJhbVsxXS51Lm1lbXJlZi5z aG0gPSBjaGFubmVsLT50ZWVfc2htOwo+ID4gKyAgICAgICAgICAgICBwYXJhbVsxXS51Lm1lbXJl Zi5zaXplID0gU0NNSV9PUFRFRV9NQVhfTVNHX1NJWkU7Cj4gPiArICAgICAgICAgICAgIGFyZy5u dW1fcGFyYW1zID0gMjsKPiA+ICsgICAgICAgICAgICAgYXJnLmZ1bmMgPSBQVEFfU0NNSV9DTURf UFJPQ0VTU19TTVRfQ0hBTk5FTF9NRVNTQUdFOwo+ID4gKyAgICAgfSBlbHNlIHsKPiA+ICsgICAg ICAgICAgICAgYXJnLm51bV9wYXJhbXMgPSAxOwo+ID4gKyAgICAgICAgICAgICBhcmcuZnVuYyA9 IFBUQV9TQ01JX0NNRF9QUk9DRVNTX1NNVF9DSEFOTkVMOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4g KyAgICAgcmV0ID0gdGVlX2NsaWVudF9pbnZva2VfZnVuYyhzY21pX29wdGVlX3ByaXZhdGUtPnRl ZV9jdHgsICZhcmcsIHBhcmFtKTsKPiA+ICsgICAgIGlmIChyZXQgPCAwIHx8IGFyZy5yZXQpIHsK PiA+ICsgICAgICAgICAgICAgZGV2X2VycihzY21pX29wdGVlX3ByaXZhdGUtPmRldiwgIkNhbid0 IGludm9rZSBjaGFubmVsICV1OiAlZCAvICUjeFxuIiwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBjaGFubmVsLT5jaGFubmVsX2lkLCByZXQsIGFyZy5yZXQpOwo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTzsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgaW50IHNjbWlfb3B0ZWVfbGlua19zdXBwbGllcihzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4gPiArewo+ID4gKyAgICAgaWYgKCFzY21pX29wdGVlX3ByaXZhdGUgfHwgIXNj bWlfb3B0ZWVfcHJpdmF0ZS0+dGVlX2N0eCkgewo+Cj4gSXMgbm90IHRoaXMgIXRlZV9jdHggcmVk dW5kYW50IHNpbmNlIHNjbWlfb3B0ZWVfcHJpdmF0ZS0+dGVlX2N0eCBpcyBhbHJlYWR5Cj4gYXNz dXJlZCBub3QgTlVMTCB3aGVuIHNjbWlfb3B0ZWVfcHJpdmF0ZSBpcyBmb3VuZCBzZXQsIGdpdmVu IHRoZSBvcmRlciBvZiBvcHMgaW4KPiB0aGUgcHJvYmUoKSBhbmQgdGhlIGJhcnJpZXIgeW91IGFk ZGVkID8KCnlvdSdyZSByaWdodCwgIXNjbWlfb3B0ZWVfcHJpdmF0ZSBpcyBlbm91Z2guCgo+Cj4g PiArICAgICAgICAgICAgIGlmIChzY21pX29wdGVlX2luaXQoKSkKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZfZGJnKGRldiwgIk9wdGVlIGJ1cyBub3QgeWV0IHJlYWR5XG4iKTsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgLyogV2FpdCBmb3Igb3B0ZWUgYnVzICovCj4gPiArICAgICAgICAg ICAgIHJldHVybiAtRVBST0JFX0RFRkVSOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYg KCFkZXZpY2VfbGlua19hZGQoZGV2LCBzY21pX29wdGVlX3ByaXZhdGUtPmRldiwgRExfRkxBR19B VVRPUkVNT1ZFX0NPTlNVTUVSKSkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkFk ZGluZyBsaW5rIHRvIHN1cHBsaWVyIG9wdGVlIGRldmljZSBmYWlsZWRcbiIpOwo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gLUVDQU5DRUxFRDsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJl dHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBzY21pX29wdGVlX2NoYW5fYXZh aWxhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGlkeCkKPiA+ICt7Cj4gPiArICAgICB1MzIg Y2hhbm5lbF9pZDsKPiA+ICsKPiA+ICsgICAgIHJldHVybiAhb2ZfcHJvcGVydHlfcmVhZF91MzJf aW5kZXgoZGV2LT5vZl9ub2RlLCAibGluYXJvLG9wdGVlLWNoYW5uZWwtaWQiLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgsICZjaGFubmVsX2lkKTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgc2NtaV9vcHRlZV9jbGVhcl9jaGFubmVsKHN0cnVj dCBzY21pX2NoYW5faW5mbyAqY2luZm8pCj4gPiArewo+ID4gKyAgICAgc3RydWN0IHNjbWlfb3B0 ZWVfY2hhbm5lbCAqY2hhbm5lbCA9IGNpbmZvLT50cmFuc3BvcnRfaW5mbzsKPiA+ICsKPiA+ICsg ICAgIHNobWVtX2NsZWFyX2NoYW5uZWwoY2hhbm5lbC0+c2htZW0pOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgaW50IHNldHVwX2R5bmFtaWNfc2htZW0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3Qgc2NtaV9vcHRlZV9jaGFubmVsICpjaGFubmVsKQo+ID4gK3sKPiA+ICsgICAgIGNvbnN0IHNp emVfdCBtc2dfc2l6ZSA9IFNDTUlfT1BURUVfTUFYX01TR19TSVpFOwo+ID4gKwo+ID4gKyAgICAg Y2hhbm5lbC0+dGVlX3NobSA9IHRlZV9zaG1fYWxsb2Nfa2VybmVsX2J1ZihzY21pX29wdGVlX3By aXZhdGUtPnRlZV9jdHgsIG1zZ19zaXplKTsKPiA+ICsgICAgIGlmIChJU19FUlIoY2hhbm5lbC0+ dGVlX3NobSkpIHsKPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjaGFubmVsLT5jaW5mby0+ZGV2 LCAic2htZW0gYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGNoYW5uZWwtPnNobWVtID0gKHZv aWQgKil0ZWVfc2htX2dldF92YShjaGFubmVsLT50ZWVfc2htLCAwKTsKPiA+ICsgICAgIG1lbXNl dChjaGFubmVsLT5zaG1lbSwgMCwgbXNnX3NpemUpOwo+ID4gKyAgICAgc2htZW1fY2xlYXJfY2hh bm5lbChjaGFubmVsLT5zaG1lbSk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludCBzZXR1cF9zdGF0aWNfc2htZW0oc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwpCj4gPiArewo+ID4gKyAg ICAgc3RydWN0IGRldmljZV9ub2RlICpucDsKPiA+ICsgICAgIHJlc291cmNlX3NpemVfdCBzaXpl Owo+ID4gKyAgICAgc3RydWN0IHJlc291cmNlIHJlczsKPiA+ICsgICAgIGludCByZXQ7Cj4gPiAr Cj4gPiArICAgICBucCA9IG9mX3BhcnNlX3BoYW5kbGUoY2luZm8tPmRldi0+b2Zfbm9kZSwgInNo bWVtIiwgMCk7Cj4gPiArICAgICBpZiAoIW9mX2RldmljZV9pc19jb21wYXRpYmxlKG5wLCAiYXJt LHNjbWktc2htZW0iKSkgewo+ID4gKyAgICAgICAgICAgICByZXQgPSAtRU5YSU87Cj4gPiArICAg ICAgICAgICAgIGdvdG8gb3V0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgcmV0ID0gb2Zf YWRkcmVzc190b19yZXNvdXJjZShucCwgMCwgJnJlcyk7Cj4gPiArICAgICBpZiAocmV0KSB7Cj4g PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBTQ01JIFR4IHNoYXJl ZCBtZW1vcnlcbiIpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ICsgICAgIH0KPiA+ ICsKPiA+ICsgICAgIHNpemUgPSByZXNvdXJjZV9zaXplKCZyZXMpOwo+ID4gKwo+ID4gKyAgICAg Y2hhbm5lbC0+c2htZW0gPSBkZXZtX2lvcmVtYXAoZGV2LCByZXMuc3RhcnQsIHNpemUpOwo+ID4g KyAgICAgaWYgKCFjaGFubmVsLT5zaG1lbSkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRl diwgIkZhaWxlZCB0byBpb3JlbWFwIFNDTUkgVHggc2hhcmVkIG1lbW9yeVxuIik7Cj4gPiArICAg ICAgICAgICAgIHJldCA9IC1FQUREUk5PVEFWQUlMOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91 dDsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHJldCA9IDA7Cj4gPiArCj4gPiArb3V0Ogo+ ID4gKyAgICAgb2Zfbm9kZV9wdXQobnApOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBzZXR1cF9zaG1lbShzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sCj4gPiArICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgc2NtaV9vcHRlZV9jaGFubmVsICpjaGFubmVsKQo+ID4gK3sKPiA+ICsgICAgIGlmIChv Zl9maW5kX3Byb3BlcnR5KGNpbmZvLT5kZXYtPm9mX25vZGUsICJzaG1lbSIsIE5VTEwpKQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gc2V0dXBfc3RhdGljX3NobWVtKGRldiwgY2luZm8sIGNoYW5u ZWwpOwo+ID4gKyAgICAgZWxzZQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gc2V0dXBfZHluYW1p Y19zaG1lbShkZXYsIGNoYW5uZWwpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNjbWlf b3B0ZWVfY2hhbl9zZXR1cChzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvLCBzdHJ1Y3QgZGV2 aWNlICpkZXYsIGJvb2wgdHgpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IHNjbWlfb3B0ZWVfY2hh bm5lbCAqY2hhbm5lbDsKPiA+ICsgICAgIHVpbnQzMl90IGNoYW5uZWxfaWQ7Cj4gPiArICAgICBp bnQgcmV0Owo+ID4gKwo+ID4gKyAgICAgaWYgKCF0eCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC1FTk9ERVY7Cj4gPiArCj4gPiArICAgICBjaGFubmVsID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpjaGFubmVsKSwgR0ZQX0tFUk5FTCk7Cj4gPiArICAgICBpZiAoIWNoYW5uZWwpCj4gPiAr ICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzJfaW5kZXgoY2luZm8tPmRldi0+b2Zfbm9kZSwgImxpbmFybyxvcHRlZS1j aGFubmVsLWlkIiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs ICZjaGFubmVsX2lkKTsKPiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gPiArCj4gPiArICAgICBjaW5mby0+dHJhbnNwb3J0X2luZm8gPSBjaGFubmVsOwo+ ID4gKyAgICAgY2hhbm5lbC0+Y2luZm8gPSBjaW5mbzsKPiA+ICsgICAgIGNoYW5uZWwtPmNoYW5u ZWxfaWQgPSBjaGFubmVsX2lkOwo+ID4gKyAgICAgbXV0ZXhfaW5pdCgmY2hhbm5lbC0+bXUpOwo+ ID4gKwo+ID4gKyAgICAgcmV0ID0gc2V0dXBfc2htZW0oZGV2LCBjaW5mbywgY2hhbm5lbCk7Cj4g PiArICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4g KyAgICAgcmV0ID0gb3Blbl9zZXNzaW9uKHNjbWlfb3B0ZWVfcHJpdmF0ZSwgJmNoYW5uZWwtPnRl ZV9zZXNzaW9uKTsKPiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiArCj4gPiArICAgICByZXQgPSBnZXRfY2hhbm5lbChjaGFubmVsKTsKPiA+ICsgICAg IGlmIChyZXQpIHsKPiA+ICsgICAgICAgICAgICAgY2xvc2Vfc2Vzc2lvbihzY21pX29wdGVlX3By aXZhdGUsIGNoYW5uZWwtPnRlZV9zZXNzaW9uKTsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPiA+ICsgICAgIH0KPgo+IFNob3VsZG4ndCBkeW5hbWljIHNobWVtIChpZiB1c2VkKSBiZSBm cmVlZCBleHBsaWNpdGx5IG9uIHRoZSBlcnIgcGF0aCBpZgo+IG9wZW5fc2Vzc2lvbiBvciBnZXRf Y2hhbm5lbCBmYWlscyAobGlrZSB5b3UgZG8gaW4gc2NtaV9vcHRlZV9jaGFuX2ZyZWUoKSkgPwo+ Cj4gICAgICAgICBpZiAoY2hhbm5lbC0+dGVlX3NobSkgewo+ICAgICAgICAgICAgICAgICB0ZWVf c2htX2ZyZWUoY2hhbm5lbC0+dGVlX3NobSk7Cj4gICAgICAgICAgICAgICAgIC4uLgo+Cj4gU2lu Y2UgaWYgLmNoYW5fc2V0dXAoKSBmYWlscyBoZXJlIHRoZSBTQ01JIGNvcmUgd29uJ3QgcmVnaXN0 ZXIgdGhpcwo+IGNoYW5uZWwgaW4gdGhlIHJlbGF0ZWQgSURSIG1hcCBhbmQgLmNoYW5fZnJlZSB3 b24ndCBiZSBjYWxsZWQgZXZlci4KPiAob3IgaW5pdGlhbGl6ZSBzaG1lbSBsYXRlciBvbmNlIHlv dSBoYXZlIG9wZW5lZCB0aGUgc2Vzc2lvbiBhbmQgZ290IHRoZQo+IGNoYW5uZWwgYW5kIHlvdSBr bm93IHlvdSBjYW5ub3QgZmFpbCBhbnltb3JlLi4uaWYgaXQgaXMgbm90IG5lZWRlZCBieQo+IG9w ZW5fc2Vzc2lvbiBhbmQgZ2V0X2NoYW5uZWwgYXMgaXQgc2VlbXMgYnV0IG9ubHkgbGF0ZXIgYnkg dGhlIFNDTUkgbXNnCj4gZmxvdykKClRoYW5rcyBmb3IgcG9pbnRpbmcgdGhhdC4gSSBtaXNzZWQg aXQuClllcywgc2hvdWxkIHJlbGVhc2UgYWxsb2NhdGVkIHNobSB1cG9uIGZhaWx1cmUuCgo+Cj4g PiArCj4gPiArICAgICBtdXRleF9sb2NrKCZzY21pX29wdGVlX3ByaXZhdGUtPm11KTsKPiA+ICsg ICAgIGxpc3RfYWRkKCZjaGFubmVsLT5saW5rLCAmc2NtaV9vcHRlZV9wcml2YXRlLT5jaGFubmVs X2xpc3QpOwo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZzY21pX29wdGVlX3ByaXZhdGUtPm11KTsK PiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNj bWlfb3B0ZWVfY2hhbl9mcmVlKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSkKPiA+ICt7Cj4g PiArICAgICBzdHJ1Y3Qgc2NtaV9jaGFuX2luZm8gKmNpbmZvID0gcDsKPiA+ICsgICAgIHN0cnVj dCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwgPSBjaW5mby0+dHJhbnNwb3J0X2luZm87Cj4g PiArCj4gPiArICAgICBtdXRleF9sb2NrKCZzY21pX29wdGVlX3ByaXZhdGUtPm11KTsKPiA+ICsg ICAgIGxpc3RfZGVsKCZjaGFubmVsLT5saW5rKTsKPiA+ICsgICAgIG11dGV4X3VubG9jaygmc2Nt aV9vcHRlZV9wcml2YXRlLT5tdSk7Cj4gPiArCj4KPiBJIG1heSBiZSB3cm9uZyAobm90IGZhbWls aWFyIHdpaCBvcHRlZSkgYnV0LCBzb21ld2hlcmUgYXJvdW5kIGhlcmUsIHNob3VsZAo+IHlvdSBu b3QgYWxzbyBjbG9zZSB0aGUgc2Vzc2lvbiBsZWZ0IG9wZW4gb24gLmNoYW5fc2V0dXAoKSBzdWNj ZXNzICh3aGljaCB5b3UKPiB1c2VkIGFjdGl2ZWx5IGZvciBTQ01JIG1zZyBleGNoYW5nZXMgdmlh IHNlbmRfbWVzc2FnZSgpLwo+IGludm9rZV9wcm9jZXNzX3NtdF9jaGFubmVsKCkgPwoKWW91IGFy ZSBmdWxseSByaWdodC4gSSBmYWlsZWQgbW9zdCByZXNvdXJjZSByZWxlYXNlIHBhdGguCldpbGwg Zml4LiBUaGFua3MgYWdhaW4uCgo+Cj4gPiArICAgICBpZiAoY2hhbm5lbC0+dGVlX3NobSkgewo+ ID4gKyAgICAgICAgICAgICB0ZWVfc2htX2ZyZWUoY2hhbm5lbC0+dGVlX3NobSk7Cj4gPiArICAg ICAgICAgICAgIGNoYW5uZWwtPnRlZV9zaG0gPSBOVUxMOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4g KyAgICAgY2luZm8tPnRyYW5zcG9ydF9pbmZvID0gTlVMTDsKPiA+ICsgICAgIGNoYW5uZWwtPmNp bmZvID0gTlVMTDsKPiA+ICsKPiA+ICsgICAgIHNjbWlfZnJlZV9jaGFubmVsKGNpbmZvLCBkYXRh LCBpZCk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHN0cnVjdCBzY21pX3NoYXJlZF9tZW0gKmdldF9jaGFubmVsX3NobShzdHJ1Y3Qgc2NtaV9vcHRl ZV9jaGFubmVsICpjaGFuLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHNjbWlfeGZlciAqeGZlcikKPiA+ICt7Cj4gPiArICAgICBpZiAoIWNo YW4pCj4gPiArICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJu IGNoYW4tPnNobWVtOwo+ID4gK30KPiA+ICsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNjbWlfb3B0 ZWVfc2VuZF9tZXNzYWdlKHN0cnVjdCBzY21pX2NoYW5faW5mbyAqY2luZm8sCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NtaV94ZmVyICp4ZmVyKQo+ID4gK3sK PiA+ICsgICAgIHN0cnVjdCBzY21pX29wdGVlX2NoYW5uZWwgKmNoYW5uZWwgPSBjaW5mby0+dHJh bnNwb3J0X2luZm87Cj4gPiArICAgICBzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtICpzaG1lbSA9IGdl dF9jaGFubmVsX3NobShjaGFubmVsLCB4ZmVyKTsKPiA+ICsgICAgIGludCByZXQ7Cj4gPiArCj4g PiArICAgICBtdXRleF9sb2NrKCZjaGFubmVsLT5tdSk7Cj4gPiArICAgICBzaG1lbV90eF9wcmVw YXJlKHNobWVtLCB4ZmVyKTsKPiA+ICsKPiA+ICsgICAgIHJldCA9IGludm9rZV9wcm9jZXNzX3Nt dF9jaGFubmVsKGNoYW5uZWwpOwo+ID4gKwo+ID4gKyAgICAgc2NtaV9yeF9jYWxsYmFjayhjaW5m bywgc2htZW1fcmVhZF9oZWFkZXIoc2htZW0pLCBOVUxMKTsKPiA+ICsgICAgIG11dGV4X3VubG9j aygmY2hhbm5lbC0+bXUpOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIHZvaWQgc2NtaV9vcHRlZV9mZXRjaF9yZXNwb25zZShzdHJ1Y3Qgc2NtaV9j aGFuX2luZm8gKmNpbmZvLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHNjbWlfeGZlciAqeGZlcikKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3Qgc2NtaV9vcHRl ZV9jaGFubmVsICpjaGFubmVsID0gY2luZm8tPnRyYW5zcG9ydF9pbmZvOwo+ID4gKyAgICAgc3Ry dWN0IHNjbWlfc2hhcmVkX21lbSAqc2htZW0gPSBnZXRfY2hhbm5lbF9zaG0oY2hhbm5lbCwgeGZl cik7Cj4gPiArCj4gPiArICAgICBzaG1lbV9mZXRjaF9yZXNwb25zZShzaG1lbSwgeGZlcik7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIHNjbWlfb3B0ZWVfcG9sbF9kb25lKHN0cnVjdCBz Y21pX2NoYW5faW5mbyAqY2luZm8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHNjbWlfeGZlciAqeGZlcikKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3Qgc2NtaV9vcHRl ZV9jaGFubmVsICpjaGFubmVsID0gY2luZm8tPnRyYW5zcG9ydF9pbmZvOwo+ID4gKyAgICAgc3Ry dWN0IHNjbWlfc2hhcmVkX21lbSAqc2htZW0gPSBnZXRfY2hhbm5lbF9zaG0oY2hhbm5lbCwgeGZl cik7Cj4gPiArCj4gPiArICAgICByZXR1cm4gc2htZW1fcG9sbF9kb25lKHNobWVtLCB4ZmVyKTsK PiA+ICt9Cj4KPiBXaWxsIHBvbGxpbmcgZXZlciBiZSBhIHRoaW5nIG9uIHRoaXMgdHJhbnNwb3J0 IGdpdmVuIHRoYXQKPiBpbnZva2VfcHJvY2Vzc19zbXRfY2hhbm5lbCgpIGlzIHN1cHBvc2VkIHRv IHJldHVybiBhdG9taWNhbGx5ID8KPgo+IChpLmUuIHNob3VsZCB3ZSBqdXN0IGRyb3AgdGhpcyBh bmQgLnBvbGxfZG9uZSBpbiB0aGUgb3BzIGJlbG93LAo+IGdpdmVuIHdpdGggdjUuMTUgeW91IGNh biBzYWZlbHkgb21pdCBwb2xsaW5nIHN1cHBvcnQgYW5kIHRoZSBTQ01JIGNvcmUKPiB3aWxsIHJl ZnVzZSB0byB1c2UgaXQgZXZlbiBpZiByZXF1ZXN0ZWQgPykKCkZyb20gdGhlIHY1LjE1LXJjNyBp bXBsZW1lbnRhdGlvbiBJIHVuZGVyc3RhbmQgdGhhdCBwb2xsX2RvbmUgb3BlcmF0b3IKaXMgcmVx dWlyZWQgd2hlbiBhIGNhbGxlciBleHBsaWNpdGx5IGFza3MgZm9yIGEgcG9sbGluZyBtb2RlLiBJ IGNhbgpmaW5kIG9ubHkgU0NNSSBwZXJmIGFzIGEgY2FsbGVyIHVwb24gYSBjcHVmcmVxIGZhc3Qg c3dpdGNoIHJlcXVlc3QuIFNvCkl0IHNlZW1zIHRvIG1lIHRoZSBTQ01JIHRyYW5zcG9ydCBzaG91 bGQgcHJvdmlkZSBhIGhhbmRsZXIgZm9yIHRoYXQsCmluIGNhc2UgaXQncyBuZWVkZWQsIHVubGVz cyB3aGF0IGRvX3hmZXIoKSB3b3VsZCB3YXJuLgpBbSBJIHdyb25nPwoKPgo+ID4gKwo+ID4gK3N0 YXRpYyBzdHJ1Y3Qgc2NtaV90cmFuc3BvcnRfb3BzIHNjbWlfb3B0ZWVfb3BzID0gewo+ID4gKyAg ICAgLmxpbmtfc3VwcGxpZXIgPSBzY21pX29wdGVlX2xpbmtfc3VwcGxpZXIsCj4gPiArICAgICAu Y2hhbl9hdmFpbGFibGUgPSBzY21pX29wdGVlX2NoYW5fYXZhaWxhYmxlLAo+ID4gKyAgICAgLmNo YW5fc2V0dXAgPSBzY21pX29wdGVlX2NoYW5fc2V0dXAsCj4gPiArICAgICAuY2hhbl9mcmVlID0g c2NtaV9vcHRlZV9jaGFuX2ZyZWUsCj4gPiArICAgICAuc2VuZF9tZXNzYWdlID0gc2NtaV9vcHRl ZV9zZW5kX21lc3NhZ2UsCj4gPiArICAgICAuZmV0Y2hfcmVzcG9uc2UgPSBzY21pX29wdGVlX2Zl dGNoX3Jlc3BvbnNlLAo+ID4gKyAgICAgLmNsZWFyX2NoYW5uZWwgPSBzY21pX29wdGVlX2NsZWFy X2NoYW5uZWwsCj4gPiArICAgICAucG9sbF9kb25lID0gc2NtaV9vcHRlZV9wb2xsX2RvbmUsCj4g PiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNjbWlfb3B0ZWVfY3R4X21hdGNoKHN0cnVjdCB0 ZWVfaW9jdGxfdmVyc2lvbl9kYXRhICp2ZXIsIGNvbnN0IHZvaWQgKmRhdGEpCj4gPiArewo+ID4g KyAgICAgcmV0dXJuIHZlci0+aW1wbF9pZCA9PSBURUVfSU1QTF9JRF9PUFRFRTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludCBzY21pX29wdGVlX3NlcnZpY2VfcHJvYmUoc3RydWN0IGRldmlj ZSAqZGV2KQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBzY21pX29wdGVlX2FnZW50ICphZ2VudDsK PiA+ICsgICAgIHN0cnVjdCB0ZWVfY29udGV4dCAqdGVlX2N0eDsKPiA+ICsgICAgIGludCByZXQ7 Cj4gPiArCj4gPiArICAgICAvKiBPbmx5IG9uZSBTQ01JIE9QLVRFRSBkZXZpY2UgYWxsb3dlZCAq Lwo+ID4gKyAgICAgaWYgKHNjbWlfb3B0ZWVfcHJpdmF0ZSkgewo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgIkFuIFNDTUkgT1AtVEVFIGRldmljZSB3YXMgYWxyZWFkeSBpbml0aWFsaXpl ZDogb25seSBvbmUgYWxsb3dlZFxuIik7Cj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICB0ZWVfY3R4ID0gdGVlX2NsaWVudF9vcGVuX2Nv bnRleHQoTlVMTCwgc2NtaV9vcHRlZV9jdHhfbWF0Y2gsIE5VTEwsIE5VTEwpOwo+ID4gKyAgICAg aWYgKElTX0VSUih0ZWVfY3R4KSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4g PiArCj4gPiArICAgICBhZ2VudCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqYWdlbnQpLCBH RlBfS0VSTkVMKTsKPiA+ICsgICAgIGlmICghYWdlbnQpIHsKPiA+ICsgICAgICAgICAgICAgcmV0 ID0gLUVOT01FTTsKPiA+ICsgICAgICAgICAgICAgZ290byBlcnI7Cj4gPiArICAgICB9Cj4gPiAr Cj4gPiArICAgICBhZ2VudC0+ZGV2ID0gZGV2Owo+ID4gKyAgICAgYWdlbnQtPnRlZV9jdHggPSB0 ZWVfY3R4Owo+ID4gKyAgICAgSU5JVF9MSVNUX0hFQUQoJmFnZW50LT5jaGFubmVsX2xpc3QpOwo+ ID4gKwo+ID4gKyAgICAgcmV0ID0gZ2V0X2NhcGFiaWxpdGllcyhhZ2VudCk7Cj4gPiArICAgICBp ZiAocmV0KQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycjsKPiA+ICsKPiA+ICsgICAgIC8qIEVu c3VyZSBhZ2VudCByZXNvdXJjZXMgYXJlIGFsbCB2aXNpYmxlIGJlZm9yZSBzY21pX29wdGVlX3By aXZhdGUgaXMgKi8KPiA+ICsgICAgIHNtcF9tYigpOwo+ID4gKyAgICAgc2NtaV9vcHRlZV9wcml2 YXRlID0gYWdlbnQ7Cj4gPiArCj4gPiArICAgICByZXR1cm4gMDsKPiA+ICsKPiA+ICtlcnI6Cj4g PiArICAgICB0ZWVfY2xpZW50X2Nsb3NlX2NvbnRleHQodGVlX2N0eCk7Cj4gPiArCj4gPiArICAg ICByZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNjbWlfb3B0ZWVfc2Vy dmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBz Y21pX29wdGVlX2FnZW50ICphZ2VudCA9IHNjbWlfb3B0ZWVfcHJpdmF0ZTsKPiA+ICsKPiA+ICsg ICAgIGlmICghc2NtaV9vcHRlZV9wcml2YXRlKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKPiA+ICsKPiA+ICsgICAgIGlmICghbGlzdF9lbXB0eSgmc2NtaV9vcHRlZV9wcml2YXRl LT5jaGFubmVsX2xpc3QpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVCVVNZOwo+ID4gKwo+ ID4gKyAgICAgLyogRW5zdXJlIGNsZWFyZWQgcmVmZXJlbmNlIGlzIHZpc2libGUgYmVmb3JlIHJl c291cmNlcyBhcmUgcmVsZWFzZWQgKi8KPiA+ICsgICAgIHNtcF9zdG9yZV9tYihzY21pX29wdGVl X3ByaXZhdGUsIE5VTEwpOwo+ID4gKwo+ID4gKyAgICAgdGVlX2NsaWVudF9jbG9zZV9jb250ZXh0 KGFnZW50LT50ZWVfY3R4KTsKPiA+ICsKPiA+ICsgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRlZV9jbGllbnRfZGV2aWNlX2lkIHNjbWlfb3B0ZWVf c2VydmljZV9pZFtdID0gewo+ID4gKyAgICAgewo+ID4gKyAgICAgICAgICAgICBVVUlEX0lOSVQo MHhhOGNmZTQwNiwgMHhkNGY1LCAweDRhMmUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAw eDlmLCAweDhkLCAweGEyLCAweDVkLCAweGM3LCAweDU0LCAweGMwLCAweDk5KQo+ID4gKyAgICAg fSwKPiA+ICsgICAgIHsgfQo+ID4gK307Cj4gPiArCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRSh0 ZWUsIHNjbWlfb3B0ZWVfc2VydmljZV9pZCk7Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCB0ZWVf Y2xpZW50X2RyaXZlciBzY21pX29wdGVlX2RyaXZlciA9IHsKPiA+ICsgICAgIC5pZF90YWJsZSAg ICAgICA9IHNjbWlfb3B0ZWVfc2VydmljZV9pZCwKPiA+ICsgICAgIC5kcml2ZXIgICAgICAgICA9 IHsKPiA+ICsgICAgICAgICAgICAgLm5hbWUgPSAic2NtaS1vcHRlZSIsCj4gPiArICAgICAgICAg ICAgIC5idXMgPSAmdGVlX2J1c190eXBlLAo+ID4gKyAgICAgICAgICAgICAucHJvYmUgPSBzY21p X29wdGVlX3NlcnZpY2VfcHJvYmUsCj4gPiArICAgICAgICAgICAgIC5yZW1vdmUgPSBzY21pX29w dGVlX3NlcnZpY2VfcmVtb3ZlLAo+ID4gKyAgICAgfSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRp YyBpbnQgc2NtaV9vcHRlZV9pbml0KHZvaWQpCj4gPiArewo+ID4gKyAgICAgcmV0dXJuIGRyaXZl cl9yZWdpc3Rlcigmc2NtaV9vcHRlZV9kcml2ZXIuZHJpdmVyKTsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQgc2NtaV9vcHRlZV9leGl0KHZvaWQpCj4gPiArewo+ID4gKyAgICAgZHJpdmVy X3VucmVnaXN0ZXIoJnNjbWlfb3B0ZWVfZHJpdmVyLmRyaXZlcik7Cj4gPiArfQo+ID4gKwo+ID4g K2NvbnN0IHN0cnVjdCBzY21pX2Rlc2Mgc2NtaV9vcHRlZV9kZXNjID0gewo+ID4gKyAgICAgLnRy YW5zcG9ydF9leGl0ID0gc2NtaV9vcHRlZV9leGl0LAo+ID4gKyAgICAgLm9wcyA9ICZzY21pX29w dGVlX29wcywKPiA+ICsgICAgIC5tYXhfcnhfdGltZW91dF9tcyA9IDMwLAo+ID4gKyAgICAgLm1h eF9tc2cgPSAyMCwKPiA+ICsgICAgIC5tYXhfbXNnX3NpemUgPSAxMjgsCj4KPiBTaG91bGRuJ3Qg d2UgdXNlIFNDTUlfT1BURUVfTUFYX01TR19TSVpFIG5vdyBoZXJlIHRvbyB0aGF0IHdlIGhhdmUg aXQgPwoKaW5kZWVkIQoKVGhhbmtzIGZvciBhbGwgdGhlIGZpbmRpbmdzLgpSZWdhcmRzLApFdGll bm5lCgo+Cj4gVGhhbmtzLAo+IENyaXN0aWFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==