]> git.droids-corp.org - dpdk.git/commitdiff
event/octeontx2: add devargs to limit timer adapters
authorPavan Nikhilesh <pbhagavatula@marvell.com>
Fri, 28 Jun 2019 18:23:52 +0000 (23:53 +0530)
committerJerin Jacob <jerinj@marvell.com>
Wed, 3 Jul 2019 04:57:22 +0000 (06:57 +0200)
Add devargs to limit the max number of TIM rings reserved on probe.
Since, TIM rings are HW resources we can avoid starving other
applications by not grabbing all the rings.

Example:
--dev "0002:0e:00.0,tim_rings_lmt=2"

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
doc/guides/eventdevs/octeontx2.rst
drivers/event/octeontx2/otx2_tim_evdev.c
drivers/event/octeontx2/otx2_tim_evdev.h

index bbc66558f8bf6c38d78910aa902abee9cdcbb1e5..baa866a1e1289d5b325a0d712ebde7aa7531bc49 100644 (file)
@@ -122,6 +122,16 @@ Runtime Config Options
 
     --dev "0002:0e:00.0,tim_stats_ena=1"
 
+- ``TIM limit max rings reserved``
+
+  The ``tim_rings_lmt`` devargs can be used to limit the max number of TIM
+  rings i.e. event timer adapter reserved on probe. Since, TIM rings are HW
+  resources we can avoid starving other applications by not grabbing all the
+  rings.
+  For example::
+
+    --dev "0002:0e:00.0,tim_rings_lmt=5"
+
 Debugging Options
 ~~~~~~~~~~~~~~~~~
 
index f08a3014bed3ac8225f7d9337d0c9605e826c502..c18079bfdae6660ff7f3f4785a2415c94811ce86 100644 (file)
@@ -528,6 +528,7 @@ otx2_tim_caps_get(const struct rte_eventdev *evdev, uint64_t flags,
 #define OTX2_TIM_DISABLE_NPA   "tim_disable_npa"
 #define OTX2_TIM_CHNK_SLOTS    "tim_chnk_slots"
 #define OTX2_TIM_STATS_ENA     "tim_stats_ena"
+#define OTX2_TIM_RINGS_LMT     "tim_rings_lmt"
 
 static void
 tim_parse_devargs(struct rte_devargs *devargs, struct otx2_tim_evdev *dev)
@@ -547,6 +548,8 @@ tim_parse_devargs(struct rte_devargs *devargs, struct otx2_tim_evdev *dev)
                           &parse_kvargs_value, &dev->chunk_slots);
        rte_kvargs_process(kvlist, OTX2_TIM_STATS_ENA, &parse_kvargs_flag,
                           &dev->enable_stats);
+       rte_kvargs_process(kvlist, OTX2_TIM_RINGS_LMT, &parse_kvargs_value,
+                          &dev->min_ring_cnt);
 }
 
 void
@@ -584,7 +587,8 @@ otx2_tim_init(struct rte_pci_device *pci_dev, struct otx2_dev *cmn_dev)
                goto mz_free;
        }
 
-       dev->nb_rings = rsrc_cnt->tim;
+       dev->nb_rings = dev->min_ring_cnt ?
+               RTE_MIN(dev->min_ring_cnt, rsrc_cnt->tim) : rsrc_cnt->tim;
 
        if (!dev->nb_rings) {
                otx2_tim_dbg("No TIM Logical functions provisioned.");
index c8d16b03f35c4e5acbc9dc892d9b8375d79034a5..5af724ef9d179fdf27308124c89cb300a26619c7 100644 (file)
@@ -121,6 +121,7 @@ struct otx2_tim_evdev {
        /* Dev args */
        uint8_t disable_npa;
        uint16_t chunk_slots;
+       uint16_t min_ring_cnt;
        uint8_t enable_stats;
        /* MSIX offsets */
        uint16_t tim_msixoff[OTX2_MAX_TIM_RINGS];