Received: by 2002:ab2:7407:0:b0:1f4:b336:87c4 with SMTP id e7csp229575lqn; Thu, 11 Apr 2024 22:11:02 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVmKMj6fqEfs40EoLpp5dac5YVT7Z4xVJEEyoY2+m9SHIlTQf7ieq1FhxZOftgZd2RD7pwoWSA4tM1EygKqRV1YscY2GvyhdptLdWi18Q== X-Google-Smtp-Source: AGHT+IFRP7l9AfafkBP1BtAnVSiL5Hp0qufGEXt5uVp2HFiSdTcOn8kR7U8l3uSEhlMrINw1jFJo X-Received: by 2002:a50:8ac6:0:b0:56c:3b7a:632b with SMTP id k6-20020a508ac6000000b0056c3b7a632bmr1211725edk.29.1712898662321; Thu, 11 Apr 2024 22:11:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712898662; cv=pass; d=google.com; s=arc-20160816; b=fG67+DViY63N0833Z3k9NN70yUnfrL9HM/OHetPY6Dt0o4grBdHt59oCum9sPygUOj mwErcA27QDwARlUrqE51xH57rwk7kf6myQmBrcS5AEFbmSo2U5ksvBQ5NLW/o9pKic5p CEjpmaZvjswAojcSnT2l+3/UcWz7rglMEndT1/udIX5mdeEP6ZO2e2IrKrJ/IjJSilQi yT3M7wQ7lZx/hHJGeqI+abL0cEjqshgLNGMu7RjS4Ld8TGB+5AnnlZ4uizIIMedsJ4x6 U24829Weo4lyUwBAH6Kq5VTlOzdu0InHwhsobyKd4Fr5nNfca2nD8Xh+vG3IVX2TFoV7 GTfQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-disposition:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:message-id:subject:cc :to:from:date:dkim-signature; bh=8f1dauIlQXG+QIZKHmYIxCFMKydyQrI3FbBhMQ1uxhg=; fh=+aLsz8LEEC7tm1hsWjSLHIZWRK/wdD2tkPur6upFDyc=; b=kE2Hs44e4fYA1xBXjwYBOTuAEVeZwrFFcKp+7kD1B2Gp2d/owtS2ODQPESk1ydVWiQ i2V5RybDRzYB0a/oJvEkx/k47ofU9xhgbVFMO9spZ0QkUiFYiXKtAbuWTGCxh9smaYHF j2VXIu/i9ojvgzy2fWG1UdGi/O7MgJq8zmIQpM4Zq7w/kIkS38lGqTlKMoCeKagWFdaq vrrn0I90A/fnuYkqwxJz92q8ywouBlcJ43+i+Pdve9c02W6CIOQw0gxx5+c9pyedagA9 qFMP+vsdbGuLFbQaw7ZcpK1Pdsem78vtjvFK6EclhCyRphp3ar7y3iHoKqjmAPYpt0ee c9bg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ILoP8DVH; arc=pass (i=1 dkim=pass dkdomain=linuxfoundation.org); spf=pass (google.com: domain of linux-kernel+bounces-141951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-141951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id m4-20020a056402430400b00567f5f694basi1417798edc.232.2024.04.11.22.11.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 22:11:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-141951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ILoP8DVH; arc=pass (i=1 dkim=pass dkdomain=linuxfoundation.org); spf=pass (google.com: domain of linux-kernel+bounces-141951-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-141951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id DE3251F2251E for ; Fri, 12 Apr 2024 05:11:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3250C1BC4B; Fri, 12 Apr 2024 05:10:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="ILoP8DVH" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58C2E1BC20 for ; Fri, 12 Apr 2024 05:10:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712898655; cv=none; b=uQQrhs7N4MOd6gm6VoamiVFbnBNV9bCrIiRHUZiviqDNzC9Sg7M+gd+aBWJLNkYbOlkjJV3zhldjHbnn6whEPQp8WrTAEeQR+bvfYni0bC48QP2dW7lfJz9qiBPdKHdgY1yOi9Y9tn73wTqE6XgnJaeJE8RMBhWwQ/EsDEHZP0I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712898655; c=relaxed/simple; bh=n1nTu7+xRC3qxpPaBRrMAeZo5K6PsyIpi+vTtIf4SBo=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=M4PA9fVtSOaSTShlH6BztZyuDZfp6jh2blpV4STDvnT2HnIzQAG7EhlEH/ep8NLwIK/nWVLSXlg3XFvbjrkZc2yKSgH+ea3iArWmOjKiqElolue34vwr+5irGUtror3gjuXNuoWU8+O5XKRoHbYHXMCqRV73XCM/Tg67kGJbMxA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=ILoP8DVH; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3BE21C2BBFC; Fri, 12 Apr 2024 05:10:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1712898654; bh=n1nTu7+xRC3qxpPaBRrMAeZo5K6PsyIpi+vTtIf4SBo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=ILoP8DVHM+rOWyAyCSwYjPNpJ2HCEgAYwuctUOVN0QqrGrfMCQuqgxgmb1tLe02Pr +Y/QcLsY2TXSsIu2rVfZl7evevaPh4DSpFXzcikhfjw2eJ/wNFc7W7w8VGwU5jItfk paI4rGE3T87LBEJtbbsMMvviLgHp1bMal/Ec5NI0= Date: Fri, 12 Apr 2024 07:10:51 +0200 From: Greg KH To: li.hao40@zte.com.cn Cc: jirislaby@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] tty: hvc: wakeup hvc console immediately when needed Message-ID: <2024041237-shifty-unethical-4a5d@gregkh> References: <20240412113848167egmP7kBg1Qm5sxfwGALG-@zte.com.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240412113848167egmP7kBg1Qm5sxfwGALG-@zte.com.cn> On Fri, Apr 12, 2024 at 11:38:48AM +0800, li.hao40@zte.com.cn wrote: > From: Li Hao > > Cancel the do_wakeup flag in hvc_struct, and change it to immediately > wake up tty when hp->n_outbuf is 0 in hvc_push(). > > When we receive a key input character, the interrupt handling function > hvc_handle_interrupt() will be executed, and the echo thread > flush_to_ldisc() will be added to the queue. > > If the user is currently using tcsetattr(), a hang may occur. tcsetattr() > enters kernel and waits for hp->n_outbuf to become 0 via > tty_wait_until_sent(). If the echo thread finishes executing before > reaching tty_wait_until_sent (for example, put_chars() takes too long), > it will cause while meeting the wakeup condition (hp->do_wakeup = 1), > tty_wait_until_sent() cannot be woken up (missed the tty_wakeup() of > this round's tty_poll). Unless the next key input character comes, > hvc_poll will be executed, and tty_wakeup() will be performed through > the do_wakeup flag. > > Signed-off-by: Li Hao > --- > drivers/tty/hvc/hvc_console.c | 12 +++++------- > drivers/tty/hvc/hvc_console.h | 1 - > 2 files changed, 5 insertions(+), 8 deletions(-) > > diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c > index cd1f657f7..2fa90d938 100644 > --- a/drivers/tty/hvc/hvc_console.c > +++ b/drivers/tty/hvc/hvc_console.c > @@ -476,11 +476,13 @@ static void hvc_hangup(struct tty_struct *tty) > static int hvc_push(struct hvc_struct *hp) > { > int n; > + struct tty_struct *tty; > > n = hp->ops->put_chars(hp->vtermno, hp->outbuf, hp->n_outbuf); > + tty = tty_port_tty_get(&hp->port); > if (n <= 0) { > if (n == 0 || n == -EAGAIN) { > - hp->do_wakeup = 1; > + tty_wakeup(tty); > return 0; > } > /* throw away output on error; this happens when > @@ -491,7 +493,7 @@ static int hvc_push(struct hvc_struct *hp) > if (hp->n_outbuf > 0) > memmove(hp->outbuf, hp->outbuf + n, hp->n_outbuf); > else > - hp->do_wakeup = 1; > + tty_wakeup(tty); > > return n; > } > @@ -739,11 +741,7 @@ static int __hvc_poll(struct hvc_struct *hp, bool may_sleep) > poll_mask |= HVC_POLL_READ; > > out: > - /* Wakeup write queue if necessary */ > - if (hp->do_wakeup) { > - hp->do_wakeup = 0; > - tty_wakeup(tty); > - } > + /* Wakeup in hvc_push */ > bail: > spin_unlock_irqrestore(&hp->lock, flags); > > diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h > index cf4c1af08..6622f71ba 100644 > --- a/drivers/tty/hvc/hvc_console.h > +++ b/drivers/tty/hvc/hvc_console.h > @@ -36,7 +36,6 @@ struct hvc_struct { > struct tty_port port; > spinlock_t lock; > int index; > - int do_wakeup; > int outbuf_size; > int n_outbuf; > uint32_t vtermno; > -- > 2.25.1 Hi, This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him a patch that has triggered this response. He used to manually respond to these common problems, but in order to save his sanity (he kept writing the same thing over and over, yet to different people), I was created. Hopefully you will not take offence and will fix the problem in your patch and resubmit it so that it can be accepted into the Linux kernel tree. You are receiving this message because of the following common error(s) as indicated below: - This looks like a new version of a previously submitted patch, but you did not list below the --- line any changes from the previous version. Please read the section entitled "The canonical patch format" in the kernel file, Documentation/process/submitting-patches.rst for what needs to be done here to properly describe this. If you wish to discuss this problem further, or you have questions about how to resolve this issue, please feel free to respond to this email and Greg will reply once he has dug out from the pending patches received from other developers. thanks, greg k-h's patch email bot