From mboxrd@z Thu Jan 1 00:00:00 1970 From: Winiarska, Iwona Date: Tue, 7 Dec 2021 18:09:36 +0000 Subject: [PATCH v4 05/13] peci: Add peci-aspeed controller driver In-Reply-To: <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> References: <20211123140706.2945700-1-iwona.winiarska@intel.com> <20211123140706.2945700-6-iwona.winiarska@intel.com> <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> Message-ID: <670e4bd2c9d8dc91d1c9fca2b050915942b2a9b2.camel@intel.com> List-Id: To: linux-aspeed@lists.ozlabs.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Mon, 2021-12-06 at 05:27 +0000, Billy Tsai wrote: > Hi, > > After reviewing the patch, I have some suggestions for you. Please see the > reply inline. > > On 2021/11/23, 10:11 PM, "openbmc on behalf of Iwona Winiarska" > iwona.winiarska at intel.com> wrote: > > ??? >?? From: Jae Hyun Yoo > Add the define for the bus frequency > ??????? #define ASPEED_PECI_BUS_FREQUENCY_MIN???????????2000 > ??????? #define ASPEED_PECI_BUS_FREQUENCY_DEFAULT???????2000 > ??????? #define ASPEED_PECI_BUS_FREQUENCY_MAX???????????1000000 > > ?? >?? +struct aspeed_peci { > ??? >?? +???????struct peci_controller *controller; > ??? >?? +???????struct device *dev; > ??? >?? +???????void __iomem *base; > ??? >?? +???????struct clk *clk; > ??? >?? +???????struct reset_control *rst; > ??? >?? +???????int irq; > ??? >?? +???????spinlock_t lock; /* to sync completion status handling */ > ??? >?? +???????struct completion xfer_complete; > ??? >?? +???????u32 status; > ??? >?? +???????u32 cmd_timeout_ms; > ??? >?? +???????u32 msg_timing; > ??? >?? +???????u32 addr_timing; > ??? >?? +???????u32 rd_sampling_point; > ??? >?? +???????u32 clk_div; > > Add the paremeter to store the bus_freq from the dts property > ??????? u32 bus_freq; > > ??? >?? +}; > ??? >?? + > ??? >?? +static void aspeed_peci_init_regs(struct aspeed_peci *priv) > ??? >?? +{ > ??? >?? +???????u32 val; > ??? >?? + > ??? >?? +???????val = FIELD_PREP(ASPEED_PECI_CTRL_CLK_DIV_MASK, > ASPEED_PECI_CLK_DIV_DEFAULT); > ??? >?? +???????val |= ASPEED_PECI_CTRL_PECI_CLK_EN; > ??? >?? +???????writel(val, priv->base + ASPEED_PECI_CTRL); > ??? >?? +???????/* > ??? >?? +??????? * Timing negotiation period setting. > ??? >?? +??????? * The unit of the programmed value is 4 times of PECI clock > period. > ??? >?? +??????? */ > ??? >?? +???????val = FIELD_PREP(ASPEED_PECI_T_NEGO_MSG_MASK, priv- > >msg_timing); > ??? >?? +???????val |= FIELD_PREP(ASPEED_PECI_T_NEGO_ADDR_MASK, priv- > >addr_timing); > ??? >?? +???????writel(val, priv->base + ASPEED_PECI_TIMING_NEGOTIATION); > ??? >?? + > ??? >?? +???????/* Clear interrupts */ > ??? >?? +???????val = readl(priv->base + ASPEED_PECI_INT_STS) | > ASPEED_PECI_INT_MASK; > ??? >?? +???????writel(val, priv->base + ASPEED_PECI_INT_STS); > ??? >?? + > ??? >?? +???????/* Set timing negotiation mode and enable interrupts */ > ??? >?? +???????val = FIELD_PREP(ASPEED_PECI_TIMING_NEGO_SEL_MASK, > ASPEED_PECI_1ST_BIT_OF_ADDR_NEGO); > ??? >?? +???????val |= ASPEED_PECI_INT_MASK; > ??? >?? +???????writel(val, priv->base + ASPEED_PECI_INT_CTRL); > ??? >?? + > ??? >?? +???????val = FIELD_PREP(ASPEED_PECI_CTRL_SAMPLING_MASK, priv- > >rd_sampling_point); > ??? >?? +???????val |= FIELD_PREP(ASPEED_PECI_CTRL_CLK_DIV_MASK, priv- > >clk_div); > ??? >?? +???????val |= ASPEED_PECI_CTRL_PECI_EN; > ??? >?? +???????val |= ASPEED_PECI_CTRL_PECI_CLK_EN; > ??? >?? +???????writel(val, priv->base + ASPEED_PECI_CTRL); > ??? >?? +} > ??? >?? + > ??? >?? +static inline int aspeed_peci_check_idle(struct aspeed_peci *priv) > ??? >?? +{ > ??? >?? +???????u32 cmd_sts = readl(priv->base + ASPEED_PECI_CMD); > ??? >?? + > ??? >?? +???????if (FIELD_GET(ASPEED_PECI_CMD_STS_MASK, cmd_sts) == > ASPEED_PECI_CMD_STS_ADDR_T_NEGO) > ??? >?? +???????????????aspeed_peci_init_regs(priv); > > As long as the state is not idle, the controller need to reinitialize the PECI > register for solving the PECI controller hang. > Before ast2600A3, the controller should assert/de-assert the reset for solving > the hang issue. > For backward compatible, I suggest to add the reset assert/de-assert in this > place. > ??????? if (FIELD_GET(ASPEED_PECI_CMD_STS_MASK, cmd_sts)) { > ??????????????????????? reset_control_assert(priv->rst); > ??????????????????????? reset_control_deassert(priv->rst); > ??????????????????????? aspeed_peci_init_regs(priv); > ??????? } Ack. > (...) > ??? >?? +static void aspeed_peci_property_setup(struct aspeed_peci *priv) > ??? >?? +{ > ??? >?? +???????aspeed_peci_property_sanitize(priv->dev, "aspeed,clock- > divider", > ??? >?? +???????????????????????????????????? 0, ASPEED_PECI_CLK_DIV_MAX, > ??? >?? +???????????????????????????????????? ASPEED_PECI_CLK_DIV_DEFAULT, > &priv->clk_div); > ??? >?? +???????aspeed_peci_property_sanitize(priv->dev, "aspeed,msg-timing", > ??? >?? +???????????????????????????????????? 0, ASPEED_PECI_MSG_TIMING_MAX, > ??? >?? +???????????????????????????????????? ASPEED_PECI_MSG_TIMING_DEFAULT, > &priv->msg_timing); > ??? >?? +???????aspeed_peci_property_sanitize(priv->dev, "aspeed,addr-timing", > ??? >?? +???????????????????????????????????? 0, ASPEED_PECI_ADDR_TIMING_MAX, > ??? >?? +???????????????????????????????????? ASPEED_PECI_ADDR_TIMING_DEFAULT, > &priv->addr_timing); > > Use the bus-frequency to replace the property above: > ??????? aspeed_peci_property_sanitize(priv->dev, "bus-frequency", > ????????????????????????????????ASPEED_PECI_BUS_FREQUENCY_MIN, > ASPEED_PECI_BUS_FREQUENCY_MAX, > ????????????????????????????????ASPEED_PECI_BUS_FREQUENCY_DEFAULT, &priv- > >bus_freq); > > ??? >?? +???????aspeed_peci_property_sanitize(priv->dev, "aspeed,rd-sampling- > point", > ??? >?? +???????????????????????????????????? 0, > ASPEED_PECI_RD_SAMPLING_POINT_MAX, > ??? >?? +???????????????????????????????????? > ASPEED_PECI_RD_SAMPLING_POINT_DEFAULT, > ??? >?? +???????????????????????????????????? &priv->rd_sampling_point); > ??? >?? +???????aspeed_peci_property_sanitize(priv->dev, "cmd-timeout-ms", > ??? >?? +???????????????????????????????????? 1, > ASPEED_PECI_CMD_TIMEOUT_MS_MAX, > ??? >?? +???????????????????????????????????? > ASPEED_PECI_CMD_TIMEOUT_MS_DEFAULT, &priv->cmd_timeout_ms); > ??? >?? +} > Add the function of automatically calculating the settings to adapt to the bus > frequency. If we want to go with exposing "bus-frequency", instead of hardware properties, I don't think we should opencode it in this way. Rather, we should expose it as a clock, passing "clock-frequency" property via DTS and exposing it using struct clk_hw. We would then just call clock API (clk_round_rate / clk_set_rate etc), presenting this as what it actually is (a "custom" clock divider). Thanks -Iwona > ??????? static void aspeed_peci_bus_freq_setup(struct aspeed_peci *priv) > ??????? { > ??????????????? unsigned long src_clk_rate; > ??????????????? int delta_value, delta_tmp, clk_divisor, clk_divisor_tmp; > ??????????????? u32 msg_timing, clk_div; > > ??????????????? src_clk_rate = clk_get_rate(priv->clk); > > ??????????????? /* > ???????????????? * PECI bus freq? = (source clk rate) / (4 * > (PECI04[15:8]*4+1) * (1 << PECI00[10:8])) > ???????????????? * (1 << PECI00[10:8]) * (PECI04[15:8]*4+1) = (source clk > rate) / (4 * PECI bus freq ) > ???????????????? */ > ??????????????? clk_divisor = src_clk_rate / (4 * priv->bus_freq); > ??????????????? delta_value = clk_divisor; > ??????????????? /* Find the closest divisor for bus-frequency */ > ??????????????? for (msg_timing = 1; msg_timing <= 255; msg_timing++) > ??????????????????????? for (clk_div = 0; clk_div < 7; > ??????????????????????????????? clk_div++) { > ??????????????????????????????? clk_divisor_tmp = (1 << clk_div) * > ??????????????????????????????????????????????? (msg_timing * 4 + 1); > ??????????????????????????????? delta_tmp = abs(clk_divisor - > clk_divisor_tmp); > ??????????????????????????????? if (delta_tmp < delta_value) { > ??????????????????????????????????????? delta_value = delta_tmp; > ??????????????????????????????????????? priv->msg_timing = msg_timing; > ??????????????????????????????????????? priv->addr_timing = priv->msg_timing; > ??????????????????????????????????????? priv->clk_div = clk_div; > ??????????????????????????????? } > ??????????????????????? } > ??????? } > > ??? >?? + > ??? >?? +static struct peci_controller_ops aspeed_ops = { > ??? >?? +???????.xfer = aspeed_peci_xfer, > ??? >?? +}; > ??? >?? + > ??? >?? +static void aspeed_peci_reset_control_release(void *data) > ??? >?? +{ > ??? >?? +???????reset_control_assert(data); > ??? >?? +} > ??? >?? + > ??? >?? +static int devm_aspeed_peci_reset_control_deassert(struct device > *dev, struct reset_control *rst) > ??? >?? +{ > ??? >?? +???????int ret; > ??? >?? + > ??? >?? +???????ret = reset_control_deassert(rst); > ??? >?? +???????if (ret) > ??? >?? +???????????????return ret; > ??? >?? + > ??? >?? +???????return devm_add_action_or_reset(dev, > aspeed_peci_reset_control_release, rst); > ??? >?? +} > ??? >?? + > ??? >?? +static void aspeed_peci_clk_release(void *data) > ??? >?? +{ > ??? >?? +???????clk_disable_unprepare(data); > ??? >?? +} > ??? >?? + > ??? >?? +static int devm_aspeed_peci_clk_enable(struct device *dev, struct clk > *clk) > ??? >?? +{ > ??? >?? +???????int ret; > ??? >?? + > ??? >?? +???????ret = clk_prepare_enable(clk); > ??? >?? +???????if (ret) > ??? >?? +???????????????return ret; > ??? >?? + > ??? >?? +???????return devm_add_action_or_reset(dev, aspeed_peci_clk_release, > clk); > ??? >?? +} > ??? >?? + > ??? >?? +static int aspeed_peci_probe(struct platform_device *pdev) > ??? >?? +{ > ??? >?? +???????struct peci_controller *controller; > ??? >?? +???????struct aspeed_peci *priv; > ??? >?? +???????int ret; > ??? >?? + > ??? >?? +???????priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > ??? >?? +???????if (!priv) > ??? >?? +???????????????return -ENOMEM; > ??? >?? + > ??? >?? +???????priv->dev = &pdev->dev; > ??? >?? +???????dev_set_drvdata(priv->dev, priv); > ??? >?? + > ??? >?? +???????priv->base = devm_platform_ioremap_resource(pdev, 0); > ??? >?? +???????if (IS_ERR(priv->base)) > ??? >?? +???????????????return PTR_ERR(priv->base); > ??? >?? + > ??? >?? +???????priv->irq = platform_get_irq(pdev, 0); > ??? >?? +???????if (!priv->irq) > ??? >?? +???????????????return priv->irq; > ??? >?? + > ??? >?? +???????ret = devm_request_irq(&pdev->dev, priv->irq, > aspeed_peci_irq_handler, > ??? >?? +????????????????????????????? 0, "peci-aspeed", priv); > ??? >?? +???????if (ret) > ??? >?? +???????????????return ret; > ??? >?? + > ??? >?? +???????init_completion(&priv->xfer_complete); > ??? >?? +???????spin_lock_init(&priv->lock); > ??? >?? + > ??? >?? +???????priv->rst = devm_reset_control_get(&pdev->dev, NULL); > ??? >?? +???????if (IS_ERR(priv->rst)) > ??? >?? +???????????????return dev_err_probe(priv->dev, PTR_ERR(priv->rst), > ??? >?? +??????????????????????????????????? "failed to get reset control\n"); > ??? >?? + > ??? >?? +???????ret = devm_aspeed_peci_reset_control_deassert(priv->dev, priv- > >rst); > ??? >?? +???????if (ret) > ??? >?? +???????????????return dev_err_probe(priv->dev, ret, "cannot deassert > reset control\n"); > ??? >?? + > ??? >?? +???????priv->clk = devm_clk_get(priv->dev, NULL); > ??? >?? +???????if (IS_ERR(priv->clk)) > ??? >?? +???????????????return dev_err_probe(priv->dev, PTR_ERR(priv->clk), > "failed to get clk\n"); > ??? >?? + > ??? >?? +???????ret = devm_aspeed_peci_clk_enable(priv->dev, priv->clk); > ??? >?? +???????if (ret) > ??? >?? +???????????????return dev_err_probe(priv->dev, ret, "failed to enable > clock\n"); > ??? >?? + > ??? >?? +???????aspeed_peci_property_setup(priv); > > ??????? aspeed_peci_bus_freq_setup(priv); > > ??? >?? + > ??? >?? +???????aspeed_peci_init_regs(priv); > ??? >?? + > ??? >?? +???????controller = devm_peci_controller_add(priv->dev, &aspeed_ops); > ??? >?? +???????if (IS_ERR(controller)) > ??? >?? +???????????????return dev_err_probe(priv->dev, PTR_ERR(controller), > ??? >?? +??????????????????????????????????? "failed to add aspeed peci > controller\n"); > ??? >?? + > ??? >?? +???????priv->controller = controller; > ??? >?? + > ??? >?? +???????return 0; > ??? >?? +} > ??? >?? + > ??? >?? +static const struct of_device_id aspeed_peci_of_table[] = { > ??? >?? +???????{ .compatible = "aspeed,ast2400-peci", }, > ??? >?? +???????{ .compatible = "aspeed,ast2500-peci", }, > ??? >?? +???????{ .compatible = "aspeed,ast2600-peci", }, > ??? >?? +???????{ } > ??? >?? +}; > ??? >?? +MODULE_DEVICE_TABLE(of, aspeed_peci_of_table); > ??? >?? + > ??? >?? +static struct platform_driver aspeed_peci_driver = { > ??? >?? +???????.probe? = aspeed_peci_probe, > ??? >?? +???????.driver = { > ??? >?? +???????????????.name?????????? = "peci-aspeed", > ??? >?? +???????????????.of_match_table = aspeed_peci_of_table, > ??? >?? +???????}, > ??? >?? +}; > ??? >?? +module_platform_driver(aspeed_peci_driver); > ??? >?? + > ??? >?? +MODULE_AUTHOR("Ryan Chen "); > ??? >?? +MODULE_AUTHOR("Jae Hyun Yoo "); > ??? >?? +MODULE_DESCRIPTION("ASPEED PECI driver"); > ??? >?? +MODULE_LICENSE("GPL"); > ??? >?? +MODULE_IMPORT_NS(PECI); > ??? >?? -- > ??? >?? 2.31.1 > > > 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECCEEC4332F for ; Tue, 7 Dec 2021 18:27:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236160AbhLGSbH (ORCPT ); Tue, 7 Dec 2021 13:31:07 -0500 Received: from mga14.intel.com ([192.55.52.115]:29680 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240554AbhLGSbE (ORCPT ); Tue, 7 Dec 2021 13:31:04 -0500 X-IronPort-AV: E=McAfee;i="6200,9189,10190"; a="237881069" X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="237881069" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Dec 2021 10:09:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="542895662" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 07 Dec 2021 10:09:39 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 7 Dec 2021 10:09:38 -0800 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5WhQHLYYzDbs7xcyVKDhLEhNGvVlwE1meOi7yp0Hrzy+La/Ytbshu0V2pmhv75azQcQOZrU50WtehsYzIt6l7C0zD45sXDvsXeMeaXnujVeZXFicKOBKZjcpuM+uMNC4MkkAfu1bHaCUWzDv33Px3MbBRJln1CL2wXMzOwIJcsyMYdnAw5DAdL66pUjmdXoRdQs8dAA6VEbChorMUyd0gDbvkXC+8W/zJ3ooQ8VJeRKZGcI7l6e21xq+OTRLBBB64MI9WRPMinR2mdl5Uh4qubuf+TwIjrJP/Xb/DlmJpav62VatQjP67gcoECubTLhPr1hwIUHNWhFtKfFZh8d1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=KtYTkX9NYFMsXpRjWF2o+M84i/vLw+k68qOB3sgjjOWofWoIQ+ByrZp1mzoIon4ABdoE8rcF3kXWr9HJYBGgsawluJLHTQQmiGQWoYbrCqwIfNBbvp0NgGzBF/zmrtYMB5J/D0pgXUy3833CqMbVpmjQUXty6Cqs26aHasOSTEbUmEkQZaUVKv6RPtjpE4mcoPbdjr9Pme3sPliV+x7uQumF3JUjCtnojNY891DznB3lgovTCifINhRJYp2LtcCJC2AI332XkUVODfbsWna1UeshbCmPfwDkU+BZejKoPGXuSG9kwPviwCmyF/iIL2YG2GIQrweXGn9GEHMYHl4jxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=E9qTCsKGZlyTJpxTZwDUFfyIqueLjicyWyLFosRAKJ0YiQcyPCLJD8Qnvs8btb1RvxdMm+zVb1Hdl06tDd7jfc01HUs2jn55zzKD9YiP+5Ul7OC9D91SZU76qoe9yDW1YIiJFTWa0/VCWSodYeg5AOguALX2n119v0ALdPsHmt4= Received: from MW4PR11MB5823.namprd11.prod.outlook.com (2603:10b6:303:186::12) by MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.20; Tue, 7 Dec 2021 18:09:36 +0000 Received: from MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de]) by MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de%5]) with mapi id 15.20.4755.022; Tue, 7 Dec 2021 18:09:36 +0000 From: "Winiarska, Iwona" To: "billy_tsai@aspeedtech.com" , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "openbmc@lists.ozlabs.org" CC: "corbet@lwn.net" , "jae.hyun.yoo@linux.intel.com" , "linux-hwmon@vger.kernel.org" , "andrew@aj.id.au" , "Hansen, Dave" , "Luck, Tony" , "jdelvare@suse.com" , "olof@lixom.net" , "rdunlap@infradead.org" , "devicetree@vger.kernel.org" , "linux-aspeed@lists.ozlabs.org" , "linux@roeck-us.net" , "arnd@arndb.de" , "linux-doc@vger.kernel.org" , "robh+dt@kernel.org" , "zweiss@equinix.com" , "bp@alien8.de" , "linux-arm-kernel@lists.infradead.org" , "pierre-louis.bossart@linux.intel.com" , "andriy.shevchenko@linux.intel.com" , "Williams, Dan J" Subject: Re: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Topic: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Index: AQHX4HPaxGefPohjA0+Yy1Npn3kxdawlAxSAgAJnMQA= Date: Tue, 7 Dec 2021 18:09:36 +0000 Message-ID: <670e4bd2c9d8dc91d1c9fca2b050915942b2a9b2.camel@intel.com> References: <20211123140706.2945700-1-iwona.winiarska@intel.com> <20211123140706.2945700-6-iwona.winiarska@intel.com> <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> In-Reply-To: <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> Accept-Language: en-US, pl-PL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.4 (3.40.4-2.fc34) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 x-ms-traffictypediagnostic: MW5PR11MB5906:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr,ExtFwd x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SWZ/FuEFEl3TvGqtjJEOOyfjlqj2I3vtA7vfxTyQW9/exuziTSoE5QozT6lPg97CCukz+YH2k01g9rJ39mRsb57NzrYg0H/yi9ntOyDfincOKGLuRetW4jnwIYibcGGrLxSipRGyQm31XgSngCSAimFkI8ZL7CJRloxYVKviq7VgXkzBQtlwlh7Iea2dvQ5OrJ3RewYxQLNGy5Um8B7qpMa0Z0V2OyPsEeDUPjIcAL6yDg7aI6NBTtC50gl2AVSRbQF3CEfElq1OfO0XVRU2wCpDOWBcvMny7co8lAyUE5QTeGZq803QjHrNPPWWJaEncroNDhcZUmp6sh6qQRCfA7mcnsjUyGXx5zqbHJVINj58kGFBypwZBaQ13XFv6FdwATjuY4w3EFTmx3rpHO2ZTJndY+UY57NwwAG00wkiqWu/KBkdit3MDbxbjxHKcYKofAmdUuzm/XklLCW9AG/9bci3qNIe03GKdqDHc01qws0jznWphwC2bf4j2TeSZu2NZccx2aQbp8SsX9l2N0idX/+G0XAOJ/2R3lZ/AaK9Ya4SDNEu+bN7zxdyTAPEYtZITe0d696ZpwoQQ0ZwhT4upHy3WDLGYCpLHyU+mgnburJ0UvGjRb+s9pX2PKU0W4Ni4CK583Zok7R5m+5c49UP50mY3zTEb9DAEcsXPrCIcrceL1CjvQasF8Vf0MTtaK9FCspxXq5sREVYR6BZ1rngYg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5823.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(64756008)(66476007)(66556008)(38070700005)(71200400001)(76116006)(2906002)(66946007)(66446008)(7416002)(91956017)(53546011)(6506007)(6486002)(4326008)(316002)(6512007)(122000001)(186003)(26005)(508600001)(86362001)(8936002)(83380400001)(38100700002)(2616005)(110136005)(5660300002)(36756003)(54906003)(8676002)(82960400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?djI4Y0pzMjZuSWxLNnVYb0x0Q2RwRnJIcEg5Y2huRjFLZFhUL1F1eGtTK2ww?= =?utf-8?B?bmYvdGtOSlZtMjhlY2RWMGZXdnZRQndZcW45TnFPcWZRVjFTbHkxbjc1aks3?= =?utf-8?B?Z05KVHB1b1VmcC9qRVBQM3RUekUwQnZPTzkyeDMxR2lHcFJiMFo2a0VKZ1BX?= =?utf-8?B?RXAxSHVrRGJHeksrU1FxWlpiZ0tFL3podmwzSGVHakQ4cFpSRE1mQkMwemJJ?= =?utf-8?B?WjcweTFNV000VkQwOG5xcDJxMmVtV0dkeXk5WkZxU2F6bnIzcm1RYnFOZkRV?= =?utf-8?B?cVV2RFdvNHE0YTlKRG8wV3NoelRUSDdVTGIvcGZnQUo0SitUdmlRQXpzTG5l?= =?utf-8?B?SHpyZFdhZ0s2bGFPNkZEbVJRQisrekhoM0hOTTRObkp3QTkxUVdHQTlBWW9F?= =?utf-8?B?TllhSjFsd0U5SzY3UHYwQ3pSeHpNRXBpV3VvWm9jcVBFRnMvTWliODVUSDhX?= =?utf-8?B?MDI3QWNZeVFITXJwT1phMUxnK0wvc1VoeUsrem9HWmNyNzVlRzJMZ2hKUS9i?= =?utf-8?B?YVlmYjRiQnlxTTR1T2pSRS91elNLZ0JXVUhqRUlSdUlUMWRZNjJ2aXk0dXlL?= =?utf-8?B?U1VvN2QzL1QrcGlUV2MzOU5MTEZreFVUbGhjSGRkN2l2UDByTTFDdTdNOHRo?= =?utf-8?B?c0FadkllU2VwQUZJdlhtMFJTcDVpQXV0OHdXM3IzV3pvVUs1WVhDZVZIengz?= =?utf-8?B?UlJXUUovTVkxc0dxNlV4ekZIaXFvcHN0ZjRVelZzaDJqUTdkQlA1ei9kOVhp?= =?utf-8?B?Q0hkekU4aG1HZ2g2WmM5ejlMeXNQOTBWWG94U3pYdEJ5WkZpMkhBTitDNzcy?= =?utf-8?B?VldEYTRFUGhuOExNRjY2SE9aSWpZSzRDL01OWWpZa1E5YmN0blNWa2Q1R2w5?= =?utf-8?B?QXZTbzBEVnorcExucy9pWEVrNTdtcUNuSUE2UnRuRmpXMVMrUnhRM01uMVRP?= =?utf-8?B?MUNLNENZelpTVWdGSjdyYnV6MmFYb05Jc2lqZXBsQzRnMjU4VG9iRTRoWVQ3?= =?utf-8?B?WnBkcWJHeE5pOUEyL011QzMvSWwxU0VYUXhhZDgycDErRFZGc1ZrSkpkMFBK?= =?utf-8?B?UVZvbnFTdmtSa05GMmlpRmFIa1Jzd1RUUHVhaXloQjRBcUt5VER5ZlAyUnJ6?= =?utf-8?B?QVoxT1RKelNoc3U4UzA3WHpxWUlVQjZmZWRYbjNuODdzUklHVFd3ZlBocVZu?= =?utf-8?B?VzUwcFhXMk9MMnJRVFZJREQ3QWRjaFhyWXRraTE0cW9LL1EyYnZxMmYzUnlm?= =?utf-8?B?UzJDd05UTXErS2RDTFBTbGwwZ0ZyNGNLdlhKVlowZ21QQXFTNStlVVV1VG9k?= =?utf-8?B?R2FZRUt1aHZUNTRUOG85ZmhZWkwwc0lqVGlUeWJZTkplZksreER2VG1lZExo?= =?utf-8?B?TlF0OUcyU2RpMlZBdFFnd2ZnUXlHSmRMK1d6TmN6bFpoZjFyR1kvWkRUTmNj?= =?utf-8?B?VE13Y3M1Q2toZ05jRXJNOHRhSE1nK3NHUzNmajJ1d3JzczYvOXpYOGlhNGJz?= =?utf-8?B?YlN2SzJ5anF2QVM1NkYxRVFjaWM4bHVWd3hnUHpyRmlPbWpHTGVDMGtvNnhI?= =?utf-8?B?ZGdQOUVUWUdybVFFTzlrTU5aSWR4VmppekhxSUdEV1VRMzFoTkhtMCtzV2c4?= =?utf-8?B?c2FBTENRZGZRcnJuRTN6SkU5blo5ZjVjN2h1U29Vc3l6NE1pb1RWNFFnL1lx?= =?utf-8?B?eklYdFV6RndjNHZIajA2cnQwM3YrMFlaSWkvQllrazhmQ3BVRC9iWHVFYlY1?= =?utf-8?B?WFZXQnRkOHhXWG5vZXRQdExCNjUrZnhJZFdFZ2o5KzN2K0doUVpFeGQ5VC94?= =?utf-8?B?L3RFSk10SHJQbDlqeUQvaXRicVVJTXFFTVVRbStnOGhvekFkd09oOVk0NU4y?= =?utf-8?B?R3lNRnk2cEx2YTJad05TRlRJeHNpdDBiMW9qZVg3MitaNzMwNVNXOVk1K091?= =?utf-8?B?Yy9pWGJUS0loN1FRVWJXT0ZIR0syRUVjTldMWVdyNTU0MHFlM2dhTTZMcmRr?= =?utf-8?B?c25CSUF0WldKQis0RmduRXdHNTlhMUpxTFdLeFUzeVBNUmo0b1pTUnptM2Mv?= =?utf-8?B?Y3g3dEJCQVRzcmt2K0dkUGEwVGUrdHZyY01zRktvQ2VrdkdxUGFuQThXdU1L?= =?utf-8?B?cFY5Z1BKbUg4Q0R5d2NGYkN3STZnWW9XUkFXeHBOK2oyVGx0R1FvcjhIVllO?= =?utf-8?B?NzFBWGlJZlpLZzNmU3dxOG04QlpGRzk1OWdmcHlYd3RYRGxWQWhlVTRVSHVX?= =?utf-8?Q?GwgzE3a6vMpGNTafvTDRlJ9rtpXHQgav0PGQmpINzQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5823.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2021 18:09:36.1691 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aPxoaQIQwzC4iZ0KY3OacBsWPNXlpeJfnVkdTMsyKZTwuXVo5Rol08/caUl5NutJ4w+RFGVvpeJtygrUSUiEtzK9AUNBGumWW4lvx7L4MbA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR11MB5906 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org T24gTW9uLCAyMDIxLTEyLTA2IGF0IDA1OjI3ICswMDAwLCBCaWxseSBUc2FpIHdyb3RlOgo+IEhp LAo+IAo+IEFmdGVyIHJldmlld2luZyB0aGUgcGF0Y2gsIEkgaGF2ZSBzb21lIHN1Z2dlc3Rpb25z IGZvciB5b3UuIFBsZWFzZSBzZWUgdGhlCj4gcmVwbHkgaW5saW5lLgo+IAo+IE9uIDIwMjEvMTEv MjMsIDEwOjExIFBNLCAib3BlbmJtYyBvbiBiZWhhbGYgb2YgSXdvbmEgV2luaWFyc2thIgo+IDxv cGVuYm1jLWJvdW5jZXMrYmlsbHlfdHNhaT1hc3BlZWR0ZWNoLmNvbUBsaXN0cy5vemxhYnMub3Jn wqBvbiBiZWhhbGYgb2YKPiBpd29uYS53aW5pYXJza2FAaW50ZWwuY29tPiB3cm90ZToKPiAKPiDC oMKgwqAgPsKgwqAgRnJvbTogSmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwu Y29tPgo+IEFkZCB0aGUgZGVmaW5lIGZvciB0aGUgYnVzIGZyZXF1ZW5jeQo+IMKgwqDCoMKgwqDC oMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFVRU5DWV9NSU7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgMjAwMAo+IMKgwqDCoMKgwqDCoMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFV RU5DWV9ERUZBVUxUwqDCoMKgwqDCoMKgwqAyMDAwCj4gwqDCoMKgwqDCoMKgwqAgI2RlZmluZSBB U1BFRURfUEVDSV9CVVNfRlJFUVVFTkNZX01BWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMDAwMDAw Cj4gCj4gwqDCoCA+wqDCoCArc3RydWN0IGFzcGVlZF9wZWNpIHsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2Owo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2b2lkIF9faW9tZW0gKmJhc2U7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBjbGsgKmNsazsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHJlc2V0X2NvbnRyb2wgKnJzdDsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaW50 IGlycTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3BpbmxvY2tfdCBsb2NrOyAvKiB0 byBzeW5jIGNvbXBsZXRpb24gc3RhdHVzIGhhbmRsaW5nICovCj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBjb21wbGV0aW9uIHhmZXJfY29tcGxldGU7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHUzMiBzdGF0dXM7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHUzMiBjbWRfdGltZW91dF9tczsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIG1z Z190aW1pbmc7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHUzMiBhZGRyX3RpbWluZzsK PiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIHJkX3NhbXBsaW5nX3BvaW50Owo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY2xrX2RpdjsKPiAKPiBBZGQgdGhlIHBhcmVt ZXRlciB0byBzdG9yZSB0aGUgYnVzX2ZyZXEgZnJvbSB0aGUgZHRzIHByb3BlcnR5Cj4gwqDCoMKg wqDCoMKgwqAgdTMyIGJ1c19mcmVxOwo+IAo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKg wqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfaW5pdF9yZWdzKHN0 cnVjdCBhc3BlZWRfcGVjaSAqcHJpdikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9QUkVQKEFTUEVFRF9QRUNJX0NUUkxfQ0xLX0RJVl9N QVNLLAo+IEFTUEVFRF9QRUNJX0NMS19ESVZfREVGQVVMVCk7Cj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfQ0xLX0VOOwo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5iYXNlICsgQVNQRUVEX1BFQ0lf Q1RSTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoCAqIFRpbWluZyBuZWdvdGlhdGlvbiBwZXJpb2Qgc2V0dGluZy4KPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgICogVGhlIHVuaXQgb2YgdGhlIHByb2dyYW1tZWQgdmFs dWUgaXMgNCB0aW1lcyBvZiBQRUNJIGNsb2NrCj4gcGVyaW9kLgo+IMKgwqDCoCA+wqDCoCArwqDC oMKgwqDCoMKgwqAgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdmFsID0gRklFTERf UFJFUChBU1BFRURfUEVDSV9UX05FR09fTVNHX01BU0ssIHByaXYtCj4gPm1zZ190aW1pbmcpOwo+ IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChBU1BFRURfUEVD SV9UX05FR09fQUREUl9NQVNLLCBwcml2LQo+ID5hZGRyX3RpbWluZyk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHByaXYtPmJhc2UgKyBBU1BFRURfUEVDSV9USU1J TkdfTkVHT1RJQVRJT04pOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoC8qIENsZWFyIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDC oMKgdmFsID0gcmVhZGwocHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpIHwKPiBBU1BF RURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgd3JpdGVsKHZh bCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qIFNldCB0aW1pbmcgbmVnb3RpYXRpb24gbW9k ZSBhbmQgZW5hYmxlIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg dmFsID0gRklFTERfUFJFUChBU1BFRURfUEVDSV9USU1JTkdfTkVHT19TRUxfTUFTSywKPiBBU1BF RURfUEVDSV8xU1RfQklUX09GX0FERFJfTkVHTyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHZhbCB8PSBBU1BFRURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgd3JpdGVsKHZhbCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9DVFJMKTsKPiDC oMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9Q UkVQKEFTUEVFRF9QRUNJX0NUUkxfU0FNUExJTkdfTUFTSywgcHJpdi0KPiA+cmRfc2FtcGxpbmdf cG9pbnQpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChB U1BFRURfUEVDSV9DVFJMX0NMS19ESVZfTUFTSywgcHJpdi0KPiA+Y2xrX2Rpdik7Cj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfRU47Cj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lf Q0xLX0VOOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5i YXNlICsgQVNQRUVEX1BFQ0lfQ1RSTCk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbmxpbmUgaW50IGFzcGVlZF9wZWNpX2NoZWNrX2lk bGUoc3RydWN0IGFzcGVlZF9wZWNpICpwcml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY21kX3N0cyA9IHJlYWRsKHByaXYtPmJhc2UgKyBBU1BF RURfUEVDSV9DTUQpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoGlmIChGSUVMRF9HRVQoQVNQRUVEX1BFQ0lfQ01EX1NUU19NQVNLLCBjbWRfc3RzKSA9PQo+ IEFTUEVFRF9QRUNJX0NNRF9TVFNfQUREUl9UX05FR08pCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7Cj4gCj4g QXMgbG9uZyBhcyB0aGUgc3RhdGUgaXMgbm90IGlkbGUsIHRoZSBjb250cm9sbGVyIG5lZWQgdG8g cmVpbml0aWFsaXplIHRoZSBQRUNJCj4gcmVnaXN0ZXIgZm9yIHNvbHZpbmcgdGhlIFBFQ0kgY29u dHJvbGxlciBoYW5nLgo+IEJlZm9yZSBhc3QyNjAwQTMsIHRoZSBjb250cm9sbGVyIHNob3VsZCBh c3NlcnQvZGUtYXNzZXJ0IHRoZSByZXNldCBmb3Igc29sdmluZwo+IHRoZSBoYW5nIGlzc3VlLgo+ IEZvciBiYWNrd2FyZCBjb21wYXRpYmxlLCBJIHN1Z2dlc3QgdG8gYWRkIHRoZSByZXNldCBhc3Nl cnQvZGUtYXNzZXJ0IGluIHRoaXMKPiBwbGFjZS4KPiDCoMKgwqDCoMKgwqDCoCBpZiAoRklFTERf R0VUKEFTUEVFRF9QRUNJX0NNRF9TVFNfTUFTSywgY21kX3N0cykpIHsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHBy aXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7 Cj4gwqDCoMKgwqDCoMKgwqAgfQoKQWNrLgoKPiAKCiguLi4pCgo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIHZvaWQgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0dXAoc3RydWN0IGFzcGVlZF9wZWNpICpw cml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBhc3Bl ZWRfcGVjaV9wcm9wZXJ0eV9zYW5pdGl6ZShwcml2LT5kZXYsICJhc3BlZWQsY2xvY2stCj4gZGl2 aWRlciIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9NQVgsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9ERUZBVUxULAo+ICZwcml2LT5jbGtfZGl2KTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJpdi0+ZGV2LCAiYXNwZWVkLG1z Zy10aW1pbmciLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIEFTUEVFRF9QRUNJ X01TR19USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFTUEVFRF9Q RUNJX01TR19USU1JTkdfREVGQVVMVCwKPiAmcHJpdi0+bXNnX3RpbWluZyk7Cj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRl diwgImFzcGVlZCxhZGRyLXRpbWluZyIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MCwgQVNQRUVEX1BFQ0lfQUREUl9USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEFTUEVFRF9QRUNJX0FERFJfVElNSU5HX0RFRkFVTFQsCj4gJnByaXYtPmFkZHJfdGlt aW5nKTsKPiAKPiBVc2UgdGhlIGJ1cy1mcmVxdWVuY3kgdG8gcmVwbGFjZSB0aGUgcHJvcGVydHkg YWJvdmU6Cj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJp di0+ZGV2LCAiYnVzLWZyZXF1ZW5jeSIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFTUEVFRF9QRUNJX0JVU19GUkVRVUVO Q1lfTUlOLAo+IEFTUEVFRF9QRUNJX0JVU19GUkVRVUVOQ1lfTUFYLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBU1BFRURf UEVDSV9CVVNfRlJFUVVFTkNZX0RFRkFVTFQsICZwcml2LQo+ID5idXNfZnJlcSk7Cj4gCj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHBy aXYtPmRldiwgImFzcGVlZCxyZC1zYW1wbGluZy0KPiBwb2ludCIsCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMCwKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19QT0lOVF9NQVgsCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19Q T0lOVF9ERUZBVUxULAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZwcml2LT5yZF9z YW1wbGluZ19wb2ludCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNp X3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRldiwgImNtZC10aW1lb3V0LW1zIiwKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxLAo+IEFTUEVFRF9QRUNJX0NNRF9USU1FT1VUX01TX01B WCwKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IEFTUEVFRF9QRUNJX0NNRF9USU1F T1VUX01TX0RFRkFVTFQsICZwcml2LT5jbWRfdGltZW91dF9tcyk7Cj4gwqDCoMKgID7CoMKgICt9 Cj4gQWRkIHRoZSBmdW5jdGlvbiBvZiBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0aW5nIHRoZSBzZXR0 aW5ncyB0byBhZGFwdCB0byB0aGUgYnVzCj4gZnJlcXVlbmN5LgoKSWYgd2Ugd2FudCB0byBnbyB3 aXRoIGV4cG9zaW5nICJidXMtZnJlcXVlbmN5IiwgaW5zdGVhZCBvZiBoYXJkd2FyZSBwcm9wZXJ0 aWVzLApJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBvcGVuY29kZSBpdCBpbiB0aGlzIHdheS4KUmF0 aGVyLCB3ZSBzaG91bGQgZXhwb3NlIGl0IGFzIGEgY2xvY2ssIHBhc3NpbmcgImNsb2NrLWZyZXF1 ZW5jeSIgcHJvcGVydHkgdmlhCkRUUyBhbmQgZXhwb3NpbmcgaXQgdXNpbmcgc3RydWN0IGNsa19o dy4KV2Ugd291bGQgdGhlbiBqdXN0IGNhbGwgY2xvY2sgQVBJIChjbGtfcm91bmRfcmF0ZSAvIGNs a19zZXRfcmF0ZSBldGMpLApwcmVzZW50aW5nIHRoaXMgYXMgd2hhdCBpdCBhY3R1YWxseSBpcyAo YSAiY3VzdG9tIiBjbG9jayBkaXZpZGVyKS4KClRoYW5rcwotSXdvbmEKCj4gwqDCoMKgwqDCoMKg wqAgc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAoc3RydWN0IGFzcGVlZF9w ZWNpICpwcml2KQo+IMKgwqDCoMKgwqDCoMKgIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdW5zaWduZWQgbG9uZyBzcmNfY2xrX3JhdGU7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBkZWx0YV92YWx1ZSwgZGVsdGFfdG1wLCBjbGtfZGl2aXNvciwgY2xrX2Rp dmlzb3JfdG1wOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbXNnX3RpbWlu ZywgY2xrX2RpdjsKPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX2Nsa19y YXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7Cj4gCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBQRUNJIGJ1 cyBmcmVxwqAgPSAoc291cmNlIGNsayByYXRlKSAvICg0ICoKPiAoUEVDSTA0WzE1OjhdKjQrMSkg KiAoMSA8PCBQRUNJMDBbMTA6OF0pKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogKDEgPDwgUEVDSTAwWzEwOjhdKSAqIChQRUNJMDRbMTU6OF0qNCsxKSA9IChzb3VyY2UgY2xr Cj4gcmF0ZSkgLyAoNCAqIFBFQ0kgYnVzIGZyZXEgKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsa19kaXZpc29y ID0gc3JjX2Nsa19yYXRlIC8gKDQgKiBwcml2LT5idXNfZnJlcSk7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRlbHRhX3ZhbHVlID0gY2xrX2Rpdmlzb3I7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIEZpbmQgdGhlIGNsb3Nlc3QgZGl2aXNvciBmb3IgYnVzLWZy ZXF1ZW5jeSAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKG1zZ190aW1p bmcgPSAxOyBtc2dfdGltaW5nIDw9IDI1NTsgbXNnX3RpbWluZysrKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChjbGtfZGl2ID0gMDsgY2xrX2Rp diA8IDc7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2xrX2RpdisrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2Rpdmlzb3JfdG1wID0gKDEg PDwgY2xrX2RpdikgKgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1z Z190aW1pbmcgKiA0ICsgMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVsdGFfdG1wID0gYWJzKGNsa19kaXZpc29yIC0K PiBjbGtfZGl2aXNvcl90bXApOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkZWx0YV90bXAgPCBkZWx0YV92YWx1ZSkg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWx0YV92YWx1ZSA9IGRlbHRhX3RtcDsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+bXNnX3RpbWluZyA9IG1zZ190aW1pbmc7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByaXYtPmFkZHJfdGltaW5nID0gcHJpdi0+bXNnX3RpbWluZzsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+Y2xrX2RpdiA9IGNsa19kaXY7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDC oMKgwqDCoMKgIH0KPiAKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHN0 cnVjdCBwZWNpX2NvbnRyb2xsZXJfb3BzIGFzcGVlZF9vcHMgPSB7Cj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoC54ZmVyID0gYXNwZWVkX3BlY2lfeGZlciwKPiDCoMKgwqAgPsKgwqAgK307 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2b2lkIGFzcGVlZF9wZWNp X3Jlc2V0X2NvbnRyb2xfcmVsZWFzZSh2b2lkICpkYXRhKQo+IMKgwqDCoCA+wqDCoCArewo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXNldF9jb250cm9sX2Fzc2VydChkYXRhKTsKPiDC oMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIGlu dCBkZXZtX2FzcGVlZF9wZWNpX3Jlc2V0X2NvbnRyb2xfZGVhc3NlcnQoc3RydWN0IGRldmljZQo+ ICpkZXYsIHN0cnVjdCByZXNldF9jb250cm9sICpyc3QpCj4gwqDCoMKgID7CoMKgICt7Cj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChyc3Qp Owo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAg Kwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2bV9hZGRfYWN0aW9uX29y X3Jlc2V0KGRldiwKPiBhc3BlZWRfcGVjaV9yZXNldF9jb250cm9sX3JlbGVhc2UsIHJzdCk7Cj4g wqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2 b2lkIGFzcGVlZF9wZWNpX2Nsa19yZWxlYXNlKHZvaWQgKmRhdGEpCj4gwqDCoMKgID7CoMKgICt7 Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRh KTsKPiDCoMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIGludCBkZXZtX2FzcGVlZF9wZWNpX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgY2xrCj4gKmNsaykKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8KgwqDC oMKgwqDCoMKgaW50IHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKg wqDCoMKgwqByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2xrKTsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGFzcGVlZF9w ZWNpX2Nsa19yZWxlYXNlLAo+IGNsayk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbnQgYXNwZWVkX3BlY2lfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFzcGVlZF9wZWNpICpwcml2Owo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoHByaXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9m KCpwcml2KSwgR0ZQX0tFUk5FTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmICgh cHJpdikKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRU5PTUVNOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHByaXYtPmRldiA9ICZwZGV2LT5kZXY7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGRl dl9zZXRfZHJ2ZGF0YShwcml2LT5kZXYsIHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBf cmVzb3VyY2UocGRldiwgMCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChJU19F UlIocHJpdi0+YmFzZSkpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gUFRSX0VSUihwcml2LT5iYXNlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBwcml2LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYs IDApOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoIXByaXYtPmlycSkKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBwcml2LT5pcnE7 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBwcml2LT5pcnEsCj4gYXNwZWVkX3BlY2lfaXJxX2hh bmRsZXIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsICJwZWNpLWFzcGVlZCIsIHByaXYpOwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpbml0X2NvbXBsZXRpb24oJnByaXYtPnhmZXJfY29tcGxl dGUpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaW5pdCgmcHJpdi0+ bG9jayk7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcHJp di0+cnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldCgmcGRldi0+ZGV2LCBOVUxMKTsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihwcml2LT5yc3QpKQo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRldl9lcnJfcHJvYmUo cHJpdi0+ZGV2LCBQVFJfRVJSKHByaXYtPnJzdCksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfcmVzZXRf Y29udHJvbF9kZWFzc2VydChwcml2LT5kZXYsIHByaXYtCj4gPnJzdCk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIHJldCwgImNhbm5v dCBkZWFzc2VydAo+IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmNsayA9IGRldm1fY2xrX2dldChwcml2LT5kZXYs IE5VTEwpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHByaXYtPmNs aykpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIocHJpdi0+Y2xrKSwKPiAiZmFpbGVkIHRv IGdldCBjbGtcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfY2xrX2VuYWJsZShwcml2LT5kZXYsIHByaXYtPmNs ayk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2 LT5kZXYsIHJldCwgImZhaWxlZCB0byBlbmFibGUKPiBjbG9ja1xuIik7Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0 dXAocHJpdik7Cj4gCj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAo cHJpdik7Cj4gCj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg YXNwZWVkX3BlY2lfaW5pdF9yZWdzKHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGNvbnRyb2xsZXIgPSBkZXZtX3BlY2lfY29udHJvbGxlcl9hZGQo cHJpdi0+ZGV2LCAmYXNwZWVkX29wcyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlm IChJU19FUlIoY29udHJvbGxlcikpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIoY29udHJv bGxlciksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJmYWlsZWQgdG8gYWRkIGFzcGVl ZCBwZWNpCj4gY29udHJvbGxlclxuIik7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgcHJpdi0+Y29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cj4gwqDCoMKgID7C oMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqDCoMKgID7C oMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGFzcGVlZF9wZWNpX29mX3RhYmxlW10gPSB7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI0MDAtcGVjaSIsIH0s Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFz dDI1MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGli bGUgPSAiYXNwZWVkLGFzdDI2MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHsgfQo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGFzcGVlZF9wZWNpX29mX3RhYmxlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXNwZWVkX3BlY2lfZHJpdmVy ID0gewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAucHJvYmXCoCA9IGFzcGVlZF9wZWNp X3Byb2JlLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAuZHJpdmVyID0gewo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm5hbWXCoMKgwqDCoMKgwqDC oMKgwqDCoCA9ICJwZWNpLWFzcGVlZCIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAub2ZfbWF0Y2hfdGFibGUgPSBhc3BlZWRfcGVjaV9vZl90YWJsZSwKPiDC oMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqAgPsKgwqAgK307Cj4gwqDCoMKg ID7CoMKgICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzcGVlZF9wZWNpX2RyaXZlcik7Cj4gwqDC oMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9BVVRIT1IoIlJ5YW4gQ2hlbiA8cnlh bl9jaGVuQGFzcGVlZHRlY2guY29tPiIpOwo+IMKgwqDCoCA+wqDCoCArTU9EVUxFX0FVVEhPUigi SmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwuY29tPiIpOwo+IMKgwqDCoCA+ wqDCoCArTU9EVUxFX0RFU0NSSVBUSU9OKCJBU1BFRUQgUEVDSSBkcml2ZXIiKTsKPiDCoMKgwqAg PsKgwqAgK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9JTVBP UlRfTlMoUEVDSSk7Cj4gwqDCoMKgID7CoMKgIC0tIAo+IMKgwqDCoCA+wqDCoCAyLjMxLjEKPiAK PiAKPiAKCg== 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 7BE0AC433EF for ; Tue, 7 Dec 2021 18:29:17 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4J7pjR5njwz308h for ; Wed, 8 Dec 2021 05:29:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-intel-onmicrosoft-com header.b=E9qTCsKG; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=intel.com (client-ip=134.134.136.31; helo=mga06.intel.com; envelope-from=iwona.winiarska@intel.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-intel-onmicrosoft-com header.b=E9qTCsKG; dkim-atps=neutral Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4J7phJ3qd8z2ynm; Wed, 8 Dec 2021 05:28:09 +1100 (AEDT) X-IronPort-AV: E=McAfee;i="6200,9189,10190"; a="298447233" X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="298447233" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Dec 2021 10:09:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="542895662" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 07 Dec 2021 10:09:39 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 7 Dec 2021 10:09:38 -0800 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5WhQHLYYzDbs7xcyVKDhLEhNGvVlwE1meOi7yp0Hrzy+La/Ytbshu0V2pmhv75azQcQOZrU50WtehsYzIt6l7C0zD45sXDvsXeMeaXnujVeZXFicKOBKZjcpuM+uMNC4MkkAfu1bHaCUWzDv33Px3MbBRJln1CL2wXMzOwIJcsyMYdnAw5DAdL66pUjmdXoRdQs8dAA6VEbChorMUyd0gDbvkXC+8W/zJ3ooQ8VJeRKZGcI7l6e21xq+OTRLBBB64MI9WRPMinR2mdl5Uh4qubuf+TwIjrJP/Xb/DlmJpav62VatQjP67gcoECubTLhPr1hwIUHNWhFtKfFZh8d1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=KtYTkX9NYFMsXpRjWF2o+M84i/vLw+k68qOB3sgjjOWofWoIQ+ByrZp1mzoIon4ABdoE8rcF3kXWr9HJYBGgsawluJLHTQQmiGQWoYbrCqwIfNBbvp0NgGzBF/zmrtYMB5J/D0pgXUy3833CqMbVpmjQUXty6Cqs26aHasOSTEbUmEkQZaUVKv6RPtjpE4mcoPbdjr9Pme3sPliV+x7uQumF3JUjCtnojNY891DznB3lgovTCifINhRJYp2LtcCJC2AI332XkUVODfbsWna1UeshbCmPfwDkU+BZejKoPGXuSG9kwPviwCmyF/iIL2YG2GIQrweXGn9GEHMYHl4jxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=E9qTCsKGZlyTJpxTZwDUFfyIqueLjicyWyLFosRAKJ0YiQcyPCLJD8Qnvs8btb1RvxdMm+zVb1Hdl06tDd7jfc01HUs2jn55zzKD9YiP+5Ul7OC9D91SZU76qoe9yDW1YIiJFTWa0/VCWSodYeg5AOguALX2n119v0ALdPsHmt4= Received: from MW4PR11MB5823.namprd11.prod.outlook.com (2603:10b6:303:186::12) by MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.20; Tue, 7 Dec 2021 18:09:36 +0000 Received: from MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de]) by MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de%5]) with mapi id 15.20.4755.022; Tue, 7 Dec 2021 18:09:36 +0000 From: "Winiarska, Iwona" To: "billy_tsai@aspeedtech.com" , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "openbmc@lists.ozlabs.org" Subject: Re: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Topic: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Index: AQHX4HPaxGefPohjA0+Yy1Npn3kxdawlAxSAgAJnMQA= Date: Tue, 7 Dec 2021 18:09:36 +0000 Message-ID: <670e4bd2c9d8dc91d1c9fca2b050915942b2a9b2.camel@intel.com> References: <20211123140706.2945700-1-iwona.winiarska@intel.com> <20211123140706.2945700-6-iwona.winiarska@intel.com> <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> In-Reply-To: <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> Accept-Language: en-US, pl-PL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.4 (3.40.4-2.fc34) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 x-ms-traffictypediagnostic: MW5PR11MB5906:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr,ExtFwd x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SWZ/FuEFEl3TvGqtjJEOOyfjlqj2I3vtA7vfxTyQW9/exuziTSoE5QozT6lPg97CCukz+YH2k01g9rJ39mRsb57NzrYg0H/yi9ntOyDfincOKGLuRetW4jnwIYibcGGrLxSipRGyQm31XgSngCSAimFkI8ZL7CJRloxYVKviq7VgXkzBQtlwlh7Iea2dvQ5OrJ3RewYxQLNGy5Um8B7qpMa0Z0V2OyPsEeDUPjIcAL6yDg7aI6NBTtC50gl2AVSRbQF3CEfElq1OfO0XVRU2wCpDOWBcvMny7co8lAyUE5QTeGZq803QjHrNPPWWJaEncroNDhcZUmp6sh6qQRCfA7mcnsjUyGXx5zqbHJVINj58kGFBypwZBaQ13XFv6FdwATjuY4w3EFTmx3rpHO2ZTJndY+UY57NwwAG00wkiqWu/KBkdit3MDbxbjxHKcYKofAmdUuzm/XklLCW9AG/9bci3qNIe03GKdqDHc01qws0jznWphwC2bf4j2TeSZu2NZccx2aQbp8SsX9l2N0idX/+G0XAOJ/2R3lZ/AaK9Ya4SDNEu+bN7zxdyTAPEYtZITe0d696ZpwoQQ0ZwhT4upHy3WDLGYCpLHyU+mgnburJ0UvGjRb+s9pX2PKU0W4Ni4CK583Zok7R5m+5c49UP50mY3zTEb9DAEcsXPrCIcrceL1CjvQasF8Vf0MTtaK9FCspxXq5sREVYR6BZ1rngYg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW4PR11MB5823.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(64756008)(66476007)(66556008)(38070700005)(71200400001)(76116006)(2906002)(66946007)(66446008)(7416002)(91956017)(53546011)(6506007)(6486002)(4326008)(316002)(6512007)(122000001)(186003)(26005)(508600001)(86362001)(8936002)(83380400001)(38100700002)(2616005)(110136005)(5660300002)(36756003)(54906003)(8676002)(82960400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?djI4Y0pzMjZuSWxLNnVYb0x0Q2RwRnJIcEg5Y2huRjFLZFhUL1F1eGtTK2ww?= =?utf-8?B?bmYvdGtOSlZtMjhlY2RWMGZXdnZRQndZcW45TnFPcWZRVjFTbHkxbjc1aks3?= =?utf-8?B?Z05KVHB1b1VmcC9qRVBQM3RUekUwQnZPTzkyeDMxR2lHcFJiMFo2a0VKZ1BX?= =?utf-8?B?RXAxSHVrRGJHeksrU1FxWlpiZ0tFL3podmwzSGVHakQ4cFpSRE1mQkMwemJJ?= =?utf-8?B?WjcweTFNV000VkQwOG5xcDJxMmVtV0dkeXk5WkZxU2F6bnIzcm1RYnFOZkRV?= =?utf-8?B?cVV2RFdvNHE0YTlKRG8wV3NoelRUSDdVTGIvcGZnQUo0SitUdmlRQXpzTG5l?= =?utf-8?B?SHpyZFdhZ0s2bGFPNkZEbVJRQisrekhoM0hOTTRObkp3QTkxUVdHQTlBWW9F?= =?utf-8?B?TllhSjFsd0U5SzY3UHYwQ3pSeHpNRXBpV3VvWm9jcVBFRnMvTWliODVUSDhX?= =?utf-8?B?MDI3QWNZeVFITXJwT1phMUxnK0wvc1VoeUsrem9HWmNyNzVlRzJMZ2hKUS9i?= =?utf-8?B?YVlmYjRiQnlxTTR1T2pSRS91elNLZ0JXVUhqRUlSdUlUMWRZNjJ2aXk0dXlL?= =?utf-8?B?U1VvN2QzL1QrcGlUV2MzOU5MTEZreFVUbGhjSGRkN2l2UDByTTFDdTdNOHRo?= =?utf-8?B?c0FadkllU2VwQUZJdlhtMFJTcDVpQXV0OHdXM3IzV3pvVUs1WVhDZVZIengz?= =?utf-8?B?UlJXUUovTVkxc0dxNlV4ekZIaXFvcHN0ZjRVelZzaDJqUTdkQlA1ei9kOVhp?= =?utf-8?B?Q0hkekU4aG1HZ2g2WmM5ejlMeXNQOTBWWG94U3pYdEJ5WkZpMkhBTitDNzcy?= =?utf-8?B?VldEYTRFUGhuOExNRjY2SE9aSWpZSzRDL01OWWpZa1E5YmN0blNWa2Q1R2w5?= =?utf-8?B?QXZTbzBEVnorcExucy9pWEVrNTdtcUNuSUE2UnRuRmpXMVMrUnhRM01uMVRP?= =?utf-8?B?MUNLNENZelpTVWdGSjdyYnV6MmFYb05Jc2lqZXBsQzRnMjU4VG9iRTRoWVQ3?= =?utf-8?B?WnBkcWJHeE5pOUEyL011QzMvSWwxU0VYUXhhZDgycDErRFZGc1ZrSkpkMFBK?= =?utf-8?B?UVZvbnFTdmtSa05GMmlpRmFIa1Jzd1RUUHVhaXloQjRBcUt5VER5ZlAyUnJ6?= =?utf-8?B?QVoxT1RKelNoc3U4UzA3WHpxWUlVQjZmZWRYbjNuODdzUklHVFd3ZlBocVZu?= =?utf-8?B?VzUwcFhXMk9MMnJRVFZJREQ3QWRjaFhyWXRraTE0cW9LL1EyYnZxMmYzUnlm?= =?utf-8?B?UzJDd05UTXErS2RDTFBTbGwwZ0ZyNGNLdlhKVlowZ21QQXFTNStlVVV1VG9k?= =?utf-8?B?R2FZRUt1aHZUNTRUOG85ZmhZWkwwc0lqVGlUeWJZTkplZksreER2VG1lZExo?= =?utf-8?B?TlF0OUcyU2RpMlZBdFFnd2ZnUXlHSmRMK1d6TmN6bFpoZjFyR1kvWkRUTmNj?= =?utf-8?B?VE13Y3M1Q2toZ05jRXJNOHRhSE1nK3NHUzNmajJ1d3JzczYvOXpYOGlhNGJz?= =?utf-8?B?YlN2SzJ5anF2QVM1NkYxRVFjaWM4bHVWd3hnUHpyRmlPbWpHTGVDMGtvNnhI?= =?utf-8?B?ZGdQOUVUWUdybVFFTzlrTU5aSWR4VmppekhxSUdEV1VRMzFoTkhtMCtzV2c4?= =?utf-8?B?c2FBTENRZGZRcnJuRTN6SkU5blo5ZjVjN2h1U29Vc3l6NE1pb1RWNFFnL1lx?= =?utf-8?B?eklYdFV6RndjNHZIajA2cnQwM3YrMFlaSWkvQllrazhmQ3BVRC9iWHVFYlY1?= =?utf-8?B?WFZXQnRkOHhXWG5vZXRQdExCNjUrZnhJZFdFZ2o5KzN2K0doUVpFeGQ5VC94?= =?utf-8?B?L3RFSk10SHJQbDlqeUQvaXRicVVJTXFFTVVRbStnOGhvekFkd09oOVk0NU4y?= =?utf-8?B?R3lNRnk2cEx2YTJad05TRlRJeHNpdDBiMW9qZVg3MitaNzMwNVNXOVk1K091?= =?utf-8?B?Yy9pWGJUS0loN1FRVWJXT0ZIR0syRUVjTldMWVdyNTU0MHFlM2dhTTZMcmRr?= =?utf-8?B?c25CSUF0WldKQis0RmduRXdHNTlhMUpxTFdLeFUzeVBNUmo0b1pTUnptM2Mv?= =?utf-8?B?Y3g3dEJCQVRzcmt2K0dkUGEwVGUrdHZyY01zRktvQ2VrdkdxUGFuQThXdU1L?= =?utf-8?B?cFY5Z1BKbUg4Q0R5d2NGYkN3STZnWW9XUkFXeHBOK2oyVGx0R1FvcjhIVllO?= =?utf-8?B?NzFBWGlJZlpLZzNmU3dxOG04QlpGRzk1OWdmcHlYd3RYRGxWQWhlVTRVSHVX?= =?utf-8?Q?GwgzE3a6vMpGNTafvTDRlJ9rtpXHQgav0PGQmpINzQ=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5823.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2021 18:09:36.1691 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aPxoaQIQwzC4iZ0KY3OacBsWPNXlpeJfnVkdTMsyKZTwuXVo5Rol08/caUl5NutJ4w+RFGVvpeJtygrUSUiEtzK9AUNBGumWW4lvx7L4MbA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR11MB5906 X-OriginatorOrg: intel.com X-BeenThere: openbmc@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development list for OpenBMC List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linux-hwmon@vger.kernel.org" , "devicetree@vger.kernel.org" , "jae.hyun.yoo@linux.intel.com" , "Luck, Tony" , "arnd@arndb.de" , "linux-aspeed@lists.ozlabs.org" , "corbet@lwn.net" , "andrew@aj.id.au" , "rdunlap@infradead.org" , "linux-doc@vger.kernel.org" , "pierre-louis.bossart@linux.intel.com" , "robh+dt@kernel.org" , "Hansen, Dave" , "jdelvare@suse.com" , "bp@alien8.de" , "linux-arm-kernel@lists.infradead.org" , "olof@lixom.net" , "Williams, Dan J" , "andriy.shevchenko@linux.intel.com" , "linux@roeck-us.net" , "zweiss@equinix.com" Errors-To: openbmc-bounces+openbmc=archiver.kernel.org@lists.ozlabs.org Sender: "openbmc" T24gTW9uLCAyMDIxLTEyLTA2IGF0IDA1OjI3ICswMDAwLCBCaWxseSBUc2FpIHdyb3RlOgo+IEhp LAo+IAo+IEFmdGVyIHJldmlld2luZyB0aGUgcGF0Y2gsIEkgaGF2ZSBzb21lIHN1Z2dlc3Rpb25z IGZvciB5b3UuIFBsZWFzZSBzZWUgdGhlCj4gcmVwbHkgaW5saW5lLgo+IAo+IE9uIDIwMjEvMTEv MjMsIDEwOjExIFBNLCAib3BlbmJtYyBvbiBiZWhhbGYgb2YgSXdvbmEgV2luaWFyc2thIgo+IDxv cGVuYm1jLWJvdW5jZXMrYmlsbHlfdHNhaT1hc3BlZWR0ZWNoLmNvbUBsaXN0cy5vemxhYnMub3Jn wqBvbiBiZWhhbGYgb2YKPiBpd29uYS53aW5pYXJza2FAaW50ZWwuY29tPiB3cm90ZToKPiAKPiDC oMKgwqAgPsKgwqAgRnJvbTogSmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwu Y29tPgo+IEFkZCB0aGUgZGVmaW5lIGZvciB0aGUgYnVzIGZyZXF1ZW5jeQo+IMKgwqDCoMKgwqDC oMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFVRU5DWV9NSU7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgMjAwMAo+IMKgwqDCoMKgwqDCoMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFV RU5DWV9ERUZBVUxUwqDCoMKgwqDCoMKgwqAyMDAwCj4gwqDCoMKgwqDCoMKgwqAgI2RlZmluZSBB U1BFRURfUEVDSV9CVVNfRlJFUVVFTkNZX01BWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMDAwMDAw Cj4gCj4gwqDCoCA+wqDCoCArc3RydWN0IGFzcGVlZF9wZWNpIHsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2Owo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2b2lkIF9faW9tZW0gKmJhc2U7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBjbGsgKmNsazsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHJlc2V0X2NvbnRyb2wgKnJzdDsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaW50 IGlycTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3BpbmxvY2tfdCBsb2NrOyAvKiB0 byBzeW5jIGNvbXBsZXRpb24gc3RhdHVzIGhhbmRsaW5nICovCj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBjb21wbGV0aW9uIHhmZXJfY29tcGxldGU7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHUzMiBzdGF0dXM7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHUzMiBjbWRfdGltZW91dF9tczsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIG1z Z190aW1pbmc7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHUzMiBhZGRyX3RpbWluZzsK PiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIHJkX3NhbXBsaW5nX3BvaW50Owo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY2xrX2RpdjsKPiAKPiBBZGQgdGhlIHBhcmVt ZXRlciB0byBzdG9yZSB0aGUgYnVzX2ZyZXEgZnJvbSB0aGUgZHRzIHByb3BlcnR5Cj4gwqDCoMKg wqDCoMKgwqAgdTMyIGJ1c19mcmVxOwo+IAo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKg wqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfaW5pdF9yZWdzKHN0 cnVjdCBhc3BlZWRfcGVjaSAqcHJpdikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9QUkVQKEFTUEVFRF9QRUNJX0NUUkxfQ0xLX0RJVl9N QVNLLAo+IEFTUEVFRF9QRUNJX0NMS19ESVZfREVGQVVMVCk7Cj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfQ0xLX0VOOwo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5iYXNlICsgQVNQRUVEX1BFQ0lf Q1RSTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoCAqIFRpbWluZyBuZWdvdGlhdGlvbiBwZXJpb2Qgc2V0dGluZy4KPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgICogVGhlIHVuaXQgb2YgdGhlIHByb2dyYW1tZWQgdmFs dWUgaXMgNCB0aW1lcyBvZiBQRUNJIGNsb2NrCj4gcGVyaW9kLgo+IMKgwqDCoCA+wqDCoCArwqDC oMKgwqDCoMKgwqAgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdmFsID0gRklFTERf UFJFUChBU1BFRURfUEVDSV9UX05FR09fTVNHX01BU0ssIHByaXYtCj4gPm1zZ190aW1pbmcpOwo+ IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChBU1BFRURfUEVD SV9UX05FR09fQUREUl9NQVNLLCBwcml2LQo+ID5hZGRyX3RpbWluZyk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHByaXYtPmJhc2UgKyBBU1BFRURfUEVDSV9USU1J TkdfTkVHT1RJQVRJT04pOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoC8qIENsZWFyIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDC oMKgdmFsID0gcmVhZGwocHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpIHwKPiBBU1BF RURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgd3JpdGVsKHZh bCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qIFNldCB0aW1pbmcgbmVnb3RpYXRpb24gbW9k ZSBhbmQgZW5hYmxlIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg dmFsID0gRklFTERfUFJFUChBU1BFRURfUEVDSV9USU1JTkdfTkVHT19TRUxfTUFTSywKPiBBU1BF RURfUEVDSV8xU1RfQklUX09GX0FERFJfTkVHTyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHZhbCB8PSBBU1BFRURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgd3JpdGVsKHZhbCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9DVFJMKTsKPiDC oMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9Q UkVQKEFTUEVFRF9QRUNJX0NUUkxfU0FNUExJTkdfTUFTSywgcHJpdi0KPiA+cmRfc2FtcGxpbmdf cG9pbnQpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChB U1BFRURfUEVDSV9DVFJMX0NMS19ESVZfTUFTSywgcHJpdi0KPiA+Y2xrX2Rpdik7Cj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfRU47Cj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lf Q0xLX0VOOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5i YXNlICsgQVNQRUVEX1BFQ0lfQ1RSTCk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbmxpbmUgaW50IGFzcGVlZF9wZWNpX2NoZWNrX2lk bGUoc3RydWN0IGFzcGVlZF9wZWNpICpwcml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY21kX3N0cyA9IHJlYWRsKHByaXYtPmJhc2UgKyBBU1BF RURfUEVDSV9DTUQpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoGlmIChGSUVMRF9HRVQoQVNQRUVEX1BFQ0lfQ01EX1NUU19NQVNLLCBjbWRfc3RzKSA9PQo+ IEFTUEVFRF9QRUNJX0NNRF9TVFNfQUREUl9UX05FR08pCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7Cj4gCj4g QXMgbG9uZyBhcyB0aGUgc3RhdGUgaXMgbm90IGlkbGUsIHRoZSBjb250cm9sbGVyIG5lZWQgdG8g cmVpbml0aWFsaXplIHRoZSBQRUNJCj4gcmVnaXN0ZXIgZm9yIHNvbHZpbmcgdGhlIFBFQ0kgY29u dHJvbGxlciBoYW5nLgo+IEJlZm9yZSBhc3QyNjAwQTMsIHRoZSBjb250cm9sbGVyIHNob3VsZCBh c3NlcnQvZGUtYXNzZXJ0IHRoZSByZXNldCBmb3Igc29sdmluZwo+IHRoZSBoYW5nIGlzc3VlLgo+ IEZvciBiYWNrd2FyZCBjb21wYXRpYmxlLCBJIHN1Z2dlc3QgdG8gYWRkIHRoZSByZXNldCBhc3Nl cnQvZGUtYXNzZXJ0IGluIHRoaXMKPiBwbGFjZS4KPiDCoMKgwqDCoMKgwqDCoCBpZiAoRklFTERf R0VUKEFTUEVFRF9QRUNJX0NNRF9TVFNfTUFTSywgY21kX3N0cykpIHsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHBy aXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7 Cj4gwqDCoMKgwqDCoMKgwqAgfQoKQWNrLgoKPiAKCiguLi4pCgo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIHZvaWQgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0dXAoc3RydWN0IGFzcGVlZF9wZWNpICpw cml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBhc3Bl ZWRfcGVjaV9wcm9wZXJ0eV9zYW5pdGl6ZShwcml2LT5kZXYsICJhc3BlZWQsY2xvY2stCj4gZGl2 aWRlciIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9NQVgsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9ERUZBVUxULAo+ICZwcml2LT5jbGtfZGl2KTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJpdi0+ZGV2LCAiYXNwZWVkLG1z Zy10aW1pbmciLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIEFTUEVFRF9QRUNJ X01TR19USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFTUEVFRF9Q RUNJX01TR19USU1JTkdfREVGQVVMVCwKPiAmcHJpdi0+bXNnX3RpbWluZyk7Cj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRl diwgImFzcGVlZCxhZGRyLXRpbWluZyIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MCwgQVNQRUVEX1BFQ0lfQUREUl9USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEFTUEVFRF9QRUNJX0FERFJfVElNSU5HX0RFRkFVTFQsCj4gJnByaXYtPmFkZHJfdGlt aW5nKTsKPiAKPiBVc2UgdGhlIGJ1cy1mcmVxdWVuY3kgdG8gcmVwbGFjZSB0aGUgcHJvcGVydHkg YWJvdmU6Cj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJp di0+ZGV2LCAiYnVzLWZyZXF1ZW5jeSIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFTUEVFRF9QRUNJX0JVU19GUkVRVUVO Q1lfTUlOLAo+IEFTUEVFRF9QRUNJX0JVU19GUkVRVUVOQ1lfTUFYLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBU1BFRURf UEVDSV9CVVNfRlJFUVVFTkNZX0RFRkFVTFQsICZwcml2LQo+ID5idXNfZnJlcSk7Cj4gCj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHBy aXYtPmRldiwgImFzcGVlZCxyZC1zYW1wbGluZy0KPiBwb2ludCIsCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMCwKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19QT0lOVF9NQVgsCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19Q T0lOVF9ERUZBVUxULAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZwcml2LT5yZF9z YW1wbGluZ19wb2ludCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNp X3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRldiwgImNtZC10aW1lb3V0LW1zIiwKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxLAo+IEFTUEVFRF9QRUNJX0NNRF9USU1FT1VUX01TX01B WCwKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IEFTUEVFRF9QRUNJX0NNRF9USU1F T1VUX01TX0RFRkFVTFQsICZwcml2LT5jbWRfdGltZW91dF9tcyk7Cj4gwqDCoMKgID7CoMKgICt9 Cj4gQWRkIHRoZSBmdW5jdGlvbiBvZiBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0aW5nIHRoZSBzZXR0 aW5ncyB0byBhZGFwdCB0byB0aGUgYnVzCj4gZnJlcXVlbmN5LgoKSWYgd2Ugd2FudCB0byBnbyB3 aXRoIGV4cG9zaW5nICJidXMtZnJlcXVlbmN5IiwgaW5zdGVhZCBvZiBoYXJkd2FyZSBwcm9wZXJ0 aWVzLApJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBvcGVuY29kZSBpdCBpbiB0aGlzIHdheS4KUmF0 aGVyLCB3ZSBzaG91bGQgZXhwb3NlIGl0IGFzIGEgY2xvY2ssIHBhc3NpbmcgImNsb2NrLWZyZXF1 ZW5jeSIgcHJvcGVydHkgdmlhCkRUUyBhbmQgZXhwb3NpbmcgaXQgdXNpbmcgc3RydWN0IGNsa19o dy4KV2Ugd291bGQgdGhlbiBqdXN0IGNhbGwgY2xvY2sgQVBJIChjbGtfcm91bmRfcmF0ZSAvIGNs a19zZXRfcmF0ZSBldGMpLApwcmVzZW50aW5nIHRoaXMgYXMgd2hhdCBpdCBhY3R1YWxseSBpcyAo YSAiY3VzdG9tIiBjbG9jayBkaXZpZGVyKS4KClRoYW5rcwotSXdvbmEKCj4gwqDCoMKgwqDCoMKg wqAgc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAoc3RydWN0IGFzcGVlZF9w ZWNpICpwcml2KQo+IMKgwqDCoMKgwqDCoMKgIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdW5zaWduZWQgbG9uZyBzcmNfY2xrX3JhdGU7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBkZWx0YV92YWx1ZSwgZGVsdGFfdG1wLCBjbGtfZGl2aXNvciwgY2xrX2Rp dmlzb3JfdG1wOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbXNnX3RpbWlu ZywgY2xrX2RpdjsKPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX2Nsa19y YXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7Cj4gCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBQRUNJIGJ1 cyBmcmVxwqAgPSAoc291cmNlIGNsayByYXRlKSAvICg0ICoKPiAoUEVDSTA0WzE1OjhdKjQrMSkg KiAoMSA8PCBQRUNJMDBbMTA6OF0pKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogKDEgPDwgUEVDSTAwWzEwOjhdKSAqIChQRUNJMDRbMTU6OF0qNCsxKSA9IChzb3VyY2UgY2xr Cj4gcmF0ZSkgLyAoNCAqIFBFQ0kgYnVzIGZyZXEgKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsa19kaXZpc29y ID0gc3JjX2Nsa19yYXRlIC8gKDQgKiBwcml2LT5idXNfZnJlcSk7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRlbHRhX3ZhbHVlID0gY2xrX2Rpdmlzb3I7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIEZpbmQgdGhlIGNsb3Nlc3QgZGl2aXNvciBmb3IgYnVzLWZy ZXF1ZW5jeSAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKG1zZ190aW1p bmcgPSAxOyBtc2dfdGltaW5nIDw9IDI1NTsgbXNnX3RpbWluZysrKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChjbGtfZGl2ID0gMDsgY2xrX2Rp diA8IDc7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2xrX2RpdisrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2Rpdmlzb3JfdG1wID0gKDEg PDwgY2xrX2RpdikgKgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1z Z190aW1pbmcgKiA0ICsgMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVsdGFfdG1wID0gYWJzKGNsa19kaXZpc29yIC0K PiBjbGtfZGl2aXNvcl90bXApOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkZWx0YV90bXAgPCBkZWx0YV92YWx1ZSkg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWx0YV92YWx1ZSA9IGRlbHRhX3RtcDsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+bXNnX3RpbWluZyA9IG1zZ190aW1pbmc7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByaXYtPmFkZHJfdGltaW5nID0gcHJpdi0+bXNnX3RpbWluZzsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+Y2xrX2RpdiA9IGNsa19kaXY7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDC oMKgwqDCoMKgIH0KPiAKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHN0 cnVjdCBwZWNpX2NvbnRyb2xsZXJfb3BzIGFzcGVlZF9vcHMgPSB7Cj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoC54ZmVyID0gYXNwZWVkX3BlY2lfeGZlciwKPiDCoMKgwqAgPsKgwqAgK307 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2b2lkIGFzcGVlZF9wZWNp X3Jlc2V0X2NvbnRyb2xfcmVsZWFzZSh2b2lkICpkYXRhKQo+IMKgwqDCoCA+wqDCoCArewo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXNldF9jb250cm9sX2Fzc2VydChkYXRhKTsKPiDC oMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIGlu dCBkZXZtX2FzcGVlZF9wZWNpX3Jlc2V0X2NvbnRyb2xfZGVhc3NlcnQoc3RydWN0IGRldmljZQo+ ICpkZXYsIHN0cnVjdCByZXNldF9jb250cm9sICpyc3QpCj4gwqDCoMKgID7CoMKgICt7Cj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChyc3Qp Owo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAg Kwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2bV9hZGRfYWN0aW9uX29y X3Jlc2V0KGRldiwKPiBhc3BlZWRfcGVjaV9yZXNldF9jb250cm9sX3JlbGVhc2UsIHJzdCk7Cj4g wqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2 b2lkIGFzcGVlZF9wZWNpX2Nsa19yZWxlYXNlKHZvaWQgKmRhdGEpCj4gwqDCoMKgID7CoMKgICt7 Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRh KTsKPiDCoMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIGludCBkZXZtX2FzcGVlZF9wZWNpX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgY2xrCj4gKmNsaykKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8KgwqDC oMKgwqDCoMKgaW50IHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKg wqDCoMKgwqByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2xrKTsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGFzcGVlZF9w ZWNpX2Nsa19yZWxlYXNlLAo+IGNsayk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbnQgYXNwZWVkX3BlY2lfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFzcGVlZF9wZWNpICpwcml2Owo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoHByaXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9m KCpwcml2KSwgR0ZQX0tFUk5FTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmICgh cHJpdikKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRU5PTUVNOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHByaXYtPmRldiA9ICZwZGV2LT5kZXY7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGRl dl9zZXRfZHJ2ZGF0YShwcml2LT5kZXYsIHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBf cmVzb3VyY2UocGRldiwgMCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChJU19F UlIocHJpdi0+YmFzZSkpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gUFRSX0VSUihwcml2LT5iYXNlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBwcml2LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYs IDApOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoIXByaXYtPmlycSkKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBwcml2LT5pcnE7 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBwcml2LT5pcnEsCj4gYXNwZWVkX3BlY2lfaXJxX2hh bmRsZXIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsICJwZWNpLWFzcGVlZCIsIHByaXYpOwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpbml0X2NvbXBsZXRpb24oJnByaXYtPnhmZXJfY29tcGxl dGUpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaW5pdCgmcHJpdi0+ bG9jayk7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcHJp di0+cnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldCgmcGRldi0+ZGV2LCBOVUxMKTsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihwcml2LT5yc3QpKQo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRldl9lcnJfcHJvYmUo cHJpdi0+ZGV2LCBQVFJfRVJSKHByaXYtPnJzdCksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfcmVzZXRf Y29udHJvbF9kZWFzc2VydChwcml2LT5kZXYsIHByaXYtCj4gPnJzdCk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIHJldCwgImNhbm5v dCBkZWFzc2VydAo+IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmNsayA9IGRldm1fY2xrX2dldChwcml2LT5kZXYs IE5VTEwpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHByaXYtPmNs aykpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIocHJpdi0+Y2xrKSwKPiAiZmFpbGVkIHRv IGdldCBjbGtcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfY2xrX2VuYWJsZShwcml2LT5kZXYsIHByaXYtPmNs ayk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2 LT5kZXYsIHJldCwgImZhaWxlZCB0byBlbmFibGUKPiBjbG9ja1xuIik7Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0 dXAocHJpdik7Cj4gCj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAo cHJpdik7Cj4gCj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg YXNwZWVkX3BlY2lfaW5pdF9yZWdzKHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGNvbnRyb2xsZXIgPSBkZXZtX3BlY2lfY29udHJvbGxlcl9hZGQo cHJpdi0+ZGV2LCAmYXNwZWVkX29wcyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlm IChJU19FUlIoY29udHJvbGxlcikpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIoY29udHJv bGxlciksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJmYWlsZWQgdG8gYWRkIGFzcGVl ZCBwZWNpCj4gY29udHJvbGxlclxuIik7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgcHJpdi0+Y29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cj4gwqDCoMKgID7C oMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqDCoMKgID7C oMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGFzcGVlZF9wZWNpX29mX3RhYmxlW10gPSB7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI0MDAtcGVjaSIsIH0s Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFz dDI1MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGli bGUgPSAiYXNwZWVkLGFzdDI2MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHsgfQo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGFzcGVlZF9wZWNpX29mX3RhYmxlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXNwZWVkX3BlY2lfZHJpdmVy ID0gewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAucHJvYmXCoCA9IGFzcGVlZF9wZWNp X3Byb2JlLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAuZHJpdmVyID0gewo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm5hbWXCoMKgwqDCoMKgwqDC oMKgwqDCoCA9ICJwZWNpLWFzcGVlZCIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAub2ZfbWF0Y2hfdGFibGUgPSBhc3BlZWRfcGVjaV9vZl90YWJsZSwKPiDC oMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqAgPsKgwqAgK307Cj4gwqDCoMKg ID7CoMKgICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzcGVlZF9wZWNpX2RyaXZlcik7Cj4gwqDC oMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9BVVRIT1IoIlJ5YW4gQ2hlbiA8cnlh bl9jaGVuQGFzcGVlZHRlY2guY29tPiIpOwo+IMKgwqDCoCA+wqDCoCArTU9EVUxFX0FVVEhPUigi SmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwuY29tPiIpOwo+IMKgwqDCoCA+ wqDCoCArTU9EVUxFX0RFU0NSSVBUSU9OKCJBU1BFRUQgUEVDSSBkcml2ZXIiKTsKPiDCoMKgwqAg PsKgwqAgK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9JTVBP UlRfTlMoUEVDSSk7Cj4gwqDCoMKgID7CoMKgIC0tIAo+IMKgwqDCoCA+wqDCoCAyLjMxLjEKPiAK PiAKPiAKCg== 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 BF378C433FE for ; Tue, 7 Dec 2021 18:31:13 +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:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=f4hVnVLHAQuBJxqspA/TiwJAKZCevIPLDZgQOhh7FwU=; b=iRnkfH8CU24EmP NsnIHm3mK6m/QHSABXtXSHTv7Ki+bhPTtbIptqaZJeSX/PcK/Eo8JWmADMboJ/oAp35ad4CvHEvh8 y5NO3o1Go+cntQVhgOJSy+9kJ39auN6FQBaq82D+ZDTWJnjEBBmFTKdLPl+7usxr9vDDsGStuUIMn Zo4v8xEd4reOKsOcHYLWuLCqd3PFYRLiV2HZIkC/gapGHRrDpX8FT+uP+/6RYIdU3vocZK625OSXJ Po/fAq3CHChBgB/oJBV3XIzIVWczCXEVUvfjtrXp3aWwCJm64jaOtvpJaDIm8UQBwZRUcVuAGsgCM ADbz0UB7CDQbvUAJhPLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mufCy-009l8g-TV; Tue, 07 Dec 2021 18:28:57 +0000 Received: from mga09.intel.com ([134.134.136.24]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mufCO-009ktu-UV for linux-arm-kernel@lists.infradead.org; Tue, 07 Dec 2021 18:28:23 +0000 X-IronPort-AV: E=McAfee;i="6200,9189,10190"; a="237459720" X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="237459720" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Dec 2021 10:09:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,295,1631602800"; d="scan'208";a="542895662" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 07 Dec 2021 10:09:39 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Tue, 7 Dec 2021 10:09:38 -0800 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Tue, 7 Dec 2021 10:09:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5WhQHLYYzDbs7xcyVKDhLEhNGvVlwE1meOi7yp0Hrzy+La/Ytbshu0V2pmhv75azQcQOZrU50WtehsYzIt6l7C0zD45sXDvsXeMeaXnujVeZXFicKOBKZjcpuM+uMNC4MkkAfu1bHaCUWzDv33Px3MbBRJln1CL2wXMzOwIJcsyMYdnAw5DAdL66pUjmdXoRdQs8dAA6VEbChorMUyd0gDbvkXC+8W/zJ3ooQ8VJeRKZGcI7l6e21xq+OTRLBBB64MI9WRPMinR2mdl5Uh4qubuf+TwIjrJP/Xb/DlmJpav62VatQjP67gcoECubTLhPr1hwIUHNWhFtKfFZh8d1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=KtYTkX9NYFMsXpRjWF2o+M84i/vLw+k68qOB3sgjjOWofWoIQ+ByrZp1mzoIon4ABdoE8rcF3kXWr9HJYBGgsawluJLHTQQmiGQWoYbrCqwIfNBbvp0NgGzBF/zmrtYMB5J/D0pgXUy3833CqMbVpmjQUXty6Cqs26aHasOSTEbUmEkQZaUVKv6RPtjpE4mcoPbdjr9Pme3sPliV+x7uQumF3JUjCtnojNY891DznB3lgovTCifINhRJYp2LtcCJC2AI332XkUVODfbsWna1UeshbCmPfwDkU+BZejKoPGXuSG9kwPviwCmyF/iIL2YG2GIQrweXGn9GEHMYHl4jxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/dN6peN4FynVvqz1BOstswOXQB1YsZClFGt+XEgh/I0=; b=E9qTCsKGZlyTJpxTZwDUFfyIqueLjicyWyLFosRAKJ0YiQcyPCLJD8Qnvs8btb1RvxdMm+zVb1Hdl06tDd7jfc01HUs2jn55zzKD9YiP+5Ul7OC9D91SZU76qoe9yDW1YIiJFTWa0/VCWSodYeg5AOguALX2n119v0ALdPsHmt4= Received: from MW4PR11MB5823.namprd11.prod.outlook.com (2603:10b6:303:186::12) by MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.20; Tue, 7 Dec 2021 18:09:36 +0000 Received: from MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de]) by MW4PR11MB5823.namprd11.prod.outlook.com ([fe80::1d1b:2541:5263:68de%5]) with mapi id 15.20.4755.022; Tue, 7 Dec 2021 18:09:36 +0000 From: "Winiarska, Iwona" To: "billy_tsai@aspeedtech.com" , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "openbmc@lists.ozlabs.org" CC: "corbet@lwn.net" , "jae.hyun.yoo@linux.intel.com" , "linux-hwmon@vger.kernel.org" , "andrew@aj.id.au" , "Hansen, Dave" , "Luck, Tony" , "jdelvare@suse.com" , "olof@lixom.net" , "rdunlap@infradead.org" , "devicetree@vger.kernel.org" , "linux-aspeed@lists.ozlabs.org" , "linux@roeck-us.net" , "arnd@arndb.de" , "linux-doc@vger.kernel.org" , "robh+dt@kernel.org" , "zweiss@equinix.com" , "bp@alien8.de" , "linux-arm-kernel@lists.infradead.org" , "pierre-louis.bossart@linux.intel.com" , "andriy.shevchenko@linux.intel.com" , "Williams, Dan J" Subject: Re: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Topic: [PATCH v4 05/13] peci: Add peci-aspeed controller driver Thread-Index: AQHX4HPaxGefPohjA0+Yy1Npn3kxdawlAxSAgAJnMQA= Date: Tue, 7 Dec 2021 18:09:36 +0000 Message-ID: <670e4bd2c9d8dc91d1c9fca2b050915942b2a9b2.camel@intel.com> References: <20211123140706.2945700-1-iwona.winiarska@intel.com> <20211123140706.2945700-6-iwona.winiarska@intel.com> <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> In-Reply-To: <71D27F36-8BB7-4C30-99C5-CCA4F9A30945@aspeedtech.com> Accept-Language: en-US, pl-PL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.40.4 (3.40.4-2.fc34) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 x-ms-traffictypediagnostic: MW5PR11MB5906:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr,ExtFwd x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SWZ/FuEFEl3TvGqtjJEOOyfjlqj2I3vtA7vfxTyQW9/exuziTSoE5QozT6lPg97CCukz+YH2k01g9rJ39mRsb57NzrYg0H/yi9ntOyDfincOKGLuRetW4jnwIYibcGGrLxSipRGyQm31XgSngCSAimFkI8ZL7CJRloxYVKviq7VgXkzBQtlwlh7Iea2dvQ5OrJ3RewYxQLNGy5Um8B7qpMa0Z0V2OyPsEeDUPjIcAL6yDg7aI6NBTtC50gl2AVSRbQF3CEfElq1OfO0XVRU2wCpDOWBcvMny7co8lAyUE5QTeGZq803QjHrNPPWWJaEncroNDhcZUmp6sh6qQRCfA7mcnsjUyGXx5zqbHJVINj58kGFBypwZBaQ13XFv6FdwATjuY4w3EFTmx3rpHO2ZTJndY+UY57NwwAG00wkiqWu/KBkdit3MDbxbjxHKcYKofAmdUuzm/XklLCW9AG/9bci3qNIe03GKdqDHc01qws0jznWphwC2bf4j2TeSZu2NZccx2aQbp8SsX9l2N0idX/+G0XAOJ/2R3lZ/AaK9Ya4SDNEu+bN7zxdyTAPEYtZITe0d696ZpwoQQ0ZwhT4upHy3WDLGYCpLHyU+mgnburJ0UvGjRb+s9pX2PKU0W4Ni4CK583Zok7R5m+5c49UP50mY3zTEb9DAEcsXPrCIcrceL1CjvQasF8Vf0MTtaK9FCspxXq5sREVYR6BZ1rngYg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW4PR11MB5823.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(64756008)(66476007)(66556008)(38070700005)(71200400001)(76116006)(2906002)(66946007)(66446008)(7416002)(91956017)(53546011)(6506007)(6486002)(4326008)(316002)(6512007)(122000001)(186003)(26005)(508600001)(86362001)(8936002)(83380400001)(38100700002)(2616005)(110136005)(5660300002)(36756003)(54906003)(8676002)(82960400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?djI4Y0pzMjZuSWxLNnVYb0x0Q2RwRnJIcEg5Y2huRjFLZFhUL1F1eGtTK2ww?= =?utf-8?B?bmYvdGtOSlZtMjhlY2RWMGZXdnZRQndZcW45TnFPcWZRVjFTbHkxbjc1aks3?= =?utf-8?B?Z05KVHB1b1VmcC9qRVBQM3RUekUwQnZPTzkyeDMxR2lHcFJiMFo2a0VKZ1BX?= =?utf-8?B?RXAxSHVrRGJHeksrU1FxWlpiZ0tFL3podmwzSGVHakQ4cFpSRE1mQkMwemJJ?= =?utf-8?B?WjcweTFNV000VkQwOG5xcDJxMmVtV0dkeXk5WkZxU2F6bnIzcm1RYnFOZkRV?= =?utf-8?B?cVV2RFdvNHE0YTlKRG8wV3NoelRUSDdVTGIvcGZnQUo0SitUdmlRQXpzTG5l?= =?utf-8?B?SHpyZFdhZ0s2bGFPNkZEbVJRQisrekhoM0hOTTRObkp3QTkxUVdHQTlBWW9F?= =?utf-8?B?TllhSjFsd0U5SzY3UHYwQ3pSeHpNRXBpV3VvWm9jcVBFRnMvTWliODVUSDhX?= =?utf-8?B?MDI3QWNZeVFITXJwT1phMUxnK0wvc1VoeUsrem9HWmNyNzVlRzJMZ2hKUS9i?= =?utf-8?B?YVlmYjRiQnlxTTR1T2pSRS91elNLZ0JXVUhqRUlSdUlUMWRZNjJ2aXk0dXlL?= =?utf-8?B?U1VvN2QzL1QrcGlUV2MzOU5MTEZreFVUbGhjSGRkN2l2UDByTTFDdTdNOHRo?= =?utf-8?B?c0FadkllU2VwQUZJdlhtMFJTcDVpQXV0OHdXM3IzV3pvVUs1WVhDZVZIengz?= =?utf-8?B?UlJXUUovTVkxc0dxNlV4ekZIaXFvcHN0ZjRVelZzaDJqUTdkQlA1ei9kOVhp?= =?utf-8?B?Q0hkekU4aG1HZ2g2WmM5ejlMeXNQOTBWWG94U3pYdEJ5WkZpMkhBTitDNzcy?= =?utf-8?B?VldEYTRFUGhuOExNRjY2SE9aSWpZSzRDL01OWWpZa1E5YmN0blNWa2Q1R2w5?= =?utf-8?B?QXZTbzBEVnorcExucy9pWEVrNTdtcUNuSUE2UnRuRmpXMVMrUnhRM01uMVRP?= =?utf-8?B?MUNLNENZelpTVWdGSjdyYnV6MmFYb05Jc2lqZXBsQzRnMjU4VG9iRTRoWVQ3?= =?utf-8?B?WnBkcWJHeE5pOUEyL011QzMvSWwxU0VYUXhhZDgycDErRFZGc1ZrSkpkMFBK?= =?utf-8?B?UVZvbnFTdmtSa05GMmlpRmFIa1Jzd1RUUHVhaXloQjRBcUt5VER5ZlAyUnJ6?= =?utf-8?B?QVoxT1RKelNoc3U4UzA3WHpxWUlVQjZmZWRYbjNuODdzUklHVFd3ZlBocVZu?= =?utf-8?B?VzUwcFhXMk9MMnJRVFZJREQ3QWRjaFhyWXRraTE0cW9LL1EyYnZxMmYzUnlm?= =?utf-8?B?UzJDd05UTXErS2RDTFBTbGwwZ0ZyNGNLdlhKVlowZ21QQXFTNStlVVV1VG9k?= =?utf-8?B?R2FZRUt1aHZUNTRUOG85ZmhZWkwwc0lqVGlUeWJZTkplZksreER2VG1lZExo?= =?utf-8?B?TlF0OUcyU2RpMlZBdFFnd2ZnUXlHSmRMK1d6TmN6bFpoZjFyR1kvWkRUTmNj?= =?utf-8?B?VE13Y3M1Q2toZ05jRXJNOHRhSE1nK3NHUzNmajJ1d3JzczYvOXpYOGlhNGJz?= =?utf-8?B?YlN2SzJ5anF2QVM1NkYxRVFjaWM4bHVWd3hnUHpyRmlPbWpHTGVDMGtvNnhI?= =?utf-8?B?ZGdQOUVUWUdybVFFTzlrTU5aSWR4VmppekhxSUdEV1VRMzFoTkhtMCtzV2c4?= =?utf-8?B?c2FBTENRZGZRcnJuRTN6SkU5blo5ZjVjN2h1U29Vc3l6NE1pb1RWNFFnL1lx?= =?utf-8?B?eklYdFV6RndjNHZIajA2cnQwM3YrMFlaSWkvQllrazhmQ3BVRC9iWHVFYlY1?= =?utf-8?B?WFZXQnRkOHhXWG5vZXRQdExCNjUrZnhJZFdFZ2o5KzN2K0doUVpFeGQ5VC94?= =?utf-8?B?L3RFSk10SHJQbDlqeUQvaXRicVVJTXFFTVVRbStnOGhvekFkd09oOVk0NU4y?= =?utf-8?B?R3lNRnk2cEx2YTJad05TRlRJeHNpdDBiMW9qZVg3MitaNzMwNVNXOVk1K091?= =?utf-8?B?Yy9pWGJUS0loN1FRVWJXT0ZIR0syRUVjTldMWVdyNTU0MHFlM2dhTTZMcmRr?= =?utf-8?B?c25CSUF0WldKQis0RmduRXdHNTlhMUpxTFdLeFUzeVBNUmo0b1pTUnptM2Mv?= =?utf-8?B?Y3g3dEJCQVRzcmt2K0dkUGEwVGUrdHZyY01zRktvQ2VrdkdxUGFuQThXdU1L?= =?utf-8?B?cFY5Z1BKbUg4Q0R5d2NGYkN3STZnWW9XUkFXeHBOK2oyVGx0R1FvcjhIVllO?= =?utf-8?B?NzFBWGlJZlpLZzNmU3dxOG04QlpGRzk1OWdmcHlYd3RYRGxWQWhlVTRVSHVX?= =?utf-8?Q?GwgzE3a6vMpGNTafvTDRlJ9rtpXHQgav0PGQmpINzQ=3D?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5823.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fb2ce63-8629-4ad7-8795-08d9b9acba75 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2021 18:09:36.1691 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aPxoaQIQwzC4iZ0KY3OacBsWPNXlpeJfnVkdTMsyKZTwuXVo5Rol08/caUl5NutJ4w+RFGVvpeJtygrUSUiEtzK9AUNBGumWW4lvx7L4MbA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR11MB5906 X-OriginatorOrg: intel.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211207_102821_230057_50961A4D X-CRM114-Status: GOOD ( 18.24 ) 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 T24gTW9uLCAyMDIxLTEyLTA2IGF0IDA1OjI3ICswMDAwLCBCaWxseSBUc2FpIHdyb3RlOgo+IEhp LAo+IAo+IEFmdGVyIHJldmlld2luZyB0aGUgcGF0Y2gsIEkgaGF2ZSBzb21lIHN1Z2dlc3Rpb25z IGZvciB5b3UuIFBsZWFzZSBzZWUgdGhlCj4gcmVwbHkgaW5saW5lLgo+IAo+IE9uIDIwMjEvMTEv MjMsIDEwOjExIFBNLCAib3BlbmJtYyBvbiBiZWhhbGYgb2YgSXdvbmEgV2luaWFyc2thIgo+IDxv cGVuYm1jLWJvdW5jZXMrYmlsbHlfdHNhaT1hc3BlZWR0ZWNoLmNvbUBsaXN0cy5vemxhYnMub3Jn wqBvbiBiZWhhbGYgb2YKPiBpd29uYS53aW5pYXJza2FAaW50ZWwuY29tPiB3cm90ZToKPiAKPiDC oMKgwqAgPsKgwqAgRnJvbTogSmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwu Y29tPgo+IEFkZCB0aGUgZGVmaW5lIGZvciB0aGUgYnVzIGZyZXF1ZW5jeQo+IMKgwqDCoMKgwqDC oMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFVRU5DWV9NSU7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgMjAwMAo+IMKgwqDCoMKgwqDCoMKgICNkZWZpbmUgQVNQRUVEX1BFQ0lfQlVTX0ZSRVFV RU5DWV9ERUZBVUxUwqDCoMKgwqDCoMKgwqAyMDAwCj4gwqDCoMKgwqDCoMKgwqAgI2RlZmluZSBB U1BFRURfUEVDSV9CVVNfRlJFUVVFTkNZX01BWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMDAwMDAw Cj4gCj4gwqDCoCA+wqDCoCArc3RydWN0IGFzcGVlZF9wZWNpIHsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRldmljZSAqZGV2Owo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2b2lkIF9faW9tZW0gKmJhc2U7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBjbGsgKmNsazsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHJlc2V0X2NvbnRyb2wgKnJzdDsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaW50 IGlycTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgc3BpbmxvY2tfdCBsb2NrOyAvKiB0 byBzeW5jIGNvbXBsZXRpb24gc3RhdHVzIGhhbmRsaW5nICovCj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBjb21wbGV0aW9uIHhmZXJfY29tcGxldGU7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHUzMiBzdGF0dXM7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHUzMiBjbWRfdGltZW91dF9tczsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIG1z Z190aW1pbmc7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHUzMiBhZGRyX3RpbWluZzsK PiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdTMyIHJkX3NhbXBsaW5nX3BvaW50Owo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY2xrX2RpdjsKPiAKPiBBZGQgdGhlIHBhcmVt ZXRlciB0byBzdG9yZSB0aGUgYnVzX2ZyZXEgZnJvbSB0aGUgZHRzIHByb3BlcnR5Cj4gwqDCoMKg wqDCoMKgwqAgdTMyIGJ1c19mcmVxOwo+IAo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKg wqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfaW5pdF9yZWdzKHN0 cnVjdCBhc3BlZWRfcGVjaSAqcHJpdikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9QUkVQKEFTUEVFRF9QRUNJX0NUUkxfQ0xLX0RJVl9N QVNLLAo+IEFTUEVFRF9QRUNJX0NMS19ESVZfREVGQVVMVCk7Cj4gwqDCoMKgID7CoMKgICvCoMKg wqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfQ0xLX0VOOwo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5iYXNlICsgQVNQRUVEX1BFQ0lf Q1RSTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoCAqIFRpbWluZyBuZWdvdGlhdGlvbiBwZXJpb2Qgc2V0dGluZy4KPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgICogVGhlIHVuaXQgb2YgdGhlIHByb2dyYW1tZWQgdmFs dWUgaXMgNCB0aW1lcyBvZiBQRUNJIGNsb2NrCj4gcGVyaW9kLgo+IMKgwqDCoCA+wqDCoCArwqDC oMKgwqDCoMKgwqAgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgdmFsID0gRklFTERf UFJFUChBU1BFRURfUEVDSV9UX05FR09fTVNHX01BU0ssIHByaXYtCj4gPm1zZ190aW1pbmcpOwo+ IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChBU1BFRURfUEVD SV9UX05FR09fQUREUl9NQVNLLCBwcml2LQo+ID5hZGRyX3RpbWluZyk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHdyaXRlbCh2YWwsIHByaXYtPmJhc2UgKyBBU1BFRURfUEVDSV9USU1J TkdfTkVHT1RJQVRJT04pOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoC8qIENsZWFyIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDC oMKgdmFsID0gcmVhZGwocHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpIHwKPiBBU1BF RURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgd3JpdGVsKHZh bCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9TVFMpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoC8qIFNldCB0aW1pbmcgbmVnb3RpYXRpb24gbW9k ZSBhbmQgZW5hYmxlIGludGVycnVwdHMgKi8KPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg dmFsID0gRklFTERfUFJFUChBU1BFRURfUEVDSV9USU1JTkdfTkVHT19TRUxfTUFTSywKPiBBU1BF RURfUEVDSV8xU1RfQklUX09GX0FERFJfTkVHTyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHZhbCB8PSBBU1BFRURfUEVDSV9JTlRfTUFTSzsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgd3JpdGVsKHZhbCwgcHJpdi0+YmFzZSArIEFTUEVFRF9QRUNJX0lOVF9DVFJMKTsKPiDC oMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgPSBGSUVMRF9Q UkVQKEFTUEVFRF9QRUNJX0NUUkxfU0FNUExJTkdfTUFTSywgcHJpdi0KPiA+cmRfc2FtcGxpbmdf cG9pbnQpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB2YWwgfD0gRklFTERfUFJFUChB U1BFRURfUEVDSV9DVFJMX0NMS19ESVZfTUFTSywgcHJpdi0KPiA+Y2xrX2Rpdik7Cj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lfRU47Cj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHZhbCB8PSBBU1BFRURfUEVDSV9DVFJMX1BFQ0lf Q0xLX0VOOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqB3cml0ZWwodmFsLCBwcml2LT5i YXNlICsgQVNQRUVEX1BFQ0lfQ1RSTCk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbmxpbmUgaW50IGFzcGVlZF9wZWNpX2NoZWNrX2lk bGUoc3RydWN0IGFzcGVlZF9wZWNpICpwcml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqB1MzIgY21kX3N0cyA9IHJlYWRsKHByaXYtPmJhc2UgKyBBU1BF RURfUEVDSV9DTUQpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoGlmIChGSUVMRF9HRVQoQVNQRUVEX1BFQ0lfQ01EX1NUU19NQVNLLCBjbWRfc3RzKSA9PQo+ IEFTUEVFRF9QRUNJX0NNRF9TVFNfQUREUl9UX05FR08pCj4gwqDCoMKgID7CoMKgICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7Cj4gCj4g QXMgbG9uZyBhcyB0aGUgc3RhdGUgaXMgbm90IGlkbGUsIHRoZSBjb250cm9sbGVyIG5lZWQgdG8g cmVpbml0aWFsaXplIHRoZSBQRUNJCj4gcmVnaXN0ZXIgZm9yIHNvbHZpbmcgdGhlIFBFQ0kgY29u dHJvbGxlciBoYW5nLgo+IEJlZm9yZSBhc3QyNjAwQTMsIHRoZSBjb250cm9sbGVyIHNob3VsZCBh c3NlcnQvZGUtYXNzZXJ0IHRoZSByZXNldCBmb3Igc29sdmluZwo+IHRoZSBoYW5nIGlzc3VlLgo+ IEZvciBiYWNrd2FyZCBjb21wYXRpYmxlLCBJIHN1Z2dlc3QgdG8gYWRkIHRoZSByZXNldCBhc3Nl cnQvZGUtYXNzZXJ0IGluIHRoaXMKPiBwbGFjZS4KPiDCoMKgwqDCoMKgwqDCoCBpZiAoRklFTERf R0VUKEFTUEVFRF9QRUNJX0NNRF9TVFNfTUFTSywgY21kX3N0cykpIHsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KHBy aXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3BlZWRfcGVjaV9pbml0X3JlZ3MocHJpdik7 Cj4gwqDCoMKgwqDCoMKgwqAgfQoKQWNrLgoKPiAKCiguLi4pCgo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIHZvaWQgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0dXAoc3RydWN0IGFzcGVlZF9wZWNpICpw cml2KQo+IMKgwqDCoCA+wqDCoCArewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBhc3Bl ZWRfcGVjaV9wcm9wZXJ0eV9zYW5pdGl6ZShwcml2LT5kZXYsICJhc3BlZWQsY2xvY2stCj4gZGl2 aWRlciIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9NQVgsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNQRUVEX1BFQ0lfQ0xL X0RJVl9ERUZBVUxULAo+ICZwcml2LT5jbGtfZGl2KTsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKg wqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJpdi0+ZGV2LCAiYXNwZWVkLG1z Zy10aW1pbmciLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIEFTUEVFRF9QRUNJ X01TR19USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFTUEVFRF9Q RUNJX01TR19USU1JTkdfREVGQVVMVCwKPiAmcHJpdi0+bXNnX3RpbWluZyk7Cj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRl diwgImFzcGVlZCxhZGRyLXRpbWluZyIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MCwgQVNQRUVEX1BFQ0lfQUREUl9USU1JTkdfTUFYLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEFTUEVFRF9QRUNJX0FERFJfVElNSU5HX0RFRkFVTFQsCj4gJnByaXYtPmFkZHJfdGlt aW5nKTsKPiAKPiBVc2UgdGhlIGJ1cy1mcmVxdWVuY3kgdG8gcmVwbGFjZSB0aGUgcHJvcGVydHkg YWJvdmU6Cj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2FuaXRpemUocHJp di0+ZGV2LCAiYnVzLWZyZXF1ZW5jeSIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFTUEVFRF9QRUNJX0JVU19GUkVRVUVO Q1lfTUlOLAo+IEFTUEVFRF9QRUNJX0JVU19GUkVRVUVOQ1lfTUFYLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBU1BFRURf UEVDSV9CVVNfRlJFUVVFTkNZX0RFRkFVTFQsICZwcml2LQo+ID5idXNfZnJlcSk7Cj4gCj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNpX3Byb3BlcnR5X3Nhbml0aXplKHBy aXYtPmRldiwgImFzcGVlZCxyZC1zYW1wbGluZy0KPiBwb2ludCIsCj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMCwKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19QT0lOVF9NQVgsCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBBU1BFRURfUEVDSV9SRF9TQU1QTElOR19Q T0lOVF9ERUZBVUxULAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZwcml2LT5yZF9z YW1wbGluZ19wb2ludCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGFzcGVlZF9wZWNp X3Byb3BlcnR5X3Nhbml0aXplKHByaXYtPmRldiwgImNtZC10aW1lb3V0LW1zIiwKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxLAo+IEFTUEVFRF9QRUNJX0NNRF9USU1FT1VUX01TX01B WCwKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IEFTUEVFRF9QRUNJX0NNRF9USU1F T1VUX01TX0RFRkFVTFQsICZwcml2LT5jbWRfdGltZW91dF9tcyk7Cj4gwqDCoMKgID7CoMKgICt9 Cj4gQWRkIHRoZSBmdW5jdGlvbiBvZiBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0aW5nIHRoZSBzZXR0 aW5ncyB0byBhZGFwdCB0byB0aGUgYnVzCj4gZnJlcXVlbmN5LgoKSWYgd2Ugd2FudCB0byBnbyB3 aXRoIGV4cG9zaW5nICJidXMtZnJlcXVlbmN5IiwgaW5zdGVhZCBvZiBoYXJkd2FyZSBwcm9wZXJ0 aWVzLApJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBvcGVuY29kZSBpdCBpbiB0aGlzIHdheS4KUmF0 aGVyLCB3ZSBzaG91bGQgZXhwb3NlIGl0IGFzIGEgY2xvY2ssIHBhc3NpbmcgImNsb2NrLWZyZXF1 ZW5jeSIgcHJvcGVydHkgdmlhCkRUUyBhbmQgZXhwb3NpbmcgaXQgdXNpbmcgc3RydWN0IGNsa19o dy4KV2Ugd291bGQgdGhlbiBqdXN0IGNhbGwgY2xvY2sgQVBJIChjbGtfcm91bmRfcmF0ZSAvIGNs a19zZXRfcmF0ZSBldGMpLApwcmVzZW50aW5nIHRoaXMgYXMgd2hhdCBpdCBhY3R1YWxseSBpcyAo YSAiY3VzdG9tIiBjbG9jayBkaXZpZGVyKS4KClRoYW5rcwotSXdvbmEKCj4gwqDCoMKgwqDCoMKg wqAgc3RhdGljIHZvaWQgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAoc3RydWN0IGFzcGVlZF9w ZWNpICpwcml2KQo+IMKgwqDCoMKgwqDCoMKgIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdW5zaWduZWQgbG9uZyBzcmNfY2xrX3JhdGU7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBkZWx0YV92YWx1ZSwgZGVsdGFfdG1wLCBjbGtfZGl2aXNvciwgY2xrX2Rp dmlzb3JfdG1wOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgbXNnX3RpbWlu ZywgY2xrX2RpdjsKPiAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX2Nsa19y YXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7Cj4gCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBQRUNJIGJ1 cyBmcmVxwqAgPSAoc291cmNlIGNsayByYXRlKSAvICg0ICoKPiAoUEVDSTA0WzE1OjhdKjQrMSkg KiAoMSA8PCBQRUNJMDBbMTA6OF0pKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogKDEgPDwgUEVDSTAwWzEwOjhdKSAqIChQRUNJMDRbMTU6OF0qNCsxKSA9IChzb3VyY2UgY2xr Cj4gcmF0ZSkgLyAoNCAqIFBFQ0kgYnVzIGZyZXEgKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsa19kaXZpc29y ID0gc3JjX2Nsa19yYXRlIC8gKDQgKiBwcml2LT5idXNfZnJlcSk7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRlbHRhX3ZhbHVlID0gY2xrX2Rpdmlzb3I7Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIEZpbmQgdGhlIGNsb3Nlc3QgZGl2aXNvciBmb3IgYnVzLWZy ZXF1ZW5jeSAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKG1zZ190aW1p bmcgPSAxOyBtc2dfdGltaW5nIDw9IDI1NTsgbXNnX3RpbWluZysrKQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIChjbGtfZGl2ID0gMDsgY2xrX2Rp diA8IDc7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2xrX2RpdisrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2Rpdmlzb3JfdG1wID0gKDEg PDwgY2xrX2RpdikgKgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1z Z190aW1pbmcgKiA0ICsgMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVsdGFfdG1wID0gYWJzKGNsa19kaXZpc29yIC0K PiBjbGtfZGl2aXNvcl90bXApOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkZWx0YV90bXAgPCBkZWx0YV92YWx1ZSkg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWx0YV92YWx1ZSA9IGRlbHRhX3RtcDsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+bXNnX3RpbWluZyA9IG1zZ190aW1pbmc7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByaXYtPmFkZHJfdGltaW5nID0gcHJpdi0+bXNnX3RpbWluZzsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpdi0+Y2xrX2RpdiA9IGNsa19kaXY7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+IMKgwqDC oMKgwqDCoMKgIH0KPiAKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIHN0 cnVjdCBwZWNpX2NvbnRyb2xsZXJfb3BzIGFzcGVlZF9vcHMgPSB7Cj4gwqDCoMKgID7CoMKgICvC oMKgwqDCoMKgwqDCoC54ZmVyID0gYXNwZWVkX3BlY2lfeGZlciwKPiDCoMKgwqAgPsKgwqAgK307 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2b2lkIGFzcGVlZF9wZWNp X3Jlc2V0X2NvbnRyb2xfcmVsZWFzZSh2b2lkICpkYXRhKQo+IMKgwqDCoCA+wqDCoCArewo+IMKg wqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXNldF9jb250cm9sX2Fzc2VydChkYXRhKTsKPiDC oMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3RhdGljIGlu dCBkZXZtX2FzcGVlZF9wZWNpX3Jlc2V0X2NvbnRyb2xfZGVhc3NlcnQoc3RydWN0IGRldmljZQo+ ICpkZXYsIHN0cnVjdCByZXNldF9jb250cm9sICpyc3QpCj4gwqDCoMKgID7CoMKgICt7Cj4gwqDC oMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChyc3Qp Owo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAg Kwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2bV9hZGRfYWN0aW9uX29y X3Jlc2V0KGRldiwKPiBhc3BlZWRfcGVjaV9yZXNldF9jb250cm9sX3JlbGVhc2UsIHJzdCk7Cj4g wqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyB2 b2lkIGFzcGVlZF9wZWNpX2Nsa19yZWxlYXNlKHZvaWQgKmRhdGEpCj4gwqDCoMKgID7CoMKgICt7 Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGNsa19kaXNhYmxlX3VucHJlcGFyZShkYXRh KTsKPiDCoMKgwqAgPsKgwqAgK30KPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArc3Rh dGljIGludCBkZXZtX2FzcGVlZF9wZWNpX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgY2xrCj4gKmNsaykKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8KgwqDC oMKgwqDCoMKgaW50IHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDCoCA+wqDCoCArwqDCoMKg wqDCoMKgwqByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2xrKTsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgcmV0dXJuIGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIGFzcGVlZF9w ZWNpX2Nsa19yZWxlYXNlLAo+IGNsayk7Cj4gwqDCoMKgID7CoMKgICt9Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBpbnQgYXNwZWVkX3BlY2lfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiDCoMKgwqAgPsKgwqAgK3sKPiDCoMKgwqAgPsKgwqAgK8Kg wqDCoMKgwqDCoMKgc3RydWN0IHBlY2lfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiDCoMKgwqAg PsKgwqAgK8KgwqDCoMKgwqDCoMKgc3RydWN0IGFzcGVlZF9wZWNpICpwcml2Owo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoHByaXYgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9m KCpwcml2KSwgR0ZQX0tFUk5FTCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmICgh cHJpdikKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRU5PTUVNOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDC oHByaXYtPmRldiA9ICZwZGV2LT5kZXY7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGRl dl9zZXRfZHJ2ZGF0YShwcml2LT5kZXYsIHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBf cmVzb3VyY2UocGRldiwgMCk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChJU19F UlIocHJpdi0+YmFzZSkpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gUFRSX0VSUihwcml2LT5iYXNlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBwcml2LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYs IDApOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoIXByaXYtPmlycSkKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBwcml2LT5pcnE7 Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBwcml2LT5pcnEsCj4gYXNwZWVkX3BlY2lfaXJxX2hh bmRsZXIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsICJwZWNpLWFzcGVlZCIsIHByaXYpOwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpbml0X2NvbXBsZXRpb24oJnByaXYtPnhmZXJfY29tcGxl dGUpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaW5pdCgmcHJpdi0+ bG9jayk7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcHJp di0+cnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldCgmcGRldi0+ZGV2LCBOVUxMKTsKPiDCoMKg wqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihwcml2LT5yc3QpKQo+IMKgwqDCoCA+ wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGRldl9lcnJfcHJvYmUo cHJpdi0+ZGV2LCBQVFJfRVJSKHByaXYtPnJzdCksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4g wqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfcmVzZXRf Y29udHJvbF9kZWFzc2VydChwcml2LT5kZXYsIHByaXYtCj4gPnJzdCk7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIHJldCwgImNhbm5v dCBkZWFzc2VydAo+IHJlc2V0IGNvbnRyb2xcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKg ID7CoMKgICvCoMKgwqDCoMKgwqDCoHByaXYtPmNsayA9IGRldm1fY2xrX2dldChwcml2LT5kZXYs IE5VTEwpOwo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHByaXYtPmNs aykpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g ZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIocHJpdi0+Y2xrKSwKPiAiZmFpbGVkIHRv IGdldCBjbGtcbiIpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHJldCA9IGRldm1fYXNwZWVkX3BlY2lfY2xrX2VuYWJsZShwcml2LT5kZXYsIHByaXYtPmNs ayk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2 LT5kZXYsIHJldCwgImZhaWxlZCB0byBlbmFibGUKPiBjbG9ja1xuIik7Cj4gwqDCoMKgID7CoMKg ICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgYXNwZWVkX3BlY2lfcHJvcGVydHlfc2V0 dXAocHJpdik7Cj4gCj4gwqDCoMKgwqDCoMKgwqAgYXNwZWVkX3BlY2lfYnVzX2ZyZXFfc2V0dXAo cHJpdik7Cj4gCj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKg YXNwZWVkX3BlY2lfaW5pdF9yZWdzKHByaXYpOwo+IMKgwqDCoCA+wqDCoCArCj4gwqDCoMKgID7C oMKgICvCoMKgwqDCoMKgwqDCoGNvbnRyb2xsZXIgPSBkZXZtX3BlY2lfY29udHJvbGxlcl9hZGQo cHJpdi0+ZGV2LCAmYXNwZWVkX29wcyk7Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoGlm IChJU19FUlIoY29udHJvbGxlcikpCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gZGV2X2Vycl9wcm9iZShwcml2LT5kZXYsIFBUUl9FUlIoY29udHJv bGxlciksCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJmYWlsZWQgdG8gYWRkIGFzcGVl ZCBwZWNpCj4gY29udHJvbGxlclxuIik7Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAg K8KgwqDCoMKgwqDCoMKgcHJpdi0+Y29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cj4gwqDCoMKgID7C oMKgICsKPiDCoMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqDCoMKgID7C oMKgICt9Cj4gwqDCoMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGFzcGVlZF9wZWNpX29mX3RhYmxlW10gPSB7Cj4gwqDCoMKgID7CoMKg ICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI0MDAtcGVjaSIsIH0s Cj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFz dDI1MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoHsgLmNvbXBhdGli bGUgPSAiYXNwZWVkLGFzdDI2MDAtcGVjaSIsIH0sCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKg wqDCoHsgfQo+IMKgwqDCoCA+wqDCoCArfTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGFzcGVlZF9wZWNpX29mX3RhYmxlKTsKPiDCoMKgwqAgPsKgwqAgKwo+IMKgwqDC oCA+wqDCoCArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXNwZWVkX3BlY2lfZHJpdmVy ID0gewo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAucHJvYmXCoCA9IGFzcGVlZF9wZWNp X3Byb2JlLAo+IMKgwqDCoCA+wqDCoCArwqDCoMKgwqDCoMKgwqAuZHJpdmVyID0gewo+IMKgwqDC oCA+wqDCoCArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm5hbWXCoMKgwqDCoMKgwqDC oMKgwqDCoCA9ICJwZWNpLWFzcGVlZCIsCj4gwqDCoMKgID7CoMKgICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAub2ZfbWF0Y2hfdGFibGUgPSBhc3BlZWRfcGVjaV9vZl90YWJsZSwKPiDC oMKgwqAgPsKgwqAgK8KgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqAgPsKgwqAgK307Cj4gwqDCoMKg ID7CoMKgICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFzcGVlZF9wZWNpX2RyaXZlcik7Cj4gwqDC oMKgID7CoMKgICsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9BVVRIT1IoIlJ5YW4gQ2hlbiA8cnlh bl9jaGVuQGFzcGVlZHRlY2guY29tPiIpOwo+IMKgwqDCoCA+wqDCoCArTU9EVUxFX0FVVEhPUigi SmFlIEh5dW4gWW9vIDxqYWUuaHl1bi55b29AbGludXguaW50ZWwuY29tPiIpOwo+IMKgwqDCoCA+ wqDCoCArTU9EVUxFX0RFU0NSSVBUSU9OKCJBU1BFRUQgUEVDSSBkcml2ZXIiKTsKPiDCoMKgwqAg PsKgwqAgK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiDCoMKgwqAgPsKgwqAgK01PRFVMRV9JTVBP UlRfTlMoUEVDSSk7Cj4gwqDCoMKgID7CoMKgIC0tIAo+IMKgwqDCoCA+wqDCoCAyLjMxLjEKPiAK PiAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK