* [PATCH v2] sched: Fix print format for u64
@ 2012-12-25 11:24 Fabio Estevam
2013-01-11 1:30 ` Fabio Estevam
2013-01-24 20:22 ` [tip:sched/urgent] " tip-bot for Fabio Estevam
0 siblings, 2 replies; 9+ messages in thread
From: Fabio Estevam @ 2012-12-25 11:24 UTC (permalink / raw)
To: mingo; +Cc: peterz, pjt, linux-kernel, Fabio Estevam
From: Fabio Estevam <fabio.estevam@freescale.com>
commit c566e8e9 (sched: Aggregate total task_group load) introduced the
following build warning:
kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'u64' [-Wformat]
kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u64' [-Wformat]
Use %llu format to print a u64 value as per Documentation/printk-formats.txt.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v1:
- Use llu instead of lld
kernel/sched/debug.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 2cd3c1b..83ec463 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -222,7 +222,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
cfs_rq->runnable_load_avg);
SEQ_printf(m, " .%-30s: %lld\n", "blocked_load_avg",
cfs_rq->blocked_load_avg);
- SEQ_printf(m, " .%-30s: %ld\n", "tg_load_avg",
+ SEQ_printf(m, " .%-30s: %llu\n", "tg_load_avg",
atomic64_read(&cfs_rq->tg->load_avg));
SEQ_printf(m, " .%-30s: %lld\n", "tg_load_contrib",
cfs_rq->tg_load_contrib);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2012-12-25 11:24 [PATCH v2] sched: Fix print format for u64 Fabio Estevam
@ 2013-01-11 1:30 ` Fabio Estevam
2013-01-24 14:19 ` Ingo Molnar
2013-01-24 20:22 ` [tip:sched/urgent] " tip-bot for Fabio Estevam
1 sibling, 1 reply; 9+ messages in thread
From: Fabio Estevam @ 2013-01-11 1:30 UTC (permalink / raw)
To: mingo; +Cc: peterz, pjt, linux-kernel, Fabio Estevam
Hi Ingo,
On Tue, Dec 25, 2012 at 9:24 AM, Fabio Estevam <festevam@gmail.com> wrote:
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> commit c566e8e9 (sched: Aggregate total task_group load) introduced the
> following build warning:
>
> kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'u64' [-Wformat]
> kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u64' [-Wformat]
>
> Use %llu format to print a u64 value as per Documentation/printk-formats.txt.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Does this one look good?
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-11 1:30 ` Fabio Estevam
@ 2013-01-24 14:19 ` Ingo Molnar
2013-01-24 14:47 ` Fabio Estevam
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2013-01-24 14:19 UTC (permalink / raw)
To: Fabio Estevam; +Cc: mingo, peterz, pjt, linux-kernel, Fabio Estevam
* Fabio Estevam <festevam@gmail.com> wrote:
> Hi Ingo,
>
> On Tue, Dec 25, 2012 at 9:24 AM, Fabio Estevam <festevam@gmail.com> wrote:
> > From: Fabio Estevam <fabio.estevam@freescale.com>
> >
> > commit c566e8e9 (sched: Aggregate total task_group load) introduced the
> > following build warning:
> >
> > kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'u64' [-Wformat]
> > kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u64' [-Wformat]
> >
> > Use %llu format to print a u64 value as per Documentation/printk-formats.txt.
> >
> > Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
>
> Does this one look good?
I suppose - is this patch warning-free both on 64-bit and 32-bit
systems?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-24 14:19 ` Ingo Molnar
@ 2013-01-24 14:47 ` Fabio Estevam
2013-01-25 7:19 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: Fabio Estevam @ 2013-01-24 14:47 UTC (permalink / raw)
To: Ingo Molnar; +Cc: mingo, peterz, pjt, linux-kernel, Fabio Estevam
On Thu, Jan 24, 2013 at 12:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
> I suppose - is this patch warning-free both on 64-bit and 32-bit
> systems?
Yes, just confirmed that this patch is warning-free on both 64-bit and
32-bit machines.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 9+ messages in thread
* [tip:sched/urgent] sched: Fix print format for u64
2012-12-25 11:24 [PATCH v2] sched: Fix print format for u64 Fabio Estevam
2013-01-11 1:30 ` Fabio Estevam
@ 2013-01-24 20:22 ` tip-bot for Fabio Estevam
1 sibling, 0 replies; 9+ messages in thread
From: tip-bot for Fabio Estevam @ 2013-01-24 20:22 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, fabio.estevam, tglx
Commit-ID: 2d58000fd2020255af63ee92c8d0ef615f6c4ade
Gitweb: http://git.kernel.org/tip/2d58000fd2020255af63ee92c8d0ef615f6c4ade
Author: Fabio Estevam <fabio.estevam@freescale.com>
AuthorDate: Tue, 25 Dec 2012 09:24:40 -0200
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 24 Jan 2013 15:50:08 +0100
sched: Fix print format for u64
commit c566e8e9 ("sched: Aggregate total task_group load")
introduced the following build warnings:
kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'u64' [-Wformat]
kernel/sched/debug.c:225:2: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u64' [-Wformat]
Use %llu format to print a u64 value as per
Documentation/printk-formats.txt.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Cc: peterz@infradead.org
Cc: pjt@google.com
Link: http://lkml.kernel.org/r/1356434680-10045-1-git-send-email-festevam@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
kernel/sched/debug.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 2cd3c1b..8c2fc39 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -222,7 +222,7 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
cfs_rq->runnable_load_avg);
SEQ_printf(m, " .%-30s: %lld\n", "blocked_load_avg",
cfs_rq->blocked_load_avg);
- SEQ_printf(m, " .%-30s: %ld\n", "tg_load_avg",
+ SEQ_printf(m, " .%-30s: %llu\n", "tg_load_avg",
atomic64_read(&cfs_rq->tg->load_avg));
SEQ_printf(m, " .%-30s: %lld\n", "tg_load_contrib",
cfs_rq->tg_load_contrib);
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-24 14:47 ` Fabio Estevam
@ 2013-01-25 7:19 ` Ingo Molnar
2013-01-25 7:31 ` Paul Turner
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2013-01-25 7:19 UTC (permalink / raw)
To: Fabio Estevam; +Cc: mingo, peterz, pjt, linux-kernel, Fabio Estevam
* Fabio Estevam <festevam@gmail.com> wrote:
> On Thu, Jan 24, 2013 at 12:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
>
> > I suppose - is this patch warning-free both on 64-bit and 32-bit
> > systems?
>
> Yes, just confirmed that this patch is warning-free on both 64-bit and
> 32-bit machines.
Apparently it's not all good, see the warning attached below.
Thanks,
Ingo
----- Forwarded message from kbuild test robot <fengguang.wu@intel.com> -----
Date: Fri, 25 Jan 2013 14:02:05 +0800
From: kbuild test robot <fengguang.wu@intel.com>
To: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Ingo Molnar <mingo@kernel.org>
Subject: [next:akpm 188/817] kernel/sched/debug.c:225:2: warning: format '%llu' expects argument
of type 'long long unsigned int', but argument 4 has type 'long int'
tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git akpm
head: 5d2ee7d8b03bfe3b90325d736d8e544d0394efa7
commit: 2d58000fd2020255af63ee92c8d0ef615f6c4ade [188/817] sched: Fix print format for u64
config: make ARCH=x86_64 allmodconfig
All warnings:
kernel/sched/debug.c: In function 'print_cfs_rq':
>> kernel/sched/debug.c:225:2: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 4 has type 'long int' [-Wformat]
>> kernel/sched/debug.c:225:2: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'long int' [-Wformat]
vim +225 kernel/sched/debug.c
209 spread = max_vruntime - MIN_vruntime;
210 SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "spread",
211 SPLIT_NS(spread));
212 spread0 = min_vruntime - rq0_min_vruntime;
213 SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "spread0",
214 SPLIT_NS(spread0));
215 SEQ_printf(m, " .%-30s: %d\n", "nr_spread_over",
216 cfs_rq->nr_spread_over);
217 SEQ_printf(m, " .%-30s: %d\n", "nr_running", cfs_rq->nr_running);
218 SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight);
219 #ifdef CONFIG_FAIR_GROUP_SCHED
220 #ifdef CONFIG_SMP
221 SEQ_printf(m, " .%-30s: %lld\n", "runnable_load_avg",
222 cfs_rq->runnable_load_avg);
223 SEQ_printf(m, " .%-30s: %lld\n", "blocked_load_avg",
224 cfs_rq->blocked_load_avg);
> 225 SEQ_printf(m, " .%-30s: %llu\n", "tg_load_avg",
226 atomic64_read(&cfs_rq->tg->load_avg));
227 SEQ_printf(m, " .%-30s: %lld\n", "tg_load_contrib",
228 cfs_rq->tg_load_contrib);
229 SEQ_printf(m, " .%-30s: %d\n", "tg_runnable_contrib",
230 cfs_rq->tg_runnable_contrib);
231 SEQ_printf(m, " .%-30s: %d\n", "tg->runnable_avg",
232 atomic_read(&cfs_rq->tg->runnable_avg));
233 #endif
---
0-DAY kernel build testing backend Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild Intel Corporation
----- End forwarded message -----
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-25 7:19 ` Ingo Molnar
@ 2013-01-25 7:31 ` Paul Turner
2013-01-25 8:06 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: Paul Turner @ 2013-01-25 7:31 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Fabio Estevam, mingo, peterz, linux-kernel, Fabio Estevam
On Thu, Jan 24, 2013 at 11:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
>
> * Fabio Estevam <festevam@gmail.com> wrote:
>
>> On Thu, Jan 24, 2013 at 12:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
>>
>> > I suppose - is this patch warning-free both on 64-bit and 32-bit
>> > systems?
>>
>> Yes, just confirmed that this patch is warning-free on both 64-bit and
>> 32-bit machines.
>
> Apparently it's not all good, see the warning attached below.
Yeah this patch is broken; this is not properly fixable as is without
#ifdefs (or fixing the insanity that is atomic64_read).
Specifically:
On some architectures (e.g. x86_64) atomic64_read is typed long
On some others (e.g. x86-32) it's typed long long
On yet others (e.g. arm) it's typed u64
I think the easiest way to fix it would be instead to promote the read
into a local u64 and print that.
>
> Thanks,
>
> Ingo
>
> ----- Forwarded message from kbuild test robot <fengguang.wu@intel.com> -----
>
> Date: Fri, 25 Jan 2013 14:02:05 +0800
> From: kbuild test robot <fengguang.wu@intel.com>
> To: Fabio Estevam <fabio.estevam@freescale.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Subject: [next:akpm 188/817] kernel/sched/debug.c:225:2: warning: format '%llu' expects argument
> of type 'long long unsigned int', but argument 4 has type 'long int'
>
> tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git akpm
> head: 5d2ee7d8b03bfe3b90325d736d8e544d0394efa7
> commit: 2d58000fd2020255af63ee92c8d0ef615f6c4ade [188/817] sched: Fix print format for u64
> config: make ARCH=x86_64 allmodconfig
>
> All warnings:
>
> kernel/sched/debug.c: In function 'print_cfs_rq':
>>> kernel/sched/debug.c:225:2: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 4 has type 'long int' [-Wformat]
>>> kernel/sched/debug.c:225:2: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'long int' [-Wformat]
>
> vim +225 kernel/sched/debug.c
>
> 209 spread = max_vruntime - MIN_vruntime;
> 210 SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "spread",
> 211 SPLIT_NS(spread));
> 212 spread0 = min_vruntime - rq0_min_vruntime;
> 213 SEQ_printf(m, " .%-30s: %Ld.%06ld\n", "spread0",
> 214 SPLIT_NS(spread0));
> 215 SEQ_printf(m, " .%-30s: %d\n", "nr_spread_over",
> 216 cfs_rq->nr_spread_over);
> 217 SEQ_printf(m, " .%-30s: %d\n", "nr_running", cfs_rq->nr_running);
> 218 SEQ_printf(m, " .%-30s: %ld\n", "load", cfs_rq->load.weight);
> 219 #ifdef CONFIG_FAIR_GROUP_SCHED
> 220 #ifdef CONFIG_SMP
> 221 SEQ_printf(m, " .%-30s: %lld\n", "runnable_load_avg",
> 222 cfs_rq->runnable_load_avg);
> 223 SEQ_printf(m, " .%-30s: %lld\n", "blocked_load_avg",
> 224 cfs_rq->blocked_load_avg);
> > 225 SEQ_printf(m, " .%-30s: %llu\n", "tg_load_avg",
> 226 atomic64_read(&cfs_rq->tg->load_avg));
> 227 SEQ_printf(m, " .%-30s: %lld\n", "tg_load_contrib",
> 228 cfs_rq->tg_load_contrib);
> 229 SEQ_printf(m, " .%-30s: %d\n", "tg_runnable_contrib",
> 230 cfs_rq->tg_runnable_contrib);
> 231 SEQ_printf(m, " .%-30s: %d\n", "tg->runnable_avg",
> 232 atomic_read(&cfs_rq->tg->runnable_avg));
> 233 #endif
>
> ---
> 0-DAY kernel build testing backend Open Source Technology Center
> http://lists.01.org/mailman/listinfo/kbuild Intel Corporation
>
> ----- End forwarded message -----
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-25 7:31 ` Paul Turner
@ 2013-01-25 8:06 ` Ingo Molnar
2013-01-25 16:06 ` Paul Turner
0 siblings, 1 reply; 9+ messages in thread
From: Ingo Molnar @ 2013-01-25 8:06 UTC (permalink / raw)
To: Paul Turner; +Cc: Fabio Estevam, mingo, peterz, linux-kernel, Fabio Estevam
* Paul Turner <pjt@google.com> wrote:
> On Thu, Jan 24, 2013 at 11:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
> >
> > * Fabio Estevam <festevam@gmail.com> wrote:
> >
> >> On Thu, Jan 24, 2013 at 12:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
> >>
> >> > I suppose - is this patch warning-free both on 64-bit and 32-bit
> >> > systems?
> >>
> >> Yes, just confirmed that this patch is warning-free on both 64-bit and
> >> 32-bit machines.
> >
> > Apparently it's not all good, see the warning attached below.
>
> Yeah this patch is broken; this is not properly fixable as is without
> #ifdefs (or fixing the insanity that is atomic64_read).
>
> Specifically:
>
> On some architectures (e.g. x86_64) atomic64_read is typed long
> On some others (e.g. x86-32) it's typed long long
> On yet others (e.g. arm) it's typed u64
Hm, cannot we type atomic64_read() to u64 on x86-64 as well, and
fix other architectures? How widespread is this problem, have
you checked that perhaps?
I'm all for clean, consistent types instead of #ifdef or
temporary variable uglies.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] sched: Fix print format for u64
2013-01-25 8:06 ` Ingo Molnar
@ 2013-01-25 16:06 ` Paul Turner
0 siblings, 0 replies; 9+ messages in thread
From: Paul Turner @ 2013-01-25 16:06 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Fabio Estevam, mingo, peterz, linux-kernel, Fabio Estevam
On Fri, Jan 25, 2013 at 12:06 AM, Ingo Molnar <mingo@kernel.org> wrote:
>
> * Paul Turner <pjt@google.com> wrote:
>
>> On Thu, Jan 24, 2013 at 11:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
>> >
>> > * Fabio Estevam <festevam@gmail.com> wrote:
>> >
>> >> On Thu, Jan 24, 2013 at 12:19 PM, Ingo Molnar <mingo@kernel.org> wrote:
>> >>
>> >> > I suppose - is this patch warning-free both on 64-bit and 32-bit
>> >> > systems?
>> >>
>> >> Yes, just confirmed that this patch is warning-free on both 64-bit and
>> >> 32-bit machines.
>> >
>> > Apparently it's not all good, see the warning attached below.
>>
>> Yeah this patch is broken; this is not properly fixable as is without
>> #ifdefs (or fixing the insanity that is atomic64_read).
>>
>> Specifically:
>>
>> On some architectures (e.g. x86_64) atomic64_read is typed long
>> On some others (e.g. x86-32) it's typed long long
>> On yet others (e.g. arm) it's typed u64
>
> Hm, cannot we type atomic64_read() to u64 on x86-64 as well, and
> fix other architectures? How widespread is this problem, have
> you checked that perhaps?
I have not looked at how much fall-out this would cause. Ideally
someone with a cross-compiing tool-chain or from the specific arches
could take ownership of cleaning up their atomic64 implementations to
avoid introducing more build pain.
Theoretically, given the list above x86-64 is actually the outlier in
assuming that it's just a long type; perhaps we can gain sufficient
mileage by changing only the x86-64 implementation; which is much
easier for us to validate :-).
>
> I'm all for clean, consistent types instead of #ifdef or
> temporary variable uglies.
Yes I agree this would be the best solution.
>
> Thanks,
>
> Ingo
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-01-25 16:14 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-25 11:24 [PATCH v2] sched: Fix print format for u64 Fabio Estevam
2013-01-11 1:30 ` Fabio Estevam
2013-01-24 14:19 ` Ingo Molnar
2013-01-24 14:47 ` Fabio Estevam
2013-01-25 7:19 ` Ingo Molnar
2013-01-25 7:31 ` Paul Turner
2013-01-25 8:06 ` Ingo Molnar
2013-01-25 16:06 ` Paul Turner
2013-01-24 20:22 ` [tip:sched/urgent] " tip-bot for Fabio Estevam
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.