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 0D793CCA47C for ; Tue, 5 Jul 2022 09:48:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231203AbiGEJsG (ORCPT ); Tue, 5 Jul 2022 05:48:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230216AbiGEJsF (ORCPT ); Tue, 5 Jul 2022 05:48:05 -0400 Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:32c8:5054:ff:fe00:142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B35CD2AEB for ; Tue, 5 Jul 2022 02:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Date:Sender:Message-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:Subject:Cc:To:From:References: In-Reply-To:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=nmwB/w2ODX+PhO2MIYPtuzhbVH60qFtgTIdGIGmVkNU=; b=wB2LAHhppYezNRkU0nsYYKEKPU bxr1EWDL17XvtKMLG5aayBuqmxr3jAYxTyOz6ioHxzYCblEQGm3RQ/P7tdsHUIJS0JjyEgpEdsEOu qVsZUWxdzyDB7LeROZWc401EA0hhv7nwG/I5jENKLVnP78bb1iUcQQlBQk2AWTCiOdtDyZJlwHmBp 8emoOMfVL26kBMuLbgad52kkXXG6+mrLJlqzxUHV2D1vz9scBtF2YazodxJjuIyjcwtqCDT8dPZnP FvzBXTmyfLa2Y+gJ3jqfBpU1nN73otXlY1t1kh9Une4nIEeLXyIj/LvCS4Fqv19teAHSgSa4V2Pak lVvLxWDQ==; Received: from e0022681537dd.dyn.armlinux.org.uk ([fd8f:7570:feb6:1:222:68ff:fe15:37dd]:60648 helo=rmk-PC.armlinux.org.uk) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1o8f9n-000133-Lk; Tue, 05 Jul 2022 10:47:48 +0100 Received: from rmk by rmk-PC.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1o8f9m-0059a0-Ux; Tue, 05 Jul 2022 10:47:47 +0100 In-Reply-To: References: From: "Russell King (Oracle)" To: Andrew Lunn , Heiner Kallweit Cc: Alexandre Belloni , "Alvin __ipraga" , Claudiu Manoil , "David S. Miller" , DENG Qingfang , Eric Dumazet , Florian Fainelli , George McCollister , Hauke Mehrtens , Jakub Kicinski , Kurt Kanzenbach , Landen Chao , Linus Walleij , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Matthias Brugger , netdev@vger.kernel.org, Paolo Abeni , Sean Wang , UNGLinuxDriver@microchip.com, Vivien Didelot , Vladimir Oltean , Woojung Huh , Marek =?iso-8859-1?Q?Beh=FAn?= Subject: [PATCH RFC net-next 1/5] net: dsa: add support for retrieving the interface mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" Message-Id: Sender: Russell King Date: Tue, 05 Jul 2022 10:47:46 +0100 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DSA port bindings allow for an optional phy interface mode. When an interface mode is not specified, DSA uses the NA interface mode type. However, phylink needs to know the parameters of the link, and this will become especially important when using phylink for ports that are devoid of all properties except the required "reg" property, so that phylink can select the maximum supported link settings. Without knowing the interface mode, phylink can't truely know the maximum link speed. Update the prototype for the phylink_get_caps method to allow drivers to report this information back to DSA, and update all DSA implementations function declarations to cater for this change. No code is added to the implementations. Reviewed-by: Marek BehĂșn Signed-off-by: Russell King (Oracle) --- drivers/net/dsa/b53/b53_common.c | 3 ++- drivers/net/dsa/bcm_sf2.c | 3 ++- drivers/net/dsa/hirschmann/hellcreek.c | 3 ++- drivers/net/dsa/lantiq_gswip.c | 6 ++++-- drivers/net/dsa/microchip/ksz_common.c | 3 ++- drivers/net/dsa/mt7530.c | 3 ++- drivers/net/dsa/mv88e6xxx/chip.c | 3 ++- drivers/net/dsa/ocelot/felix.c | 3 ++- drivers/net/dsa/qca/ar9331.c | 3 ++- drivers/net/dsa/qca8k.c | 3 ++- drivers/net/dsa/realtek/rtl8365mb.c | 3 ++- drivers/net/dsa/sja1105/sja1105_main.c | 3 ++- drivers/net/dsa/xrs700x/xrs700x.c | 3 ++- include/net/dsa.h | 3 ++- net/dsa/port.c | 23 +++++++++++++++++------ 15 files changed, 47 insertions(+), 21 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 48cf344750ff..fe75b84ab791 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1310,7 +1310,8 @@ void b53_port_event(struct dsa_switch *ds, int port) EXPORT_SYMBOL(b53_port_event); static void b53_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct b53_device *dev = ds->priv; diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index be0edfa093d0..18a3847bd82b 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -713,7 +713,8 @@ static u32 bcm_sf2_sw_get_phy_flags(struct dsa_switch *ds, int port) } static void bcm_sf2_sw_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { unsigned long *interfaces = config->supported_interfaces; struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c index ac1f3b3a7040..ff78f580bb14 100644 --- a/drivers/net/dsa/hirschmann/hellcreek.c +++ b/drivers/net/dsa/hirschmann/hellcreek.c @@ -1462,7 +1462,8 @@ static void hellcreek_teardown(struct dsa_switch *ds) } static void hellcreek_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct hellcreek *hellcreek = ds->priv; diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c index e531b93f3cb2..a43dabfa5453 100644 --- a/drivers/net/dsa/lantiq_gswip.c +++ b/drivers/net/dsa/lantiq_gswip.c @@ -1492,7 +1492,8 @@ static int gswip_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu) } static void gswip_xrx200_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { switch (port) { case 0: @@ -1525,7 +1526,8 @@ static void gswip_xrx200_phylink_get_caps(struct dsa_switch *ds, int port, } static void gswip_xrx300_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { switch (port) { case 0: diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 28d7cb2ce98f..4329e29a1695 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -721,7 +721,8 @@ static int ksz_check_device_id(struct ksz_device *dev) } static void ksz_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct ksz_device *dev = ds->priv; diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 835807911be0..dab308e454e3 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -2914,7 +2914,8 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port) } static void mt753x_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct mt7530_priv *priv = ds->priv; diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 37b649501500..f98be98551ef 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -819,7 +819,8 @@ static void mv88e6393x_phylink_get_caps(struct mv88e6xxx_chip *chip, int port, } static void mv88e6xxx_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct mv88e6xxx_chip *chip = ds->priv; diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 859196898a7d..0c1ac902b110 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -937,7 +937,8 @@ static int felix_vlan_del(struct dsa_switch *ds, int port, } static void felix_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct ocelot *ocelot = ds->priv; diff --git a/drivers/net/dsa/qca/ar9331.c b/drivers/net/dsa/qca/ar9331.c index 0796b7cf8cae..19e95dabe5b9 100644 --- a/drivers/net/dsa/qca/ar9331.c +++ b/drivers/net/dsa/qca/ar9331.c @@ -501,7 +501,8 @@ static enum dsa_tag_protocol ar9331_sw_get_tag_protocol(struct dsa_switch *ds, } static void ar9331_sw_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE | MAC_10 | MAC_100; diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index 1cbb05b0323f..beccd8338c81 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -1749,7 +1749,8 @@ qca8k_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, } static void qca8k_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { switch (port) { case 0: /* 1st CPU port */ diff --git a/drivers/net/dsa/realtek/rtl8365mb.c b/drivers/net/dsa/realtek/rtl8365mb.c index da31d8b839ac..7bf420c2b083 100644 --- a/drivers/net/dsa/realtek/rtl8365mb.c +++ b/drivers/net/dsa/realtek/rtl8365mb.c @@ -1024,7 +1024,8 @@ static int rtl8365mb_ext_config_forcemode(struct realtek_priv *priv, int port, } static void rtl8365mb_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { const struct rtl8365mb_extint *extint = rtl8365mb_get_port_extint(ds->priv, port); diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c index b253e27bcfb4..e15033177643 100644 --- a/drivers/net/dsa/sja1105/sja1105_main.c +++ b/drivers/net/dsa/sja1105/sja1105_main.c @@ -1390,7 +1390,8 @@ static void sja1105_mac_link_up(struct dsa_switch *ds, int port, } static void sja1105_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { struct sja1105_private *priv = ds->priv; struct sja1105_xmii_params_entry *mii; diff --git a/drivers/net/dsa/xrs700x/xrs700x.c b/drivers/net/dsa/xrs700x/xrs700x.c index 3887ed33c5fe..214a1dd670c2 100644 --- a/drivers/net/dsa/xrs700x/xrs700x.c +++ b/drivers/net/dsa/xrs700x/xrs700x.c @@ -443,7 +443,8 @@ static void xrs700x_teardown(struct dsa_switch *ds) } static void xrs700x_phylink_get_caps(struct dsa_switch *ds, int port, - struct phylink_config *config) + struct phylink_config *config, + phy_interface_t *default_interface) { switch (port) { case 0: diff --git a/include/net/dsa.h b/include/net/dsa.h index b902b31bebce..7c6870d2c607 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -852,7 +852,8 @@ struct dsa_switch_ops { * PHYLINK integration */ void (*phylink_get_caps)(struct dsa_switch *ds, int port, - struct phylink_config *config); + struct phylink_config *config, + phy_interface_t *default_interface); void (*phylink_validate)(struct dsa_switch *ds, int port, unsigned long *supported, struct phylink_link_state *state); diff --git a/net/dsa/port.c b/net/dsa/port.c index 3738f2d40a0b..35b4e1f8dc05 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -1524,13 +1524,9 @@ static const struct phylink_mac_ops dsa_port_phylink_mac_ops = { int dsa_port_phylink_create(struct dsa_port *dp) { struct dsa_switch *ds = dp->ds; - phy_interface_t mode; + phy_interface_t mode, def_mode; int err; - err = of_get_phy_mode(dp->dn, &mode); - if (err) - mode = PHY_INTERFACE_MODE_NA; - /* Presence of phylink_mac_link_state or phylink_mac_an_restart is * an indicator of a legacy phylink driver. */ @@ -1538,8 +1534,23 @@ int dsa_port_phylink_create(struct dsa_port *dp) ds->ops->phylink_mac_an_restart) dp->pl_config.legacy_pre_march2020 = true; + def_mode = PHY_INTERFACE_MODE_NA; if (ds->ops->phylink_get_caps) - ds->ops->phylink_get_caps(ds, dp->index, &dp->pl_config); + ds->ops->phylink_get_caps(ds, dp->index, &dp->pl_config, + &def_mode); + + err = of_get_phy_mode(dp->dn, &mode); + if (err) { + /* We must not set the default mode for user ports as a PHY + * overrides the NA mode in phylink. Setting it here would + * prevent the interface mode being updated. + */ + if (dp->type == DSA_PORT_TYPE_CPU || + dp->type == DSA_PORT_TYPE_DSA) + mode = def_mode; + else + mode = PHY_INTERFACE_MODE_NA; + } dp->pl = phylink_create(&dp->pl_config, of_fwnode_handle(dp->dn), mode, &dsa_port_phylink_mac_ops); -- 2.30.2 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 F2BE9C43334 for ; Tue, 5 Jul 2022 09:49:33 +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:Date:Message-Id:MIME-Version:Subject:Cc :To:From:References:In-Reply-To:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1o000NQIawdznbAcK2Lqww/CopdT9Qa05CG1xmAds1w=; b=JM2t03KlQmhRaq +x4uYIMSgoVo7gx1RYFsTLRNaVqO9LoGb1t2JTheWxRiHa5NBnm1VYirl/8u/KyBoAwlV58LPFflA 3JFcrF7x8+AsdVPSsn4AZa/YH9y1jsdiuZBAb41uXQhn7fNgn3i6QA7Ptd9Yr3w6ltHcT/U8MwSRY ZqX+O5K0SZsYTfiDGGsUcIEr3teoM0jnGy8gTHfZzR4oOpmJoRtd6F09Ma/6725wiw7XAFK4oYIzt 7DyK3NEx1I0rLgv0b9pKJgmHaMKeTlKsHLDUw/2p/AwDbrcNpYU2s+f1yWDuFin9bhREWGKNOyZ98 HwHM1xTWEDkWVhWnFksA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8fAC-00Gtrw-5x; Tue, 05 Jul 2022 09:48:12 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o8fA3-00Gtka-Ou; Tue, 05 Jul 2022 09:48:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Date:Sender:Message-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:Subject:Cc:To:From:References: In-Reply-To:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=nmwB/w2ODX+PhO2MIYPtuzhbVH60qFtgTIdGIGmVkNU=; b=wB2LAHhppYezNRkU0nsYYKEKPU bxr1EWDL17XvtKMLG5aayBuqmxr3jAYxTyOz6ioHxzYCblEQGm3RQ/P7tdsHUIJS0JjyEgpEdsEOu qVsZUWxdzyDB7LeROZWc401EA0hhv7nwG/I5jENKLVnP78bb1iUcQQlBQk2AWTCiOdtDyZJlwHmBp 8emoOMfVL26kBMuLbgad52kkXXG6+mrLJlqzxUHV2D1vz9scBtF2YazodxJjuIyjcwtqCDT8dPZnP FvzBXTmyfLa2Y+gJ3jqfBpU1nN73otXlY1t1kh9Une4nIEeLXyIj/LvCS4Fqv19teAHSgSa4V2Pak lVvLxWDQ==; Received: from e0022681537dd.dyn.armlinux.org.uk ([fd8f:7570:feb6:1:222:68ff:fe15:37dd]:60648 helo=rmk-PC.armlinux.org.uk) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1o8f9n-000133-Lk; Tue, 05 Jul 2022 10:47:48 +0100 Received: from rmk by rmk-PC.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1o8f9m-0059a0-Ux; Tue, 05 Jul 2022 10:47:47 +0100 In-Reply-To: References: From: "Russell King (Oracle)" To: Andrew Lunn , Heiner Kallweit Cc: Alexandre Belloni , "Alvin __ipraga" , Claudiu Manoil , "David S. Miller" , DENG Qingfang , Eric Dumazet , Florian Fainelli , George McCollister , Hauke Mehrtens , Jakub Kicinski , Kurt Kanzenbach , Landen Chao , Linus Walleij , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Matthias Brugger , netdev@vger.kernel.org, Paolo Abeni , Sean Wang , UNGLinuxDriver@microchip.com, Vivien Didelot , Vladimir Oltean , Woojung Huh , Marek =?iso-8859-1?Q?Beh=FAn?= Subject: [PATCH RFC net-next 1/5] net: dsa: add support for retrieving the interface mode MIME-Version: 1.0 MIME-Version: 1.0 Content-Disposition: inline Message-Id: Date: Tue, 05 Jul 2022 10:47:46 +0100 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220705_024804_007556_E4C6FD20 X-CRM114-Status: GOOD ( 20.22 ) 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 RFNBIHBvcnQgYmluZGluZ3MgYWxsb3cgZm9yIGFuIG9wdGlvbmFsIHBoeSBpbnRlcmZhY2UgbW9k ZS4gV2hlbiBhbgppbnRlcmZhY2UgbW9kZSBpcyBub3Qgc3BlY2lmaWVkLCBEU0EgdXNlcyB0aGUg TkEgaW50ZXJmYWNlIG1vZGUgdHlwZS4KCkhvd2V2ZXIsIHBoeWxpbmsgbmVlZHMgdG8ga25vdyB0 aGUgcGFyYW1ldGVycyBvZiB0aGUgbGluaywgYW5kIHRoaXMKd2lsbCBiZWNvbWUgZXNwZWNpYWxs eSBpbXBvcnRhbnQgd2hlbiB1c2luZyBwaHlsaW5rIGZvciBwb3J0cyB0aGF0CmFyZSBkZXZvaWQg b2YgYWxsIHByb3BlcnRpZXMgZXhjZXB0IHRoZSByZXF1aXJlZCAicmVnIiBwcm9wZXJ0eSwgc28K dGhhdCBwaHlsaW5rIGNhbiBzZWxlY3QgdGhlIG1heGltdW0gc3VwcG9ydGVkIGxpbmsgc2V0dGlu Z3MuIFdpdGhvdXQKa25vd2luZyB0aGUgaW50ZXJmYWNlIG1vZGUsIHBoeWxpbmsgY2FuJ3QgdHJ1 ZWx5IGtub3cgdGhlIG1heGltdW0KbGluayBzcGVlZC4KClVwZGF0ZSB0aGUgcHJvdG90eXBlIGZv ciB0aGUgcGh5bGlua19nZXRfY2FwcyBtZXRob2QgdG8gYWxsb3cgZHJpdmVycwp0byByZXBvcnQg dGhpcyBpbmZvcm1hdGlvbiBiYWNrIHRvIERTQSwgYW5kIHVwZGF0ZSBhbGwgRFNBCmltcGxlbWVu dGF0aW9ucyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gY2F0ZXIgZm9yIHRoaXMgY2hhbmdlLiBO bwpjb2RlIGlzIGFkZGVkIHRvIHRoZSBpbXBsZW1lbnRhdGlvbnMuCgpSZXZpZXdlZC1ieTogTWFy ZWsgQmVow7puIDxrYWJlbEBrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBSdXNzZWxsIEtpbmcg KE9yYWNsZSkgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPgotLS0KIGRyaXZlcnMvbmV0L2Rz YS9iNTMvYjUzX2NvbW1vbi5jICAgICAgIHwgIDMgKystCiBkcml2ZXJzL25ldC9kc2EvYmNtX3Nm Mi5jICAgICAgICAgICAgICB8ICAzICsrLQogZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVs bGNyZWVrLmMgfCAgMyArKy0KIGRyaXZlcnMvbmV0L2RzYS9sYW50aXFfZ3N3aXAuYyAgICAgICAg IHwgIDYgKysrKy0tCiBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyB8ICAz ICsrLQogZHJpdmVycy9uZXQvZHNhL210NzUzMC5jICAgICAgICAgICAgICAgfCAgMyArKy0KIGRy aXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jICAgICAgIHwgIDMgKystCiBkcml2ZXJzL25l dC9kc2Evb2NlbG90L2ZlbGl4LmMgICAgICAgICB8ICAzICsrLQogZHJpdmVycy9uZXQvZHNhL3Fj YS9hcjkzMzEuYyAgICAgICAgICAgfCAgMyArKy0KIGRyaXZlcnMvbmV0L2RzYS9xY2E4ay5jICAg ICAgICAgICAgICAgIHwgIDMgKystCiBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWIu YyAgICB8ICAzICsrLQogZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMgfCAg MyArKy0KIGRyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYyAgICAgIHwgIDMgKystCiBp bmNsdWRlL25ldC9kc2EuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQogbmV0L2RzYS9w b3J0LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKy0tLS0t LQogMTUgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25l dC9kc2EvYjUzL2I1M19jb21tb24uYwppbmRleCA0OGNmMzQ0NzUwZmYuLmZlNzViODRhYjc5MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMKKysrIGIvZHJpdmVy cy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMKQEAgLTEzMTAsNyArMTMxMCw4IEBAIHZvaWQgYjUz X3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIEVYUE9SVF9TWU1C T0woYjUzX3BvcnRfZXZlbnQpOwogCiBzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19nZXRfY2Fwcyhz dHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAotCQkJCSBzdHJ1Y3QgcGh5bGlua19jb25m aWcgKmNvbmZpZykKKwkJCQkgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCisJCQkJIHBo eV9pbnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpCiB7CiAJc3RydWN0IGI1M19kZXZpY2Ug KmRldiA9IGRzLT5wcml2OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5j IGIvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYwppbmRleCBiZTBlZGZhMDkzZDAuLjE4YTM4NDdi ZDgyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYworKysgYi9kcml2ZXJz L25ldC9kc2EvYmNtX3NmMi5jCkBAIC03MTMsNyArNzEzLDggQEAgc3RhdGljIHUzMiBiY21fc2Yy X3N3X2dldF9waHlfZmxhZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIH0KIAog c3RhdGljIHZvaWQgYmNtX3NmMl9zd19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGlu dCBwb3J0LAotCQkJCXN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKQorCQkJCXN0cnVjdCBw aHlsaW5rX2NvbmZpZyAqY29uZmlnLAorCQkJCXBoeV9pbnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRl cmZhY2UpCiB7CiAJdW5zaWduZWQgbG9uZyAqaW50ZXJmYWNlcyA9IGNvbmZpZy0+c3VwcG9ydGVk X2ludGVyZmFjZXM7CiAJc3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdiA9IGJjbV9zZjJfdG9fcHJp dihkcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsu YyBiL2RyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jCmluZGV4IGFjMWYzYjNh NzA0MC4uZmY3OGY1ODBiYjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFu bi9oZWxsY3JlZWsuYworKysgYi9kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsu YwpAQCAtMTQ2Miw3ICsxNDYyLDggQEAgc3RhdGljIHZvaWQgaGVsbGNyZWVrX3RlYXJkb3duKHN0 cnVjdCBkc2Ffc3dpdGNoICpkcykKIH0KIAogc3RhdGljIHZvaWQgaGVsbGNyZWVrX3BoeWxpbmtf Z2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKLQkJCQkgICAgICAgc3Ry dWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpCisJCQkJICAgICAgIHN0cnVjdCBwaHlsaW5rX2Nv bmZpZyAqY29uZmlnLAorCQkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgKmRlZmF1bHRfaW50ZXJm YWNlKQogewogCXN0cnVjdCBoZWxsY3JlZWsgKmhlbGxjcmVlayA9IGRzLT5wcml2OwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbGFudGlxX2dzd2lwLmMgYi9kcml2ZXJzL25ldC9kc2Ev bGFudGlxX2dzd2lwLmMKaW5kZXggZTUzMWI5M2YzY2IyLi5hNDNkYWJmYTU0NTMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L2RzYS9sYW50aXFfZ3N3aXAuYworKysgYi9kcml2ZXJzL25ldC9kc2Ev bGFudGlxX2dzd2lwLmMKQEAgLTE0OTIsNyArMTQ5Miw4IEBAIHN0YXRpYyBpbnQgZ3N3aXBfcG9y dF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1 KQogfQogCiBzdGF0aWMgdm9pZCBnc3dpcF94cngyMDBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3Qg ZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAotCQkJCQkgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAq Y29uZmlnKQorCQkJCQkgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAorCQkJCQkgIHBo eV9pbnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpCiB7CiAJc3dpdGNoIChwb3J0KSB7CiAJ Y2FzZSAwOgpAQCAtMTUyNSw3ICsxNTI2LDggQEAgc3RhdGljIHZvaWQgZ3N3aXBfeHJ4MjAwX3Bo eWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIH0KIAogc3Rh dGljIHZvaWQgZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2gg KmRzLCBpbnQgcG9ydCwKLQkJCQkJICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKKwkJ CQkJICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKKwkJCQkJICBwaHlfaW50ZXJmYWNl X3QgKmRlZmF1bHRfaW50ZXJmYWNlKQogewogCXN3aXRjaCAocG9ydCkgewogCWNhc2UgMDoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVy cy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKaW5kZXggMjhkN2NiMmNlOThmLi40MzI5 ZTI5YTE2OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1v bi5jCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jCkBAIC03MjEs NyArNzIxLDggQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2 aWNlICpkZXYpCiB9CiAKIHN0YXRpYyB2b2lkIGtzel9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCi0JCQkJIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29u ZmlnKQorCQkJCSBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywKKwkJCQkgcGh5X2ludGVy ZmFjZV90ICpkZWZhdWx0X2ludGVyZmFjZSkKIHsKIAlzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0g ZHMtPnByaXY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZl cnMvbmV0L2RzYS9tdDc1MzAuYwppbmRleCA4MzU4MDc5MTFiZTAuLmRhYjMwOGU0NTRlMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9t dDc1MzAuYwpAQCAtMjkxNCw3ICsyOTE0LDggQEAgbXQ3NTMxX2NwdV9wb3J0X2NvbmZpZyhzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQogfQogCiBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5 bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAotCQkJCSAgICBz dHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKKwkJCQkgICAgc3RydWN0IHBoeWxpbmtfY29u ZmlnICpjb25maWcsCisJCQkJICAgIHBoeV9pbnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2Up CiB7CiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhl Nnh4eC9jaGlwLmMKaW5kZXggMzdiNjQ5NTAxNTAwLi5mOThiZTk4NTUxZWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9t djg4ZTZ4eHgvY2hpcC5jCkBAIC04MTksNyArODE5LDggQEAgc3RhdGljIHZvaWQgbXY4OGU2Mzkz eF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQs CiB9CiAKIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0LAotCQkJICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKQor CQkJICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAorCQkJICAgICAgIHBoeV9p bnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlw ICpjaGlwID0gZHMtPnByaXY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qv ZmVsaXguYyBiL2RyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYwppbmRleCA4NTkxOTY4OThh N2QuLjBjMWFjOTAyYjExMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxp eC5jCisrKyBiL2RyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYwpAQCAtOTM3LDcgKzkzNyw4 IEBAIHN0YXRpYyBpbnQgZmVsaXhfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQg cG9ydCwKIH0KIAogc3RhdGljIHZvaWQgZmVsaXhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0LAotCQkJCSAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29u ZmlnKQorCQkJCSAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAorCQkJCSAgIHBoeV9p bnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpCiB7CiAJc3RydWN0IG9jZWxvdCAqb2NlbG90 ID0gZHMtPnByaXY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMg Yi9kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jCmluZGV4IDA3OTZiN2NmOGNhZS4uMTllOTVk YWJlNWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jCisrKyBiL2Ry aXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMKQEAgLTUwMSw3ICs1MDEsOCBAQCBzdGF0aWMgZW51 bSBkc2FfdGFnX3Byb3RvY29sIGFyOTMzMV9zd19nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ff c3dpdGNoICpkcywKIH0KIAogc3RhdGljIHZvaWQgYXI5MzMxX3N3X3BoeWxpbmtfZ2V0X2NhcHMo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKLQkJCQkgICAgICAgc3RydWN0IHBoeWxp bmtfY29uZmlnICpjb25maWcpCisJCQkJICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29u ZmlnLAorCQkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgKmRlZmF1bHRfaW50ZXJmYWNlKQogewog CWNvbmZpZy0+bWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVT RSB8CiAJCU1BQ18xMCB8IE1BQ18xMDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNh OGsuYyBiL2RyaXZlcnMvbmV0L2RzYS9xY2E4ay5jCmluZGV4IDFjYmIwNWIwMzIzZi4uYmVjY2Q4 MzM4YzgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhOGsuYworKysgYi9kcml2ZXJz L25ldC9kc2EvcWNhOGsuYwpAQCAtMTc0OSw3ICsxNzQ5LDggQEAgcWNhOGtfcGh5bGlua19tYWNf Y29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2Rl LAogfQogCiBzdGF0aWMgdm9pZCBxY2E4a19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dp dGNoICpkcywgaW50IHBvcnQsCi0JCQkJICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcp CisJCQkJICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCisJCQkJICAgcGh5X2ludGVy ZmFjZV90ICpkZWZhdWx0X2ludGVyZmFjZSkKIHsKIAlzd2l0Y2ggKHBvcnQpIHsKIAljYXNlIDA6 IC8qIDFzdCBDUFUgcG9ydCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsv cnRsODM2NW1iLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWIuYwppbmRleCBk YTMxZDhiODM5YWMuLjdiZjQyMGMyYjA4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3Jl YWx0ZWsvcnRsODM2NW1iLmMKKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1i LmMKQEAgLTEwMjQsNyArMTAyNCw4IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX2V4dF9jb25maWdf Zm9yY2Vtb2RlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LAogfQogCiBzdGF0 aWMgdm9pZCBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMs IGludCBwb3J0LAotCQkJCSAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKKwkJ CQkgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCisJCQkJICAgICAgIHBoeV9p bnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpCiB7CiAJY29uc3Qgc3RydWN0IHJ0bDgzNjVt Yl9leHRpbnQgKmV4dGludCA9CiAJCXJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoZHMtPnByaXYs IHBvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWlu LmMgYi9kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYwppbmRleCBiMjUzZTI3 YmNmYjQuLmUxNTAzMzE3NzY0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3NqYTExMDUv c2phMTEwNV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWlu LmMKQEAgLTEzOTAsNyArMTM5MCw4IEBAIHN0YXRpYyB2b2lkIHNqYTExMDVfbWFjX2xpbmtfdXAo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIH0KIAogc3RhdGljIHZvaWQgc2phMTEw NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCi0JCQkJ ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZykKKwkJCQkgICAgIHN0cnVjdCBwaHls aW5rX2NvbmZpZyAqY29uZmlnLAorCQkJCSAgICAgcGh5X2ludGVyZmFjZV90ICpkZWZhdWx0X2lu dGVyZmFjZSkKIHsKIAlzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2ID0gZHMtPnByaXY7CiAJ c3RydWN0IHNqYTExMDVfeG1paV9wYXJhbXNfZW50cnkgKm1paTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L2RzYS94cnM3MDB4L3hyczcwMHguYyBiL2RyaXZlcnMvbmV0L2RzYS94cnM3MDB4L3hy czcwMHguYwppbmRleCAzODg3ZWQzM2M1ZmUuLjIxNGExZGQ2NzBjMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZHNhL3hyczcwMHgveHJzNzAweC5jCisrKyBiL2RyaXZlcnMvbmV0L2RzYS94cnM3 MDB4L3hyczcwMHguYwpAQCAtNDQzLDcgKzQ0Myw4IEBAIHN0YXRpYyB2b2lkIHhyczcwMHhfdGVh cmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogfQogCiBzdGF0aWMgdm9pZCB4cnM3MDB4X3Bo eWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKLQkJCQkgICAg IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKQorCQkJCSAgICAgc3RydWN0IHBoeWxpbmtf Y29uZmlnICpjb25maWcsCisJCQkJICAgICBwaHlfaW50ZXJmYWNlX3QgKmRlZmF1bHRfaW50ZXJm YWNlKQogewogCXN3aXRjaCAocG9ydCkgewogCWNhc2UgMDoKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmgKaW5kZXggYjkwMmIzMWJlYmNlLi43YzY4NzBk MmM2MDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oCisrKyBiL2luY2x1ZGUvbmV0L2Rz YS5oCkBAIC04NTIsNyArODUyLDggQEAgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHsKIAkgKiBQSFlM SU5LIGludGVncmF0aW9uCiAJICovCiAJdm9pZAkoKnBoeWxpbmtfZ2V0X2NhcHMpKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCi0JCQkJICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAq Y29uZmlnKTsKKwkJCQkgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCisJCQkJICAg IHBoeV9pbnRlcmZhY2VfdCAqZGVmYXVsdF9pbnRlcmZhY2UpOwogCXZvaWQJKCpwaHlsaW5rX3Zh bGlkYXRlKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCQkJCSAgICB1bnNpZ25l ZCBsb25nICpzdXBwb3J0ZWQsCiAJCQkJICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0 YXRlKTsKZGlmZiAtLWdpdCBhL25ldC9kc2EvcG9ydC5jIGIvbmV0L2RzYS9wb3J0LmMKaW5kZXgg MzczOGYyZDQwYTBiLi4zNWI0ZTFmOGRjMDUgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvcG9ydC5jCisr KyBiL25ldC9kc2EvcG9ydC5jCkBAIC0xNTI0LDEzICsxNTI0LDkgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0gewogaW50IGRz YV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApCiB7CiAJc3RydWN0IGRz YV9zd2l0Y2ggKmRzID0gZHAtPmRzOwotCXBoeV9pbnRlcmZhY2VfdCBtb2RlOworCXBoeV9pbnRl cmZhY2VfdCBtb2RlLCBkZWZfbW9kZTsKIAlpbnQgZXJyOwogCi0JZXJyID0gb2ZfZ2V0X3BoeV9t b2RlKGRwLT5kbiwgJm1vZGUpOwotCWlmIChlcnIpCi0JCW1vZGUgPSBQSFlfSU5URVJGQUNFX01P REVfTkE7Ci0KIAkvKiBQcmVzZW5jZSBvZiBwaHlsaW5rX21hY19saW5rX3N0YXRlIG9yIHBoeWxp bmtfbWFjX2FuX3Jlc3RhcnQgaXMKIAkgKiBhbiBpbmRpY2F0b3Igb2YgYSBsZWdhY3kgcGh5bGlu ayBkcml2ZXIuCiAJICovCkBAIC0xNTM4LDggKzE1MzQsMjMgQEAgaW50IGRzYV9wb3J0X3BoeWxp bmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApCiAJICAgIGRzLT5vcHMtPnBoeWxpbmtfbWFj X2FuX3Jlc3RhcnQpCiAJCWRwLT5wbF9jb25maWcubGVnYWN5X3ByZV9tYXJjaDIwMjAgPSB0cnVl OwogCisJZGVmX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7CiAJaWYgKGRzLT5vcHMtPnBo eWxpbmtfZ2V0X2NhcHMpCi0JCWRzLT5vcHMtPnBoeWxpbmtfZ2V0X2NhcHMoZHMsIGRwLT5pbmRl eCwgJmRwLT5wbF9jb25maWcpOworCQlkcy0+b3BzLT5waHlsaW5rX2dldF9jYXBzKGRzLCBkcC0+ aW5kZXgsICZkcC0+cGxfY29uZmlnLAorCQkJCQkgICZkZWZfbW9kZSk7CisKKwllcnIgPSBvZl9n ZXRfcGh5X21vZGUoZHAtPmRuLCAmbW9kZSk7CisJaWYgKGVycikgeworCQkvKiBXZSBtdXN0IG5v dCBzZXQgdGhlIGRlZmF1bHQgbW9kZSBmb3IgdXNlciBwb3J0cyBhcyBhIFBIWQorCQkgKiBvdmVy cmlkZXMgdGhlIE5BIG1vZGUgaW4gcGh5bGluay4gU2V0dGluZyBpdCBoZXJlIHdvdWxkCisJCSAq IHByZXZlbnQgdGhlIGludGVyZmFjZSBtb2RlIGJlaW5nIHVwZGF0ZWQuCisJCSAqLworCQlpZiAo ZHAtPnR5cGUgPT0gRFNBX1BPUlRfVFlQRV9DUFUgfHwKKwkJICAgIGRwLT50eXBlID09IERTQV9Q T1JUX1RZUEVfRFNBKQorCQkJbW9kZSA9IGRlZl9tb2RlOworCQllbHNlCisJCQltb2RlID0gUEhZ X0lOVEVSRkFDRV9NT0RFX05BOworCX0KIAogCWRwLT5wbCA9IHBoeWxpbmtfY3JlYXRlKCZkcC0+ cGxfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKGRwLT5kbiksCiAJCQkJbW9kZSwgJmRzYV9wb3J0 X3BoeWxpbmtfbWFjX29wcyk7Ci0tIAoyLjMwLjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==