drivers/net/wireless/mediatek/mt76/mt76x02.h:249:2: note: in expansion of macro 'if'
by kernel test robot
Hi Ryder,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 625d3449788f85569096780592549d0340e9c0c7
commit: 49e649c3e0a6ec8a12976e331a2c1f29dc7dd3a9 mt76: adjust wcid size to support new 802.11ax generation
date: 6 weeks ago
config: x86_64-randconfig-a003-20200622 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
git checkout 49e649c3e0a6ec8a12976e331a2c1f29dc7dd3a9
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
In file included from include/linux/export.h:43,
from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from include/linux/list.h:9,
from include/linux/module.h:12,
from drivers/net/wireless/mediatek/mt76/mt76x02_util.c:7:
drivers/net/wireless/mediatek/mt76/mt76x02.h: In function 'mt76x02_rx_get_sta':
drivers/net/wireless/mediatek/mt76/mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
69 | (cond) ? | ^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~~~~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
--
In file included from include/linux/export.h:43,
from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from drivers/net/wireless/mediatek/mt76/mt76x0/pci.c:6:
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h: In function 'mt76x02_rx_get_sta':
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
69 | (cond) ? | ^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~~~~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
--
In file included from include/linux/export.h:43,
from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from drivers/net/wireless/mediatek/mt76/mt76x0/phy.c:9:
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h: In function 'mt76x02_rx_get_sta':
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
include/linux/compiler.h:69:3: note: in definition of macro '__trace_if_value'
69 | (cond) ? | ^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~~~~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt76x0/../mt76x02.h:249:2: note: in expansion of macro 'if'
249 | if (idx >= ARRAY_SIZE(dev->wcid))
| ^~
In file included from drivers/net/wireless/mediatek/mt76/mt76x0/phy.c:16:
At top level:
drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h:218:35: warning: 'mt76x0_dcoc_tab' defined but not used [-Wunused-const-variable=]
218 | static const struct mt76_reg_pair mt76x0_dcoc_tab[] = {
| ^~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h:86:35: warning: 'mt76x0_bbp_init_tab' defined but not used [-Wunused-const-variable=]
86 | static const struct mt76_reg_pair mt76x0_bbp_init_tab[] = {
| ^~~~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h:48:35: warning: 'mt76x0_mac_reg_table' defined but not used [-Wunused-const-variable=]
48 | static const struct mt76_reg_pair mt76x0_mac_reg_table[] = {
| ^~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt76x0/initvals.h:14:35: warning: 'common_mac_reg_table' defined but not used [-Wunused-const-variable=]
14 | static const struct mt76_reg_pair common_mac_reg_table[] = {
| ^~~~~~~~~~~~~~~~~~~~
vim +/if +249 drivers/net/wireless/mediatek/mt76/mt76x02.h
713224164b5dfb drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-09-28 243
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 244 static inline struct mt76x02_sta *
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 245 mt76x02_rx_get_sta(struct mt76_dev *dev, u8 idx)
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 246 {
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 247 struct mt76_wcid *wcid;
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 248
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 @249 if (idx >= ARRAY_SIZE(dev->wcid))
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 250 return NULL;
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 251
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 252 wcid = rcu_dereference(dev->wcid[idx]);
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 253 if (!wcid)
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 254 return NULL;
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 255
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 256 return container_of(wcid, struct mt76x02_sta, wcid);
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 257 }
56e8d4dd5ce24c drivers/net/wireless/mediatek/mt76/mt76x02_util.h Lorenzo Bianconi 2018-10-04 258
:::::: The code at line 249 was first introduced by commit
:::::: 56e8d4dd5ce24cf534114c67de33861e86501981 mt76: move mt76x02_rx_get_sta and mt76x02_rx_get_sta_wcid in mt76x02_util.h
:::::: TO: Lorenzo Bianconi <lorenzo.bianconi(a)redhat.com>
:::::: CC: Felix Fietkau <nbd(a)nbd.name>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH v1] dmaengine: acpi: Drop double check for ACPI companion device
by kernel test robot
Hi Andy,
I love your patch! Perhaps something to improve:
[auto build test WARNING on slave-dma/next]
[also build test WARNING on linus/master v5.8-rc2 next-20200622]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/dmaengine-acpi-D...
base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma.git next
config: x86_64-randconfig-s022-20200622 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-dirty
# save the attached .config to linux build tree
make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/dma/acpi-dma.c:380:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected struct dma_chan * @@ got int [assigned] ret @@
drivers/dma/acpi-dma.c:380:24: sparse: expected struct dma_chan *
drivers/dma/acpi-dma.c:380:24: sparse: got int [assigned] ret
>> drivers/dma/acpi-dma.c:380:24: sparse: sparse: non size-preserving integer to pointer cast
vim +380 drivers/dma/acpi-dma.c
347
348 /**
349 * acpi_dma_request_slave_chan_by_index - Get the DMA slave channel
350 * @dev: struct device to get DMA request from
351 * @index: index of FixedDMA descriptor for @dev
352 *
353 * Return:
354 * Pointer to appropriate dma channel on success or an error pointer.
355 */
356 struct dma_chan *acpi_dma_request_slave_chan_by_index(struct device *dev,
357 size_t index)
358 {
359 struct acpi_dma_parser_data pdata;
360 struct acpi_dma_spec *dma_spec = &pdata.dma_spec;
361 struct acpi_device *adev = ACPI_COMPANION(dev);
362 struct list_head resource_list;
363 struct acpi_dma *adma;
364 struct dma_chan *chan = NULL;
365 int found;
366 int ret;
367
368 memset(&pdata, 0, sizeof(pdata));
369 pdata.index = index;
370
371 /* Initial values for the request line and channel */
372 dma_spec->chan_id = -1;
373 dma_spec->slave_id = -1;
374
375 INIT_LIST_HEAD(&resource_list);
376 ret = acpi_dev_get_resources(adev, &resource_list,
377 acpi_dma_parse_fixed_dma, &pdata);
378 acpi_dev_free_resource_list(&resource_list);
379 if (ret < 0)
> 380 return ret;
381
382 if (dma_spec->slave_id < 0 || dma_spec->chan_id < 0)
383 return ERR_PTR(-ENODEV);
384
385 mutex_lock(&acpi_dma_lock);
386
387 list_for_each_entry(adma, &acpi_dma_list, dma_controllers) {
388 /*
389 * We are not going to call translation function if slave_id
390 * doesn't fall to the request range.
391 */
392 found = acpi_dma_update_dma_spec(adma, dma_spec);
393 if (found < 0)
394 continue;
395 chan = adma->acpi_dma_xlate(dma_spec, adma);
396 /*
397 * Try to get a channel only from the DMA controller that
398 * matches the slave_id. See acpi_dma_update_dma_spec()
399 * description for the details.
400 */
401 if (found > 0 || chan)
402 break;
403 }
404
405 mutex_unlock(&acpi_dma_lock);
406 return chan ? chan : ERR_PTR(-EPROBE_DEFER);
407 }
408 EXPORT_SYMBOL_GPL(acpi_dma_request_slave_chan_by_index);
409
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH v1] dmaengine: acpi: Drop double check for ACPI companion device
by kernel test robot
Hi Andy,
I love your patch! Perhaps something to improve:
[auto build test WARNING on slave-dma/next]
[also build test WARNING on linus/master v5.8-rc2 next-20200622]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/dmaengine-acpi-D...
base: https://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma.git next
config: i386-randconfig-s002-20200622 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-dirty
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/dma/acpi-dma.c:380:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected struct dma_chan * @@ got int [assigned] ret @@
>> drivers/dma/acpi-dma.c:380:24: sparse: expected struct dma_chan *
>> drivers/dma/acpi-dma.c:380:24: sparse: got int [assigned] ret
vim +380 drivers/dma/acpi-dma.c
347
348 /**
349 * acpi_dma_request_slave_chan_by_index - Get the DMA slave channel
350 * @dev: struct device to get DMA request from
351 * @index: index of FixedDMA descriptor for @dev
352 *
353 * Return:
354 * Pointer to appropriate dma channel on success or an error pointer.
355 */
356 struct dma_chan *acpi_dma_request_slave_chan_by_index(struct device *dev,
357 size_t index)
358 {
359 struct acpi_dma_parser_data pdata;
360 struct acpi_dma_spec *dma_spec = &pdata.dma_spec;
361 struct acpi_device *adev = ACPI_COMPANION(dev);
362 struct list_head resource_list;
363 struct acpi_dma *adma;
364 struct dma_chan *chan = NULL;
365 int found;
366 int ret;
367
368 memset(&pdata, 0, sizeof(pdata));
369 pdata.index = index;
370
371 /* Initial values for the request line and channel */
372 dma_spec->chan_id = -1;
373 dma_spec->slave_id = -1;
374
375 INIT_LIST_HEAD(&resource_list);
376 ret = acpi_dev_get_resources(adev, &resource_list,
377 acpi_dma_parse_fixed_dma, &pdata);
378 acpi_dev_free_resource_list(&resource_list);
379 if (ret < 0)
> 380 return ret;
381
382 if (dma_spec->slave_id < 0 || dma_spec->chan_id < 0)
383 return ERR_PTR(-ENODEV);
384
385 mutex_lock(&acpi_dma_lock);
386
387 list_for_each_entry(adma, &acpi_dma_list, dma_controllers) {
388 /*
389 * We are not going to call translation function if slave_id
390 * doesn't fall to the request range.
391 */
392 found = acpi_dma_update_dma_spec(adma, dma_spec);
393 if (found < 0)
394 continue;
395 chan = adma->acpi_dma_xlate(dma_spec, adma);
396 /*
397 * Try to get a channel only from the DMA controller that
398 * matches the slave_id. See acpi_dma_update_dma_spec()
399 * description for the details.
400 */
401 if (found > 0 || chan)
402 break;
403 }
404
405 mutex_unlock(&acpi_dma_lock);
406 return chan ? chan : ERR_PTR(-EPROBE_DEFER);
407 }
408 EXPORT_SYMBOL_GPL(acpi_dma_request_slave_chan_by_index);
409
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [RESEND PATCH v27 11/15] leds: lp55xx: Add multicolor framework support to lp55xx
by Dan Murphy
Jacek
On 6/21/20 3:24 PM, Jacek Anaszewski wrote:
> Dan,
>
> On 6/21/20 4:12 PM, Dan Murphy wrote:
>> Jacek
>>
>> On 6/19/20 5:10 PM, Jacek Anaszewski wrote:
>>> Dan,
>>>
>>> On 6/19/20 6:35 PM, Dan Murphy wrote:
>>>> Jacek
>>>>
>>>> On 6/18/20 6:26 PM, Jacek Anaszewski wrote:
>>>>> On 6/19/20 12:09 AM, Jacek Anaszewski wrote:
>>>>>> Dan,
>>>>>>
>>>>>> On 6/18/20 11:44 PM, Dan Murphy wrote:
>>>>>>> Jacek
>>>>>>>
>>>>>>> On 6/18/20 4:21 PM, Jacek Anaszewski wrote:
>>>>>>>> Dan,
>>>>>>>>
>>>>>>>> On 6/18/20 12:33 AM, Dan Murphy wrote:
>>>>>>>>> Jacek
>>>>>>>>>
>>>>>>>>> On 6/17/20 4:41 PM, Jacek Anaszewski wrote:
>>>>>>>>>> Dan,
>>>>>>>>>>
>>>>>>>>>> On 6/17/20 9:22 PM, Dan Murphy wrote:
>>>>>>>>>>> Pavel/Jacek
>>>>>>>>>>>
>>>>>>>>>>> On 6/17/20 11:28 AM, kernel test robot wrote:
>>>>>>>>>>>> Hi Dan,
>>>>>>>>>>>>
>>>>>>>>>>>> I love your patch! Yet something to improve:
>>>>>>>>>>>>
>>>>>>>>>>>> [auto build test ERROR on pavel-linux-leds/for-next]
>>>>>>>>>>>> [cannot apply to j.anaszewski-leds/for-next]
>>>>>>>>>>>> [if your patch is applied to the wrong git tree, please
>>>>>>>>>>>> drop us a note to help
>>>>>>>>>>>> improve the system. BTW, we also suggest to use '--base'
>>>>>>>>>>>> option to specify the
>>>>>>>>>>>> base tree in git format-patch, please see
>>>>>>>>>>>> https://stackoverflow.com/a/37406982]
>>>>>>>>>>>>
>>>>>>>>>>>> url:
>>>>>>>>>>>> https://github.com/0day-ci/linux/commits/Dan-Murphy/Multicolor-Framework-...
>>>>>>>>>>>>
>>>>>>>>>>>> base:
>>>>>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
>>>>>>>>>>>> for-next
>>>>>>>>>>>> config: ia64-randconfig-r015-20200617 (attached as .config)
>>>>>>>>>>>> compiler: ia64-linux-gcc (GCC) 9.3.0
>>>>>>>>>>>> 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
>>>>>>>>>>>> # save the attached .config to linux build tree
>>>>>>>>>>>> COMPILER_INSTALL_PATH=$HOME/0day
>>>>>>>>>>>> COMPILER=gcc-9.3.0 make.cross ARCH=ia64
>>>>>>>>>>>>
>>>>>>>>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>>>>>>>>> Reported-by: kernel test robot <lkp(a)intel.com>
>>>>>>>>>>>>
>>>>>>>>>>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>>>>>>>>>>
>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in
>>>>>>>>>>>> function `lp55xx_set_mc_brightness':
>>>>>>>>>>>>>> drivers/leds/leds-lp55xx-common.c:146: undefined
>>>>>>>>>>>>>> reference to `led_mc_calc_color_components'
>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in
>>>>>>>>>>>> function `devm_led_classdev_multicolor_register':
>>>>>>>>>>>>>> include/linux/led-class-multicolor.h:74: undefined
>>>>>>>>>>>>>> reference to `devm_led_classdev_multicolor_register_ext'
>>>>>>>>>>>> vim +146 drivers/leds/leds-lp55xx-common.c
>>>>>>>>>>>>
>>>>>>>>>>>> 138
>>>>>>>>>>>> 139 static int lp55xx_set_mc_brightness(struct
>>>>>>>>>>>> led_classdev *cdev,
>>>>>>>>>>>> 140 enum led_brightness brightness)
>>>>>>>>>>>> 141 {
>>>>>>>>>>>> 142 struct led_classdev_mc *mc_dev =
>>>>>>>>>>>> lcdev_to_mccdev(cdev);
>>>>>>>>>>>> 143 struct lp55xx_led *led =
>>>>>>>>>>>> mcled_cdev_to_led(mc_dev);
>>>>>>>>>>>> 144 struct lp55xx_device_config *cfg =
>>>>>>>>>>>> led->chip->cfg;
>>>>>>>>>>>> 145
>>>>>>>>>>>> > 146 led_mc_calc_color_components(&led->mc_cdev,
>>>>>>>>>>>> brightness);
>>>>>>>>>>>> 147 return cfg->multicolor_brightness_fn(led);
>>>>>>>>>>>> 148
>>>>>>>>>>>
>>>>>>>>>>> Well this was a mess to figure out.
>>>>>>>>>>>
>>>>>>>>>>> The only fix I can figure out here is to remove the
>>>>>>>>>>>
>>>>>>>>>>> depends on LEDS_CLASS_MULTI_COLOR ||
>>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>
>>>>>>>>>>> from each child device and add
>>>>>>>>>>>
>>>>>>>>>>> select LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>
>>>>>>>>>>> to the LP55XX_COMMON
>>>>>>>>>>>
>>>>>>>>>>> This way the Multi color framework will inherit the symbol
>>>>>>>>>>> that was set by the COMMON flag which is inherited by
>>>>>>>>>>> majority from the child flags.
>>>>>>>>>>
>>>>>>>>>> Did you try this?
>>>>>>>>>>
>>>>>>>>>> --- a/drivers/leds/Kconfig
>>>>>>>>>> +++ b/drivers/leds/Kconfig
>>>>>>>>>> @@ -398,6 +398,7 @@ config LEDS_LP50XX
>>>>>>>>>> config LEDS_LP55XX_COMMON
>>>>>>>>>> tristate "Common Driver for TI/National
>>>>>>>>>> LP5521/5523/55231/5562/8501"
>>>>>>>>>> depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562
>>>>>>>>>> || LEDS_LP8501
>>>>>>>>>> + depends on LEDS_CLASS_MULTI_COLOR ||
>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>> depends on OF
>>>>>>>>>> select FW_LOADER
>>>>>>>>>> select FW_LOADER_USER_HELPER
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Yes I did
>>>>>>>>>
>>>>>>>>> That gave unmet dependencies.
>>>>>>>>>
>>>>>>>>> WARNING: unmet direct dependencies detected for
>>>>>>>>> LEDS_LP55XX_COMMON
>>>>>>>>> Depends on [m]: NEW_LEDS [=y] && (LEDS_LP5521 [=n] ||
>>>>>>>>> LEDS_LP5523 [=m] || LEDS_LP5562 [=y] || LEDS_LP8501 [=y]) &&
>>>>>>>>> (LEDS_CLASS_MULTI_COLOR [=m] || !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>>>>> && OF [=y]
>>>>>>>>> Selected by [y]:
>>>>>>>>> - LEDS_LP5562 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>> I2C [=y]
>>>>>>>>> - LEDS_LP8501 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>> I2C [=y]
>>>>>>>>> Selected by [m]:
>>>>>>>>> - LEDS_LP5523 [=m] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>> I2C [=y] && (LEDS_CLASS_MULTI_COLOR [=m] ||
>>>>>>>>> !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>>>>>
>>>>>>>>
>>>>>>>> When I was testing that yesterday I also had the same warning
>>>>>>>> at some
>>>>>>>> point of testing different Kconfig setups, but with what I
>>>>>>>> showed above
>>>>>>>> it ceased to appear. Now every time I am doing "make oldconfig"
>>>>>>>> the
>>>>>>>> CONFIG_LEDS_LP55XX_COMMON=y entry gets changed to =m with the
>>>>>>>> config
>>>>>>>> from the test bot.
>>>>>>>>
>>>>>>> That is not what I saw in my testing especially after doing a
>>>>>>> distclean
>>>>>>
>>>>>> Could you please give your exact steps after "make distclean" and
>>>>>> copying test bot config to the kernel root directory?
>>>>>>
>>>>>> Also, please share the toolchain you're using for tests.
>>>>>
>>>>> Actually at this stage the toolchain is of lesser relevance.
>>>>>
>>>>> I've tried once more and indeed the problem shows up.
>>>>>
>>>>> It is caused by the driver entries doing
>>>>>
>>>>> "select LEDS_LP55XX_COMMON".
>>>>>
>>>>> Select sets config to "y" so it conflicts with
>>>>> "depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR"
>>>>> in the "config LEDS_LP55XX_COMMON".
>>>>>
>>>>> Your proposed fix will block the possibility of building
>>>>> LED_CLASS_MULTI_COLOR as a module when LP55XX drivers
>>>>> are enabled so this is also not an option.
>>>>>
>>>>> Solving this riddle will require some more thinking.
>>>>> I haven't analyzed it in detail but maybe "imply" statement from
>>>>> kconfig-language.rst could help somehow here.
>>>>
>>>> The multicolor framework will build as a module if the LED_CLASS is
>>>> defined as a module.
>>>>
>>>> See attached test_defconfig
>>>
>>> But it will be impossible to enable CONFIG_LEDS_LP50XX without
>>> CONFIG_LEDS_CLASS_MULTI_COLOR if you will remove
>>>
>>> depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR.
>>>
>> I was not removing the dependency for the LP50xx only the LP55xx.
>
> It was my typo, I meant LP55XX.
>
>>
>>> This is actually why the above entry was needed.
>>>
>>> LP55XX drivers have to work also without multicolor class.
>>>
>> Well I am not sure how else to resolve this problem. Because the
>> LP55xx has multi level dependencies.
>>
>> Only the LP55xx_common has the dependency on the MC framework. The
>> device drivers do not.
>>
>> The issue is the mixing and matching of the MC fw as a module vs the
>> LP55XX_COMMON as a built-in.
>
> The simplest solution is to avoid selecting LP55XX_COMMON in favor
> of making child drivers depending on it. Of course, maybe there exists
> some trickier option to keep the selection, but I would have to play
> a bit more with it to be sure.
>
That actually makes more sense then what is there now.
The children depend on the COMMON and the COMMON depends on the MC.
Not sure why select was used originally.
But this will prompt another patch to update the u8500_defconfig to
include the common.
Dan
2 years, 3 months
drivers/video/fbdev/sstfb.c:337:23: sparse: expected void certs drivers fs samples scripts tools
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 625d3449788f85569096780592549d0340e9c0c7
commit: 80591e61a0f7e88deaada69844e4a31280c4a38f kbuild: tell sparse about the $ARCH
date: 7 months ago
config: s390-randconfig-s032-20200622 (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-dirty
git checkout 80591e61a0f7e88deaada69844e4a31280c4a38f
# save the attached .config to linux build tree
make W=1 C=1 ARCH=s390 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/video/fbdev/sstfb.c:337:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *s @@ got char [noderef] <asn:2> *screen_base @@
>> drivers/video/fbdev/sstfb.c:337:23: sparse: expected void *s
drivers/video/fbdev/sstfb.c:337:23: sparse: got char [noderef] <asn:2> *screen_base
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:179:15: sparse: sparse: cast to restricted __le32
include/asm-generic/io.h:225:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __le32 [usertype] @@
include/asm-generic/io.h:225:22: sparse: expected unsigned int [usertype] val
include/asm-generic/io.h:225:22: sparse: got restricted __le32 [usertype]
vim +337 drivers/video/fbdev/sstfb.c
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 330
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 331 /*
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 332 * clear lfb screen
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 333 */
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 334 static void sstfb_clear_screen(struct fb_info *info)
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 335 {
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 336 /* clear screen */
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 @337 fb_memset(info->screen_base, 0, info->fix.smem_len);
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 338 }
^1da177e4c3f41 drivers/video/sstfb.c Linus Torvalds 2005-04-16 339
:::::: The code at line 337 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds(a)ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds(a)ppc970.osdl.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
include/asm-generic/qspinlock.h:94:9: sparse: sparse: context imbalance in 'tcp_get_cookie_sock' - unexpected unlock
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 625d3449788f85569096780592549d0340e9c0c7
commit: f566e1fbadb686e28f1c307e356114b2865ef588 kbuild: make multiple directory targets work
date: 5 months ago
config: openrisc-randconfig-s031-20200622 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-dirty
git checkout f566e1fbadb686e28f1c307e356114b2865ef588
# save the attached .config to linux build tree
make W=1 C=1 ARCH=openrisc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> include/asm-generic/qspinlock.h:94:9: sparse: sparse: context imbalance in 'tcp_get_cookie_sock' - unexpected unlock
vim +/tcp_get_cookie_sock +94 include/asm-generic/qspinlock.h
a33fda35e3a765 Waiman Long 2015-04-24 83
a33fda35e3a765 Waiman Long 2015-04-24 84 #ifndef queued_spin_unlock
a33fda35e3a765 Waiman Long 2015-04-24 85 /**
a33fda35e3a765 Waiman Long 2015-04-24 86 * queued_spin_unlock - release a queued spinlock
a33fda35e3a765 Waiman Long 2015-04-24 87 * @lock : Pointer to queued spinlock structure
a33fda35e3a765 Waiman Long 2015-04-24 88 */
a33fda35e3a765 Waiman Long 2015-04-24 89 static __always_inline void queued_spin_unlock(struct qspinlock *lock)
a33fda35e3a765 Waiman Long 2015-04-24 90 {
a33fda35e3a765 Waiman Long 2015-04-24 91 /*
ca50e426f96c90 Pan Xinhui 2016-06-03 92 * unlock() needs release semantics:
a33fda35e3a765 Waiman Long 2015-04-24 93 */
626e5fbc143589 Will Deacon 2018-04-26 @94 smp_store_release(&lock->locked, 0);
a33fda35e3a765 Waiman Long 2015-04-24 95 }
a33fda35e3a765 Waiman Long 2015-04-24 96 #endif
a33fda35e3a765 Waiman Long 2015-04-24 97
:::::: The code at line 94 was first introduced by commit
:::::: 626e5fbc14358901ddaa90ce510e0fbeab310432 locking/qspinlock: Use smp_store_release() in queued_spin_unlock()
:::::: TO: Will Deacon <will.deacon(a)arm.com>
:::::: CC: Ingo Molnar <mingo(a)kernel.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [PATCH 1/2] net: phy: export phy_disable_interrupts()
by kernel test robot
Hi Jisheng,
I love your patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.8-rc2 next-20200622]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Jisheng-Zhang/net-phy-call-phy_d...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 625d3449788f85569096780592549d0340e9c0c7
config: um-allmodconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=um
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
cc1: warning: arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs]
In file included from include/linux/uaccess.h:11,
from include/linux/crypto.h:21,
from include/crypto/hash.h:11,
from include/linux/uio.h:10,
from include/linux/socket.h:8,
from include/linux/compat.h:15,
from include/linux/ethtool.h:17,
from include/linux/netdevice.h:37,
from drivers/net/phy/phy.c:17:
arch/um/include/asm/uaccess.h: In function '__access_ok':
arch/um/include/asm/uaccess.h:17:29: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
17 | (((unsigned long) (addr) >= FIXADDR_USER_START) && \
| ^~
arch/um/include/asm/uaccess.h:45:3: note: in expansion of macro '__access_ok_vsyscall'
45 | __access_ok_vsyscall(addr, size) ||
| ^~~~~~~~~~~~~~~~~~~~
In file included from include/linux/kernel.h:11,
from drivers/net/phy/phy.c:11:
include/asm-generic/fixmap.h: In function 'fix_to_virt':
include/asm-generic/fixmap.h:32:19: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
32 | BUILD_BUG_ON(idx >= __end_of_fixed_addresses);
| ^~
include/linux/compiler.h:372:9: note: in definition of macro '__compiletime_assert'
372 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler.h:392:2: note: in expansion of macro '_compiletime_assert'
392 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
| ^~~~~~~~~~~~~~~~
include/asm-generic/fixmap.h:32:2: note: in expansion of macro 'BUILD_BUG_ON'
32 | BUILD_BUG_ON(idx >= __end_of_fixed_addresses);
| ^~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:8,
from drivers/net/phy/phy.c:11:
drivers/net/phy/phy.c: At top level:
>> include/linux/export.h:67:36: error: redefinition of '__ksymtab_phy_request_interrupt'
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:158:29: note: in expansion of macro '_EXPORT_SYMBOL'
158 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
>> drivers/net/phy/phy.c:928:1: note: in expansion of macro 'EXPORT_SYMBOL'
928 | EXPORT_SYMBOL(phy_request_interrupt);
| ^~~~~~~~~~~~~
include/linux/export.h:67:36: note: previous definition of '__ksymtab_phy_request_interrupt' was here
67 | static const struct kernel_symbol __ksymtab_##sym \
| ^~~~~~~~~~
include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
108 | __KSYMTAB_ENTRY(sym, sec)
| ^~~~~~~~~~~~~~~
include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
| ^~~~~~~~~~~~~~~~
include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
| ^~~~~~~~~~~~~~~
include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
159 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "_gpl")
| ^~~~~~~~~~~~~~
>> drivers/net/phy/phy.c:855:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
855 | EXPORT_SYMBOL_GPL(phy_request_interrupt);
| ^~~~~~~~~~~~~~~~~
vim +/__ksymtab_phy_request_interrupt +67 include/linux/export.h
f50169324df4ad Paul Gortmaker 2011-05-23 41
7290d58095712a Ard Biesheuvel 2018-08-21 42 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
7290d58095712a Ard Biesheuvel 2018-08-21 43 #include <linux/compiler.h>
7290d58095712a Ard Biesheuvel 2018-08-21 44 /*
7290d58095712a Ard Biesheuvel 2018-08-21 45 * Emit the ksymtab entry as a pair of relative references: this reduces
7290d58095712a Ard Biesheuvel 2018-08-21 46 * the size by half on 64-bit architectures, and eliminates the need for
7290d58095712a Ard Biesheuvel 2018-08-21 47 * absolute relocations that require runtime processing on relocatable
7290d58095712a Ard Biesheuvel 2018-08-21 48 * kernels.
7290d58095712a Ard Biesheuvel 2018-08-21 49 */
7290d58095712a Ard Biesheuvel 2018-08-21 50 #define __KSYMTAB_ENTRY(sym, sec) \
7290d58095712a Ard Biesheuvel 2018-08-21 51 __ADDRESSABLE(sym) \
7290d58095712a Ard Biesheuvel 2018-08-21 52 asm(" .section \"___ksymtab" sec "+" #sym "\", \"a\" \n" \
ed13fc33f76303 Matthias Maennich 2019-09-06 53 " .balign 4 \n" \
7290d58095712a Ard Biesheuvel 2018-08-21 54 "__ksymtab_" #sym ": \n" \
7290d58095712a Ard Biesheuvel 2018-08-21 55 " .long " #sym "- . \n" \
7290d58095712a Ard Biesheuvel 2018-08-21 56 " .long __kstrtab_" #sym "- . \n" \
c3a6cf19e695c8 Masahiro Yamada 2019-10-18 57 " .long __kstrtabns_" #sym "- . \n" \
7290d58095712a Ard Biesheuvel 2018-08-21 58 " .previous \n")
7290d58095712a Ard Biesheuvel 2018-08-21 59
7290d58095712a Ard Biesheuvel 2018-08-21 60 struct kernel_symbol {
7290d58095712a Ard Biesheuvel 2018-08-21 61 int value_offset;
7290d58095712a Ard Biesheuvel 2018-08-21 62 int name_offset;
8651ec01daedad Matthias Maennich 2019-09-06 63 int namespace_offset;
7290d58095712a Ard Biesheuvel 2018-08-21 64 };
7290d58095712a Ard Biesheuvel 2018-08-21 65 #else
7290d58095712a Ard Biesheuvel 2018-08-21 66 #define __KSYMTAB_ENTRY(sym, sec) \
7290d58095712a Ard Biesheuvel 2018-08-21 @67 static const struct kernel_symbol __ksymtab_##sym \
7290d58095712a Ard Biesheuvel 2018-08-21 68 __attribute__((section("___ksymtab" sec "+" #sym), used)) \
ed13fc33f76303 Matthias Maennich 2019-09-06 69 __aligned(sizeof(void *)) \
c3a6cf19e695c8 Masahiro Yamada 2019-10-18 70 = { (unsigned long)&sym, __kstrtab_##sym, __kstrtabns_##sym }
7290d58095712a Ard Biesheuvel 2018-08-21 71
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months
Re: [RESEND PATCH v27 11/15] leds: lp55xx: Add multicolor framework support to lp55xx
by Dan Murphy
Jacek
On 6/22/20 7:42 AM, Jacek Anaszewski wrote:
> Dan,
>
> On 6/21/20 10:24 PM, Jacek Anaszewski wrote:
>> Dan,
>>
>> On 6/21/20 4:12 PM, Dan Murphy wrote:
>>> Jacek
>>>
>>> On 6/19/20 5:10 PM, Jacek Anaszewski wrote:
>>>> Dan,
>>>>
>>>> On 6/19/20 6:35 PM, Dan Murphy wrote:
>>>>> Jacek
>>>>>
>>>>> On 6/18/20 6:26 PM, Jacek Anaszewski wrote:
>>>>>> On 6/19/20 12:09 AM, Jacek Anaszewski wrote:
>>>>>>> Dan,
>>>>>>>
>>>>>>> On 6/18/20 11:44 PM, Dan Murphy wrote:
>>>>>>>> Jacek
>>>>>>>>
>>>>>>>> On 6/18/20 4:21 PM, Jacek Anaszewski wrote:
>>>>>>>>> Dan,
>>>>>>>>>
>>>>>>>>> On 6/18/20 12:33 AM, Dan Murphy wrote:
>>>>>>>>>> Jacek
>>>>>>>>>>
>>>>>>>>>> On 6/17/20 4:41 PM, Jacek Anaszewski wrote:
>>>>>>>>>>> Dan,
>>>>>>>>>>>
>>>>>>>>>>> On 6/17/20 9:22 PM, Dan Murphy wrote:
>>>>>>>>>>>> Pavel/Jacek
>>>>>>>>>>>>
>>>>>>>>>>>> On 6/17/20 11:28 AM, kernel test robot wrote:
>>>>>>>>>>>>> Hi Dan,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I love your patch! Yet something to improve:
>>>>>>>>>>>>>
>>>>>>>>>>>>> [auto build test ERROR on pavel-linux-leds/for-next]
>>>>>>>>>>>>> [cannot apply to j.anaszewski-leds/for-next]
>>>>>>>>>>>>> [if your patch is applied to the wrong git tree, please
>>>>>>>>>>>>> drop us a note to help
>>>>>>>>>>>>> improve the system. BTW, we also suggest to use '--base'
>>>>>>>>>>>>> option to specify the
>>>>>>>>>>>>> base tree in git format-patch, please see
>>>>>>>>>>>>> https://stackoverflow.com/a/37406982]
>>>>>>>>>>>>>
>>>>>>>>>>>>> url:
>>>>>>>>>>>>> https://github.com/0day-ci/linux/commits/Dan-Murphy/Multicolor-Framework-...
>>>>>>>>>>>>>
>>>>>>>>>>>>> base:
>>>>>>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
>>>>>>>>>>>>> for-next
>>>>>>>>>>>>> config: ia64-randconfig-r015-20200617 (attached as .config)
>>>>>>>>>>>>> compiler: ia64-linux-gcc (GCC) 9.3.0
>>>>>>>>>>>>> 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
>>>>>>>>>>>>> # save the attached .config to linux build tree
>>>>>>>>>>>>> COMPILER_INSTALL_PATH=$HOME/0day
>>>>>>>>>>>>> COMPILER=gcc-9.3.0 make.cross ARCH=ia64
>>>>>>>>>>>>>
>>>>>>>>>>>>> If you fix the issue, kindly add following tag as appropriate
>>>>>>>>>>>>> Reported-by: kernel test robot <lkp(a)intel.com>
>>>>>>>>>>>>>
>>>>>>>>>>>>> All errors (new ones prefixed by >>, old ones prefixed by
>>>>>>>>>>>>> <<):
>>>>>>>>>>>>>
>>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in
>>>>>>>>>>>>> function `lp55xx_set_mc_brightness':
>>>>>>>>>>>>>>> drivers/leds/leds-lp55xx-common.c:146: undefined
>>>>>>>>>>>>>>> reference to `led_mc_calc_color_components'
>>>>>>>>>>>>> ia64-linux-ld: drivers/leds/leds-lp55xx-common.o: in
>>>>>>>>>>>>> function `devm_led_classdev_multicolor_register':
>>>>>>>>>>>>>>> include/linux/led-class-multicolor.h:74: undefined
>>>>>>>>>>>>>>> reference to `devm_led_classdev_multicolor_register_ext'
>>>>>>>>>>>>> vim +146 drivers/leds/leds-lp55xx-common.c
>>>>>>>>>>>>>
>>>>>>>>>>>>> 138
>>>>>>>>>>>>> 139 static int lp55xx_set_mc_brightness(struct
>>>>>>>>>>>>> led_classdev *cdev,
>>>>>>>>>>>>> 140 enum led_brightness
>>>>>>>>>>>>> brightness)
>>>>>>>>>>>>> 141 {
>>>>>>>>>>>>> 142 struct led_classdev_mc *mc_dev =
>>>>>>>>>>>>> lcdev_to_mccdev(cdev);
>>>>>>>>>>>>> 143 struct lp55xx_led *led =
>>>>>>>>>>>>> mcled_cdev_to_led(mc_dev);
>>>>>>>>>>>>> 144 struct lp55xx_device_config *cfg =
>>>>>>>>>>>>> led->chip->cfg;
>>>>>>>>>>>>> 145
>>>>>>>>>>>>> > 146 led_mc_calc_color_components(&led->mc_cdev,
>>>>>>>>>>>>> brightness);
>>>>>>>>>>>>> 147 return cfg->multicolor_brightness_fn(led);
>>>>>>>>>>>>> 148
>>>>>>>>>>>>
>>>>>>>>>>>> Well this was a mess to figure out.
>>>>>>>>>>>>
>>>>>>>>>>>> The only fix I can figure out here is to remove the
>>>>>>>>>>>>
>>>>>>>>>>>> depends on LEDS_CLASS_MULTI_COLOR ||
>>>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>>
>>>>>>>>>>>> from each child device and add
>>>>>>>>>>>>
>>>>>>>>>>>> select LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>>>
>>>>>>>>>>>> to the LP55XX_COMMON
>>>>>>>>>>>>
>>>>>>>>>>>> This way the Multi color framework will inherit the symbol
>>>>>>>>>>>> that was set by the COMMON flag which is inherited by
>>>>>>>>>>>> majority from the child flags.
>>>>>>>>>>>
>>>>>>>>>>> Did you try this?
>>>>>>>>>>>
>>>>>>>>>>> --- a/drivers/leds/Kconfig
>>>>>>>>>>> +++ b/drivers/leds/Kconfig
>>>>>>>>>>> @@ -398,6 +398,7 @@ config LEDS_LP50XX
>>>>>>>>>>> config LEDS_LP55XX_COMMON
>>>>>>>>>>> tristate "Common Driver for TI/National
>>>>>>>>>>> LP5521/5523/55231/5562/8501"
>>>>>>>>>>> depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562
>>>>>>>>>>> || LEDS_LP8501
>>>>>>>>>>> + depends on LEDS_CLASS_MULTI_COLOR ||
>>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR
>>>>>>>>>>> depends on OF
>>>>>>>>>>> select FW_LOADER
>>>>>>>>>>> select FW_LOADER_USER_HELPER
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> Yes I did
>>>>>>>>>>
>>>>>>>>>> That gave unmet dependencies.
>>>>>>>>>>
>>>>>>>>>> WARNING: unmet direct dependencies detected for
>>>>>>>>>> LEDS_LP55XX_COMMON
>>>>>>>>>> Depends on [m]: NEW_LEDS [=y] && (LEDS_LP5521 [=n] ||
>>>>>>>>>> LEDS_LP5523 [=m] || LEDS_LP5562 [=y] || LEDS_LP8501 [=y]) &&
>>>>>>>>>> (LEDS_CLASS_MULTI_COLOR [=m] || !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>>>>>> && OF [=y]
>>>>>>>>>> Selected by [y]:
>>>>>>>>>> - LEDS_LP5562 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>>> I2C [=y]
>>>>>>>>>> - LEDS_LP8501 [=y] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>>> I2C [=y]
>>>>>>>>>> Selected by [m]:
>>>>>>>>>> - LEDS_LP5523 [=m] && NEW_LEDS [=y] && LEDS_CLASS [=y] &&
>>>>>>>>>> I2C [=y] && (LEDS_CLASS_MULTI_COLOR [=m] ||
>>>>>>>>>> !LEDS_CLASS_MULTI_COLOR [=m])
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> When I was testing that yesterday I also had the same warning
>>>>>>>>> at some
>>>>>>>>> point of testing different Kconfig setups, but with what I
>>>>>>>>> showed above
>>>>>>>>> it ceased to appear. Now every time I am doing "make
>>>>>>>>> oldconfig" the
>>>>>>>>> CONFIG_LEDS_LP55XX_COMMON=y entry gets changed to =m with the
>>>>>>>>> config
>>>>>>>>> from the test bot.
>>>>>>>>>
>>>>>>>> That is not what I saw in my testing especially after doing a
>>>>>>>> distclean
>>>>>>>
>>>>>>> Could you please give your exact steps after "make distclean" and
>>>>>>> copying test bot config to the kernel root directory?
>>>>>>>
>>>>>>> Also, please share the toolchain you're using for tests.
>>>>>>
>>>>>> Actually at this stage the toolchain is of lesser relevance.
>>>>>>
>>>>>> I've tried once more and indeed the problem shows up.
>>>>>>
>>>>>> It is caused by the driver entries doing
>>>>>>
>>>>>> "select LEDS_LP55XX_COMMON".
>>>>>>
>>>>>> Select sets config to "y" so it conflicts with
>>>>>> "depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR"
>>>>>> in the "config LEDS_LP55XX_COMMON".
>>>>>>
>>>>>> Your proposed fix will block the possibility of building
>>>>>> LED_CLASS_MULTI_COLOR as a module when LP55XX drivers
>>>>>> are enabled so this is also not an option.
>>>>>>
>>>>>> Solving this riddle will require some more thinking.
>>>>>> I haven't analyzed it in detail but maybe "imply" statement from
>>>>>> kconfig-language.rst could help somehow here.
>>>>>
>>>>> The multicolor framework will build as a module if the LED_CLASS
>>>>> is defined as a module.
>>>>>
>>>>> See attached test_defconfig
>>>>
>>>> But it will be impossible to enable CONFIG_LEDS_LP50XX without
>>>> CONFIG_LEDS_CLASS_MULTI_COLOR if you will remove
>>>>
>>>> depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR.
>>>>
>>> I was not removing the dependency for the LP50xx only the LP55xx.
>>
>> It was my typo, I meant LP55XX.
>>
>>>
>>>> This is actually why the above entry was needed.
>>>>
>>>> LP55XX drivers have to work also without multicolor class.
>>>>
>>> Well I am not sure how else to resolve this problem. Because the
>>> LP55xx has multi level dependencies.
>>>
>>> Only the LP55xx_common has the dependency on the MC framework. The
>>> device drivers do not.
>>>
>>> The issue is the mixing and matching of the MC fw as a module vs the
>>> LP55XX_COMMON as a built-in.
>>
>> The simplest solution is to avoid selecting LP55XX_COMMON in favor
>> of making child drivers depending on it. Of course, maybe there exists
>> some trickier option to keep the selection, but I would have to play
>> a bit more with it to be sure.
>
> Yep, this seems to be the only viable solution.
>
> My proposed change to the Kconfig:
>
> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> index adfa762cb291..10de7d237ffd 100644
> --- a/drivers/leds/Kconfig
> +++ b/drivers/leds/Kconfig
> @@ -397,10 +397,10 @@ config LEDS_LP50XX
>
> config LEDS_LP55XX_COMMON
> tristate "Common Driver for TI/National
> LP5521/5523/55231/5562/8501"
> - depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 ||
> LEDS_LP8501
> depends on OF
> select FW_LOADER
> select FW_LOADER_USER_HELPER
> + depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR
> help
> This option supports common operations for
> LP5521/5523/55231/5562/8501
> devices.
> @@ -408,8 +408,7 @@ config LEDS_LP55XX_COMMON
> config LEDS_LP5521
> tristate "LED Support for N.S. LP5521 LED driver chip"
> depends on LEDS_CLASS && I2C
> - depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR
> - select LEDS_LP55XX_COMMON
> + depends on LEDS_LP55XX_COMMON
> help
> If you say yes here you get support for the National
> Semiconductor
> LP5521 LED driver. It is 3 channel chip with programmable
> engines.
> @@ -419,8 +418,7 @@ config LEDS_LP5521
> config LEDS_LP5523
> tristate "LED Support for TI/National LP5523/55231 LED driver
> chip"
> depends on LEDS_CLASS && I2C
> - depends on LEDS_CLASS_MULTI_COLOR || !LEDS_CLASS_MULTI_COLOR
> - select LEDS_LP55XX_COMMON
> + depends on LEDS_LP55XX_COMMON
> help
> If you say yes here you get support for TI/National
> Semiconductor
> LP5523/55231 LED driver.
> @@ -431,7 +429,7 @@ config LEDS_LP5523
> config LEDS_LP5562
> tristate "LED Support for TI LP5562 LED driver chip"
> depends on LEDS_CLASS && I2C
> - select LEDS_LP55XX_COMMON
> + depends on LEDS_LP55XX_COMMON
> help
> If you say yes here you get support for TI LP5562 LED driver.
> It is 4 channels chip with programmable engines.
> @@ -441,7 +439,7 @@ config LEDS_LP5562
> config LEDS_LP8501
> tristate "LED Support for TI LP8501 LED driver chip"
> depends on LEDS_CLASS && I2C
> - select LEDS_LP55XX_COMMON
> + depends on LEDS_LP55XX_COMMON
> help
> If you say yes here you get support for TI LP8501 LED driver.
> It is 9 channel chip with programmable engines.
>
>
I made the same exact change and I am testing this now. Need to see how
the u8500_defconfig builds as that is the only defconfig that uses the
LP5521 in tree.
I will need to add the LP55XX_COMMON in that defconfig but verifying the
build works once I do.
Dan
2 years, 3 months
Re: [PATCH net-next v10 2/3] xen networking: add basic XDP support for xen-netfront
by kernel test robot
Hi Denis,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Denis-Kirjanov/xen-networking-ad...
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 29a720c1042f469c8fea317cb5e7f496b116e07d
config: i386-debian-10.3 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
drivers/net/xen-netfront.c: In function 'xennet_xdp_xmit_one':
drivers/net/xen-netfront.c:581:31: warning: variable 'tx' set but not used [-Wunused-but-set-variable]
581 | struct xen_netif_tx_request *tx;
| ^~
drivers/net/xen-netfront.c: In function 'xennet_run_xdp':
>> drivers/net/xen-netfront.c:871:10: error: implicit declaration of function 'convert_to_xdp_frame'; did you mean 'xdp_convert_zc_to_xdp_frame'? [-Werror=implicit-function-declaration]
871 | xdpf = convert_to_xdp_frame(xdp);
| ^~~~~~~~~~~~~~~~~~~~
| xdp_convert_zc_to_xdp_frame
>> drivers/net/xen-netfront.c:871:8: warning: assignment to 'struct xdp_frame *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
871 | xdpf = convert_to_xdp_frame(xdp);
| ^
drivers/net/xen-netfront.c: In function 'store_rxbuf':
drivers/net/xen-netfront.c:2424:16: warning: variable 'target' set but not used [-Wunused-but-set-variable]
2424 | unsigned long target;
| ^~~~~~
cc1: some warnings being treated as errors
vim +871 drivers/net/xen-netfront.c
851
852 static u32 xennet_run_xdp(struct netfront_queue *queue, struct page *pdata,
853 struct xen_netif_rx_response *rx, struct bpf_prog *prog,
854 struct xdp_buff *xdp, bool *need_xdp_flush)
855 {
856 struct xdp_frame *xdpf;
857 u32 len = rx->status;
858 u32 act = XDP_PASS;
859 int err;
860
861 xdp->data_hard_start = page_address(pdata);
862 xdp->data = xdp->data_hard_start + XDP_PACKET_HEADROOM;
863 xdp_set_data_meta_invalid(xdp);
864 xdp->data_end = xdp->data + len;
865 xdp->rxq = &queue->xdp_rxq;
866
867 act = bpf_prog_run_xdp(prog, xdp);
868 switch (act) {
869 case XDP_TX:
870 get_page(pdata);
> 871 xdpf = convert_to_xdp_frame(xdp);
872 err = xennet_xdp_xmit(queue->info->netdev, 1, &xdpf, 0);
873 if (unlikely(err < 0))
874 trace_xdp_exception(queue->info->netdev, prog, act);
875 break;
876 case XDP_REDIRECT:
877 get_page(pdata);
878 err = xdp_do_redirect(queue->info->netdev, xdp, prog);
879 *need_xdp_flush = true;
880 if (unlikely(err))
881 trace_xdp_exception(queue->info->netdev, prog, act);
882 break;
883 case XDP_PASS:
884 case XDP_DROP:
885 break;
886
887 case XDP_ABORTED:
888 trace_xdp_exception(queue->info->netdev, prog, act);
889 break;
890
891 default:
892 bpf_warn_invalid_xdp_action(act);
893 }
894
895 return act;
896 }
897
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
2 years, 3 months