Re: [PATCH] perf: fix topology test on systems with sparse CPUs

From: Jan Stancek
Date: Mon Jan 30 2017 - 14:29:42 EST






----- Original Message -----
> From: "Jiri Olsa" <jolsa@xxxxxxxxxx>
> To: "Jan Stancek" <jstancek@xxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx, peterz@xxxxxxxxxxxxx, mingo@xxxxxxxxxx, acme@xxxxxxxxxx, "alexander shishkin"
> <alexander.shishkin@xxxxxxxxxxxxxxx>, jolsa@xxxxxxxxxx, mhiramat@xxxxxxxxxx, "rui teng"
> <rui.teng@xxxxxxxxxxxxxxxxxx>, sukadev@xxxxxxxxxxxxxxxxxx
> Sent: Monday, 30 January, 2017 7:49:08 PM
> Subject: Re: [PATCH] perf: fix topology test on systems with sparse CPUs
>
> On Mon, Jan 30, 2017 at 05:53:34PM +0100, Jan Stancek wrote:
>
> SNIP
>
> > + ret = build_cpu_topo(tp, cpu);
> > if (ret < 0)
> > break;
> > }
> > +
> > +out_free:
> > + cpu_map__put(map);
> > if (ret) {
> > free_cpu_topo(tp);
> > tp = NULL;
> > }
> > +out:
> > return tp;
> > }
> >
> > @@ -575,7 +579,7 @@ static int write_cpu_topology(int fd, struct
> > perf_header *h __maybe_unused,
> > if (ret < 0)
> > goto done;
> >
> > - for (j = 0; j < perf_env.nr_cpus_avail; j++) {
> > + for (j = 0; j < perf_env.nr_cpus_online; j++) {
>
> so basically we're changing from avail to online cpus
>
> have you checked all the users of this FEATURE
> if such change is ok?

You're right, I missed some. Looking again, I see at least
perf_env__get_core() could break.

Regards,
Jan