Subject: Re: [PATCH 8/8] powerpc/perf: Add power8 EBB support

From: Adhemerval Zanella <[email-masked]>
Date: Fri, 05 Jul 2013 14:57:59 -0300

On 04-07-2013 23:54, Michael Ellerman wrote:
> On Thu, Jul 04, 2013 at 03:58:01PM -0300, Adhemerval Zanella wrote:
>> Hi Michael,
>>
>> I believe you forgot to add the cpu_user_features2 bit to announce the EBB support
>> for P8, patch following:
> Hi Adhemerval,
>
> You're right, I haven't added it. I was wondering how best to do it.
>
> It's possible to configure the kernel so that it doesn't have PMU
> support, and in that case EBB is unsupported. It's also possible that something
> goes wrong with the PMU registration (kernel bug or OOM), and again EBB is then
> unsupported.
>
> So I think it might be better if we add PPC_FEATURE2_EBB at runtime in
> init_power8_pmu().
>
> What do you think?
Indeed your approach seems better (I wasn't aware you could configure
kernel with perf subsystem).

>
> Something like:
>
> diff --git a/arch/powerpc/perf/power8-pmu.c b/arch/powerpc/perf/power8-pmu.c
> index c7f8ccc..fd9ed89 100644
> --- a/arch/powerpc/perf/power8-pmu.c
> +++ b/arch/powerpc/perf/power8-pmu.c
> @@ -620,10 +682,19 @@ static struct power_pmu power8_pmu = {
>
>  static int __init init_power8_pmu(void)
>  {
> +       int rc;
> +
>         if (!cur_cpu_spec->oprofile_cpu_type ||
>             strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power8"))
>                 return -ENODEV;
>
> -       return register_power_pmu(&power8_pmu);
> +       rc = register_power_pmu(&power8_pmu);
> +       if (rc)
> +               return rc;
> +
> +       /* Tell userspace that EBB is supported */
> +       cur_cpu_spec->cpu_user_features2 |= PPC_FEATURE2_EBB;
> +
> +       return 0;
>  }
>  early_initcall(init_power8_pmu);
>
>
> cheers
>