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 39591C77B75 for ; Wed, 19 Apr 2023 15:10:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=9xYRx4lxSwrTz8KomOP3X7PYWUvothv5g/ZoMajkQIs=; b=pwXucDshV0Vbz/6B/ERc97rOUj 0Yj+VHpmFXzEsytnOM11tcmUbvmFndOTp4dVbuVhbAQ9jPZoD5XVKZ6QHfMBCTr9owb8VcMlxHJNQ wye2UvrQq9jZi7PmsAq+Bljxab5OO+0jJagoAeRFV8otIssw4YUSlXHx8tkk4eDBjYAd4/UUMwW8V D/aoEgHz2kGPgDY4TtSTDXelPtiS4t305jlzpOV3RT7d5PXd3Uh3dh2LibwUpTV2oFGlu2X6OdKKB d6snUT44dWkLoU29ZsTTOg0pQfNn8MVWZLtFUfY+yp2GPtwuhaEeUw2lhidzRR2Q0lS0gqKRRRSWt 9r2KjRWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp9RU-005kSB-0H; Wed, 19 Apr 2023 15:09:56 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pp9RQ-005kQu-1z for linux-mediatek@lists.infradead.org; Wed, 19 Apr 2023 15:09:54 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-52160f75920so229584a12.2 for ; Wed, 19 Apr 2023 08:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1681916990; x=1684508990; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=9xYRx4lxSwrTz8KomOP3X7PYWUvothv5g/ZoMajkQIs=; b=sXPBCslnv6R9uVZX7Gq3xtSsKpgzb0/01i98xXOZQx+KbP4KqVddhPYdcEVIH92o4/ pmZSEaoq7K27ohwgJ+wenSjn0dMQerb+uCo2ZucB/ttrkOH+5nH3PbagzZ3PTu4MLinA TuKX/J6WZKuecdQ+SbtWPDBxIT9YSQFdk9EpXU82KxmWB7eepY+FOWYRQZw89n6lAOaK XrVRagqX0pIaFphG3FrY/Kf+S15ViKgyd1zdDEgbm2ZGDCRg5ygwZkCfIxnA/TylLYqo kupYb4zacsCkJMBL3td7FdPMMyd0LNOaVeCVWWXhum1Qx2Kzg3cACS2tSOJI8K/kMrPz X4Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681916990; x=1684508990; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9xYRx4lxSwrTz8KomOP3X7PYWUvothv5g/ZoMajkQIs=; b=FTvkajl1UrlPCu1irXJJtTufoorFMqrEnTZfXzvWk1lsnDXhfrLSaGx02O2fSEFpEY mdFVJ6QiWkSAGVI4b0KQ+YFOG/c9hHsC2lIzcDkASd/BiIs3qepu5fHllTib0UhjzaIa a0tCh578DLYgN55g+dfnpo/2u+cS1CpkKTH3u7FhD0rlhjCIoQayJB1NTgybfrEFtmIs CZuofYNlebTZlmg9gCE8QX5ZM+C9coQdtylm97oT244ZMJKXhkQ/mHhOK7rLi9V7ZRWK OSF4h91MOx1Dr+mCsvBszxtIzAF4/fOSe1CUQ6xbcUc/WZfDLwIkPY2Bf3cibcGh5nr1 OwJw== X-Gm-Message-State: AAQBX9fMIbY+FTaF3tJIX1WuweMDk9NoCDf0Cf86koh4KZ4ED4bEjLAz NOLTseY7PGFVrLrFE75gcc6Few== X-Google-Smtp-Source: AKy350ZOsj/rgDa7m85kCFSt/yyAxPXdtikhF0MU23Wn0WjNTH8dh6EXRwbGslBJniiqLHyCe3xjGQ== X-Received: by 2002:a17:90a:72c8:b0:246:9bad:2354 with SMTP id l8-20020a17090a72c800b002469bad2354mr3110204pjk.43.1681916990193; Wed, 19 Apr 2023 08:09:50 -0700 (PDT) Received: from p14s ([2604:3d09:148c:c800:302c:551a:91d2:840f]) by smtp.gmail.com with ESMTPSA id ip11-20020a17090b314b00b00246626343aesm1541885pjb.25.2023.04.19.08.09.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 08:09:49 -0700 (PDT) Date: Wed, 19 Apr 2023 09:09:47 -0600 From: Mathieu Poirier To: TingHan Shen =?utf-8?B?KOayiOW7t+e/sCk=?= Cc: "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "linux-remoteproc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , Project_Global_Chrome_Upstream_Group , "linux-arm-kernel@lists.infradead.org" , "krzysztof.kozlowski+dt@linaro.org" , "matthias.bgg@gmail.com" , "andersson@kernel.org" , "angelogioacchino.delregno@collabora.com" Subject: Re: [PATCH v9 05/11] remoteproc: mediatek: Extract remoteproc initialization flow Message-ID: References: <20230328022733.29910-1-tinghan.shen@mediatek.com> <20230328022733.29910-6-tinghan.shen@mediatek.com> <20230331174431.GA3504605@p14s> <46baff1f95fa13976d7a07b5e50ff2175e464baa.camel@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <46baff1f95fa13976d7a07b5e50ff2175e464baa.camel@mediatek.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_080953_114883_28B45C19 X-CRM114-Status: GOOD ( 34.01 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Wed, Apr 19, 2023 at 03:38:14AM +0000, TingHan Shen (沈廷翰) wrote: > Hi Mathieu, > > On Fri, 2023-03-31 at 11:44 -0600, Mathieu Poirier wrote: > > External email : Please do not click links or open attachments until you have verified the sender or the content. > > > > > > On Tue, Mar 28, 2023 at 10:27:27AM +0800, Tinghan Shen wrote: > > > This is the preparation for probing multi-core SCP. The remoteproc > > > initialization flow is similar on cores and is reused to avoid > > > redundant code. > > > > > > The registers of config and l1tcm are shared for multi-core > > > SCP. Reuse the mapped addresses for all cores. > > > > > > Signed-off-by: Tinghan Shen > > > Reviewed-by: AngeloGioacchino Del Regno > > > --- > > > drivers/remoteproc/mtk_scp.c | 64 +++++++++++++++++++++++++----------- > > > 1 file changed, 45 insertions(+), 19 deletions(-) > > > > > > diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c > > > index a3b9bc158cd9..32ecd1450c6f 100644 > > > --- a/drivers/remoteproc/mtk_scp.c > > > +++ b/drivers/remoteproc/mtk_scp.c > > > @@ -23,6 +23,13 @@ > > > #define MAX_CODE_SIZE 0x500000 > > > #define SECTION_NAME_IPI_BUFFER ".ipi_buffer" > > > > > > +struct mtk_scp_of_regs { > > > + void __iomem *reg_base; > > > + void __iomem *l1tcm_base; > > > + size_t l1tcm_size; > > > + phys_addr_t l1tcm_phys; > > > +}; > > > + > > > > This should represent the cluster with a list of mtk_scp instead of @cluster_cores as > > introduced in the next patch. > > If I'm understanding you correctly, you're suggesting that @cluster_cores should be included > as a member of this structure. Is that correct? Correct. Than this structure is allocated in probe() and added as driver data for the platform device. Its name should also be something like mtk_scp_cluster or something like that. I suggest you look at what has been done in ti_k3_r5_remoteproc.c, your end design should be quite similar to that. In fact you are close but a few things need to be addressed. > > Best regards, > TingHan > > > > > > /** > > > * scp_get() - get a reference to SCP. > > > * > > > @@ -855,7 +862,8 @@ static void scp_remove_rpmsg_subdev(struct mtk_scp *scp) > > > } > > > } > > > > > > -static int scp_probe(struct platform_device *pdev) > > > +static int scp_rproc_init(struct platform_device *pdev, > > > + struct mtk_scp_of_regs *of_regs) > > > { > > > struct device *dev = &pdev->dev; > > > struct device_node *np = dev->of_node; > > > @@ -879,6 +887,11 @@ static int scp_probe(struct platform_device *pdev) > > > scp->data = of_device_get_match_data(dev); > > > platform_set_drvdata(pdev, scp); > > > > > > + scp->reg_base = of_regs->reg_base; > > > + scp->l1tcm_base = of_regs->l1tcm_base; > > > + scp->l1tcm_size = of_regs->l1tcm_size; > > > + scp->l1tcm_phys = of_regs->l1tcm_phys; > > > + > > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sram"); > > > scp->sram_base = devm_ioremap_resource(dev, res); > > > if (IS_ERR(scp->sram_base)) > > > @@ -888,24 +901,6 @@ static int scp_probe(struct platform_device *pdev) > > > scp->sram_size = resource_size(res); > > > scp->sram_phys = res->start; > > > > > > - /* l1tcm is an optional memory region */ > > > - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "l1tcm"); > > > - scp->l1tcm_base = devm_ioremap_resource(dev, res); > > > - if (IS_ERR(scp->l1tcm_base)) { > > > - ret = PTR_ERR(scp->l1tcm_base); > > > - if (ret != -EINVAL) { > > > - return dev_err_probe(dev, ret, "Failed to map l1tcm memory\n"); > > > - } > > > - } else { > > > > scp->l1tcm_base = NULL; > > > > > - scp->l1tcm_size = resource_size(res); > > > - scp->l1tcm_phys = res->start; > > > - } > > > - > > > - scp->reg_base = devm_platform_ioremap_resource_byname(pdev, "cfg"); > > > - if (IS_ERR(scp->reg_base)) > > > - return dev_err_probe(dev, PTR_ERR(scp->reg_base), > > > - "Failed to parse and map cfg memory\n"); > > > - > > > ret = scp->data->scp_clk_get(scp); > > > if (ret) > > > return ret; > > > @@ -957,6 +952,37 @@ static int scp_probe(struct platform_device *pdev) > > > return ret; > > > } > > > > > > +static int scp_probe(struct platform_device *pdev) > > > +{ > > > + struct device *dev = &pdev->dev; > > > + struct mtk_scp_of_regs scp_regs; > > > + struct resource *res; > > > + int ret; > > > + > > > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg"); > > > + scp_regs.reg_base = devm_ioremap_resource(dev, res); > > > + if (IS_ERR(scp_regs.reg_base)) > > > + return dev_err_probe(dev, PTR_ERR(scp_regs.reg_base), > > > + "Failed to parse and map cfg memory\n"); > > > + > > > + /* l1tcm is an optional memory region */ > > > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "l1tcm"); > > > + scp_regs.l1tcm_base = devm_ioremap_resource(dev, res); > > > + if (IS_ERR(scp_regs.l1tcm_base)) { > > > + ret = PTR_ERR(scp_regs.l1tcm_base); > > > + if (ret != -EINVAL) > > > + return dev_err_probe(dev, ret, "Failed to map l1tcm memory\n"); > > > + > > > + scp_regs.l1tcm_size = 0; > > > + scp_regs.l1tcm_phys = 0; > > > + } else { > > > + scp_regs.l1tcm_size = resource_size(res); > > > + scp_regs.l1tcm_phys = res->start; > > > + } > > > + > > > + return scp_rproc_init(pdev, &scp_regs); > > > +} > > > + > > > static int scp_remove(struct platform_device *pdev) > > > { > > > struct mtk_scp *scp = platform_get_drvdata(pdev); > > > -- > > > 2.18.0 > > > > > -- > Best regards, > TingHan 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 A7FCEC77B73 for ; Wed, 19 Apr 2023 15:10:51 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tPwFbtN8aVxeqVN6XgvGH90ktNppJyALgdJstXYdrrA=; b=K9iAuOl4NTcH9E BaVfXzGbOEAUiKO7r88Lvx86+fsZOZ94oZkrV2LMZKjYJRo5QYCbgVszHSGBpTImdZkoX7XvSjCOh EVxocYDHT1WSGVAGx9z6OMqDzkbvHTU7AAjC/2E/wcl6YtAEvN9/CdboVXH1Tuoe5rDxl/USo30Oo EFyabs4e51gezIR+4N6HSyMivV4UuMBanib/nZxiGf/TuTgo3e9PefpXX1XCm6yGElhEsKAZmURHu sCywEnI8CEp6UsziKQKCJXpjduOeUzQvJ+rhC4b2X9DKoN4RcX9hhx5c3VSH8jkqEXCzt4yg2CnFt gXOaJ5YClLbkNXQP8y6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pp9RU-005kSG-1y; Wed, 19 Apr 2023 15:09:56 +0000 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pp9RR-005kQt-1t for linux-arm-kernel@lists.infradead.org; Wed, 19 Apr 2023 15:09:55 +0000 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-517bdd9957dso2854977a12.1 for ; Wed, 19 Apr 2023 08:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1681916990; x=1684508990; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=9xYRx4lxSwrTz8KomOP3X7PYWUvothv5g/ZoMajkQIs=; b=sXPBCslnv6R9uVZX7Gq3xtSsKpgzb0/01i98xXOZQx+KbP4KqVddhPYdcEVIH92o4/ pmZSEaoq7K27ohwgJ+wenSjn0dMQerb+uCo2ZucB/ttrkOH+5nH3PbagzZ3PTu4MLinA TuKX/J6WZKuecdQ+SbtWPDBxIT9YSQFdk9EpXU82KxmWB7eepY+FOWYRQZw89n6lAOaK XrVRagqX0pIaFphG3FrY/Kf+S15ViKgyd1zdDEgbm2ZGDCRg5ygwZkCfIxnA/TylLYqo kupYb4zacsCkJMBL3td7FdPMMyd0LNOaVeCVWWXhum1Qx2Kzg3cACS2tSOJI8K/kMrPz X4Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681916990; x=1684508990; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9xYRx4lxSwrTz8KomOP3X7PYWUvothv5g/ZoMajkQIs=; b=DzUKikQFVBbNB6PnkRlMYzLyHxo65FecKlECv9BuAHGpO/jjGsRR5ckA97k3TODqMp 1IlMSBaBG83rXMxD/caL4KtTtb7qs5WoOqhU2iBEwh7l9UjNsvA8gYKrSaphCGReGHQb kkA2O+/g+vD64cOJO0uKPWj/fmuRhrFajD7rFYi4boxXt7VYDG1BUZSlBu3oGYZn2qvH jpK/aMedvlvj1Bg9ySlApuEQ+VdO5wOW6FrVhOXqvXOP52AhCJxvM4KEtKP1xd2mnhKc hsaapIRTSoqbr35Ko3QZq6+Z/8zjViV8ZUpmg9kiT+tPPqpa5qndGghd7N34piRlV/oM 3fCA== X-Gm-Message-State: AAQBX9eI5pDpD+ZNVHrdjc03SXbb6HdCKrjBotE5rf+MYKwmrAcRmCVR IAyW45+uQYLw89OkiL9kfJqIjw== X-Google-Smtp-Source: AKy350ZOsj/rgDa7m85kCFSt/yyAxPXdtikhF0MU23Wn0WjNTH8dh6EXRwbGslBJniiqLHyCe3xjGQ== X-Received: by 2002:a17:90a:72c8:b0:246:9bad:2354 with SMTP id l8-20020a17090a72c800b002469bad2354mr3110204pjk.43.1681916990193; Wed, 19 Apr 2023 08:09:50 -0700 (PDT) Received: from p14s ([2604:3d09:148c:c800:302c:551a:91d2:840f]) by smtp.gmail.com with ESMTPSA id ip11-20020a17090b314b00b00246626343aesm1541885pjb.25.2023.04.19.08.09.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 08:09:49 -0700 (PDT) Date: Wed, 19 Apr 2023 09:09:47 -0600 From: Mathieu Poirier To: TingHan Shen =?utf-8?B?KOayiOW7t+e/sCk=?= Cc: "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "linux-remoteproc@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , Project_Global_Chrome_Upstream_Group , "linux-arm-kernel@lists.infradead.org" , "krzysztof.kozlowski+dt@linaro.org" , "matthias.bgg@gmail.com" , "andersson@kernel.org" , "angelogioacchino.delregno@collabora.com" Subject: Re: [PATCH v9 05/11] remoteproc: mediatek: Extract remoteproc initialization flow Message-ID: References: <20230328022733.29910-1-tinghan.shen@mediatek.com> <20230328022733.29910-6-tinghan.shen@mediatek.com> <20230331174431.GA3504605@p14s> <46baff1f95fa13976d7a07b5e50ff2175e464baa.camel@mediatek.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <46baff1f95fa13976d7a07b5e50ff2175e464baa.camel@mediatek.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230419_080953_621832_0452A95E X-CRM114-Status: GOOD ( 35.25 ) 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 T24gV2VkLCBBcHIgMTksIDIwMjMgYXQgMDM6Mzg6MTRBTSArMDAwMCwgVGluZ0hhbiBTaGVuICjm sojlu7fnv7ApIHdyb3RlOgo+IEhpIE1hdGhpZXUsCj4gCj4gT24gRnJpLCAyMDIzLTAzLTMxIGF0 IDExOjQ0IC0wNjAwLCBNYXRoaWV1IFBvaXJpZXIgd3JvdGU6Cj4gPiBFeHRlcm5hbCBlbWFpbCA6 IFBsZWFzZSBkbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bnRpbCB5b3Ug aGF2ZSB2ZXJpZmllZCB0aGUgc2VuZGVyIG9yIHRoZSBjb250ZW50Lgo+ID4gCj4gPiAKPiA+IE9u IFR1ZSwgTWFyIDI4LCAyMDIzIGF0IDEwOjI3OjI3QU0gKzA4MDAsIFRpbmdoYW4gU2hlbiB3cm90 ZToKPiA+ID4gVGhpcyBpcyB0aGUgcHJlcGFyYXRpb24gZm9yIHByb2JpbmcgbXVsdGktY29yZSBT Q1AuIFRoZSByZW1vdGVwcm9jCj4gPiA+IGluaXRpYWxpemF0aW9uIGZsb3cgaXMgc2ltaWxhciBv biBjb3JlcyBhbmQgaXMgcmV1c2VkIHRvIGF2b2lkCj4gPiA+IHJlZHVuZGFudCBjb2RlLgo+ID4g PiAKPiA+ID4gVGhlIHJlZ2lzdGVycyBvZiBjb25maWcgYW5kIGwxdGNtIGFyZSBzaGFyZWQgZm9y IG11bHRpLWNvcmUKPiA+ID4gU0NQLiBSZXVzZSB0aGUgbWFwcGVkIGFkZHJlc3NlcyBmb3IgYWxs IGNvcmVzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogVGluZ2hhbiBTaGVuIDx0aW5naGFu LnNoZW5AbWVkaWF0ZWsuY29tPgo+ID4gPiBSZXZpZXdlZC1ieTogQW5nZWxvR2lvYWNjaGlubyBE ZWwgUmVnbm8gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4KPiA+ID4g LS0tCj4gPiA+ICBkcml2ZXJzL3JlbW90ZXByb2MvbXRrX3NjcC5jIHwgNjQgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0 aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9yZW1vdGVwcm9jL210a19zY3AuYyBiL2RyaXZlcnMvcmVtb3RlcHJvYy9tdGtfc2NwLmMKPiA+ ID4gaW5kZXggYTNiOWJjMTU4Y2Q5Li4zMmVjZDE0NTBjNmYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2Ry aXZlcnMvcmVtb3RlcHJvYy9tdGtfc2NwLmMKPiA+ID4gKysrIGIvZHJpdmVycy9yZW1vdGVwcm9j L210a19zY3AuYwo+ID4gPiBAQCAtMjMsNiArMjMsMTMgQEAKPiA+ID4gICNkZWZpbmUgTUFYX0NP REVfU0laRSAweDUwMDAwMAo+ID4gPiAgI2RlZmluZSBTRUNUSU9OX05BTUVfSVBJX0JVRkZFUiAi LmlwaV9idWZmZXIiCj4gPiA+IAo+ID4gPiArc3RydWN0IG10a19zY3Bfb2ZfcmVncyB7Cj4gPiA+ ICsgICAgIHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7Cj4gPiA+ICsgICAgIHZvaWQgX19pb21lbSAq bDF0Y21fYmFzZTsKPiA+ID4gKyAgICAgc2l6ZV90IGwxdGNtX3NpemU7Cj4gPiA+ICsgICAgIHBo eXNfYWRkcl90IGwxdGNtX3BoeXM7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiAKPiA+IFRoaXMgc2hv dWxkIHJlcHJlc2VudCB0aGUgY2x1c3RlciB3aXRoIGEgbGlzdCBvZiBtdGtfc2NwIGluc3RlYWQg b2YgQGNsdXN0ZXJfY29yZXMgYXMKPiA+IGludHJvZHVjZWQgaW4gdGhlIG5leHQgcGF0Y2guCj4g Cj4gSWYgSSdtIHVuZGVyc3RhbmRpbmcgeW91IGNvcnJlY3RseSwgeW91J3JlIHN1Z2dlc3Rpbmcg dGhhdCBAY2x1c3Rlcl9jb3JlcyBzaG91bGQgYmUgaW5jbHVkZWQgCj4gYXMgYSBtZW1iZXIgb2Yg dGhpcyBzdHJ1Y3R1cmUuIElzIHRoYXQgY29ycmVjdD8KCkNvcnJlY3QuICBUaGFuIHRoaXMgc3Ry dWN0dXJlIGlzIGFsbG9jYXRlZCBpbiBwcm9iZSgpIGFuZCBhZGRlZCBhcyBkcml2ZXIgZGF0YQpm b3IgdGhlIHBsYXRmb3JtIGRldmljZS4gIEl0cyBuYW1lIHNob3VsZCBhbHNvIGJlIHNvbWV0aGlu ZyBsaWtlCm10a19zY3BfY2x1c3RlciBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiAgSSBzdWdnZXN0 IHlvdSBsb29rIGF0IHdoYXQgaGFzIGJlZW4KZG9uZSBpbiB0aV9rM19yNV9yZW1vdGVwcm9jLmMs IHlvdXIgZW5kIGRlc2lnbiBzaG91bGQgYmUgcXVpdGUgc2ltaWxhciB0byB0aGF0LgpJbiBmYWN0 IHlvdSBhcmUgY2xvc2UgYnV0IGEgZmV3IHRoaW5ncyBuZWVkIHRvIGJlIGFkZHJlc3NlZC4KCj4g Cj4gQmVzdCByZWdhcmRzLAo+IFRpbmdIYW4KPiAKPiA+IAo+ID4gPiAgLyoqCj4gPiA+ICAgKiBz Y3BfZ2V0KCkgLSBnZXQgYSByZWZlcmVuY2UgdG8gU0NQLgo+ID4gPiAgICoKPiA+ID4gQEAgLTg1 NSw3ICs4NjIsOCBAQCBzdGF0aWMgdm9pZCBzY3BfcmVtb3ZlX3JwbXNnX3N1YmRldihzdHJ1Y3Qg bXRrX3NjcCAqc2NwKQo+ID4gPiAgICAgICB9Cj4gPiA+ICB9Cj4gPiA+IAo+ID4gPiAtc3RhdGlj IGludCBzY3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gK3N0YXRp YyBpbnQgc2NwX3Jwcm9jX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG10a19zY3Bfb2ZfcmVncyAqb2ZfcmVncykK PiA+ID4gIHsKPiA+ID4gICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiA+ ID4gICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiA+ID4gQEAg LTg3OSw2ICs4ODcsMTEgQEAgc3RhdGljIGludCBzY3BfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiA+ID4gICAgICAgc2NwLT5kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9k YXRhKGRldik7Cj4gPiA+ICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHNjcCk7Cj4g PiA+IAo+ID4gPiArICAgICBzY3AtPnJlZ19iYXNlID0gb2ZfcmVncy0+cmVnX2Jhc2U7Cj4gPiA+ ICsgICAgIHNjcC0+bDF0Y21fYmFzZSA9IG9mX3JlZ3MtPmwxdGNtX2Jhc2U7Cj4gPiA+ICsgICAg IHNjcC0+bDF0Y21fc2l6ZSA9IG9mX3JlZ3MtPmwxdGNtX3NpemU7Cj4gPiA+ICsgICAgIHNjcC0+ bDF0Y21fcGh5cyA9IG9mX3JlZ3MtPmwxdGNtX3BoeXM7Cj4gPiA+ICsKPiA+ID4gICAgICAgcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgInNy YW0iKTsKPiA+ID4gICAgICAgc2NwLT5zcmFtX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2Uo ZGV2LCByZXMpOwo+ID4gPiAgICAgICBpZiAoSVNfRVJSKHNjcC0+c3JhbV9iYXNlKSkKPiA+ID4g QEAgLTg4OCwyNCArOTAxLDYgQEAgc3RhdGljIGludCBzY3BfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiA+ID4gICAgICAgc2NwLT5zcmFtX3NpemUgPSByZXNvdXJjZV9zaXpl KHJlcyk7Cj4gPiA+ICAgICAgIHNjcC0+c3JhbV9waHlzID0gcmVzLT5zdGFydDsKPiA+ID4gCj4g PiA+IC0gICAgIC8qIGwxdGNtIGlzIGFuIG9wdGlvbmFsIG1lbW9yeSByZWdpb24gKi8KPiA+ID4g LSAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNF X01FTSwgImwxdGNtIik7Cj4gPiA+IC0gICAgIHNjcC0+bDF0Y21fYmFzZSA9IGRldm1faW9yZW1h cF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4gPiA+IC0gICAgIGlmIChJU19FUlIoc2NwLT5sMXRjbV9i YXNlKSkgewo+ID4gPiAtICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoc2NwLT5sMXRjbV9iYXNl KTsKPiA+ID4gLSAgICAgICAgICAgICBpZiAocmV0ICE9IC1FSU5WQUwpIHsKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRv IG1hcCBsMXRjbSBtZW1vcnlcbiIpOwo+ID4gPiAtICAgICAgICAgICAgIH0KPiA+ID4gLSAgICAg fSBlbHNlIHsKPiA+IAo+ID4gICAgICAgICAgICAgICAgIHNjcC0+bDF0Y21fYmFzZSA9IE5VTEw7 Cj4gPiAKPiA+ID4gLSAgICAgICAgICAgICBzY3AtPmwxdGNtX3NpemUgPSByZXNvdXJjZV9zaXpl KHJlcyk7Cj4gPiA+IC0gICAgICAgICAgICAgc2NwLT5sMXRjbV9waHlzID0gcmVzLT5zdGFydDsK PiA+ID4gLSAgICAgfQo+ID4gPiAtCj4gPiA+IC0gICAgIHNjcC0+cmVnX2Jhc2UgPSBkZXZtX3Bs YXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsICJjZmciKTsKPiA+ID4gLSAgICAg aWYgKElTX0VSUihzY3AtPnJlZ19iYXNlKSkKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoc2NwLT5yZWdfYmFzZSksCj4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBwYXJzZSBhbmQgbWFwIGNmZyBtZW1v cnlcbiIpOwo+ID4gPiAtCj4gPiA+ICAgICAgIHJldCA9IHNjcC0+ZGF0YS0+c2NwX2Nsa19nZXQo c2NwKTsKPiA+ID4gICAgICAgaWYgKHJldCkKPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ID4gPiBAQCAtOTU3LDYgKzk1MiwzNyBAQCBzdGF0aWMgaW50IHNjcF9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAgfQo+ ID4gPiAKPiA+ID4gK3N0YXRpYyBpbnQgc2NwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5k ZXY7Cj4gPiA+ICsgICAgIHN0cnVjdCBtdGtfc2NwX29mX3JlZ3Mgc2NwX3JlZ3M7Cj4gPiA+ICsg ICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ID4gPiArICAgICBpbnQgcmV0Owo+ID4gPiArCj4g PiA+ICsgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNP VVJDRV9NRU0sICJjZmciKTsKPiA+ID4gKyAgICAgc2NwX3JlZ3MucmVnX2Jhc2UgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+ID4gPiArICAgICBpZiAoSVNfRVJSKHNjcF9yZWdz LnJlZ19iYXNlKSkKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYs IFBUUl9FUlIoc2NwX3JlZ3MucmVnX2Jhc2UpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJGYWlsZWQgdG8gcGFyc2UgYW5kIG1hcCBjZmcgbWVtb3J5XG4iKTsKPiA+ ID4gKwo+ID4gPiArICAgICAvKiBsMXRjbSBpcyBhbiBvcHRpb25hbCBtZW1vcnkgcmVnaW9uICov Cj4gPiA+ICsgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9S RVNPVVJDRV9NRU0sICJsMXRjbSIpOwo+ID4gPiArICAgICBzY3BfcmVncy5sMXRjbV9iYXNlID0g ZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKPiA+ID4gKyAgICAgaWYgKElTX0VSUihz Y3BfcmVncy5sMXRjbV9iYXNlKSkgewo+ID4gPiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIo c2NwX3JlZ3MubDF0Y21fYmFzZSk7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCAhPSAtRUlO VkFMKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCByZXQsICJGYWlsZWQgdG8gbWFwIGwxdGNtIG1lbW9yeVxuIik7Cj4gPiA+ICsKPiA+ID4gKyAg ICAgICAgICAgICBzY3BfcmVncy5sMXRjbV9zaXplID0gMDsKPiA+ID4gKyAgICAgICAgICAgICBz Y3BfcmVncy5sMXRjbV9waHlzID0gMDsKPiA+ID4gKyAgICAgfSBlbHNlIHsKPiA+ID4gKyAgICAg ICAgICAgICBzY3BfcmVncy5sMXRjbV9zaXplID0gcmVzb3VyY2Vfc2l6ZShyZXMpOwo+ID4gPiAr ICAgICAgICAgICAgIHNjcF9yZWdzLmwxdGNtX3BoeXMgPSByZXMtPnN0YXJ0Owo+ID4gPiArICAg ICB9Cj4gPiA+ICsKPiA+ID4gKyAgICAgcmV0dXJuIHNjcF9ycHJvY19pbml0KHBkZXYsICZzY3Bf cmVncyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyBpbnQgc2NwX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiAgewo+ID4gPiAgICAgICBzdHJ1Y3QgbXRr X3NjcCAqc2NwID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiA+IC0tCj4gPiA+IDIu MTguMAo+ID4gPiAKPiAKPiAtLSAKPiBCZXN0IHJlZ2FyZHMsCj4gVGluZ0hhbgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=