From patchwork Fri Jun 16 13:10:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 13282768 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id A30F6EB64DB for ; Fri, 16 Jun 2023 13:11:29 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.550166.859084 (Exim 4.92) (envelope-from ) id 1qA9EF-0001xT-Ns; Fri, 16 Jun 2023 13:11:03 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 550166.859084; Fri, 16 Jun 2023 13:11:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9EF-0001xM-Jf; Fri, 16 Jun 2023 13:11:03 +0000 Received: by outflank-mailman (input) for mailman id 550166; Fri, 16 Jun 2023 13:11:02 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9EE-0001xG-Cf for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:02 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 3bd9a88a-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:10:59 +0200 (CEST) Received: from mail-mw2nam12lp2042.outbound.protection.outlook.com (HELO NAM12-MW2-obe.outbound.protection.outlook.com) ([104.47.66.42]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:10:56 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:10:54 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:10:54 +0000 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: 3bd9a88a-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921059; h=from:to:cc:subject:date:message-id: content-transfer-encoding:mime-version; bh=65UCKKh134J0IWvzlgvq4hxcx/9Z3sMgmsn8JZkBqMw=; b=PyXMVNyHtV2MtuTTjP/h5g8aMtQKTVMxy0/piQjJIfqi4V5+UIeoBHCe ZdhM2DoO7nD/SFmqGesGGVBOmaVdi+jdFPF/sZEUlArFP3K7wIGVVj862 u+HSHNG8ZYXpXxqc6lT/ILLghhm/klNHCZY6tC+IoBRjWsWYKD9Eh+R2c Y=; X-IronPort-RemoteIP: 104.47.66.42 X-IronPort-MID: 113085852 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:brers6wI3+KGv1AB1O56t+cBxyrEfRIJ4+MujC+fZmUNrF6WrkUEm mRJUWuDbPeOMDHwKdpyaI+09kkPucPTyNBiQQdr+yAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s ppEOrEsCOhuExcwcz/0auCJQUFUjP3OHfykTrafYEidfCc8IA85kxVvhuUltYBhhNm9Emult Mj75sbSIzdJ4RYtWo4vw/zF8EsHUMja4mtC5QRgPK4T5jcyqlFOZH4hDfDpR5fHatE88t6SH 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KWNg+ eYyNjJUVU2siu6UzoucTcQ2p9t2eaEHPKtH0p1h5RfwKK98BLX8GeDN79Ie2yosjMdTG/qYf 9AedTdkcBXHZVtIJ0sTD5U92uyvgxETcRUB8A7T+fVxvTaVkFYZPLvFabI5fvSQQspYhACAr 3/u9GXlGBAKcteYzFJp91r137SXzX6rBdh6+LuQ2eN4umLJ3FYqCww5UXGqrNib03+OVIcKQ 6AT0m90xUQoz2S7Q9+4UxCmrXqsuh8HR8EWA+A88BuKyKff/0CeHGdsZiFFQMwrsokxXzNC/ l2GhdTyHhR0raaYD3ma89+8rzm/JCwUJm8qfjIfQE0O5NyLnW0ophfGT9ImFbHviNTwQGv02 2rS8HJ4gKgPh8kW0an95UrAnz+nupnOSEgy+xnTWWWmqAh+YeZJerCV1LQS1t4YRK7xc7VLl CFsdxS2hAzWMaywqQ== IronPort-HdrOrdr: A9a23:Nhxm/anP4wJJl3+oViMwOzwOb/bpDfLh3DAbv31ZSRFFG/Fw9/ rFoB19726QtN9xYgBDpTnuAsW9qB/nmqKdgrNhXotKPjOGhILAFugLgLcKqweKJ8SUzI5gPM lbHZSXCLfLfCJHZcSR2njELz4iquP3jJxBnY3lvhNQpZkBUdAZ0+9+YDzrdXFedU19KrcSMo GT3cZDryrIQwVtUizqbkN1OdQqvrfw5evbXSI= X-Talos-CUID: 9a23:o41TMm8wGcBWB6tRz++Vv0w6FtoPbH+E9yr/LkOaB19OT5DPaEDFrQ== X-Talos-MUID: 9a23:YEDqpw2hL8BLjuH5tN5Ip7AhUzUjzLm8Mn9Xi68/uNirMQZhNha/1QWHTdpy X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113085852" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n6cZnlhA7TmtBDSwuzPqgjNylFz0An3j543m2ynIMvtsVvvQzzXBl1mrXrdK36Vo6eG6vIR6lYf4oWIwiZdRh62jtdyWYqoPSTehg8RLxF1idW6ezjMZrQpqxdsePwW7Lv0IJBLR+SDzJYJasEu8BbG4ECqrwDYF829QOTu7ucAVPDhiJpEyeFbD5rGtRFbX80MK4vINfZxaomCN+WWRbCGj7qfx5lfCSjAMIP9DxgI+q5dVohvX8vXuUu75FoZeYAz3W2Yx26H8Ult5sVNvacqjPsZkIq95+6iKKtnDapqdslwoX4kzLpCGrlHLgyPDjyhqNouttwIrDph+1CPrBA== 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=JNqSx622qdR/rT04RVhtSMuEjyQxLCiBxalL8rrQoxE=; b=IHKP7YLKCUhgQ8WTmt6NOL/NUpA+RpT9jBFMXUUoCW8WGMaYlF/bpH7QSM2LVJVaqgKNCMX3AY9h0BOhe483x+7cSHrgteWC3TAyu+XOLwhNjrrOHCZqTqFRa/ZymJ9kC1qU3VjCko12pEwBYhoL1kc8sSCPwRQAqctHjx1jX6jGSiIRO/VxUEmoDOtFOTT6SlNvdskPYvTzmqYCqZm6mpxIJrJaW5CQ2nzzwc3+Pl+iLB4HNsG/2PWMJc+op/c2zegl3TNMzZVqnubXRLC9X52ESppOL8u2PyRk5Z0BgD+tLkMkgYuhRzVzEmtaX7i7zuLm8NQqeZGTWbJlZTS/4Q== 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=JNqSx622qdR/rT04RVhtSMuEjyQxLCiBxalL8rrQoxE=; b=ronw0CXijfVcMh952wRaZkhrfbCqcgrWSdFPrgvhep646XOvswNhJ+7caYC4wHuxItLYX8GM2B/UQhyXTm736RbT6cr04xXFIQEAENOLJ+q1wanru25bejNySIGmTglmCtbTF05dX+CXWKyZq4EbzflqnfU7n3VlUPcACV3NR+o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich , Andrew Cooper Subject: [PATCH 00/13] lib{xc,xl}: support for guest MSR features Date: Fri, 16 Jun 2023 15:10:06 +0200 Message-Id: <20230616131019.11476-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 X-ClientProxiedBy: LO2P123CA0013.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::25) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 3beda851-de65-45a5-d751-08db6e6b1dc2 X-LD-Processed: 335836de-42ef-43a2-b145-348c2ee9ca5b,ExtAddr,ExtFwd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K+vB2+7KR2+FN18xU1fNn0aTF4RoGWNlrl17KQxl3lgBgUVsG2Y/FKh873nLmiJujfWGj36iIXfWym2p920uIwIOljikZUYywduQZfuklxvkp6Rf9M4pgIMJcmbavVl/E/6cLMrheIOIw4ex/EkNLZtyliBiC4ZMvNITOYKPbxeu5dtReYqpoLNfVs8wuHdXfGqf9qnEJ0lX2/iyS+3bJTgPHIBMXRGE5CZsbSfpvHpcY9bpVjEBKZY+AB3CgjBQWOfm+A85E6S4F2UKq79IpB4vmw+avzLaBwHvLTW4Tv94abDxxTL/fDRAnmrMokxvqxDc9u1ACFxOaJ5YeU/oz3QJwf8F3O/Z/aAlxreZuRQx/klVA61dIY7iKOFE5J7K34AVn459EHgHGtBbn+P/hYYfbySzsUllcBXemZbVjT9AKIIiafSPq02gW55xzYPFi7WEsf5TlSQwxS3WyjZRfGvAzWjBqpaEBINWW09W/rwPd30wu8DSJC95okrwz0LMdvVxERAGi3crKo6Xz6UvaCY34kTmbl7sfYB10iOHKH6wU8kuZTeYYeRUCh4oL4ko X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(107886003)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?8mqWsMxll5Pk7SNUBbWPVYUjywhP?= =?utf-8?q?guIMseYGXnfA5ckFshf2XNbUkCmruNTbqj2jL3qlSAzs3/bTiHVWW0U18KqGDq2jC?= =?utf-8?q?zKzzyx//vCWA30VYhpTq7tE87lUJrLxeohLCDIkOiaVAipI4gbkI52RU6aazHS6Th?= =?utf-8?q?Yetsb/uB346m1+AcJ7w9k1gNf9x5k0SLBYttxQ4USmRV6T+Qe46sWgXcH0UYGj29S?= =?utf-8?q?CNebg4EFoYAebQETaWtvc4NWbVcRkAbbY/60G2KLI1bI8vCtqmG/YQwZH/AxUfKWw?= =?utf-8?q?wR9neu62fcTZN7T7SXM7Zzmz65ZFTS2u/cGZfwf7Ogux+ix3rO0kfaWi3c/XaGo9I?= =?utf-8?q?3Nng8dYMbBHniOHzoB2HbWYg4wz6h9xJ0DP5w6M/VTJsybsxeR1BlfP6za/46PvTk?= =?utf-8?q?3V59FnPcudqU+rMdjuqX3Aefwf2vXtTMYfXVZYfENX1t8txnjykaWDn4qEVL4Ny7m?= =?utf-8?q?MAJlz59ekcwBanx4tgJeegEPPSoY081b5N7yBrT+4uM8L8NIHAmuUftLeZnqtvx6Y?= =?utf-8?q?g9CMeE3Ex1HjbJGlI0UB3QVN+0LAU+OCNa6E1WYEFW4tVdi1eKVkZwNqeeFZMa25w?= =?utf-8?q?0g2+y8VY8QBqduTpTl03MUUBnThcx9G56v0kFb7fCBoE5MChajdBZRVXqaQ4feT+c?= =?utf-8?q?UsQsb6czRywtwCFu9y1RtoEqY0d5tYpfmXcRvs4CS/eYAgK36ZatCdBkJWX7g1FL4?= =?utf-8?q?Wj/CoxCQSvF9J77RUB92UaM0/Qc8MF1aARTAMMUYsrATEojEwhIBgQ9r9RhVSv4un?= =?utf-8?q?zC57zYBPoNChdthahT3Tar8rc2CVYBYtYsWAlH1pNua61zUnz3WeF/TuzEGo7O1rn?= =?utf-8?q?RhZAOQU6Glug4c3ePeDsljDqXWnvDFZmcxF95OZeoDhIi9qu5srQEasZTVLLFV2H4?= =?utf-8?q?K1JJx2BAZI2Ui8u0ZMqgM1wmA47HIB+kj6XdkS5FaH+mPbWr7Miuz29yczDNuNleG?= =?utf-8?q?4WIkRIGDCm6in1KR6oFLiTeg7hcM+CfCxuBrOszKHLAYnhMELS+XwAJOLACxixAXk?= =?utf-8?q?9aGC0J/sF5Nmn2SNsvtu2tuTo7aXAkzK3zvQo89IDm8a8WHFRmiUcwLVAloTp23CK?= =?utf-8?q?/RJaMkXRDGO2t29PbQMqqeizTAhdpSk6gX1Yr7abiETOckD96sk/jpC21Z3Pgy2ED?= =?utf-8?q?BfjvUSqxxF5N0I2+XyEgzu+Bgc+CqKTdgMacGA5Q9ccln36tXtqWxO/L4GvWWucuz?= =?utf-8?q?4GTWktR0op1JvkHiy0hBY+bDOgjGOzugTnJGP1pU2JdCtbtnx9ScK7kLeI/G3446r?= =?utf-8?q?ArM24na18jG30S5L09Ojq22WzHQ49AxOBC9OMaGoxcyYNYGUty0aWNm24EoY8dW0P?= =?utf-8?q?VJsfmehesUQDWRZV37LPxrRwnXP+XHBcpWC3jeK9/Ww9fiqwRUU7+PA7auzDseWOy?= =?utf-8?q?oHAUgxwdfYnNysg5KI/vvlJq5uP/qNKErDoH1pnKfZ4m1+B7haQ2dureTwpPdQYBc?= =?utf-8?q?QAj1MsPuq7qd48K9k3NQ7y+46F5btpi0PtDxL7Wgf6Dl5xWWLEfdhKrQB5g2fAno0?= =?utf-8?q?dAWqcG3fylSB?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wIFjyQAvYXCe/EwDVTja8evRdYqvD8hWs1d3aUW5wmQyS7Wy7lgPceA8FjoxnJJTuOuvmyUHzA+tGiyg1XvM1FIPe8esBKLIdvRU0P1CcVtwufvcDldHw72eFbjj8zOovScdl/FhEHFFeS70EX07wxpyr+zMbV02BavkbyQpbIy3fMHioFjYAUIjZ4bCKVhdoFskNulrwN7vhcOKlx426CPpuUO8JTchxluVYWu2YOla04QRz1OVBvytXixNHYOlBPENuUKQQ+9ysRX19x2WljRrbXtH62dLLyJk+lceFW80v/nRP5ZOl0R8KkNkxFfHEHvUz8AHMWZPq98PCMywW6syIRO0FWS4cgxD4QwDZtHzsETcNi+ecRp281Z9om06+qPbzhFmXwEdFML9fuQcPgXIIfCwZePVeynwKRihuQwatTpQyHLtLTUoVlmTA7FplPrr/YRXlP5foBPx+mXx0ko6J8Qvw77VnEqDNDXJMeorlKKaz8D1xZcu1SB6qLGY4nbQ3SWZnp7XbipoVwt36uXUgb2u2Gv4d8CmNiDTHLC5JdAU0r2kdNTznlku7bNLnVQnwsmLt0bMiMRldOxa/9QGTLsLtjmKT83Y/J5a1eBG1m6t6eE2kxFWivBIOFF7NxF9f85/oyO8591kqE/bYGxktRlTTe5etTdSXkjpeAc40z9sGBUqfWpv6eNf+8essS9ySPAeRDHpfu6wx097aIANQAnjUnCGH+m5H1XrBb5hWlCpWWJl92xdymS+FTXezekFpxdfp7AApZPXjlioBrn/FP8FzRuyVTrXztXcqBYQIQFJH3fr5QzF+IulN112 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3beda851-de65-45a5-d751-08db6e6b1dc2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:10:54.5325 (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: 0acbXgfHETsqDXCGiDvgJzguRGFADs7h7O+3BhrZuHa5v5ydSRC1E8f8FeWU3nPh5w9Mx+lnZaFGRSDnEKh3UQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 Hello, The following series adds support for handling guest MSR features as defined in arch-x86/cpufeatureset.h. The end result is the user being able to use such features with the xl.cfg(5) cpuid option. This also involves adding support to all the underlying layers, so both libxl and libxc also get new functionality in order to properly parse those. In order for such support to be as transparent as possible for existing users of libxl, both libxl_cpuid_policy_list and libxl_cpuid_policy are modified, so that the libxl_cpuid_policy_list type is no longer an array anymore, and libxl_cpuid_policy is converted into a structure with two fields to hold both a CPUID and MSR arrays. It's my thinking that current users of libxl had no business in poking at libxl_cpuid_policy_list, since the underlying type (struct xc_xend_cpuid) is opaque in that context. Also the format of the array (with a terminating empty element) is not documented in the public headers. Some of the patches had been salvaged from a previous series of mine to introduce better cpu_policy management support in libxc and libxl, and hence contain some version notes about changes, or are already reviewed. Thanks, Roger. Roger Pau Monne (13): libs/guest: simplify xc_cpuid_apply_policy() libx86: introduce helper to fetch cpuid leaf libs/guest: allow fetching a specific CPUID leaf from a cpu policy libx86: introduce helper to fetch msr entry libs/guest: allow fetching a specific MSR entry from a cpu policy libs/guest: replace usage of host featureset in xc_cpuid_apply_policy() libs/guest: rework xc_cpuid_xend_policy libs/guest: introduce support for setting guest MSRs libxl: change the type of libxl_cpuid_policy_list libxl: introduce MSR data in libxl_cpuid_policy libxl: split logic to parse user provided CPUID features libxl: use the cpuid feature names from cpufeatureset.h libxl: add support for parsing MSR features docs/man/xl.cfg.5.pod.in | 24 +- tools/include/libxl.h | 7 +- tools/include/xenctrl.h | 21 +- tools/include/xenguest.h | 13 + tools/libs/guest/xg_cpuid_x86.c | 383 +++++++++-------- tools/libs/light/gentest.py | 2 +- tools/libs/light/libxl_cpuid.c | 504 +++++++++++------------ tools/tests/cpu-policy/test-cpu-policy.c | 220 +++++++++- tools/xl/xl_parse.c | 3 + xen/arch/x86/cpuid.c | 55 +-- xen/include/xen/lib/x86/cpu-policy.h | 37 +- xen/lib/x86/cpuid.c | 52 +++ xen/lib/x86/msr.c | 41 +- 13 files changed, 821 insertions(+), 541 deletions(-)