Hi Stephen,

I love your patch! Yet something to improve:

[auto build test ERROR on e4e737bb5c170df6135a127739a9e6148ee3da82]

url:    
https://github.com/0day-ci/linux/commits/Stephen-Boyd/component-Make-into-an-aggregate-bus/20211007-034200
base:   e4e737bb5c170df6135a127739a9e6148ee3da82
config: hexagon-randconfig-r045-20211006 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
c0039de2953d15815448b4b3c3bafb45607781e0)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://github.com/0day-ci/linux/commit/b2ecd8598795ffcc3d4e766c4c4cc93865f3ff33
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Stephen-Boyd/component-Make-into-an-aggregate-bus/20211007-034200
        git checkout b2ecd8598795ffcc3d4e766c4c4cc93865f3ff33
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 
O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/base/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All errors (new ones prefixed by >>):

>> drivers/base/component.c:412:15: error: no member named 'ops' in 'struct 
>> aggregate_device'
           return adev->ops->bind(adev->parent);
                  ~~~~  ^
   drivers/base/component.c:417:8: error: no member named 'ops' in 'struct 
aggregate_device'
           adev->ops->unbind(adev->parent);
           ~~~~  ^
   drivers/base/component.c:488:13: error: incompatible function pointer types 
initializing 'void (*)(struct device *)' with an expression of type 'int 
(struct device *)' [-Werror,-Wincompatible-function-pointer-types]
           .remove         = aggregate_driver_remove,
                             ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/base/component.c:540:8: error: no member named 'ops' in 'struct 
aggregate_device'
           adev->ops = ops;
           ~~~~  ^
>> drivers/base/component.c:540:14: error: use of undeclared identifier 'ops'
           adev->ops = ops;
                       ^
>> drivers/base/component.c:572:50: error: too many arguments to function call, 
>> expected 3, have 4
           adev = aggregate_device_add(parent, NULL, adrv, match);
                  ~~~~~~~~~~~~~~~~~~~~                     ^~~~~
   drivers/base/component.c:514:33: note: 'aggregate_device_add' declared here
   static struct aggregate_device *aggregate_device_add(struct device *parent,
                                   ^
>> drivers/base/component.c:599:34: error: too many arguments to function call, 
>> expected single argument 'parent', have 2 arguments
           adev = __aggregate_find(parent, NULL);
                  ~~~~~~~~~~~~~~~~         ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
   #define NULL ((void *)0)
                ^~~~~~~~~~~
   drivers/base/component.c:493:33: note: '__aggregate_find' declared here
   static struct aggregate_device *__aggregate_find(struct device *parent)
                                   ^
   drivers/base/component.c:645:34: error: too many arguments to function call, 
expected single argument 'parent', have 2 arguments
           adev = __aggregate_find(parent, NULL);
                  ~~~~~~~~~~~~~~~~         ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
   #define NULL ((void *)0)
                ^~~~~~~~~~~
   drivers/base/component.c:493:33: note: '__aggregate_find' declared here
   static struct aggregate_device *__aggregate_find(struct device *parent)
                                   ^
   drivers/base/component.c:734:34: error: too many arguments to function call, 
expected single argument 'parent', have 2 arguments
           adev = __aggregate_find(parent, NULL);
                  ~~~~~~~~~~~~~~~~         ^~~~
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
   #define NULL ((void *)0)
                ^~~~~~~~~~~
   drivers/base/component.c:493:33: note: '__aggregate_find' declared here
   static struct aggregate_device *__aggregate_find(struct device *parent)
                                   ^
   9 errors generated.


vim +412 drivers/base/component.c

b7f12127fd97fe Stephen Boyd 2021-10-06  408  
b7f12127fd97fe Stephen Boyd 2021-10-06  409  /* TODO: Remove once all aggregate 
drivers use component_aggregate_register() */
b7f12127fd97fe Stephen Boyd 2021-10-06  410  static int 
component_probe_bind(struct aggregate_device *adev)
b7f12127fd97fe Stephen Boyd 2021-10-06  411  {
b7f12127fd97fe Stephen Boyd 2021-10-06 @412     return 
adev->ops->bind(adev->parent);
b7f12127fd97fe Stephen Boyd 2021-10-06  413  }
b7f12127fd97fe Stephen Boyd 2021-10-06  414  
b7f12127fd97fe Stephen Boyd 2021-10-06  415  static void 
component_remove_unbind(struct aggregate_device *adev)
b7f12127fd97fe Stephen Boyd 2021-10-06  416  {
b7f12127fd97fe Stephen Boyd 2021-10-06  417     adev->ops->unbind(adev->parent);
b7f12127fd97fe Stephen Boyd 2021-10-06  418  }
b7f12127fd97fe Stephen Boyd 2021-10-06  419  
b7f12127fd97fe Stephen Boyd 2021-10-06  420  static int 
aggregate_driver_probe(struct device *dev)
b7f12127fd97fe Stephen Boyd 2021-10-06  421  {
b7f12127fd97fe Stephen Boyd 2021-10-06  422     const struct aggregate_driver 
*adrv = to_aggregate_driver(dev->driver);
b7f12127fd97fe Stephen Boyd 2021-10-06  423     struct aggregate_device *adev = 
to_aggregate_device(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  424     bool modern = adrv->probe != 
component_probe_bind;
b7f12127fd97fe Stephen Boyd 2021-10-06  425     int ret;
b7f12127fd97fe Stephen Boyd 2021-10-06  426  
b7f12127fd97fe Stephen Boyd 2021-10-06  427     /* Only do runtime PM when 
drivers migrate */
b7f12127fd97fe Stephen Boyd 2021-10-06  428     if (modern) {
b7f12127fd97fe Stephen Boyd 2021-10-06  429             
pm_runtime_get_noresume(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  430             
pm_runtime_set_active(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  431             pm_runtime_enable(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  432     }
b7f12127fd97fe Stephen Boyd 2021-10-06  433  
b7f12127fd97fe Stephen Boyd 2021-10-06  434     mutex_lock(&component_mutex);
b7f12127fd97fe Stephen Boyd 2021-10-06  435     if 
(devres_open_group(adev->parent, NULL, GFP_KERNEL)) {
b7f12127fd97fe Stephen Boyd 2021-10-06  436             ret = adrv->probe(adev);
b7f12127fd97fe Stephen Boyd 2021-10-06  437             if (ret)
b7f12127fd97fe Stephen Boyd 2021-10-06  438                     
devres_release_group(adev->parent, NULL);
b7f12127fd97fe Stephen Boyd 2021-10-06  439     } else {
b7f12127fd97fe Stephen Boyd 2021-10-06  440             ret = -ENOMEM;
b7f12127fd97fe Stephen Boyd 2021-10-06  441     }
b7f12127fd97fe Stephen Boyd 2021-10-06  442     mutex_unlock(&component_mutex);
b7f12127fd97fe Stephen Boyd 2021-10-06  443  
b7f12127fd97fe Stephen Boyd 2021-10-06  444     if (ret && modern) {
b7f12127fd97fe Stephen Boyd 2021-10-06  445             pm_runtime_disable(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  446             
pm_runtime_set_suspended(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  447             
pm_runtime_put_noidle(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  448     }
b7f12127fd97fe Stephen Boyd 2021-10-06  449  
b7f12127fd97fe Stephen Boyd 2021-10-06  450     return ret;
b7f12127fd97fe Stephen Boyd 2021-10-06  451  }
b7f12127fd97fe Stephen Boyd 2021-10-06  452  
b7f12127fd97fe Stephen Boyd 2021-10-06  453  static int 
aggregate_driver_remove(struct device *dev)
b7f12127fd97fe Stephen Boyd 2021-10-06  454  {
b7f12127fd97fe Stephen Boyd 2021-10-06  455     const struct aggregate_driver 
*adrv = to_aggregate_driver(dev->driver);
b7f12127fd97fe Stephen Boyd 2021-10-06  456     struct aggregate_device *adev = 
to_aggregate_device(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  457     bool modern = adrv->remove != 
component_remove_unbind;
b7f12127fd97fe Stephen Boyd 2021-10-06  458  
b7f12127fd97fe Stephen Boyd 2021-10-06  459     /* Only do runtime PM when 
drivers migrate */
b7f12127fd97fe Stephen Boyd 2021-10-06  460     if (modern)
b7f12127fd97fe Stephen Boyd 2021-10-06  461             
pm_runtime_get_sync(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  462     
adrv->remove(to_aggregate_device(dev));
b7f12127fd97fe Stephen Boyd 2021-10-06  463     
devres_release_group(adev->parent, NULL);
b7f12127fd97fe Stephen Boyd 2021-10-06  464     if (!modern)
b7f12127fd97fe Stephen Boyd 2021-10-06  465             return 0;
b7f12127fd97fe Stephen Boyd 2021-10-06  466  
b7f12127fd97fe Stephen Boyd 2021-10-06  467     pm_runtime_put_noidle(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  468  
b7f12127fd97fe Stephen Boyd 2021-10-06  469     pm_runtime_disable(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  470     pm_runtime_set_suspended(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  471     pm_runtime_put_noidle(dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  472  
b7f12127fd97fe Stephen Boyd 2021-10-06  473     return 0;
b7f12127fd97fe Stephen Boyd 2021-10-06  474  }
b7f12127fd97fe Stephen Boyd 2021-10-06  475  
b7f12127fd97fe Stephen Boyd 2021-10-06  476  static void 
aggregate_driver_shutdown(struct device *dev)
b7f12127fd97fe Stephen Boyd 2021-10-06  477  {
b7f12127fd97fe Stephen Boyd 2021-10-06  478     const struct aggregate_driver 
*adrv = to_aggregate_driver(dev->driver);
b7f12127fd97fe Stephen Boyd 2021-10-06  479  
b7f12127fd97fe Stephen Boyd 2021-10-06  480     if (adrv && adrv->shutdown)
b7f12127fd97fe Stephen Boyd 2021-10-06  481             
adrv->shutdown(to_aggregate_device(dev));
b7f12127fd97fe Stephen Boyd 2021-10-06  482  }
b7f12127fd97fe Stephen Boyd 2021-10-06  483  
b7f12127fd97fe Stephen Boyd 2021-10-06  484  static struct bus_type 
aggregate_bus_type = {
b7f12127fd97fe Stephen Boyd 2021-10-06  485     .name           = "aggregate",
b7f12127fd97fe Stephen Boyd 2021-10-06  486     .match          = 
aggregate_device_match,
b7f12127fd97fe Stephen Boyd 2021-10-06  487     .probe          = 
aggregate_driver_probe,
b7f12127fd97fe Stephen Boyd 2021-10-06  488     .remove         = 
aggregate_driver_remove,
b7f12127fd97fe Stephen Boyd 2021-10-06  489     .shutdown       = 
aggregate_driver_shutdown,
b7f12127fd97fe Stephen Boyd 2021-10-06  490  };
b7f12127fd97fe Stephen Boyd 2021-10-06  491  
b7f12127fd97fe Stephen Boyd 2021-10-06  492  /* Callers take ownership of 
return value, should call put_device() */
b2ecd8598795ff Stephen Boyd 2021-10-06  493  static struct aggregate_device 
*__aggregate_find(struct device *parent)
b7f12127fd97fe Stephen Boyd 2021-10-06  494  {
b7f12127fd97fe Stephen Boyd 2021-10-06  495     struct device *dev;
b7f12127fd97fe Stephen Boyd 2021-10-06  496  
b2ecd8598795ff Stephen Boyd 2021-10-06  497     dev = 
bus_find_device(&aggregate_bus_type, NULL, parent,
b7f12127fd97fe Stephen Boyd 2021-10-06  498                           
aggregate_bus_find_match);
b7f12127fd97fe Stephen Boyd 2021-10-06  499  
b7f12127fd97fe Stephen Boyd 2021-10-06  500     return dev ? 
to_aggregate_device(dev) : NULL;
b7f12127fd97fe Stephen Boyd 2021-10-06  501  }
b7f12127fd97fe Stephen Boyd 2021-10-06  502  
b7f12127fd97fe Stephen Boyd 2021-10-06  503  static int 
aggregate_driver_register(struct aggregate_driver *adrv)
b7f12127fd97fe Stephen Boyd 2021-10-06  504  {
b7f12127fd97fe Stephen Boyd 2021-10-06  505     adrv->driver.bus = 
&aggregate_bus_type;
b7f12127fd97fe Stephen Boyd 2021-10-06  506     return 
driver_register(&adrv->driver);
b7f12127fd97fe Stephen Boyd 2021-10-06  507  }
b7f12127fd97fe Stephen Boyd 2021-10-06  508  
b7f12127fd97fe Stephen Boyd 2021-10-06  509  static void 
aggregate_driver_unregister(struct aggregate_driver *adrv)
b7f12127fd97fe Stephen Boyd 2021-10-06  510  {
b7f12127fd97fe Stephen Boyd 2021-10-06  511     
driver_unregister(&adrv->driver);
b7f12127fd97fe Stephen Boyd 2021-10-06  512  }
b7f12127fd97fe Stephen Boyd 2021-10-06  513  
b7f12127fd97fe Stephen Boyd 2021-10-06  514  static struct aggregate_device 
*aggregate_device_add(struct device *parent,
b2ecd8598795ff Stephen Boyd 2021-10-06  515     struct aggregate_driver *adrv,
6955b58254c2bc Russell King 2014-04-19  516     struct component_match *match)
2a41e6070dd7ef Russell King 2014-01-10  517  {
0b7b1dfac42590 Stephen Boyd 2021-10-06  518     struct aggregate_device *adev;
0b7b1dfac42590 Stephen Boyd 2021-10-06  519     int ret, id;
2a41e6070dd7ef Russell King 2014-01-10  520  
6955b58254c2bc Russell King 2014-04-19  521     /* Reallocate the match array 
for its true size */
82769cc671b6dd Stephen Boyd 2021-05-19  522     ret = 
component_match_realloc(match, match->num);
ce657b1cddf1f8 Russell King 2015-11-17  523     if (ret)
b7f12127fd97fe Stephen Boyd 2021-10-06  524             return ERR_PTR(ret);
6955b58254c2bc Russell King 2014-04-19  525  
0b7b1dfac42590 Stephen Boyd 2021-10-06  526     adev = kzalloc(sizeof(*adev), 
GFP_KERNEL);
0b7b1dfac42590 Stephen Boyd 2021-10-06  527     if (!adev)
b7f12127fd97fe Stephen Boyd 2021-10-06  528             return ERR_PTR(-ENOMEM);
2a41e6070dd7ef Russell King 2014-01-10  529  
0b7b1dfac42590 Stephen Boyd 2021-10-06  530     id = ida_alloc(&aggregate_ida, 
GFP_KERNEL);
0b7b1dfac42590 Stephen Boyd 2021-10-06  531     if (id < 0) {
0b7b1dfac42590 Stephen Boyd 2021-10-06  532             kfree(adev);
b7f12127fd97fe Stephen Boyd 2021-10-06  533             return ERR_PTR(id);
0b7b1dfac42590 Stephen Boyd 2021-10-06  534     }
0b7b1dfac42590 Stephen Boyd 2021-10-06  535  
0b7b1dfac42590 Stephen Boyd 2021-10-06  536     adev->id = id;
0b7b1dfac42590 Stephen Boyd 2021-10-06  537     adev->parent = parent;
b7f12127fd97fe Stephen Boyd 2021-10-06  538     adev->dev.bus = 
&aggregate_bus_type;
b7f12127fd97fe Stephen Boyd 2021-10-06  539     adev->dev.release = 
aggregate_device_release;
0b7b1dfac42590 Stephen Boyd 2021-10-06 @540     adev->ops = ops;
0b7b1dfac42590 Stephen Boyd 2021-10-06  541     adev->match = match;
b7f12127fd97fe Stephen Boyd 2021-10-06  542     adev->adrv = adrv;
0b7b1dfac42590 Stephen Boyd 2021-10-06  543     dev_set_name(&adev->dev, 
"aggregate%d", id);
2a41e6070dd7ef Russell King 2014-01-10  544  
b7f12127fd97fe Stephen Boyd 2021-10-06  545     ret = 
device_register(&adev->dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  546     if (ret) {
b7f12127fd97fe Stephen Boyd 2021-10-06  547             put_device(&adev->dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  548             return ERR_PTR(ret);
b7f12127fd97fe Stephen Boyd 2021-10-06  549     }
b7f12127fd97fe Stephen Boyd 2021-10-06  550  
0b7b1dfac42590 Stephen Boyd 2021-10-06  551     
component_master_debugfs_add(adev);
2a41e6070dd7ef Russell King 2014-01-10  552  
b7f12127fd97fe Stephen Boyd 2021-10-06  553     return adev;
b7f12127fd97fe Stephen Boyd 2021-10-06  554  }
2a41e6070dd7ef Russell King 2014-01-10  555  
b7f12127fd97fe Stephen Boyd 2021-10-06  556  /**
b7f12127fd97fe Stephen Boyd 2021-10-06  557   * component_aggregate_register - 
register an aggregate driver
b7f12127fd97fe Stephen Boyd 2021-10-06  558   * @parent: parent device of the 
aggregate driver
b7f12127fd97fe Stephen Boyd 2021-10-06  559   * @adrv: aggregate driver to 
register
b7f12127fd97fe Stephen Boyd 2021-10-06  560   *
b7f12127fd97fe Stephen Boyd 2021-10-06  561   * Registers a new aggregate 
driver consisting of the components added to @adrv.match
b7f12127fd97fe Stephen Boyd 2021-10-06  562   * by calling one of the 
component_match_add() functions. Once all components in
b7f12127fd97fe Stephen Boyd 2021-10-06  563   * @match are available, the 
aggregate driver will be assembled by calling
b7f12127fd97fe Stephen Boyd 2021-10-06  564   * &adrv.bind. Must be 
unregistered by calling component_aggregate_unregister().
b7f12127fd97fe Stephen Boyd 2021-10-06  565   */
b7f12127fd97fe Stephen Boyd 2021-10-06  566  int 
component_aggregate_register(struct device *parent,
b7f12127fd97fe Stephen Boyd 2021-10-06  567     struct aggregate_driver *adrv, 
struct component_match *match)
b7f12127fd97fe Stephen Boyd 2021-10-06  568  {
b7f12127fd97fe Stephen Boyd 2021-10-06  569     struct aggregate_device *adev;
b7f12127fd97fe Stephen Boyd 2021-10-06  570     int ret;
b7f12127fd97fe Stephen Boyd 2021-10-06  571  
b7f12127fd97fe Stephen Boyd 2021-10-06 @572     adev = 
aggregate_device_add(parent, NULL, adrv, match);
b7f12127fd97fe Stephen Boyd 2021-10-06  573     if (IS_ERR(adev))
b7f12127fd97fe Stephen Boyd 2021-10-06  574             return PTR_ERR(adev);
b7f12127fd97fe Stephen Boyd 2021-10-06  575  
b7f12127fd97fe Stephen Boyd 2021-10-06  576     ret = 
aggregate_driver_register(adrv);
b7f12127fd97fe Stephen Boyd 2021-10-06  577     if (ret)
b7f12127fd97fe Stephen Boyd 2021-10-06  578             put_device(&adev->dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  579  
b7f12127fd97fe Stephen Boyd 2021-10-06  580     return ret;
b7f12127fd97fe Stephen Boyd 2021-10-06  581  }
b7f12127fd97fe Stephen Boyd 2021-10-06  582  
EXPORT_SYMBOL_GPL(component_aggregate_register);
b7f12127fd97fe Stephen Boyd 2021-10-06  583  
b7f12127fd97fe Stephen Boyd 2021-10-06  584  /**
b7f12127fd97fe Stephen Boyd 2021-10-06  585   * component_aggregate_unregister 
- unregister an aggregate driver
b7f12127fd97fe Stephen Boyd 2021-10-06  586   * @parent: parent device of the 
aggregate driver
b7f12127fd97fe Stephen Boyd 2021-10-06  587   * @adrv: registered aggregate 
driver
b7f12127fd97fe Stephen Boyd 2021-10-06  588   *
b7f12127fd97fe Stephen Boyd 2021-10-06  589   * Unregisters an aggregate driver 
registered with
b7f12127fd97fe Stephen Boyd 2021-10-06  590   * component_aggregate_register(). 
If necessary the aggregate driver is first
b7f12127fd97fe Stephen Boyd 2021-10-06  591   * disassembled.
b7f12127fd97fe Stephen Boyd 2021-10-06  592   */
b7f12127fd97fe Stephen Boyd 2021-10-06  593  void 
component_aggregate_unregister(struct device *parent,
b7f12127fd97fe Stephen Boyd 2021-10-06  594     struct aggregate_driver *adrv)
b7f12127fd97fe Stephen Boyd 2021-10-06  595  {
b7f12127fd97fe Stephen Boyd 2021-10-06  596     struct aggregate_device *adev;
b7f12127fd97fe Stephen Boyd 2021-10-06  597  
b7f12127fd97fe Stephen Boyd 2021-10-06  598     mutex_lock(&component_mutex);
b7f12127fd97fe Stephen Boyd 2021-10-06 @599     adev = __aggregate_find(parent, 
NULL);
b7f12127fd97fe Stephen Boyd 2021-10-06  600     mutex_unlock(&component_mutex);
b7f12127fd97fe Stephen Boyd 2021-10-06  601  
b7f12127fd97fe Stephen Boyd 2021-10-06  602     if (adev)
b7f12127fd97fe Stephen Boyd 2021-10-06  603             
device_unregister(&adev->dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  604     put_device(&adev->dev);
b7f12127fd97fe Stephen Boyd 2021-10-06  605  
b7f12127fd97fe Stephen Boyd 2021-10-06  606     
aggregate_driver_unregister(adrv);
b7f12127fd97fe Stephen Boyd 2021-10-06  607  }
b7f12127fd97fe Stephen Boyd 2021-10-06  608  
EXPORT_SYMBOL_GPL(component_aggregate_unregister);
b7f12127fd97fe Stephen Boyd 2021-10-06  609  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to