Received: by 10.223.176.46 with SMTP id f43csp960876wra; Fri, 26 Jan 2018 09:32:44 -0800 (PST) X-Google-Smtp-Source: AH8x226/VPVDxytsXmSIERSwi5ucc19rMEFUvGlV++m6ezM2ZwuU/qw5QQqgbzI/czEKXlNHs/D8 X-Received: by 10.101.97.139 with SMTP id c11mr13802567pgv.219.1516987964508; Fri, 26 Jan 2018 09:32:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516987964; cv=none; d=google.com; s=arc-20160816; b=pcYM14m8LwSmzIYF/5YecOclXAAMmcekFTxOmQcz88Varp4HWAn94E3J3jouF2gM5G bpSFolb929lhqRUJsJ380KAlm0in4lbkbdfvqIw9kjiyM8jD5hYniiBS1uX7Wcj0mvc7 kjXUDY6AejyiOD7i9t63UJAvTTfg8XCkdXNQfnnlWL0nx/MynqgU8r5upBtvG87/MDW4 DTvYHslKy/urlssZn68bl/LIv1mYK2wJBxh1yXF5TB8Xjn9i0puFc3Y5FL+zTa6+tSSc TtCLjREDlrwQSqQKmmAKXJFaZhKrgxDFbQ4NoFxskCE8jvk/LEjKSLy6D27yesJsPDXE EFXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=BORoFm5JnGzg8MU4MLx6zUioQaMUjAsA+ko7Ah5UsV8=; b=RtnUlim7EBLicSwdtivfBszrONjW2szHYvbzVR6HBhZhCTk+lgDtFXsQGcvlgvgja1 fdTk+q+C0Focg/UsCVzLtcg2myq/utT+qZtedBXJwZC7u8y3/TkhFtT7543zVPReNLCW Bmr+GXJzvt76labf5XpyGzJLupj+g2aMmKi1xjYaAUj1tVcUZWpeV/XhW0+a0BV5kWVv pHzg0YKi6Ocbi18Fm87oXYDDO3tzDR8fsN/HUUsjv7NeUIY1ADxFm9lMqTUSxMZnL0Fh SizS2VO3ZQLue1JuEF2QZ89cz33bXTf6Dy/15WkJRNJ7dRXc2YEdweR4+/MgyLZSeXdw Rp3Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 x10-v6si4011518pln.30.2018.01.26.09.32.29; Fri, 26 Jan 2018 09:32:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751760AbeAZRbp (ORCPT + 99 others); Fri, 26 Jan 2018 12:31:45 -0500 Received: from zeniv.linux.org.uk ([195.92.253.2]:46108 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751438AbeAZRbc (ORCPT ); Fri, 26 Jan 2018 12:31:32 -0500 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.87 #1 (Red Hat Linux)) id 1ef7qc-0004BH-LF; Fri, 26 Jan 2018 17:31:30 +0000 Date: Fri, 26 Jan 2018 17:31:30 +0000 From: Al Viro To: Jia-Ju Bai Cc: tim@cyberelk.net, linux-kernel@vger.kernel.org Subject: Re: [PATCH] block: paride: on26: Replace mdelay with msleep in on26_test_port Message-ID: <20180126173130.GZ13338@ZenIV.linux.org.uk> References: <1516981345-8202-1-git-send-email-baijiaju1990@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1516981345-8202-1-git-send-email-baijiaju1990@gmail.com> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 26, 2018 at 11:42:25PM +0800, Jia-Ju Bai wrote: > After checking all possible call chains to on26_test_port() here, > my tool finds that this function is never called in atomic context, > namely never in an interrupt handler or holding a spinlock. > And on26_test_port() is only called by pi_probe_unit() that calls > wait_event() through pi_claim(), > so it indicates that on26_test_port() can call functions that can sleep. > Thus mdelay can be replaced with msleep to avoid busy wait. Sigh... Here's how I would've written it: " on26_test_port() is never called from atomic contexts. It has no direct callers and it is reachable only via ->test_port. ->test_port has only one user: drivers/block/paride/paride.c:322: max = pi->proto->test_port(pi); in pi_probe_unit(). That gets called only from pi_init(), called from p{d,cd,f,t,g}_detect(), called from module_init stuff, all of the above without entering atomic contexts along the way. Despite never getting called from atomic contexts, on26_test_port() contains mdelay(100), i.e. busy-loops for 0.1s; that's neither nice nor needed, since msleep() would serve just as well. Found by [reference to tool]"