From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 96AF0A0547 for ; Fri, 11 Nov 2022 17:09:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 902D74014F; Fri, 11 Nov 2022 17:09:09 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id E69B640141 for ; Fri, 11 Nov 2022 17:09:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668182948; x=1699718948; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=Io5I23YPpyq52UCQszU+u0/DvCnWiLUj3pHXy048OhE=; b=FbWs6WfOmr31wKy0HZsOYGg/Lh7EBZrZCrjEJ82unAzoHZGpkQGgO8W2 plQjuZTxl6r+GI78IgWHxPzRUKJFy6lztoK1mJwHNOdnlm0TNoBnswZF3 jySIBZAV2Jg135wY/NQfQDB+q/ea/gI4SZP0eg+sf5UCcGqTkjkMFJVEZ usDQ3UQPT1zXfAKLEWKAifekU6v2uLvek0s/f0YbcV7VntV9k1UdA0vhp dzBCgWE0V5xRbFdiODxdO2eM3IN+LKEJxe7v4sFI9DSlToDOdVzxQY3FK cAILfu46MAByjZ2EXER07nzRKCi/joOn16uVmrPxYOJVWeu/OEdtmsID0 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10528"; a="338395300" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="338395300" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2022 08:09:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10528"; a="726827566" X-IronPort-AV: E=Sophos;i="5.96,156,1665471600"; d="scan'208";a="726827566" Received: from txandevlnx322.an.intel.com ([10.123.117.44]) by FMSMGA003.fm.intel.com with ESMTP; 11 Nov 2022 08:09:06 -0800 From: Ganapati Kundapura To: stable@dpdk.org Cc: Abhinandan Gujjar Subject: [PATCH 19.11] eventdev/crypto: fix multi-process Date: Fri, 11 Nov 2022 10:09:03 -0600 Message-Id: <20221111160903.2505516-1-ganapati.kundapura@intel.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org [ upstream commit 8f4ff7de39693dfd26336afea5e12e1a7d8fd9b0 ] Secondary process is not able to call the crypto adapter APIs stats get/reset as crypto adapter memzone memory is not accessible by secondary process. Added memzone lookup so that secondary process can call the crypto adapter APIs(stats_get etc) Fixes: 7901eac3409a ("eventdev: add crypto adapter implementation") Cc: stable@dpdk.org Signed-off-by: Ganapati Kundapura Acked-by: Abhinandan Gujjar diff --git a/lib/librte_eventdev/rte_event_crypto_adapter.c b/lib/librte_eventdev/rte_event_crypto_adapter.c index 3c330c6cb..4f67b8faf 100644 --- a/lib/librte_eventdev/rte_event_crypto_adapter.c +++ b/lib/librte_eventdev/rte_event_crypto_adapter.c @@ -29,6 +29,8 @@ */ #define CRYPTO_ENQ_FLUSH_THRESHOLD 1024 +#define ECA_ADAPTER_ARRAY "crypto_adapter_array" + struct rte_event_crypto_adapter { /* Event device identifier */ uint8_t eventdev_id; @@ -117,7 +119,6 @@ eca_valid_id(uint8_t id) static int eca_init(void) { - const char *name = "crypto_adapter_array"; const struct rte_memzone *mz; unsigned int sz; @@ -125,9 +126,10 @@ eca_init(void) RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE; sz = RTE_ALIGN(sz, RTE_CACHE_LINE_SIZE); - mz = rte_memzone_lookup(name); + mz = rte_memzone_lookup(ECA_ADAPTER_ARRAY); if (mz == NULL) { - mz = rte_memzone_reserve_aligned(name, sz, rte_socket_id(), 0, + mz = rte_memzone_reserve_aligned(ECA_ADAPTER_ARRAY, sz, + rte_socket_id(), 0, RTE_CACHE_LINE_SIZE); if (mz == NULL) { RTE_EDEV_LOG_ERR("failed to reserve memzone err = %" @@ -140,6 +142,22 @@ eca_init(void) return 0; } +static int +eca_memzone_lookup(void) +{ + const struct rte_memzone *mz; + + if (event_crypto_adapter == NULL) { + mz = rte_memzone_lookup(ECA_ADAPTER_ARRAY); + if (mz == NULL) + return -ENOMEM; + + event_crypto_adapter = mz->addr; + } + + return 0; +} + static inline struct rte_event_crypto_adapter * eca_id_to_adapter(uint8_t id) { @@ -1037,6 +1055,9 @@ rte_event_crypto_adapter_stats_get(uint8_t id, uint32_t i; int ret; + if (eca_memzone_lookup()) + return -ENOMEM; + EVENT_CRYPTO_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); adapter = eca_id_to_adapter(id); @@ -1078,6 +1099,9 @@ rte_event_crypto_adapter_stats_reset(uint8_t id) struct rte_eventdev *dev; uint32_t i; + if (eca_memzone_lookup()) + return -ENOMEM; + EVENT_CRYPTO_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); adapter = eca_id_to_adapter(id); -- 2.23.0