Re: [patch v6 2/3] platform/mellanox: mlxreg-hotplug: allow driver for ARM architecture

From: kbuild test robot
Date: Wed Dec 20 2017 - 04:13:14 EST


Hi Vadim,

I love your patch! Yet something to improve:

[auto build test ERROR on platform-drivers-x86/for-next]
[also build test ERROR on v4.15-rc4 next-20171220]
[cannot apply to linus/master]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Vadim-Pasternak/drivers-platform-replace-module-x86-mlxcpld-hotplug-with-mellanox-mlxreg-hotplug/20171220-163359
base: git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git for-next
config: sparc64-allyesconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=sparc64

Note: the linux-review/Vadim-Pasternak/drivers-platform-replace-module-x86-mlxcpld-hotplug-with-mellanox-mlxreg-hotplug/20171220-163359 HEAD 7e98e72a743e69069c34f3bbd3b9289740e30de0 builds fine.
It only hurts bisectibility.

All errors (new ones prefixed by >>):

drivers/platform/mellanox/mlxreg-hotplug.c: In function 'mlxreg_hotplug_attr_show':
>> drivers/platform/mellanox/mlxreg-hotplug.c:224:17: error: implicit declaration of function 'inb' [-Werror=implicit-function-declaration]
reg_val = !!!(inb(priv->plat->psu_reg_offset) & BIT(index));
^~~
drivers/platform/mellanox/mlxreg-hotplug.c: In function 'mlxreg_hotplug_work_helper':
>> drivers/platform/mellanox/mlxreg-hotplug.c:305:2: error: implicit declaration of function 'outb' [-Werror=implicit-function-declaration]
outb(0, offset + MLXREG_HOTPLUG_MASK_OFF);
^~~~
cc1: some warnings being treated as errors

vim +/inb +224 drivers/platform/mellanox/mlxreg-hotplug.c

86a4f473 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 210
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 211 static ssize_t mlxreg_hotplug_attr_show(struct device *dev,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 212 struct device_attribute *attr,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 213 char *buf)
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 214 {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 215 struct platform_device *pdev = to_platform_device(dev);
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 216 struct mlxreg_hotplug_priv_data *priv = platform_get_drvdata(pdev);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 217 int index = to_sensor_dev_attr_2(attr)->index;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 218 int nr = to_sensor_dev_attr_2(attr)->nr;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 219 u8 reg_val = 0;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 220
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 221 switch (nr) {
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 222 case MLXREG_HOTPLUG_ATTR_TYPE_PSU:
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 223 /* Bit = 0 : PSU is present. */
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 @224 reg_val = !!!(inb(priv->plat->psu_reg_offset) & BIT(index));
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 225 break;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 226
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 227 case MLXREG_HOTPLUG_ATTR_TYPE_PWR:
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 228 /* Bit = 1 : power cable is attached. */
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 229 reg_val = !!(inb(priv->plat->pwr_reg_offset) & BIT(index %
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 230 priv->plat->pwr_count));
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 231 break;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 232
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 233 case MLXREG_HOTPLUG_ATTR_TYPE_FAN:
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 234 /* Bit = 0 : FAN is present. */
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 235 reg_val = !!!(inb(priv->plat->fan_reg_offset) & BIT(index %
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 236 priv->plat->fan_count));
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 237 break;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 238 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 239
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 240 return sprintf(buf, "%u\n", reg_val);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 241 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 242
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 243 #define PRIV_ATTR(i) priv->mlxreg_hotplug_attr[i]
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 244 #define PRIV_DEV_ATTR(i) priv->mlxreg_hotplug_dev_attr[i]
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 245 static int mlxreg_hotplug_attr_init(struct mlxreg_hotplug_priv_data *priv)
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 246 {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 247 int num_attrs = priv->plat->psu_count + priv->plat->pwr_count +
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 248 priv->plat->fan_count;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 249 int i;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 250
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 251 priv->group.attrs = devm_kzalloc(&priv->pdev->dev, num_attrs *
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 252 sizeof(struct attribute *),
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 253 GFP_KERNEL);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 254 if (!priv->group.attrs)
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 255 return -ENOMEM;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 256
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 257 for (i = 0; i < num_attrs; i++) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 258 PRIV_ATTR(i) = &PRIV_DEV_ATTR(i).dev_attr.attr;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 259
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 260 if (i < priv->plat->psu_count) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 261 PRIV_ATTR(i)->name = devm_kasprintf(&priv->pdev->dev,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 262 GFP_KERNEL, "psu%u", i + 1);
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 263 PRIV_DEV_ATTR(i).nr = MLXREG_HOTPLUG_ATTR_TYPE_PSU;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 264 } else if (i < priv->plat->psu_count + priv->plat->pwr_count) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 265 PRIV_ATTR(i)->name = devm_kasprintf(&priv->pdev->dev,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 266 GFP_KERNEL, "pwr%u", i %
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 267 priv->plat->pwr_count + 1);
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 268 PRIV_DEV_ATTR(i).nr = MLXREG_HOTPLUG_ATTR_TYPE_PWR;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 269 } else {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 270 PRIV_ATTR(i)->name = devm_kasprintf(&priv->pdev->dev,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 271 GFP_KERNEL, "fan%u", i %
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 272 priv->plat->fan_count + 1);
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 273 PRIV_DEV_ATTR(i).nr = MLXREG_HOTPLUG_ATTR_TYPE_FAN;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 274 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 275
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 276 if (!PRIV_ATTR(i)->name) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 277 dev_err(&priv->pdev->dev, "Memory allocation failed for sysfs attribute %d.\n",
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 278 i + 1);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 279 return -ENOMEM;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 280 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 281
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 282 PRIV_DEV_ATTR(i).dev_attr.attr.name = PRIV_ATTR(i)->name;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 283 PRIV_DEV_ATTR(i).dev_attr.attr.mode = S_IRUGO;
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 284 PRIV_DEV_ATTR(i).dev_attr.show = mlxreg_hotplug_attr_show;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 285 PRIV_DEV_ATTR(i).index = i;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 286 sysfs_attr_init(&PRIV_DEV_ATTR(i).dev_attr.attr);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 287 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 288
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 289 priv->group.attrs = priv->mlxreg_hotplug_attr;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 290 priv->groups[0] = &priv->group;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 291 priv->groups[1] = NULL;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 292
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 293 return 0;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 294 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 295
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 296 static inline void
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 297 mlxreg_hotplug_work_helper(struct device *dev,
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 298 struct mlxreg_hotplug_device *item, u8 is_inverse,
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 299 u16 offset, u8 mask, u8 *cache)
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 300 {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 301 u8 val, asserted;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 302 int bit;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 303
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 304 /* Mask event. */
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 @305 outb(0, offset + MLXREG_HOTPLUG_MASK_OFF);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 306 /* Read status. */
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 307 val = inb(offset) & mask;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 308 asserted = *cache ^ val;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 309 *cache = val;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 310
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 311 /*
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 312 * Validate if item related to received signal type is valid.
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 313 * It should never happen, excepted the situation when some
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 314 * piece of hardware is broken. In such situation just produce
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 315 * error message and return. Caller must continue to handle the
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 316 * signals from other devices if any.
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 317 */
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 318 if (unlikely(!item)) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 319 dev_err(dev, "False signal is received: register at offset 0x%02x, mask 0x%02x.\n",
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 320 offset, mask);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 321 return;
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 322 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 323
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 324 for_each_set_bit(bit, (unsigned long *)&asserted, 8) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 325 if (val & BIT(bit)) {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 326 if (is_inverse)
86a4f473 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 327 mlxreg_hotplug_dev_disable(item + bit);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 328 else
86a4f473 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 329 mlxreg_hotplug_dev_enable(item + bit);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 330 } else {
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 331 if (is_inverse)
86a4f473 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 332 mlxreg_hotplug_dev_enable(item + bit);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 333 else
86a4f473 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 334 mlxreg_hotplug_dev_disable(item + bit);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 335 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 336 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 337
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 338 /* Acknowledge event. */
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 339 outb(0, offset + MLXREG_HOTPLUG_EVENT_OFF);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 340 /* Unmask event. */
ebea1439 drivers/platform/mellanox/mlxreg-hotplug.c Vadim Pasternak 2017-12-18 341 outb(mask, offset + MLXREG_HOTPLUG_MASK_OFF);
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 342 }
30488704 drivers/platform/x86/mlxcpld-hotplug.c Vadim Pasternak 2016-10-20 343

:::::: The code at line 224 was first introduced by commit
:::::: 304887041d953b6692c0d4a9f8fafb252d32e9a0 platform/x86: Introduce support for Mellanox hotplug driver

:::::: TO: Vadim Pasternak <vadimp@xxxxxxxxxxxx>
:::::: CC: Darren Hart <dvhart@xxxxxxxxxxxxxxx>

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

Attachment: .config.gz
Description: application/gzip