Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp2421146ybc; Wed, 13 Nov 2019 14:13:12 -0800 (PST) X-Google-Smtp-Source: APXvYqwnJX8b8poOqvcxr5UVmSxo/4TTHPWwJOmTNJZQgqISiBwlyxwIzXVxYJE8rBEwujfltpsd X-Received: by 2002:a17:906:1a47:: with SMTP id j7mr5082221ejf.232.1573683191823; Wed, 13 Nov 2019 14:13:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573683191; cv=none; d=google.com; s=arc-20160816; b=Pl1RAESgvxnNnxgr3flEwgORq8dxv5IV0el328+TORBYEQx6DF70XuxRJkzKH1D+PW vw1AYppfKTikojb7SdfgivJ/6MhADqkVGnHTt6J9b1uNiNFd+WXmQy/+BQBrm2NWB38E VaftCn0pYGvYomMi2PHEUP5/uDcJCWqZdox+vdA/RH+eMAoxo0i1R5GUmZuJhFBlukCT q2U+NLZK6rF2FeOBdXuFSwO9vXu3OqpBLJV4Dw0TgYISkCt6/DyI2XHXCrQmxZzoygpw z611SbNVB2r70g3wMoMbIyaD6XCd2/P0WbbenvSQ1am80+9whapA/DSPPcRh0Ivso/mC ueRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id; bh=yj1S8gipb0ly+ZNf7vPW5RiPVLmB2PAtqqYpkObhGDc=; b=jn5h/Nh7a/uEp+gfUb563YoLljtIdudtRZgU8snlSIlAu05EuPyeRmGcT7uNOLWZmU Jj0fFaf/xIDRHZjzlwnKRSg/cw4Pn6WV7anHW7H1UzMhVCa9cUv7SwNnLrl0Kifq/IZq +PN+QZjx4QrUHBm1Jp5N1Xnx/xoAED1jIzAe2eSxoY5jQGhRoLKGTurzjTEyBvIGzhjN wJqDJ1aNBwXdVpqLaOHtM/suuD9ACwtkQEVZyoaaov/0RVE7qN3bxixppjaaNZDDFxQq pK4sQVZSu7kUgJlDwoVBFHHSVM9T1YW55GsqvCbp4pMbglkmKspJ21KNxlfXod6cgYxh ZXUA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j10si2317993eds.133.2019.11.13.14.12.32; Wed, 13 Nov 2019 14:13:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726409AbfKMWLO (ORCPT + 99 others); Wed, 13 Nov 2019 17:11:14 -0500 Received: from ns.lynxeye.de ([87.118.118.114]:51621 "EHLO lynxeye.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726189AbfKMWLO (ORCPT ); Wed, 13 Nov 2019 17:11:14 -0500 Received: by lynxeye.de (Postfix, from userid 501) id 9D655E74222; Wed, 13 Nov 2019 23:11:12 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on lynxeye.de X-Spam-Level: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.1 Received: from radon.fritz.box (a89-183-58-16.net-htp.de [89.183.58.16]) by lynxeye.de (Postfix) with ESMTPSA id 44667E7414D; Wed, 13 Nov 2019 23:11:11 +0100 (CET) Message-ID: Subject: Re: long delays in rtl8723 drivers in irq disabled sections From: Lucas Stach To: Pkshih , wlanfae Cc: "linux-wireless@vger.kernel.org" , "netdev@vger.kernel.org" Date: Wed, 13 Nov 2019 23:11:10 +0100 In-Reply-To: <5B2DA6FDDF928F4E855344EE0A5C39D1D5C9CE47@RTITMBSVM04.realtek.com.tw> References: <5de65447f1d115f436f764a7ec811c478afbe2e0.camel@lynxeye.de> <5B2DA6FDDF928F4E855344EE0A5C39D1D5C9CE47@RTITMBSVM04.realtek.com.tw> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.34.1 (3.34.1-1.fc31) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Hi PK, Am Mittwoch, den 13.11.2019, 03:43 +0000 schrieb Pkshih: > > -----Original Message----- > > From: linux-wireless-owner@vger.kernel.org [mailto:linux-wireless-owner@vger.kernel.org] On Behalf > > Of Lucas Stach > > Sent: Wednesday, November 13, 2019 5:02 AM > > To: wlanfae; Pkshih > > Cc: linux-wireless@vger.kernel.org; netdev@vger.kernel.org > > Subject: long delays in rtl8723 drivers in irq disabled sections > > > > Hi all, > > > > while investigating some latency issues on my laptop I stumbled across > > quite large delays in the rtl8723 PHY code, which are done in IRQ > > disabled atomic sections, which is blocking IRQ servicing for all > > devices in the system. > > > > Specifically there are 3 consecutive 1ms delays in > > rtl8723_phy_rf_serial_read(), which is used in an IRQ disabled call > > path. Sadly those delays don't have any comment in the code explaining > > why they are needed. I hope that anyone can tell if those delays are > > strictly neccessary and if so if they really need to be this long. > > > > These delays are because read RF register is an indirect access that hardware > needs time to accomplish read action, but there's no ready bit, so delay > is required to guarantee the read value is correct. Thanks for the confirmation, I suspected something like this. > It is possible to use smaller delay, but it's exactly required. 1ms seems like an eternity on modern hardware, even for an indirect read. > > An alternative way is to prevent calling this function in IRQ disabled flow. > Could you share the calling trace? Sure, trimmed callstack below. As you can see the IRQ disabled section is started via a spin_lock_irqsave(). The trace is from a 8723de module, which is still out of tree, but the same code is present in mainline and used by the other 8723 variants. I don't know if this function needs to guard against something running in the IRQ handler, so depending on the answer to that the solution might be as simple as not disabling IRQs when taking the spinlock. kworker/-276 4d... 0us : _raw_spin_lock_irqsave kworker/-276 4d... 0us : rtl8723_phy_rf_serial_read <-rtl8723de_phy_set_rf_reg kworker/-276 4d... 1us : rtl8723_phy_query_bb_reg <-rtl8723_phy_rf_serial_read kworker/-276 4d... 3us : rtl8723_phy_set_bb_reg <-rtl8723_phy_rf_serial_read kworker/-276 4d... 4us : __const_udelay <-rtl8723_phy_rf_serial_read kworker/-276 4d... 4us!: delay_mwaitx <-rtl8723_phy_rf_serial_read kworker/-276 4d... 1004us : rtl8723_phy_set_bb_reg <-rtl8723_phy_rf_serial_read [...] Regards, Lucas