CC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Takashi Iwai <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 90d856e71443a2fcacca8e7539bac44d9cb3f7ab commit: c19935f04784dcaa456fcd1d1b1fbf3a85765ff1 [1791/3296] ALSA: nm256: Allocate resources with device-managed APIs :::::: branch date: 35 hours ago :::::: commit date: 5 days ago config: x86_64-randconfig-m001-20210724 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: sound/pci/nm256/nm256.c:1578 snd_nm256_create() warn: 'pci' not released on lines: 1490,1506. vim +/pci +1578 sound/pci/nm256/nm256.c ^1da177e4c3f41 Linus Torvalds 2005-04-16 1448 e23e7a14362072 Bill Pemberton 2012-12-06 1449 static int c19935f04784dc Takashi Iwai 2021-07-15 1450 snd_nm256_create(struct snd_card *card, struct pci_dev *pci) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1451 { c19935f04784dc Takashi Iwai 2021-07-15 1452 struct nm256 *chip = card->private_data; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1453 int err, pval; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1454 u32 addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1455 c19935f04784dc Takashi Iwai 2021-07-15 1456 err = pcim_enable_device(pci); 36f74c7ff9e6de Takashi Iwai 2021-06-08 1457 if (err < 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1458 return err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1459 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1460 chip->card = card; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1461 chip->pci = pci; 3f05f868f1112b Takashi Iwai 2005-11-17 1462 chip->use_cache = use_cache; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1463 spin_lock_init(&chip->reg_lock); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1464 chip->irq = -1; 62932df8fb20ba Ingo Molnar 2006-01-16 1465 mutex_init(&chip->irq_mutex); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1466 3f05f868f1112b Takashi Iwai 2005-11-17 1467 /* store buffer sizes in bytes */ 3f05f868f1112b Takashi Iwai 2005-11-17 1468 chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize = playback_bufsize * 1024; 3f05f868f1112b Takashi Iwai 2005-11-17 1469 chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize = capture_bufsize * 1024; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1470 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1471 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1472 * The NM256 has two memory ports. The first port is nothing ^1da177e4c3f41 Linus Torvalds 2005-04-16 1473 * more than a chunk of video RAM, which is used as the I/O ring ^1da177e4c3f41 Linus Torvalds 2005-04-16 1474 * buffer. The second port has the actual juicy stuff (like the ^1da177e4c3f41 Linus Torvalds 2005-04-16 1475 * mixer and the playback engine control registers). ^1da177e4c3f41 Linus Torvalds 2005-04-16 1476 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1477 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1478 chip->buffer_addr = pci_resource_start(pci, 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1479 chip->cport_addr = pci_resource_start(pci, 1); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1480 c19935f04784dc Takashi Iwai 2021-07-15 1481 if (pci_request_regions(pci, card->driver)) c19935f04784dc Takashi Iwai 2021-07-15 1482 return err; c19935f04784dc Takashi Iwai 2021-07-15 1483 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1484 /* Init the memory port info. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1485 /* remap control port (#2) */ c19935f04784dc Takashi Iwai 2021-07-15 1486 chip->cport = devm_ioremap(&pci->dev, chip->cport_addr, NM_PORT2_SIZE); c19935f04784dc Takashi Iwai 2021-07-15 1487 if (!chip->cport) { a3fe03f412daf4 Takashi Iwai 2014-02-25 1488 dev_err(card->dev, "unable to map control port %lx\n", a3fe03f412daf4 Takashi Iwai 2014-02-25 1489 chip->cport_addr); c19935f04784dc Takashi Iwai 2021-07-15 1490 return -ENOMEM; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1491 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1492 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1493 if (!strcmp(card->driver, "NM256AV")) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1494 /* Ok, try to see if this is a non-AC97 version of the hardware. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1495 pval = snd_nm256_readw(chip, NM_MIXER_PRESENCE); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1496 if ((pval & NM_PRESENCE_MASK) != NM_PRESENCE_VALUE) { 3f05f868f1112b Takashi Iwai 2005-11-17 1497 if (! force_ac97) { a3fe03f412daf4 Takashi Iwai 2014-02-25 1498 dev_err(card->dev, a3fe03f412daf4 Takashi Iwai 2014-02-25 1499 "no ac97 is found!\n"); a3fe03f412daf4 Takashi Iwai 2014-02-25 1500 dev_err(card->dev, a3fe03f412daf4 Takashi Iwai 2014-02-25 1501 "force the driver to load by passing in the module parameter\n"); a3fe03f412daf4 Takashi Iwai 2014-02-25 1502 dev_err(card->dev, a3fe03f412daf4 Takashi Iwai 2014-02-25 1503 " force_ac97=1\n"); a3fe03f412daf4 Takashi Iwai 2014-02-25 1504 dev_err(card->dev, a3fe03f412daf4 Takashi Iwai 2014-02-25 1505 "or try sb16, opl3sa2, or cs423x drivers instead.\n"); c19935f04784dc Takashi Iwai 2021-07-15 1506 return -ENXIO; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1507 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1508 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1509 chip->buffer_end = 2560 * 1024; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1510 chip->interrupt = snd_nm256_interrupt; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1511 chip->mixer_status_offset = NM_MIXER_STATUS_OFFSET; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1512 chip->mixer_status_mask = NM_MIXER_READY_MASK; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1513 } else { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1514 /* Not sure if there is any relevant detect for the ZX or not. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1515 if (snd_nm256_readb(chip, 0xa0b) != 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1516 chip->buffer_end = 6144 * 1024; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1517 else ^1da177e4c3f41 Linus Torvalds 2005-04-16 1518 chip->buffer_end = 4096 * 1024; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1519 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1520 chip->interrupt = snd_nm256_interrupt_zx; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1521 chip->mixer_status_offset = NM2_MIXER_STATUS_OFFSET; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1522 chip->mixer_status_mask = NM2_MIXER_READY_MASK; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1523 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1524 10754f53450a2c Takashi Iwai 2005-11-17 1525 chip->buffer_size = chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize + 10754f53450a2c Takashi Iwai 2005-11-17 1526 chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1527 if (chip->use_cache) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1528 chip->buffer_size += NM_TOTAL_COEFF_COUNT * 4; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1529 else ^1da177e4c3f41 Linus Torvalds 2005-04-16 1530 chip->buffer_size += NM_MAX_PLAYBACK_COEF_SIZE + NM_MAX_RECORD_COEF_SIZE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1531 3f05f868f1112b Takashi Iwai 2005-11-17 1532 if (buffer_top >= chip->buffer_size && buffer_top < chip->buffer_end) 3f05f868f1112b Takashi Iwai 2005-11-17 1533 chip->buffer_end = buffer_top; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1534 else { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1535 /* get buffer end pointer from signature */ 36f74c7ff9e6de Takashi Iwai 2021-06-08 1536 err = snd_nm256_peek_for_sig(chip); 36f74c7ff9e6de Takashi Iwai 2021-06-08 1537 if (err < 0) c19935f04784dc Takashi Iwai 2021-07-15 1538 return err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1539 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1540 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1541 chip->buffer_start = chip->buffer_end - chip->buffer_size; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1542 chip->buffer_addr += chip->buffer_start; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1543 a3fe03f412daf4 Takashi Iwai 2014-02-25 1544 dev_info(card->dev, "Mapping port 1 from 0x%x - 0x%x\n", ^1da177e4c3f41 Linus Torvalds 2005-04-16 1545 chip->buffer_start, chip->buffer_end); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1546 c19935f04784dc Takashi Iwai 2021-07-15 1547 chip->buffer = devm_ioremap(&pci->dev, chip->buffer_addr, c19935f04784dc Takashi Iwai 2021-07-15 1548 chip->buffer_size); c19935f04784dc Takashi Iwai 2021-07-15 1549 if (!chip->buffer) { a3fe03f412daf4 Takashi Iwai 2014-02-25 1550 dev_err(card->dev, "unable to map ring buffer at %lx\n", a3fe03f412daf4 Takashi Iwai 2014-02-25 1551 chip->buffer_addr); c19935f04784dc Takashi Iwai 2021-07-15 1552 return -ENOMEM; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1553 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1554 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1555 /* set offsets */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1556 addr = chip->buffer_start; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1557 chip->streams[SNDRV_PCM_STREAM_PLAYBACK].buf = addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1558 addr += chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1559 chip->streams[SNDRV_PCM_STREAM_CAPTURE].buf = addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1560 addr += chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1561 if (chip->use_cache) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1562 chip->all_coeff_buf = addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1563 } else { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1564 chip->coeff_buf[SNDRV_PCM_STREAM_PLAYBACK] = addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1565 addr += NM_MAX_PLAYBACK_COEF_SIZE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1566 chip->coeff_buf[SNDRV_PCM_STREAM_CAPTURE] = addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1567 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1568 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1569 /* Fixed setting. */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1570 chip->mixer_base = NM_MIXER_OFFSET; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1571 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1572 chip->coeffs_current = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1573 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1574 snd_nm256_init_chip(chip); c19935f04784dc Takashi Iwai 2021-07-15 1575 card->private_free = snd_nm256_free; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1576 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1577 // pci_set_master(pci); /* needed? */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 @1578 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1579 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1580 :::::: The code at line 1578 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <[email protected]> :::::: CC: Linus Torvalds <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
