[sound:test/usb-audio-lowlatency 198/198] sound/usb/pcm.c:1322:12: sparse: sparse: context imbalance in 'prepare_playback_urb' - different lock contexts for basic block

kernel test robot yujie.liu at intel.com
Tue Aug 31 09:10:53 CEST 2021


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git test/usb-audio-lowlatency
head:   0dbf51c865c64e95c711e4adf89a89140077269e
commit: 0dbf51c865c64e95c711e4adf89a89140077269e [198/198] ALSA: usb-audio: Improved lowlatency playback support
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: arc-randconfig-s032-20210831 (attached as .config)
compiler: arc-elf-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.3-348-gf0e6938b-dirty
         # https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?id=0dbf51c865c64e95c711e4adf89a89140077269e
         git remote add sound https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
         git fetch --no-tags sound test/usb-audio-lowlatency
         git checkout 0dbf51c865c64e95c711e4adf89a89140077269e
         # save the attached .config to linux build tree
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arc SHELL=/bin/bash sound/usb/

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


sparse warnings: (new ones prefixed by >>)
 >> sound/usb/pcm.c:1322:12: sparse: sparse: context imbalance in 'prepare_playback_urb' - different lock contexts for basic block

vim +/prepare_playback_urb +1322 sound/usb/pcm.c

e0570446773623 Ricard Wanderlof     2015-10-19  1321
0dbf51c865c64e Takashi Iwai         2021-08-30 @1322  static int prepare_playback_urb(struct snd_usb_substream *subs,
edcd3633e72a15 Daniel Mack          2012-04-12  1323  				struct urb *urb)
edcd3633e72a15 Daniel Mack          2012-04-12  1324  {
edcd3633e72a15 Daniel Mack          2012-04-12  1325  	struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime;
245baf983cc395 Daniel Mack          2012-08-30  1326  	struct snd_usb_endpoint *ep = subs->data_endpoint;
edcd3633e72a15 Daniel Mack          2012-04-12  1327  	struct snd_urb_ctx *ctx = urb->context;
0dbf51c865c64e Takashi Iwai         2021-08-30  1328  	unsigned int counts, frames, bytes, transfer_done;
edcd3633e72a15 Daniel Mack          2012-04-12  1329  	int i, stride, period_elapsed = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1330  	unsigned long flags;
edcd3633e72a15 Daniel Mack          2012-04-12  1331
d303c5d38b37ee Takashi Iwai         2021-06-01  1332  	stride = ep->stride;
edcd3633e72a15 Daniel Mack          2012-04-12  1333
edcd3633e72a15 Daniel Mack          2012-04-12  1334  	frames = 0;
e8a8f09cb0b3b8 Takashi Iwai         2021-06-01  1335  	ctx->queued = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1336  	urb->number_of_packets = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1337  	spin_lock_irqsave(&subs->lock, flags);
976b6c064a9574 Alan Stern           2013-09-24  1338  	subs->frame_limit += ep->max_urb_frames;
0dbf51c865c64e Takashi Iwai         2021-08-30  1339  	transfer_done = subs->transfer_done;
edcd3633e72a15 Daniel Mack          2012-04-12  1340  	for (i = 0; i < ctx->packets; i++) {
3d58760f4d0015 Takashi Iwai         2020-11-23  1341  		counts = snd_usb_endpoint_next_packet_size(ep, ctx, i);
edcd3633e72a15 Daniel Mack          2012-04-12  1342  		/* set up descriptor */
d303c5d38b37ee Takashi Iwai         2021-06-01  1343  		urb->iso_frame_desc[i].offset = frames * stride;
d303c5d38b37ee Takashi Iwai         2021-06-01  1344  		urb->iso_frame_desc[i].length = counts * stride;
edcd3633e72a15 Daniel Mack          2012-04-12  1345  		frames += counts;
edcd3633e72a15 Daniel Mack          2012-04-12  1346  		urb->number_of_packets++;
0dbf51c865c64e Takashi Iwai         2021-08-30  1347  		transfer_done += counts;
0dbf51c865c64e Takashi Iwai         2021-08-30  1348  		if (transfer_done >= runtime->period_size) {
0dbf51c865c64e Takashi Iwai         2021-08-30  1349  			transfer_done -= runtime->period_size;
976b6c064a9574 Alan Stern           2013-09-24  1350  			subs->frame_limit = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1351  			period_elapsed = 1;
edcd3633e72a15 Daniel Mack          2012-04-12  1352  			if (subs->fmt_type == UAC_FORMAT_TYPE_II) {
0dbf51c865c64e Takashi Iwai         2021-08-30  1353  				if (transfer_done > 0) {
edcd3633e72a15 Daniel Mack          2012-04-12  1354  					/* FIXME: fill-max mode is not
edcd3633e72a15 Daniel Mack          2012-04-12  1355  					 * supported yet */
0dbf51c865c64e Takashi Iwai         2021-08-30  1356  					frames -= transfer_done;
0dbf51c865c64e Takashi Iwai         2021-08-30  1357  					counts -= transfer_done;
edcd3633e72a15 Daniel Mack          2012-04-12  1358  					urb->iso_frame_desc[i].length =
d303c5d38b37ee Takashi Iwai         2021-06-01  1359  						counts * stride;
0dbf51c865c64e Takashi Iwai         2021-08-30  1360  					transfer_done = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1361  				}
edcd3633e72a15 Daniel Mack          2012-04-12  1362  				i++;
edcd3633e72a15 Daniel Mack          2012-04-12  1363  				if (i < ctx->packets) {
edcd3633e72a15 Daniel Mack          2012-04-12  1364  					/* add a transfer delimiter */
edcd3633e72a15 Daniel Mack          2012-04-12  1365  					urb->iso_frame_desc[i].offset =
d303c5d38b37ee Takashi Iwai         2021-06-01  1366  						frames * stride;
edcd3633e72a15 Daniel Mack          2012-04-12  1367  					urb->iso_frame_desc[i].length = 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1368  					urb->number_of_packets++;
edcd3633e72a15 Daniel Mack          2012-04-12  1369  				}
edcd3633e72a15 Daniel Mack          2012-04-12  1370  				break;
edcd3633e72a15 Daniel Mack          2012-04-12  1371  			}
edcd3633e72a15 Daniel Mack          2012-04-12  1372  		}
976b6c064a9574 Alan Stern           2013-09-24  1373  		/* finish at the period boundary or after enough frames */
0dbf51c865c64e Takashi Iwai         2021-08-30  1374  		if ((period_elapsed || transfer_done >= subs->frame_limit) &&
976b6c064a9574 Alan Stern           2013-09-24  1375  		    !snd_usb_endpoint_implicit_feedback_sink(ep))
edcd3633e72a15 Daniel Mack          2012-04-12  1376  			break;
edcd3633e72a15 Daniel Mack          2012-04-12  1377  	}
d24f5061ee7b9b Daniel Mack          2013-04-17  1378
0dbf51c865c64e Takashi Iwai         2021-08-30  1379  	/* check the appl_ptr in low latency mode */
0dbf51c865c64e Takashi Iwai         2021-08-30  1380  	if (!subs->early_playback_start &&
0dbf51c865c64e Takashi Iwai         2021-08-30  1381  	    frames > snd_pcm_playback_hw_avail(runtime))
0dbf51c865c64e Takashi Iwai         2021-08-30 @1382  		return -EAGAIN;
0dbf51c865c64e Takashi Iwai         2021-08-30  1383
0dbf51c865c64e Takashi Iwai         2021-08-30  1384  	bytes = frames * stride;
0dbf51c865c64e Takashi Iwai         2021-08-30  1385  	subs->transfer_done = transfer_done;
6aa719d15a1903 Takashi Iwai         2020-11-23  1386  	if (unlikely(ep->cur_format == SNDRV_PCM_FORMAT_DSD_U16_LE &&
d24f5061ee7b9b Daniel Mack          2013-04-17  1387  		     subs->cur_audiofmt->dsd_dop)) {
d24f5061ee7b9b Daniel Mack          2013-04-17  1388  		fill_playback_urb_dsd_dop(subs, urb, bytes);
6aa719d15a1903 Takashi Iwai         2020-11-23  1389  	} else if (unlikely(ep->cur_format == SNDRV_PCM_FORMAT_DSD_U8 &&
44dcbbb1cd6156 Daniel Mack          2013-04-17  1390  			   subs->cur_audiofmt->dsd_bitrev)) {
4f083917994fdd Takashi Iwai         2021-06-01  1391  		fill_playback_urb_dsd_bitrev(subs, urb, bytes);
d24f5061ee7b9b Daniel Mack          2013-04-17  1392  	} else {
d24f5061ee7b9b Daniel Mack          2013-04-17  1393  		/* usual PCM */
e0570446773623 Ricard Wanderlof     2015-10-19  1394  		if (!subs->tx_length_quirk)
b97a936910c8d6 Ricard Wanderlof     2015-10-19  1395  			copy_to_urb(subs, urb, 0, stride, bytes);
e0570446773623 Ricard Wanderlof     2015-10-19  1396  		else
e0570446773623 Ricard Wanderlof     2015-10-19  1397  			bytes = copy_to_urb_quirk(subs, urb, stride, bytes);
e0570446773623 Ricard Wanderlof     2015-10-19  1398  			/* bytes is now amount of outgoing data */
d24f5061ee7b9b Daniel Mack          2013-04-17  1399  	}
d24f5061ee7b9b Daniel Mack          2013-04-17  1400
fbcfbf5f673847 Daniel Mack          2012-08-30  1401  	subs->last_frame_number = usb_get_current_frame_number(subs->dev);
fbcfbf5f673847 Daniel Mack          2012-08-30  1402
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1403  	if (subs->trigger_tstamp_pending_update) {
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1404  		/* this is the first actual URB submitted,
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1405  		 * update trigger timestamp to reflect actual start time
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1406  		 */
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1407  		snd_pcm_gettime(runtime, &runtime->trigger_tstamp);
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1408  		subs->trigger_tstamp_pending_update = false;
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1409  	}
ea33d359c4421f Pierre-Louis Bossart 2015-02-06  1410
4267c5a8f3133d Takashi Iwai         2021-08-27  1411  	if (period_elapsed && !subs->running && !subs->early_playback_start) {
307cc9baac5c07 Takashi Iwai         2021-07-07  1412  		subs->period_elapsed_pending = 1;
307cc9baac5c07 Takashi Iwai         2021-07-07  1413  		period_elapsed = 0;
307cc9baac5c07 Takashi Iwai         2021-07-07  1414  	}
edcd3633e72a15 Daniel Mack          2012-04-12  1415  	spin_unlock_irqrestore(&subs->lock, flags);
edcd3633e72a15 Daniel Mack          2012-04-12  1416  	urb->transfer_buffer_length = bytes;
edcd3633e72a15 Daniel Mack          2012-04-12  1417  	if (period_elapsed)
edcd3633e72a15 Daniel Mack          2012-04-12  1418  		snd_pcm_period_elapsed(subs->pcm_substream);
0dbf51c865c64e Takashi Iwai         2021-08-30  1419  	return 0;
edcd3633e72a15 Daniel Mack          2012-04-12  1420  }
edcd3633e72a15 Daniel Mack          2012-04-12  1421

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 27558 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20210831/25f1c935/attachment-0001.gz>


More information about the Alsa-devel mailing list