Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp4306184ybc; Fri, 15 Nov 2019 02:28:57 -0800 (PST) X-Google-Smtp-Source: APXvYqy8FYeMYK0578gj2Q+jFvEuMLGUrrKIu9Q5oV7KO+b2zy1Y/Al0VV7JP9VitmSnhxF3lDIP X-Received: by 2002:a1c:7209:: with SMTP id n9mr14108951wmc.9.1573813737284; Fri, 15 Nov 2019 02:28:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573813737; cv=none; d=google.com; s=arc-20160816; b=Gx7VZs2XsJOlS7nkNDP77IV7gOrqjnDY3UuH2Z0pQCtNZ/wBahcPKqXkhYruHtog7L Y5HCbyniksJd1RyWGJiU2GVXDlW81YNjLlvleBdiDVZuvGtZRioSFUbcbZOZfnEHdbJH H7UpNF1nnybAVC5pILXBhs7F4J+UR58cET4kG5S7z9W5XMkk/D/oOAgWwh0fdYRCiCwS 7sa/T6uC/u2E3og26j4IsrTw8cFAmeEmo2rtYgSffE1vk4IRgVhR4dSiH1YsUNfxr29v RQCPXGDJ5lvAPFbHBYvHhnwraZNECzglAseNnKyaek/tD9RUhbo6MecYDPhDef23x8av qBhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=pem47e68QsfR2xvNK79o7bq8NBfMBA9ulZTmR6QPBXQ=; b=xw/N5vhBcZP+DdyCMjSn3M5vGf0aTV2RcsIPnYuUO7faD2t5ZQEFPblDVhrcSdOP1R wOpqFyORZkK5S54Hov7RIEH9jgA+hwWsJHLUCLjnk6fMYh0pCZa+EdA3Yehd7HYyoNwr BfztQSN+pKT31jczu6oa47nVxEzv4dh+s3hSOyN5uJ1xPDKhu9bNOkibGxMweXVP7o8y Oxw9hO4UC/jBy/PEvyimQBI54jfGGRKKkb1DK97pEDVKYruodSMkcTy0uWhVu/sz3X6I UE2eWzsDWHCtuKoyOSZBR2bv4aTJrWXCvdBw2u1CTs0BLfLMhUB2H798WF/WswIJE2SC pMyg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v9si6503756edl.90.2019.11.15.02.28.31; Fri, 15 Nov 2019 02:28:57 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727423AbfKOK05 (ORCPT + 99 others); Fri, 15 Nov 2019 05:26:57 -0500 Received: from mail-ot1-f68.google.com ([209.85.210.68]:37548 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727386AbfKOK04 (ORCPT ); Fri, 15 Nov 2019 05:26:56 -0500 Received: by mail-ot1-f68.google.com with SMTP id d5so7605892otp.4; Fri, 15 Nov 2019 02:26:54 -0800 (PST) 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=pem47e68QsfR2xvNK79o7bq8NBfMBA9ulZTmR6QPBXQ=; b=K1vHfbFJfFav1lGD0zptMCjxNGjlxHQMOTx24Z7vDAV4oGg6LhS7onR1GIpDJm9eew OSAYPM64Lekp3X3ycoMo3UD4FYI7hh+16fK/1bYK08Vh4EIbxOSWNSiOMLjYTQIFfU4G WqhhwBhtGiU/itI9TEAUspMcy21LbP33lncsFmv+0+jq1J0vfKK6OHM813aVJTS+eWG3 Am0nSyIyvHS/9gKX8VdtDQpl+fAiPQwo8e08BxwW9cWPgRnK6J4oMV2jbj+q85QcMqF7 Tsmdy0BtIAS3JYJTVpABZoFGqxiAX07DTTtTUfEiuEn9WPwecLSlyybRQk9MVKWMwDK5 jtUg== X-Gm-Message-State: APjAAAV04iwVukIyc2QvqA0K1HoYlIaPFw19vuTYAaWH6dqZwosyj8CO B6mDNl1PWWmXDi1Ir0r6KoP0x3gF4O6I0Ym3+ew= X-Received: by 2002:a9d:6b91:: with SMTP id b17mr10218038otq.189.1573813613955; Fri, 15 Nov 2019 02:26:53 -0800 (PST) MIME-Version: 1.0 References: <1573041302-4904-1-git-send-email-zhenzhong.duan@oracle.com> <1573041302-4904-2-git-send-email-zhenzhong.duan@oracle.com> In-Reply-To: <1573041302-4904-2-git-send-email-zhenzhong.duan@oracle.com> From: "Rafael J. Wysocki" Date: Fri, 15 Nov 2019 11:26:43 +0100 Message-ID: Subject: Re: [PATCH RESEND v2 1/4] cpuidle-haltpoll: ensure grow start value is nonzero To: Zhenzhong Duan Cc: Linux Kernel Mailing List , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Rafael Wysocki , Joao Martins , Marcelo Tosatti , kvm-devel , Linux PM Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 6, 2019 at 12:56 PM Zhenzhong Duan wrote: > > dev->poll_limit_ns could be zeroed in certain cases (e.g. by > guest_halt_poll_ns = 0). If guest_halt_poll_grow_start is zero, > dev->poll_limit_ns will never be bigger than zero. I would rephrase this in the following way: "If guest_halt_poll_grow_start is zero and dev->poll_limit_ns becomes zero for any reason, it will never be greater than zero again, so use ..." The patch itself looks OK to me. > Use param callback to avoid writing zero to guest_halt_poll_grow_start. > > Signed-off-by: Zhenzhong Duan > --- > drivers/cpuidle/governors/haltpoll.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/drivers/cpuidle/governors/haltpoll.c b/drivers/cpuidle/governors/haltpoll.c > index 7a703d2..660859d 100644 > --- a/drivers/cpuidle/governors/haltpoll.c > +++ b/drivers/cpuidle/governors/haltpoll.c > @@ -20,6 +20,26 @@ > #include > #include > > +static int grow_start_set(const char *val, const struct kernel_param *kp) > +{ > + int ret; > + unsigned int n; > + > + if (!val) > + return -EINVAL; > + > + ret = kstrtouint(val, 0, &n); > + if (ret || !n) > + return -EINVAL; > + > + return param_set_uint(val, kp); > +} > + > +static const struct kernel_param_ops grow_start_ops = { > + .set = grow_start_set, > + .get = param_get_uint, > +}; > + > static unsigned int guest_halt_poll_ns __read_mostly = 200000; > module_param(guest_halt_poll_ns, uint, 0644); > > @@ -33,7 +53,7 @@ > > /* value in us to start growing per-cpu halt_poll_ns */ > static unsigned int guest_halt_poll_grow_start __read_mostly = 50000; > -module_param(guest_halt_poll_grow_start, uint, 0644); > +module_param_cb(guest_halt_poll_grow_start, &grow_start_ops, &guest_halt_poll_grow_start, 0644); > > /* allow shrinking guest halt poll */ > static bool guest_halt_poll_allow_shrink __read_mostly = true; > -- > 1.8.3.1 >