From patchwork Fri May 7 11:04:17 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: 12244383 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 C73DEC433B4 for ; Fri, 7 May 2021 11:07:27 +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 7778261458 for ; Fri, 7 May 2021 11:07:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7778261458 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.123966.233974 (Exim 4.92) (envelope-from ) id 1leyKF-0004pB-5c; Fri, 07 May 2021 11:07:19 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 123966.233974; Fri, 07 May 2021 11:07:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1leyKF-0004ox-1r; Fri, 07 May 2021 11:07:19 +0000 Received: by outflank-mailman (input) for mailman id 123966; Fri, 07 May 2021 11:07:18 +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 1leyKE-0004jI-1X for xen-devel@lists.xenproject.org; Fri, 07 May 2021 11:07:18 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3f452d81-4586-43ab-b104-aa97b66944c0; Fri, 07 May 2021 11:07:17 +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: 3f452d81-4586-43ab-b104-aa97b66944c0 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1620385636; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=DK5Oj288zwi/pAzruQfeshpv1Ya6qkXUi9NgpMqGtpg=; b=R7tY8x0G4c2mpGV0JrgGN5/sF/hFILVOrCqtoOwtMot4ZXzKjG6FVmLx j0agdiTrkrKmF0M3cJHIo6qHWpCePJGu/BX7zEx0oNQaLpN2ghB7otl+E 4nPGhSBRpU7TFpHXFj4267QIiXQku7hpJaiAifqkA8T5tlgTvqyzxAqWq w=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: wBLs1wbGBlphFIMXsJra93bid4GkQexU8WJqk2kgcZC+JcxMxYIUsQW5WyMab5z+kY4Bm/1F6P AIxsXPswh9K1ClVbsKYj+z6sy4aQWSMIi1WEHNJI0JRvEgOdA06qvhUYt42l11lur6Wi/kIcBS y65/M3lZKyEU/TfgcEp5dwEouxFAYQunc+3Sht4qCMTfuZy6YRMMaqh9634ye1enSfMCOIpjjK i7w/faXl7Nf6s+sedB19DtbS4eSOBZ89vJ8IWRtYJOoekh9boOB1yY12AkZ56Si/AY05zqHtGp ut0= X-SBRS: 5.1 X-MesageID: 43304421 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:/50QaKs7KHJAbbCB6XXX9Z807skCRIMji2hC6mlwRA09TyXGra 2TdaUgvyMc1gx7ZJh5o6H5BEDyewKmyXcV2/hbAV7GZmXbUQSTXeVfBOfZogEIXheOj9K1tp 0QOZSWaueAamSS5PySiGbXLz9j+qjgzEnCv5a8854Zd3AOV0gW1XYaNu/0KC1LbTgDIaB8OI uX58JBqTblU28QdN6HCn4MWPWGj8HXlbr9CCR2SyIP2U2rt3eF+bT6Gx+X0lM1SDVU24ov9m DDjkjQ+rijifem0RXRvlWjoKi+2eGRhOerNvb8yvT9GQ+cyTpAo74RGYFqiQpF4d1HLmxa1e Uk7S1Qe/iboEmhBF1d6SGdpjUIlgxepkMKgGXo/UfLsIj3Qik3BNFGgp8cehzF61A4tNU5y6 5T2XmF3qAney8osR6Nk+QgbSsa4XZcYEBS4tL7hEYvGLf2qIUh2LD32XklWKvoMBiKmbzPId Mefv00vswmD29yR0qpzlWH7ubcIUgOIg== X-IronPort-AV: E=Sophos;i="5.82,280,1613451600"; d="scan'208";a="43304421" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SwW2R73A/0+ioVdnKEkHQHsR7vMSjrqBtJ2MkI6uowitw7PkCupMOUGHkwBa8SlzfIxB1dawC9P3Rn/WnwdP3+dF1wdEWXT9vrP5JDuE1JTxvxeMF5w5vEBKKcB8WHBJQvuv4HW1cgbyAVaiQsEkDTWpaUXuCFYOQDY5GZjFcubOn5iP/qoYQvagpH4BRGvsByQ+WIggs+KgipPiZiJy9/i2psHr8EyGSEFKTHouZEsAAyZ//W63rvax7QvAsosYzAIG0Hy4TGvTIdlWRGpI6Ay7k2QRC465ltySk+bn3RIzerzXaJe3zeUPI89v/HObxrrFnKeXWkW5eHH1Di137A== 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=v1TbxRetccB3cqkr4MGIU/LGmnU1UmJDCQ3gYxtvhWg=; b=KNl9EbkDfJ/eVyq90odXqQsnEOIVgKOv6PGczUZtpQpMsyyyeKCg78P+kITAfCHnS60zGpUCS0E9SCUVNKYs2R9VpEV+Jemz7dtsbymu7/YVYoqQMuSDZTgBAxDikrpQho8xqdLuWf+Wo2CXdlLEgmDq8RZVgtlPuFweAc8EhwRdenprJljyebef673uBmTBXrID7YS8JPzvzV/wUfkJJAM9IJWPFXjdh9bAXFsviKBXdYYiM5vaJP2cq45TKiVLLNAX086XA3G+4R3ZcDiRfBvrxjozHHLvfveh5p8X0JIDNg8oa1QzzrtEIeMoobrGsk18TmmeWtpvTNwpC/qw3w== 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=v1TbxRetccB3cqkr4MGIU/LGmnU1UmJDCQ3gYxtvhWg=; b=SrwvTE9EKfw1wqlj6BuH9oAidxpkVESk8I76+y0nfOkpKYHYT66bkZ/JKjMn6vrMWMat7hZMvG8SULUQx8LJKXQSsr5r4YDoXf7SthpTnJy7uWuHNB1HEWBz6XswLN4DVcZdSrNYgobbHWi+Lw4B84HU1XplpCKKBd1icJ7Zn8A= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v4 05/10] libs/guest: make a cpu policy compatible with older Xen versions Date: Fri, 7 May 2021 13:04:17 +0200 Message-ID: <20210507110422.24608-6-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: MR2P264CA0062.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::26) 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: 79327a89-74ea-48ae-fe47-08d91148444c X-MS-TrafficTypeDiagnostic: DM6PR03MB4475: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nji8Zv8BmCfGnXxEJYveZmQ11ipTMPUIcDHyEsm9HmvEw0LrtFWogjMd01JCagj/IJ35FZDQJQi6f45rhiIn5/BTfI0eDkPaokwjHxI8V+qHUlcEKyE03DtFGew4t2NOKy7TMvdWM8hMl6hYTT3PL8rnlxRPvgMIY6NhYpYu+Cj7jQyp1soEp57v8VD6JpC2OhDExL0ukS5V31yaxddSNJcg2a7DZF9RphrWHoK1DON2OLQwHuyI5sZBYDgqb3oAc5Aux7iiClrd2y8HyMgqOvsGvBhPhayQnU0KrY4wWB1PnmpLzH2LZ82bsZJJ77aMYw/XOe5DhOsNroUVjlE5MN1rwyhtSLLoqr46yIUa9ymYAVFe5HQokFT4G8/H2j8Gw9kjVIJM32Mxqt82mItWtEzr8YJFl0vAfrKa7TK96JuqlV3s0aK60giLaSdcPF/N0jY+3iyy4/i4+StHz3RBceWJB5f2KylzVYdIZY2VeS0bCQUQ6Z+gBSfpsgA17VhqQrUxBew7X87N8MnqPIHH/EurP/YPef1j+2F50tz2uSFKRznbNxaB2p3H3p9HK181pEtfQnuZWT74A1axnjWPMw7+LcRUPOznJTXF/YQs2KE= 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)(4326008)(186003)(16526019)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?w+JhZEgkrZE5hf5mp8wYuPaqhwHFKc?= =?utf-8?q?bh0d0l5PhAdV7e5vo5GrT5i6rbgBxmdFUn/C9cBCnyVCK/Ds201qhWYnpO3HCMZ5L?= =?utf-8?q?z60/pjMtxQbTzp5uE3/3eq2eZS6GAVNh6VKu97QjyImit+MlbHLmP6ugFM1N8/87W?= =?utf-8?q?tQddjTz3Gm3no9yVZYK3x6yLHyK1vdEQjlmgZW6H4pMYJPPiGc6hIxLptedJ6LBL9?= =?utf-8?q?ltOu1RMkRF1tdukdIN/eI9+p73c4U36HCtgGTiLmZGVoujZldmOZPjBuOh0rQE2/N?= =?utf-8?q?orL4CLyBEruL/CfgQAVXjdwhuJBwGeMypN6zZVqNdYQyn6IGE1xaiD9/LLraRAwhh?= =?utf-8?q?JymVaosBLF6ExWPonDQFeDV5857SC1z8qxck1e7R1+qv5yeRhOze7KsMpRgQz9XRo?= =?utf-8?q?eBjrnraoacKno5ktNxuSuXldD9CV4UTh+x8fS+dPkgJOB4pu98pDotwicmimdYQBF?= =?utf-8?q?bLza89O4x1sqNo8zdvp6WdhewJdO5yW8yz9wOTz67fD6XeeSPQhMENtvP2BgS7xui?= =?utf-8?q?8vrXYAyxzypjNLSlVmLiMvzWu98flTO/MJ6DnXBEBvo4PciCQX4T64Prn351v97HX?= =?utf-8?q?nx9lvQ3ibsS24/aEg5tMxTMT6NcK4vUw8DIm6b9BvnRhFkSx6zx8x4m6dxIL9Zk64?= =?utf-8?q?7w7dtYWK7D7LvdpP3R7HG6b4sgMJXtnAhWtsZovTJLWyT4AIkoiTJqNW+oyPIi446?= =?utf-8?q?Zo/PA59Qx6bXjEoFSMjx5TuH5u/ZDpdlZSW936L7XvO0kWf3UtM9Koe0osGNjzoj4?= =?utf-8?q?eYfpIkr6U6DD6Fndws/FUmgn4tUnf8GPCW/h9MMwcU/k+Z3rIbePL8qJbHrIriY9x?= =?utf-8?q?A2gFsGTLeCTpPCAmd4aDyh04Q92fT4bclMwzm4ibMpsJcDgP4pYXM/sti3U4gb3e3?= =?utf-8?q?NX+oQoXP6TcbB4v3fRdBXdFKQBmjlbtrR4/sY/0vZSR1Gx+eWjOUrgqBVT8codZLl?= =?utf-8?q?J3vUhio952xH/1aI3XIZXPBOfVVA+eukWFi1a/Kl2uGk6Dq4nNAlYIVk7+TZ515Vd?= =?utf-8?q?/weV2PW6G2UX3JVFbpoM1QbaWB9f6FSrVEUMPehGaNxvv09bmRMfus1LYzjS3esr2?= =?utf-8?q?fCCWBZNNl0to+7ety7WS33n7wihzNWqjcvXbnCSAqtcsFS4Npx5YVqDQn1kSn8Efd?= =?utf-8?q?pIL/UVQmSyClgavjJm3Mot5fsjhfnzdckuDRtiVeMgV96Mgk7vgnwvUV7SXOBMOhQ?= =?utf-8?q?0bRkOU+wpuE3pLG3xz83aOkdGB/7EoVQsIYTkwgdkZAxIrzSXt1bxsSVqzBZ/8AP0?= =?utf-8?q?ZgeEIc7PgAYxgS?= X-MS-Exchange-CrossTenant-Network-Message-Id: 79327a89-74ea-48ae-fe47-08d91148444c 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:07:13.2691 (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: 1MQwioud98NuvP4W1aNsUynhRKCtLm7wRUBkg0xjHdS54zRjy5DFzN3Eb+tWL6SfWhMAaNPr9iCunGcNN371Jw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4475 X-OriginatorOrg: citrix.com Older Xen versions used to expose some CPUID bits which are no longer exposed by default. In order to keep a compatible behavior with guests migrated from versions of Xen that don't encode the CPUID data on the migration stream introduce a function that sets the same bits as older Xen versions. This is pulled out from xc_cpuid_apply_policy which already has this logic present. No functional change intended. Signed-off-by: Roger Pau Monné --- Changes since v3: - Rename function to xc_cpu_policy_make_compat_4_12. Changes since v1: - Move comments and explicitly mention pre-4.13 Xen. --- tools/include/xenguest.h | 4 +++ tools/libs/guest/xg_cpuid_x86.c | 58 ++++++++++++++++++++++++--------- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 8e8461b0660..576e976d069 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -754,6 +754,10 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy, bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest); +/* Make a policy compatible with pre-4.13 Xen versions. */ +int xc_cpu_policy_make_compat_4_12(xc_interface *xch, xc_cpu_policy_t *policy, + bool hvm); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index cdfc79a86e7..fccbc54a400 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -441,6 +441,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, unsigned int i, nr_leaves, nr_msrs; xen_cpuid_leaf_t *leaves = NULL; struct cpuid_policy *p = NULL; + struct xc_cpu_policy policy = { }; uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; uint32_t host_featureset[FEATURESET_NR_ENTRIES] = {}; uint32_t len = ARRAY_SIZE(host_featureset); @@ -505,21 +506,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, if ( restore ) { - /* - * Account for feature which have been disabled by default since Xen 4.13, - * so migrated-in VM's don't risk seeing features disappearing. - */ - p->basic.rdrand = test_bit(X86_FEATURE_RDRAND, host_featureset); - - if ( di.hvm ) - { - p->feat.mpx = test_bit(X86_FEATURE_MPX, host_featureset); - } - - /* Clamp maximum leaves to the ones supported on 4.12. */ - p->basic.max_leaf = min(p->basic.max_leaf, 0xdu); - p->feat.max_subleaf = 0; - p->extd.max_leaf = min(p->extd.max_leaf, 0x1cu); + policy.cpuid = *p; + xc_cpu_policy_make_compat_4_12(xch, &policy, di.hvm); + *p = policy.cpuid; } if ( featureset ) @@ -921,3 +910,42 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, return false; } + +int xc_cpu_policy_make_compat_4_12(xc_interface *xch, xc_cpu_policy_t *policy, + bool hvm) +{ + xc_cpu_policy_t *host; + int rc; + + host = xc_cpu_policy_init(); + if ( !host ) + { + errno = ENOMEM; + return -1; + } + + rc = xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); + if ( rc ) + { + ERROR("Failed to get host policy"); + goto out; + } + + /* + * Account for features which have been disabled by default since Xen 4.13, + * so migrated-in VM's don't risk seeing features disappearing. + */ + policy->cpuid.basic.rdrand = host->cpuid.basic.rdrand; + + if ( hvm ) + policy->cpuid.feat.mpx = host->cpuid.feat.mpx; + + /* Clamp maximum leaves to the ones supported on pre-4.13. */ + policy->cpuid.basic.max_leaf = min(policy->cpuid.basic.max_leaf, 0xdu); + policy->cpuid.feat.max_subleaf = 0; + policy->cpuid.extd.max_leaf = min(policy->cpuid.extd.max_leaf, 0x1cu); + + out: + xc_cpu_policy_destroy(host); + return rc; +}