On Mon, Apr 15, 2013 at 11:17:31AM -0600, Bjorn Helgaas wrote: > Can somebody help me resolve the following warning, please? > > $ make W=1 drivers/pci/pcie/aer/aerdrv_errprint.o > ... > CC drivers/pci/pcie/aer/aerdrv_errprint.o > In file included from include/trace/ftrace.h:356:0, > from include/trace/define_trace.h:86, > from include/trace/events/ras.h:77, > from drivers/pci/pcie/aer/aerdrv_errprint.c:27: > include/trace/events/ras.h: In function ‘ftrace_define_fields_aer_event’: > include/trace/events/ras.h:72:1: warning: comparison of unsigned > expression < 0 is always false [-Wtype-limits] > > I think it's related to "status" being a u32 below (this is from > include/trace/events/ras.h), but I don't know whether that's incorrect > or how to fix it: > > TRACE_EVENT(aer_event, > TP_PROTO(const char *dev_name, > const u32 status, > const u8 severity), > > TP_ARGS(dev_name, status, severity), > > TP_STRUCT__entry( > __string( dev_name, dev_name ) > __field( u32, status ) > __field( u8, severity ) > ), > ... The culrpit is the is_signed_type macro defined in include/linux/ftrace_event.h: #define is_signed_type(type) (((type)(-1)) < (type)0) The above "__field( u32, status )" gets expanded to "ret = trace_define_field(event_call, "u32", "status", __builtin_offsetof(typeof(field),status), sizeof(field.status), (((u32)(-1)) < (u32)0), FILTER_OTHER); if (ret) return ret;" The warning is triggered by: "(((u32)(-1)) < (u32)0)" which was put there by is_signed_type. It appears that is_signed_type is simply taking advantage of the same action that the compiler is warning about to perform it's function. Not sure how to make is_signed_type warningless although it does create a significant amount of noise during a full `make W=1` kernel build. With 3.9-rc7 it appears to be responsible for 1401 of 1476 occurrences of "warning: comparison of unsigned expression < 0 is always false". Gary -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html