On Thu, May 30, 2013 at 10:06:20AM +0800, Andy Green wrote:
> Hi -
> 
> We're using one kernel binary with BL Switcher enabled in config,
> but able to work on SoC without Big Little.
> 
> This is OK except where the BL patches touch the PMU driver.  It
> makes an assumption about BL configured == in use which is not true.
> PMU init fails and when you try to use perf list later, it blows
> chunks.
> 
> I worked around it with the hack below, so it can fail out from the
> bigLITTLE path when it doesn't see the cluster property in DT, but
> there's presumably a better way to do that which more directly
> checks if we care about BL in this execution environment.
> 
> -Andy
> 
> 
> 
> Author: Andy Green <andy.gr...@linaro.org>
> Date:   Thu May 30 09:44:17 2013 +0800
> 
>     bl switcher fix dont assume bl active in pmu probe
> 
>     Signed-off-by: Andy Green <andy.gr...@linaro.org>
> 
> diff --git a/arch/arm/kernel/perf_event_cpu.c
> b/arch/arm/kernel/perf_event_cpu.c
> index b3ae24f..c02ea21 100644
> --- a/arch/arm/kernel/perf_event_cpu.c
> +++ b/arch/arm/kernel/perf_event_cpu.c
> @@ -440,6 +440,9 @@ static int cpu_pmu_device_probe(struct
> platform_device *pdev)
>                         hwid = of_get_property(ncluster, "reg", &len);
>                         if (hwid && len == 4)
>                                 cluster = be32_to_cpup(hwid);
> +               } else {
> +                       ret = probe_current_pmu(pmu);
> +                       goto bail;

Can you provide logs?

Why is the DT different for MP versus IKS?

It is incorrect for the DT to be different, because the hardware is
exactly the same in both cases.

If the DT isn't different, then can you elaborate on what is fixed
by this change?


You may be getting affected by the fact that we're relying on non-
pstreamed DT bindings to describe the PMUs in the system.  Discussions
upstream are taking a different direction, so this code is going to
get substantially rewritten at some point.  The perf support for IKS
is a big hack at the moment...  Unfortunately, I have ongoing
distractions which mean that progress on this is mostly stalled
right now.

There is also a separate problem caused by a recent change to the IKS
code which breaks the perf support's assumptions about what physical/
logical CPU mappings are possible.  I need to fix this, but it's not
done yet...  If you are using up-to-date IKS code, it's possible you're
hitting this issue.

Cheers
---Dave

>                 }
>                 /* set sibling mask to all cpu mask if socket is not
> specified */
>                 /*
> @@ -501,7 +504,7 @@ static int cpu_pmu_device_probe(struct
> platform_device *pdev)
>         } else {
>                 ret = probe_current_pmu(pmu);
>         }
> -
> +bail:
>         if (ret)
>                 goto error;
> 
> 
> 
> -- 
> Andy Green | Fujitsu Landing Team Leader
> Linaro.org │ Open source software for ARM SoCs | Follow Linaro
> http://facebook.com/pages/Linaro/155974581091106  -
> http://twitter.com/#!/linaroorg - http://linaro.org/linaro-blog
> 
> _______________________________________________
> linaro-dev mailing list
> linaro-dev@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to