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=DKIM_SIGNED,DKIM_VALID, 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 4C718C43387 for ; Thu, 20 Dec 2018 14:36:11 +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 178E7218AE for ; Thu, 20 Dec 2018 14:36:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="nOWESBUX"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=linaro.org header.i=@linaro.org header.b="KoHDhIch" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 178E7218AE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=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=1PfKJm2P5R4c37Y3nTs6LTYiZ+1uA9DFQU3A+DGweq0=; b=nOWESBUXHr96Xl w/yw3jEGNBwLKBxh624KeTDo/v9HyPTNl47KnMtYIABjg3ofaF7cF+zdAL15fYMgllhk9g/ile2on SUDOBDdqDo0ibTRvUcMqSaaaHnO9o1vYjcIy0XBz2oD7FgMs30mfLaggNRZZMOXW2TvMwOrIiea++ rkVAGiXtuVRWUw2uZjQrBNZD28xuxbAE0kbi6OECK2wl9W14coQfD8VSIm0kE/gNtAXm7DEpmOxZL ZvQg5KGggxtYJ9RV5C4MBs6GueH+0F8TMT1p2uZnxya4D3bYp1MxmqnQ/rTdGw/F48jS7m00IrWlN oB6Ddn/zut0E9/VSCilg==; 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 1gZzQh-00022e-Ns; Thu, 20 Dec 2018 14:36:03 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gZzQe-00020y-Sz for linux-arm-kernel@lists.infradead.org; Thu, 20 Dec 2018 14:36:02 +0000 Received: by mail-wr1-x443.google.com with SMTP id r10so1989403wrs.10 for ; Thu, 20 Dec 2018 06:35:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=iSBBGKYXoMbAEVaAi+Mds4SNqRv60KJaSLPiiZa6Ui8=; b=KoHDhIchrUcTBTszIGVh8c7qEIdRb8CL3TAzTurDHLJV/fd//mdJScLRmVMXSeCt4t VTvIkQla7i+Svq0PueG1mpdAmfv4oeguuJrtneqtaXmdkUSv+1JSaA9Qhz+Nxhm746KI Gy/J3YRL+xUWLfSysvld1dOa/2quvhPOSfDgU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=iSBBGKYXoMbAEVaAi+Mds4SNqRv60KJaSLPiiZa6Ui8=; b=ZtCC+V0EvaqdeZifhXVR4fiJ42AwQ0ozy7cPO6kM7GqDaMZVs07vgI+KwxC3n33lY3 BGF07F+qtIWaq2KOZ9DaaKdn67ZKtqmXgG2ZieQhW8nfOhU4GcMh4WHwW7uw1Oh96yW2 ogBdW0jvrUKHXepGX1pimtHNY5G0mw3/gTlfVHIr4HJu48LRmhMWpt5zCG0riuB7hswN 8NvgmwOJ2dyZ9rdw/7rbNxE7YvNNbGBDiiMmvj7yRpLutxVCfaCYTN1+k+EmZaF2oPUO QqFOf556yNmSJ8+fsxExz9gZpyjgppBkhz3F/4KvfW9dq03mTUH+kJlP81PpFNcZvPr1 KykA== X-Gm-Message-State: AA+aEWart3YZTjJNgX2DS4BMaOt8vDgDdCn3Ep0Q0YNssZL1Ycm6urWk xa1/Dbm1R1U1sNuC/50+rW8kvw== X-Google-Smtp-Source: AFSGD/XHXzeWvbngiFo4S1TfUwtIhuy3xZYoPe5zaPhBaCg7IMUKPYiT7j/5KT1/KbhHqdvozGGNew== X-Received: by 2002:adf:9bda:: with SMTP id e26mr21841749wrc.295.1545316549095; Thu, 20 Dec 2018 06:35:49 -0800 (PST) Received: from [192.168.0.40] (55.183.88.92.rev.sfr.net. [92.88.183.55]) by smtp.googlemail.com with ESMTPSA id h131sm10054013wmd.17.2018.12.20.06.35.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Dec 2018 06:35:48 -0800 (PST) Subject: Re: [PATCH v10 18/27] drivers: firmware: psci: Add support for PM domains using genpd To: Ulf Hansson , "Rafael J . Wysocki" , Sudeep Holla , Lorenzo Pieralisi , Mark Rutland , linux-pm@vger.kernel.org References: <20181129174700.16585-1-ulf.hansson@linaro.org> <20181129174700.16585-19-ulf.hansson@linaro.org> From: Daniel Lezcano Message-ID: Date: Thu, 20 Dec 2018 15:35:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20181129174700.16585-19-ulf.hansson@linaro.org> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181220_063600_994544_0F76BA8E X-CRM114-Status: GOOD ( 40.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Vincent Guittot , Geert Uytterhoeven , Kevin Hilman , Stephen Boyd , Viresh Kumar , linux-kernel@vger.kernel.org, Lina Iyer , Tony Lindgren , linux-arm-msm@vger.kernel.org, "Raju P . L . S . S . S . N" , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjkvMTEvMjAxOCAxODo0NiwgVWxmIEhhbnNzb24gd3JvdGU6Cj4gV2hlbiB0aGUgaGllcmFy Y2hpY2FsIENQVSB0b3BvbG9neSBsYXlvdXQgaXMgdXNlZCBpbiBEVCwgd2UgbmVlZCB0byBzZXR1 cAo+IHRoZSBjb3JyZXNwb25kaW5nIFBNIGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMsIGFzIHRvIGFs bG93IGEgQ1BVIGFuZCBhIGdyb3VwCj4gb2YgQ1BVcyB0byBiZSBwb3dlciBtYW5hZ2VkIGFjY29y ZGluZ2x5LiBMZXQncyBlbmFibGUgdGhpcyBieSBkZXBsb3lpbmcKPiBzdXBwb3J0IHRocm91Z2gg dGhlIGdlbnBkIGludGVyZmFjZS4KPiAKPiBBZGRpdGlvbmFsbHksIHdoZW4gdGhlIE9TIGluaXRp YXRlZCBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgUFNDSSBGVywgbGV0J3MKPiBhbHNvIHBhcnNl IHRoZSBkb21haW4gaWRsZSBzdGF0ZXMgRFQgYmluZGluZ3MgYXMgdG8gbWFrZSBnZW5wZCByZXNw b25zaWJsZQo+IGZvciB0aGUgc3RhdGUgc2VsZWN0aW9uLCB3aGVuIHRoZSBzdGF0ZXMgYXJlIGNv bXBhdGlibGUgd2l0aAo+ICJkb21haW4taWRsZS1zdGF0ZSIuIE90aGVyd2lzZSwgd2hlbiBvbmx5 IFBsYXRmb3JtIENvb3JkaW5hdGVkIG1vZGUgaXMKPiBzdXBwb3J0ZWQsIHdlIHJlbHkgc29sZWx5 IG9uIHRoZSBzdGF0ZSBzZWxlY3Rpb24gdG8gYmUgbWFuYWdlZCB0aHJvdWdoIHRoZQo+IHJlZ3Vs YXIgY3B1aWRsZSBmcmFtZXdvcmsuCj4gCj4gSWYgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQ TSBkb21haW4gZGF0YSBzdHJ1Y3R1cmVzIHN1Y2NlZWRzIGFuZCB0aGUgT1MKPiBpbml0aWF0ZWQg bW9kZSBpcyBzdXBwb3J0ZWQsIHdlIHRyeSB0byBzd2l0Y2ggdG8gaXQuIEluIGNhc2UgaXQgZmFp bHMsCj4gbGV0J3MgZmFsbCBiYWNrIGludG8gYSBkZWdyYWRlZCBtb2RlLCByYXRoZXIgdGhhbiBi YWlsaW5nIG91dCBhbmQgcmV0dXJuaW5nCj4gYW4gZXJyb3IgY29kZS4KPiAKPiBEdWUgdG8gdGhh dCB0aGUgT1MgaW5pdGlhdGVkIG1vZGUgbWF5IGJlY29tZSBlbmFibGVkLCB3ZSBuZWVkIHRvIGFk anVzdCB0bwo+IG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBhIGtlcm5lbCBz dGFydGVkIHRocm91Z2ggYSBrZXhlYyBjYWxsLgo+IERvIHRoaXMgYnkgZXhwbGljaXRseSBzd2l0 Y2ggdG8gUGxhdGZvcm0gQ29vcmRpbmF0ZWQgbW9kZSBkdXJpbmcgYm9vdC4KPiAKPiBUbyB0cnkg dG8gaW5pdGlhdGUgdGhlIFBNIGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMsIHRoZSBQU0NJIGRyaXZl ciBzaGFsbAo+IGNhbGwgdGhlIG5ldyBmdW5jdGlvbiwgcHNjaV9kdF9pbml0X3BtX2RvbWFpbnMo KS4gSG93ZXZlciwgdGhpcyBpcyBkb25lCj4gZnJvbSBmb2xsb3dpbmcgY2hhbmdlcy4KPiAKPiBD YzogTGluYSBJeWVyIDxpbGluYUBjb2RlYXVyb3JhLm9yZz4KPiBDby1kZXZlbG9wZWQtYnk6IExp bmEgSXllciA8bGluYS5peWVyQGxpbmFyby5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogVWxmIEhhbnNz b24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+Cj4gLS0tCj4gCj4gQ2hhbmdlcyBpbiBWMTA6Cj4g CS0gRW5hYmxlIHRoZSBQTSBkb21haW5zIHRvIGJlIHVzZWQgZm9yIGJvdGggUEMgYW5kIE9TSSBt b2RlLgo+IAktIEZpeHVwIGVycm9yIHBhdGhzLgo+IAktIE1vdmUgdGhlIG1hbmFnZW1lbnQgb2Yg a2V4ZWMgc3RhcnRlZCBrZXJuZWxzIGludG8gdGhpcyBwYXRjaC4KPiAJLSBSZXdyaXRlIGNoYW5n ZWxvZy4KPiAKPiAtLS0KPiAgZHJpdmVycy9maXJtd2FyZS9wc2NpL01ha2VmaWxlICAgICAgICAg fCAgIDIgKy0KPiAgZHJpdmVycy9maXJtd2FyZS9wc2NpL3BzY2kuYyAgICAgICAgICAgfCAgIDcg Ky0KPiAgZHJpdmVycy9maXJtd2FyZS9wc2NpL3BzY2kuaCAgICAgICAgICAgfCAgIDYgKwo+ICBk cml2ZXJzL2Zpcm13YXJlL3BzY2kvcHNjaV9wbV9kb21haW4uYyB8IDI2MiArKysrKysrKysrKysr KysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Zpcm13YXJlL3BzY2kvcHNj aV9wbV9kb21haW4uYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL3BzY2kvTWFr ZWZpbGUgYi9kcml2ZXJzL2Zpcm13YXJlL3BzY2kvTWFrZWZpbGUKPiBpbmRleCAxOTU2Yjg4MjQ3 MGYuLmZmMzAwZjFmZWM4NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL3BzY2kvTWFr ZWZpbGUKPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL3BzY2kvTWFrZWZpbGUKPiBAQCAtMSw0ICsx LDQgQEAKPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICAjCj4gLW9iai0k KENPTkZJR19BUk1fUFNDSV9GVykJKz0gcHNjaS5vCj4gK29iai0kKENPTkZJR19BUk1fUFNDSV9G VykJKz0gcHNjaS5vIHBzY2lfcG1fZG9tYWluLm8KClNhbWUgY29tbWVudCBhcyAxNy8yNy4KCitv YmotJChDT05GSUdfUFNDSV9JRExFKSArPSBwc2NpX3BtX2RvbWFpbi5vCgo+ICBvYmotJChDT05G SUdfQVJNX1BTQ0lfQ0hFQ0tFUikJKz0gcHNjaV9jaGVja2VyLm8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9maXJtd2FyZS9wc2NpL3BzY2kuYyBiL2RyaXZlcnMvZmlybXdhcmUvcHNjaS9wc2NpLmMK PiBpbmRleCA2MjM1OTFiNTQxYTQuLjE5YWYyMDkzMTUxYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2Zpcm13YXJlL3BzY2kvcHNjaS5jCj4gKysrIGIvZHJpdmVycy9maXJtd2FyZS9wc2NpL3BzY2ku Ywo+IEBAIC03MDQsOSArNzA0LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBzY2lfMV8wX2luaXQo c3RydWN0IGRldmljZV9ub2RlICpucCkKPiAgCWlmIChlcnIpCj4gIAkJcmV0dXJuIGVycjsKPiAg Cj4gLQlpZiAocHNjaV9oYXNfb3NpX3N1cHBvcnQoKSkKPiArCWlmIChwc2NpX2hhc19vc2lfc3Vw cG9ydCgpKSB7Cj4gIAkJcHJfaW5mbygiT1NJIG1vZGUgc3VwcG9ydGVkLlxuIik7Cj4gIAo+ICsJ CS8qIE1ha2Ugc3VyZSB3ZSBkZWZhdWx0IHRvIFBDIG1vZGUuICovCj4gKwkJaW52b2tlX3BzY2lf Zm4oUFNDSV8xXzBfRk5fU0VUX1NVU1BFTkRfTU9ERSwKPiArCQkJICAgICAgIFBTQ0lfMV8wX1NV U1BFTkRfTU9ERV9QQywgMCwgMCk7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZmlybXdhcmUvcHNjaS9wc2NpLmggYi9kcml2ZXJzL2Zpcm13 YXJlL3BzY2kvcHNjaS5oCj4gaW5kZXggN2Q5ZDM4ZmQ1N2UxLi44Y2Y2ZDcyMDZmYWIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9maXJtd2FyZS9wc2NpL3BzY2kuaAo+ICsrKyBiL2RyaXZlcnMvZmly bXdhcmUvcHNjaS9wc2NpLmgKPiBAQCAtMTEsNCArMTEsMTAgQEAgdm9pZCBwc2NpX3NldF9kb21h aW5fc3RhdGUodTMyIHN0YXRlKTsKPiAgYm9vbCBwc2NpX2hhc19vc2lfc3VwcG9ydCh2b2lkKTsK PiAgaW50IHBzY2lfZHRfcGFyc2Vfc3RhdGVfbm9kZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCB1 MzIgKnN0YXRlKTsKPiAgCj4gKyNpZmRlZiBDT05GSUdfQ1BVX0lETEUKClNhbWUgY29tbWVudCBh cyAxNy8yNyBmb3IgdGhlIGNvbmZpZyBvcHRpb24uCgo+ICtpbnQgcHNjaV9kdF9pbml0X3BtX2Rv bWFpbnMoc3RydWN0IGRldmljZV9ub2RlICpucCk7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUg aW50IHBzY2lfZHRfaW5pdF9wbV9kb21haW5zKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApIHsgcmV0 dXJuIDA7IH0KPiArI2VuZGlmCj4gKwo+ICAjZW5kaWYgLyogX19QU0NJX0ggKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9maXJtd2FyZS9wc2NpL3BzY2lfcG1fZG9tYWluLmMgYi9kcml2ZXJzL2Zp cm13YXJlL3BzY2kvcHNjaV9wbV9kb21haW4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5kMGRjMzhlOTZmODUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9maXJtd2FyZS9wc2NpL3BzY2lfcG1fZG9tYWluLmMKPiBAQCAtMCwwICsxLDI2MiBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBQTSBkb21h aW5zIGZvciBDUFVzIHZpYSBnZW5wZCAtIG1hbmFnZWQgYnkgUFNDSS4KPiArICoKPiArICogQ29w eXJpZ2h0IChDKSAyMDE4IExpbmFybyBMdGQuCj4gKyAqIEF1dGhvcjogVWxmIEhhbnNzb24gPHVs Zi5oYW5zc29uQGxpbmFyby5vcmc+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2RlZmluZSBwcl9mbXQo Zm10KSAicHNjaTogIiBmbXQKPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcG1fZG9tYWluLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KPiAr Cj4gKyNpbmNsdWRlICJwc2NpLmgiCj4gKwo+ICsjaWZkZWYgQ09ORklHX0NQVV9JRExFCgpTYW1l IGNvbW1lbnQgYXMgMTcvMjcgZm9yIHRoZSBjb25maWcgb3B0aW9uLiBUaGlzIGNvbmRpdGlvbiBz aG91bGQgZ28gYXdheS4KCj4gK3N0cnVjdCBwc2NpX3BkX3Byb3ZpZGVyIHsKPiArCXN0cnVjdCBs aXN0X2hlYWQgbGluazsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKPiArfTsKPiArCj4g K3N0YXRpYyBMSVNUX0hFQUQocHNjaV9wZF9wcm92aWRlcnMpOwo+ICtzdGF0aWMgYm9vbCBvc2lf bW9kZV9lbmFibGVkOwo+ICsKPiArc3RhdGljIGludCBwc2NpX3BkX3Bvd2VyX29mZihzdHJ1Y3Qg Z2VuZXJpY19wbV9kb21haW4gKnBkKQo+ICt7Cj4gKwlzdHJ1Y3QgZ2VucGRfcG93ZXJfc3RhdGUg KnN0YXRlID0gJnBkLT5zdGF0ZXNbcGQtPnN0YXRlX2lkeF07Cj4gKwl1MzIgKnBkX3N0YXRlOwo+ ICsJdTMyIGNvbXBvc2l0ZV9wZF9zdGF0ZTsKPiArCj4gKwkvKiBJZiB3ZSBoYXZlIGZhaWxlZCB0 byBlbmFibGUgT1NJIG1vZGUsIHRoZW4gYWJvcnQgcG93ZXIgb2ZmLiAqLwo+ICsJaWYgKHBzY2lf aGFzX29zaV9zdXBwb3J0KCkgJiYgIW9zaV9tb2RlX2VuYWJsZWQpCj4gKwkJcmV0dXJuIC1FQlVT WTsKCkknbSBub3Qgc3VyZSBFQlVTWSBpcyB0aGUgYmVzdCBlcnJvciBjb2RlIHRvIGRlc2NyaWJl IHRoaXMgc2l0dWF0aW9uLgpNYXkgYmUgRU5PVFNVUCA/CgpIb3dldmVyLCBob3cgcG9zc2libGUg aXMgaXQgdG8gcGFzcyBpbiB0aGlzIGZ1bmN0aW9uIGlmIHRoZSBPU0kgbW9kZSB3YXMKbm90IGVu YWJsZWQgPwoKPiArCWlmICghc3RhdGUtPmRhdGEpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJLyog V2hlbiBPU0kgbW9kZSBpcyBlbmFibGVkLCBzZXQgdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluIHN0 YXRlLiAqLwo+ICsJcGRfc3RhdGUgPSBzdGF0ZS0+ZGF0YTsKPiArCWNvbXBvc2l0ZV9wZF9zdGF0 ZSA9ICpwZF9zdGF0ZSB8IHBzY2lfZ2V0X2RvbWFpbl9zdGF0ZSgpOwo+ICsJcHNjaV9zZXRfZG9t YWluX3N0YXRlKGNvbXBvc2l0ZV9wZF9zdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgcHNjaV9wZF9wYXJzZV9zdGF0ZV9ub2RlcyhzdHJ1Y3QgZ2VucGRfcG93 ZXJfc3RhdGUgKnN0YXRlcywKPiArCQkJCWludCBzdGF0ZV9jb3VudCkKCl9faW5pdCA/Cgo+ICt7 Cj4gKwlpbnQgaSwgcmV0Owo+ICsJdTMyIHBzY2lfc3RhdGUsICpwc2NpX3N0YXRlX2J1ZjsKPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgc3RhdGVfY291bnQ7IGkrKykgewo+ICsJCXJldCA9IHBzY2lf ZHRfcGFyc2Vfc3RhdGVfbm9kZSh0b19vZl9ub2RlKHN0YXRlc1tpXS5md25vZGUpLAo+ICsJCQkJ CSZwc2NpX3N0YXRlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGZyZWVfc3RhdGU7Cj4gKwo+ ICsJCXBzY2lfc3RhdGVfYnVmID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7Cj4g KwkJaWYgKCFwc2NpX3N0YXRlX2J1Zikgewo+ICsJCQlyZXQgPSAtRU5PTUVNOwo+ICsJCQlnb3Rv IGZyZWVfc3RhdGU7Cj4gKwkJfQo+ICsJCSpwc2NpX3N0YXRlX2J1ZiA9IHBzY2lfc3RhdGU7Cj4g KwkJc3RhdGVzW2ldLmRhdGEgPSBwc2NpX3N0YXRlX2J1ZjsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArCj4gK2ZyZWVfc3RhdGU6Cj4gKwl3aGlsZSAoaSA+PSAwKSB7Cj4gKwkJa2ZyZWUoc3Rh dGVzW2ldLmRhdGEpOwo+ICsJCWktLTsKPiArCX0KCmZvciAoOyBpID49IDA7IGktLSkKCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBzY2lfcGRfcGFyc2Vfc3RhdGVzKHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCj4gKwkJCXN0cnVjdCBnZW5wZF9wb3dlcl9zdGF0ZSAqKnN0 YXRlcywgaW50ICpzdGF0ZV9jb3VudCkKCl9faW5pdCA/Cgo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCS8qIFBhcnNlIHRoZSBkb21haW4gaWRsZSBzdGF0ZXMuICovCj4gKwlyZXQgPSBvZl9nZW5w ZF9wYXJzZV9pZGxlX3N0YXRlcyhucCwgc3RhdGVzLCBzdGF0ZV9jb3VudCk7Cj4gKwlpZiAocmV0 KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJLyogRmlsbCBvdXQgdGhlIFBTQ0kgc3BlY2lmaWNz IGZvciBlYWNoIGZvdW5kIHN0YXRlLiAqLwo+ICsJcmV0ID0gcHNjaV9wZF9wYXJzZV9zdGF0ZV9u b2Rlcygqc3RhdGVzLCAqc3RhdGVfY291bnQpOwo+ICsJaWYgKHJldCkKPiArCQlrZnJlZSgqc3Rh dGVzKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBzY2lfcGRf aW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQoKX19pbml0ID8KCj4gK3sKPiArCXN0cnVjdCBn ZW5lcmljX3BtX2RvbWFpbiAqcGQ7Cj4gKwlzdHJ1Y3QgcHNjaV9wZF9wcm92aWRlciAqcGRfcHJv dmlkZXI7Cj4gKwlzdHJ1Y3QgZGV2X3Bvd2VyX2dvdmVybm9yICpwZF9nb3Y7Cj4gKwlzdHJ1Y3Qg Z2VucGRfcG93ZXJfc3RhdGUgKnN0YXRlcyA9IE5VTEw7Cj4gKwlpbnQgaSwgcmV0ID0gLUVOT01F TSwgc3RhdGVfY291bnQgPSAwOwo+ICsKPiArCXBkID0ga3phbGxvYyhzaXplb2YoKnBkKSwgR0ZQ X0tFUk5FTCk7Cj4gKwlpZiAoIXBkKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXBkX3Byb3ZpZGVy ID0ga3phbGxvYyhzaXplb2YoKnBkX3Byb3ZpZGVyKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXBk X3Byb3ZpZGVyKQo+ICsJCWdvdG8gZnJlZV9wZDsKPiArCj4gKwlwZC0+bmFtZSA9IGthc3ByaW50 ZihHRlBfS0VSTkVMLCAiJXBPRiIsIG5wKTsKPiArCWlmICghcGQtPm5hbWUpCj4gKwkJZ290byBm cmVlX3BkX3Byb3Y7Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBPU0kgbW9kZSwgcGFyc2UgdGhlIGRv bWFpbiBpZGxlIHN0YXRlcyBhbmQgbGV0IGdlbnBkIG1hbmFnZSB0aGUKPiArCSAqIHN0YXRlIHNl bGVjdGlvbiBmb3IgdGhvc2UgYmVpbmcgY29tcGF0aWJsZSB3aXRoICJkb21haW4taWRsZS1zdGF0 ZSIuCj4gKwkgKi8KPiArCWlmIChwc2NpX2hhc19vc2lfc3VwcG9ydCgpKSB7Cj4gKwkJcmV0ID0g cHNjaV9wZF9wYXJzZV9zdGF0ZXMobnAsICZzdGF0ZXMsICZzdGF0ZV9jb3VudCk7Cj4gKwkJaWYg KHJldCkKPiArCQkJZ290byBmcmVlX25hbWU7Cj4gKwl9Cj4gKwo+ICsJcGQtPm5hbWUgPSBrYmFz ZW5hbWUocGQtPm5hbWUpOwo+ICsJcGQtPnBvd2VyX29mZiA9IHBzY2lfcGRfcG93ZXJfb2ZmOwo+ ICsJcGQtPnN0YXRlcyA9IHN0YXRlczsKPiArCXBkLT5zdGF0ZV9jb3VudCA9IHN0YXRlX2NvdW50 Owo+ICsJcGQtPmZsYWdzIHw9IEdFTlBEX0ZMQUdfSVJRX1NBRkUgfCBHRU5QRF9GTEFHX0NQVV9E T01BSU47Cj4gKwo+ICsJLyogVXNlIGdvdmVybm9yIGZvciBDUFUgUE0gZG9tYWlucyBpZiBpdCBo YXMgc29tZSBzdGF0ZXMgdG8gbWFuYWdlLiAqLwo+ICsJcGRfZ292ID0gc3RhdGVfY291bnQgPiAw ID8gJnBtX2RvbWFpbl9jcHVfZ292IDogTlVMTDsKPiArCj4gKwlyZXQgPSBwbV9nZW5wZF9pbml0 KHBkLCBwZF9nb3YsIGZhbHNlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBmcmVlX3N0YXRlOwo+ ICsKPiArCXJldCA9IG9mX2dlbnBkX2FkZF9wcm92aWRlcl9zaW1wbGUobnAsIHBkKTsKPiArCWlm IChyZXQpCj4gKwkJZ290byByZW1vdmVfcGQ7Cj4gKwo+ICsJcGRfcHJvdmlkZXItPm5vZGUgPSBv Zl9ub2RlX2dldChucCk7Cj4gKwlsaXN0X2FkZCgmcGRfcHJvdmlkZXItPmxpbmssICZwc2NpX3Bk X3Byb3ZpZGVycyk7Cj4gKwo+ICsJcHJfZGVidWcoImluaXQgUE0gZG9tYWluICVzXG4iLCBwZC0+ bmFtZSk7Cj4gKwlyZXR1cm4gMDsKPiArCj4gK3JlbW92ZV9wZDoKPiArCXBtX2dlbnBkX3JlbW92 ZShwZCk7Cj4gK2ZyZWVfc3RhdGU6Cj4gKwlmb3IgKGkgPSAwOyBpIDwgc3RhdGVfY291bnQ7IGkr KykKPiArCQlrZnJlZShzdGF0ZXNbaV0uZGF0YSk7Cj4gKwlrZnJlZShzdGF0ZXMpOwo+ICtmcmVl X25hbWU6Cj4gKwlrZnJlZShwZC0+bmFtZSk7Cj4gK2ZyZWVfcGRfcHJvdjoKPiArCWtmcmVlKHBk X3Byb3ZpZGVyKTsKPiArZnJlZV9wZDoKPiArCWtmcmVlKHBkKTsKPiArb3V0Ogo+ICsJcHJfZXJy KCJmYWlsZWQgdG8gaW5pdCBQTSBkb21haW4gcmV0PSVkICVwT0ZcbiIsIHJldCwgbnApOwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcHNjaV9wZF9yZW1vdmUodm9pZCkK PiArewo+ICsJc3RydWN0IHBzY2lfcGRfcHJvdmlkZXIgKnBkX3Byb3ZpZGVyLCAqaXQ7Cj4gKwlz dHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkOwo+ICsJaW50IGk7Cj4gKwo+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHBkX3Byb3ZpZGVyLCBpdCwgJnBzY2lfcGRfcHJvdmlkZXJzLCBs aW5rKSB7Cj4gKwkJb2ZfZ2VucGRfZGVsX3Byb3ZpZGVyKHBkX3Byb3ZpZGVyLT5ub2RlKTsKPiAr Cj4gKwkJZ2VucGQgPSBvZl9nZW5wZF9yZW1vdmVfbGFzdChwZF9wcm92aWRlci0+bm9kZSk7Cj4g KwkJaWYgKCFJU19FUlIoZ2VucGQpKSB7Cj4gKwkJCWZvciAoaSA9IDA7IGkgPCBnZW5wZC0+c3Rh dGVfY291bnQ7IGkrKykKPiArCQkJCWtmcmVlKGdlbnBkLT5zdGF0ZXNbaV0uZGF0YSk7Cj4gKwkJ CWtmcmVlKGdlbnBkLT5zdGF0ZXMpOwo+ICsJCQlrZnJlZShnZW5wZCk7Cj4gKwkJfQo+ICsKPiAr CQlvZl9ub2RlX3B1dChwZF9wcm92aWRlci0+bm9kZSk7Cj4gKwkJbGlzdF9kZWwoJnBkX3Byb3Zp ZGVyLT5saW5rKTsKPiArCQlrZnJlZShwZF9wcm92aWRlcik7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgcHNjaV9wZF9pbml0X3RvcG9sb2d5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCgpf X2luaXQgPwoKPiArewo+ICsJc3RydWN0IGRldmljZV9ub2RlICpub2RlOwo+ICsJc3RydWN0IG9m X3BoYW5kbGVfYXJncyBjaGlsZCwgcGFyZW50Owo+ICsJaW50IHJldDsKPiArCj4gKwlmb3JfZWFj aF9jaGlsZF9vZl9ub2RlKG5wLCBub2RlKSB7Cj4gKwkJaWYgKG9mX3BhcnNlX3BoYW5kbGVfd2l0 aF9hcmdzKG5vZGUsICJwb3dlci1kb21haW5zIiwKPiArCQkJCQkiI3Bvd2VyLWRvbWFpbi1jZWxs cyIsIDAsICZwYXJlbnQpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJY2hpbGQubnAgPSBub2Rl Owo+ICsJCWNoaWxkLmFyZ3NfY291bnQgPSAwOwo+ICsKPiArCQlyZXQgPSBvZl9nZW5wZF9hZGRf c3ViZG9tYWluKCZwYXJlbnQsICZjaGlsZCk7Cj4gKwkJb2Zfbm9kZV9wdXQocGFyZW50Lm5wKTsK PiArCQlpZiAocmV0KSB7Cj4gKwkJCW9mX25vZGVfcHV0KG5vZGUpOwo+ICsJCQlyZXR1cm4gcmV0 Owo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IHBzY2lfZHRf aW5pdF9wbV9kb21haW5zKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCgpfX2luaXQgPwoKPiArewo+ ICsJc3RydWN0IGRldmljZV9ub2RlICpub2RlOwo+ICsJaW50IHJldCwgcGRfY291bnQgPSAwOwo+ ICsKPiArCS8qCj4gKwkgKiBQYXJzZSBjaGlsZCBub2RlcyBmb3IgdGhlICIjcG93ZXItZG9tYWlu LWNlbGxzIiBwcm9wZXJ0eSBhbmQKPiArCSAqIGluaXRpYWxpemUgYSBnZW5wZC9nZW5wZC1vZi1w cm92aWRlciBwYWlyIHdoZW4gaXQncyBmb3VuZC4KPiArCSAqLwo+ICsJZm9yX2VhY2hfY2hpbGRf b2Zfbm9kZShucCwgbm9kZSkgewo+ICsJCWlmICghb2ZfZmluZF9wcm9wZXJ0eShub2RlLCAiI3Bv d2VyLWRvbWFpbi1jZWxscyIsIE5VTEwpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJcmV0ID0g cHNjaV9wZF9pbml0KG5vZGUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gcHV0X25vZGU7Cj4g Kwo+ICsJCXBkX2NvdW50Kys7Cj4gKwl9Cj4gKwo+ICsJLyogQmFpbCBvdXQgaWYgbm90IHVzaW5n IHRoZSBoaWVyYXJjaGljYWwgQ1BVIHRvcG9sb2d5LiAqLwo+ICsJaWYgKCFwZF9jb3VudCkKPiAr CQlyZXR1cm4gMDsKPiArCj4gKwkvKiBMaW5rIGdlbnBkIG1hc3RlcnMvc3ViZG9tYWlucyB0byBt b2RlbCB0aGUgQ1BVIHRvcG9sb2d5LiAqLwo+ICsJcmV0ID0gcHNjaV9wZF9pbml0X3RvcG9sb2d5 KG5wKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byByZW1vdmVfcGQ7Cj4gKwo+ICsJLyogVHJ5IHRv IGVuYWJsZSBPU0kgbW9kZSBpZiBzdXBwb3J0ZWQuICovCj4gKwlpZiAocHNjaV9oYXNfb3NpX3N1 cHBvcnQoKSkKPiArCQlvc2lfbW9kZV9lbmFibGVkID0gcHNjaV9zZXRfb3NpX21vZGUoKTsKPiAr Cj4gKwlwcl9pbmZvKCJJbml0aWFsaXplZCBDUFUgUE0gZG9tYWluIHRvcG9sb2d5XG4iKTsKPiAr CXJldHVybiBwZF9jb3VudDsKPiArCj4gK3B1dF9ub2RlOgo+ICsJb2Zfbm9kZV9wdXQobm9kZSk7 Cj4gK3JlbW92ZV9wZDoKPiArCWlmIChwZF9jb3VudCkKPiArCQlwc2NpX3BkX3JlbW92ZSgpOwo+ ICsJcHJfZXJyKCJmYWlsZWQgdG8gY3JlYXRlIENQVSBQTSBkb21haW5zIHJldD0lZFxuIiwgcmV0 KTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArI2VuZGlmCj4gCgoKLS0gCiA8aHR0cDovL3d3dy5s aW5hcm8ub3JnLz4gTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBT b0NzCgpGb2xsb3cgTGluYXJvOiAgPGh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3BhZ2VzL0xpbmFy bz4gRmFjZWJvb2sgfAo8aHR0cDovL3R3aXR0ZXIuY29tLyMhL2xpbmFyb29yZz4gVHdpdHRlciB8 CjxodHRwOi8vd3d3LmxpbmFyby5vcmcvbGluYXJvLWJsb2cvPiBCbG9nCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=