[ammarfaizi2-block:dhowells/linux-fs/netfs-maple 34/35] fs/netfs/flush.c:400:56: sparse: sparse: Using plain integer as NULL pointer
by kernel test robot
tree: https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/netfs-maple
head: 429e2bb6fb190f390ed23afc0d2308e877c43be5
commit: e9340673baaf1ff587aed3391aa411cf554bc42e [34/35] netfs: Slice a writeback from a dirty region
config: sparc-randconfig-s031-20220210 (https://download.01.org/0day-ci/archive/20220212/202202120413.rYahW6Tp-lk...)
compiler: sparc-linux-gcc (GCC) 11.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/ammarfaizi2/linux-block/commit/e9340673baaf1ff587aed33...
git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/netfs-maple
git checkout e9340673baaf1ff587aed3391aa411cf554bc42e
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=sparc SHELL=/bin/bash fs/netfs/
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 >>)
>> fs/netfs/flush.c:400:56: sparse: sparse: Using plain integer as NULL pointer
fs/netfs/flush.c:448:48: sparse: sparse: Using plain integer as NULL pointer
vim +400 fs/netfs/flush.c
293
294 /*
295 * Flush some of the dirty queue, transforming a part of a sequence of dirty
296 * regions into a block we can flush.
297 *
298 * A number of things constrain us:
299 * - The region we write out should not be undergoing modification
300 * - We may need to expand or split the region for a number of reasons:
301 * - Filesystem storage block/object size
302 * - Filesystem RPC size (wsize)
303 * - Cache block size
304 * - Cache DIO block size
305 * - Crypto/compression block size
306 *
307 * This may be entered multiple times simultaneously. Automatic flushing by
308 * the VM is serialised on I_SYNC, but things like fsync() may enter multiple
309 * times simultaneously.
310 */
311 static int netfs_flush_dirty(struct netfs_writeback *wback,
312 struct writeback_control *wbc,
313 struct netfs_i_context *ctx,
314 struct ma_state *mas,
315 pgoff_t *_first, pgoff_t last,
316 struct netfs_dirty_region *spares[2])
317 {
318 struct netfs_dirty_region *region;
319 struct folio *folio;
320 pgoff_t first = *_first;
321 pgoff_t csize = 1UL << ctx->cache_order;
322 long ret;
323
324 XA_STATE(xas, &wback->mapping->i_pages, 0);
325
326 /* Round out the range we're looking through to accommodate whole cache
327 * blocks. The cache may only be able to store blocks of that size, in
328 * which case we may need to add non-dirty pages to the buffer too.
329 */
330 if (ctx->cache_order) {
331 first = round_down(first, csize);
332 last = round_up_incl(last, csize);
333 }
334
335 _enter("%lx-%lx", first, last);
336
337 rcu_read_lock();
338 mtree_lock(&ctx->dirty_regions);
339
340 /* Find the first dirty region that overlaps the requested range */
341 mas_set(mas, first);
342 do {
343 region = mas_find(mas, last);
344 if (!region)
345 goto found_nothing;
346 } while (netfs_mas_is_flushing(region));
347
348 _debug("query D=%x %lx-%lx",
349 netfs_mas_is_valid(region) ? region->debug_id : 0,
350 mas->index, mas->last);
351
352 wback->first = max(mas->index, first);
353 if (wback->first > 0) {
354 _debug("nonz %lx", wback->first);
355
356 /* The first folio might extend backwards beyond the start of
357 * the proposed region - in which case we need to include that
358 * also. But at least, in such a case, the folio size has to
359 * be an integer multiple of the cache blocksize.
360 */
361 if (mas->index < wback->first) {
362 _debug("check folio %lx", wback->first);
363 xas_set(&xas, wback->first);
364 do {
365 xas_reset(&xas);
366 folio = xas_load(&xas);
367 } while (xas_retry(&xas, folio));
368
369 if (folio && !xa_is_value(folio)) {
370 _debug("check folio %lx", folio->index);
371 /* A region span *should not* end in the middle of a folio. */
372 BUG_ON(folio->index < mas->index);
373 if (folio->index < wback->first) {
374 wback->first = folio->index;
375 mas_set_range(mas, wback->first, mas->last);
376 }
377 }
378 }
379
380 _debug("fol %lx", wback->first);
381
382 if (mas->index < wback->first) {
383 pgoff_t saved_last = mas->last;
384 _debug("splitf %lx-%lx %lx", mas->index, mas->last, first);
385 netfs_split_off_front(ctx, mas, region, &spares[0], first - 1,
386 netfs_dirty_trace_split_off_front);
387 mas_set_range(mas, first, saved_last);
388 }
389
390 wback->last = mas->last;
391 }
392
393 while (mas->last < last) {
394 _debug("store %lx-%lx", mas->index, mas->last);
395 wback->last = mas->last;
396 mas_store(mas, netfs_mas_set_flushing(region));
397 if (region != NETFS_COPY_TO_CACHE) {
398 netfs_get_dirty_region(ctx, region, netfs_region_trace_get_wback);
399 list_add_tail(®ion->flush_link, &wback->regions);
> 400 trace_netfs_dirty(ctx, region, 0, mas->index, mas->last,
401 netfs_dirty_trace_flush);
402 }
403
404 region = mas_next(mas, mas->last + 1);
405 if (!region || netfs_mas_is_flushing(region))
406 goto no_more;
407 if (mas->last >= last)
408 break;
409 _debug("query+ D=%x %lx-%lx",
410 netfs_mas_is_valid(region) ? region->debug_id : 0,
411 mas->index, mas->last);
412 }
413
414 /* Deal with the region we're looking at exceeding the specified range.
415 * In such a case, we need to split the region - and the last folio may
416 * extend beyond the end of the proposed region - in which case we need
417 * to include that also. And, again, the folio size has to be an
418 * integer multiple of the cache blocksize.
419 */
420 if (mas->last > last) {
421 xas_set(&xas, last);
422 do {
423 xas_reset(&xas);
424 folio = xas_load(&xas);
425 } while (xas_retry(&xas, folio));
426
427 if (folio && !xa_is_value(folio)) {
428 pgoff_t flast = folio_next_index(folio) - 1;
429
430 _debug("flast %lx %lx %lx", flast, mas->last, last);
431 /* A region span *should not* end in the middle of a folio. */
432 BUG_ON(flast > mas->last);
433 if (flast > last) {
434 last = flast;
435 mas_set_range(mas, mas->index, last);
436 }
437 }
438
439 region = netfs_split_off_front(ctx, mas, region, &spares[1], last,
440 netfs_dirty_trace_split_off_back);
441 }
442
443 wback->last = mas->last;
444 mas_store(mas, netfs_mas_set_flushing(region));
445 if (region != NETFS_COPY_TO_CACHE) {
446 netfs_get_dirty_region(ctx, region, netfs_region_trace_get_wback);
447 list_add_tail(®ion->flush_link, &wback->regions);
448 trace_netfs_dirty(ctx, region, 0, mas->index, mas->last,
449 netfs_dirty_trace_flush2);
450 }
451
452 no_more:
453 /* We've now got a contiguous span. Some of the subspans may only need
454 * writing to the cache, whilst others need writing to both the server
455 * and the cache.
456 */
457 _debug("span %lx-%lx", wback->first, wback->last);
458 *_first = last + 1;
459 mtree_unlock(&ctx->dirty_regions);
460 rcu_read_unlock();
461
462 /* Load the pages into the raw-data buffer and transition them over to
463 * the writeback state.
464 */
465 ret = netfs_flush_get_pages(wback, ctx);
466 if (ret < 0)
467 goto undo;
468
469 netfs_writeback_lock(wback);
470 netfs_writeback_start(wback);
471 trace_netfs_wback(wback);
472
473 wbc->nr_to_write -= wback->last - wback->first + 1;
474 *_first = wback->last + 1;
475 _leave(" = %lx [%lx]", wback->last - wback->first + 1, *_first);
476 return 1;
477
478 found_nothing:
479 *_first = last + 1;
480 mtree_unlock(&ctx->dirty_regions);
481 rcu_read_unlock();
482 return 0;
483
484 undo:
485 BUG(); // TODO
486 }
487
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
7 months, 1 week
[thesofproject:pr/3423 18/37] sound/soc/sof/pcm.c:125:38: error: initialization of 'const struct ipc_pcm_ops *' from incompatible pointer type 'const struct sof_ipc_pcm_ops * const'
by kernel test robot
tree: https://github.com/thesofproject/linux pr/3423
head: ec98881d3d07dbf2b30b80188a030a688820b1f0
commit: 9e5b6cc2f5a30ddfe3cf17ba0f997cc67d1fb93e [18/37] Fixup! ASoC: SOF: Introduce IPC-specific PCM ops
config: x86_64-sof-customedconfig-sof-defconfig (https://download.01.org/0day-ci/archive/20220212/202202120334.Wou16c2j-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/thesofproject/linux/commit/9e5b6cc2f5a30ddfe3cf17ba0f9...
git remote add thesofproject https://github.com/thesofproject/linux
git fetch --no-tags thesofproject pr/3423
git checkout 9e5b6cc2f5a30ddfe3cf17ba0f997cc67d1fb93e
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash sound/soc/sof/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Note: the thesofproject/pr/3423 HEAD ec98881d3d07dbf2b30b80188a030a688820b1f0 builds fine.
It only hurts bisectability.
All errors (new ones prefixed by >>):
sound/soc/sof/pcm.c: In function 'sof_pcm_hw_params':
>> sound/soc/sof/pcm.c:125:38: error: initialization of 'const struct ipc_pcm_ops *' from incompatible pointer type 'const struct sof_ipc_pcm_ops * const' [-Werror=incompatible-pointer-types]
125 | const struct ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm;
| ^~~~
>> sound/soc/sof/pcm.c:142:13: error: dereferencing pointer to incomplete type 'const struct ipc_pcm_ops'
142 | if (pcm_ops->hw_free && spcm->prepared[substream->stream]) {
| ^~
sound/soc/sof/pcm.c: In function 'sof_pcm_hw_free':
sound/soc/sof/pcm.c:194:38: error: initialization of 'const struct ipc_pcm_ops *' from incompatible pointer type 'const struct sof_ipc_pcm_ops * const' [-Werror=incompatible-pointer-types]
194 | const struct ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm;
| ^~~~
sound/soc/sof/pcm.c:210:13: error: dereferencing pointer to incomplete type 'const struct ipc_pcm_ops'
210 | if (pcm_ops->hw_free && spcm->prepared[substream->stream]) {
| ^~
sound/soc/sof/pcm.c: In function 'sof_pcm_trigger':
sound/soc/sof/pcm.c:277:38: error: initialization of 'const struct ipc_pcm_ops *' from incompatible pointer type 'const struct sof_ipc_pcm_ops * const' [-Werror=incompatible-pointer-types]
277 | const struct ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm;
| ^~~~
sound/soc/sof/pcm.c:342:13: error: dereferencing pointer to incomplete type 'const struct ipc_pcm_ops'
342 | if (pcm_ops->trigger)
| ^~
sound/soc/sof/pcm.c: In function 'sof_pcm_dai_link_fixup':
sound/soc/sof/pcm.c:569:38: error: initialization of 'const struct ipc_pcm_ops *' from incompatible pointer type 'const struct sof_ipc_pcm_ops * const' [-Werror=incompatible-pointer-types]
569 | const struct ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm;
| ^~~~
sound/soc/sof/pcm.c:590:13: error: dereferencing pointer to incomplete type 'const struct ipc_pcm_ops'
590 | if (pcm_ops->dai_link_fixup)
| ^~
cc1: some warnings being treated as errors
vim +125 sound/soc/sof/pcm.c
1f5320325c4390f Ranjani Sridharan 2021-03-04 117
1c91d77e1775e0d Kuninori Morimoto 2019-10-02 118 static int sof_pcm_hw_params(struct snd_soc_component *component,
1c91d77e1775e0d Kuninori Morimoto 2019-10-02 119 struct snd_pcm_substream *substream,
868bd00f4955146 Liam Girdwood 2019-04-12 120 struct snd_pcm_hw_params *params)
868bd00f4955146 Liam Girdwood 2019-04-12 121 {
868bd00f4955146 Liam Girdwood 2019-04-12 122 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(component);
dca6262db3dc58b Ranjani Sridharan 2021-12-07 123 struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
9cce2adefa0084c Peter Ujfalusi 2021-12-01 124 struct snd_sof_platform_stream_params platform_params = { 0 };
dca6262db3dc58b Ranjani Sridharan 2021-12-07 @125 const struct ipc_pcm_ops *pcm_ops = sdev->ipc->ops->pcm;
dca6262db3dc58b Ranjani Sridharan 2021-12-07 126 struct snd_pcm_runtime *runtime = substream->runtime;
868bd00f4955146 Liam Girdwood 2019-04-12 127 struct snd_sof_pcm *spcm;
868bd00f4955146 Liam Girdwood 2019-04-12 128 int ret;
868bd00f4955146 Liam Girdwood 2019-04-12 129
868bd00f4955146 Liam Girdwood 2019-04-12 130 /* nothing to do for BE */
868bd00f4955146 Liam Girdwood 2019-04-12 131 if (rtd->dai_link->no_pcm)
868bd00f4955146 Liam Girdwood 2019-04-12 132 return 0;
868bd00f4955146 Liam Girdwood 2019-04-12 133
ee1e79b72e3cf5e Ranjani Sridharan 2019-12-04 134 spcm = snd_sof_find_spcm_dai(component, rtd);
868bd00f4955146 Liam Girdwood 2019-04-12 135 if (!spcm)
868bd00f4955146 Liam Girdwood 2019-04-12 136 return -EINVAL;
868bd00f4955146 Liam Girdwood 2019-04-12 137
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 138 /*
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 139 * Handle repeated calls to hw_params() without free_pcm() in
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 140 * between. At least ALSA OSS emulation depends on this.
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 141 */
dd8fe9f9ecf2b67 Ranjani Sridharan 2021-12-07 @142 if (pcm_ops->hw_free && spcm->prepared[substream->stream]) {
dd8fe9f9ecf2b67 Ranjani Sridharan 2021-12-07 143 ret = pcm_ops->hw_free(component, substream);
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 144 if (ret < 0)
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 145 return ret;
cfe8191b1bbf2b4 Kai Vehmanen 2020-01-10 146
dd8fe9f9ecf2b67 Ranjani Sridharan 2021-12-07 147 spcm->prepared[substream->stream] = false;
dd8fe9f9ecf2b67 Ranjani Sridharan 2021-12-07 148 }
dd8fe9f9ecf2b67 Ranjani Sridharan 2021-12-07 149
ee1e79b72e3cf5e Ranjani Sridharan 2019-12-04 150 dev_dbg(component->dev, "pcm: hw params stream %d dir %d\n",
868bd00f4955146 Liam Girdwood 2019-04-12 151 spcm->pcm.pcm_id, substream->stream);
868bd00f4955146 Liam Girdwood 2019-04-12 152
dca6262db3dc58b Ranjani Sridharan 2021-12-07 153 /* if this is a repeated hw_params without hw_free, skip setting up widgets */
dca6262db3dc58b Ranjani Sridharan 2021-12-07 154 if (!spcm->stream[substream->stream].list) {
dca6262db3dc58b Ranjani Sridharan 2021-12-07 155 ret = sof_pcm_setup_connected_widgets(sdev, rtd, spcm, substream->stream);
868bd00f4955146 Liam Girdwood 2019-04-12 156 if (ret < 0)
868bd00f4955146 Liam Girdwood 2019-04-12 157 return ret;
868bd00f4955146 Liam Girdwood 2019-04-12 158 }
868bd00f4955146 Liam Girdwood 2019-04-12 159
dca6262db3dc58b Ranjani Sridharan 2021-12-07 160 /* create compressed page table for audio firmware */
dca6262db3dc58b Ranjani Sridharan 2021-12-07 161 if (runtime->buffer_changed) {
b298e5e1ae3165d Pierre-Louis Bossart 2022-01-25 162 ret = create_page_table(component, substream, runtime->dma_area,
dca6262db3dc58b Ranjani Sridharan 2021-12-07 163 runtime->dma_bytes);
868bd00f4955146 Liam Girdwood 2019-04-12 164
868bd00f4955146 Liam Girdwood 2019-04-12 165 if (ret < 0)
868bd00f4955146 Liam Girdwood 2019-04-12 166 return ret;
868bd00f4955146 Liam Girdwood 2019-04-12 167 }
868bd00f4955146 Liam Girdwood 2019-04-12 168
dca6262db3dc58b Ranjani Sridharan 2021-12-07 169 ret = snd_sof_pcm_platform_hw_params(sdev, substream, params, &platform_params);
868bd00f4955146 Liam Girdwood 2019-04-12 170 if (ret < 0) {
dca6262db3dc58b Ranjani Sridharan 2021-12-07 171 dev_err(component->dev, "platform hw params failed\n");
868bd00f4955146 Liam Girdwood 2019-04-12 172 return ret;
868bd00f4955146 Liam Girdwood 2019-04-12 173 }
868bd00f4955146 Liam Girdwood 2019-04-12 174
dca6262db3dc58b Ranjani Sridharan 2021-12-07 175 if (pcm_ops->hw_params) {
dca6262db3dc58b Ranjani Sridharan 2021-12-07 176 ret = pcm_ops->hw_params(component, substream, params, &platform_params);
1f5320325c4390f Ranjani Sridharan 2021-03-04 177 if (ret < 0)
1f5320325c4390f Ranjani Sridharan 2021-03-04 178 return ret;
1f5320325c4390f Ranjani Sridharan 2021-03-04 179 }
1f5320325c4390f Ranjani Sridharan 2021-03-04 180
04c8027764bc82a Kai Vehmanen 2019-07-22 181 spcm->prepared[substream->stream] = true;
04c8027764bc82a Kai Vehmanen 2019-07-22 182
868bd00f4955146 Liam Girdwood 2019-04-12 183 /* save pcm hw_params */
868bd00f4955146 Liam Girdwood 2019-04-12 184 memcpy(&spcm->params[substream->stream], params, sizeof(*params));
868bd00f4955146 Liam Girdwood 2019-04-12 185
dca6262db3dc58b Ranjani Sridharan 2021-12-07 186 return 0;
868bd00f4955146 Liam Girdwood 2019-04-12 187 }
868bd00f4955146 Liam Girdwood 2019-04-12 188
:::::: The code at line 125 was first introduced by commit
:::::: dca6262db3dc58b380d1281507c436c3d9f652f9 ASoC: SOF: Define hw_params PCM op for IPC3
:::::: TO: Ranjani Sridharan <ranjani.sridharan(a)linux.intel.com>
:::::: CC: Pierre-Louis Bossart <pierre-louis.bossart(a)linux.intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
7 months, 1 week
Re: [PATCH v2 3/3] spi: amd: Add support for version AMDI0062
by kernel test robot
Hi "André,
I love your patch! Perhaps something to improve:
[auto build test WARNING on broonie-spi/for-next]
[also build test WARNING on v5.17-rc3 next-20220211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andr-Almeida/spi-amd-Add-support...
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: arm64-randconfig-r015-20220211 (https://download.01.org/0day-ci/archive/20220212/202202120307.tqHogZDg-lk...)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project f6685f774697c85d6a352dcea013f46a99f9fe31)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/f9ba9fa1166540cf4dbf3ffbddb96b556...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andr-Almeida/spi-amd-Add-support-for-new-controller-version/20220211-223438
git checkout f9ba9fa1166540cf4dbf3ffbddb96b55699479b5
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/spi/
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 >>):
>> drivers/spi/spi-amd.c:296:21: warning: cast to smaller integer type 'enum amd_spi_versions' from 'const void *' [-Wvoid-pointer-to-enum-cast]
amd_spi->version = (enum amd_spi_versions) device_get_match_data(dev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-amd.c:333:23: error: use of undeclared identifier 'spi_acpi_match'
.acpi_match_table = spi_acpi_match,
^
1 warning and 1 error generated.
vim +296 drivers/spi/spi-amd.c
272
273 static int amd_spi_probe(struct platform_device *pdev)
274 {
275 struct device *dev = &pdev->dev;
276 struct spi_master *master;
277 struct amd_spi *amd_spi;
278 int err = 0;
279
280 /* Allocate storage for spi_master and driver private data */
281 master = spi_alloc_master(dev, sizeof(struct amd_spi));
282 if (!master) {
283 dev_err(dev, "Error allocating SPI master\n");
284 return -ENOMEM;
285 }
286
287 amd_spi = spi_master_get_devdata(master);
288 amd_spi->io_remap_addr = devm_platform_ioremap_resource(pdev, 0);
289 if (IS_ERR(amd_spi->io_remap_addr)) {
290 err = PTR_ERR(amd_spi->io_remap_addr);
291 dev_err(dev, "error %d ioremap of SPI registers failed\n", err);
292 goto err_free_master;
293 }
294 dev_dbg(dev, "io_remap_address: %p\n", amd_spi->io_remap_addr);
295
> 296 amd_spi->version = (enum amd_spi_versions) device_get_match_data(dev);
297
298 /* Initialize the spi_master fields */
299 master->bus_num = 0;
300 master->num_chipselect = 4;
301 master->mode_bits = 0;
302 master->flags = SPI_MASTER_HALF_DUPLEX;
303 master->setup = amd_spi_master_setup;
304 master->transfer_one_message = amd_spi_master_transfer;
305
306 /* Register the controller with SPI framework */
307 err = devm_spi_register_master(dev, master);
308 if (err) {
309 dev_err(dev, "error %d registering SPI controller\n", err);
310 goto err_free_master;
311 }
312
313 return 0;
314
315 err_free_master:
316 spi_master_put(master);
317
318 return err;
319 }
320
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
7 months, 1 week
Re: [PATCH 5/6] ath11k: Register DBR event handler for CFR data
by kernel test robot
Hi Venkateswara,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on kvalo-ath/ath-next]
[cannot apply to wireless-next/main wireless/main jberg-mac80211-next/master jberg-mac80211/master v5.17-rc3 next-20220211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Venkateswara-Naralasetty/ath11k-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20220212/202202120300.QN01zNhr-lk...)
compiler: alpha-linux-gcc (GCC) 11.2.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
# https://github.com/0day-ci/linux/commit/14cd77b4e3109da2eb6b3350164015385...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Venkateswara-Naralasetty/ath11k-add-single-shot-periodic-CFR-capture-support-for-IPQ8074/20220211-230911
git checkout 14cd77b4e3109da2eb6b33501640153852c5d2a7
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=alpha SHELL=/bin/bash drivers/net/wireless/ath/ath11k/
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 >>):
drivers/net/wireless/ath/ath11k/cfr.c:515:6: warning: no previous prototype for 'ath11k_cfr_ring_free' [-Wmissing-prototypes]
515 | void ath11k_cfr_ring_free(struct ath11k *ar)
| ^~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/cfr.c: In function 'cfr_calculate_tones_from_dma_hdr':
>> drivers/net/wireless/ath/ath11k/cfr.c:27:17: warning: this statement may fall through [-Wimplicit-fallthrough=]
27 | switch (bw) {
| ^~~~~~
drivers/net/wireless/ath/ath11k/cfr.c:40:9: note: here
40 | case ATH11K_CFR_PREAMBLE_TYPE_HT:
| ^~~~
vim +27 drivers/net/wireless/ath/ath11k/cfr.c
18
19 static int cfr_calculate_tones_from_dma_hdr(struct ath11k_cfir_dma_hdr *hdr)
20 {
21 u8 bw = FIELD_GET(CFIR_DMA_HDR_INFO1_UPLOAD_PKT_BW, hdr->info1);
22 u8 preamble = FIELD_GET(CFIR_DMA_HDR_INFO1_PREAMBLE_TYPE, hdr->info1);
23
24 switch (preamble) {
25 case ATH11K_CFR_PREAMBLE_TYPE_LEGACY:
26 case ATH11K_CFR_PREAMBLE_TYPE_VHT:
> 27 switch (bw) {
28 case 0:
29 return TONES_IN_20MHZ;
30 case 1: /* DUP40/VHT40 */
31 return TONES_IN_40MHZ;
32 case 2: /* DUP80/VHT80 */
33 return TONES_IN_80MHZ;
34 case 3: /* DUP160/VHT160 */
35 return TONES_IN_160MHZ;
36 default:
37 break;
38 }
39
40 case ATH11K_CFR_PREAMBLE_TYPE_HT:
41 switch (bw) {
42 case 0:
43 return TONES_IN_20MHZ;
44 case 1:
45 return TONES_IN_40MHZ;
46 }
47 }
48
49 return TONES_INVALID;
50 }
51
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
7 months, 1 week