linux-hwmon.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: kbuild-all@lists.01.org, linux-hwmon@vger.kernel.org
Subject: [hwmon:hwmon-playground 38/44] drivers/hwmon/pmbus/pmbus_core.c:159:2: note: in expansion of macro 'if'
Date: Mon, 27 Jan 2020 00:46:37 +0800	[thread overview]
Message-ID: <202001270035.dG6OCZRa%lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 10623 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-playground
head:   e8dc30cf9ae936e93319687fa88ed45c55797807
commit: e9036c751c0918fdac1a927e8b52d5fb4e4d926a [38/44] hwmon: (pmbus) Implement multi-phase support
config: arm-randconfig-a001-20200126 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout e9036c751c0918fdac1a927e8b52d5fb4e4d926a
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/kernel.h:11:0,
                    from include/linux/list.h:9,
                    from include/linux/wait.h:7,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/linux/debugfs.h:15,
                    from drivers/hwmon/pmbus/pmbus_core.c:9:
   drivers/hwmon/pmbus/pmbus_core.c: In function 'pmbus_set_page':
   drivers/hwmon/pmbus/pmbus_core.c:160:10: error: 'struct pmbus_data' has no member named 'pages'
         data->pages > 1 & page != data->currpage) {
             ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
>> drivers/hwmon/pmbus/pmbus_core.c:159:2: note: in expansion of macro 'if'
     if (!(data->info->func[page] & PMBUS_PAGE_VIRTUAL) &&
     ^~
   drivers/hwmon/pmbus/pmbus_core.c:160:10: error: 'struct pmbus_data' has no member named 'pages'
         data->pages > 1 & page != data->currpage) {
             ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                                ^~~~
>> drivers/hwmon/pmbus/pmbus_core.c:159:2: note: in expansion of macro 'if'
     if (!(data->info->func[page] & PMBUS_PAGE_VIRTUAL) &&
     ^~
   drivers/hwmon/pmbus/pmbus_core.c:160:10: error: 'struct pmbus_data' has no member named 'pages'
         data->pages > 1 & page != data->currpage) {
             ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
>> drivers/hwmon/pmbus/pmbus_core.c:159:2: note: in expansion of macro 'if'
     if (!(data->info->func[page] & PMBUS_PAGE_VIRTUAL) &&
     ^~
   drivers/hwmon/pmbus/pmbus_core.c:174:10: error: 'struct pmbus_data' has no member named 'phases'
     if (data->phases && data->currphase != phase &&
             ^
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
   drivers/hwmon/pmbus/pmbus_core.c:174:2: note: in expansion of macro 'if'
     if (data->phases && data->currphase != phase &&
     ^~
   drivers/hwmon/pmbus/pmbus_core.c:174:10: error: 'struct pmbus_data' has no member named 'phases'
     if (data->phases && data->currphase != phase &&
             ^
   include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                                ^~~~
   drivers/hwmon/pmbus/pmbus_core.c:174:2: note: in expansion of macro 'if'
     if (data->phases && data->currphase != phase &&
     ^~
   drivers/hwmon/pmbus/pmbus_core.c:174:10: error: 'struct pmbus_data' has no member named 'phases'
     if (data->phases && data->currphase != phase &&
             ^
   include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
   drivers/hwmon/pmbus/pmbus_core.c:174:2: note: in expansion of macro 'if'
     if (data->phases && data->currphase != phase &&
     ^~

vim +/if +159 drivers/hwmon/pmbus/pmbus_core.c

   > 9	#include <linux/debugfs.h>
    10	#include <linux/kernel.h>
    11	#include <linux/math64.h>
    12	#include <linux/module.h>
    13	#include <linux/init.h>
    14	#include <linux/err.h>
    15	#include <linux/slab.h>
    16	#include <linux/i2c.h>
    17	#include <linux/hwmon.h>
    18	#include <linux/hwmon-sysfs.h>
    19	#include <linux/jiffies.h>
    20	#include <linux/pmbus.h>
    21	#include <linux/regulator/driver.h>
    22	#include <linux/regulator/machine.h>
    23	#include "pmbus.h"
    24	
    25	/*
    26	 * Number of additional attribute pointers to allocate
    27	 * with each call to krealloc
    28	 */
    29	#define PMBUS_ATTR_ALLOC_SIZE	32
    30	
    31	/*
    32	 * Index into status register array, per status register group
    33	 */
    34	#define PB_STATUS_BASE		0
    35	#define PB_STATUS_VOUT_BASE	(PB_STATUS_BASE + PMBUS_PAGES)
    36	#define PB_STATUS_IOUT_BASE	(PB_STATUS_VOUT_BASE + PMBUS_PAGES)
    37	#define PB_STATUS_FAN_BASE	(PB_STATUS_IOUT_BASE + PMBUS_PAGES)
    38	#define PB_STATUS_FAN34_BASE	(PB_STATUS_FAN_BASE + PMBUS_PAGES)
    39	#define PB_STATUS_TEMP_BASE	(PB_STATUS_FAN34_BASE + PMBUS_PAGES)
    40	#define PB_STATUS_INPUT_BASE	(PB_STATUS_TEMP_BASE + PMBUS_PAGES)
    41	#define PB_STATUS_VMON_BASE	(PB_STATUS_INPUT_BASE + 1)
    42	
    43	#define PB_NUM_STATUS_REG	(PB_STATUS_VMON_BASE + 1)
    44	
    45	#define PMBUS_NAME_SIZE		24
    46	
    47	struct pmbus_sensor {
    48		struct pmbus_sensor *next;
    49		char name[PMBUS_NAME_SIZE];	/* sysfs sensor name */
    50		struct device_attribute attribute;
    51		u8 page;		/* page number */
    52		u8 phase;		/* phase number, 0xff for all phases */
    53		u16 reg;		/* register */
    54		enum pmbus_sensor_classes class;	/* sensor class */
    55		bool update;		/* runtime sensor update needed */
    56		bool convert;		/* Whether or not to apply linear/vid/direct */
    57		int data;		/* Sensor data.
    58					   Negative if there was a read error */
    59	};
    60	#define to_pmbus_sensor(_attr) \
    61		container_of(_attr, struct pmbus_sensor, attribute)
    62	
    63	struct pmbus_boolean {
    64		char name[PMBUS_NAME_SIZE];	/* sysfs boolean name */
    65		struct sensor_device_attribute attribute;
    66		struct pmbus_sensor *s1;
    67		struct pmbus_sensor *s2;
    68	};
    69	#define to_pmbus_boolean(_attr) \
    70		container_of(_attr, struct pmbus_boolean, attribute)
    71	
    72	struct pmbus_label {
    73		char name[PMBUS_NAME_SIZE];	/* sysfs label name */
    74		struct device_attribute attribute;
    75		char label[PMBUS_NAME_SIZE];	/* label */
    76	};
    77	#define to_pmbus_label(_attr) \
    78		container_of(_attr, struct pmbus_label, attribute)
    79	
    80	struct pmbus_data {
    81		struct device *dev;
    82		struct device *hwmon_dev;
    83	
    84		u32 flags;		/* from platform data */
    85	
    86		int exponent[PMBUS_PAGES];
    87					/* linear mode: exponent for output voltages */
    88	
    89		const struct pmbus_driver_info *info;
    90	
    91		int max_attributes;
    92		int num_attributes;
    93		struct attribute_group group;
    94		const struct attribute_group **groups;
    95		struct dentry *debugfs;		/* debugfs device directory */
    96	
    97		struct pmbus_sensor *sensors;
    98	
    99		struct mutex update_lock;
   100		bool valid;
   101		unsigned long last_updated;	/* in jiffies */
   102	
   103		/*
   104		 * A single status register covers multiple attributes,
   105		 * so we keep them all together.
   106		 */
   107		u16 status[PB_NUM_STATUS_REG];
   108	
   109		bool has_status_word;		/* device uses STATUS_WORD register */
   110		int (*read_status)(struct i2c_client *client, int page);
   111	
   112		u8 currpage;
   113		u8 currphase;	/* current phase, 0xff for all */
   114	};
   115	
   116	struct pmbus_debugfs_entry {
   117		struct i2c_client *client;
   118		u8 page;
   119		u8 reg;
   120	};
   121	
   122	static const int pmbus_fan_rpm_mask[] = {
   123		PB_FAN_1_RPM,
   124		PB_FAN_2_RPM,
   125		PB_FAN_1_RPM,
   126		PB_FAN_2_RPM,
   127	};
   128	
   129	static const int pmbus_fan_config_registers[] = {
   130		PMBUS_FAN_CONFIG_12,
   131		PMBUS_FAN_CONFIG_12,
   132		PMBUS_FAN_CONFIG_34,
   133		PMBUS_FAN_CONFIG_34
   134	};
   135	
   136	static const int pmbus_fan_command_registers[] = {
   137		PMBUS_FAN_COMMAND_1,
   138		PMBUS_FAN_COMMAND_2,
   139		PMBUS_FAN_COMMAND_3,
   140		PMBUS_FAN_COMMAND_4,
   141	};
   142	
   143	void pmbus_clear_cache(struct i2c_client *client)
   144	{
   145		struct pmbus_data *data = i2c_get_clientdata(client);
   146	
   147		data->valid = false;
   148	}
   149	EXPORT_SYMBOL_GPL(pmbus_clear_cache);
   150	
   151	int pmbus_set_page(struct i2c_client *client, int page, int phase)
   152	{
   153		struct pmbus_data *data = i2c_get_clientdata(client);
   154		int rv;
   155	
   156		if (page < 0)
   157			return 0;
   158	
 > 159		if (!(data->info->func[page] & PMBUS_PAGE_VIRTUAL) &&
   160		    data->pages > 1 & page != data->currpage) {
   161			rv = i2c_smbus_write_byte_data(client, PMBUS_PAGE, page);
   162			if (rv < 0)
   163				return rv;
   164	
   165			rv = i2c_smbus_read_byte_data(client, PMBUS_PAGE);
   166			if (rv < 0)
   167				return rv;
   168	
   169			if (rv != page)
   170				return -EIO;
   171		}
   172		data->currpage = page;
   173	
   174		if (data->phases && data->currphase != phase &&
   175		    !(data->info->pfunc[phase] & PMBUS_PHASE_VIRTUAL)) {
   176			rv = i2c_smbus_write_byte_data(client, PMBUS_PHASE,
   177						       phase);
   178			if (rv)
   179				return rv;
   180		}
   181		data->currphase = phase;
   182	
   183		return 0;
   184	}
   185	EXPORT_SYMBOL_GPL(pmbus_set_page);
   186	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32043 bytes --]

                 reply	other threads:[~2020-01-26 16:47 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202001270035.dG6OCZRa%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux@roeck-us.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).