From patchwork Wed Apr 19 09:54:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sivaprasad Tummala X-Patchwork-Id: 126258 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C14242987; Wed, 19 Apr 2023 11:54:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BDCB940A79; Wed, 19 Apr 2023 11:54:43 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2041.outbound.protection.outlook.com [40.107.237.41]) by mails.dpdk.org (Postfix) with ESMTP id AC0BE4021F for ; Wed, 19 Apr 2023 11:54:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fh3VIIBEAVYYygBKR7HBpXvUOFG0WDAyfI3Rr8i/1Qnj9IdKHTwQhfHW2++GxxOkDgCqclQaub/upe4mlPXCao3ojAVbZlJmvR/3QgTaGmWmHycpoMNLNGArI91PXI8ilF9wWL5B8uV8IAKgYPb4yf2GEIlJIhW3KKjVvEDZsL9+dqJteaiAtW4/KH9jKECjYU1SFBgTBNsLX5qJAUPVvkuav2JGwcSxNlmVOlaThO9tgwKd/RY1gfNMWJnV9D+r9gF0E+oYEig8fA4WhEHrApBqKWUjSzXCCNMuuMj+5hW7z8YUGFwPimkO4lmGwKLbyfDCcYeD7Vntn6GxRwsXWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6CmSDcrY6NIaCs2aKbxVGTxT8ciFBxyTJJuRRzNY2OI=; b=SHJeb+xVWrdCQsJ8ozhfsSUgKN6cBoB8Ehhl49YWer2X3Q85KT0f8AlXFuMpkWT0r87D+VZcWWZ3M60iMmfNh0kf72gMx/gFKbeSaYJfzfxKZXE0jTQkmEqzqk1AiBOX35QSJocn8u3GAl9oW/Hh7InNJbRYsrdsbsJstOAlufdBFbJG253mHWj3PYf+bztKIly3n+TL8j4+p8zhV5NhX5ypf3e+vZcP4MtT3uQDihulvB0ijfutk+TGHsnxGAjuuTwVTrpNQUd/TQO8WsX/LJD2hQy/5JruRjCNm0YjEmzcispkP0A1fst0IFZuRfu/gaUUd8x0hMQAn105a2R0tQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6CmSDcrY6NIaCs2aKbxVGTxT8ciFBxyTJJuRRzNY2OI=; b=SWFXipedW5/gf3vSpXoh9GlFF9HNftGh7ine41Hbw03/jE6BMC2EQHmHlhkmqMyIFegP6+BzHPBakIOX/zkMMaeFxhutAzi7tz7sd31e0vg50X+kBUNgw2hCB5RPeVgClOC2ZzNSczM7b3mOgDymQuz9FNrnm5JZlMuMbwVWiOU= Received: from DS7PR03CA0143.namprd03.prod.outlook.com (2603:10b6:5:3b4::28) by LV2PR12MB5989.namprd12.prod.outlook.com (2603:10b6:408:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.30; Wed, 19 Apr 2023 09:54:41 +0000 Received: from DM6NAM11FT004.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3b4:cafe::5a) by DS7PR03CA0143.outlook.office365.com (2603:10b6:5:3b4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22 via Frontend Transport; Wed, 19 Apr 2023 09:54:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DM6NAM11FT004.mail.protection.outlook.com (10.13.172.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6319.22 via Frontend Transport; Wed, 19 Apr 2023 09:54:40 +0000 Received: from telco-siena.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 19 Apr 2023 04:54:39 -0500 From: Sivaprasad Tummala To: , , CC: Subject: [RFC PATCH 1/5] eventdev: add power monitoring API on event port Date: Wed, 19 Apr 2023 02:54:23 -0700 Message-ID: <20230419095427.563185-1-sivaprasad.tummala@amd.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT004:EE_|LV2PR12MB5989:EE_ X-MS-Office365-Filtering-Correlation-Id: 34882e7d-882d-4600-5735-08db40bc180e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pzhCY7h9SBKwzn3CTuV9K4hw6cXV1l6tZ1P0Wbp/s/7KaSwHQq2K7swQ6z2Vgp1x1MhfrECnXlK5Nq9VOnkZdIGqPAuU5MYNsIZXs/pCt0iow7fr0my1mlpT7VSlSgrYbWU6R6pQ1dc3IUwmrbjfDS+KakZuvZsk7+kwmCvPbIaICGW5b9SHR6Mz9GKh8QhnYIExhv6EgwwjfSFWOXFiQUbgpfhH0FZuKXQD04ZttZHDRbD7UbTJQE58CqikdZYt7G9z5IRxippGS4LqZEkrTWL6WcEUiu1ZxRt9/lJxz0SMSU2QjiU5CXdl21GU1Sm+lWDcZrNjC0b1XsOARHRcbGDb76LF3yvGHB0SHkm5y/dTefkyiaTSYCUnRmBq3weLMTyW82zi1KW0q636TEbKF8owOAYRVKh12M0Rr4HqdY0ftp05FnZnc32+U6VRlaGO3qeeaCfieJWAFSNoneb48t9bbgzItxL3vRf7o8DWDCezBQHZAGmY+BnIH+D6xcdn/wwyYLe3Zbu13CCMOKo3kKImAlm3dI1DsjQhXD+6DZHsu+JyKzSRnd8PsOmOfYn4rp/GoD3yI/lj1fAogYFd1dd0Z/8tIFwBw9eRIXSQLDzm8aVggZHC3AoShG65kNmoqbqUBupZhsPaCUqDUNuSJZLYMjkeKYHNVa1gn97H+qOcv5GLw6cp0UeuCEWUU1dwd91lsRTMoW2yUXes4PEqHTLV0uoOu1eCFCztG6CEgHc= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230028)(4636009)(346002)(136003)(376002)(396003)(39860400002)(451199021)(36840700001)(46966006)(40470700004)(5660300002)(7696005)(40460700003)(478600001)(2906002)(4326008)(70206006)(70586007)(36756003)(44832011)(86362001)(8936002)(81166007)(41300700001)(6666004)(82740400003)(316002)(356005)(82310400005)(8676002)(40480700001)(110136005)(1076003)(26005)(336012)(426003)(36860700001)(16526019)(2616005)(47076005)(186003)(83380400001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2023 09:54:40.3898 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 34882e7d-882d-4600-5735-08db40bc180e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT004.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5989 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org A new API to allow power monitoring condition on event port to optimize power when no events are arriving on an event port for the worker core to process in an eventdev based pipelined application. Signed-off-by: Sivaprasad Tummala --- lib/eventdev/eventdev_pmd.h | 23 +++++++++++++++++++++++ lib/eventdev/rte_eventdev.c | 24 ++++++++++++++++++++++++ lib/eventdev/rte_eventdev.h | 25 +++++++++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h index aebab26852..7b12f80f57 100644 --- a/lib/eventdev/eventdev_pmd.h +++ b/lib/eventdev/eventdev_pmd.h @@ -481,6 +481,26 @@ typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port, typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev, void *port); +/** + * @internal + * Get address of memory location whose contents will change whenever there is + * new data to be received on an Event port. + * + * @param port + * Eventdev port pointer. + * @param pmc + * The pointer to power-optimized monitoring condition structure. + * @return + * Negative errno value on error, 0 on success. + * + * @retval 0 + * Success + * @retval -EINVAL + * Invalid parameters + */ +typedef int (*event_get_monitor_addr_t)(void *port, + struct rte_power_monitor_cond *pmc); + /** * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue() * @@ -1376,6 +1396,9 @@ struct eventdev_ops { eventdev_dump_t dump; /* Dump internal information */ + /** Get power monitoring condition for event port */ + event_get_monitor_addr_t get_monitor_addr; + eventdev_xstats_get_t xstats_get; /**< Get extended device statistics. */ eventdev_xstats_get_names_t xstats_get_names; diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c index 6ab4524332..ff77194783 100644 --- a/lib/eventdev/rte_eventdev.c +++ b/lib/eventdev/rte_eventdev.c @@ -860,6 +860,30 @@ rte_event_port_attr_get(uint8_t dev_id, uint8_t port_id, uint32_t attr_id, return 0; } +int +rte_event_port_get_monitor_addr(uint8_t dev_id, uint8_t port_id, + struct rte_power_monitor_cond *pmc) +{ + struct rte_eventdev *dev; + + RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); + dev = &rte_eventdevs[dev_id]; + if (!is_valid_port(dev, port_id)) { + RTE_EDEV_LOG_ERR("Invalid port_id=%" PRIu8, port_id); + return -EINVAL; + } + + if (pmc == NULL) { + RTE_EDEV_LOG_ERR("devid %u port %u power monitor condition is NULL\n", + dev_id, port_id); + return -EINVAL; + } + + if (*dev->dev_ops->get_monitor_addr == NULL) + return -ENOTSUP; + return (*dev->dev_ops->get_monitor_addr)(dev->data->ports[port_id], pmc); +} + int rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id, uint32_t *attr_value) diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h index a90e23ac8b..841b1fb9b5 100644 --- a/lib/eventdev/rte_eventdev.h +++ b/lib/eventdev/rte_eventdev.h @@ -215,6 +215,7 @@ extern "C" { #include #include #include +#include #include "rte_eventdev_trace_fp.h" @@ -984,6 +985,30 @@ int rte_event_port_attr_get(uint8_t dev_id, uint8_t port_id, uint32_t attr_id, uint32_t *attr_value); +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * Retrieve the monitor condition for a given event port. + * + * @param dev_id + * Eventdev id + * @param port_id + * Eventdev port id + * @param pmc + * The pointer to power-optimized monitoring condition structure. + * + * @return + * - 0: Success. + * -ENOTSUP: Operation not supported. + * -EINVAL: Invalid parameters. + * -ENODEV: Invalid device ID. + */ +__rte_experimental +int +rte_event_port_get_monitor_addr(uint8_t dev_id, uint8_t port_id, + struct rte_power_monitor_cond *pmc); + /** * Start an event device. *