Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp1800831pxb; Mon, 12 Apr 2021 07:05:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPCiSvSwe2ynCyMAk0VikWTlf8HUSDfKs3sscuyHxSSsyNhKEHz7SPitbGsnRxaChRYdFo X-Received: by 2002:a05:6a00:14d3:b029:222:b711:3326 with SMTP id w19-20020a056a0014d3b0290222b7113326mr24988992pfu.28.1618236342274; Mon, 12 Apr 2021 07:05:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618236342; cv=none; d=google.com; s=arc-20160816; b=bs2Cy+WUW290A7qqxCaoGlZ8XKKr+97BwZQMUJQt6AAUJVw39UZjMuif1DSrN+rdOA 66x6yPIaleQbXYBWSIQipfO3f6ONxyt88GKTflDFwgVLw1ZUL/4wxVcRwdC1WHiipnyw WG3GH2VbOxmQ4EZdaIAlqrz0gWw7Wr2W3H6EM6TMUPDLTrl3werm0RD8SaMqOaKLkSsP HDDOiUBuAC8NUNpio5Z31Sus+7hr09LiPOjpFI/xRRhEYqNEz4IQUvFsk62knV5nGrn3 kf3XjOg8YCRXCBfbYioxitTOfugmZA33YcWUmH4FQRyr7k4a75r3U5wh7TBjxsMvb/dZ AOrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=2ZmPHR9GUafARGNI7sj7W1J+ANavVOrnfghsbNP17iA=; b=vIncd7CIvf/zulKmNj6iymwU8K7hBMdLinwvbu0DSgsyXmAs0vINY/JtmjWkwiViqM A44iCvbp1jMJSkqRtlG9tOxRkA4TcAuKJTn2p85dBvxsx1g5iQ5YQFLrP5QQIl8Z5J2/ QvG56wLB8w8B2lrLxy8yA5lwfJ9nJnGDjQHijaiTiV6d7QcW7eQZVWazeNNz0lCZh49u RVXBdGYf+QhRC0IgpyXqR2kQHWi7KPa8hsJdcEp6OPBhgVQFPwbqDpORioFUIYW2yOaR e3qQvKKhNjiFhzVP7ccqR5ViMWGnODaQ1JnrXaD7Ot3LMVN86g645eEzyh6neVOGTe3J 4tXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Nzm5jd0z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 22si7814186pgr.428.2021.04.12.07.05.29; Mon, 12 Apr 2021 07:05:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Nzm5jd0z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242137AbhDLOFG (ORCPT + 99 others); Mon, 12 Apr 2021 10:05:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242107AbhDLOFC (ORCPT ); Mon, 12 Apr 2021 10:05:02 -0400 Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17445C061574; Mon, 12 Apr 2021 07:04:43 -0700 (PDT) Received: by mail-io1-xd2e.google.com with SMTP id f15so4785854iob.5; Mon, 12 Apr 2021 07:04:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2ZmPHR9GUafARGNI7sj7W1J+ANavVOrnfghsbNP17iA=; b=Nzm5jd0z+ScBOsDtaS1gPR5gW8RY669tautb/riCPzi6VH4NJa8tWcRNm7Mp9hmzaj P0vu1MfkC2trCzisIMXblpD34gl+kFDABuSf7ojWpSJvGfGmdoCTyxQZoRiWSYIm0P2O FxBxFDEzRPVUBSlJH65MN72t/vt6/tXcS7VuCZtIof05kCUoF896xDPjwkPeSEobPIyX XLtf2HRyHV7JoQ+cFZISWEfzSa7i6+Aopw+eQNV2ySjcEtIwLHdX2S2fDf9FegbBmUfl vQ+dU+IMcTmdIZsF5m0iu6K/7BQtV3iLIAKuuszOSq3COyezEIOztNQyfU7vSdhk+iWt 7v2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2ZmPHR9GUafARGNI7sj7W1J+ANavVOrnfghsbNP17iA=; b=OX/p1Oe/MRBaoVIEpQe11AtVsguN9SxZrOepfHbSoynvXzrr6dc29C19u2VZGrKwfO l73EvjPpnRl/FbXJLOwvZuUl5g8EEliqg5Zw54Fsvm7TzSOsJwPprBhV1HAb45hQ+1wM kGl/Q05hZ5B/gBRMweNUphS18GTgaVMLjw1yaUCQX+LoywkIXFAVvlfGL611Li3OV/sl 8GBTjw1/9/AphyK7obiuIQhBjlWvaLXwh59pF6nDIqSlsAQv2b4gv1zULxY+GQI3Q6JQ TedQxZcieK9GFYNDA5FEjgcg9xgubRZDUIQ9mxNlz9gUj/EKvvKVdp9V5gfAJVoPEdKt tSbA== X-Gm-Message-State: AOAM531f+Tfe0HRq1EkLK8avnJyiwwBMfTr5m0cDtyaX44SrMI2irS8J 2TjQEPpzHgIx+DitHT0YXPK+8wtwyGBinLUYGUGf/1haYARQyw== X-Received: by 2002:a5d:9d13:: with SMTP id j19mr23217873ioj.110.1618236282497; Mon, 12 Apr 2021 07:04:42 -0700 (PDT) MIME-Version: 1.0 References: <1618219898-4600-1-git-send-email-dillon.minfei@gmail.com> In-Reply-To: From: dillon min Date: Mon, 12 Apr 2021 22:04:06 +0800 Message-ID: Subject: Re: [PATCH v2] serial: stm32: optimize spin lock usage To: Johan Hovold Cc: Greg KH , jirislaby@kernel.org, Maxime Coquelin , Alexandre TORGUE , kernel test robot , linux-serial@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, Linux ARM , Linux Kernel Mailing List , kbuild-all@lists.01.org, clang-built-linux@googlegroups.com, Gerald Baeza , Erwan Le Ray Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Johan, Yes, there is no deadlock. my fault. I forget the local_irq_save() plus spin_lock() is spin_lock_irqsave(). Thanks for your review. please ignore this patch. Best regards Dillon On Mon, Apr 12, 2021 at 9:08 PM Johan Hovold wrote: > > On Mon, Apr 12, 2021 at 05:31:38PM +0800, dillon.minfei@gmail.com wrote: > > From: dillon min > > > > To avoid potential deadlock in spin_lock usage, use spin_lock_irqsave, > > spin_trylock_irqsave(), spin_unlock_irqrestore() in process context. > > This doesn't make much sense as console_write can be called in any > context. And where's the deadlock you claim to be fixing here? > > > remove unused local_irq_save/restore call. > > > > Cc: Alexandre Torgue > > Cc: Maxime Coquelin > > Cc: Gerald Baeza > > Cc: Erwan Le Ray > > Reported-by: kernel test robot > > Signed-off-by: dillon min > > --- > > v2: remove unused code from stm32_usart_threaded_interrupt() according from > > Greg's review. > > > > drivers/tty/serial/stm32-usart.c | 8 +++----- > > 1 file changed, 3 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/tty/serial/stm32-usart.c b/drivers/tty/serial/stm32-usart.c > > index b3675cf25a69..b1ba5e36e36e 100644 > > --- a/drivers/tty/serial/stm32-usart.c > > +++ b/drivers/tty/serial/stm32-usart.c > > @@ -1354,13 +1354,12 @@ static void stm32_usart_console_write(struct console *co, const char *s, > > u32 old_cr1, new_cr1; > > int locked = 1; > > > > - local_irq_save(flags); > > if (port->sysrq) > > locked = 0; > > else if (oops_in_progress) > > - locked = spin_trylock(&port->lock); > > + locked = spin_trylock_irqsave(&port->lock, flags); > > else > > - spin_lock(&port->lock); > > + spin_lock_irqsave(&port->lock, flags); > > > > /* Save and disable interrupts, enable the transmitter */ > > old_cr1 = readl_relaxed(port->membase + ofs->cr1); > > @@ -1374,8 +1373,7 @@ static void stm32_usart_console_write(struct console *co, const char *s, > > writel_relaxed(old_cr1, port->membase + ofs->cr1); > > > > if (locked) > > - spin_unlock(&port->lock); > > - local_irq_restore(flags); > > + spin_unlock_irqrestore(&port->lock, flags); > > } > > > > static int stm32_usart_console_setup(struct console *co, char *options) > > Johan