From: Ingo Molnar <mingo@elte.hu>
To: Hugh Dickins <hugh@veritas.com>
Cc: Lennert Buytenhek <buytenh@wantstofly.org>,
Rusty Russell <rusty@rustcorp.com.au>,
Rafael Wysocki <rjw@sisk.pl>,
linux-kernel@vger.kernel.org
Subject: Re: /proc/profile broken on UP machines in 2.6.29-rc3
Date: Tue, 10 Feb 2009 00:50:58 +0100 [thread overview]
Message-ID: <20090209235058.GC862@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.64.0902091906440.5718@blonde.anvils>
* Hugh Dickins <hugh@veritas.com> wrote:
> On Mon, 9 Feb 2009, Lennert Buytenhek wrote:
>
> > I'm about 130k emails behind on my linux-kernel@ subscription, so I'm
> > not entirely sure whether this has been reported, but it seems that
> > profiling is broken on !CONFIG_SMP builds in 2.6.29-rc3.
>
> Yes, and CONFIG_SMP builds, and 2.6.29-rc4.
>
> > It appears that since this commit:
> >
> > commit c309b917cab55799ea489d7b5f1b77025d9f8462
> > Author: Rusty Russell <rusty@rustcorp.com.au>
> > Date: Thu Jan 1 10:12:27 2009 +1030
> >
> > cpumask: convert kernel/profile.c
> >
> > there's no longer anything that sets any bits in prof_cpu_mask on
> > UP systems at all (the default was to assign CPU_MASK_ALL, and
> > profile_cpu_callback() which clears/sets bits at run time is only
> > built and registered on SMP builds), so the cpumask_test_cpu()
> > test in profile_tick() always fails, and no samples are ever counted.
>
> I guess if you cpu down and up, or suspend and resume, that will get
> aux cpus profiling in the SMP case, but basically SMP is as broken as
> UP. I noticed yesterday, took a look earlier today, here's the patch
> which gets it working for me:
>
>
> [PATCH] fix broken profiling regression
>
> Commit c309b917cab55799ea489d7b5f1b77025d9f8462 "cpumask: convert
> kernel/profile.c" broke profiling. prof_cpu_mask was previously
> initialized to CPU_MASK_ALL, but left uninitialized in that commit.
> We need to copy cpu_possible_mask (cpu_online_mask is not enough).
>
> Signed-off-by: Hugh Dickins <hugh@veritas.com>
> ---
>
> kernel/profile.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> --- 2.6.29-rc4/kernel/profile.c 2009-01-11 01:33:38.000000000 +0000
> +++ linux/kernel/profile.c 2009-02-09 15:23:34.000000000 +0000
> @@ -114,12 +114,15 @@ int __ref profile_init(void)
> if (!slab_is_available()) {
> prof_buffer = alloc_bootmem(buffer_bytes);
> alloc_bootmem_cpumask_var(&prof_cpu_mask);
> + cpumask_copy(prof_cpu_mask, cpu_possible_mask);
> return 0;
> }
>
> if (!alloc_cpumask_var(&prof_cpu_mask, GFP_KERNEL))
> return -ENOMEM;
>
> + cpumask_copy(prof_cpu_mask, cpu_possible_mask);
> +
> prof_buffer = kzalloc(buffer_bytes, GFP_KERNEL);
> if (prof_buffer)
> return 0;
indeed. Applied to tip/tracing/urgent, thanks Hugh!
Ingo
prev parent reply other threads:[~2009-02-09 23:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-09 14:50 /proc/profile broken on UP machines in 2.6.29-rc3 Lennert Buytenhek
2009-02-09 19:20 ` Hugh Dickins
2009-02-09 23:50 ` Ingo Molnar [this message]
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=20090209235058.GC862@elte.hu \
--to=mingo@elte.hu \
--cc=buytenh@wantstofly.org \
--cc=hugh@veritas.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=rusty@rustcorp.com.au \
/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.