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 DD577C00140 for ; Wed, 24 Aug 2022 14:57:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237533AbiHXO5P (ORCPT ); Wed, 24 Aug 2022 10:57:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236086AbiHXO5O (ORCPT ); Wed, 24 Aug 2022 10:57:14 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E9E0883E7 for ; Wed, 24 Aug 2022 07:57:13 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id 1so9537035pfu.0 for ; Wed, 24 Aug 2022 07:57:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc; bh=gM8GDsnSJOMAUUVJW4tlaybgNtw+UEw7QquIVT86FWw=; b=v/UJZUPVd4nDpRPhfiY1BBHYgSiRAyUwSShdy2Y6czy8s8BTWdM7z146eCVCC2Rb2u sw6mK0mOFMAzD9JnVP2jDy3hjORVSb5/kmH5h0mndFSr9cTNXQysQ+KJym3TrD32PfK2 +4x3uldeAdEN9rc5SovE7poXTcKV/8T4SnEWnLviqAfsINw/xbKDZ2yfDLO+l5Pzrh9G +VOML6Q04aY/JHoRuL7t5fMy8tKHe+tyBzmxL1G/fOHKyGq7eFkl/mrKCr3J2amnKMaZ gvFkhEHmaSStHUyKLL5q1ASztFgqtDb/cPK7VeCpuqjyKVsfdnSQcQq0XNb5wypnjugx G1fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc; bh=gM8GDsnSJOMAUUVJW4tlaybgNtw+UEw7QquIVT86FWw=; b=VUM9e9GkCVY8FHKVvYtaViDYodh6HB9UYqbbk0BfOzg4Qzz/RpmoEghZ+XPh3Q6gmS VrVi5eBXwh7VIjNZEoY36t7uejG62U8iCUZ4m8AH0SIacxJx5/FsHlnUB9C4xHrQt70e BLAUnr27SRBxqZoX43q6PV+k+5Jyu31bR70CyeE8tvF/3xpsZNS6DKYWKE3n4JTDPo0l hpXQya6kq1sYJPj8pvIYZKU5hyeRIvILFmGxVF3areFpqrmLv7kksV6beAfhcvgda+Us k2kpGrTWi5VZHyVhK9Rl05kgQJ6dlw19uTJi5kkrVP08BbIJFYD/OpQ5DR5TCbHhG7O6 0orw== X-Gm-Message-State: ACgBeo2ciAe903eZTDFZfRB+wyPOHQxPHnrZaHvAqy3gQA85MUicAIzw tW2eWbl2tRQ6RJIlEnRsZ7EG X-Google-Smtp-Source: AA6agR7Ib04+xtPrgNHPwibV1BLIrGmMzfP42SM9GUxtmSCoMT+DDemE1rbAJPOmPKHjsfv+ijTy1g== X-Received: by 2002:a63:e102:0:b0:41b:3901:990e with SMTP id z2-20020a63e102000000b0041b3901990emr24292701pgh.107.1661353032690; Wed, 24 Aug 2022 07:57:12 -0700 (PDT) Received: from thinkpad ([117.207.24.28]) by smtp.gmail.com with ESMTPSA id j13-20020a170902da8d00b0017284f4a10esm5588128plx.227.2022.08.24.07.57.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Aug 2022 07:57:12 -0700 (PDT) Date: Wed, 24 Aug 2022 20:27:02 +0530 From: Manivannan Sadhasivam To: Dmitry Baryshkov Cc: Andy Gross , Bjorn Andersson , Konrad Dybcio , Rob Herring , Jingoo Han , Gustavo Pimentel , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Vinod Koul , Kishon Vijay Abraham I , Philipp Zabel , Johan Hovold , linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org, linux-phy@lists.infradead.org Subject: Re: [PATCH v1 2/4] phy: qcom-qmp-pcie: support separate tables for EP mode Message-ID: <20220824145702.GE4767@thinkpad> References: <20220726203401.595934-1-dmitry.baryshkov@linaro.org> <20220726203401.595934-3-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220726203401.595934-3-dmitry.baryshkov@linaro.org> Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Tue, Jul 26, 2022 at 11:33:59PM +0300, Dmitry Baryshkov wrote: > The PCIe QMP PHY requires different programming sequences when being > used for the RC (Root Complex) or for the EP (End Point) modes. Allow > selecting the submode and thus selecting a set of PHY programming > tables. > I think you should mention why secondary table is used for differentiating between RC and EP mode. Something like, Since the RC and EP modes share common some common init sequence, the common sequence is kept in the primary table and the different ones were in secondary. > Signed-off-by: Dmitry Baryshkov > --- > drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 41 ++++++++++++++++-------- > 1 file changed, 28 insertions(+), 13 deletions(-) > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c > index e6272bd3d735..af3577a5d7e4 100644 > --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c > @@ -1369,10 +1369,14 @@ struct qmp_phy_cfg { > /* Init sequence for PHY blocks - serdes, tx, rx, pcs */ > struct qmp_phy_cfg_tables primary; > /* > - * Init sequence for PHY blocks, providing additional register > - * programming. Unless required it can be left omitted. > + * Init sequences for PHY blocks, providing additional register > + * programming. They are used for providing separate sequences for the > + * Root Complex and for the End Point usecases. > + * > + * If EP mode is not supported, both tables can be left empty. > */ > - struct qmp_phy_cfg_tables secondary; > + struct qmp_phy_cfg_tables secondary_rc; /* for the RC only */ > + struct qmp_phy_cfg_tables secondary_ep; /* for the EP only */ > > /* clock ids to be requested */ > const char * const *clk_list; > @@ -1422,6 +1426,7 @@ struct qmp_phy_cfg { > * @index: lane index > * @qmp: QMP phy to which this lane belongs > * @mode: current PHY mode > + * @secondary: currently selected PHY secondary init table set > */ > struct qmp_phy { > struct phy *phy; > @@ -1434,6 +1439,7 @@ struct qmp_phy { > void __iomem *rx2; > void __iomem *pcs_misc; > struct clk *pipe_clk; > + const struct qmp_phy_cfg_tables *secondary; > unsigned int index; > struct qcom_qmp *qmp; > enum phy_mode mode; > @@ -1687,7 +1693,7 @@ static const struct qmp_phy_cfg sm8250_qmp_gen3x1_pciephy_cfg = { > .pcs_misc_tbl = sm8250_qmp_pcie_pcs_misc_tbl, > .pcs_misc_tbl_num = ARRAY_SIZE(sm8250_qmp_pcie_pcs_misc_tbl), > }, > - .secondary = { > + .secondary_rc = { > .serdes_tbl = sm8250_qmp_gen3x1_pcie_serdes_tbl, > .serdes_tbl_num = ARRAY_SIZE(sm8250_qmp_gen3x1_pcie_serdes_tbl), > .rx_tbl = sm8250_qmp_gen3x1_pcie_rx_tbl, > @@ -1730,7 +1736,7 @@ static const struct qmp_phy_cfg sm8250_qmp_gen3x2_pciephy_cfg = { > .pcs_misc_tbl = sm8250_qmp_pcie_pcs_misc_tbl, > .pcs_misc_tbl_num = ARRAY_SIZE(sm8250_qmp_pcie_pcs_misc_tbl), > }, > - .secondary = { > + .secondary_rc = { > .tx_tbl = sm8250_qmp_gen3x2_pcie_tx_tbl, > .tx_tbl_num = ARRAY_SIZE(sm8250_qmp_gen3x2_pcie_tx_tbl), > .rx_tbl = sm8250_qmp_gen3x2_pcie_rx_tbl, > @@ -1955,7 +1961,7 @@ static int qcom_qmp_phy_pcie_serdes_init(struct qmp_phy *qphy) > void __iomem *serdes = qphy->serdes; > > qcom_qmp_phy_pcie_configure(serdes, cfg->regs, cfg->primary.serdes_tbl, cfg->primary.serdes_tbl_num); > - qcom_qmp_phy_pcie_configure(serdes, cfg->regs, cfg->secondary.serdes_tbl, cfg->secondary.serdes_tbl_num); > + qcom_qmp_phy_pcie_configure(serdes, cfg->regs, qphy->secondary->serdes_tbl, qphy->secondary->serdes_tbl_num); > > return 0; > } > @@ -2049,6 +2055,10 @@ static int qcom_qmp_phy_pcie_power_on(struct phy *phy) > unsigned int mask, val, ready; > int ret; > > + /* Default to RC mode if no mode was selected */ While the comment is fine, I think it'd be good if you mention that the mode was not selected using set_mode() API. Thanks, Mani -- மணிவண்ணன் சதாசிவம் 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 D5130C00140 for ; Wed, 24 Aug 2022 14:57:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hKCruns30IsekOUn4lFw+jD4wtHz+VzRVLoGRjZJYAI=; b=Eyl9IiSRFlc64g tumHj6G0TuG0ICEULcVml7+nOxD9UB58aR9XzK4UITWZ81HZNRNW5lo/5XpVfZdOLbJ+RQMYpJaOj VsDD37kA2cUkgUIC1oCuq/3yjiSsflXYU9Xcg35j0EPuKymkWVk42xFPCb3vv+HSo8wj21V+TBOJF BBZg5WtNIDJgK9F1oGrAJw3Rczi2N9nByu+1ZKNr5Yx+8DhfYGWFE4mxM7gZjd9PQ3Se+U/GVZpIK IW13L0VNBxnT3tXhM9HkoPEyMU5LoDAaE+DfIYRFinxfWbm1Wcq/Dz9ddFhD0Nd94qiv8WaoizKGw SpnltoyrnjkXAIYwuONw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oQrok-00Dp4D-A0; Wed, 24 Aug 2022 14:57:18 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oQroh-00Dp1L-Nw for linux-phy@lists.infradead.org; Wed, 24 Aug 2022 14:57:17 +0000 Received: by mail-pf1-x42b.google.com with SMTP id y141so16725565pfb.7 for ; Wed, 24 Aug 2022 07:57:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc; bh=gM8GDsnSJOMAUUVJW4tlaybgNtw+UEw7QquIVT86FWw=; b=v/UJZUPVd4nDpRPhfiY1BBHYgSiRAyUwSShdy2Y6czy8s8BTWdM7z146eCVCC2Rb2u sw6mK0mOFMAzD9JnVP2jDy3hjORVSb5/kmH5h0mndFSr9cTNXQysQ+KJym3TrD32PfK2 +4x3uldeAdEN9rc5SovE7poXTcKV/8T4SnEWnLviqAfsINw/xbKDZ2yfDLO+l5Pzrh9G +VOML6Q04aY/JHoRuL7t5fMy8tKHe+tyBzmxL1G/fOHKyGq7eFkl/mrKCr3J2amnKMaZ gvFkhEHmaSStHUyKLL5q1ASztFgqtDb/cPK7VeCpuqjyKVsfdnSQcQq0XNb5wypnjugx G1fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc; bh=gM8GDsnSJOMAUUVJW4tlaybgNtw+UEw7QquIVT86FWw=; b=fMMM26wQgPzYd8zMk0VhKIdNOXUEzDaJYy+SeeJ/hV3lWnGvoUZEjz0LBc0dpqChig 3JD3tLP9BxJ6GBh69GK9vhyK1hBLp4Rg6fhfWzvX8U1mq3TXovzTCf6fmXpcLDvOK/tR IfnQrxE3CcSf3TDzmL5yFqRURSQaKkODDSS4XbZ4EUetLLYcAx/b20o7A4R+Q1t9BXZ4 qiLhEbF/nhbEJ9Fxwz10oVWQuyMaN2v6km4xkUt4z6BiVFcO6M8MqaS0wFOq5gBYIMNn dk1yN4GDCNDXupa4VwEs+xV+SZYcAu3/XTLucdFQx9sIP4kB3TiAo/1QxQPAgu9BCviw pdSg== X-Gm-Message-State: ACgBeo3GZjZgF48OlVBinvCD9d9NsCKZVK60FoIfj93KK3mZl+Ub5y8u N8B2OLK0f1xrByVWmzS7bMzt X-Google-Smtp-Source: AA6agR7Ib04+xtPrgNHPwibV1BLIrGmMzfP42SM9GUxtmSCoMT+DDemE1rbAJPOmPKHjsfv+ijTy1g== X-Received: by 2002:a63:e102:0:b0:41b:3901:990e with SMTP id z2-20020a63e102000000b0041b3901990emr24292701pgh.107.1661353032690; Wed, 24 Aug 2022 07:57:12 -0700 (PDT) Received: from thinkpad ([117.207.24.28]) by smtp.gmail.com with ESMTPSA id j13-20020a170902da8d00b0017284f4a10esm5588128plx.227.2022.08.24.07.57.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Aug 2022 07:57:12 -0700 (PDT) Date: Wed, 24 Aug 2022 20:27:02 +0530 From: Manivannan Sadhasivam To: Dmitry Baryshkov Cc: Andy Gross , Bjorn Andersson , Konrad Dybcio , Rob Herring , Jingoo Han , Gustavo Pimentel , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Vinod Koul , Kishon Vijay Abraham I , Philipp Zabel , Johan Hovold , linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org, linux-phy@lists.infradead.org Subject: Re: [PATCH v1 2/4] phy: qcom-qmp-pcie: support separate tables for EP mode Message-ID: <20220824145702.GE4767@thinkpad> References: <20220726203401.595934-1-dmitry.baryshkov@linaro.org> <20220726203401.595934-3-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220726203401.595934-3-dmitry.baryshkov@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220824_075715_849501_920C385A X-CRM114-Status: GOOD ( 25.38 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org T24gVHVlLCBKdWwgMjYsIDIwMjIgYXQgMTE6MzM6NTlQTSArMDMwMCwgRG1pdHJ5IEJhcnlzaGtv diB3cm90ZToKPiBUaGUgUENJZSBRTVAgUEhZIHJlcXVpcmVzIGRpZmZlcmVudCBwcm9ncmFtbWlu ZyBzZXF1ZW5jZXMgd2hlbiBiZWluZwo+IHVzZWQgZm9yIHRoZSBSQyAoUm9vdCBDb21wbGV4KSBv ciBmb3IgdGhlIEVQIChFbmQgUG9pbnQpIG1vZGVzLiBBbGxvdwo+IHNlbGVjdGluZyB0aGUgc3Vi bW9kZSBhbmQgdGh1cyBzZWxlY3RpbmcgYSBzZXQgb2YgUEhZIHByb2dyYW1taW5nCj4gdGFibGVz Lgo+IAoKSSB0aGluayB5b3Ugc2hvdWxkIG1lbnRpb24gd2h5IHNlY29uZGFyeSB0YWJsZSBpcyB1 c2VkIGZvciBkaWZmZXJlbnRpYXRpbmcKYmV0d2VlbiBSQyBhbmQgRVAgbW9kZS4gU29tZXRoaW5n IGxpa2UsCgpTaW5jZSB0aGUgUkMgYW5kIEVQIG1vZGVzIHNoYXJlIGNvbW1vbiBzb21lIGNvbW1v biBpbml0IHNlcXVlbmNlLCB0aGUgY29tbW9uCnNlcXVlbmNlIGlzIGtlcHQgaW4gdGhlIHByaW1h cnkgdGFibGUgYW5kIHRoZSBkaWZmZXJlbnQgb25lcyB3ZXJlIGluIHNlY29uZGFyeS4KCj4gU2ln bmVkLW9mZi1ieTogRG1pdHJ5IEJhcnlzaGtvdiA8ZG1pdHJ5LmJhcnlzaGtvdkBsaW5hcm8ub3Jn Pgo+IC0tLQo+ICBkcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtcGNpZS5jIHwgNDEg KysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25z KCspLCAxMyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNv bW0vcGh5LXFjb20tcW1wLXBjaWUuYyBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFt cC1wY2llLmMKPiBpbmRleCBlNjI3MmJkM2Q3MzUuLmFmMzU3N2E1ZDdlNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtcGNpZS5jCj4gKysrIGIvZHJpdmVy cy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXBjaWUuYwo+IEBAIC0xMzY5LDEwICsxMzY5LDE0 IEBAIHN0cnVjdCBxbXBfcGh5X2NmZyB7Cj4gIAkvKiBJbml0IHNlcXVlbmNlIGZvciBQSFkgYmxv Y2tzIC0gc2VyZGVzLCB0eCwgcngsIHBjcyAqLwo+ICAJc3RydWN0IHFtcF9waHlfY2ZnX3RhYmxl cyBwcmltYXJ5Owo+ICAJLyoKPiAtCSAqIEluaXQgc2VxdWVuY2UgZm9yIFBIWSBibG9ja3MsIHBy b3ZpZGluZyBhZGRpdGlvbmFsIHJlZ2lzdGVyCj4gLQkgKiBwcm9ncmFtbWluZy4gVW5sZXNzIHJl cXVpcmVkIGl0IGNhbiBiZSBsZWZ0IG9taXR0ZWQuCj4gKwkgKiBJbml0IHNlcXVlbmNlcyBmb3Ig UEhZIGJsb2NrcywgcHJvdmlkaW5nIGFkZGl0aW9uYWwgcmVnaXN0ZXIKPiArCSAqIHByb2dyYW1t aW5nLiBUaGV5IGFyZSB1c2VkIGZvciBwcm92aWRpbmcgc2VwYXJhdGUgc2VxdWVuY2VzIGZvciB0 aGUKPiArCSAqIFJvb3QgQ29tcGxleCBhbmQgZm9yIHRoZSBFbmQgUG9pbnQgdXNlY2FzZXMuCj4g KwkgKgo+ICsJICogSWYgRVAgbW9kZSBpcyBub3Qgc3VwcG9ydGVkLCBib3RoIHRhYmxlcyBjYW4g YmUgbGVmdCBlbXB0eS4KPiAgCSAqLwo+IC0Jc3RydWN0IHFtcF9waHlfY2ZnX3RhYmxlcyBzZWNv bmRhcnk7Cj4gKwlzdHJ1Y3QgcW1wX3BoeV9jZmdfdGFibGVzIHNlY29uZGFyeV9yYzsgLyogZm9y IHRoZSBSQyBvbmx5ICovCj4gKwlzdHJ1Y3QgcW1wX3BoeV9jZmdfdGFibGVzIHNlY29uZGFyeV9l cDsgLyogZm9yIHRoZSBFUCBvbmx5ICovCj4gIAo+ICAJLyogY2xvY2sgaWRzIHRvIGJlIHJlcXVl c3RlZCAqLwo+ICAJY29uc3QgY2hhciAqIGNvbnN0ICpjbGtfbGlzdDsKPiBAQCAtMTQyMiw2ICsx NDI2LDcgQEAgc3RydWN0IHFtcF9waHlfY2ZnIHsKPiAgICogQGluZGV4OiBsYW5lIGluZGV4Cj4g ICAqIEBxbXA6IFFNUCBwaHkgdG8gd2hpY2ggdGhpcyBsYW5lIGJlbG9uZ3MKPiAgICogQG1vZGU6 IGN1cnJlbnQgUEhZIG1vZGUKPiArICogQHNlY29uZGFyeTogY3VycmVudGx5IHNlbGVjdGVkIFBI WSBzZWNvbmRhcnkgaW5pdCB0YWJsZSBzZXQKPiAgICovCj4gIHN0cnVjdCBxbXBfcGh5IHsKPiAg CXN0cnVjdCBwaHkgKnBoeTsKPiBAQCAtMTQzNCw2ICsxNDM5LDcgQEAgc3RydWN0IHFtcF9waHkg ewo+ICAJdm9pZCBfX2lvbWVtICpyeDI7Cj4gIAl2b2lkIF9faW9tZW0gKnBjc19taXNjOwo+ICAJ c3RydWN0IGNsayAqcGlwZV9jbGs7Cj4gKwljb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmdfdGFibGVz ICpzZWNvbmRhcnk7Cj4gIAl1bnNpZ25lZCBpbnQgaW5kZXg7Cj4gIAlzdHJ1Y3QgcWNvbV9xbXAg KnFtcDsKPiAgCWVudW0gcGh5X21vZGUgbW9kZTsKPiBAQCAtMTY4Nyw3ICsxNjkzLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzbTgyNTBfcW1wX2dlbjN4MV9wY2llcGh5X2Nm ZyA9IHsKPiAgCS5wY3NfbWlzY190YmwJCT0gc204MjUwX3FtcF9wY2llX3Bjc19taXNjX3RibCwK PiAgCS5wY3NfbWlzY190YmxfbnVtCT0gQVJSQVlfU0laRShzbTgyNTBfcW1wX3BjaWVfcGNzX21p c2NfdGJsKSwKPiAgCX0sCj4gLQkuc2Vjb25kYXJ5ID0gewo+ICsJLnNlY29uZGFyeV9yYyA9IHsK PiAgCS5zZXJkZXNfdGJsCQk9IHNtODI1MF9xbXBfZ2VuM3gxX3BjaWVfc2VyZGVzX3RibCwKPiAg CS5zZXJkZXNfdGJsX251bQkJPSBBUlJBWV9TSVpFKHNtODI1MF9xbXBfZ2VuM3gxX3BjaWVfc2Vy ZGVzX3RibCksCj4gIAkucnhfdGJsCQkJPSBzbTgyNTBfcW1wX2dlbjN4MV9wY2llX3J4X3RibCwK PiBAQCAtMTczMCw3ICsxNzM2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBz bTgyNTBfcW1wX2dlbjN4Ml9wY2llcGh5X2NmZyA9IHsKPiAgCS5wY3NfbWlzY190YmwJCT0gc204 MjUwX3FtcF9wY2llX3Bjc19taXNjX3RibCwKPiAgCS5wY3NfbWlzY190YmxfbnVtCT0gQVJSQVlf U0laRShzbTgyNTBfcW1wX3BjaWVfcGNzX21pc2NfdGJsKSwKPiAgCX0sCj4gLQkuc2Vjb25kYXJ5 ID0gewo+ICsJLnNlY29uZGFyeV9yYyA9IHsKPiAgCS50eF90YmwJCQk9IHNtODI1MF9xbXBfZ2Vu M3gyX3BjaWVfdHhfdGJsLAo+ICAJLnR4X3RibF9udW0JCT0gQVJSQVlfU0laRShzbTgyNTBfcW1w X2dlbjN4Ml9wY2llX3R4X3RibCksCj4gIAkucnhfdGJsCQkJPSBzbTgyNTBfcW1wX2dlbjN4Ml9w Y2llX3J4X3RibCwKPiBAQCAtMTk1NSw3ICsxOTYxLDcgQEAgc3RhdGljIGludCBxY29tX3FtcF9w aHlfcGNpZV9zZXJkZXNfaW5pdChzdHJ1Y3QgcW1wX3BoeSAqcXBoeSkKPiAgCXZvaWQgX19pb21l bSAqc2VyZGVzID0gcXBoeS0+c2VyZGVzOwo+ICAKPiAgCXFjb21fcW1wX3BoeV9wY2llX2NvbmZp Z3VyZShzZXJkZXMsIGNmZy0+cmVncywgY2ZnLT5wcmltYXJ5LnNlcmRlc190YmwsIGNmZy0+cHJp bWFyeS5zZXJkZXNfdGJsX251bSk7Cj4gLQlxY29tX3FtcF9waHlfcGNpZV9jb25maWd1cmUoc2Vy ZGVzLCBjZmctPnJlZ3MsIGNmZy0+c2Vjb25kYXJ5LnNlcmRlc190YmwsIGNmZy0+c2Vjb25kYXJ5 LnNlcmRlc190YmxfbnVtKTsKPiArCXFjb21fcW1wX3BoeV9wY2llX2NvbmZpZ3VyZShzZXJkZXMs IGNmZy0+cmVncywgcXBoeS0+c2Vjb25kYXJ5LT5zZXJkZXNfdGJsLCBxcGh5LT5zZWNvbmRhcnkt PnNlcmRlc190YmxfbnVtKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0yMDQ5LDYgKzIw NTUsMTAgQEAgc3RhdGljIGludCBxY29tX3FtcF9waHlfcGNpZV9wb3dlcl9vbihzdHJ1Y3QgcGh5 ICpwaHkpCj4gIAl1bnNpZ25lZCBpbnQgbWFzaywgdmFsLCByZWFkeTsKPiAgCWludCByZXQ7Cj4g IAo+ICsJLyogRGVmYXVsdCB0byBSQyBtb2RlIGlmIG5vIG1vZGUgd2FzIHNlbGVjdGVkICovCgpX aGlsZSB0aGUgY29tbWVudCBpcyBmaW5lLCBJIHRoaW5rIGl0J2QgYmUgZ29vZCBpZiB5b3UgbWVu dGlvbiB0aGF0IHRoZSBtb2RlIHdhcwpub3Qgc2VsZWN0ZWQgdXNpbmcgc2V0X21vZGUoKSBBUEku CgpUaGFua3MsCk1hbmkKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+ 4K6a4K6/4K614K6u4K+NCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1waHkK