Re: [PATCH 5/7 REVISION] trace, RAS: Add eMCA trace event interface
From: Chen, Gong <hidden>
Date: 2014-06-13 07:38:21
Subsystem:
ras infrastructure, the rest · Maintainers:
Tony Luck, Borislav Petkov, Linus Torvalds
On Thu, Jun 12, 2014 at 11:08:33PM -0400, Steven Rostedt wrote:
quoted
quoted
quoted
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
Attachments
- signature.asc [application/pgp-signature] 819 bytes