Message ID | 20160713210338.1647521-1-arnd@arndb.de |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Wed, Jul 13, 2016 at 11:03:37PM CEST, arnd@arndb.de wrote: >A driver calling trace_devlink_hwmsg cannot be built when modules are disabled: > >include/trace/events/devlink.h: In function 'trace_event_get_offsets_devlink_hwmsg': >include/trace/events/devlink.h:25:51: error: dereferencing pointer to incomplete type 'struct module' > __string(owner_name, devlink->dev->driver->owner->name) > >This changes the code to only print the module name when modules are actually >enabled, otherwise we hardcode the string "built-in". > >Signed-off-by: Arnd Bergmann <arnd@arndb.de> >Fixes: e5224f0fe2ac ("devlink: add hardware messages tracing facility") >--- > include/trace/events/devlink.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > >diff --git a/include/trace/events/devlink.h b/include/trace/events/devlink.h >index 333c32ac9bfa..26f92d3c7e9c 100644 >--- a/include/trace/events/devlink.h >+++ b/include/trace/events/devlink.h >@@ -22,7 +22,11 @@ TRACE_EVENT(devlink_hwmsg, > TP_STRUCT__entry( > __string(bus_name, devlink->dev->bus->name) > __string(dev_name, dev_name(devlink->dev)) >+#ifdef CONFIG_MODULES > __string(owner_name, devlink->dev->driver->owner->name) I think would be better to use driver->name. I looks like it is always present. I will do some tests and send a patch. >+#else >+ __string(owner_name, "built-in") >+#endif > __field(bool, incoming) > __field(unsigned long, type) > __dynamic_array(u8, buf, len) >@@ -32,7 +36,11 @@ TRACE_EVENT(devlink_hwmsg, > TP_fast_assign( > __assign_str(bus_name, devlink->dev->bus->name); > __assign_str(dev_name, dev_name(devlink->dev)); >+#ifdef CONFIG_MODULES > __assign_str(owner_name, devlink->dev->driver->owner->name); >+#else >+ __assign_str(owner_name, "built-in"); >+#endif > __entry->incoming = incoming; > __entry->type = type; > memcpy(__get_dynamic_array(buf), buf, len); >-- >2.9.0 >
On Thursday, July 14, 2016 8:21:11 AM CEST Jiri Pirko wrote: > >diff --git a/include/trace/events/devlink.h b/include/trace/events/devlink.h > >index 333c32ac9bfa..26f92d3c7e9c 100644 > >--- a/include/trace/events/devlink.h > >+++ b/include/trace/events/devlink.h > >@@ -22,7 +22,11 @@ TRACE_EVENT(devlink_hwmsg, > > TP_STRUCT__entry( > > __string(bus_name, devlink->dev->bus->name) > > __string(dev_name, dev_name(devlink->dev)) > >+#ifdef CONFIG_MODULES > > __string(owner_name, devlink->dev->driver->owner->name) > > I think would be better to use driver->name. I looks like it is always > present. I will do some tests and send a patch. > Yes, good idea. Arnd
Thu, Jul 14, 2016 at 10:12:43AM CEST, arnd@arndb.de wrote: >On Thursday, July 14, 2016 8:21:11 AM CEST Jiri Pirko wrote: >> >diff --git a/include/trace/events/devlink.h b/include/trace/events/devlink.h >> >index 333c32ac9bfa..26f92d3c7e9c 100644 >> >--- a/include/trace/events/devlink.h >> >+++ b/include/trace/events/devlink.h >> >@@ -22,7 +22,11 @@ TRACE_EVENT(devlink_hwmsg, >> > TP_STRUCT__entry( >> > __string(bus_name, devlink->dev->bus->name) >> > __string(dev_name, dev_name(devlink->dev)) >> >+#ifdef CONFIG_MODULES >> > __string(owner_name, devlink->dev->driver->owner->name) >> >> I think would be better to use driver->name. I looks like it is always >> present. I will do some tests and send a patch. >> > >Yes, good idea. I will take your second path, rebase and send along. Thanks. > > Arnd >
diff --git a/include/trace/events/devlink.h b/include/trace/events/devlink.h index 333c32ac9bfa..26f92d3c7e9c 100644 --- a/include/trace/events/devlink.h +++ b/include/trace/events/devlink.h @@ -22,7 +22,11 @@ TRACE_EVENT(devlink_hwmsg, TP_STRUCT__entry( __string(bus_name, devlink->dev->bus->name) __string(dev_name, dev_name(devlink->dev)) +#ifdef CONFIG_MODULES __string(owner_name, devlink->dev->driver->owner->name) +#else + __string(owner_name, "built-in") +#endif __field(bool, incoming) __field(unsigned long, type) __dynamic_array(u8, buf, len) @@ -32,7 +36,11 @@ TRACE_EVENT(devlink_hwmsg, TP_fast_assign( __assign_str(bus_name, devlink->dev->bus->name); __assign_str(dev_name, dev_name(devlink->dev)); +#ifdef CONFIG_MODULES __assign_str(owner_name, devlink->dev->driver->owner->name); +#else + __assign_str(owner_name, "built-in"); +#endif __entry->incoming = incoming; __entry->type = type; memcpy(__get_dynamic_array(buf), buf, len);
A driver calling trace_devlink_hwmsg cannot be built when modules are disabled: include/trace/events/devlink.h: In function 'trace_event_get_offsets_devlink_hwmsg': include/trace/events/devlink.h:25:51: error: dereferencing pointer to incomplete type 'struct module' __string(owner_name, devlink->dev->driver->owner->name) This changes the code to only print the module name when modules are actually enabled, otherwise we hardcode the string "built-in". Signed-off-by: Arnd Bergmann <arnd@arndb.de> Fixes: e5224f0fe2ac ("devlink: add hardware messages tracing facility") --- include/trace/events/devlink.h | 8 ++++++++ 1 file changed, 8 insertions(+)