get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/125875/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 125875,
    "url": "http://patches.dpdk.org/api/patches/125875/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230410102149.198389-1-Sivaprasad.Tummala@amd.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230410102149.198389-1-Sivaprasad.Tummala@amd.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230410102149.198389-1-Sivaprasad.Tummala@amd.com",
    "date": "2023-04-10T10:21:49",
    "name": "[v1] power: amd power monitor support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "93144950636b40ac045d3f5585fd7a181b278226",
    "submitter": {
        "id": 2510,
        "url": "http://patches.dpdk.org/api/people/2510/?format=api",
        "name": "Sivaprasad Tummala",
        "email": "Sivaprasad.Tummala@amd.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230410102149.198389-1-Sivaprasad.Tummala@amd.com/mbox/",
    "series": [
        {
            "id": 27650,
            "url": "http://patches.dpdk.org/api/series/27650/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=27650",
            "date": "2023-04-10T10:21:49",
            "name": "[v1] power: amd power monitor support",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/27650/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/125875/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/125875/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 549DD42910;\n\tMon, 10 Apr 2023 12:22:46 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E5D2340DDC;\n\tMon, 10 Apr 2023 12:22:45 +0200 (CEST)",
            "from NAM10-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam10on2086.outbound.protection.outlook.com [40.107.93.86])\n by mails.dpdk.org (Postfix) with ESMTP id 1C0A640A81\n for <dev@dpdk.org>; Mon, 10 Apr 2023 12:22:44 +0200 (CEST)",
            "from BN0PR02CA0031.namprd02.prod.outlook.com (2603:10b6:408:e5::6)\n by CY8PR12MB7148.namprd12.prod.outlook.com (2603:10b6:930:5c::11) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.31; Mon, 10 Apr\n 2023 10:22:42 +0000",
            "from BN8NAM11FT052.eop-nam11.prod.protection.outlook.com\n (2603:10b6:408:e5:cafe::7b) by BN0PR02CA0031.outlook.office365.com\n (2603:10b6:408:e5::6) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.34 via Frontend\n Transport; Mon, 10 Apr 2023 10:22:42 +0000",
            "from SATLEXMB04.amd.com (165.204.84.17) by\n BN8NAM11FT052.mail.protection.outlook.com (10.13.177.210) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.6298.26 via Frontend Transport; Mon, 10 Apr 2023 10:22:41 +0000",
            "from telco-siena.amd.com (10.180.168.240) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 10 Apr\n 2023 05:22:35 -0500"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=XWIOe5R/miiSE9GpkfFMJZtHHclKwnl3PicFb3FSVYC3A/zv26X1jEK8JNboXfMZHLm6NFEvUGHHRHpeMkCJhEuWwMDwxPpcslBSsOClog9CsOoVM9aI8i5vQNcUKtXbjrb66Bw3b82cuKHI0W1LTPnAncT587Eajxib+V7bEBxL9RXOT6CRsFN4n9NyNOmZmlLDnZJW6h/0f9gPe0pl1ycnOOhQRBVxe81XKexwYytRBH1rLk+FJwfjwFPPv0wWOqCgXS/ukc2dy6uhhQMqvxrWnN3IWwSg7ooaoWRMmPy0K75pG4AnRF/9Z6dkDMdZGRKMjbr/albenVyyyIfDzg==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n 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;\n bh=KiTw48/Do4Hb7RqdI8Yd46KpyvlMTp2P4ArSLhD2ch8=;\n b=IIETjQnTywEgzgyT0L1SMoeo5i2iO8y+hpVNRnSLtZCpiEsVmyLZBiAwLTfyjdq83Grhw52Lw8s89oyKI4dMWMyke17JVR+lCEpE0xug9hxmgizyVh/l+ZPidbgHn2NoXMBd0Tjx4Fjtf/90WNKpnmHQcyYGp+8CE3AKYQj7hLPh/BnGNpr9+NvH9w2kBlO+colyyD/SnrGKaDZsS3nlfi7MnKwqhlvqPw6lMtgneZajWsLD3gpzbo0OScZxEJrKt2D2tnDaNTtJ+AtAaxq2k5kB4b6AOGaEWFjpn7bjaf/2yNbFmnlHlOJ1y7ysddejKYCRImWQa4pejslTwIX/+A==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=intel.com smtp.mailfrom=amd.com; dmarc=pass\n (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=KiTw48/Do4Hb7RqdI8Yd46KpyvlMTp2P4ArSLhD2ch8=;\n b=1eaSITYQ7nGGsgzwP3mcoCl/n/WYQJOZVKzeBbLRXbUe3Z6Cbif8dgrE3RK3TmPqEDin299c50cH1xgQTjiFViWO63ME6b2XZxl+K5bxQWCwBvmQJxKA52PldI/5O8kc9HD9rSjsqhwtuB/hJLwRKn6lwdw8D40xgPYhfHvVNlQ=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C",
        "From": "Sivaprasad Tummala <Sivaprasad.Tummala@amd.com>",
        "To": "<david.hunt@intel.com>",
        "CC": "<dev@dpdk.org>",
        "Subject": "[PATCH v1] power: amd power monitor support",
        "Date": "Mon, 10 Apr 2023 03:21:49 -0700",
        "Message-ID": "<20230410102149.198389-1-Sivaprasad.Tummala@amd.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Originating-IP": "[10.180.168.240]",
        "X-ClientProxiedBy": "SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n (10.181.40.145)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN8NAM11FT052:EE_|CY8PR12MB7148:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "63811f9d-7dd0-4d12-c2a5-08db39ad8492",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n ASiGqR1niW6c+pUo3xf4WOGEw3vR4Zoqk/XX0XyDVVq70T+Rktn/RVDUlM8dlTz2JD7Nzj9rhVgAQgV9dpkgQrKq7tfEe8vYuYHvImR20+RSEytm5+81S9Z7Twsdr1CpsV6x3WrOPRFKOa1A45q4VPuh456cPenF8wnYzQgdFj17ZoB3pLNvQtt6sPZHdyEmUlYCsV6IXFvRbJN4pSP+7tSA/fJ4n1i2vnpi76Rxdm66u3rD0hT3PmKXUsixJTJGe5SCO0f8Ugy/OmZXflpzrZbdTIIQK86F/nrfj8/Ksj1odSGYHhQwywTXSmZkfLLlxHx6B0dRxUVx94ZPlYqCkfxwu5qEvJreztgtUuVyefc/C4EQZ9lcLr2Vql8XOUu1U2WDq15n1oHoNAXEPupPDF+tDLxESvgOdCX/PylqIQ1DULEsKo+ziDkJeqiZELZASM0ZuAI5y4EVPft0T47fHlaFlzYZ6PRUXPcb+SJiCbOkosFwwelIhCNx9mUr6ELAcF/YkKCjfWPF8USbexRbFCpmNbHYruL0ZKXfF3fZIbcevO8tyjHN/fEmItMz2rfTd/S81KoWGjrMcX/cCeRjJoDSnUCCesp7ze93oESb4ptK/OaMOgbRoq5OEQjjNN27CN4FV99NtAaDqkwxmwRbtYCBJjX1zDH4Xz3ZeT58paYsiWWv3NnGa8k6bKwzhm1rIb0BxRy0g2WRkDztt6tpddwkxDkN74/Jn6jQ4XPB+Hk=",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230028)(4636009)(396003)(376002)(346002)(39860400002)(136003)(451199021)(46966006)(40470700004)(36840700001)(40480700001)(6916009)(40460700003)(70206006)(82740400003)(70586007)(8676002)(41300700001)(356005)(478600001)(8936002)(316002)(4326008)(81166007)(5660300002)(36860700001)(186003)(336012)(47076005)(16526019)(426003)(83380400001)(7696005)(6666004)(2616005)(1076003)(26005)(2906002)(36756003)(82310400005)(86362001)(36900700001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Apr 2023 10:22:41.8924 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 63811f9d-7dd0-4d12-c2a5-08db39ad8492",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[SATLEXMB04.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT052.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY8PR12MB7148",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "mwaitx allows epyc processors to enter a implementation dependent\npower/performance optimized state (C1 state) for a specific period\nor until a store to the monitored address range.\n\nSigned-off-by: Sivaprasad Tummala <Sivaprasad.Tummala@amd.com>\n---\n lib/eal/include/generic/rte_cpuflags.h |  2 +\n lib/eal/x86/include/rte_cpuflags.h     |  1 +\n lib/eal/x86/rte_cpuflags.c             |  3 +\n lib/eal/x86/rte_power_intrinsics.c     | 80 +++++++++++++++++++++++++-\n lib/power/rte_power_pmd_mgmt.c         |  3 +-\n 5 files changed, 86 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/lib/eal/include/generic/rte_cpuflags.h b/lib/eal/include/generic/rte_cpuflags.h\nindex d35551e931..db653a8dd7 100644\n--- a/lib/eal/include/generic/rte_cpuflags.h\n+++ b/lib/eal/include/generic/rte_cpuflags.h\n@@ -26,6 +26,8 @@ struct rte_cpu_intrinsics {\n \t/**< indicates support for rte_power_pause function */\n \tuint32_t power_monitor_multi : 1;\n \t/**< indicates support for rte_power_monitor_multi function */\n+\tuint32_t amd_power_monitorx : 1;\n+\t/**< indicates amd support for rte_power_monitor function */\n };\n \n /**\ndiff --git a/lib/eal/x86/include/rte_cpuflags.h b/lib/eal/x86/include/rte_cpuflags.h\nindex 92e90fb6e0..d3e608533a 100644\n--- a/lib/eal/x86/include/rte_cpuflags.h\n+++ b/lib/eal/x86/include/rte_cpuflags.h\n@@ -133,6 +133,7 @@ enum rte_cpu_flag_t {\n \tRTE_CPUFLAG_AVX512VP2INTERSECT,     /**< AVX512 Two Register Intersection */\n \n \tRTE_CPUFLAG_WAITPKG,                /**< UMONITOR/UMWAIT/TPAUSE */\n+\tRTE_CPUFLAG_MONITORX,               /**< MONITORX */\n \n \t/* The last item */\n \tRTE_CPUFLAG_NUMFLAGS,               /**< This should always be the last! */\ndiff --git a/lib/eal/x86/rte_cpuflags.c b/lib/eal/x86/rte_cpuflags.c\nindex d6b518251b..ae2e0a8470 100644\n--- a/lib/eal/x86/rte_cpuflags.c\n+++ b/lib/eal/x86/rte_cpuflags.c\n@@ -133,6 +133,7 @@ const struct feature_entry rte_cpu_feature_table[] = {\n \n \tFEAT_DEF(LAHF_SAHF, 0x80000001, 0, RTE_REG_ECX,  0)\n \tFEAT_DEF(LZCNT, 0x80000001, 0, RTE_REG_ECX,  4)\n+\tFEAT_DEF(MONITORX, 0x80000001, 0, RTE_REG_ECX,  29)\n \n \tFEAT_DEF(SYSCALL, 0x80000001, 0, RTE_REG_EDX, 11)\n \tFEAT_DEF(XD, 0x80000001, 0, RTE_REG_EDX, 20)\n@@ -191,5 +192,7 @@ rte_cpu_get_intrinsics_support(struct rte_cpu_intrinsics *intrinsics)\n \t\tintrinsics->power_pause = 1;\n \t\tif (rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM))\n \t\t\tintrinsics->power_monitor_multi = 1;\n+\t} else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_MONITORX)) {\n+\t\tintrinsics->amd_power_monitorx = 1;\n \t}\n }\ndiff --git a/lib/eal/x86/rte_power_intrinsics.c b/lib/eal/x86/rte_power_intrinsics.c\nindex f749da9b85..4e81870387 100644\n--- a/lib/eal/x86/rte_power_intrinsics.c\n+++ b/lib/eal/x86/rte_power_intrinsics.c\n@@ -30,6 +30,7 @@ __umwait_wakeup(volatile void *addr)\n \n static bool wait_supported;\n static bool wait_multi_supported;\n+static bool amd_mwaitx_supported;\n \n static inline uint64_t\n __get_umwait_val(const volatile void *p, const uint8_t sz)\n@@ -65,6 +66,76 @@ __check_val_size(const uint8_t sz)\n \t}\n }\n \n+/**\n+ * This function uses MONITORX/MWAITX instructions and will enter C1 state.\n+ * For more information about usage of these instructions, please refer to\n+ * AMD64 Architecture Programmer’s Manual.\n+ */\n+static inline int\n+amd_power_monitorx(const struct rte_power_monitor_cond *pmc,\n+\t\tconst uint64_t tsc_timestamp)\n+{\n+\tconst unsigned int lcore_id = rte_lcore_id();\n+\tstruct power_wait_status *s;\n+\tuint64_t cur_value;\n+\n+\tRTE_SET_USED(tsc_timestamp);\n+\n+\t/* prevent non-EAL thread from using this API */\n+\tif (lcore_id >= RTE_MAX_LCORE)\n+\t\treturn -EINVAL;\n+\n+\tif (pmc == NULL)\n+\t\treturn -EINVAL;\n+\n+\tif (__check_val_size(pmc->size) < 0)\n+\t\treturn -EINVAL;\n+\n+\tif (pmc->fn == NULL)\n+\t\treturn -EINVAL;\n+\n+\ts = &wait_status[lcore_id];\n+\n+\t/* update sleep address */\n+\trte_spinlock_lock(&s->lock);\n+\ts->monitor_addr = pmc->addr;\n+\n+\t/*\n+\t * we're using raw byte codes for now as only the newest compiler\n+\t * versions support this instruction natively.\n+\t */\n+\t/* set address for MONITORX */\n+\tasm volatile(\".byte 0x0f, 0x01, 0xfa;\"\n+\t\t\t:\n+\t\t\t: \"a\"(pmc->addr),\n+\t\t\t\"c\"(0),  /* no extensions */\n+\t\t\t\"d\"(0)); /* no hints */\n+\n+\t/* now that we've put this address into monitor, we can unlock */\n+\trte_spinlock_unlock(&s->lock);\n+\n+\tcur_value = __get_umwait_val(pmc->addr, pmc->size);\n+\n+\t/* check if callback indicates we should abort */\n+\tif (pmc->fn(cur_value, pmc->opaque) != 0)\n+\t\tgoto end;\n+\n+\t/* execute MWAITX */\n+\tasm volatile(\".byte 0x0f, 0x01, 0xfb;\"\n+\t\t\t: /* ignore rflags */\n+\t\t\t: \"a\"(0), /* enter C1 */\n+\t\t\t\"c\"(0), /* no time-out */\n+\t\t\t\"b\"(0));\n+\n+end:\n+\t/* erase sleep address */\n+\trte_spinlock_lock(&s->lock);\n+\ts->monitor_addr = NULL;\n+\trte_spinlock_unlock(&s->lock);\n+\n+\treturn 0;\n+}\n+\n /**\n  * This function uses UMONITOR/UMWAIT instructions and will enter C0.2 state.\n  * For more information about usage of these instructions, please refer to\n@@ -80,6 +151,9 @@ rte_power_monitor(const struct rte_power_monitor_cond *pmc,\n \tstruct power_wait_status *s;\n \tuint64_t cur_value;\n \n+\tif (amd_mwaitx_supported)\n+\t\treturn amd_power_monitorx(pmc, tsc_timestamp);\n+\n \t/* prevent user from running this instruction if it's not supported */\n \tif (!wait_supported)\n \t\treturn -ENOTSUP;\n@@ -126,7 +200,7 @@ rte_power_monitor(const struct rte_power_monitor_cond *pmc,\n \tasm volatile(\".byte 0xf2, 0x0f, 0xae, 0xf7;\"\n \t\t\t: /* ignore rflags */\n \t\t\t: \"D\"(0), /* enter C0.2 */\n-\t\t\t  \"a\"(tsc_l), \"d\"(tsc_h));\n+\t\t\t\"a\"(tsc_l), \"d\"(tsc_h));\n \n end:\n \t/* erase sleep address */\n@@ -170,6 +244,8 @@ RTE_INIT(rte_power_intrinsics_init) {\n \t\twait_supported = 1;\n \tif (i.power_monitor_multi)\n \t\twait_multi_supported = 1;\n+\tif (i.amd_power_monitorx)\n+\t\tamd_mwaitx_supported = 1;\n }\n \n int\n@@ -178,7 +254,7 @@ rte_power_monitor_wakeup(const unsigned int lcore_id)\n \tstruct power_wait_status *s;\n \n \t/* prevent user from running this instruction if it's not supported */\n-\tif (!wait_supported)\n+\tif (!wait_supported && !amd_mwaitx_supported)\n \t\treturn -ENOTSUP;\n \n \t/* prevent buffer overrun */\ndiff --git a/lib/power/rte_power_pmd_mgmt.c b/lib/power/rte_power_pmd_mgmt.c\nindex ca1840387c..43971e6014 100644\n--- a/lib/power/rte_power_pmd_mgmt.c\n+++ b/lib/power/rte_power_pmd_mgmt.c\n@@ -447,7 +447,8 @@ check_monitor(struct pmd_core_cfg *cfg, const union queue *qdata)\n \tbool multimonitor_supported;\n \n \t/* check if rte_power_monitor is supported */\n-\tif (!global_data.intrinsics_support.power_monitor) {\n+\tif ((!global_data.intrinsics_support.power_monitor) &&\n+\t    (!global_data.intrinsics_support.amd_power_monitorx)) {\n \t\tRTE_LOG(DEBUG, POWER, \"Monitoring intrinsics are not supported\\n\");\n \t\treturn -ENOTSUP;\n \t}\n",
    "prefixes": [
        "v1"
    ]
}