From patchwork Fri May 7 11:04:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 12244377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08DCAC433ED for ; Fri, 7 May 2021 11:07:13 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A8030613CD for ; Fri, 7 May 2021 11:07:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A8030613CD Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.123958.233938 (Exim 4.92) (envelope-from ) id 1leyK0-0003M7-W7; Fri, 07 May 2021 11:07:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 123958.233938; Fri, 07 May 2021 11:07:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1leyK0-0003Lz-SF; Fri, 07 May 2021 11:07:04 +0000 Received: by outflank-mailman (input) for mailman id 123958; Fri, 07 May 2021 11:07:03 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1leyJz-0003Kd-IM for xen-devel@lists.xenproject.org; Fri, 07 May 2021 11:07:03 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id f6424572-4684-4312-959c-930c5b1c21bf; Fri, 07 May 2021 11:07:02 +0000 (UTC) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: f6424572-4684-4312-959c-930c5b1c21bf DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1620385622; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=Elil3Dm30+598w9fi/VGaVFUHkrCfnckvWeQZr64YXI=; b=UULqZ6spiIjRziwfhlh+wTrPLkL+VBUIQ98ZvgeTnPQYYWx4Tz2/cbkz vNr7ycO9HM5eNNygjq9uXdahrA+GrX1bG9CFDnhPYKzsoy5SFaNsd0FVM pssuLOsHU2PEw2vqyLsPA8aZu1jsIinXjdVU+5EaumXxLX1t0/5yEzXw4 g=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: bcF+QtuDdJx+VJ6xD91c+1BdMz65+Hm75orNzZDBrpBs/GjqCy3MF/fSJV8BSL8SxFeMLOWWh/ fXdINb9JzQMv6yFo+pPXKzqBslav8Vhi0vtk4kDyuSj4d/oujFYnEBXQ8oaDv3BlHlpwUVAdE4 jMIycqOYsZvRzlsXY8XVjmEtNnnAgMpkyqcYMYu1hUSAj5xmFH3xP7+iPPpl6GvggrSK+d6lOp Ikr7ta5AymAqx6RPgIok2WrcQKK9Ic+DNxHyTSWr2fdZwhNvJTHfnqfJtyNirAQ/xLdkJiiH0F tzU= X-SBRS: 5.1 X-MesageID: 43304404 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:rdygc6/9Z1MpzR2XNR1uk+Eddb1zdoMgy1knxilNoERuA6ulfr OV7ZImPH7P+XMssR4b6LW90cW7L080lqQFpbX5X43SODUO0VHAROsOgeTfKlbbexEWg9Qtt5 uIBJIOa+EYY2IasS6kizPSLz9q+qj/zEnhv5an857Gd3AsV0go1XYCNu5HencGBzWv1fICZd qhz9sCqDy6dXsNaMOnQnEDQujYvtXO0InreBgcGnccmXyzZJyTmc/H+jWjr2Qjugl0sMUfGG P+4njEz7Tmt+v+xg7X1mfV4ZgTktPlxtxPDNfJkMQPKjn3zgaufploXLeP+DA5ydvflWoCgZ 3JuVMtLs5z43TeciW+uh32wRTt1z4o9jvr1UKYiWGLm72OeBsqT85awY5JeBrQ7EQt+Ntm1r hQwm6fv51LSRvdgSXm4cTSXR0CrDv8nZJq+dRjxUC2J+MlGfJsRaJ1xjIYLH9AdBiKoLzOZ4 FVfYrhDNY8SyLUU5ir1lMfjuBEe05DaStubnJyxfB94gIm7EyRlXFov/D3tk1wiq7UnPF/lq X524pT5c1zps1/V9M+ONs8 X-IronPort-AV: E=Sophos;i="5.82,280,1613451600"; d="scan'208";a="43304404" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hjzPXbhvnFEbXX7cCcIyoBTT0QLqD49qzP+6v9RGBX61kHFIEwMaJX51BGs3AnIB7pdH2jowxTo5F+rrircmWgvPnd3drnF3pW5tuGIZc65unwuDR4CL443wHSU7xMGkfHwqcUzVcsZsAIO+3WuMpwOd+e+dy2Dpn0l8k2OHuqyO+HpH5d1n+TWaZKoBQgI/ByshAtEsrrn14rWAsYposbjKist2a5p2Sn8KHCHg6qV+mOaYHjLqAdfpeUIhbhD45Kh23/cnJ+PFuBL9b/uNKWpUWUPdxCAQN9InR2g2NiLZ4GtN7M0LFqs2yR4GRzkT/sA0Pra9s6LdcDX9wtBeTw== 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-SenderADCheck; bh=ZdUXkdSYmtbpTEHoBo3BerLgBTlLuL2N/x2tV5e9+AQ=; b=S+ARTF047uxONLDRhH+ir5109MsbWv4kMQ1dBVb3+ws7oRjxTQBpT2iU4HXhhqOGNzIzMfJ2v0G1kOemsxTuYlJ3vk2lkVZRkMI37lqYoSF/YTy/GFWrToUJrQTJFV39w5R6rTlfKD1oDqYQ0JGP/ErjjF3FoiZNqWsrP9Kqd/rVvdR4Td1nwAbR7nmhuR1/yhctt1VSQilbq9M5Tki8WYaDy1hS3NZMbzloT+gBBwtXD8I56b6GflfHapl5Ladvi23jGiLnrr+T44giujWCjyIoN62g4MIh4bniMqkrKWyte88AWu/sAvgHQ5V0RWyAbh/hL1YPijbQhuCBPfS3QQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZdUXkdSYmtbpTEHoBo3BerLgBTlLuL2N/x2tV5e9+AQ=; b=Zp7tvoYPIdo1qkvtXBIg1YcWqGAxRtlk6URixiw07JRefZvTtscp03sOZvs0ZO60lUO9iKPip12m7Cbhjfx8WLLy9++nnAKCepAKjig4D9fTcy6y5XUi34cu+eTClwNuGp0XpnwgpDgFUn7HNHqok1acBKHUj+uJvl/rF8orWOE= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v4 02/10] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Date: Fri, 7 May 2021 13:04:14 +0200 Message-ID: <20210507110422.24608-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210507110422.24608-1-roger.pau@citrix.com> References: <20210507110422.24608-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0125.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::17) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 50ed9f27-5c71-4d82-33bf-08d91148392c X-MS-TrafficTypeDiagnostic: DM6PR03MB4475: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1u00ywYucUyhVcGpKT+DCgkXkqg4vi11x2ZKwGMnFA+sVUCRn/oJInvOxR6j2JnmdzdcEoM6K+pdTBUH7gvC1Jf/PahP1WsvKtDX4LgcKoeLQYsC8q/6PgZsgVcLphnDiVAo6rWS8VKJIvhVaV0oqHC/QEEMCR6QrnIxF2vFholApGDt1Lqyi0pw/qo7afZiTGgiZxMpXjM2bYkj42XZmVFpLbhQ7wrZLu+oTXe/rUGfvDrtWMeU9i6x9ywjDcMdun3jGDiC2QCMCscJYeosz3gL37RYAytXgXYieb7z6xVICVRCfUqLhPSiujhVvIhYimqBv/bEzLN/j3DXj2wuRlr6UBd05REnNjAFEK8QRlh8uOKmneLeIBTsS22LoDLKhzq6/zJ9c3voOE/jXX26X9LoqAC5tBiyRPcq2qUwgWyeo5Wd6ezUq49nGT98/rxxuzDzmQSyvjgTTrCCJbnYPJsCnbicdYgmHA/v6F9JipDGSAZho8+1WXDq9db8d77S/oKTEgWYj03TVdoXoiL/zWQrqOLefjMgsb6rlGC/3DLgrPL6yiwfao4GC+bpSfGyILfE47ltlUfpB3nVuXQf19f2X+sYHzPVBUgm93FK4As= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(136003)(376002)(346002)(39860400002)(366004)(8676002)(6496006)(26005)(66946007)(5660300002)(66556008)(66476007)(83380400001)(478600001)(956004)(1076003)(6916009)(316002)(38100700002)(54906003)(6486002)(2616005)(86362001)(8936002)(36756003)(6666004)(4326008)(186003)(16526019)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?wTD8yYkycVGF50WefC10U+fBPZKDu4?= =?utf-8?q?UbwCgFLc7ivdjaFUzAg8UetrM+CouRzAVluXuuxyExi3PKKPMwPa+kEoF74wcd0kM?= =?utf-8?q?mjk5/0yG4SRfplFcCCiAiNitjqkxJjvKuAdwkOq0ugdHM9ynjlyTY2LQHj1kXXOND?= =?utf-8?q?NmC0xFwfz1TfTM/8JImSwnMmZWIL5JwokMgEgVtIuTffkTzjBQK/6eEA6vDhc6eVy?= =?utf-8?q?Fqb5rn5LIcHLRbEcE6X7CMvoT0F6GDots9LLMi9ftH2BgTrmQBI1G/QbdcAUxCJt3?= =?utf-8?q?rXJiriVPKehUb62yfsbl75LaDiDDbp8sW+rRjmuhaCy+vo9k2HTRdCilqgMVM8OpT?= =?utf-8?q?RC+tISLyd1HIVDJeKC6EqCmWjLLpaBL+09vUOKhOKlHALZbmP0Mh54SpCekNMDM1H?= =?utf-8?q?zpzCFTErOtReAuEf6LOoJpNNizd++y5ntexq+V4oDYD4Hcu7E8FkM73YAJ3FGmHjI?= =?utf-8?q?iwM7LFXONbevQrL5HEFdms6hfw/g6+5perM9D1iokEQ0FTQhB9X8n4xhdEglcZq9s?= =?utf-8?q?fa4R+LDHnxSQ3NiP9UUx/+Y42xrYMGU9buDaceVp5PpC6OoF0s58VUADiHc095oYZ?= =?utf-8?q?IwX9ac4ma9dCqPgqDtssmr25fq5SrWfL+8umdJdghoVN14kmd8H1PZcJKRN2BYnp8?= =?utf-8?q?Wz3SL2Y2XJCzmnvuXTg+FubVZl/cog/FO+m/f2GRvE30+l+VMg0F9nMIBMR697u9E?= =?utf-8?q?faWE7XTw5/GSu5NXTwbAxqjznV+Q+HStyCabKwTfAW6hZ5yittfSHJMbPQxD8R2vx?= =?utf-8?q?qOtNgqh+QZWHvp/w11o8EVpQ90r4rKoNwSRFJ5bvGZ1z8S2XbNzdBdzl0xX4M9nX3?= =?utf-8?q?+JWl77TfNUOZjyNLlMlryUUpXTkwo2ZDaVDAN8kBKrl1YGP6T/IXzVaUBdP7557kU?= =?utf-8?q?V034L0S947XoJ54kwhDeKtkXTktjYC+WRqywX5/NcQ+7+nh56RzpdeJY/IFkZ1r8L?= =?utf-8?q?tWRD/E9aaTsMf6SnCt6TGEJiJx+S5iwQ+PXoin62iwn51LanuO0FSQLgiKWyJUVoG?= =?utf-8?q?Ms7h/bBt8qJ97Y8+K8niHH8Ct0FixcXok+Ii0hhsc8e5g/OGdStKrvm4QBJhhtbYG?= =?utf-8?q?7qrBbNaqFJtv+2dt63Mlbw9YvmOU+FHUjjAIPYNTEKoAb2nFd0axvzNSdWigot6lX?= =?utf-8?q?JkKpL8zCBWkhrnOgzdl9APKFtPxUY3YYHI34UyMhaev7csNdgfZwpnycHAYi+OCEt?= =?utf-8?q?tJ9LALTqQmNhqJcI/ZnMpttJsyMn+2iZFlwtAbhyruxwbb3ZKgsjar30JJy6C4Y0L?= =?utf-8?q?txTMrY0Bbut76Z?= X-MS-Exchange-CrossTenant-Network-Message-Id: 50ed9f27-5c71-4d82-33bf-08d91148392c X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2021 11:06:54.6063 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 335836de-42ef-43a2-b145-348c2ee9ca5b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WYfdFJTREafTERBYaPJkpspV5/KM5VJ5giTlA5p7XwO3gFZ69ni0HbsYXmy2A0FBry9v//loTLAB0bSi80dVIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4475 X-OriginatorOrg: citrix.com Introduce an interface that returns a specific leaf/subleaf from a cpu policy in xen_cpuid_leaf_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Note that callers of find_leaf need to be slightly adjusted to use the new helper parameters. Signed-off-by: Roger Pau Monné --- Changes since v3: - Use x86_cpuid_get_leaf. Changes since v1: - Use find leaf. --- tools/include/xenguest.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 03c813a0d78..7001e04e88d 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -744,6 +744,9 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, uint32_t nr); int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, const xen_msr_entry_t *msrs, uint32_t nr); +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out); /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 144b5a5aee6..460512d063b 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -860,6 +860,29 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, return rc; } +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out) +{ + const struct cpuid_leaf *tmp; + + tmp = x86_cpuid_get_leaf(&policy->cpuid, leaf, subleaf); + if ( !tmp ) + { + /* Unable to find a matching leaf. */ + errno = ENOENT; + return -1; + } + + out->leaf = leaf; + out->subleaf = subleaf; + out->a = tmp->a; + out->b = tmp->b; + out->c = tmp->c; + out->d = tmp->d; + return 0; +} + bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest) {