Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/117856 _apply patch failure_ Submitter: Andrew Boyer Date: Tuesday, October 11 2022 00:50:25 Applied on: CommitID:f13604fad12a81383da7b04821a4befb3d01e2ed Apply patch set 117856 failed: Checking patch doc/guides/nics/ionic.rst... error: while searching for: This support was added prior to version 1.0. For help upgrading older versions, please contact AMD Pensando support. Building DPDK ------------- error: patch failed: doc/guides/nics/ionic.rst:32 Checking patch doc/guides/rel_notes/release_22_11.rst... error: while searching for: * Added support for mbuf fast free. * Added support for advertising packet types. * Added support for descriptor status functions. * **Added support for MACsec in rte_security.** error: patch failed: doc/guides/rel_notes/release_22_11.rst:168 Checking patch drivers/net/ionic/ionic.h... Hunk #1 succeeded at 26 (offset 2 lines). error: while searching for: uint32_t link_speed; uint32_t nintrs; bool intrs[IONIC_INTR_CTRL_REGS_MAX]; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; void *bus_dev; }; /** ionic_admin_ctx - Admin command context. error: patch failed: drivers/net/ionic/ionic.h:62 Checking patch drivers/net/ionic/ionic_dev.h... error: while searching for: struct ionic_qcq; struct rte_mempool; struct rte_eth_dev; struct ionic_dev_intf { int (*setup)(struct ionic_adapter *adapter); void (*copy_bus_info)(struct ionic_adapter *adapter, struct rte_eth_dev *eth_dev); int (*configure_intr)(struct ionic_adapter *adapter); error: patch failed: drivers/net/ionic/ionic_dev.h:176 Checking patch drivers/net/ionic/ionic_dev_pci.c... error: drivers/net/ionic/ionic_dev_pci.c: does not exist in index Checking patch drivers/net/ionic/ionic_ethdev.c... error: while searching for: adapter->intf = intf; /* Discover ionic dev resources */ err = ionic_setup(adapter); if (err) { error: patch failed: drivers/net/ionic/ionic_ethdev.c:1118 Checking patch drivers/net/ionic/ionic_lif.c... Hunk #1 succeeded at 686 (offset 26 lines). error: while searching for: int err; flags = IONIC_QCQ_F_SG; seg_size = rte_pktmbuf_data_room_size(mb_pool); error: patch failed: drivers/net/ionic/ionic_lif.c:744 Hunk #3 succeeded at 779 (offset -44 lines). Hunk #4 succeeded at 977 (offset -36 lines). Hunk #5 succeeded at 1523 (offset -46 lines). Hunk #6 succeeded at 1574 (offset -49 lines). Checking patch drivers/net/ionic/ionic_lif.h... Hunk #2 succeeded at 117 (offset -10 lines). Checking patch drivers/net/ionic/ionic_rxtx.c... error: while searching for: int err; struct ionic_txq_desc *desc_base = q->base; rte_prefetch0(&desc_base[q->head_idx]); rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); if (tx_pkts) { error: patch failed: drivers/net/ionic/ionic_rxtx.c:600 error: while searching for: while (nb_tx < nb_pkts) { uint16_t next_idx = Q_NEXT_TO_POST(q, 1); rte_prefetch0(&desc_base[next_idx]); rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); if (nb_tx + 1 < nb_pkts) { error: patch failed: drivers/net/ionic/ionic_rxtx.c:619 error: while searching for: /* Prefetch 4 x 16B comp */ rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); /* Prefetch 4 x 16B descriptors */ rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); ionic_rx_clean_one(rxq, cq_desc, rx_svc); error: patch failed: drivers/net/ionic/ionic_rxtx.c:1172 Applying patch doc/guides/nics/ionic.rst with 1 reject... Rejected hunk #1. Applying patch doc/guides/rel_notes/release_22_11.rst with 1 reject... Rejected hunk #1. Applying patch drivers/net/ionic/ionic.h with 1 reject... Hunk #1 applied cleanly. Rejected hunk #2. Applying patch drivers/net/ionic/ionic_dev.h with 1 reject... Rejected hunk #1. Applying patch drivers/net/ionic/ionic_ethdev.c with 1 reject... Rejected hunk #1. Applying patch drivers/net/ionic/ionic_lif.c with 1 reject... Hunk #1 applied cleanly. Rejected hunk #2. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Hunk #6 applied cleanly. Applied patch drivers/net/ionic/ionic_lif.h cleanly. Applying patch drivers/net/ionic/ionic_rxtx.c with 3 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. diff a/doc/guides/nics/ionic.rst b/doc/guides/nics/ionic.rst (rejected hunks) @@ -32,6 +32,18 @@ The ionic PMD requires firmware which supports 16 segment transmit SGLs. This support was added prior to version 1.0. For help upgrading older versions, please contact AMD Pensando support. +Runtime Configuration +--------------------- + +- ``Queue in CMB support`` (default ``0``) + + Queue memory can be allocated from the Controller Memory Buffer (CMB) using + the ``ionic_cmb`` ``devargs`` parameter. + + For example:: + + -a 0000:b5:00.0,ionic_cmb=1 + Building DPDK ------------- diff a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst (rejected hunks) @@ -168,6 +168,7 @@ New Features * Added support for mbuf fast free. * Added support for advertising packet types. * Added support for descriptor status functions. + * Added Q-in-CMB feature controlled by devarg ionic_cmb. * **Added support for MACsec in rte_security.** diff a/drivers/net/ionic/ionic.h b/drivers/net/ionic/ionic.h (rejected hunks) @@ -62,9 +65,11 @@ struct ionic_adapter { uint32_t link_speed; uint32_t nintrs; bool intrs[IONIC_INTR_CTRL_REGS_MAX]; + bool q_in_cmb; bool link_up; char fw_version[IONIC_DEVINFO_FWVERS_BUFLEN]; void *bus_dev; + uint64_t cmb_offset; }; /** ionic_admin_ctx - Admin command context. diff a/drivers/net/ionic/ionic_dev.h b/drivers/net/ionic/ionic_dev.h (rejected hunks) @@ -176,9 +176,12 @@ struct ionic_adapter; struct ionic_qcq; struct rte_mempool; struct rte_eth_dev; +struct rte_devargs; struct ionic_dev_intf { int (*setup)(struct ionic_adapter *adapter); + int (*devargs)(struct ionic_adapter *adapter, + struct rte_devargs *devargs); void (*copy_bus_info)(struct ionic_adapter *adapter, struct rte_eth_dev *eth_dev); int (*configure_intr)(struct ionic_adapter *adapter); diff a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c (rejected hunks) @@ -1118,6 +1118,15 @@ eth_ionic_dev_probe(void *bus_dev, struct rte_device *rte_dev, adapter->intf = intf; + /* Parse device arguments */ + if (adapter->intf->devargs) { + err = (*adapter->intf->devargs)(adapter, rte_dev->devargs); + if (err) { + IONIC_PRINT(ERR, "Cannot parse device arguments"); + goto err_free_adapter; + } + } + /* Discover ionic dev resources */ err = ionic_setup(adapter); if (err) { diff a/drivers/net/ionic/ionic_lif.c b/drivers/net/ionic/ionic_lif.c (rejected hunks) @@ -744,6 +759,8 @@ ionic_rx_qcq_alloc(struct ionic_lif *lif, uint32_t socket_id, uint32_t index, int err; flags = IONIC_QCQ_F_SG; + if (lif->state & IONIC_LIF_F_Q_IN_CMB) + flags |= IONIC_QCQ_F_CMB; seg_size = rte_pktmbuf_data_room_size(mb_pool); diff a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c (rejected hunks) @@ -600,7 +600,8 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, int err; struct ionic_txq_desc *desc_base = q->base; - rte_prefetch0(&desc_base[q->head_idx]); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[q->head_idx]); rte_prefetch0(IONIC_INFO_PTR(q, q->head_idx)); if (tx_pkts) { @@ -619,7 +620,8 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, while (nb_tx < nb_pkts) { uint16_t next_idx = Q_NEXT_TO_POST(q, 1); - rte_prefetch0(&desc_base[next_idx]); + if (!(txq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&desc_base[next_idx]); rte_prefetch0(IONIC_INFO_PTR(q, next_idx)); if (nb_tx + 1 < nb_pkts) { @@ -1172,7 +1174,8 @@ ionic_rxq_service(struct ionic_rx_qcq *rxq, uint32_t work_to_do, /* Prefetch 4 x 16B comp */ rte_prefetch0(&cq_desc_base[Q_NEXT_TO_SRVC(cq, 4)]); /* Prefetch 4 x 16B descriptors */ - rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); + if (!(rxq->flags & IONIC_QCQ_F_CMB)) + rte_prefetch0(&q_desc_base[Q_NEXT_TO_POST(q, 4)]); ionic_rx_clean_one(rxq, cq_desc, rx_svc); https://lab.dpdk.org/results/dashboard/patchsets/23897/ UNH-IOL DPDK Community Lab