From patchwork Mon Jun 5 03:27:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790202 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=V2lC9XLN; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvZ1c1Fz20Ty for ; Mon, 5 Jun 2023 13:27:36 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sL-0006Gb-P8; Mon, 05 Jun 2023 03:27:21 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sK-0006GN-5w for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:20 +0000 Received: from mail-oi1-f199.google.com (mail-oi1-f199.google.com [209.85.167.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id F13B23F22B for ; Mon, 5 Jun 2023 03:27:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935640; bh=/Ji94El1LN5eRCtrEEIW+xlKDi3/pxcMGNGUUYBmrY8=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=V2lC9XLNHi9TlgR2IuiM420dmVZceecFpcd4NlNruozBpr8R3QOmw2o0ei1C1aAx4 3+XtUxpC+ZHbYifjoz9l5Ksk7gZeYdltYQNg61S/pfO7T8+DDyQrTyCMx5ZHec7PvF ZCsMu9qMtZfL/76ivkuLVlAhv6Oo58TDIwttc+JVNFH6/lUPwjxu7ApiTYce/7IOjv Gu/oqTVSJAhODXHAJhp7QyyTNR/tBqImkEtaU7jIHv06fxyTM6AWOBsP5N/R0Qg3Ie Ih9yzT6z3WpTwH1lOXXCLzh9TLp8uLa80gINLTMkjpRvLdC+cwAkrlsyiQmu4nBIxU p6hWmB/hU62jQ== Received: by mail-oi1-f199.google.com with SMTP id 5614622812f47-39aa9617c6bso675695b6e.1 for ; Sun, 04 Jun 2023 20:27:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935638; x=1688527638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/Ji94El1LN5eRCtrEEIW+xlKDi3/pxcMGNGUUYBmrY8=; b=QctWe+pw2IcYZFPY9ElxuJwuQm40TSKPIN63mF8gNH2O1oCN6rtkTapKZARfzpbXEW qkB6qPpYx5/tMspz09sjLDWMf66NOoDlQMFgVIlAdqhoBzuDrmywNpxJEcypQ92wjt8d GHZ29QXfWZHDl8ic46WAYjO64xHBIryQmSJllmrtE0ZCpkycCdiUlqPX48Gduqu3Z8r+ wMdQcDokpPpin99m7Ty9gp0xN1FUHlKS6//OYOQvoiGs3x3Jy1rDmoeYaUfr//X/6EXl ftn0QfhEhSD5RZ3XhUsdELdvKB9DYKm58KXfjH57hbBYmWTHkQzW3JeMennWY4A4sA2n GpGw== X-Gm-Message-State: AC+VfDy+4flpWnJRnh4kI6bqX3Kg4tmkWM3SQaJw+Y9Ymt6fC9di5jht iUXesfymGw5O36Sl1hbt/TwQsck2wVP0QkaTZBavGg2mm89Sa0t+XY2ydSGKiudv/HQeGVY4Ip9 zHVct9Tk+qx7XXD0tmUIMjzh+hR6XyGN2CzgIUMfRxkKSRCKNnQ== X-Received: by 2002:a05:6808:8ce:b0:38d:fdf2:962e with SMTP id k14-20020a05680808ce00b0038dfdf2962emr6525635oij.23.1685935638207; Sun, 04 Jun 2023 20:27:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4E5LppPSioFkyJgKvw+PMoV4qMA4PEHlMEpe4r2RKnf6qi7AcAhw9tWcx1QMCdvfYl9odPVw== X-Received: by 2002:a05:6808:8ce:b0:38d:fdf2:962e with SMTP id k14-20020a05680808ce00b0038dfdf2962emr6525621oij.23.1685935637747; Sun, 04 Jun 2023 20:27:17 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id v20-20020a63f854000000b005348af1b84csm4764202pgj.74.2023.06.04.20.27.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:17 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/6 V2][SRU][Lunar] r8169: use spinlock to protect mac ocp register access Date: Mon, 5 Jun 2023 11:27:06 +0800 Message-Id: <20230605032711.606574-2-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 For disabling ASPM during NAPI poll we'll have to access mac ocp registers in atomic context. This could result in races because a mac ocp read consists of a write to register OCPDR, followed by a read from the same register. Therefore add a spinlock to protect access to mac ocp registers. Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit 91c8643578a21e435c412ffbe902bb4b4773e262) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 37 ++++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 6fd040dd74234..c3ba74c611199 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -612,6 +612,8 @@ struct rtl8169_private { struct work_struct work; } wk; + spinlock_t mac_ocp_lock; + unsigned supports_gmii:1; unsigned aspm_manageable:1; dma_addr_t counters_phys_addr; @@ -846,7 +848,7 @@ static int r8168_phy_ocp_read(struct rtl8169_private *tp, u32 reg) (RTL_R32(tp, GPHY_OCP) & 0xffff) : -ETIMEDOUT; } -static void r8168_mac_ocp_write(struct rtl8169_private *tp, u32 reg, u32 data) +static void __r8168_mac_ocp_write(struct rtl8169_private *tp, u32 reg, u32 data) { if (rtl_ocp_reg_failure(reg)) return; @@ -854,7 +856,16 @@ static void r8168_mac_ocp_write(struct rtl8169_private *tp, u32 reg, u32 data) RTL_W32(tp, OCPDR, OCPAR_FLAG | (reg << 15) | data); } -static u16 r8168_mac_ocp_read(struct rtl8169_private *tp, u32 reg) +static void r8168_mac_ocp_write(struct rtl8169_private *tp, u32 reg, u32 data) +{ + unsigned long flags; + + spin_lock_irqsave(&tp->mac_ocp_lock, flags); + __r8168_mac_ocp_write(tp, reg, data); + spin_unlock_irqrestore(&tp->mac_ocp_lock, flags); +} + +static u16 __r8168_mac_ocp_read(struct rtl8169_private *tp, u32 reg) { if (rtl_ocp_reg_failure(reg)) return 0; @@ -864,12 +875,28 @@ static u16 r8168_mac_ocp_read(struct rtl8169_private *tp, u32 reg) return RTL_R32(tp, OCPDR); } +static u16 r8168_mac_ocp_read(struct rtl8169_private *tp, u32 reg) +{ + unsigned long flags; + u16 val; + + spin_lock_irqsave(&tp->mac_ocp_lock, flags); + val = __r8168_mac_ocp_read(tp, reg); + spin_unlock_irqrestore(&tp->mac_ocp_lock, flags); + + return val; +} + static void r8168_mac_ocp_modify(struct rtl8169_private *tp, u32 reg, u16 mask, u16 set) { - u16 data = r8168_mac_ocp_read(tp, reg); + unsigned long flags; + u16 data; - r8168_mac_ocp_write(tp, reg, (data & ~mask) | set); + spin_lock_irqsave(&tp->mac_ocp_lock, flags); + data = __r8168_mac_ocp_read(tp, reg); + __r8168_mac_ocp_write(tp, reg, (data & ~mask) | set); + spin_unlock_irqrestore(&tp->mac_ocp_lock, flags); } /* Work around a hw issue with RTL8168g PHY, the quirk disables @@ -5155,6 +5182,8 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) tp->eee_adv = -1; tp->ocp_base = OCP_STD_PHY_BASE; + spin_lock_init(&tp->mac_ocp_lock); + dev->tstats = devm_netdev_alloc_pcpu_stats(&pdev->dev, struct pcpu_sw_netstats); if (!dev->tstats) From patchwork Mon Jun 5 03:27:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790201 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=qXNLKblz; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvZ3LNCz20fM for ; Mon, 5 Jun 2023 13:27:36 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sO-0006HC-Vn; Mon, 05 Jun 2023 03:27:24 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sN-0006Gv-6H for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:23 +0000 Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com [209.85.210.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id F34B53F22B for ; Mon, 5 Jun 2023 03:27:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935642; bh=GLzw/RjHjGNPa2DJ5yVAKtDXHzdgCMKN5dv8yq/MW9A=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=qXNLKblzTEIqA04Oz2lH8bgZwjLhH/KBtApJ821bSaQc8/t12RQnZqLqyvMQ+hIxZ l4jKSN9B8KOC8MmJuIkeNVMT3v4oMAOgUP6aSFkrh+Uo1sghuThbMUNHP9Usei9PKz iE6Buwon1Sp3D2DISo7FJkoVEe7EZMDB1TaMq2XV0OtttPfAQPJuutjZnwcdHy3LhB nhiABSfVlK60zqcSiKKA9NPz9vnf21mFiJHCJMPJhBjChi+UA1qV/wCdEyoKmKJ0v1 O/HC1wiebp5TIHTUBKOujYURYHviLijwVXwZXflwDzZnOG3fE4mFf4kxmouhDzJOfV M9e92KGKU/Qjw== Received: by mail-ot1-f71.google.com with SMTP id 46e09a7af769-6af9c82b407so4455214a34.0 for ; Sun, 04 Jun 2023 20:27:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935640; x=1688527640; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GLzw/RjHjGNPa2DJ5yVAKtDXHzdgCMKN5dv8yq/MW9A=; b=PvQjHWNUxUesXSkaqAbb2E233HBcrplZn/KmG2RlpZ5q75Jxt82xw9YRLAfwys8k6Y nAvm9IYFfSVRuICiRUZAjJEOtTnN7dlWXWPyuQc5WwDWP2TmfGD1lv6yFsBRV9vlI4vk 09+4l68WwlbxmOyBrbli/azNdhWXI9QDgwWOFOrFvD48c/FD2F5BE97NrPXwHkd3Vp3i V8+8CqKg2mzBGj69GPzj4XycxfbBbsUCX7kn3Zpvs7c1cBjRXSMvWRaa/RL1t6TTTAjg CaufsYrKo1QJ7rjvVDShu0dOChCsmkJz3uekUoHz4yWsBJ9SsNEWrK/UKzg1yHgiCW/B yWKw== X-Gm-Message-State: AC+VfDz3eT4hiVjjO7lSpWDS+jPzbk7C6F11jxwB7VkNu+o0Dh4jgsvH 8LbJitgrW6haMGNO2gZnK+/8yCp7cgEXRQpIDuVueFFFACIgtNtObXJAIi4D+xu2uMX6yXvdRHY 9z2VtmQbErRfw8Hbzx6MkCMJOay5q1mJdkX6vEAooGPTj0M5Gmg== X-Received: by 2002:a9d:7f14:0:b0:6af:7e2c:f14f with SMTP id j20-20020a9d7f14000000b006af7e2cf14fmr9473685otq.32.1685935640468; Sun, 04 Jun 2023 20:27:20 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7vVUCaKiGGck5lF+ElBEXzYVRfs6NY3VG4eXT5fbEkBQNQeARo9tigIoPGtxJDcZQuDHXaCw== X-Received: by 2002:a9d:7f14:0:b0:6af:7e2c:f14f with SMTP id j20-20020a9d7f14000000b006af7e2cf14fmr9473668otq.32.1685935640046; Sun, 04 Jun 2023 20:27:20 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id b7-20020aa78107000000b0063f0ef3b421sm4394547pfi.14.2023.06.04.20.27.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:19 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/6 V2][SRU][Lunar] r8169: use spinlock to protect access to registers Config2 and Config5 Date: Mon, 5 Jun 2023 11:27:07 +0800 Message-Id: <20230605032711.606574-3-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 For disabling ASPM during NAPI poll we'll have to access both registers in atomic context. Use a spinlock to protect access. Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit 6bc6c4e6893ee79a9862c61d1635e7da6d5a3333) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 47 ++++++++++++++++++----- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index c3ba74c611199..0e520fadc59d0 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -612,6 +612,7 @@ struct rtl8169_private { struct work_struct work; } wk; + spinlock_t config25_lock; spinlock_t mac_ocp_lock; unsigned supports_gmii:1; @@ -676,6 +677,28 @@ static void rtl_pci_commit(struct rtl8169_private *tp) RTL_R8(tp, ChipCmd); } +static void rtl_mod_config2(struct rtl8169_private *tp, u8 clear, u8 set) +{ + unsigned long flags; + u8 val; + + spin_lock_irqsave(&tp->config25_lock, flags); + val = RTL_R8(tp, Config2); + RTL_W8(tp, Config2, (val & ~clear) | set); + spin_unlock_irqrestore(&tp->config25_lock, flags); +} + +static void rtl_mod_config5(struct rtl8169_private *tp, u8 clear, u8 set) +{ + unsigned long flags; + u8 val; + + spin_lock_irqsave(&tp->config25_lock, flags); + val = RTL_R8(tp, Config5); + RTL_W8(tp, Config5, (val & ~clear) | set); + spin_unlock_irqrestore(&tp->config25_lock, flags); +} + static bool rtl_is_8125(struct rtl8169_private *tp) { return tp->mac_version >= RTL_GIGA_MAC_VER_61; @@ -1362,6 +1385,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts) { WAKE_MAGIC, Config3, MagicPacket } }; unsigned int i, tmp = ARRAY_SIZE(cfg); + unsigned long flags; u8 options; rtl_unlock_config_regs(tp); @@ -1380,12 +1404,14 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts) r8168_mac_ocp_modify(tp, 0xc0b6, BIT(0), 0); } + spin_lock_irqsave(&tp->config25_lock, flags); for (i = 0; i < tmp; i++) { options = RTL_R8(tp, cfg[i].reg) & ~cfg[i].mask; if (wolopts & cfg[i].opt) options |= cfg[i].mask; RTL_W8(tp, cfg[i].reg, options); } + spin_unlock_irqrestore(&tp->config25_lock, flags); switch (tp->mac_version) { case RTL_GIGA_MAC_VER_02 ... RTL_GIGA_MAC_VER_06: @@ -1397,10 +1423,10 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts) case RTL_GIGA_MAC_VER_34: case RTL_GIGA_MAC_VER_37: case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63: - options = RTL_R8(tp, Config2) & ~PME_SIGNAL; if (wolopts) - options |= PME_SIGNAL; - RTL_W8(tp, Config2, options); + rtl_mod_config2(tp, 0, PME_SIGNAL); + else + rtl_mod_config2(tp, PME_SIGNAL, 0); break; default: break; @@ -2703,8 +2729,8 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) { /* Don't enable ASPM in the chip if OS can't control ASPM */ if (enable && tp->aspm_manageable) { - RTL_W8(tp, Config5, RTL_R8(tp, Config5) | ASPM_en); - RTL_W8(tp, Config2, RTL_R8(tp, Config2) | ClkReqEn); + rtl_mod_config5(tp, 0, ASPM_en); + rtl_mod_config2(tp, 0, ClkReqEn); switch (tp->mac_version) { case RTL_GIGA_MAC_VER_46 ... RTL_GIGA_MAC_VER_48: @@ -2727,8 +2753,8 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) break; } - RTL_W8(tp, Config2, RTL_R8(tp, Config2) & ~ClkReqEn); - RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~ASPM_en); + rtl_mod_config2(tp, ClkReqEn, 0); + rtl_mod_config5(tp, ASPM_en, 0); } udelay(10); @@ -2889,7 +2915,7 @@ static void rtl_hw_start_8168e_1(struct rtl8169_private *tp) RTL_W32(tp, MISC, RTL_R32(tp, MISC) | TXPLA_RST); RTL_W32(tp, MISC, RTL_R32(tp, MISC) & ~TXPLA_RST); - RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~Spi_en); + rtl_mod_config5(tp, Spi_en, 0); } static void rtl_hw_start_8168e_2(struct rtl8169_private *tp) @@ -2922,7 +2948,7 @@ static void rtl_hw_start_8168e_2(struct rtl8169_private *tp) RTL_W8(tp, DLLPR, RTL_R8(tp, DLLPR) | PFM_EN); RTL_W32(tp, MISC, RTL_R32(tp, MISC) | PWM_EN); - RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~Spi_en); + rtl_mod_config5(tp, Spi_en, 0); rtl_hw_aspm_clkreq_enable(tp, true); } @@ -2945,7 +2971,7 @@ static void rtl_hw_start_8168f(struct rtl8169_private *tp) RTL_W8(tp, MCU, RTL_R8(tp, MCU) & ~NOW_IS_OOB); RTL_W8(tp, DLLPR, RTL_R8(tp, DLLPR) | PFM_EN); RTL_W32(tp, MISC, RTL_R32(tp, MISC) | PWM_EN); - RTL_W8(tp, Config5, RTL_R8(tp, Config5) & ~Spi_en); + rtl_mod_config5(tp, Spi_en, 0); rtl8168_config_eee_mac(tp); } @@ -5182,6 +5208,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) tp->eee_adv = -1; tp->ocp_base = OCP_STD_PHY_BASE; + spin_lock_init(&tp->config25_lock); spin_lock_init(&tp->mac_ocp_lock); dev->tstats = devm_netdev_alloc_pcpu_stats(&pdev->dev, From patchwork Mon Jun 5 03:27:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790197 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=X1JIJynV; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvZ2C1Bz20fG for ; Mon, 5 Jun 2023 13:27:36 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sQ-0006Hd-8g; Mon, 05 Jun 2023 03:27:26 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sP-0006HD-2J for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:25 +0000 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id CB42E3F22B for ; Mon, 5 Jun 2023 03:27:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935644; bh=pBUuyIN3SnVz3LWCxhbdUT7COK0xVNDf3lAMxGDSPMg=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=X1JIJynVb/vnWL763nWlZ0QPhi3ElBOElSteZN2gm6AfyNJ5xdCNonlK5rEenEBAP f/GjZ7rBBBjekcoI3YQBlaIO4cluUzYdMMNYsbDi8mTj5hztd9wyUljdXTtLr7ep5V 5ksqiDVut4bG1nf+GL06cbasWyTRvB7Jc+POxcFtGPbgJC2zhzEs8QNwsHvk4IE8wt eal5wX0WIsSC1HHfrFY/OTZzUYGJ2v/j/oJFR0rRfTy6ThfjBLYw4i7CTochDtYhuI wJhLq4tr2Jt+nG9Y99YoBsuF1pAWnm6FHyv/VYQ60WD5Q32Hqb4vaNqEZOtmmR6BJz Xv6JDYKLN+4FQ== Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-1b0336355a4so40121045ad.1 for ; Sun, 04 Jun 2023 20:27:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935642; x=1688527642; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pBUuyIN3SnVz3LWCxhbdUT7COK0xVNDf3lAMxGDSPMg=; b=GqOiOGMJhIwwxuQx6eviiDM+RyehZvHdC54Ei0rQoEB5N2r4/oghLo0plUcCedduO8 +cIFoyI3sOQRE2vLnFxpACdvv9KlDWDmATkefaptj4zKegBnjHw7Nzwb4kZ+1TyCyftt GafnqiECs5XE/0PE/PrwmWVR8fHBPHqsISCp0y7EOQnZc3YsxeZt9LvyYatjAscLWsUb Xt0KI03DbnDt+Fxb1H/AeidHtxPxQ/JtLJMR9sW+d+gvL7cWtHex3jSx/w+zEwntc6+d EcrDYB/8ZkBcO73SjCgefqJ/lQnlUbwfzryKrMFenIo03AjoXdtyBe9wXquEyvAKB4/F LnIA== X-Gm-Message-State: AC+VfDxriFqR/9arov0+AjwEntX0fCZMdSdXJzg/O60fNzlF8s1F4dy/ 7IwubTVctkTjh/Fo4lnFsI3bzM0SgGBdp2UZA9dP6DByeXUP/cMwUvCfImGHxpC3UQAHc1ZU/uK 38gonujc3Ko5nEq9/XoIeBgqB91XzQ8cVA9SINXbni2s9fZ98/A== X-Received: by 2002:a17:902:b187:b0:1ab:2034:26da with SMTP id s7-20020a170902b18700b001ab203426damr5347946plr.51.1685935642430; Sun, 04 Jun 2023 20:27:22 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4rjp9w0u5OSZoahcm2lp76mswH1iF4QH2WZjnH22bVSN4BxwE7/mRYAm+vCfXGqm/CJ5ZNlw== X-Received: by 2002:a17:902:b187:b0:1ab:2034:26da with SMTP id s7-20020a170902b18700b001ab203426damr5347937plr.51.1685935642065; Sun, 04 Jun 2023 20:27:22 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id b3-20020a170902d50300b001a673210cf4sm5375625plg.74.2023.06.04.20.27.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:21 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 3/6 V2][SRU][Lunar] r8169: enable cfg9346 config register access in atomic context Date: Mon, 5 Jun 2023 11:27:08 +0800 Message-Id: <20230605032711.606574-4-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 For disabling ASPM during NAPI poll we'll have to unlock access to the config registers in atomic context. Other code parts running with config register access unlocked are partially longer and can sleep. Add a usage counter to enable parallel execution of code parts requiring unlocked config registers. Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit 59ee97c0c1a8d0dadc092897ca7d5fe3a80e1bc3) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 0e520fadc59d0..ffcb0e6c241fc 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -615,6 +615,9 @@ struct rtl8169_private { spinlock_t config25_lock; spinlock_t mac_ocp_lock; + spinlock_t cfg9346_usage_lock; + int cfg9346_usage_count; + unsigned supports_gmii:1; unsigned aspm_manageable:1; dma_addr_t counters_phys_addr; @@ -663,12 +666,22 @@ static inline struct device *tp_to_dev(struct rtl8169_private *tp) static void rtl_lock_config_regs(struct rtl8169_private *tp) { - RTL_W8(tp, Cfg9346, Cfg9346_Lock); + unsigned long flags; + + spin_lock_irqsave(&tp->cfg9346_usage_lock, flags); + if (!--tp->cfg9346_usage_count) + RTL_W8(tp, Cfg9346, Cfg9346_Lock); + spin_unlock_irqrestore(&tp->cfg9346_usage_lock, flags); } static void rtl_unlock_config_regs(struct rtl8169_private *tp) { - RTL_W8(tp, Cfg9346, Cfg9346_Unlock); + unsigned long flags; + + spin_lock_irqsave(&tp->cfg9346_usage_lock, flags); + if (!tp->cfg9346_usage_count++) + RTL_W8(tp, Cfg9346, Cfg9346_Unlock); + spin_unlock_irqrestore(&tp->cfg9346_usage_lock, flags); } static void rtl_pci_commit(struct rtl8169_private *tp) @@ -5208,6 +5221,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) tp->eee_adv = -1; tp->ocp_base = OCP_STD_PHY_BASE; + spin_lock_init(&tp->cfg9346_usage_lock); spin_lock_init(&tp->config25_lock); spin_lock_init(&tp->mac_ocp_lock); From patchwork Mon Jun 5 03:27:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790198 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Hm0BVu3w; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvZ29Vyz20Wv for ; Mon, 5 Jun 2023 13:27:37 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sU-0006Kp-L5; Mon, 05 Jun 2023 03:27:30 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sS-0006Iq-SR for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:28 +0000 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 29A313F22B for ; Mon, 5 Jun 2023 03:27:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935647; bh=XY+5XHCprkPyphFGTatowR2tSP3FFEZK5tb7Ppoiew4=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Hm0BVu3wZtrZREUyL4GRnKhibEMoXjJK+b1zpJXqIwQwK0uL9GDel8lLHKLg+bwwf yThGPlN4csFnvOg6ANrjrVixNSotUONLEm3ETUvC/YCj+EH/tc47Thguu2js6lUoI3 r8EXeRwj1L9QjsKtX2OwVJ68xkb5Gj+uolrb5jIVc2QB2ARCUXBz0qlCLWcU1s/HnM XaTjUYYslJJZZ8u8swDn9jBrT0lE3OG9BjcHi6rPEmyZ2mdjB9sIPxUMSB49cJllCW 8axM/V8dKOaBN+4t6x6b1c/ONPfjIGTOXB4xJT8UUwZOF7N4nsuec4xrxGfSDIcOEB JFXtblkmCsDqg== Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-1b01d7b3e80so40684055ad.3 for ; Sun, 04 Jun 2023 20:27:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935645; x=1688527645; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XY+5XHCprkPyphFGTatowR2tSP3FFEZK5tb7Ppoiew4=; b=DVE+ClNgNr+4H8GaIH8yO01VJGEu6nmL5VANcay5PPDqVZMkVLW0WehXCgdG8sIN0Q jRuuUjL9e7mo70xtL876QbtOjIav4rXhBaD8LGAzuqVnDyTtX5UrMRJhCkMcZccafkno UjvDTS0yrJb8UcF6uwwaEo6UBlDWhXEpkqQ5du9mG92coQkvqAGfTlCP8PtIi05ROcAI 0FGMd2sZWeWtNwuW4XyOV1JAW39eH6FQzmZFTlGLsgCpBbIsCKN13970kcYfvqyqOS8N EGLDQOANh0hDzJomEeQf8LFtSe48RPpz2G9DyFOGBpFGznTTnSdMZZZy5Y87l6Bo97M7 8KgQ== X-Gm-Message-State: AC+VfDy51MG2UNPr/X9HY3zXCBF/cAT+PHKaft1tYoV0Ol9tzl3Poa+H cms87kbf0sbfAgaEAO1Q8aCXcqM3a8Eq9G3Jh7CknyVFBCq5Mjt5X8qGyO7i/K9OyDcvJhK8fsL R4KqWyw7V3PMxCEiHK4Ws7ftyZFfjpPZgM63Q1e1YaHn/Zb1kxw== X-Received: by 2002:a17:903:18e:b0:1b1:4801:f516 with SMTP id z14-20020a170903018e00b001b14801f516mr5618428plg.68.1685935645238; Sun, 04 Jun 2023 20:27:25 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4aL9ids0orqo3TswwaiAWYo/Sf+9lEphBMW/PeAFddZdBHAgi6TQ7IlHt9GK6wVCFktnxVig== X-Received: by 2002:a17:903:18e:b0:1b1:4801:f516 with SMTP id z14-20020a170903018e00b001b14801f516mr5618420plg.68.1685935644878; Sun, 04 Jun 2023 20:27:24 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id i16-20020a170902c95000b001aafb802efbsm5346545pla.12.2023.06.04.20.27.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:24 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 4/6 V2][SRU][Lunar] r8169: prepare rtl_hw_aspm_clkreq_enable for usage in atomic context Date: Mon, 5 Jun 2023 11:27:09 +0800 Message-Id: <20230605032711.606574-5-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 Bail out if the function is used with chip versions that don't support ASPM configuration. In addition remove the delay, it tuned out that it's not needed, also vendor driver r8125 doesn't have it. Suggested-by: Kai-Heng Feng Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit 49ef7d846d4bd77b0b9f1f801fc765b004690a07) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index ffcb0e6c241fc..82faa171fa0c6 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -2740,6 +2740,9 @@ static void rtl_disable_exit_l1(struct rtl8169_private *tp) static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) { + if (tp->mac_version < RTL_GIGA_MAC_VER_32) + return; + /* Don't enable ASPM in the chip if OS can't control ASPM */ if (enable && tp->aspm_manageable) { rtl_mod_config5(tp, 0, ASPM_en); @@ -2769,8 +2772,6 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) rtl_mod_config2(tp, ClkReqEn, 0); rtl_mod_config5(tp, ASPM_en, 0); } - - udelay(10); } static void rtl_set_fifo_size(struct rtl8169_private *tp, u16 rx_stat, From patchwork Mon Jun 5 03:27:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790199 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Ozts8yM1; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvZ5VrXz20fN for ; Mon, 5 Jun 2023 13:27:38 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sW-0006Mh-70; Mon, 05 Jun 2023 03:27:32 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sU-0006KQ-4v for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:30 +0000 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id BC8593F22B for ; Mon, 5 Jun 2023 03:27:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935649; bh=dZnMnJhAS8ASluDlezSRJs84AN3bjP3uNGvS+Wjuodg=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Ozts8yM1+K/HddREZPFZAytW1MupwIA01N+T2g6Vt1JUZ0Zm9MeI5fRii+8LV4SjN mkPwDuN1dPjiUjbMgYm918GGKMCZSTp51iWcQdFdFHoyb9q5mTUR9++sIrRj92A02J mSK7Pc5IbbTWubGv3rQ3RGq2/0L4w1yNoQOT0Nx3n55YwfxKCwGIbsjilfJfzmB15k JWFv7p5DPKC9uRSFSbRZi3oclJ1sLJvtg0m7OjFBlXAEwBIyeMff9F5AqQ5lnAbuQR epHfxirWudu7lMA48uPwCV8orocjnpgCJxuhEpqV958zWmqRAdEUZ2XlABhT9Di7fp S6Qj/Iu0osfjQ== Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-53fa00ed93dso3720206a12.3 for ; Sun, 04 Jun 2023 20:27:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935648; x=1688527648; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dZnMnJhAS8ASluDlezSRJs84AN3bjP3uNGvS+Wjuodg=; b=fSg3pead+0oIQiQtZjSVud84rDs2vSb3Oy3h3KktnOJkLij6GxynhApLkcZwlW8n/Q oyNmcXGazT1eZRKDcqmRODAFUoexEkOuYFMOqh11sRFDiSURweIvjw9+sQePLOjA4qXb yMpknfH9IwjR/GruuaoEATk+SITgp7bvj/ZJ7erAw1VqFq5RkenuzNXf4T92kp31ewSv X6dvNr7lnEHoyc7WfZpqCewHz0NjnCbeLhR/rFH+B05n1BWeUlu5iks4MBw1uEDmyUG4 uKX58LTaa1Z6hhDZ7rqZ5P2Mulfgf86BZLQ802lXDBq19sQDs3JyVNIzFQGKtTXet9v/ 6Qvw== X-Gm-Message-State: AC+VfDx17L3VPWyejXfNCB9Rwz+jmzzWoOo4cQ1BcwbtxgnjXopCqEin 4H3JyA6Xj8EEhH5yf0zv2+8kb6C5QbcKD7lpRil3qmQYmH6Mgb8EcN4Oc6PJmbBKrbxcCJA5LtG TcUDYRQkm/aP/Y7k+3shxnQyO9xFHxIkg5G7x4QvDc9qjlIm1qQ== X-Received: by 2002:a05:6a20:1586:b0:105:f8e4:7214 with SMTP id h6-20020a056a20158600b00105f8e47214mr6562817pzj.42.1685935648010; Sun, 04 Jun 2023 20:27:28 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5TZRlcxbOZ7mvOyd4AFmBTsE6gRP0KvE6d6qyiffBisMbUhKpcRncy5Aso629rl3157PkChw== X-Received: by 2002:a05:6a20:1586:b0:105:f8e4:7214 with SMTP id h6-20020a056a20158600b00105f8e47214mr6562808pzj.42.1685935647685; Sun, 04 Jun 2023 20:27:27 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id l13-20020a62be0d000000b0064b0326494asm4166965pff.150.2023.06.04.20.27.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:26 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 5/6 V2][SRU][Lunar] r8169: disable ASPM during NAPI poll Date: Mon, 5 Jun 2023 11:27:10 +0800 Message-Id: <20230605032711.606574-6-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 Several chip versions have problems with ASPM, what may result in rx_missed errors or tx timeouts. The root cause isn't known but experience shows that disabling ASPM during NAPI poll can avoid these problems. Suggested-by: Kai-Heng Feng Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit e1ed3e4d91112027b90c7ee61479141b3f948e6a) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 82faa171fa0c6..f3e8d6fe56919 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -4577,6 +4577,10 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) } if (napi_schedule_prep(&tp->napi)) { + rtl_unlock_config_regs(tp); + rtl_hw_aspm_clkreq_enable(tp, false); + rtl_lock_config_regs(tp); + rtl_irq_disable(tp); __napi_schedule(&tp->napi); } @@ -4615,9 +4619,14 @@ static int rtl8169_poll(struct napi_struct *napi, int budget) work_done = rtl_rx(dev, tp, budget); - if (work_done < budget && napi_complete_done(napi, work_done)) + if (work_done < budget && napi_complete_done(napi, work_done)) { rtl_irq_enable(tp); + rtl_unlock_config_regs(tp); + rtl_hw_aspm_clkreq_enable(tp, true); + rtl_lock_config_regs(tp); + } + return work_done; } From patchwork Mon Jun 5 03:27:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Koba Ko X-Patchwork-Id: 1790203 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=av+ykO8Y; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QZJvf0vLxz20Vv for ; Mon, 5 Jun 2023 13:27:42 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1q60sZ-0006Sv-Q4; Mon, 05 Jun 2023 03:27:35 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1q60sX-0006OR-9e for kernel-team@lists.ubuntu.com; Mon, 05 Jun 2023 03:27:33 +0000 Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id C7D2E3F03D for ; Mon, 5 Jun 2023 03:27:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1685935652; bh=4aGcKNebSyzaRyFY0zU8SDm8SbiE+8PwzzdZxpQmF5M=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=av+ykO8Y2vSAZP5gJAM9oVtikTsYVa05U16HLLwaisCMVVtCftVBssORCTdKIEHQt unc0JaoYqdahfLq+ZBgU83/W1yFq80uPsjXvZu0tgk2RFAnyyD/QeDDMWeYYWUNRx3 2kKJD7xOrfbBN+CTfXW0x+gf2DnClCl5ft1nfCb5b7xEV25wPfF1LdiUGVgoh0tI87 5k9o6Di8+4GNnL9Y8ZUtmN24jBBmEDRqsAZdwdUU6s+IZMclTwE/+6VKPBew7YQLr+ gsYsM5xZkcJq6xCuHJB2REEB8hI6bExt2+LpnmIDx+9KSyWZBktEnka9kXcIwQEFf+ Z5gLDocsOeNjw== Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-256719f2381so3974673a91.0 for ; Sun, 04 Jun 2023 20:27:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685935651; x=1688527651; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4aGcKNebSyzaRyFY0zU8SDm8SbiE+8PwzzdZxpQmF5M=; b=DlOlMgqmlCp4Q7TxVxf1KUs9JRz3S92dwcT8OQ4+xz8KHpBQ9AXGsbv7pgr7YD8SbO uQp+hj5oGRmH2EM5CQVt88U6gqs9To72N+CWLsG5cPRqImi384DEsF51kDDBQ6kiV8d3 iNFOSg3mFHzyBsVm+racvQiTruBF+ViLDo+58SLNIY2ndv1HDTkYDEzE+iaxeOMEoqnK 4i+TYdAz+J5/R6/Ofk1x8RECZhzC/Otu2rRrfO+e7Pk0HNm2UrUtwwSgnDu91jj298km a/ikEAbUPyHhrYKTU6cT75EkAljizYaXXy+W50EehXX6o5QJkYJ9phPAliqcxtMLKTGC CZFg== X-Gm-Message-State: AC+VfDyLOtAZ4G/nUE9TiqB8/VFfIVwFCnF0ifccuy5IA97PzhI9aKCp 6Y7MfVdz03hJwMRuC7miUwk6heA74T1ILE1Ih53xCeGfjoCxWkoiS4/FzqI1KG/Hw2JHx7UEXD5 N4CjA6ex0yAPRWcQzuZL1MawMcW011GlU/DGux+/jGg3exjLfnA== X-Received: by 2002:a17:90a:8409:b0:256:c632:9848 with SMTP id j9-20020a17090a840900b00256c6329848mr5719602pjn.29.1685935650912; Sun, 04 Jun 2023 20:27:30 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ76EmUNrYR8dBdofgIv6tteewkAyNyW5RkyVdccE8CObAOcsZ8NfXkJ9oXdxFkJVYd6oGlJoA== X-Received: by 2002:a17:90a:8409:b0:256:c632:9848 with SMTP id j9-20020a17090a840900b00256c6329848mr5719589pjn.29.1685935650511; Sun, 04 Jun 2023 20:27:30 -0700 (PDT) Received: from canonical.com (211-75-139-218.hinet-ip.hinet.net. [211.75.139.218]) by smtp.gmail.com with ESMTPSA id g13-20020a17090a290d00b00256799877ffsm5086860pjd.47.2023.06.04.20.27.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jun 2023 20:27:29 -0700 (PDT) From: Koba Ko To: kernel-team@lists.ubuntu.com Subject: [PATCH 6/6 V2][SRU][Lunar] r8169: remove ASPM restrictions now that ASPM is disabled during NAPI poll Date: Mon, 5 Jun 2023 11:27:11 +0800 Message-Id: <20230605032711.606574-7-koba.ko@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230605032711.606574-1-koba.ko@canonical.com> References: <20230605032711.606574-1-koba.ko@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Heiner Kallweit BugLink: https://bugs.launchpad.net/bugs/1946433 Now that ASPM is disabled during NAPI poll, we can remove all ASPM restrictions. This allows for higher power savings if the network isn't fully loaded. Reviewed-by: Simon Horman Tested-by: Kai-Heng Feng Tested-by: Holger Hoffstätte Signed-off-by: Heiner Kallweit Signed-off-by: David S. Miller (cherry picked from commit 2ab19de62d67e403105ba860971e5ff0d511ad15) Signed-off-by: Koba Ko --- drivers/net/ethernet/realtek/r8169_main.c | 27 +---------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index f3e8d6fe56919..3c9c847d2fac0 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -619,7 +619,6 @@ struct rtl8169_private { int cfg9346_usage_count; unsigned supports_gmii:1; - unsigned aspm_manageable:1; dma_addr_t counters_phys_addr; struct rtl8169_counters *counters; struct rtl8169_tc_offsets tc_offset; @@ -2743,8 +2742,7 @@ static void rtl_hw_aspm_clkreq_enable(struct rtl8169_private *tp, bool enable) if (tp->mac_version < RTL_GIGA_MAC_VER_32) return; - /* Don't enable ASPM in the chip if OS can't control ASPM */ - if (enable && tp->aspm_manageable) { + if (enable) { rtl_mod_config5(tp, 0, ASPM_en); rtl_mod_config2(tp, 0, ClkReqEn); @@ -5200,16 +5198,6 @@ static void rtl_init_mac_address(struct rtl8169_private *tp) rtl_rar_set(tp, mac_addr); } -/* register is set if system vendor successfully tested ASPM 1.2 */ -static bool rtl_aspm_is_safe(struct rtl8169_private *tp) -{ - if (tp->mac_version >= RTL_GIGA_MAC_VER_61 && - r8168_mac_ocp_read(tp, 0xc0b2) & 0xf) - return true; - - return false; -} - static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { struct rtl8169_private *tp; @@ -5281,19 +5269,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) tp->mac_version = chipset; - /* Disable ASPM L1 as that cause random device stop working - * problems as well as full system hangs for some PCIe devices users. - * Chips from RTL8168h partially have issues with L1.2, but seem - * to work fine with L1 and L1.1. - */ - if (rtl_aspm_is_safe(tp)) - rc = 0; - else if (tp->mac_version >= RTL_GIGA_MAC_VER_46) - rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2); - else - rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1); - tp->aspm_manageable = !rc; - tp->dash_type = rtl_check_dash(tp); tp->cp_cmd = RTL_R16(tp, CPlusCmd) & CPCMD_MASK;