From: Ingo Molnar <mingo@kernel.org>
To: linux-kernel@vger.kernel.org, "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-tip-commits@vger.kernel.org,
"Joel Fernandes (Google)" <joel@joelfernandes.org>,
"Paul E. McKenney" <paulmck@kernel.org>, x86 <x86@kernel.org>
Subject: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels
Date: Tue, 26 May 2020 20:27:44 +0200 [thread overview]
Message-ID: <20200526182744.GA3722128@gmail.com> (raw)
In-Reply-To: <158923078019.390.12609597570329519463.tip-bot2@tip-bot2>
* tip-bot2 for Joel Fernandes (Google) <tip-bot2@linutronix.de> wrote:
> The following commit has been merged into the core/rcu branch of tip:
>
> Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25
> Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25
> Author: Joel Fernandes (Google) <joel@joelfernandes.org>
> AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00
> Committer: Paul E. McKenney <paulmck@kernel.org>
> CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00
>
> rcuperf: Add ability to increase object allocation size
>
> This allows us to increase memory pressure dynamically using a new
> rcuperf boot command line parameter called 'rcumult'.
>
> Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> ---
> kernel/rcu/rcuperf.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c
> index a4a8d09..16dd1e6 100644
> --- a/kernel/rcu/rcuperf.c
> +++ b/kernel/rcu/rcuperf.c
> @@ -88,6 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN,
> torture_param(int, verbose, 1, "Enable verbose debugging printk()s");
> torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable");
> torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?");
> +torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate.");
>
> static char *perf_type = "rcu";
> module_param(perf_type, charp, 0444);
> @@ -635,7 +636,7 @@ kfree_perf_thread(void *arg)
> }
>
> for (i = 0; i < kfree_alloc_num; i++) {
> - alloc_ptr = kmalloc(sizeof(struct kfree_obj), GFP_KERNEL);
> + alloc_ptr = kmalloc(kfree_mult * sizeof(struct kfree_obj), GFP_KERNEL);
> if (!alloc_ptr)
> return -ENOMEM;
>
> @@ -722,6 +723,8 @@ kfree_perf_init(void)
> schedule_timeout_uninterruptible(1);
> }
>
> + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj));
There's a new build warning on certain 32-bit kernel builds due to
this commit:
In file included from ./include/linux/printk.h:7,
from ./include/linux/kernel.h:15,
from kernel/rcu/rcuperf.c:13:
kernel/rcu/rcuperf.c: In function ‘kfree_perf_init’:
./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’
9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */
| ^~~~~~~~
./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’
295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~
kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’
726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj));
| ^~~~~~~~
kernel/rcu/rcuperf.c:726:32: note: format string is defined here
726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj));
| ~~^
| |
| long unsigned int
| %u
The reason for the warning is that both kfree_mult and sizeof() are
'int' types on 32-bit kernels, while the format string expects a long.
Instead of casting the type to long or tweaking the format string, the
most straightforward solution is to upgrade kfree_mult to a long.
Since this depends on CONFIG_RCU_PERF_TEST
BTW., could we please also rename this code from 'PERF_TEST'/'perf test'
to 'PERFORMANCE_TEST'/'performance test'? At first glance I always
mistakenly believe that it's somehow related to perf, while it isn't. =B-)
Thanks,
Ingo
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/rcu/rcuperf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c
index 16dd1e6b7c09..221a0a3810e4 100644
--- a/kernel/rcu/rcuperf.c
+++ b/kernel/rcu/rcuperf.c
@@ -88,7 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN,
torture_param(int, verbose, 1, "Enable verbose debugging printk()s");
torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable");
torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?");
-torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate.");
+torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate.");
static char *perf_type = "rcu";
module_param(perf_type, charp, 0444);
next prev parent reply other threads:[~2020-05-26 18:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-11 20:59 [tip: core/rcu] rcuperf: Add ability to increase object allocation size tip-bot2 for Joel Fernandes (Google)
2020-05-26 18:27 ` Ingo Molnar [this message]
2020-05-26 19:14 ` [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels Paul E. McKenney
2020-06-02 9:57 ` Geert Uytterhoeven
2020-06-02 15:56 ` Paul E. McKenney
2020-05-27 1:14 ` Joel Fernandes
2020-06-03 18:11 ` Paul E. McKenney
2020-06-17 18:06 ` Paul E. McKenney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200526182744.GA3722128@gmail.com \
--to=mingo@kernel.org \
--cc=joel@joelfernandes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.