From: kernel test robot <lkp@intel.com>
To: Koichiro Den <den@valinux.co.jp>
Cc: oe-kbuild-all@lists.linux.dev
Subject: Re: [RFC PATCH v2 20/27] NTB: ntb_transport: Introduce remote eDMA backed transport mode
Date: Mon, 1 Dec 2025 12:38:26 +0800 [thread overview]
Message-ID: <202512011208.AnoqH1AC-lkp@intel.com> (raw)
In-Reply-To: <20251129160405.2568284-21-den@valinux.co.jp>
Hi Koichiro,
[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:
[auto build test WARNING on pci/next]
[also build test WARNING on next-20251128]
[cannot apply to jonmason-ntb/ntb-next pci/for-linus geert-renesas-devel/next linus/master v6.18]
[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/Koichiro-Den/PCI-endpoint-pci-epf-vntb-Use-array_index_nospec-on-mws_size-access/20251130-001424
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20251129160405.2568284-21-den%40valinux.co.jp
patch subject: [RFC PATCH v2 20/27] NTB: ntb_transport: Introduce remote eDMA backed transport mode
config: riscv-randconfig-r071-20251201 (https://download.01.org/0day-ci/archive/20251201/202512011208.AnoqH1AC-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project b3428bb966f1de8aa48375ffee0eba04ede133b7)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251201/202512011208.AnoqH1AC-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512011208.AnoqH1AC-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/ntb/ntb_transport_core.c:1286:15: warning: variable 'mw_num' set but not used [-Wunused-but-set-variable]
1286 | unsigned int mw_num, mw_count, qp_count;
| ^
drivers/ntb/ntb_transport_core.c:1286:23: warning: variable 'mw_count' set but not used [-Wunused-but-set-variable]
1286 | unsigned int mw_num, mw_count, qp_count;
| ^
drivers/ntb/ntb_transport_core.c:1286:33: warning: variable 'qp_count' set but not used [-Wunused-but-set-variable]
1286 | unsigned int mw_num, mw_count, qp_count;
| ^
>> drivers/ntb/ntb_transport_core.c:1367:47: warning: unused variable 'edma_backend_ops' [-Wunused-const-variable]
1367 | static const struct ntb_transport_backend_ops edma_backend_ops;
| ^~~~~~~~~~~~~~~~
4 warnings generated.
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for ARCH_HAS_ELF_CORE_EFLAGS
Depends on [n]: BINFMT_ELF [=y] && ELF_CORE [=n]
Selected by [y]:
- RISCV [=y]
smatch warnings:
drivers/ntb/ntb_transport_core.c:1425 ntb_transport_probe() warn: inconsistent indenting
drivers/ntb/ntb_transport_core.c:2412 ntb_transport_rx_enqueue() warn: variable dereferenced before check 'qp' (see line 2409)
drivers/ntb/ntb_transport_core.c:2451 ntb_transport_tx_enqueue() warn: variable dereferenced before check 'qp' (see line 2447)
vim +/edma_backend_ops +1367 drivers/ntb/ntb_transport_core.c
1281
1282 static int ntb_transport_init_queue(struct ntb_transport_ctx *nt,
1283 unsigned int qp_num)
1284 {
1285 struct ntb_transport_qp *qp;
> 1286 unsigned int mw_num, mw_count, qp_count;
1287
1288 mw_count = nt->mw_count;
1289 qp_count = nt->qp_count;
1290
1291 mw_num = QP_TO_MW(nt, qp_num);
1292
1293 qp = &nt->qp_vec[qp_num];
1294 qp->qp_num = qp_num;
1295 qp->transport = nt;
1296 qp->ndev = nt->ndev;
1297 qp->client_ready = false;
1298 qp->event_handler = NULL;
1299 ntb_qp_link_context_reset(qp);
1300
1301 if (nt->debugfs_node_dir) {
1302 char debugfs_name[8];
1303
1304 snprintf(debugfs_name, sizeof(debugfs_name), "qp%d", qp_num);
1305 qp->debugfs_dir = debugfs_create_dir(debugfs_name,
1306 nt->debugfs_node_dir);
1307
1308 qp->debugfs_stats = debugfs_create_file("stats", S_IRUSR,
1309 qp->debugfs_dir, qp,
1310 &ntb_qp_debugfs_stats_fops);
1311 } else {
1312 qp->debugfs_dir = NULL;
1313 qp->debugfs_stats = NULL;
1314 }
1315
1316 INIT_DELAYED_WORK(&qp->link_work, ntb_qp_link_work);
1317 INIT_WORK(&qp->link_cleanup, ntb_qp_link_cleanup_work);
1318
1319 spin_lock_init(&qp->ntb_rx_q_lock);
1320 spin_lock_init(&qp->ntb_tx_free_q_lock);
1321
1322 INIT_LIST_HEAD(&qp->rx_post_q);
1323 INIT_LIST_HEAD(&qp->rx_pend_q);
1324 INIT_LIST_HEAD(&qp->rx_free_q);
1325 INIT_LIST_HEAD(&qp->tx_free_q);
1326
1327 tasklet_init(&qp->rxc_db_work, ntb_transport_rxc_db,
1328 (unsigned long)qp);
1329
1330 return 0;
1331 }
1332
1333 static unsigned int ntb_transport_default_tx_free_entry(struct ntb_transport_qp *qp)
1334 {
1335 unsigned int head = qp->tx_index;
1336 unsigned int tail = qp->remote_rx_info->entry;
1337
1338 return tail >= head ? tail - head : qp->tx_max_entry + tail - head;
1339 }
1340
1341 static int ntb_transport_default_rx_enqueue(struct ntb_transport_qp *qp,
1342 struct ntb_queue_entry *entry)
1343 {
1344 ntb_list_add(&qp->ntb_rx_q_lock, &entry->entry, &qp->rx_pend_q);
1345
1346 if (qp->active)
1347 tasklet_schedule(&qp->rxc_db_work);
1348
1349 return 0;
1350 }
1351
1352 static void ntb_transport_default_rx_poll(struct ntb_transport_qp *qp);
1353 static int ntb_transport_default_tx_enqueue(struct ntb_transport_qp *qp,
1354 struct ntb_queue_entry *entry,
1355 void *cb, void *data, unsigned int len,
1356 unsigned int flags);
1357
1358 static const struct ntb_transport_backend_ops default_backend_ops = {
1359 .setup_qp_mw = ntb_transport_default_setup_qp_mw,
1360 .tx_free_entry = ntb_transport_default_tx_free_entry,
1361 .tx_enqueue = ntb_transport_default_tx_enqueue,
1362 .rx_enqueue = ntb_transport_default_rx_enqueue,
1363 .rx_poll = ntb_transport_default_rx_poll,
1364 .debugfs_stats_show = ntb_transport_default_debugfs_stats_show,
1365 };
1366
> 1367 static const struct ntb_transport_backend_ops edma_backend_ops;
1368
1369 static int ntb_transport_probe(struct ntb_client *self, struct ntb_dev *ndev)
1370 {
1371 struct ntb_transport_ctx *nt;
1372 struct ntb_transport_mw *mw;
1373 unsigned int mw_count, qp_count, spad_count, max_mw_count_for_spads;
1374 u64 qp_bitmap;
1375 int node;
1376 int rc, i;
1377
1378 mw_count = ntb_peer_mw_count(ndev);
1379
1380 if (!ndev->ops->mw_set_trans) {
1381 dev_err(&ndev->dev, "Inbound MW based NTB API is required\n");
1382 return -EINVAL;
1383 }
1384
1385 if (ntb_db_is_unsafe(ndev))
1386 dev_dbg(&ndev->dev,
1387 "doorbell is unsafe, proceed anyway...\n");
1388 if (ntb_spad_is_unsafe(ndev))
1389 dev_dbg(&ndev->dev,
1390 "scratchpad is unsafe, proceed anyway...\n");
1391
1392 if (ntb_peer_port_count(ndev) != NTB_DEF_PEER_CNT)
1393 dev_warn(&ndev->dev, "Multi-port NTB devices unsupported\n");
1394
1395 node = dev_to_node(&ndev->dev);
1396
1397 nt = kzalloc_node(sizeof(*nt), GFP_KERNEL, node);
1398 if (!nt)
1399 return -ENOMEM;
1400
1401 nt->ndev = ndev;
1402
1403 #ifdef CONFIG_NTB_TRANSPORT_EDMA
1404 if (use_remote_edma) {
1405 rc = ntb_transport_edma_init(nt, &mw_count);
1406 if (rc) {
1407 nt->mw_count = 0;
1408 goto err;
1409 }
1410 nt->backend_ops = edma_backend_ops;
1411
1412 /*
1413 * On remote eDMA mode, we reserve a read channel for Host->EP
1414 * interruption.
1415 */
1416 use_msi = false;
1417 } else
1418 #endif
1419 nt->backend_ops = default_backend_ops;
1420
1421 /*
1422 * If we are using MSI, and have at least one extra memory window,
1423 * we will reserve the last MW for the MSI window.
1424 */
> 1425 if (use_msi && mw_count > 1) {
1426 rc = ntb_msi_init(ndev, ntb_transport_msi_desc_changed);
1427 if (!rc) {
1428 mw_count -= 1;
1429 nt->use_msi = true;
1430 }
1431 }
1432
1433 spad_count = ntb_spad_count(ndev);
1434
1435 /* Limit the MW's based on the availability of scratchpads */
1436
1437 if (spad_count < NTB_TRANSPORT_MIN_SPADS) {
1438 nt->mw_count = 0;
1439 rc = -EINVAL;
1440 goto err;
1441 }
1442
1443 max_mw_count_for_spads = (spad_count - MW0_SZ_HIGH) / 2;
1444 nt->mw_count = min(mw_count, max_mw_count_for_spads);
1445
1446 nt->msi_spad_offset = nt->mw_count * 2 + MW0_SZ_HIGH;
1447
1448 nt->mw_vec = kcalloc_node(mw_count, sizeof(*nt->mw_vec),
1449 GFP_KERNEL, node);
1450 if (!nt->mw_vec) {
1451 rc = -ENOMEM;
1452 goto err;
1453 }
1454
1455 for (i = 0; i < mw_count; i++) {
1456 mw = &nt->mw_vec[i];
1457
1458 rc = ntb_peer_mw_get_addr(ndev, i, &mw->phys_addr,
1459 &mw->phys_size);
1460 if (rc)
1461 goto err1;
1462
1463 mw->vbase = ioremap_wc(mw->phys_addr, mw->phys_size);
1464 if (!mw->vbase) {
1465 rc = -ENOMEM;
1466 goto err1;
1467 }
1468
1469 mw->buff_size = 0;
1470 mw->xlat_size = 0;
1471 mw->virt_addr = NULL;
1472 mw->dma_addr = 0;
1473 }
1474
1475 qp_bitmap = ntb_db_valid_mask(ndev);
1476
1477 qp_count = ilog2(qp_bitmap);
1478 if (nt->use_msi) {
1479 qp_count -= 1;
1480 nt->msi_db_mask = BIT_ULL(qp_count);
1481 ntb_db_clear_mask(ndev, nt->msi_db_mask);
1482 }
1483
1484 if (max_num_clients && max_num_clients < qp_count)
1485 qp_count = max_num_clients;
1486
1487 qp_bitmap &= BIT_ULL(qp_count) - 1;
1488
1489 nt->qp_count = qp_count;
1490 nt->qp_bitmap = qp_bitmap;
1491 nt->qp_bitmap_free = qp_bitmap;
1492
1493 nt->qp_vec = kcalloc_node(qp_count, sizeof(*nt->qp_vec),
1494 GFP_KERNEL, node);
1495 if (!nt->qp_vec) {
1496 rc = -ENOMEM;
1497 goto err1;
1498 }
1499
1500 if (nt_debugfs_dir) {
1501 nt->debugfs_node_dir =
1502 debugfs_create_dir(pci_name(ndev->pdev),
1503 nt_debugfs_dir);
1504 }
1505
1506 for (i = 0; i < qp_count; i++) {
1507 rc = ntb_transport_init_queue(nt, i);
1508 if (rc)
1509 goto err2;
1510
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-12-01 4:39 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-29 16:03 [RFC PATCH v2 00/27] NTB transport backed by remote DW eDMA Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 01/27] PCI: endpoint: pci-epf-vntb: Use array_index_nospec() on mws_size[] access Koichiro Den
2025-12-01 18:59 ` Frank Li
2025-11-29 16:03 ` [RFC PATCH v2 02/27] PCI: endpoint: pci-epf-vntb: Add mwN_offset configfs attributes Koichiro Den
2025-12-01 19:11 ` Frank Li
2025-12-02 6:23 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 03/27] NTB: epf: Handle mwN_offset for inbound MW regions Koichiro Den
2025-12-01 19:14 ` Frank Li
2025-12-02 6:23 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 04/27] PCI: endpoint: Add inbound mapping ops to EPC core Koichiro Den
2025-12-01 19:19 ` Frank Li
2025-12-02 6:25 ` Koichiro Den
2025-12-02 15:58 ` Frank Li
2025-12-03 14:12 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 05/27] PCI: dwc: ep: Implement EPC inbound mapping support Koichiro Den
2025-12-01 19:32 ` Frank Li
2025-12-02 6:26 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 06/27] PCI: endpoint: pci-epf-vntb: Use pci_epc_map_inbound() for MW mapping Koichiro Den
2025-12-01 19:34 ` Frank Li
2025-12-02 6:26 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 07/27] NTB: Add offset parameter to MW translation APIs Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 08/27] PCI: endpoint: pci-epf-vntb: Propagate MW offset from configfs when present Koichiro Den
2025-12-01 19:35 ` Frank Li
2025-11-29 16:03 ` [RFC PATCH v2 09/27] NTB: ntb_transport: Support offsetted partial memory windows Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 10/27] NTB: core: Add .get_pci_epc() to ntb_dev_ops Koichiro Den
2025-12-01 19:39 ` Frank Li
2025-12-02 6:31 ` Koichiro Den
2025-12-01 21:08 ` Dave Jiang
2025-12-02 6:32 ` Koichiro Den
2025-12-02 14:49 ` Dave Jiang
2025-12-03 15:02 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 11/27] NTB: epf: vntb: Implement .get_pci_epc() callback Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 12/27] damengine: dw-edma: Fix MSI data values for multi-vector IMWr interrupts Koichiro Den
2025-12-01 19:46 ` Frank Li
2025-12-02 6:32 ` Koichiro Den
2025-12-18 6:52 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 13/27] NTB: ntb_transport: Use seq_file for QP stats debugfs Koichiro Den
2025-12-01 19:50 ` Frank Li
2025-12-02 6:33 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 14/27] NTB: ntb_transport: Move TX memory window setup into setup_qp_mw() Koichiro Den
2025-12-01 20:02 ` Frank Li
2025-12-02 6:33 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 15/27] NTB: ntb_transport: Dynamically determine qp count Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 16/27] NTB: ntb_transport: Introduce get_dma_dev() helper Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 17/27] NTB: epf: Reserve a subset of MSI vectors for non-NTB users Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 18/27] NTB: ntb_transport: Introduce ntb_transport_backend_ops Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 19/27] PCI: dwc: ep: Cache MSI outbound iATU mapping Koichiro Den
2025-12-01 20:41 ` Frank Li
2025-12-02 6:35 ` Koichiro Den
2025-12-02 9:32 ` Niklas Cassel
2025-12-02 15:20 ` Frank Li
2025-12-03 8:40 ` Koichiro Den
2025-12-03 10:39 ` Niklas Cassel
2025-12-03 14:36 ` Koichiro Den
2025-12-03 14:40 ` Koichiro Den
2025-12-04 17:10 ` Frank Li
2025-12-05 16:28 ` Frank Li
2025-12-02 6:32 ` Niklas Cassel
2025-12-03 8:30 ` Koichiro Den
2025-12-03 10:19 ` Niklas Cassel
2025-12-03 14:56 ` Koichiro Den
2025-12-08 7:57 ` Niklas Cassel
2025-12-09 8:15 ` Niklas Cassel
2025-12-12 3:56 ` Koichiro Den
2025-12-22 5:10 ` Krishna Chaitanya Chundru
2025-12-22 7:50 ` Niklas Cassel
2025-12-22 8:14 ` Krishna Chaitanya Chundru
2025-12-22 10:21 ` Manivannan Sadhasivam
2025-12-12 3:38 ` Manivannan Sadhasivam
2025-12-18 8:28 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 20/27] NTB: ntb_transport: Introduce remote eDMA backed transport mode Koichiro Den
2025-12-01 4:38 ` kernel test robot [this message]
2025-12-01 5:49 ` kernel test robot
2025-12-01 18:45 ` kernel test robot
2025-12-01 21:41 ` Frank Li
2025-12-02 6:43 ` Koichiro Den
2025-12-02 15:42 ` Frank Li
2025-12-03 8:53 ` Koichiro Den
2025-12-03 16:14 ` Frank Li
2025-12-04 15:42 ` Koichiro Den
2025-12-04 20:16 ` Frank Li
2025-12-05 3:04 ` Koichiro Den
2025-12-05 15:06 ` Frank Li
2025-12-18 4:34 ` Koichiro Den
2025-12-01 21:46 ` Dave Jiang
2025-12-02 6:59 ` Koichiro Den
2025-12-02 14:53 ` Dave Jiang
2025-12-03 14:19 ` Koichiro Den
2025-11-29 16:03 ` [RFC PATCH v2 21/27] NTB: epf: Provide db_vector_count/db_vector_mask callbacks Koichiro Den
2025-11-29 16:04 ` [RFC PATCH v2 22/27] ntb_netdev: Multi-queue support Koichiro Den
2025-11-29 16:04 ` [RFC PATCH v2 23/27] NTB: epf: Add per-SoC quirk to cap MRRS for DWC eDMA (128B for R-Car) Koichiro Den
2025-12-01 20:47 ` Frank Li
2025-11-29 16:04 ` [RFC PATCH v2 24/27] iommu: ipmmu-vmsa: Add PCIe ch0 to devices_allowlist Koichiro Den
2025-11-29 16:04 ` [RFC PATCH v2 25/27] iommu: ipmmu-vmsa: Add support for reserved regions Koichiro Den
2025-11-29 16:04 ` [RFC PATCH v2 26/27] arm64: dts: renesas: Add Spider RC/EP DTs for NTB with remote DW PCIe eDMA Koichiro Den
2025-11-29 16:04 ` [RFC PATCH v2 27/27] NTB: epf: Add an additional memory window (MW2) barno mapping on Renesas R-Car Koichiro Den
2025-12-01 22:02 ` [RFC PATCH v2 00/27] NTB transport backed by remote DW eDMA Frank Li
2025-12-02 6:20 ` Koichiro Den
2025-12-02 16:07 ` Frank Li
2025-12-03 8:43 ` Koichiro Den
-- strict thread matches above, loose matches on Subject: below --
2025-12-02 20:43 [RFC PATCH v2 20/27] NTB: ntb_transport: Introduce remote eDMA backed transport mode kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202512011208.AnoqH1AC-lkp@intel.com \
--to=lkp@intel.com \
--cc=den@valinux.co.jp \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.