diff mbox

[5/7,REVISION] trace, RAS: Add eMCA trace event interface

Message ID 20140613070928.GA29351@gchen.bj.intel.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Chen Gong June 13, 2014, 7:09 a.m. UTC
On Thu, Jun 12, 2014 at 11:08:33PM -0400, Steven Rostedt wrote:
> > > > The above array works, but I'm wondering why you don't just use the
> > > > types themselves?
> > > > 
> > > > That is:
> > > > 
> > > > 		__field(uuid_le, fru_id)
> > > > 		__field(struct cper_mem_err_compact, data)
> > > > 
> > > Every time when I use above codes I will hit some compiler error like
> > > "error: conversion to non-scalar type requested". It looks some
> > > data types like above (unless typedef) can't be used in __field.
> > > Is it true? How to fix that?
> > > 
> > 
> > Ah, that's a bug in the ftrace.h file. I'll need to test this against
> > it to see what error it gives. I'll work on that tomorrow as it's
> > bedtime for me now.
> 
> Wait, I take that back. I was thinking the error was with the
> __array(). A __field() should work fine!
> 
> Can you post me the patch you did and the error you get when you
> compile.

Here is the incremented patch & compiler error.
PS: the same issue for __field(struct cper_mem_err_compact, data)


In file included from include/trace/define_trace.h:90:0,
                 from include/ras/ras_event.h:226,
                 from drivers/ras/ras.c:13:
include/trace/../../include/ras/ras_event.h: In function ‘ftrace_define_fields_extlog_mem_event’:
include/trace/ftrace.h:330:9: error: conversion to non-scalar type requested
  struct ftrace_raw_##call field;     \
         ^
include/trace/ftrace.h:32:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’
  DECLARE_EVENT_CLASS(name,          \
  ^
include/trace/../../include/ras/ras_event.h:23:1: note: in expansion of macro ‘TRACE_EVENT’
 TRACE_EVENT(extlog_mem_event,
 ^
include/trace/ftrace.h:330:9: error: conversion to non-scalar type requested
  struct ftrace_raw_##call field;     \
         ^
include/trace/ftrace.h:32:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’
  DECLARE_EVENT_CLASS(name,          \
  ^
include/trace/../../include/ras/ras_event.h:23:1: note: in expansion of macro ‘TRACE_EVENT’
 TRACE_EVENT(extlog_mem_event,
 ^
scripts/Makefile.build:318: recipe for target 'drivers/ras/ras.o' failed

Comments

Chen Gong June 17, 2014, 2:09 a.m. UTC | #1
On Fri, Jun 13, 2014 at 03:09:28AM -0400, Chen, Gong wrote:
> On Thu, Jun 12, 2014 at 11:08:33PM -0400, Steven Rostedt wrote:
> > > > > The above array works, but I'm wondering why you don't just use the
> > > > > types themselves?
> > > > > 
> > > > > That is:
> > > > > 
> > > > > 		__field(uuid_le, fru_id)
> > > > > 		__field(struct cper_mem_err_compact, data)
> > > > > 
> > > > Every time when I use above codes I will hit some compiler error like
> > > > "error: conversion to non-scalar type requested". It looks some
> > > > data types like above (unless typedef) can't be used in __field.
> > > > Is it true? How to fix that?
> > > > 
> > > 
> > > Ah, that's a bug in the ftrace.h file. I'll need to test this against
> > > it to see what error it gives. I'll work on that tomorrow as it's
> > > bedtime for me now.
> > 
> > Wait, I take that back. I was thinking the error was with the
> > __array(). A __field() should work fine!
> > 
> > Can you post me the patch you did and the error you get when you
> > compile.
> 
> Here is the incremented patch & compiler error.
> PS: the same issue for __field(struct cper_mem_err_compact, data)
> 
> diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
> index a794691..174aac1 100644
> --- a/include/ras/ras_event.h
> +++ b/include/ras/ras_event.h
> @@ -35,7 +35,7 @@ TRACE_EVENT(extlog_mem_event,
>                 __field(u8, sev)
>                 __field(u64, pa)
>                 __field(u8, pa_mask_lsb)
> -               __array(u8, fru_id, sizeof(uuid_le))
> +               __field(uuid_le, fru_id)
>                 __string(fru_text, fru_text)
>                 __array(u8, data, sizeof(struct cper_mem_err_compact))
>         ),
> @@ -56,7 +56,7 @@ TRACE_EVENT(extlog_mem_event,
>                         __entry->pa_mask_lsb = (u8)__ffs64(mem->physical_addr_mask);
>                 else
>                         __entry->pa_mask_lsb = ~0;
> -               memcpy(__entry->fru_id, fru_id, sizeof(uuid_le));
> +               __entry->fru_id = *fru_id;
>                 __assign_str(fru_text, fru_text);
>                 cper_mem_err_pack(mem, __entry->data);
>         ),
> @@ -68,7 +68,7 @@ TRACE_EVENT(extlog_mem_event,
>                   __entry->pa,
>                   __entry->pa_mask_lsb,
>                   cper_mem_err_unpack(p, __entry->data),
> -                 __entry->fru_id,
> +                 &__entry->fru_id,
>                   __get_str(fru_text))
>  );
> 
> 
> In file included from include/trace/define_trace.h:90:0,
>                  from include/ras/ras_event.h:226,
>                  from drivers/ras/ras.c:13:
> include/trace/../../include/ras/ras_event.h: In function ‘ftrace_define_fields_extlog_mem_event’:
> include/trace/ftrace.h:330:9: error: conversion to non-scalar type requested
>   struct ftrace_raw_##call field;     \
>          ^
> include/trace/ftrace.h:32:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’
>   DECLARE_EVENT_CLASS(name,          \
>   ^
> include/trace/../../include/ras/ras_event.h:23:1: note: in expansion of macro ‘TRACE_EVENT’
>  TRACE_EVENT(extlog_mem_event,
>  ^
> include/trace/ftrace.h:330:9: error: conversion to non-scalar type requested
>   struct ftrace_raw_##call field;     \
>          ^
> include/trace/ftrace.h:32:2: note: in expansion of macro ‘DECLARE_EVENT_CLASS’
>   DECLARE_EVENT_CLASS(name,          \
>   ^
> include/trace/../../include/ras/ras_event.h:23:1: note: in expansion of macro ‘TRACE_EVENT’
>  TRACE_EVENT(extlog_mem_event,
>  ^
> scripts/Makefile.build:318: recipe for target 'drivers/ras/ras.o' failed
> 


Any update, Steven?
Steven Rostedt June 17, 2014, 3:37 a.m. UTC | #2
On Mon, 16 Jun 2014 22:09:37 -0400
"Chen, Gong" <gong.chen@linux.intel.com> wrote:

> 
> Any update, Steven?

Sorry I missed this. Claws-mail has an annoying tendency when I have
something selected and I get new mail, it turns all my mail to read
except the mail that just came in. I need to figure out that bug and
fix it :-(

Anyway, I know what your issue is. It's the check for signed type. It
doesn't work for structures. I'm working on a way to fix that.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chen Gong June 18, 2014, 2:33 a.m. UTC | #3
[PATCH 5/7 REVISION v2] trace, RAS: Add eMCA trace event interface

Hi, Steven

Your patch works well. Here is the updated patch based on your patch.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
index a794691..174aac1 100644
--- a/include/ras/ras_event.h
+++ b/include/ras/ras_event.h
@@ -35,7 +35,7 @@  TRACE_EVENT(extlog_mem_event,
                __field(u8, sev)
                __field(u64, pa)
                __field(u8, pa_mask_lsb)
-               __array(u8, fru_id, sizeof(uuid_le))
+               __field(uuid_le, fru_id)
                __string(fru_text, fru_text)
                __array(u8, data, sizeof(struct cper_mem_err_compact))
        ),
@@ -56,7 +56,7 @@  TRACE_EVENT(extlog_mem_event,
                        __entry->pa_mask_lsb = (u8)__ffs64(mem->physical_addr_mask);
                else
                        __entry->pa_mask_lsb = ~0;
-               memcpy(__entry->fru_id, fru_id, sizeof(uuid_le));
+               __entry->fru_id = *fru_id;
                __assign_str(fru_text, fru_text);
                cper_mem_err_pack(mem, __entry->data);
        ),
@@ -68,7 +68,7 @@  TRACE_EVENT(extlog_mem_event,
                  __entry->pa,
                  __entry->pa_mask_lsb,
                  cper_mem_err_unpack(p, __entry->data),
-                 __entry->fru_id,
+                 &__entry->fru_id,
                  __get_str(fru_text))
 );