Re: [PATCH v9 6/8] spi: spi-qpic: add driver for QCOM SPI NAND flash Interface

From: kernel test robot
Date: Sat Sep 14 2024 - 07:43:14 EST


Hi Md,

kernel test robot noticed the following build errors:

[auto build test ERROR on mtd/nand/next]
[also build test ERROR on broonie-spi/for-next robh/for-next linus/master v6.11-rc7 next-20240913]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Md-Sadre-Alam/spi-dt-bindings-Introduce-qcom-spi-qpic-snand/20240912-141925
base: https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next
patch link: https://lore.kernel.org/r/20240912061503.3468147-7-quic_mdalam%40quicinc.com
patch subject: [PATCH v9 6/8] spi: spi-qpic: add driver for QCOM SPI NAND flash Interface
config: arm64-randconfig-r063-20240914 (https://download.01.org/0day-ci/archive/20240914/202409141932.JyCSfNIc-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240914/202409141932.JyCSfNIc-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409141932.JyCSfNIc-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

aarch64-linux-ld: Unexpected GOT/PLT entries detected!
aarch64-linux-ld: Unexpected run-time procedure linkages detected!
aarch64-linux-ld: drivers/spi/spi-qpic-snand.o: in function `qcom_spi_remove':
>> drivers/spi/spi-qpic-snand.c:1597:(.text+0x1f8): undefined reference to `qcom_nandc_unalloc'
aarch64-linux-ld: drivers/spi/spi-qpic-snand.o: in function `qcom_spi_probe':
>> drivers/spi/spi-qpic-snand.c:1540:(.text+0x680): undefined reference to `qcom_nandc_alloc'
aarch64-linux-ld: drivers/spi/spi-qpic-snand.o: in function `qcom_spi_init':
>> drivers/spi/spi-qpic-snand.c:192:(.text+0x6d0): undefined reference to `qcom_write_reg_dma'
>> aarch64-linux-ld: drivers/spi/spi-qpic-snand.c:197:(.text+0x6f4): undefined reference to `qcom_write_reg_dma'
aarch64-linux-ld: drivers/spi/spi-qpic-snand.c:199:(.text+0x710): undefined reference to `qcom_write_reg_dma'
aarch64-linux-ld: drivers/spi/spi-qpic-snand.c:200:(.text+0x72c): undefined reference to `qcom_write_reg_dma'
>> aarch64-linux-ld: drivers/spi/spi-qpic-snand.c:203:(.text+0x734): undefined reference to `qcom_submit_descs'
aarch64-linux-ld: drivers/spi/spi-qpic-snand.o: in function `qcom_spi_probe':
drivers/spi/spi-qpic-snand.c:1576:(.text+0x754): undefined reference to `qcom_nandc_unalloc'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_submit_wmt_recv_urb':
drivers/bluetooth/btmtk.c:531:(.text+0x928): undefined reference to `usb_alloc_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:537:(.text+0x958): undefined reference to `usb_free_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:550:(.text+0x998): undefined reference to `usb_free_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:561:(.text+0x9ec): undefined reference to `usb_anchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:562:(.text+0x9f8): undefined reference to `usb_submit_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:567:(.text+0xa3c): undefined reference to `usb_unanchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:570:(.text+0xa44): undefined reference to `usb_free_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_submit_intr_urb':
drivers/bluetooth/btmtk.c:1174:(.text+0xab4): undefined reference to `usb_alloc_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1181:(.text+0xadc): undefined reference to `usb_free_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1195:(.text+0xb94): undefined reference to `usb_anchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1197:(.text+0xba0): undefined reference to `usb_submit_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1202:(.text+0xbe4): undefined reference to `usb_unanchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1205:(.text+0xbec): undefined reference to `usb_free_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_suspend':
drivers/bluetooth/btmtk.c:1265:(.text+0xce0): undefined reference to `usb_kill_anchored_urbs'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_hci_wmt_sync':
drivers/bluetooth/btmtk.c:610:(.text+0xdc0): undefined reference to `usb_autopm_get_interface'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:618:(.text+0xe24): undefined reference to `usb_autopm_put_interface'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:625:(.text+0xe3c): undefined reference to `usb_autopm_put_interface'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_recv_acl':
drivers/bluetooth/btmtk.c:946:(.text+0x13a0): undefined reference to `usb_disable_autosuspend'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `__set_mtk_intr_interface':
drivers/bluetooth/btmtk.c:991:(.text+0x14c8): undefined reference to `usb_set_interface'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_isointf_init':
drivers/bluetooth/btmtk.c:1224:(.text+0x15d8): undefined reference to `usb_kill_anchored_urbs'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_wmt_recv':
drivers/bluetooth/btmtk.c:508:(.text+0x1884): undefined reference to `usb_anchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:509:(.text+0x1890): undefined reference to `usb_submit_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:518:(.text+0x18dc): undefined reference to `usb_unanchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `alloc_mtk_intr_urb':
drivers/bluetooth/btmtk.c:1037:(.text+0x1958): undefined reference to `usb_alloc_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_reg_read':
drivers/bluetooth/btmtk.c:790:(.text+0x1af0): undefined reference to `usb_control_msg'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_uhw_reg_write':
drivers/bluetooth/btmtk.c:738:(.text+0x1bd0): undefined reference to `usb_control_msg'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_usb_uhw_reg_read':
drivers/bluetooth/btmtk.c:761:(.text+0x1cbc): undefined reference to `usb_control_msg'
aarch64-linux-ld: drivers/bluetooth/btmtk.o: in function `btmtk_intr_complete':
drivers/bluetooth/btmtk.c:1145:(.text+0x1f48): undefined reference to `usb_anchor_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1147:(.text+0x1f54): undefined reference to `usb_submit_urb'
aarch64-linux-ld: drivers/bluetooth/btmtk.c:1157:(.text+0x1fb4): undefined reference to `usb_unanchor_urb'


vim +1597 drivers/spi/spi-qpic-snand.c

1463
1464 static int qcom_spi_probe(struct platform_device *pdev)
1465 {
1466 struct device *dev = &pdev->dev;
1467 struct spi_controller *ctlr;
1468 struct qcom_nand_controller *snandc;
1469 struct qpic_spi_nand *qspi;
1470 struct qpic_ecc *ecc;
1471 struct resource *res;
1472 const void *dev_data;
1473 int ret;
1474
1475 ecc = devm_kzalloc(dev, sizeof(*ecc), GFP_KERNEL);
1476 if (!ecc)
1477 return -ENOMEM;
1478
1479 qspi = devm_kzalloc(dev, sizeof(*qspi), GFP_KERNEL);
1480 if (!qspi)
1481 return -ENOMEM;
1482
1483 ctlr = __devm_spi_alloc_controller(dev, sizeof(*snandc), false);
1484 if (!ctlr)
1485 return -ENOMEM;
1486
1487 platform_set_drvdata(pdev, ctlr);
1488
1489 snandc = spi_controller_get_devdata(ctlr);
1490 qspi->snandc = snandc;
1491
1492 snandc->dev = dev;
1493 snandc->qspi = qspi;
1494 snandc->qspi->ctlr = ctlr;
1495 snandc->qspi->ecc = ecc;
1496
1497 dev_data = of_device_get_match_data(dev);
1498 if (!dev_data) {
1499 dev_err(&pdev->dev, "failed to get device data\n");
1500 return -ENODEV;
1501 }
1502
1503 snandc->props = dev_data;
1504 snandc->dev = &pdev->dev;
1505
1506 snandc->core_clk = devm_clk_get(dev, "core");
1507 if (IS_ERR(snandc->core_clk))
1508 return PTR_ERR(snandc->core_clk);
1509
1510 snandc->aon_clk = devm_clk_get(dev, "aon");
1511 if (IS_ERR(snandc->aon_clk))
1512 return PTR_ERR(snandc->aon_clk);
1513
1514 snandc->qspi->iomacro_clk = devm_clk_get(dev, "iom");
1515 if (IS_ERR(snandc->qspi->iomacro_clk))
1516 return PTR_ERR(snandc->qspi->iomacro_clk);
1517
1518 snandc->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
1519 if (IS_ERR(snandc->base))
1520 return PTR_ERR(snandc->base);
1521
1522 snandc->base_phys = res->start;
1523 snandc->base_dma = dma_map_resource(dev, res->start, resource_size(res),
1524 DMA_BIDIRECTIONAL, 0);
1525 if (dma_mapping_error(dev, snandc->base_dma))
1526 return -ENXIO;
1527
1528 ret = clk_prepare_enable(snandc->core_clk);
1529 if (ret)
1530 goto err_dis_core_clk;
1531
1532 ret = clk_prepare_enable(snandc->aon_clk);
1533 if (ret)
1534 goto err_dis_aon_clk;
1535
1536 ret = clk_prepare_enable(snandc->qspi->iomacro_clk);
1537 if (ret)
1538 goto err_dis_iom_clk;
1539
> 1540 ret = qcom_nandc_alloc(snandc);
1541 if (ret)
1542 goto err_snand_alloc;
1543
1544 ret = qcom_spi_init(snandc);
1545 if (ret)
1546 goto err_spi_init;
1547
1548 /* setup ECC engine */
1549 snandc->qspi->ecc_eng.dev = &pdev->dev;
1550 snandc->qspi->ecc_eng.integration = NAND_ECC_ENGINE_INTEGRATION_PIPELINED;
1551 snandc->qspi->ecc_eng.ops = &qcom_spi_ecc_engine_ops_pipelined;
1552 snandc->qspi->ecc_eng.priv = snandc;
1553
1554 ret = nand_ecc_register_on_host_hw_engine(&snandc->qspi->ecc_eng);
1555 if (ret) {
1556 dev_err(&pdev->dev, "failed to register ecc engine:%d\n", ret);
1557 goto err_spi_init;
1558 }
1559
1560 ctlr->num_chipselect = QPIC_QSPI_NUM_CS;
1561 ctlr->mem_ops = &qcom_spi_mem_ops;
1562 ctlr->mem_caps = &qcom_spi_mem_caps;
1563 ctlr->dev.of_node = pdev->dev.of_node;
1564 ctlr->mode_bits = SPI_TX_DUAL | SPI_RX_DUAL |
1565 SPI_TX_QUAD | SPI_RX_QUAD;
1566
1567 ret = spi_register_controller(ctlr);
1568 if (ret) {
1569 dev_err(&pdev->dev, "spi_register_controller failed.\n");
1570 goto err_spi_init;
1571 }
1572
1573 return 0;
1574
1575 err_spi_init:
1576 qcom_nandc_unalloc(snandc);
1577 err_snand_alloc:
1578 clk_disable_unprepare(snandc->qspi->iomacro_clk);
1579 err_dis_iom_clk:
1580 clk_disable_unprepare(snandc->aon_clk);
1581 err_dis_aon_clk:
1582 clk_disable_unprepare(snandc->core_clk);
1583 err_dis_core_clk:
1584 dma_unmap_resource(dev, res->start, resource_size(res),
1585 DMA_BIDIRECTIONAL, 0);
1586 return ret;
1587 }
1588
1589 static void qcom_spi_remove(struct platform_device *pdev)
1590 {
1591 struct spi_controller *ctlr = platform_get_drvdata(pdev);
1592 struct qcom_nand_controller *snandc = spi_controller_get_devdata(ctlr);
1593 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1594
1595 spi_unregister_controller(ctlr);
1596
> 1597 qcom_nandc_unalloc(snandc);
1598
1599 clk_disable_unprepare(snandc->aon_clk);
1600 clk_disable_unprepare(snandc->core_clk);
1601 clk_disable_unprepare(snandc->qspi->iomacro_clk);
1602
1603 dma_unmap_resource(&pdev->dev, snandc->base_dma, resource_size(res),
1604 DMA_BIDIRECTIONAL, 0);
1605 }
1606

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki