Vince,

Thanks for the patch. I will include it in the next release.

As for your question related to lack of PMU interrupt, older
processors usually have this problem. Sony reported that
Cell, at least on Playstation3, also has this problem due to
a firmware limitation.

To emulate 64-bit counter, I don't see another way but to poll.
Yet, this is not bullet proof due to interrupt masking for instance.
The trick is to poll more frequently than a counter can overflow.
Of course, the rate of overflow depends on the event measured.
So we'd have to find the event that can increment the fastest and
pick a polling period that is lower. Ugly, ugly....


On Thu, Sep 11, 2008 at 5:24 PM, Vince Weaver <[EMAIL PROTECTED]> wrote:
> Hello
>
> The patch below (against the linux kernel) is needed on older SPARC
> machines in order to use perfmon2.  Without the patch, the machines will
> actually panic at boot as they try to run strcmp() on uninitialized
> memory as the pmu name is never set.
>
> With this patch, I can use perfmon2 on an UltraSPARC2 based machine I
> have.
>
> Unfortunately the UltraSPARC2 does not have a pmu interrupt :(
> Would it make sense at some point to have a common infrastructure for
> using sampling to attempt to estimate 64-bit counts on machines without an
> overflow interrupt?  More machines than I expected have this problem.
>
> Also, I am still working on the proper fix for Niagara to handle overflow
> properly.  It should be possible, I just haven't had time to work on it.
>
> Thanks
>
> Vince
>
> --- arch/sparc64/kernel/cpu.c.orig      2008-09-11 11:17:56.000000000 -0400
> +++ arch/sparc64/kernel/cpu.c   2008-09-11 11:17:23.000000000 -0400
> @@ -50,17 +50,17 @@
>  #define NSPARCFPU  ARRAY_SIZE(linux_sparc_fpu)
>
>  static struct cpu_iu_info linux_sparc_chips[] = {
> -  { 0x17, 0x10, "TI UltraSparc I   (SpitFire)"},
> -  { 0x22, 0x10, "TI UltraSparc I   (SpitFire)"},
> -  { 0x17, 0x11, "TI UltraSparc II  (BlackBird)"},
> -  { 0x17, 0x12, "TI UltraSparc IIi (Sabre)"},
> -  { 0x17, 0x13, "TI UltraSparc IIe (Hummingbird)"},
> -  { 0x3e, 0x14, "TI UltraSparc III (Cheetah)"},
> -  { 0x3e, 0x15, "TI UltraSparc III+ (Cheetah+)"},
> -  { 0x3e, 0x16, "TI UltraSparc IIIi (Jalapeno)"},
> -  { 0x3e, 0x18, "TI UltraSparc IV (Jaguar)"},
> -  { 0x3e, 0x19, "TI UltraSparc IV+ (Panther)"},
> -  { 0x3e, 0x22, "TI UltraSparc IIIi+ (Serrano)"},
> +  { 0x17, 0x10, "TI UltraSparc I   (SpitFire)",    "ultra12"},
> +  { 0x22, 0x10, "TI UltraSparc I   (SpitFire)",    "ultra12"},
> +  { 0x17, 0x11, "TI UltraSparc II  (BlackBird)",   "ultra12"},
> +  { 0x17, 0x12, "TI UltraSparc IIi (Sabre)",       "ultra12"},
> +  { 0x17, 0x13, "TI UltraSparc IIe (Hummingbird)", "ultra12"},
> +  { 0x3e, 0x14, "TI UltraSparc III (Cheetah)",     "ultra3"},
> +  { 0x3e, 0x15, "TI UltraSparc III+ (Cheetah+)",   "ultra3+"},
> +  { 0x3e, 0x16, "TI UltraSparc IIIi (Jalapeno)",   "ultra3i"},
> +  { 0x3e, 0x18, "TI UltraSparc IV (Jaguar)",       "ultra4"},
> +  { 0x3e, 0x19, "TI UltraSparc IV+ (Panther)",     "ultra4+"},
> +  { 0x3e, 0x22, "TI UltraSparc IIIi+ (Serrano)",   "ultra3+"},
>  };
>
>  #define NSPARCCHIPS  ARRAY_SIZE(linux_sparc_chips)
> @@ -142,6 +142,7 @@
>                               manuf, impl);
>                }
>                sparc_cpu_type = "Unknown CPU";
> +               sparc_pmu_type = "Unknown PMU";
>        }
>
>        for (i = 0; i < NSPARCFPU; i++) {
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> perfmon2-devel mailing list
> perfmon2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/perfmon2-devel
>

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to