All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, frode.nordahl@canonical.com,
	mattias.ronnblom@ericsson.com, anatoly.burakov@intel.com,
	stable@dpdk.org, "David Hunt" <david.hunt@intel.com>,
	"Sivaprasad Tummala" <sivaprasad.tummala@amd.com>,
	"Morten Brørup" <mb@smartsharesystems.com>,
	"Konstantin Ananyev" <konstantin.ananyev@huawei.com>,
	"Chengwen Feng" <fengchengwen@huawei.com>,
	"Stephen Hemminger" <stephen@networkplumber.org>
Subject: [PATCH v3 3/5] power: defer lcore variable allocation
Date: Mon, 10 Feb 2025 22:31:56 +0100	[thread overview]
Message-ID: <20250210213158.4165701-4-david.marchand@redhat.com> (raw)
In-Reply-To: <20250210213158.4165701-1-david.marchand@redhat.com>

The lcore variable in this code unit is only used through
rte_power_ethdev_pmgmt_queue_*() public symbols.

Defer the unconditional lcore variable allocation in those symbols.

Fixes: 130643319579 ("power: keep per-lcore state in lcore variable")
Cc: stable@dpdk.org

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Frode Nordahl <frode.nordahl@canonical.com>
---
Changes since v1:
- moved some unrelated comment on queue_id,
- renamed initialisation helper,

---
 lib/power/rte_power_pmd_mgmt.c | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/lib/power/rte_power_pmd_mgmt.c b/lib/power/rte_power_pmd_mgmt.c
index a2fff3b765..369ce3c354 100644
--- a/lib/power/rte_power_pmd_mgmt.c
+++ b/lib/power/rte_power_pmd_mgmt.c
@@ -72,6 +72,22 @@ struct __rte_cache_aligned pmd_core_cfg {
 };
 static RTE_LCORE_VAR_HANDLE(struct pmd_core_cfg, lcore_cfgs);
 
+static void
+init_lcore_cfgs(void)
+{
+	struct pmd_core_cfg *lcore_cfg;
+	unsigned int lcore_id;
+
+	if (lcore_cfgs != NULL)
+		return;
+
+	RTE_LCORE_VAR_ALLOC(lcore_cfgs);
+
+	/* initialize all tailqs */
+	RTE_LCORE_VAR_FOREACH(lcore_id, lcore_cfg, lcore_cfgs)
+		TAILQ_INIT(&lcore_cfg->head);
+}
+
 static inline bool
 queue_equal(const union queue *l, const union queue *r)
 {
@@ -517,6 +533,7 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id, uint16_t port_id,
 		goto end;
 	}
 
+	init_lcore_cfgs();
 	lcore_cfg = RTE_LCORE_VAR_LCORE(lcore_id, lcore_cfgs);
 
 	/* check if other queues are stopped as well */
@@ -618,6 +635,8 @@ rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 	}
 
 	/* no need to check queue id as wrong queue id would not be enabled */
+
+	init_lcore_cfgs();
 	lcore_cfg = RTE_LCORE_VAR_LCORE(lcore_id, lcore_cfgs);
 
 	/* check if other queues are stopped as well */
@@ -768,16 +787,8 @@ rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore)
 }
 
 RTE_INIT(rte_power_ethdev_pmgmt_init) {
-	unsigned int lcore_id;
-	struct pmd_core_cfg *lcore_cfg;
 	int i;
 
-	RTE_LCORE_VAR_ALLOC(lcore_cfgs);
-
-	/* initialize all tailqs */
-	RTE_LCORE_VAR_FOREACH(lcore_id, lcore_cfg, lcore_cfgs)
-		TAILQ_INIT(&lcore_cfg->head);
-
 	/* initialize config defaults */
 	emptypoll_max = 512;
 	pause_duration = 1;
-- 
2.48.1


  parent reply	other threads:[~2025-02-10 21:32 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-05 17:57 [PATCH 0/3] Defer lcore variables allocation David Marchand
2024-12-05 17:57 ` [PATCH 1/3] random: defer seeding to EAL init David Marchand
2024-12-06 11:09   ` Mattias Rönnblom
2024-12-16  9:38   ` Burakov, Anatoly
2024-12-05 17:57 ` [PATCH 2/3] power: defer lcore variable allocation David Marchand
2024-12-06 11:29   ` Mattias Rönnblom
2024-12-12  7:57     ` David Marchand
2024-12-13  6:58       ` Mattias Rönnblom
2024-12-16 10:02         ` David Marchand
2024-12-05 17:57 ` [PATCH 3/3] eal/x86: defer power intrinsics " David Marchand
2024-12-06 11:32   ` Mattias Rönnblom
2024-12-06 11:01 ` [PATCH 0/3] Defer lcore variables allocation Mattias Rönnblom
2024-12-06 15:55   ` Thomas Monjalon
2024-12-10 17:09     ` Stephen Hemminger
2024-12-09 11:03   ` David Marchand
2024-12-09 15:39     ` Mattias Rönnblom
2024-12-09 17:40       ` David Marchand
2024-12-10  9:41         ` Mattias Rönnblom
2024-12-16 10:01           ` Burakov, Anatoly
2024-12-16  9:42 ` Burakov, Anatoly
2024-12-16  9:49   ` David Marchand
2024-12-17  9:06     ` David Marchand
2024-12-18 20:10     ` Mattias Rönnblom
2024-12-17  8:59 ` [PATCH v2 0/5] " David Marchand
2024-12-17  8:59   ` [PATCH v2 1/5] eal: check lcore variable handle David Marchand
2024-12-18 11:18     ` Burakov, Anatoly
2024-12-17  8:59   ` [PATCH v2 2/5] random: defer seeding to EAL init David Marchand
2024-12-18 16:35     ` Stephen Hemminger
2024-12-18 17:03       ` Mattias Rönnblom
2024-12-17  8:59   ` [PATCH v2 3/5] power: defer lcore variable allocation David Marchand
2024-12-18 11:17     ` Burakov, Anatoly
2024-12-17  8:59   ` [PATCH v2 4/5] power: reduce memory footprint of per-lcore state David Marchand
2024-12-18 11:17     ` Burakov, Anatoly
2024-12-17  8:59   ` [PATCH v2 5/5] eal/x86: defer power intrinsics variable allocation David Marchand
2024-12-18 11:17     ` Burakov, Anatoly
2024-12-19 16:19   ` [PATCH v2 0/5] Defer lcore variables allocation Frode Nordahl
2025-02-10 21:31 ` [PATCH v3 " David Marchand
2025-02-10 21:31   ` [PATCH v3 1/5] eal: check lcore variable handle David Marchand
2025-02-10 21:31   ` [PATCH v3 2/5] random: defer seeding to EAL init David Marchand
2025-02-10 21:31   ` David Marchand [this message]
2025-02-10 21:31   ` [PATCH v3 4/5] power: reduce memory footprint of per-lcore state David Marchand
2025-02-10 21:31   ` [PATCH v3 5/5] eal/x86: defer power intrinsics variable allocation David Marchand
2025-02-11 13:01   ` [PATCH v3 0/5] Defer lcore variables allocation David Marchand
2025-02-12  0:47   ` fengchengwen

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=20250210213158.4165701-4-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=fengchengwen@huawei.com \
    --cc=frode.nordahl@canonical.com \
    --cc=konstantin.ananyev@huawei.com \
    --cc=mattias.ronnblom@ericsson.com \
    --cc=mb@smartsharesystems.com \
    --cc=sivaprasad.tummala@amd.com \
    --cc=stable@dpdk.org \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /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.