Hi Rafael,

Rafael.Vanoni <> wrote:

> Hi Aubrey, how've you been ?

I'm good and keep an eye on your great work about tickless, ;-p

> 
> I just found up a bug that's causing issues with the c-state report on
> sun4v systems. It's an int32_t to int64_t casting issue, I still need
> to test the fix on more systems, but it looks something like this:

I just took a look at sun4v implementation, the type is uint_t, the same as
other idle dtrace probe.

DTRACE_PROBE1(idle__state__transition, uint_t, IDLE_STATE_YIELDED);

what's problem you encountered? to keep the consistency, can we use 
uint_t to do the cast as well?

Thanks,
-Aubrey

> 
> --- a/usr/src/cmd/powertop/common/cpuidle.c     Thu Oct 08 14:08:48
> 2009 
> -0700
> +++ b/usr/src/cmd/powertop/common/cpuidle.c     Fri Oct 09 00:16:25
> 2009 -0700
> @@ -219,12 +219,12 @@
>          dtrace_aggdesc_t        *aggdesc = data->dtada_desc;
>          dtrace_recdesc_t        *rec;
>          uint64_t                n = 0;
> -       int32_t                 state;
> +       int64_t                 state;
>          int                     i;
> 
>          rec = &aggdesc->dtagd_rec[1];
>          /* LINTED - alignment */
> -       state = *(int32_t *)(data->dtada_data + rec->dtrd_offset);
> +       state = *(int64_t *)(data->dtada_data + rec->dtrd_offset);
> 
>          if (strcmp(aggdesc->dtagd_name, "number") == 0) {
>                  for (i = 0; i < g_ncpus; i++) {
> 
> 
> Just wanted to give you a heads up, I'll do more testing and may try
> to get this fixed in the current build (closing on Monday).
> 
> cheers,
> Rafael

Reply via email to