From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067528; cv=none; d=zohomail.com; s=zohoarc; b=UDPASYM7WFxxES8iXPGdK0jXkL/tpE808Pg/OfHikORqdU5XHT1Rzr13QL62O6YBml7ui7KD8NHR3afPgDckHatNJfdfkmwKoR0LoznkWFk121u97rby1fAQH82EiHKc2COuZZWkzPXPmQ+U9A+ugG8/Op5Fl521jlDpTQLqKNU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067528; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jRL0W8aP44by/dndi4GGpftsE4Jc9SeBVmoFs1PldXY=; b=ORhwPeUs9YLTI5uHTw3BQ1iXbfFnhuE04Y7CnMaapK7gPnuPrjUancxxn0GV8HfkFMN8cxVNteLZIhhDx0Kx2du6jskBQzoJUxhOkZ+FWUxO6m2l7a0dFVUymL+cS9l0UJSt6ldYk5sLNVUXN+3hs2Ri+Mn9o3RMdiRBkQsLYkA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067527984597.3378546960224; Tue, 11 Jul 2023 02:25:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561651.878129 (Exim 4.92) (envelope-from ) id 1qJ9c8-0003tK-LW; Tue, 11 Jul 2023 09:24:56 +0000 Received: by outflank-mailman (output) from mailman id 561651.878129; Tue, 11 Jul 2023 09:24:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9c8-0003t8-Ie; Tue, 11 Jul 2023 09:24:56 +0000 Received: by outflank-mailman (input) for mailman id 561651; Tue, 11 Jul 2023 09:24:55 +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 1qJ9c6-0003sM-TD for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:24:55 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id c953b4e2-1fcc-11ee-b239-6b7b168915f2; Tue, 11 Jul 2023 11:24:52 +0200 (CEST) Received: from mail-mw2nam10lp2100.outbound.protection.outlook.com (HELO NAM10-MW2-obe.outbound.protection.outlook.com) ([104.47.55.100]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:24:46 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SJ0PR03MB5920.namprd03.prod.outlook.com (2603:10b6:a03:2d6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:24:43 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:24:43 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: c953b4e2-1fcc-11ee-b239-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067492; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=2zFSU1NQw4rgon58Pm5xe6yK2q9FL3yuwXrnL/1XCis=; b=M2Tkxq0eB/WXGc8sW4P22hWFOMY3nqgbCQTvpenIywr6PaWMDwo8mPxC YQYcFrYuTqUCZiNrbEvt6TAB2MXce88tOj0gW+k8SwW/E0VRyMn4LmwxE Q1vz0ustyUm4W0JOyPywbkxsfCp9gzFVebhQCMe3OGnJJcuWi0ZEmyJ23 c=; X-IronPort-RemoteIP: 104.47.55.100 X-IronPort-MID: 115102737 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:K+OHratb5/WhONSHINQUDpcIYufnVHJfMUV32f8akzHdYApBsoF/q tZmKTuDM/yKYmfze4h/b4vn8h4Bv57Sz4NrGVc5/3xhFy8R+JbJXdiXEBz9bniYRiHhoOCLz O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVKiffHg3HVQ+IMsYoUoLs/YjhYJ1isSODQqIu Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq4Vv0gnRkPaoQ5ACHziFMZH4iDfrZw0XQE9E88tGSH 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG fMwBQI8aky41v6P/7OhTMJvtPYYLNXXBdZK0p1g5Wmx4fcOZ7nmGv2PwOACmTA6i4ZJAOrUY NcfZXx3dhPcbhZTO1ARTpUjgOOvgXq5eDpdwL6XjfNvvy6Pk0osjf60aIK9lt+iHK25mm6Co W3L5SLhCwwyP92D0zuVtHmrg4cjmAuiAd9LTOfnraECbFu7/UBPVkJRFkCBhLqphF6DUNtce 1Uqw397xUQ13AnxJjXnZDWorXjBshMCVt54F+wh9BrL2qfS+xyeBGUPUnhGctNOnNAybSwn0 BmOhdyBLT5gqrqOUlqG66yZ6zi1PEAowXQqYCYFSU4A/IPlqYRq1hbXFI87SOiyk8H/Hiz2z 3aSti8iir4PjMkNkaKm4VTAhDHqrZ/MJuIo2jjqsquexlsRTOaYi0aAsDA3Md4owF6lc2S8 IronPort-HdrOrdr: A9a23:nOu3Hapr9mINGcOHHOIUrJ0aV5oReYIsimQD101hICG9JPbo8P xG+85rtiMc6QxwZJhOo7u90cW7K080lqQV3WByB9iftVLdyQ+VxehZhOPfKlvbdhEWndQy6U 4PScRD4HKbNykdsS5XijPIcerJYbO8gcWVuds= X-Talos-CUID: 9a23:x/qSQWzN/qUMwajPHLeqBgU5KPEhLkaM0E7vIlW+ImVbeoaVVWOprfY= X-Talos-MUID: 9a23:BNlR5wbIL1IWoeBTjBOw2m4ld9xSxue+BlAwmpwF69C6DHkl X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="115102737" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lcDb6quwfOHhdQ0scFD6XCzWRFoLrSYV8QN7s2Nu44SoWB1AYrTA80iRk1IP9LeJhyKVMvZO6DYGblUp7o16WRJR4DIiN/FFHcsIJ9tdP5uTpR2YPqGV1o0BNDzjmv/4UcMaudPdTbqpqMVcdV89PUoh8zARmruWTIAouynI1OQXvK09hrPfw9kbTFUa0lTYpqOopEWfJNXwQhOgnSCqUkOcPbYhArSCACy0D8LLk9SKipSc2qxonHQzQk8FLKAsbOvW+S0xYUk2nCoroCd+K2GgJmP+pMANVxcjVGhXvJyw6Do7+/zajgDygjYRgadKO6lERV8Brp1z/CF5fmMyJg== 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=jRL0W8aP44by/dndi4GGpftsE4Jc9SeBVmoFs1PldXY=; b=Wr7C7D/6tMPEeOKS/OdK803ypTQDor88I81a+KK/o7RY1NXMiNSKr2gLGT6uEIpRwWMHyYERiHlYb2DD0x3GgZu4bcywXYHEI+kZIZWA/cvysgVti8KJAwA2SiW/Kdnbzgv9e9wM3u+m0D8UtFLaxqIRtxrptFhXV18wnvTuXD0V8u4weDToRJtrSW+wQuOOkkbGtvfrTUTFsN1Bpy9wKekaI+TvK3kC27xl7MmJ6c9nzUfLnz/mvW0OiGRBm5v7/jNaWJ0BVHxrRBRCVLB9XxEgbkhIx2El6Mr61PXzcJG4uM8DdgswqmdROLosBqs7t5xsDFA8h3uOxZRwk5tulg== 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=jRL0W8aP44by/dndi4GGpftsE4Jc9SeBVmoFs1PldXY=; b=auSghe+nd01hCKif3cAhNWyP9ZiMF0YWwuabA8AV55GrcrAKK3h/9nW4nkQ3JWol2bF7igw6wYdrDKW3pSr/Dk3s0GnzF/z6qGuY5UeAHL8u1velADvcONjcC2wHzm7DUgNjp1lSZLlTFky5sZGOKkMhfNDyQWqY/WBnt6PAWLc= 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 Subject: [PATCH v2 1/6] libs/guest: introduce support for setting guest MSRs Date: Tue, 11 Jul 2023 11:22:25 +0200 Message-ID: <20230711092230.15408-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0583.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:276::13) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SJ0PR03MB5920:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c9e8d34-5108-41d8-2cd5-08db81f0a91d 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: m7sWODGmuyAyrBI+qCnQhoLMMsS5/ULJk9z3KqzS/fZtLsXWEcYKRnLrHf3C/7rgpNQ/cnZy6fEp4rAkrM7lzKp2KPIPVxN3EQjHtXZ0V3NmiQ2oHA1KcCfDBWs3/sjRqbld3gyIEiH+JUC1fBuHTYZ0AA0QpU7SllhdQXDwZuhdlaysZ3iLbpywQd4WdXYlCLckeMoiV0HL6HAwIYBM4dPORpEKjkwWsQA1lv3SC6beZryn8ChJrOSiFZB5YzOJSzaGJ1s+ShzMct3P9mkla3aomjKUxgxMkz5+kiCVke3dJc9giNGAxqLIY7Mlle9zdMoAr7r4zVV69I1XEQRgXt2ucD4q2i630q5/l4xDcPtBgWkEFM4WvaxRiWBA6f+xfCXMsuDpYeF9yTPmlfxKJXUN5TMBZJC3qFGtHNvXnZoTp+limEp1a6+09ctVoEC+a90tg8tgooNWRCdQKHdwYufvznxqYnlLyZe7AJUjBsJujVGu8BbZtxWwp79VGgH4kyK/dXXSkwfUdI6IuhcQCMv2J8fm3ZnlvvJXA4ve2dgxVkOWPxLWZt/oNciscyrn 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)(396003)(346002)(376002)(39860400002)(136003)(366004)(451199021)(54906003)(6486002)(6666004)(478600001)(26005)(6506007)(1076003)(6512007)(66946007)(186003)(2906002)(6916009)(66556008)(41300700001)(66476007)(5660300002)(316002)(4326008)(8936002)(8676002)(82960400001)(38100700002)(86362001)(36756003)(83380400001)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aktVaFIxd1NSaThSK1NkMHNsVDlJeStFVkZndGJSOEhDOXR2VkVldWc4NCts?= =?utf-8?B?bVFsbjdGcVZRbW5EeDdUL2JScXBoYWtNRThkOHFpMGwzVktCWmZBL3ByVHVL?= =?utf-8?B?eFVMa09EQS8rMDZKK3dSV2lwN2JGdWx6ZHdHRUduaEFOelN3OWRpNW1tRW95?= =?utf-8?B?ZXh3RVB5Ym81eXV1RDVYRnRZR2UrbEQzUjNQMXpzNnhLbk0xbk9wVituOGhz?= =?utf-8?B?NS8xaVgzQUtjNStSZVIwOGhkRERqMkZNeitTblRrQzkrV2pEMDlPeENGWTMw?= =?utf-8?B?eERGL2MyT2l1cUJVbUNvQkg1UytJRG41YkxGeXZnZWlTQVA0M3gyd29qSFp3?= =?utf-8?B?d2N3bStHQVJod3MxYmp1QlBHSy9IUjZ1QXk4b2pnZ3lYWFRJQlA3TTM4YU9Y?= =?utf-8?B?eHNYUXdXUUkyL2QrNEpmWjhWQWV0Tzg1RnNMTVQxKzhRZDExMXZkN1h6amVM?= =?utf-8?B?aVMxcEJsaERZUkVTSW1kaTFaQlcwMmxaYmd3dkxhSkZiZEZUTFFoSkxQcFhL?= =?utf-8?B?YzdaaXRMais1eFhDNlZoS3g3ZVhkVE5maXJ2MEZ4NkxqbmFzZ2Y4R2Y4YWl6?= =?utf-8?B?dVRLZkNqR0g0ckp2bVp1c0FkaGN4eW0vbm0zUFZRdkVrcTFiRzRvbVhxczB4?= =?utf-8?B?SlU0T2h0RWc0ZlNPUlhkek8rK1FzL0g2eWxMNUNPeWd6b3Q5N1JsUnFaZUVv?= =?utf-8?B?a3lPaTFyVFRzam9lQngxN2NmWXk2OVYzWVlUdUhwbWMvaEV3T0NtZ29OdXky?= =?utf-8?B?S0ZESUQxTklYakppZlFnbzRmZUY1MmdCcHc3M0N6VENlQXBXRjNRTXZ4dG1P?= =?utf-8?B?V3dycTV1NU9iSE80UTBaUjZHb0tvUHppVCtLSG1UMzdTS0I1b3EwWDFSOHoy?= =?utf-8?B?TUZvdEszTXIvc0tDM0F1bk1IenpSaWpWc1c0NXhhOFphdXduUWVrWnJMc0Rj?= =?utf-8?B?bS83ZVFjWkNBeXVFZlhneVRCWWtPYVpUOG5RNUMvcFNFbGFKV0t1dlZtZGNm?= =?utf-8?B?V3JRVjl3TzdwaWdGM0NPV2JUd3hDcXdocjRyTUdSWVcvNWRQUi9ZcjMvWWd6?= =?utf-8?B?YVJaUzFiQzd1cnk1ZktYaStiUHhBVU9qbDRXamttSlEwdUVIU0VkK2hVVEJm?= =?utf-8?B?cnJUbXNUelJBYitTYUJQY1diOXVkSUFzUDBtaFFWMlhXcUJUM0pBVkgvb3dU?= =?utf-8?B?aUxVSFpkc0NTZXA1RUlIQUphZFZuOEZCSW83S2xQRFFDaHlwL0cvTUtxQ2lv?= =?utf-8?B?cHR4aDZFYmVsaUtKRHJHdlIyclRUcXNJNXVaMjVLQWlGWG80VGJXbjBZKyty?= =?utf-8?B?aEQ0YUg3MnNYVmhUeHZ2MzFYY1d4dlNOYkpVMEp6QXdJVnZjU0xmTDJVa1A2?= =?utf-8?B?eW95U1A2TVNvY3dWVFJQcnFpcnk0ckF6N0tHVEY5ZWVZRmNyMTBXRXFka1N6?= =?utf-8?B?OGxQN3lLY09wcmI5ajBjWWxKNkJLcUp6K1JLcTlsWG5Ycm00eVpTVmlKa0pR?= =?utf-8?B?YnFMc3dOQ3NHZzI0RkZQVENSR0RwSHVsMDJlU3pTTElneVlDSnUzUkIzL29h?= =?utf-8?B?RENLWnBRQWl0VDBuRUg5Yk1saXZqdW5pYUtCMGN6MnNFNCtBZ0tiZE5LQW9O?= =?utf-8?B?SzAvM09TWVY4YmZOQk9UZTJTV1psc3NralRnTjJ6aHplMCtNcjlaMWxEZVJu?= =?utf-8?B?VUtYeGdjUzdBTHJVMzRiUi8yNkpQeHFhakFHSjJ5QjBYQ0hNSWdDL0dsMmRD?= =?utf-8?B?eXB4a1g5QjRvR2ZFWGs3Mmdjb3NLWkpMQ0Z6YXExZFp5NmtaV3BUdHFRQnJ0?= =?utf-8?B?eDY3VG9rSEpLcDRuTENZWmliK1FzYWRaRE1tRFpqazNIUU5zMzhEY0pic0Vn?= =?utf-8?B?WWl2ZVJFVmtaVDZRdnZuOCszV0hNWVd0aTFJUkV5cUprYkZwSkRUM3VxV1BO?= =?utf-8?B?M1ZRRlN5eE9ldmY5cS8wdGF1YXI4Qi94RXZiUm16bTBFSk1SM1lLWjQwM0E4?= =?utf-8?B?QXZjTFc2Tm1iTDNoRmloVzgya1p3Y1g0eTEyOEJvemhkT2NPNVpQN2hQSWUr?= =?utf-8?B?T3VHQjAxS3RHcXVtY3Z1OVJJV1Bpemx5TUFqVHRZdEhyWFN3T3Q4RmxNeGI5?= =?utf-8?B?eGY5UHh4NTZwT2RDcm9oVlNhZU9ZWW13K0JobUFUUnhFdWplYTJ3eUprcVVV?= =?utf-8?B?WkE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: STLjD/3PcuBaNZv03aVAx6fzCvk/GpK9axfLOQjkaUQaB4yQ57S5be95qKlfKQCzO5XoKASlrEZOqVedT1vQexDHO8guIA6qiAnCOvmLINA4xCVX47fLF+UQlUiBZdJMqLdiU/jJ2hIv9/GVD9kl0n25wPlWzUv/zu7nYa2f7iQP/BZtC6BhnyTNOnRYYfMXmgUiMfABikpLo5r/H/GOBbEEfTEKTIcCU11cADuR4NVrtweNt7/5f97Hj8LwEp5iNgbPeCmbbaBWKCp7kcqgFekQ0Kzx8SaL1E8/9rR8+aXvHCj6O6TdMoiH+/rcKrsN27iLlzVdHOpzsHNJwf8tBD+oc6Rc2dvo83KM7y8DZ7xdzUzRxepS6r2Cvlwb3hSmLgQJAn+auOyvhBMlZ6ywipg3XYgcMFgybm+apWEoUlw+f+TQj2Je/XL1FSYTH6CKA2R2Jzy7zxbK/M/is2x+o9P6J3t/uCIgp4phPtq2eBVkg9sU8vLxOkhbqRSczb/uKapgALLC5ER0nKVZxBZcYTbFG1eqebMLBAORZIlOop3gNNOyVnCfw5/1uDYlvLr32+5ovfZYOca3g//ykfg+pRraJhsoPwXejWfI4BDa/QmGyRC11mtELlsqevhUZZjLdGwrxLIGBZRmNE5kKq1Ou2SwQeXUXBM+j9HZ2w0H5EtpyIG6EUSE105pari8r5kEkT1+3vtsDDjn5gPrZQie4AAjtMFyEsi8iwmdY9LtLr1VjD9HdwPx93O5+2QU+VxbRRV2Kkw+GIEs/QR5l33DVLWY28gyp3317/P8o5ddCEqTaqYECwQP/ghk1YNsJcYs X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c9e8d34-5108-41d8-2cd5-08db81f0a91d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:24:43.4983 (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: 40qMHV5O72IwD+B6bOpV+id0VvT3LbEIil7uacVmxuwZ/AFWNKBXEvmUuqlM/k4hrloYsBh9FkAqFnH1vOd6mQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5920 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067528989100001 Like it's done with CPUID, introduce support for passing MSR values to xc_cpuid_apply_policy(). The chosen format for expressing MSR policy data matches the current one used for CPUID. Note that existing callers of xc_cpuid_apply_policy() can pass NULL as the value for the newly introduced 'msr' parameter in order to preserve the same functionality, and in fact that's done in libxl on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Anthony PERARD --- tools/include/xenctrl.h | 21 +++- tools/libs/guest/xg_cpuid_x86.c | 168 +++++++++++++++++++++++++++++++- tools/libs/light/libxl_cpuid.c | 2 +- 3 files changed, 187 insertions(+), 4 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index dba33d5d0f39..faec1dd82453 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1822,6 +1822,21 @@ struct xc_xend_cpuid { char *policy[4]; }; =20 +/* + * MSR policy data. + * + * The format of the policy string is the following: + * '1' -> force to 1 + * '0' -> force to 0 + * 'x' -> we don't care (use default) + * 'k' -> pass through host value + */ +struct xc_msr { + uint32_t index; + char policy[65]; +}; +#define XC_MSR_INPUT_UNUSED 0xffffffffu + /* * Make adjustments to the CPUID settings for a domain. * @@ -1833,13 +1848,15 @@ struct xc_xend_cpuid { * Either pass a full new @featureset (and @nr_features), or adjust indivi= dual * features (@pae, @itsc, @nested_virt). * - * Then (optionally) apply legacy XEND overrides (@xend) to the result. + * Then (optionally) apply legacy XEND CPUID overrides (@xend) or MSR (@ms= r) + * to the result. */ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, const uint32_t *featureset, unsigned int nr_features, bool pae, bool itsc, - bool nested_virt, const struct xc_xend_cpuid *xe= nd); + bool nested_virt, const struct xc_xend_cpuid *xe= nd, + const struct xc_msr *msr); int xc_mca_op(xc_interface *xch, struct xen_mc *mc); int xc_mca_op_inject_v2(xc_interface *xch, unsigned int flags, xc_cpumap_t cpumap, unsigned int nr_cpus); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 5b035223f4f5..5e5c8124dd74 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -423,10 +423,169 @@ static int xc_cpuid_xend_policy( return rc; } =20 +static int compare_msr(const void *l, const void *r) +{ + const xen_msr_entry_t *lhs =3D l; + const xen_msr_entry_t *rhs =3D r; + + if ( lhs->idx =3D=3D rhs->idx ) + return 0; + + return lhs->idx < rhs->idx ? -1 : 1; +} + +static xen_msr_entry_t *find_msr( + xen_msr_entry_t *msrs, unsigned int nr_msrs, + uint32_t index) +{ + const xen_msr_entry_t key =3D { .idx =3D index }; + + return bsearch(&key, msrs, nr_msrs, sizeof(*msrs), compare_msr); +} + + +static int xc_msr_policy(xc_interface *xch, domid_t domid, + const struct xc_msr *msr) +{ + int rc; + bool hvm; + xc_domaininfo_t di; + unsigned int nr_leaves, nr_msrs; + uint32_t err_leaf =3D -1, err_subleaf =3D -1, err_msr =3D -1; + /* + * Three full policies. The host, default for the domain type, + * and domain current. + */ + xen_msr_entry_t *host =3D NULL, *def =3D NULL, *cur =3D NULL; + unsigned int nr_host, nr_def, nr_cur; + + if ( (rc =3D xc_domain_getinfo_single(xch, domid, &di)) < 0 ) + { + PERROR("Failed to obtain d%d info", domid); + rc =3D -errno; + goto fail; + } + hvm =3D di.flags & XEN_DOMINF_hvm_guest; + + rc =3D xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs); + if ( rc ) + { + PERROR("Failed to obtain policy info size"); + rc =3D -errno; + goto fail; + } + + rc =3D -ENOMEM; + if ( (host =3D calloc(nr_msrs, sizeof(*host))) =3D=3D NULL || + (def =3D calloc(nr_msrs, sizeof(*def))) =3D=3D NULL || + (cur =3D calloc(nr_msrs, sizeof(*cur))) =3D=3D NULL ) + { + ERROR("Unable to allocate memory for %u CPUID leaves", nr_leaves); + goto fail; + } + + /* Get the domain's current policy. */ + nr_leaves =3D 0; + nr_cur =3D nr_msrs; + rc =3D get_domain_cpu_policy(xch, domid, &nr_leaves, NULL, &nr_cur, cu= r); + if ( rc ) + { + PERROR("Failed to obtain d%d current policy", domid); + rc =3D -errno; + goto fail; + } + + /* Get the domain type's default policy. */ + nr_leaves =3D 0; + nr_def =3D nr_msrs; + rc =3D get_system_cpu_policy(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_defa= ult + : XEN_SYSCTL_cpu_policy_pv_default, + &nr_leaves, NULL, &nr_def, def); + if ( rc ) + { + PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); + rc =3D -errno; + goto fail; + } + + /* Get the host policy. */ + nr_leaves =3D 0; + nr_host =3D nr_msrs; + rc =3D get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, + &nr_leaves, NULL, &nr_host, host); + if ( rc ) + { + PERROR("Failed to obtain host policy"); + rc =3D -errno; + goto fail; + } + + for ( ; msr->index !=3D XC_MSR_INPUT_UNUSED; ++msr ) + { + xen_msr_entry_t *cur_msr =3D find_msr(cur, nr_cur, msr->index); + const xen_msr_entry_t *def_msr =3D find_msr(def, nr_def, msr->inde= x); + const xen_msr_entry_t *host_msr =3D find_msr(host, nr_host, msr->i= ndex); + unsigned int i; + + if ( cur_msr =3D=3D NULL || def_msr =3D=3D NULL || host_msr =3D=3D= NULL ) + { + ERROR("Missing MSR %#x", msr->index); + rc =3D -ENOENT; + goto fail; + } + + for ( i =3D 0; i < ARRAY_SIZE(msr->policy) - 1; i++ ) + { + bool val; + + if ( msr->policy[i] =3D=3D '1' ) + val =3D true; + else if ( msr->policy[i] =3D=3D '0' ) + val =3D false; + else if ( msr->policy[i] =3D=3D 'x' ) + val =3D test_bit(63 - i, &def_msr->val); + else if ( msr->policy[i] =3D=3D 'k' ) + val =3D test_bit(63 - i, &host_msr->val); + else + { + ERROR("Bad character '%c' in policy string '%s'", + msr->policy[i], msr->policy); + rc =3D -EINVAL; + goto fail; + } + + clear_bit(63 - i, &cur_msr->val); + if ( val ) + set_bit(63 - i, &cur_msr->val); + } + } + + /* Feed the transformed policy back up to Xen. */ + rc =3D xc_set_domain_cpu_policy(xch, domid, 0, NULL, nr_cur, cur, + &err_leaf, &err_subleaf, &err_msr); + if ( rc ) + { + PERROR("Failed to set d%d's policy (err leaf %#x, subleaf %#x, msr= %#x)", + domid, err_leaf, err_subleaf, err_msr); + rc =3D -errno; + goto fail; + } + + /* Success! */ + + fail: + free(cur); + free(def); + free(host); + + return rc; +} + int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, const uint32_t *featureset, unsigned int nr_feat= ures, bool pae, bool itsc, bool nested_virt, - const struct xc_xend_cpuid *xend) + const struct xc_xend_cpuid *xend, + const struct xc_msr *msr) { int rc; bool hvm; @@ -663,6 +822,13 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, if ( xend && (rc =3D xc_cpuid_xend_policy(xch, domid, xend)) ) goto out; =20 + if ( msr ) + { + rc =3D xc_msr_policy(xch, domid, msr); + if ( rc ) + goto out; + } + rc =3D 0; =20 out: diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index f5ce9f97959c..c96aeb3bce46 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -502,7 +502,7 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid,= bool restore, info->tsc_mode =3D=3D LIBXL_TSC_MODE_ALWAYS_EMULATE); =20 r =3D xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid); + pae, itsc, nested_virt, info->cpuid, NULL); if (r) LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); =20 --=20 2.41.0 From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067522; cv=none; d=zohomail.com; s=zohoarc; b=dqsNvZDNoxiS9rKlZO0QrNjVcjhbae2/AhJWAdfUySNxbq8bQXxOjvG31jtpd2yAO6HPvPz5l8xDnkbAOSbDchQe3eskI/aKLqHNKv7epyHV/4y41QkxfGyHtDgKiZhTwX35V0uenvpbgd5AU4PZcgK3b70Rpi3JNHo/y2WoAMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067522; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cR4uH4w+OQdrCDXWnd3VMjBEW6KojALchWf8cN+0MNs=; b=VkVrNH68jNCz+ulUyYgPVAqnKaA98Rt6FwyZe8hxO7p9w+621hKaRsYCyLgclurkTKQO2dlNAHpdBq0Ef7dsgf+S2wc4Ad8+iasVmejluWcG/ZuYRsqzsxPZv/AEOyh2cK4N9sROGG6QJDg1+z68DstIqZDJ+oIt35ZrOsMD1zQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067522268712.9550409834251; Tue, 11 Jul 2023 02:25:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561652.878135 (Exim 4.92) (envelope-from ) id 1qJ9c8-0003wz-VS; Tue, 11 Jul 2023 09:24:56 +0000 Received: by outflank-mailman (output) from mailman id 561652.878135; Tue, 11 Jul 2023 09:24:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9c8-0003wA-R4; Tue, 11 Jul 2023 09:24:56 +0000 Received: by outflank-mailman (input) for mailman id 561652; Tue, 11 Jul 2023 09:24:55 +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 1qJ9c7-0003sM-Iu for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:24:55 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id cb0617a5-1fcc-11ee-b239-6b7b168915f2; Tue, 11 Jul 2023 11:24:53 +0200 (CEST) Received: from mail-mw2nam10lp2104.outbound.protection.outlook.com (HELO NAM10-MW2-obe.outbound.protection.outlook.com) ([104.47.55.104]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:24:50 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SJ0PR03MB5920.namprd03.prod.outlook.com (2603:10b6:a03:2d6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:24:48 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:24:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: cb0617a5-1fcc-11ee-b239-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067494; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VKmbY/AfEIQ8x2rbtfbq3gFHjE/7qQyOIwEMp8b6cTM=; b=NXPjKEVAMCB72GbOYi0TxDpgR7t2fDWvr5H6Pl/nALVoIKmBEse4LYfu SAapkesRp1b4jGrGadVLOWpD5VLXUfp+uTWjBnAuYOAEz5MxAo4NgNUtU 6uMa8Md0D/4jaoLMPGtpkLT2u7QaNk/p2IAj19DNOM8KVjh5WZSxaeEFp s=; X-IronPort-RemoteIP: 104.47.55.104 X-IronPort-MID: 115102749 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:CPu5EKr/Q0cqE5sPvH1Zbumf5l5eBmI8ZBIvgKrLsJaIsI4StFCzt garIBmCPveMYDenKdhxYN/k9ENUusXUz95kGQo5qClgQnhDpZuZCYyVIHmrMnLJJKUvbq7FA +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbKCYWYpA1c/Ek/NsDo788YhmIlknNOlNA2Ev NL2sqX3NUSsnjV5KQr40YrawP9UlKq04GpwUmAWP6gR5weBziBNVfrzGInqR5fGatgMdgKFb 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay RAXACszcQ2nmcLq/LWcF+kwpcAZKtPmMpxK7xmMzRmBZRonabbqZvySoPpnhnI3jM0IGuvCb c0EbzYpdA7HfxBEJlYQDtQ5gfusgX78NTZfrTp5p4JuuzSVkFM3jeWraYKJEjCJbZw9ckKwv GXJ8n6/GhgHHNee1SCE4jSngeqncSbTAdtPTeXiqaI76LGV7lYRFUYkaRiCnaS4oGXnee1HK XwU+TV7+MDe82TuFLERRSaQsHOC+xIRRddUO+k78x2WjLrZ5R6DAWoJRSIHb8Yp3OcpQRQ62 1nPmMnmbRRtv6eSUmm17aqPoHW5Pi19EIMZTSoNTA9A5sa5pog210rLVow6SPLzicDpEzbtx TzMtDI5m7gYkc8M0eO84EzDhDWv4JPOS2bZ+znqY45s1SshDKbNWmBiwQKzASpoRGpBcmS8g Q== IronPort-HdrOrdr: A9a23:Yj/vXairmisWG8TS752HbU3aunBQXgYji2hC6mlwRA09TyX4rb HUoB1/73TJYVkqNk3I9ersBEDCewK5yXcN2+gs1O6ZPDUO21HYTr2Kj7GSuwEIcheWnoRgPM FbAs1D4bbLYmSS4/yX3OD2KadG/DArytHPuc7Oi11WZUVBbaV46gdwDQyWVndxWBJNCfMCZf mhD4581kOdRUg= X-Talos-CUID: =?us-ascii?q?9a23=3AJqurC2iBNMfzJKpJuaZPofcyQzJuaUPC0VPOAxO?= =?us-ascii?q?EDkE0SOG2TWWW4q5qjJ87?= X-Talos-MUID: =?us-ascii?q?9a23=3A2wzOIw1U++tYKNLwt5ESDRygJDUj2aazU3Ix0qw?= =?us-ascii?q?65siuHnVSBC+fvDS0Xdpy?= X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="115102749" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DERKzIAU5+7kwWP0nDi9nhAfUGq+49P5GrJ7uSCu4flEz7xuNgUIhKwA1QvHFZGbzpwXyIN/Tsq1XoOxPmR5KvJAuEqYgX9mcwwmVJBfQLV6TMZgjmZQl+z7MqhrS8KckfI9oMKyczl8NWdv444aj2VMg/1/vuR+tgVMXoWSDQkcyj6vlN62atgWfO7CI83l3feJvlnmOqwbN24yreWiDIrTJMttry04E67xgXfsp6IJlEOBB0av20qRh26F0JOsYcBgPEMqcjLjui6mAW9SNi/3kGwloecRYuLz/DEq5pNMAyQkqDo27tCdNtBpCouxoiKbbAlhwfNM7/wUW2yVbA== 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=cR4uH4w+OQdrCDXWnd3VMjBEW6KojALchWf8cN+0MNs=; b=f3MKofGUseIErO/s5ntEswZwH9QmRpsiEx2EkeIgrG7lOzqxWm4rUoIX0E/wxK/wqVr8LxjQaI/SI5PH0DAgJ+U35L//Y+obJFlpnzY/Dat3bkQo8gA53UH1Z4C0maYFjDM2lYzSnzB2vXs39KwkCUaWIzEHqxkuj7y7Ua7zV//6SlCm2+fwIHO7PnP6cXm4khrc5EzQ46byRQu/FJ72ghtdgnCVlDa47EKxQ6p6AZWis8/E63CTkYDow5TTi1DlvFiBp0AEJXLQg3h0poDSF7NI13x3CG9JmtX4wZmGJ7tmM+kzMnR4ZQmPeilQEvY3FPan2bLbQXQP/Sx6Kt1HhA== 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=cR4uH4w+OQdrCDXWnd3VMjBEW6KojALchWf8cN+0MNs=; b=LhFtiKruTqptiV5+oY53aJUQyU0rTLlHyma5d6wna0/hCpkIay7bSyioGPYhrRAPYSaWpSALIGxDLUL+eg+9wdEXHSmpSD+XUeZAJ3g8zg7BDKwCFfGokqSyc35mX5A3EbmPipoU91JZwuKDGBdBrGPFQVWacc7ywrgzHT3fZ24= 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 Subject: [PATCH v2 2/6] libxl: change the type of libxl_cpuid_policy_list Date: Tue, 11 Jul 2023 11:22:26 +0200 Message-ID: <20230711092230.15408-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP265CA0054.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5d::18) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SJ0PR03MB5920:EE_ X-MS-Office365-Filtering-Correlation-Id: 6411ae18-4c03-4c04-a4b8-08db81f0ac47 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: rA/hB5qA56df9qRQA2HnaLU0CNC+q7pF6duZWNtI0ALR7DVawnn6na4fv/aY3dNSZWqYVLAZfTrpmHFmj/EMSjzZDqLyxrBvoiNhZxWDnC9/QzanGy/ESwiR8yXvy0YRLvwRtHiywUqPSYnA3/e2awoM3laysa0pX9hsDTggCFH5F/GhbuEiHbzIiA4pXa68AUeZbKSLZsf6hcrk4UeTq4WALAU4Vt9TwJ2IZdAS/BQnpQqj0agndHcN1vXBLYsJMYJ2ksNQtJKB0XqTwxg/TfLc+Y8eInGbGjmsH+9c0V7QAgcf4qJ9ZRHSO1kMjizJLYxji47Dizx+dXtjNzubTx19Ind/s5/xiuJQcXDlmoYR2wgnmpITEzOveqIarQpdFP70+0swM0hNeIgSN1gDJCBf5nFkyDPRwp4255wQCsWU+ODP3ngNbr/QvAQ+24JI4NLbOiDF7Fle87hfAzzMDTw5nI+1qv3bggXQzwa+U7ieVeMIocLWwtTljfdmlg7mTXxc0vOZ0MZ3ATr1duxxzqweTzG2QYwV5fbUL0ayJckGBeOUVLC3CTenUZ56WCjc 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)(396003)(346002)(376002)(39860400002)(136003)(366004)(451199021)(54906003)(6486002)(6666004)(478600001)(26005)(6506007)(1076003)(6512007)(66946007)(186003)(2906002)(6916009)(66556008)(41300700001)(66476007)(5660300002)(316002)(4326008)(8936002)(8676002)(82960400001)(38100700002)(86362001)(36756003)(83380400001)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QlcyaEJKck9Vckk0ampmeDlRa3dyTUVrdXhpTFczTTZBNTlkTzdHd1lSb2VL?= =?utf-8?B?RXFuaTEzVUlzYUpjME5CZEloSEkyWnhralBkM08wZ2ZIdzJOanduTDd3Tk1s?= =?utf-8?B?ejlORG9MNEFZdEF3L21kQ3RRR0tUWjVzL1BHNm9XcEJOcFZaQ3VYRUNDc2hh?= =?utf-8?B?L2srYnZTaVMveVpPb2tkeGRYTWdjMFk3OXF4MVdpNGxVVm5YVUZZbHZ5OHBG?= =?utf-8?B?ZmVmekJITC96N0VETnVQQjZkd2NiWjFnMmNBWHpLRks0NnpXbmU5NStYTUhn?= =?utf-8?B?cDFjVXZSVlFSclUwckovZWtqYzl5NjFlK1d0UkZVT0FJR1VyRmJYNVdwbElt?= =?utf-8?B?RmwrTWNLL2QzdDBiSkIzaHpmZDJFbG5Ra2Fvc2NWcFhsZjRWclZzY2FMdVlV?= =?utf-8?B?SDJWb2FPbms4SnU4WWVHSndsMWRNNi8vWU5pQUdQUXp5bnY2WTM4eVZUdUt6?= =?utf-8?B?aTlQRVBZNTBFcEYwVWxsdkZUVWVBTW83QzBiTU1mUGE2SVVsNlF4V3lORld0?= =?utf-8?B?bTFqamUxQndyVUI1dmg1YnZDaEE2amJQWWFLQVRlV0MwOXlZaGlxVGNrSHhL?= =?utf-8?B?STJNcHNMYTlQUkQvTVpEMEZtVkFVMlN1bHJkYm55SFlNYzNKQ2cvOUF6TGt1?= =?utf-8?B?SEo5WUZLdEJUTE96MjhHemQ4bi9kMldoZW5mQUY3ZWZuTXdpREZpOWYxYXYz?= =?utf-8?B?T25ZY3dKT1NVckRVRnRhY2ViYVo1aURXcll2b0hoSnUzdS8zMXhPL204N0ZE?= =?utf-8?B?SVJWaEtKK0VoQmp0Vjlpd0RnODdiN1hiVjRya2VOSFl1akl1MUhOY25CYThP?= =?utf-8?B?RGtaaHE2Q0t0M2pIeEUyTFo0TGxrd2FyOGV4T0czOUl1WlZaOGlBOHZ1aWl0?= =?utf-8?B?VjluMjBxa3pOcXpLVThGY2psV0E2eHJuUC9SVFB0aitNRG1IZjhBWjJuVDFG?= =?utf-8?B?VEJIWmFoNmp2eHhNMHhYQ2ExVUVMOEJFc21ZWmhCTThXajRwYTJVMFlUOHVU?= =?utf-8?B?ZFRSanVWYjRiaHV0Zkx6dnpOdDN0Y2JyNXE2UmFRMHNVbnA5UEhUbUQ4VVhx?= =?utf-8?B?OFhZT1hmUFRncitPNjRxREZ2TjhaUlJqR0ExSGljcGhZZWlJQmpzRUhGWkY0?= =?utf-8?B?cmdnaXhWZFgzZExMTVBvMGNKRERnbmNlY0RvajV6YjdSeFBvUzZFQ0d5Y25q?= =?utf-8?B?WFZnWTNFaGNjTWcvKzNNNVRqRmdiTlduN3FlQ3RURVpJSmx0akU5WTBCMS9w?= =?utf-8?B?RHVMSVp6dzJVS2RWVW83KzRDM3k3cVlwTVpKL1hrSkhudXVkSmYzbFVzTW0w?= =?utf-8?B?dHI5QTUxYUFpWGtOb3lHT1RtN0hYQWc1NGhZcVRjVmtEUGYycW1rNWlNV3pz?= =?utf-8?B?aGJpRldmNnYxcXgwRXFGUlozSklPTCsxOElKdkZITnhLN2xrRWpiUEVQZThv?= =?utf-8?B?YXdjQkJMOEwzTllSUjhObGhweDZWclhZZmdIVmNvNDVRYklGUm5ERnk2d1Bq?= =?utf-8?B?bzNnNTVoa0MyM0c2RzVqYmsxaGdmcXlESmxFcy9jQ0lmYXJWeDVVdXo2MHJq?= =?utf-8?B?clFVMmljdERYZnk0TmZobklVYU1RSGdyc0VvVEFOdnpLdXdJZVkxU2ZmMkJ3?= =?utf-8?B?R1QwUmg5bjdkbTA4UmhHRUxzblJ3OWRHNzVtb2NuRzR2dVgvcjFERTJJcTBV?= =?utf-8?B?NlpZWUlNTzlHS0FUR0kvTHAzNnFTYUlVVW9MTVdvWEpWb2hyWVBSMlk5cXBH?= =?utf-8?B?MjNmc2dKcURpNTFyaEpQVitjU3JYT2xpeDNsMDJSK0JzZE9yNmlUSUY4d3Nh?= =?utf-8?B?aHFNb3Rrem0vNkdHSkpjSzAvZ2UwMldTWjIrbW9kWVJSVWplTGZXdlhSUHpx?= =?utf-8?B?WFBWNVc3NFpBK1pnRDJIY0pnQjd1NUF0TmlDUkp0RTdNMTB3T3hwSUdFdXIz?= =?utf-8?B?RWlyK1VGTGt5dGRmT0ZGcTh1SGlXbkZtQU5Yb09DRXZJWXZPSERqcktIeGdt?= =?utf-8?B?T05qeXczNkl2b3FqejdKM3U0T0pCakt4aE9FMlpYc09nK3dieVdiU2hqc011?= =?utf-8?B?emt5c1ZzVU81a1F5a0lPaExERVVxU1lHMkZzY0laZlY4SE5SMHZQbDlKa1JC?= =?utf-8?B?alNXUFZOSU5tVlVDVVg2Z2JGOStOZURPVjQzNTJkYlkyWWFIRHFKT2lKcHky?= =?utf-8?B?UkE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: E1OEhypwM5AcPqP9oPSTX4NjpxFE4BsB9pVA3Hj1rVgu+Sr/6ZAHhl7k2Fo39JpOHxcoHlupqad9bphEjYRR4rp3P46l0HtO5PAA5Mjyk9QwbNzaZv+99romNNe93EuIQK8zn9OLL4oxZe9ghSgAyS2kEqUM6khPyUe+SgICo/GtmMp4h9DokEgmlIe0xQeihfyEcvPT5wQfKaIRKOZge+VUOxAjP438I8m8jwpdodZ99h1iXrECP14XUfbbD+qi7OKosJVl+Ltfv4s4p4d0+msooPUoAq/7y5/QCn08Wj+y5q+IEub1jdDwy7xK1j/6a1Ak5ZU49Hz5MeSkiLM7dcz+GYxMDySFFOS80bXh/MyvCbUclxTHPXBDMMvetmEiLd++MQyDv7a2DxMeiwep0io1Z7YvCtp9TV3gkaX7dWM+mtuHq4Qdy/h6Z1woupMSKdn92/tPi2zoLIdTM0q5wOa1f7BJ/makExx5MJGiYHYGG+3V+4h/0kLRyxVwCY++B0/r0HZ3B68T/LqlMtt8mpopfMK4m3sfVKV97W32weTMxz6XRvEvd2PLdfFEr+/IZS2Z9WNbiWSL9t06ClvDHG3FcHxu3+LV1VLoSdlni6gtbWCBpSumEUJKK96d7hkANQ1DgCQuji1/SYVCzBXpiMzt7ahMlNUOtuPhmRUfwb8nn5srsSpEicHOMhTks6fF2Dff0CJdjo8Mkzlp5qX6GoM2s88AyUMXrTDDXpnWklYtrtAXluzORUVGP1qA2GYuedaqMom21tbulqxUvqzTMJr3+BUMQ5M4mDU7FY/u4G5p6/SuSBzz6MbxRcD275NR X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6411ae18-4c03-4c04-a4b8-08db81f0ac47 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:24:48.8299 (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: 7EsrjNE+JJGORscdvlCzaIscX8B0aPGLV9IJ7/EirMr0r8No0WFBsGGOcn/YbAqdzk6edTlkOjZYPP84QzJ06A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5920 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067524294100001 Currently libxl_cpuid_policy_list is an opaque type to the users of libxl, and internally it's an array of xc_xend_cpuid objects. Change the type to instead be a structure that contains one array for CPUID policies, in preparation for it also holding another array for MSR policies. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Anthony PERARD --- tools/include/libxl.h | 8 +-- tools/libs/light/libxl_cpuid.c | 89 ++++++++++++++++++++----------- tools/libs/light/libxl_internal.h | 4 ++ 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index cac641a7eba2..f3975ecc021f 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1455,12 +1455,8 @@ typedef struct { void libxl_bitmap_init(libxl_bitmap *map); void libxl_bitmap_dispose(libxl_bitmap *map); =20 -/* - * libxl_cpuid_policy is opaque in the libxl ABI. Users of both libxl and - * libxc may not make assumptions about xc_xend_cpuid. - */ -typedef struct xc_xend_cpuid libxl_cpuid_policy; -typedef libxl_cpuid_policy * libxl_cpuid_policy_list; +struct libxl__cpu_policy; +typedef struct libxl__cpu_policy *libxl_cpuid_policy_list; void libxl_cpuid_dispose(libxl_cpuid_policy_list *cpuid_list); int libxl_cpuid_policy_list_length(const libxl_cpuid_policy_list *l); void libxl_cpuid_policy_list_copy(libxl_ctx *ctx, diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index c96aeb3bce46..724cb4f182d4 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -19,22 +19,29 @@ int libxl__cpuid_policy_is_empty(libxl_cpuid_policy_lis= t *pl) return !libxl_cpuid_policy_list_length(pl); } =20 -void libxl_cpuid_dispose(libxl_cpuid_policy_list *p_cpuid_list) +void libxl_cpuid_dispose(libxl_cpuid_policy_list *pl) { - int i, j; - libxl_cpuid_policy_list cpuid_list =3D *p_cpuid_list; + libxl_cpuid_policy_list policy =3D *pl; =20 - if (cpuid_list =3D=3D NULL) + if (policy =3D=3D NULL) return; - for (i =3D 0; cpuid_list[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED; i++)= { - for (j =3D 0; j < 4; j++) - if (cpuid_list[i].policy[j] !=3D NULL) { - free(cpuid_list[i].policy[j]); - cpuid_list[i].policy[j] =3D NULL; - } + + if (policy->cpuid) { + unsigned int i, j; + struct xc_xend_cpuid *cpuid_list =3D policy->cpuid; + + for (i =3D 0; cpuid_list[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED; = i++) { + for (j =3D 0; j < 4; j++) + if (cpuid_list[i].policy[j] !=3D NULL) { + free(cpuid_list[i].policy[j]); + cpuid_list[i].policy[j] =3D NULL; + } + } + free(policy->cpuid); } - free(cpuid_list); - *p_cpuid_list =3D NULL; + + free(policy); + *pl =3D NULL; return; } =20 @@ -62,11 +69,17 @@ struct cpuid_flags { /* go through the dynamic array finding the entry for a specified leaf. * if no entry exists, allocate one and return that. */ -static libxl_cpuid_policy_list cpuid_find_match(libxl_cpuid_policy_list *l= ist, - uint32_t leaf, uint32_t subleaf) +static struct xc_xend_cpuid *cpuid_find_match(libxl_cpuid_policy_list *pl, + uint32_t leaf, uint32_t subl= eaf) { + libxl_cpuid_policy_list policy =3D *pl; + struct xc_xend_cpuid **list; int i =3D 0; =20 + if (policy =3D=3D NULL) + policy =3D *pl =3D calloc(1, sizeof(*policy)); + + list =3D &policy->cpuid; if (*list !=3D NULL) { for (i =3D 0; (*list)[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED; i++= ) { if ((*list)[i].input[0] =3D=3D leaf && (*list)[i].input[1] =3D= =3D subleaf) @@ -86,7 +99,7 @@ static libxl_cpuid_policy_list cpuid_find_match(libxl_cpu= id_policy_list *list, * Will overwrite earlier entries and thus can be called multiple * times. */ -int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* s= tr) +int libxl_cpuid_parse_config(libxl_cpuid_policy_list *policy, const char* = str) { #define NA XEN_CPUID_INPUT_UNUSED static const struct cpuid_flags cpuid_flags[] =3D { @@ -345,7 +358,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *c= puid, const char* str) if (flag->name =3D=3D NULL) { return 2; } - entry =3D cpuid_find_match(cpuid, flag->leaf, flag->subleaf); + entry =3D cpuid_find_match(policy, flag->leaf, flag->subleaf); resstr =3D entry->policy[flag->reg - 1]; num =3D strtoull(val, &endptr, 0); flags[flag->length] =3D 0; @@ -400,7 +413,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *c= puid, const char* str) * the strings for each register were directly exposed to the user. * Used for maintaining compatibility with older config files */ -int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *cpuid, +int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *policy, const char* str) { char *endptr; @@ -427,7 +440,7 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_li= st *cpuid, return 3; } str =3D endptr + 1; - entry =3D cpuid_find_match(cpuid, leaf, subleaf); + entry =3D cpuid_find_match(policy, leaf, subleaf); for (str =3D endptr + 1; *str !=3D 0;) { if (str[0] !=3D 'e' || str[2] !=3D 'x') { return 4; @@ -502,7 +515,8 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid,= bool restore, info->tsc_mode =3D=3D LIBXL_TSC_MODE_ALWAYS_EMULATE); =20 r =3D xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid, NULL); + pae, itsc, nested_virt, + info->cpuid ? info->cpuid->cpuid : NULL, NUL= L); if (r) LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); =20 @@ -527,15 +541,19 @@ static const char *policy_names[4] =3D { "eax", "ebx"= , "ecx", "edx" }; */ =20 yajl_gen_status libxl_cpuid_policy_list_gen_json(yajl_gen hand, - libxl_cpuid_policy_list *pcpuid) + libxl_cpuid_policy_list *pl) { - libxl_cpuid_policy_list cpuid =3D *pcpuid; + libxl_cpuid_policy_list policy =3D *pl; + struct xc_xend_cpuid *cpuid; yajl_gen_status s; int i, j; =20 + if (policy =3D=3D NULL) goto empty; + s =3D yajl_gen_array_open(hand); if (s !=3D yajl_gen_status_ok) goto out; =20 + cpuid =3D policy->cpuid; if (cpuid =3D=3D NULL) goto empty; =20 for (i =3D 0; cpuid[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED; i++) { @@ -575,7 +593,7 @@ int libxl__cpuid_policy_list_parse_json(libxl__gc *gc, libxl_cpuid_policy_list *p) { int i, size; - libxl_cpuid_policy_list l; + struct xc_xend_cpuid *l; flexarray_t *array; =20 if (!libxl__json_object_is_array(o)) @@ -586,8 +604,10 @@ int libxl__cpuid_policy_list_parse_json(libxl__gc *gc, return 0; =20 size =3D array->count; + *p =3D libxl__calloc(NOGC, 1, sizeof(*p)); /* need one extra slot as sentinel */ - l =3D *p =3D libxl__calloc(NOGC, size + 1, sizeof(libxl_cpuid_policy)); + l =3D (*p)->cpuid =3D libxl__calloc(NOGC, size + 1, + sizeof(struct xc_xend_cpuid)); =20 l[size].input[0] =3D XEN_CPUID_INPUT_UNUSED; l[size].input[1] =3D XEN_CPUID_INPUT_UNUSED; @@ -630,8 +650,12 @@ int libxl__cpuid_policy_list_parse_json(libxl__gc *gc, int libxl_cpuid_policy_list_length(const libxl_cpuid_policy_list *pl) { int i =3D 0; - libxl_cpuid_policy_list l =3D *pl; + const struct xc_xend_cpuid *l; + + if (*pl =3D=3D NULL) + return 0; =20 + l =3D (*pl)->cpuid; if (l) { while (l[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED) i++; @@ -641,20 +665,25 @@ int libxl_cpuid_policy_list_length(const libxl_cpuid_= policy_list *pl) } =20 void libxl_cpuid_policy_list_copy(libxl_ctx *ctx, - libxl_cpuid_policy_list *dst, - const libxl_cpuid_policy_list *src) + libxl_cpuid_policy_list *pdst, + const libxl_cpuid_policy_list *psrc) { + struct xc_xend_cpuid **dst; + struct xc_xend_cpuid *const *src; GC_INIT(ctx); int i, j, len; =20 - if (*src =3D=3D NULL) { - *dst =3D NULL; + if (*psrc =3D=3D NULL || (*psrc)->cpuid =3D=3D NULL) { + *pdst =3D NULL; goto out; } =20 - len =3D libxl_cpuid_policy_list_length(src); + *pdst =3D libxl__calloc(NOGC, 1, sizeof(**pdst)); + dst =3D &(*pdst)->cpuid; + src =3D &(*psrc)->cpuid; + len =3D libxl_cpuid_policy_list_length(psrc); /* one extra slot for sentinel */ - *dst =3D libxl__calloc(NOGC, len + 1, sizeof(libxl_cpuid_policy)); + *dst =3D libxl__calloc(NOGC, len + 1, sizeof(struct xc_xend_cpuid)); (*dst)[len].input[0] =3D XEN_CPUID_INPUT_UNUSED; (*dst)[len].input[1] =3D XEN_CPUID_INPUT_UNUSED; =20 diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_int= ernal.h index 1cf3d400bfce..ef882cff3912 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -4869,6 +4869,10 @@ int libxl__setresuid(uid_t ruid, uid_t euid, uid_t s= uid); _hidden int libxl__domain_set_paging_mempool_size( libxl__gc *gc, libxl_domain_config *d_config, uint32_t domid); =20 +struct libxl__cpu_policy { + struct xc_xend_cpuid *cpuid; +}; + #endif =20 /* --=20 2.41.0 From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067530; cv=none; d=zohomail.com; s=zohoarc; b=W6FUvYcetX5c2YMZ98PDZxOQGCl6gB80/0sNjVT9p3B2Q2HJCBaMZbcl6WgkqdMFqt27bixvyePV++we4Ia5VqFACTmsmYzROStFU3sj2Re0b1rZp/ShmeBjAxDLZHXWeS1QauRrtvP/Q2JInGvGro2okPfgjg2mQ8Yr1uiygIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067530; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7k1rS/yaURpqaZoQyG8Rolc9cmYKV1qsI38rLc/fzbI=; b=d5cVo+CJXNvwB4Q5HlYjGIRsqo7CrZegNLj8P4GL1SlqXDBmgXeFRO9FriDnNq7aP1tFJmMFCfFkFaunqdujjMGCW7B0zlH3YTUiEsh22DtC24RFdi7O1B7qX/3rmxvRFkbcXxDh5Yk7lSgXNwwrLghuw4ToiJ9Hs38CjZNe8Bc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067530897314.5965241414983; Tue, 11 Jul 2023 02:25:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561653.878149 (Exim 4.92) (envelope-from ) id 1qJ9cA-0004Pb-D9; Tue, 11 Jul 2023 09:24:58 +0000 Received: by outflank-mailman (output) from mailman id 561653.878149; Tue, 11 Jul 2023 09:24:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9cA-0004PU-9m; Tue, 11 Jul 2023 09:24:58 +0000 Received: by outflank-mailman (input) for mailman id 561653; Tue, 11 Jul 2023 09:24:57 +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 1qJ9c9-0003sM-Pd for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:24:57 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id cc530944-1fcc-11ee-b239-6b7b168915f2; Tue, 11 Jul 2023 11:24:55 +0200 (CEST) Received: from mail-mw2nam10lp2107.outbound.protection.outlook.com (HELO NAM10-MW2-obe.outbound.protection.outlook.com) ([104.47.55.107]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:24:55 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SJ0PR03MB5920.namprd03.prod.outlook.com (2603:10b6:a03:2d6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:24:54 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:24:54 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: cc530944-1fcc-11ee-b239-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067496; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=tfUAR7LtcqUvrJvKJ650F7u8kbPSqfT9jS7QFyjj3Ug=; b=FtA2bJfLxA+6LXfxOaANViFRBAHS+slCN0qtC+fG5Nzw2vErFUQ03jya mCerVV8QZje9y/5R+DgBtTg/2UU39o0lnCrxpzm4TEhXlIDcsbUwbwbGi /CF4A3MzU0RjeB2tS5PZs9RsKqhVb3RiwnlvzZfl/h/rF9BiMQHoRck6I 8=; X-IronPort-RemoteIP: 104.47.55.107 X-IronPort-MID: 115102759 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:gEvsFqoXWdgrZnmQ8+CmExTf/VFeBmI8ZBIvgKrLsJaIsI4StFCzt garIBnSbq6LZmrzfYhxatuwp0pQ6JLWmN5iTgNqr3w9ESgS+ZuZCYyVIHmrMnLJJKUvbq7FA +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbKCYWYpA1c/Ek/NsDo788YhmIlknNOlNA2Ev NL2sqX3NUSsnjV5KQr40YrawP9UlKq04GpwUmAWP6gR5weBziBNVfrzGInqR5fGatgMdgKFb 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay RAXADcJZDWin/uk+oiAErBUjfwRCsTaA7pK7xmMzRmBZRonabbqZvySoPpnhnI3jM0IGuvCb c0EbzYpdA7HfxBEJlYQDtQ5gfusgX78NTZfrTp5p4JuuzSVkFM3jeWraYKKEjCJbZw9ckKwv GXJ8n6/GhgHHNee1SCE4jSngeqncSbTAdtPTeXiqaM76LGV7jUIAz02fBiqm9KGrRSPBMJjF m4ppiV7+MDe82TuFLERRSaQsHOC+xIRRddUO+k78x2WjLrZ5R6DAWoJRSIHb8Yp3OcpQRQ62 1nPmMnmbRRtv6eSUmm17aqPoHW5Pi19EIMZTSoNTA9A5sa5pog210rLVow6SPHzicDpEzbtx TzMtDI5m7gYkc8M0eO84EzDhDWv4JPOS2bZ+znqY45s1SshDKbNWmBiwQKzASpoRGpBcmS8g Q== IronPort-HdrOrdr: A9a23:hYnFh6uaaaf+DLLu1w3go/ep7skDgNV00zEX/kB9WHVpm6yj+v xGUs566faUskd2ZJhEo7q90ca7Lk80maQa3WBVB8bBYOCEghrOEGgB1/qA/9SIIUSXmtK1l5 0QFpSWYOeaMbEQt7ef3ODXKbcdKNnsytHWuQ/dpU0dMz2DvctbnnZE4gXwKDwHeOFfb6BJba Z1fqB81kedkXJ8VLXCOlA1G9Ltivfsj5zcbRsPF3ccmXWzZWPB0s+AL/CAtC1uKQ9y/Q== X-Talos-CUID: =?us-ascii?q?9a23=3Ay/S+ZmjXaDmKlNX2hdVakE1USDJudXnX6VbIOl2?= =?us-ascii?q?CM10xEYWecW229ZJbqp87?= X-Talos-MUID: =?us-ascii?q?9a23=3As1DJfg+7lZT8/x4VqGfKstKQf55z6ISOIQMcq74?= =?us-ascii?q?5nJO1ajxMBhWg0DviFw=3D=3D?= X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="115102759" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e6ZH0UMnDMM1lo1hQHJSHul4dxbmkz+GjFFcZD8G4dRoN99lNOiaFN9D4pEpzr3Jb8/8RaX/D8efEu9jenwv2eZ5GdnSFt+YRmGVa6idnRcp4NfXguSDyEiTFneV54mbFle5xxEavf0gX96bUS+tyWM8Bv9p0tXP1T6TD/fPZjWkcAQlih/8ey0wkI3z2wL5w8g4R6QUARKFEh/AjdGt1dKtjbJ6E0jupHWOntafQbQFygGRyBUEdw/x/aysDbf/HcwH992TsR9ighWRka9uf00/hNQMZ6skGfbuhgCFWd8SI34Snakl3KFWvasNYtPhy+UVmJdafW+0dyQrRS7O3Q== 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=7k1rS/yaURpqaZoQyG8Rolc9cmYKV1qsI38rLc/fzbI=; b=ZLeRCOPIGgzT1dKkVFoO8tsqeQATq4Z3m1A3/XR5ifqPA5sjwf+Nfa953Gn7I/hRROwbqIjXvUqJgTSwo75WsaQ+Ef/oazXQU7rKvlzbmdFiHINY7cZt2ci+q+cYFokgwhSaLLK7n7YtNCL0Qyj2Ry30bug0DfB10kMNY9HgLez4xgl8KEQR7Ew5MjjvNssRjs0fTFlSfECcHgbYtUNHIIDwSvSdqBSFnl6DoDLNCDQfzGw2KBcrBuLN45rNWiu9Cy6uhX+Lz8Qod6cyetdeHn8BuUtdcG15lZUcV4dwKY/UbLLkPqNTfVS+HqTlP4p90iroU3eCsns7lMhLQ0PQ+Q== 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=7k1rS/yaURpqaZoQyG8Rolc9cmYKV1qsI38rLc/fzbI=; b=PpLbDqx23OSwGywQa9TzTzIJsV0tPnKSKG9965zkVVsaZmY4nsjSSw5RFp2xYkRmOY4LHn7faFaH+a6HaFfVcW/+97juuGKHmA82PdSBZKwb+JprErsl8u05f5joTM31SgJ2NBU0HPEYApLz7NLAHp98USLCSSxM0rFMdlEBGfc= 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 Subject: [PATCH v2 3/6] libxl: introduce MSR data in libxl_cpuid_policy Date: Tue, 11 Jul 2023 11:22:27 +0200 Message-ID: <20230711092230.15408-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0153.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:188::14) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SJ0PR03MB5920:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f38e971-1c79-4505-84ad-08db81f0af74 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: /OT8RyQMPdBlZ/BpVvif7h3Y10MLxa8iAMwX5lwqJ6UxemidizqtrYTUuqlE38MxtpvdIphCg+8uldWZQDFEUZKTxdqFsWD1qWaZGVgI4BBCgy/inFWwOTv27cpSOdMD7YosRqxWJRdeqaPCNrJeO/se9KDffiCAlJ+XGvJV1pxa+RZxs3cn+jTH82OQMh0wR4T8jjOD4Mpeir55t7Cacsj8UnwiBGq+p+ZfG7ZWbjr3P8yOohn/eBFYPs06YATczWwXQ2LO2Mu9w2gAkK734BNzI57rSsD52R96uKzmWb5bRCMYk/5uHgnn9ySyZ3bLeKofPZ3xYdJV9xqGk67fwqdIS0Z5pxbUdr7gIvDBfi8T6q0gBQOpibzNcpu1oVx9H4ogV+NuTrmaH0mq9wGfAh/q/KoMDpM1VSJvBNxuhfLE7GUkqnalYeh+WaY0f+xRYfHEiR6/2g+bDyPd5o33hZSxNtLNN3N8RSMskU2sxZSYzbHBQiLEUTTCGVWXJcv3yZbWZMjIAlqaKNVSu1Znbpd84iFGkOkE2ApmpqkSyopDsjDz7wnFDpWMMh7MRQbJ 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)(396003)(346002)(376002)(39860400002)(136003)(366004)(451199021)(54906003)(6486002)(6666004)(478600001)(26005)(6506007)(1076003)(6512007)(66946007)(186003)(2906002)(6916009)(66556008)(41300700001)(66476007)(5660300002)(316002)(4326008)(8936002)(8676002)(82960400001)(38100700002)(86362001)(36756003)(83380400001)(2616005)(66899021);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a3VuVVdyT2JSWmZHOUI2RVNvTlJ6QWRxT2VLMXowTjRMS05qcHR0QzBUN2pZ?= =?utf-8?B?QTUrQk9uWWdJOENJZ0RUYkVDU3QwZWY1SkNieVZmQVRQM3Zad0pFMmxQc1dt?= =?utf-8?B?dnVWTVRRNi9VMldRVUV5MWtBV0JnU0VaUWRCRmhUbzhBcVE3LzlpRHg2a2Ur?= =?utf-8?B?ZTk2TGh1cXpUV0VxUjNPWlZoNE96eThucTJHbHFSZ01PZ1RLdnVLbnNCSzk5?= =?utf-8?B?VEJxZGxYMDhBaWQ1MDlYNmtuSGZWd3VmSE9iaEJIeXY4bjRycHd5U0lmdkFI?= =?utf-8?B?Ukgzb3lKUW9JRGI4SWQ1YTZwV1YrSG5qUFZnNHlSV1EvT0oyc3gwWmFtRmNi?= =?utf-8?B?dHN0Z2dtYzZOWWpIaDBYc1JBOTRTclFyMUw4a04vOTduVlpHUlV2NHd5akdq?= =?utf-8?B?Y2QxRnpSTDllNmdnUmVzZ0hOVFFkSUdWL3ZwUHovQk9FRHovaFVsWWJEQWox?= =?utf-8?B?MXIvYktnUjZwSEtHbkdGd3Y5cnpqa3dnaTRSWk9Kam8yQ1dmdmRBb2tLWi9W?= =?utf-8?B?NkphS0RHSVZ0RjlRWmhzZDJ2aWIxODRiTjUraUZOcWc5Y3BXYUZtNU1ERHI5?= =?utf-8?B?S1NHY0pGOExPSW5Vd0pzMExueHFndiszVXp4ZFVFL0ZBcnRZTS9hdDQ0UjFw?= =?utf-8?B?M2pIbCtCa1R2R3EreWprZVl6RjBSZ1M4dFlRM21vWm1XUmhlUjVxYUlSU3hY?= =?utf-8?B?NklONzNXL3MwUTlQa25oMHBFcXhydlR0UkNkTHlvZXFBU1I0YWFBWnU5RXNR?= =?utf-8?B?OXdabCsyNndlaEhNQ0diTWdJRUw2dXRZUlFMaVN0MTdqcW0zWlVvNC9RYUJh?= =?utf-8?B?SHd1c2IwVVhzdDRpWjJ6T2duZGkrcUljaFFKN1VNWlJDZlk2UjVlUkhRYVF4?= =?utf-8?B?WEtlNjFMbWJ4aWdWeFdaL1dtY1VZL1oxeGM1VmkrZFQwTWR6T2VVYUxDMFlG?= =?utf-8?B?TUd1UnR0YmlWVmtZYkpGSmNDMkNmMndVdUtlWFVZYm52UmIyREdCS2ZJYTJ4?= =?utf-8?B?ZndTYlVJU1BQeXF2OG5wdUZXWkJ4MzU4VFhsb1p2UStodUN1Z2YrNmUwTGlW?= =?utf-8?B?d2pPNnNVV1B2N3lSQUNzWGYxMkY5RU42dGMvcHhjLzMxVy8zbDFsV3pMaHVK?= =?utf-8?B?QmtaQUhCSisvVWxqQ0VtZzZiK3BiVHRlbE9yd2dWZWlpRGVkL2loYU9uNGlm?= =?utf-8?B?OFdVS3JUTjFkaVJ2dm9mbFN3SjIrV3BrV3M1SnYxc0Vvd2svTlVBc1FUbFJ4?= =?utf-8?B?QnRlZ0JEWnB1YXl2VnBPcTQrZ0tja3puS2I4dmRHMnFFU3FZd0F3UVg1L0pS?= =?utf-8?B?ZzRTLzFSVGNzRWZDd0hLS0lLNzF3ZVVDZzN3a05iUkRGWmNvbmVsVURzcFdP?= =?utf-8?B?MWRRVFUyOHg1UE5zMk9VSnE3djJSOGNLbFR1Y3JLM0pXYVFyY0hKeGR2V0tD?= =?utf-8?B?cEs5WGxaNTdva3FvZEIzUDFCKzNPVThQVmFVZHRxU21LaXMzT3FlZXBISDNo?= =?utf-8?B?MUZ1RGlITklvdndVZjhqaGZLUFZyOEJZOHNpUDkyL1Y2bmRicWU3TXlpUHhN?= =?utf-8?B?T3lKTzl0VWZRWkIzakdPa0FzbUl1UFpML1dML2txbFB3SFRXeDJVczU5L3Bi?= =?utf-8?B?M0h3T0gwMFgveWNKU2pIQzlTSVQwRHFLYTBSZ01jTDBVUU00NGE0aFRodmhz?= =?utf-8?B?UWVUOEFoQWhJcWloSG9FTXdHOFFPcUNQYU5oM0pGRGUwZDhzTnNEbVRJYUtM?= =?utf-8?B?YzFzeHRCb1AzS2QwSWM3a1kvK1JySkJtSmtaRmptYmNHZDU2N3ZvdTBzWW9o?= =?utf-8?B?L3FwcUd5cm9LVzVCeGpHU1VZTElxeitYYlNvNWZJYms0WSthTDZRVzFmUXhK?= =?utf-8?B?anI1Qm5ZNU1JMjlLbnF1NWNGcG9hRXJiWWdxQmRqMmh2RG1zZVo0b1dseXN2?= =?utf-8?B?TW1WR0U5V3dKdVdyVWxYMC9MUnkrM3lpVkVOR1I5NlVybThPcXRYMUxZVHBC?= =?utf-8?B?VUlxbXNkcEdhTjVIRHZMMTI4UFM3UytMUFJjWFdqZ0xLY3I1RURiK0FuN3Y4?= =?utf-8?B?d1hJYmtSam5wdDBTNUpKUklNMzNYa1NGRlYyV1pUNWovdXdoNVVtMUgwOHhI?= =?utf-8?B?a2lGYmgrcW1zWk53MlRnazRPQXd4QlZqa2NMWm9Dd1hWNkJNaUZYVlQ5NXdk?= =?utf-8?B?d0E9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: dLW8SPpt7qUVXIYMioACnshHmbIrSdYr9/trNhLakiIwg8Hn9mtQbmpfdI0eeU4sFxUZyhd1ebwssMt48UVn/u+b3REXFxUG6Ee/Q+VpRQ5f4c16XrYA9he+uNptLWIPCBsDjf4Wm7YrGiDdt+d+i3/Vscv+Cu4e4UvKRpiNcbzwzmRlzu5yvAjVe3nF3pDxpU8bfu1MZEgmHMUh5909HhiAjMglT6VXLjlfL0CVC4BnQWLQUphUeHoPb52NyXBWyfq7D9egKAvhJtOCMvWmQAFaCq4kXlODcTTHJV+aapYQFyu2qXcs5vajow52yWaYyq3H6e3RMqvJHqDFS9ojr75vFuB2Zh72ScGoigNxIHuLvj9Wcxktp0BCjmX60TtQ9vOaA3Bl9/0guzPeybPyoGEOpE18+45kOS5pslCPWkv/sqQd1OUMQDju+Us3FFUxz2xdPxKCr+7NwYFnAaRngJFy4SuLBdcmYn1hpvq1M2/6RRG9unHvAz1DOXuu+2p2/XFFcLdVIi5KLgJpg4/qXLNH889jIovgplbIpoktANFzGRwPU8s54vkUvS/ddE2/bUKAQ8Ab+JzzYaNNgMPq+X4So3UH5ffafYoQqosp3iRNh+kDvSGbzTYbujckC3vvITLMhgEbFfo3mlcm+886pMg6h6onsFkNTYKXeRAxcPoKXGp+y/KdbUWvNcBjjHqW0yYtxdAS+iI4egsAb6BWn4hTJKCsAaU7C4gmQfM2WL0nkOb5wA8+stoEzTwvWh6+2e6ilwBphtWgqJE0Y+fbG2UD0RY2BVvJL1+91X2VM7Qc2PMkJCvZDobFuZmnt/Z8 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f38e971-1c79-4505-84ad-08db81f0af74 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:24:54.1192 (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: aSDvqEGHDHxwKDf2shMHY9nP27etJWo0Rzc7A7Zt18ZDVAw5+mIZLWPbkjFP/H5mwZ2sgqmAV+4ffaZRmc2dRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5920 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067532666100001 Add a new array field to libxl_cpuid_policy in order to store the MSR policies. Note that libxl_cpuid_policy_list_{copy,length,parse_json,gen_json} are not adjusted to deal with the new MSR array now part of libxl_cpuid_policy_list. Adding the MSR data in the libxl_cpuid_policy_list type is done so that existing users can seamlessly pass MSR features as part of the CPUID data, without requiring the introduction of a separate domain_build_info field, and a new set of handlers functions. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/libs/light/libxl_cpuid.c | 6 +++++- tools/libs/light/libxl_internal.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 724cb4f182d4..65cad28c3ef0 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -40,6 +40,9 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list *pl) free(policy->cpuid); } =20 + if (policy->msr) + free(policy->msr); + free(policy); *pl =3D NULL; return; @@ -516,7 +519,8 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid,= bool restore, =20 r =3D xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, pae, itsc, nested_virt, - info->cpuid ? info->cpuid->cpuid : NULL, NUL= L); + info->cpuid ? info->cpuid->cpuid : NULL, + info->cpuid ? info->cpuid->msr : NULL); if (r) LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); =20 diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_int= ernal.h index ef882cff3912..b1a7cd9f615b 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -4871,6 +4871,7 @@ _hidden int libxl__domain_set_paging_mempool_size( =20 struct libxl__cpu_policy { struct xc_xend_cpuid *cpuid; + struct xc_msr *msr; }; =20 #endif --=20 2.41.0 From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067534; cv=none; d=zohomail.com; s=zohoarc; b=h6FDA48NeHbqqQW4BCC9QlKwQcmFC3v5BlLWSuk0vLgcuJPow5CENp+U+xI58xBwUnwbByQFsuen3/6mOf30YWkPrz4HmSkqMdPCN3eolyUbNhyMFAwTvivzwzBmhKDyOpXCk6EIDdPAPHldUxSf2gaRvDjIR8UxlWYuLOvEPpw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067534; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0JBJAb8OYXFMhUt2Wfrjf4RzfJzF4XKtInaUKwrNQWE=; b=e6WeRFPM+EsUm0GB9qdaCi0wiwMk7NESW7X+apihC+3aaZiBg8Psg/buOfyJLWSdldE0Rk+8HzrhbL6gJHSRnEF17B5s/DVLB3HZwYJIeQpTj50/CHGIBCJ+ZYwnWJwgmaGOFzAXv/odOshPhQxg8Rj+0TWyC/OaLCVJ700bnBs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067534428791.5297566893919; Tue, 11 Jul 2023 02:25:34 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561657.878159 (Exim 4.92) (envelope-from ) id 1qJ9cJ-0004zo-Se; Tue, 11 Jul 2023 09:25:07 +0000 Received: by outflank-mailman (output) from mailman id 561657.878159; Tue, 11 Jul 2023 09:25:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9cJ-0004zX-PH; Tue, 11 Jul 2023 09:25:07 +0000 Received: by outflank-mailman (input) for mailman id 561657; Tue, 11 Jul 2023 09:25:06 +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 1qJ9cI-0003sM-MQ for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:25:06 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d06f4972-1fcc-11ee-b239-6b7b168915f2; Tue, 11 Jul 2023 11:25:03 +0200 (CEST) Received: from mail-co1nam11lp2176.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.176]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:25:02 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA3PR03MB7465.namprd03.prod.outlook.com (2603:10b6:806:39d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:24:59 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:24:59 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: d06f4972-1fcc-11ee-b239-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067504; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=8+Sl3H+wuO6OVjhm1WdnZ0irrqzFxLxnse2I2rwpE20=; b=BbiVLyUzmb6HvawruLMjvSgQby6DWXjDjZ2Gym1XHt/e8ZOTa0kTQRWz wfErWyYCsyGbBNkskt83GxiBR/rwHhLr9jHwSYRYT8F4nQDH/Rm3YN1Yj saXs5f3BVm+Ck0kxBzP5gY19dMa1O563cY/b94y1xAR4uG5N4DuSXg/qs c=; X-IronPort-RemoteIP: 104.47.56.176 X-IronPort-MID: 115102774 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:hNdzOKLvd1zNBLMTFE+R9ZQlxSXFcZb7ZxGr2PjKsXjdYENShWRVn DcWXmiGOavZamP9eNAgYI/k8R4B6J7WzNZnSAdlqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t ZV2hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpKrfrawP9TlK6q4mhA4QVnPakjUGL2zBH5MrpOfcldEFOgKmVkNrbSb /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/ jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c4sK2VS0 sQxEAlKQQCPhMDrw72wQ85F05FLwMnDZOvzu1lG5BSAVLMNZsmGRK/Ho9hFwD03m8ZCW+7EY NYUYiZuaxKGZABTPlAQC9Q1m+LAanvXKmUE7g7K4/dppTGMkmSd05C0WDbRUsaNSshP2F6Ru 0rN/njjAwFcP9uaodaA2iv127aXx3ykBOr+EpX/+/lUu1KC3lAKNz8PEl+C+9iGikKXDoc3x 0s8v3BGQbIJ3FymSJzxUgO1pFaAvwUAQJxAHusi8gaPx6HIpQGDCQAsUTppeNEg8sgsSlQC1 FCTmMjyLSdyq7DTQnWYnop4thu3MCkRaGQFPCkNSFJc58G5+d5tyBXSUtxkDai5yMXvHi39y CyLqy54gKgPickM1OOw+lWvby+Qm6UlhzUdvm3/Nl9JJCsgDGJ5T+REMWTm0Ms= IronPort-HdrOrdr: A9a23:NToACatxuAC6qO5RiJJpf3iW7skDqtV00zEX/kB9WHVpm62j5r uTdZEgviMc5wx+ZJhNo7290eq7MBfhHOdOgLX5ZI3DYOCEghrLEGgB1/qb/9SIIUSXnNK1s5 0QFpSWY+eeMbEVt6rHCUaDYrEdKXS8gcaVrPab5U1ECSttb7hk7w9/AAreKEtrXwNLbKBJd6 Z0ovA33gadRQ== X-Talos-CUID: 9a23:R+Cn22zWJQA2LT/WYpjrBgVPMMQ5VUX09E6XDF+0CkQ0S7KeQHi5rfY= X-Talos-MUID: =?us-ascii?q?9a23=3An1jfow2ZtAfXl2MVoD02m7Qq6zUjpKmpNnsCgI0?= =?us-ascii?q?6ovamLGt0Am28szS7a9py?= X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="115102774" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mKGd7xRA2+5+DPnpQECHCyu1PZgkvPOXlNMnM/b7WSyDy0zC1lBMPhDPIPO8AYv6avLb+Tcpm3IbpDPSejIYHx4yg+AiTdPvOldQNZOyyz2TySYrjgpmm9HguwIkQ4X5/6VyqHELZCQwnC0JqUi3M6CfwL6QRZWfg1j7kknGO44um/cOzfu4xlDCQKFgdLN7MY0WhitqWq8+Cy/h0u1WtZA1t70FCt0hvMGrwmXdWb0dnOf77LvtHHL8CkZLW71tjNW+qdq97sadf5oltC2ZeZCMo4RgSFM0DU18J5CANGxh9hCdFIhlWw0x+7KBBSAXNnD2FTCdKGYPaS5MDhLG3Q== 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=0JBJAb8OYXFMhUt2Wfrjf4RzfJzF4XKtInaUKwrNQWE=; b=LHD65IAVARXCl1KgibSWkT4CiCqyqxPO8Esqnp6+fF3aoKhHwcQFPYPA0x1hPQlohLOWyzbArz2i3kQZzNyRQB7rRYJobdNtHTa8LZOb1EeQ4l2xDc6D2QSHIYUewMAq+TunuVat1bDeaCemH+3/P9W6CKkPzFSxm3+EnGOJFq9KSyd7sz1mkTRzJTkMv49dZISQPXP9pO+ICnA5EgJS+IQ+e5VYSUF2sY80KbnCYyJZgz29Jkpud4OnVJGb77C2vWTo7sYkhQiOHyamNshhEXjlBZsFgo74u8kd8NrbcV6fB5OBUo6l3clmBCU8DXBmFbSLuoY8BlRYLO9PBhM5Xg== 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=0JBJAb8OYXFMhUt2Wfrjf4RzfJzF4XKtInaUKwrNQWE=; b=PuOLk2ZXfWAuoCLqLNxjlq5VfE1lgnxMSOMo2MAmXKWsX8wLHp5kpQGwWaEj3/fl85OMKw8Ew1vab8ALKG9eefCpEhdSui7qpkrq/HEDNo1PcJyWW4PhuSGyDsZbFFjuUXUToPMiqiiQsLknLntDEH07mdo8cjteZDkKdfAUoIs= 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 Subject: [PATCH v2 4/6] libxl: split logic to parse user provided CPUID features Date: Tue, 11 Jul 2023 11:22:28 +0200 Message-ID: <20230711092230.15408-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0391.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:f::19) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA3PR03MB7465:EE_ X-MS-Office365-Filtering-Correlation-Id: 0502cf19-beeb-4311-8550-08db81f0b2a8 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: T6Lkgzl7zecqMty/g1FqPHkG10n556apvSJS6EYQLDzf0PRjOhN6ezB8xCRQBxumrT99YRTZMKiBydlXGBig8xtg7rkCyr3rqYMc+1f0/kGyKFANCNHFkONvpY0O+CBN7PCHb900QnFZqUHAWt2yhQytSU/C618/btdBOCqQ5ikd3+RIVVEU2O7qrUJ74a/cr6Lzf85gBXOmns8lALWHCsuJjwosyXzvtqIaSHWCyanHg6+UVniaYohspenjWWYjyssYU3kNvt/DP3s3ZZJTLzvJNbu4+OAXN6IzWBfZZg9fTCvcwnOAua2C4F6WR3DYBPxZGQl7QbBAZ1km5u2t9FzIPk8Q5XL4OIziOD76PDGe+O3VJAUz7dRcHqchewsBqNoZVR26Z5yjr+MamcvyzUfrfMxaTADwQTbCEXAWxBjz5JkGXepNfdVAJTRerq+KDQd6IyjatiR/Xt5zYm+cJ58/Thn1cxxA+Tq4MZ+SwuN/oTod4XE97dvjRbCGx7AOSLHYDMqb8cWIaJTd5u8blcQrokVDP98Sq6B9Qf9awyzscYLaeKn5+jnEzlpb5b+M 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)(396003)(346002)(136003)(366004)(39860400002)(376002)(451199021)(38100700002)(86362001)(36756003)(6666004)(6486002)(54906003)(82960400001)(2616005)(26005)(1076003)(186003)(6506007)(6512007)(478600001)(316002)(66556008)(5660300002)(6916009)(66946007)(66476007)(8936002)(8676002)(2906002)(83380400001)(4326008)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cGg3SWpIeVFMbEowTFZkV3ZlQnBnTU9iSmd2S0dnNWtKaUVtS0VEdi9obVVw?= =?utf-8?B?N1JUTlo2U1FidWxJZENYVFN6SFVtdWhyOTBDV25lU1Ezb2lySzhxZlY4UGx0?= =?utf-8?B?TnVYcFRCNHRZbGYzWVlWdmxhVkRiQXkzZkpaeElCYlJ5cEVpWTZ2SGw1czZI?= =?utf-8?B?UXV2MFlXWFF6UStyekEvYmcwaVpYT2JxYnNCaHR2ZFd1ZSs4OW1PWjZnZUxk?= =?utf-8?B?a002NTNTejJOM1JFR2E0bmZrWE1JNjJYbFU1SWVVSi9ySS9Nc1lhUytXbkww?= =?utf-8?B?NEFKOThTdE1lZEgxQnN6VXJ4cGtWc0lFemhiMHRneDVONnB0b1k5bWFHYTFJ?= =?utf-8?B?Q24yNko3RFlENHNscTIwSjNWakpCc1RBckxkMVBqeDA0RVJIWjRneThOUUFV?= =?utf-8?B?alBHSnMwS2txcWxTbzZLOGU0OG5wMkw4STRNdXg2NG0vNnlmR0xNdG43azRK?= =?utf-8?B?ZnlmZ3BOYmF4elJ4VlVoOGNhOFBaR2NoVWtnVXNnOVBvdVBSYTZuNnpxRGJ0?= =?utf-8?B?dlYzMlhzdi9NZzQrdldwYll1RmNDOEhDT01mVzVMdDZDSWNmODZ5c0JnZHlp?= =?utf-8?B?dm5UNHJUYUNpbHZVUEt0SlRjY2lnWTFyT0k2c3l1N0dIdDVNZjI4eDUvT3R0?= =?utf-8?B?anRDd0lEQVRJZEVnZGtWMUFERUFtVS9BYVY1MkZ6SGhGVGh0UzRBeVFublpV?= =?utf-8?B?UTZnMXE5eTBiMG5ENWZ4MEtrUkhCNFNwUDg1OVlBWGErQkZqVlQ0dUliTm1w?= =?utf-8?B?NFVwMnRrZ2swaHlvYWt3ZXhCN2h0RjRWNTFZWXJWYzZRbUR2T0NZTTl5Y3B2?= =?utf-8?B?ekk5elN4ZjFmdmxUVEc1T0hmY3pPbnVsZm41clJjNXBhTE5Rc2FYaWFBSEtS?= =?utf-8?B?d0M3S0VnWXNkVFcwQmRwcHd3bGY3QVVmYVoraWREUmhUUmE5S1hVcVg0cHZK?= =?utf-8?B?K2hJeXdubU1EcmNKOGZqU01yRTdZRDZiWGhyNDRoMWF6eldBOWF5QmdVbzlD?= =?utf-8?B?c1h6VHVkYnFwbHpXcnFwaEdVWVBSdXFnRVVlSnpXNjIzdG93bE9pMWJsSkRR?= =?utf-8?B?bWlnZlArVm43TmhKSEFjdTZwcWJZS01vQWRSa3hmc0tCMEJVeVhTRW53RjYv?= =?utf-8?B?WTRwVXcvQldKdy95Unh1RnY0cEhwc3ZTdGVuRTF4WGJxRTA0b3R0SExQQkJW?= =?utf-8?B?dFR4a0UyQU1laDZISkVrODdkUzRXVTdSZ2dxZGhQNTB6YlFkRmVQWlFVQVZn?= =?utf-8?B?QUM5SFBOdEs3WXdUTkJnUGI3Q0tBTU5qS3Q0MlE5QWFDbDRNd2ZlbksyN1Fn?= =?utf-8?B?WGsxTTlOcU00dWlKUHk5RHZwdk0vRy92SGUzbkdRa3JjUU5WVktXNWFReXZ2?= =?utf-8?B?Q2JpZTF0aHdlT2pxV3NZWDNWZk9FOWtLaWJhTjdJYUVYSUJCNXFYdkE2QkJ2?= =?utf-8?B?VmhLSldnQWUvcWpsZW04SmRZMkcxalpGL3RVU3lCcDNHSTlpUDJPVTV5Q3U2?= =?utf-8?B?cXBrZ0lEdU94ZXpiQ1BscXN5RXlPSjdqOGlxd1IyYVMxeUVEcVZvdktuTXhm?= =?utf-8?B?QnRXQklBR1pzV0lIa0c0SnBGQzlhTHNvM2gyWVlhVVhsSDhKZTU0Y2N5WlVz?= =?utf-8?B?OTlxQTY2VmpBMlBXa1B1Rm9RVjBKMkEyMEZRc1kxMmRkVWNoWjhKUGVkR01W?= =?utf-8?B?Y1N0bStuQWppMHp6OThKcjdNeFZzQlY5MGVqb0JaZTZ4cW5EeG5lUEdvQ0ln?= =?utf-8?B?V1Y4OFhDYXZwT0RNN1MxTGduZzZWVE95STlXbFpOKzZ2UUdoV2dkRXk3U2hx?= =?utf-8?B?alZkS1NYQzR4YjJLSTZpVjRNRVVrbkRST2d2MzBuaFNRRkVyMmxYZEVoRndu?= =?utf-8?B?Z2E0QzEzUWlIUUFNMDAxVEVRMnBmV3pLRUhGS3RWWVhkOFNYMG8xUkQzcVMv?= =?utf-8?B?UFk0U3p5UUUyOG1GUU4zd3RYK0gxNkF6RXNTakZ6bHNaYTV2dXhLSkFDUzE3?= =?utf-8?B?Tk1IamVMc3hHRzVjdnI0YmtPMDM3ekVUTHU2MFJJSXZyN2NsQi8vVWZBeGZG?= =?utf-8?B?NXRTMm9vQjQ5TDR5bUNnTkpSUk8xRGNYQjRWWXZuWm8yZjE5S1NEWTNEWVAy?= =?utf-8?Q?YP7+mS438fF8GEQAY9VwJz6GF?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: sDxXipLZ3jgwFqsFPR5us9m4C1nUXhETraMe7eVdZFFTTm5ZTyC0hE2uMc4qBDnT04R7VzTHQ7geWAMzqhw0vs+yiyqmq9xpmWQoYo/wCb3ge88bO/RnFDuOiqAXbzhsHjRyUXLg6v48fhM/kGQIo0fxFPG9rzeaJfeVkkZSgPSyWFlkIrbySvAWygLqMbaUTc+CqJbGeFNiT5d7KMr4YFUnlJePG9yvQEHzpEza73aMdhrUz+iZd4n7/k1eOzvsHGOrBfyhy2q+4RS+HxzFGrSK+GC41HQuO2obOkxGxos1IoTqzvhcFrZAIpFwo+FQfnNCE5yGSsSn4Vd5pdZxbGCLsWdYkfBlcBZekzftTzUBtcad5tVMo5B44euq7oqUpxCm6wxxIXxmKWVtkZgzOfAPk1sN9FVVljlbAc+vkR7e/5Ucuo1hGv8xiF8ljA1SS9F82MA1kBVgw7Q0+o6C8Kuho3/1+3s95cKPv038NVzIQCQrm0FLV+sJXRSm1TlLcR69u7AT53BRnXwm/MrnODUekcwNP05W2UQuz4EZuZhy+YfHJg0OqnUb/rLUpXoy1j4Z2MuOnhkDWw8N7yjj0/gPZ0O2CYitLaRuZ+a4NzeUzhhUsAgFV8ZfzgvtQ8DW5J6dKuqvxt6LmUgKhV/Ual8jI/JsGA1s8HgrwN27MYdVuNp2ewyXg3goZTNr/2RJHlUGJqwfRNI5pxHvQS4lpybPLmABrawuJqgFabEIe20sqpep7NKiOIe7Kjo4rFcF3IxELv4H+WQftjLiMSuuExydziwI1yJwRm7DVQComN6qrRq6MiSlECjwn2JJgUhg X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0502cf19-beeb-4311-8550-08db81f0b2a8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:24:59.4023 (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: ZjMYJpdBkzXyCjpHRuxELP72Mp2LE4ekPD5q6a3g3Kl/+i0vXCepaNTJPy52h9tQS5N1VLBp+pcX+qHR2TLGpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB7465 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067536841100001 Move the CPUID value parsers out of libxl_cpuid_parse_config() into a newly created cpuid_add() local helper. This is in preparation for also adding MSR feature parsing support. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Anthony PERARD --- tools/libs/light/libxl_cpuid.c | 120 +++++++++++++++++---------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 65cad28c3ef0..52e21de81fc7 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -97,6 +97,66 @@ static struct xc_xend_cpuid *cpuid_find_match(libxl_cpui= d_policy_list *pl, return *list + i; } =20 +static int cpuid_add(libxl_cpuid_policy_list *policy, + const struct cpuid_flags *flag, const char *val) +{ + struct xc_xend_cpuid *entry =3D cpuid_find_match(policy, flag->leaf, + flag->subleaf); + unsigned long num; + char flags[33], *resstr, *endptr; + unsigned int i; + + resstr =3D entry->policy[flag->reg - 1]; + num =3D strtoull(val, &endptr, 0); + flags[flag->length] =3D 0; + if (endptr !=3D val) { + /* if this was a valid number, write the binary form into the stri= ng */ + for (i =3D 0; i < flag->length; i++) { + flags[flag->length - 1 - i] =3D "01"[!!(num & (1 << i))]; + } + } else { + switch(val[0]) { + case 'x': case 'k': case 's': + memset(flags, val[0], flag->length); + break; + default: + return 3; + } + } + + if (resstr =3D=3D NULL) { + resstr =3D strdup("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + } + + /* the family and model entry is potentially split up across + * two fields in Fn0000_0001_EAX, so handle them here separately. + */ + if (!strcmp(flag->name, "family")) { + if (num < 16) { + memcpy(resstr + (32 - 4) - flag->bit, flags + 4, 4); + memcpy(resstr + (32 - 8) - 20, "00000000", 8); + } else { + num -=3D 15; + memcpy(resstr + (32 - 4) - flag->bit, "1111", 4); + for (i =3D 0; i < 7; i++) { + flags[7 - i] =3D "01"[num & 1]; + num >>=3D 1; + } + memcpy(resstr + (32 - 8) - 20, flags, 8); + } + } else if (!strcmp(flag->name, "model")) { + memcpy(resstr + (32 - 4) - 16, flags, 4); + memcpy(resstr + (32 - 4) - flag->bit, flags + 4, 4); + } else { + memcpy(resstr + (32 - flag->length) - flag->bit, flags, + flag->length); + } + entry->policy[flag->reg - 1] =3D resstr; + + return 0; + +} + /* parse a single key=3Dvalue pair and translate it into the libxc * used interface using 32-characters strings for each register. * Will overwrite earlier entries and thus can be called multiple @@ -341,12 +401,8 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *= policy, const char* str) {NULL, 0, NA, CPUID_REG_INV, 0, 0} }; #undef NA - char *sep, *val, *endptr; - int i; + const char *sep, *val; const struct cpuid_flags *flag; - struct xc_xend_cpuid *entry; - unsigned long num; - char flags[33], *resstr; =20 sep =3D strchr(str, '=3D'); if (sep =3D=3D NULL) { @@ -356,60 +412,10 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list = *policy, const char* str) } for (flag =3D cpuid_flags; flag->name !=3D NULL; flag++) { if(!strncmp(str, flag->name, sep - str) && flag->name[sep - str] = =3D=3D 0) - break; - } - if (flag->name =3D=3D NULL) { - return 2; - } - entry =3D cpuid_find_match(policy, flag->leaf, flag->subleaf); - resstr =3D entry->policy[flag->reg - 1]; - num =3D strtoull(val, &endptr, 0); - flags[flag->length] =3D 0; - if (endptr !=3D val) { - /* if this was a valid number, write the binary form into the stri= ng */ - for (i =3D 0; i < flag->length; i++) { - flags[flag->length - 1 - i] =3D "01"[!!(num & (1 << i))]; - } - } else { - switch(val[0]) { - case 'x': case 'k': case 's': - memset(flags, val[0], flag->length); - break; - default: - return 3; - } - } - - if (resstr =3D=3D NULL) { - resstr =3D strdup("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); + return cpuid_add(policy, flag, val); } =20 - /* the family and model entry is potentially split up across - * two fields in Fn0000_0001_EAX, so handle them here separately. - */ - if (!strncmp(str, "family", sep - str)) { - if (num < 16) { - memcpy(resstr + (32 - 4) - flag->bit, flags + 4, 4); - memcpy(resstr + (32 - 8) - 20, "00000000", 8); - } else { - num -=3D 15; - memcpy(resstr + (32 - 4) - flag->bit, "1111", 4); - for (i =3D 0; i < 7; i++) { - flags[7 - i] =3D "01"[num & 1]; - num >>=3D 1; - } - memcpy(resstr + (32 - 8) - 20, flags, 8); - } - } else if (!strncmp(str, "model", sep - str)) { - memcpy(resstr + (32 - 4) - 16, flags, 4); - memcpy(resstr + (32 - 4) - flag->bit, flags + 4, 4); - } else { - memcpy(resstr + (32 - flag->length) - flag->bit, flags, - flag->length); - } - entry->policy[flag->reg - 1] =3D resstr; - - return 0; + return 2; } =20 /* parse a single list item from the legacy Python xend syntax, where --=20 2.41.0 From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067547; cv=none; d=zohomail.com; s=zohoarc; b=mAXaW9jDoqE3uq+ngqSQpNVHhguPprkVLWpLmuc+yWWca1yJlMg0spZiI67QzgYIQPGe71Mrghf0etK/1gJBvVyQ0Mo7jqYh3ORV0pqAynt6qewLkfP12t53Utq/6U5bh1rDE5Isq8DNJNXTP9ed8Q58d2YDmJhjL2pFjJcdZdc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067547; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=y9MqF37yhxfStVG5/mzICSzNPnqlgbtuAxZ3VZTvJSY=; b=TTx+zNw56N2I/8VSkdlC1DXnByrmoPNmXNIbENXz1KP/2X4042FSQtEyHmIFy2Ubpfj2DiPek0CjIJMFoP9bTNEg/48MLyfZjRF3GeHutCUDlOY3tptY5s+TOjY5AQmCz9V4MUkQP554+ukAnocLp+EYZMfQcRZzAmsIPHo2IfM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067547369860.0972272677703; Tue, 11 Jul 2023 02:25:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561661.878169 (Exim 4.92) (envelope-from ) id 1qJ9cR-0005lW-88; Tue, 11 Jul 2023 09:25:15 +0000 Received: by outflank-mailman (output) from mailman id 561661.878169; Tue, 11 Jul 2023 09:25:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9cR-0005lN-3n; Tue, 11 Jul 2023 09:25:15 +0000 Received: by outflank-mailman (input) for mailman id 561661; Tue, 11 Jul 2023 09:25:14 +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 1qJ9cP-0003sM-Ub for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:25:14 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d49ac06f-1fcc-11ee-b239-6b7b168915f2; Tue, 11 Jul 2023 11:25:11 +0200 (CEST) Received: from mail-bn8nam04lp2041.outbound.protection.outlook.com (HELO NAM04-BN8-obe.outbound.protection.outlook.com) ([104.47.74.41]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:25:08 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA3PR03MB7465.namprd03.prod.outlook.com (2603:10b6:806:39d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:25:05 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:25:05 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: d49ac06f-1fcc-11ee-b239-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067511; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=EKORR818BvAQ8NM1Q8PjcPTPakvjfGrsZhV8oVVgJcs=; b=I/m8oUOAn2Kr6iIjmJWZvFIAwRAX5wmvKxIFKft9Thj/XBL5AISzt/PT m5gQTjvpsG+RQcab9Zv8wExVo04se0hlg08+lpwkAd/poMJ8W5yS+XyOt 1h8mJ+FiA3sVXsWufsmHmIuUcuonj9RhCeYG5COcknl0bwwW1JwWARi8h 0=; X-IronPort-RemoteIP: 104.47.74.41 X-IronPort-MID: 116231404 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:bQYj1K/1dH0fCPXPFl1LDrUDpX+TJUtcMsCJ2f8bNWPcYEJGY0x3z mcdUDuHOPmJYmuhfNx/YNvg9UMAuJbUmNRiHQBsqXg8E34SpcT7XtnIdU2Y0wF+jCHgZBk+s 5hBMImowOQcFCK0SsKFa+C5xZVE/fjUAOG6UKicYXoZqTZMEE8JkQhkl/MynrlmiN24BxLlk d7pqojUNUTNNwRcawr40Ird7ks21BjOkGlA5AdmOqkS5Aa2e0Q9V/rzG4ngdxMUfaEMdgKKb 76r5K20+Grf4yAsBruN+losWhRXKlJ6FVHmZkt+A8BOsDAbzsAB+v9T2M4nQVVWk120c+VZk 72hg3ASpTABZcUgkMxFO/VR/roX0aduoNcrKlDn2SCfItGvn9IBDJyCAWlvVbD09NqbDklH7 a0GDiAiNiuBit+b6YqrUNFWhNYKeZyD0IM34hmMzBn/JNN+HdXpZfWP4tVVmjAtmspJAPDSI dIDbiZiZwjBZBsJPUoLDJU5n6GjgXyXnz9w8QrJ4/ZopTePilAouFTuGIO9ltiiX8Jak1zev mvb12/4HgsbJJqUzj/tHneE37aRx3iiBNpOfFG+3tlHj0OY2k9LMyYbf3yjufvgl3aVGN0Kf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZebPQ2uclwQiYlv neLkMnuHidHq6CORDSW8bL8kN+pES0cLGtHbylUSwIAu4XnuNtr0kuJSct/GqmoiNGzASv33 z2BsCk5gfMUkNIP0KK4u1vAhlpAu6T0c+L83S2PNkrN0++zTNTNi1CAgbQD0ct9EQ== IronPort-HdrOrdr: A9a23:gLQPo6Fp7RROOfWwpLqEHseALOsnbusQ8zAXPiBKJCC9vPb5qy nOpoV86faQslwssR4b9uxoVJPvfZqYz+8W3WBzB8bEYOCFghrKEGgK1+KLrwEIWReOk9K1vZ 0KT0EUMqyVMbEVt6fHCAnTKade/DGEmprY+9s3GR1WPHBXg6IL1XYINu6CeHcGPTWvnfACZe ehDswsnUvZRV0nKv6VK1MiROb5q9jChPvdEGI7705O0nj0sduwgoSKaSSl4g== X-Talos-CUID: =?us-ascii?q?9a23=3AkfAa+2iSeqRB5Ue2/GOYh3MoszJue2WM0lHADBe?= =?us-ascii?q?DC2tUZZStWUWowqF2up87?= X-Talos-MUID: 9a23:HclhsgbR4YPtUOBTkBLjmjp+F59T2KmEL1gVk8wbg+LHOnkl X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="116231404" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fP9SHOzJVJ8z+O5sg41C0TPtUBcMU1VAlxqGdCvQGLn0aS8pCmJao+mG7ngiTSG9M1zcXFWSLLhAs1Bb0fGNPzG3Se5E/QYDGC83pi1yZZoI78hAb5IFfrdjhv+A2KkiS2dlhTHp6N2duutA9+0PIqBNPwE5JR2lHTSGfFiKOBLlVmC76Xlo6S7FoTc2xxj+UkOyP6fefyOO/JG5KZuS3u2IS0UsC85fwSlH/lojG0FYilJ9jOb3CAB8N6enN4IbvJGWT2Py7IjgRo4WoF76oKq+gFcy9gc4bU9fxfNjDBad0xcr0Hq2+EBaA+tSEIIgHGlp2NndScCu5nnj/hvTNw== 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=y9MqF37yhxfStVG5/mzICSzNPnqlgbtuAxZ3VZTvJSY=; b=UZwyl9EMXnzHdn7X6g/sj8BccO+U+UXxglHL1/NkQeiLA8UQ29yW0xelEQq5oC+Ii8D0ca5ZU5pFQKIpHjuy4ei+od4GrBsMg6oRnhCuHHZRhIgS6zsbzhr3bA8Yw8uw3nEt7317PJTrK4GMxDJP59g4sILjwyce0jyI0okXHPt7rWwNhmCbRMs1zhcKF43ky2Dsyg8UtYAlpM2ItgGtuDDGYE4FnK/PMtC0p2PW6Z73GUyGyPcQJNGLfPaL3J3AMSOykvgvg6Uo5W69i+4fu/i16WY9ifix6x04AX5/J/VEy1IZ57a1rbPtRqWnekTLCDa/ZlnnvnQX5MrhsmK4IA== 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=y9MqF37yhxfStVG5/mzICSzNPnqlgbtuAxZ3VZTvJSY=; b=JkyvdnuywDgeFPRQAaRAaHNFUtDIX/amBZNQyNLQv5KW2QsFZVpRH5xdQqBVl5i7n12ub7IOvDRNt/dLsENXlgxj9wlhU21gP+KJ2Wilps6A+ek9kjKKk2bsogJFKaAMViCap0Dx7yl1V4MnJIiTzeiD3ccIlI3ZxZEGnVwKZqs= 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 Subject: [PATCH v2 5/6] libxl: use the cpuid feature names from cpufeatureset.h Date: Tue, 11 Jul 2023 11:22:29 +0200 Message-ID: <20230711092230.15408-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0362.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18e::7) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA3PR03MB7465:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e8d3ebb-9875-4274-de9f-08db81f0b65a 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: qHfk8f3aQvNjn4Rc/jwrxSPE8KWHWv2iKkfuNyES7rIIFCcT2FYrj5lH6M7zba3n+TvPib4+AtV8XV9MQJ7hSDo1Pa9CRcKHf2B7yAVZWSydTw/cECIwsJlD8xLcjbLZlny/mIN+MtsynpRpUzPdYhwjctNt+DKKbTJNntITgOfMvAIYLwEfk88V4Taxq5mADobpE8DrjNB8dTxQGTOfSF4GEoF1uBP+Dk3VywS8wmbQHEEU/R3sYcnGlHDzWD6d4vxBh4xrpoYnK2DMBd4rG+iqzl5jeU5x+b4dsnFJ0WH4Vw9oQPl58ZX5kFKshNnx6kmpevFxjNyElSwGFkUBz//WK4ImW3cvq6jNPAYKq1xmUeRNR6U7i/az3eEBXspXh7ZeA/kTvTLi3qRpt/cuf9rSOaaB02rcyEV7qFnPEt7IfpXO4tQuSQYyhHM7NJDahJHYl86Tys8I949UB5+djVL8cIiR8L8ANqBSXmHf+Ss0qKMeASeHUyJoDZfWGivKTSoakNDgvj/ZYDt+tLT7rjRMwZzfNPDjLAHhKCyH32PWZ50k9sdHIXNWZeY883QdODzofTB7FCD88qvMIYYEZieXUjLadk7AMHQxc/7yp2o= 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)(396003)(346002)(136003)(366004)(39860400002)(376002)(451199021)(38100700002)(86362001)(36756003)(6666004)(6486002)(54906003)(82960400001)(2616005)(26005)(1076003)(186003)(6506007)(6512007)(478600001)(316002)(66556008)(5660300002)(6916009)(66946007)(66476007)(8936002)(8676002)(2906002)(66574015)(83380400001)(4326008)(30864003)(41300700001)(473944003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OXB3U3dCR0YvVHQ4R09DRkErSHlxT2NhRHFRUFBNY05PbnhFU0hwKzRRU0R3?= =?utf-8?B?NmxpS1VtNkt1cEhqdkNYaGI0WnZIZjlzWlZNT2JKbll2WGpwSDFXYk41RnhX?= =?utf-8?B?b3ZxcjhBbG42dktjUXAzOHFMVXU3a2Y4aEJtR3Y3TDVlZ3ErelZhM0U2bzlx?= =?utf-8?B?K042anN4Mldwc3BLWndwTGU2RDlScFRPTmU5V05LUVFnMDFWWHBPSmdOd3Zh?= =?utf-8?B?M3FXWDlaSVoybkhtcmVUYTY2VC9qSlpLTXpnb0FrSGkxTnNWOTlKWTNtOU5u?= =?utf-8?B?VTFVNlFCYXd1VnN5WkVmZkJBc1BQdjlqeFIrVXVhWFNJc3FBRXZtNUxjQ2JC?= =?utf-8?B?TlNvRkZTc3JzZXI3dFYwRFV1blVmT0RJVHRYMnNrQkYyTnJLN1RJWGpOeGl3?= =?utf-8?B?ODZEcHJZbkNseHN5cms3djUvMnBtdThZa3NoY2VCUTVZM05PZUNqaktUUEps?= =?utf-8?B?V1VobytFdTdsYUdKWnM2NHFGSlIxdnVQRm9zd2h6bkxlWU5QMm9xSVY1RlVj?= =?utf-8?B?L3RXbVJ2VVFKNk5zV0ZYSEg1SjdPbWVmS0lyZlgzUXpBWHRON0tIVEFNZWxH?= =?utf-8?B?K1lpRXlCeHowY0NMQy9WQXdXOStqV1lhNEk5TmsrdEpuSllEL3JsYjVTTkI0?= =?utf-8?B?WUl4elNxRUNDM0JDcktlS1BuTmxHSUZXUm0xektOL1VDRVdWRExTRURINWhx?= =?utf-8?B?cEtaL2tIRk0xNFpPT0twQVZnWnoxeVZ0UERXMGROdlF2SWw1VjBHWVFXT0Zi?= =?utf-8?B?ZXhyMTdibElNd3VQd3greFNXOFdFTTUybG9LMElMZ3ZxdVRhenppcndLdSsy?= =?utf-8?B?WlNWYjlIVVFGK2RyZWZmMmNFdlc3OUxGQWIxQW15QWVOcGJNT0Z3a1JYMDZp?= =?utf-8?B?dHFGREZsaDZOV0hrOVNaVW9VT0s1Q1B6aDU3M1BiMDQ0MjhrZEpEM0pkVVV6?= =?utf-8?B?WnlTZ1lBSkQvNkFYdFFjWDRndXBXWm50ZFdQRGwxNWZIM0t2R1dZSDZoLytC?= =?utf-8?B?UTJxaW9SWk8vaW1VWFJRYVpXMEkrSTk0UWh6d0FQYlNqRFVST2hqMk9FME96?= =?utf-8?B?UUdxSjdyaU9SVnNKOXA5US8wOVhPaVUxLzBPZEE4bzNEL2VjMkR5QTlpSTlz?= =?utf-8?B?YWxuQUd4MmNiRzVNZFh3dTgvbmp0QkIrOElGWnltd21MaGZuMmpxb3BJcU1V?= =?utf-8?B?MXdVWkpXb2VEeFRmRnlkaC90ckNJalRNVCtWL0VEOGpqZzB2a21UbHZqZG5a?= =?utf-8?B?eUhGYnhweVNYUk5ScXBoK3BlcG1SQTM1WGNGSk5Rb3pqeTdJN05KWnhhd3d5?= =?utf-8?B?YWFXenA2MXBnZ0syN2Z3NGlrUm9LOXVrYjhtV2J2Mkw1amY5Sm1lZXN0dFky?= =?utf-8?B?TnlCNjRPWlpQNDhNNHVOcjdyeUE0L3VWRlVDUHp2ZjRKL3VjbUhZYkFpTXpi?= =?utf-8?B?Y08wcVVCcG0wRm1UcGFQTW1mWEFDNWR1emM2OFJjbHEvaFUrckpkNHhLYWFU?= =?utf-8?B?UXRYSEZXOVQ5cnJleHJXY3ZSaEphQ2RMVmJta2hidVkrZHZINGoyMG52MDNF?= =?utf-8?B?eFVrNmhsYXordW5rVFBDSUFEWlVEMUF6VWFvcWhOaUFPS09uM0JSOVkvV25E?= =?utf-8?B?YUFiamZ5RFdIM0ljZWtyMi8vMXR1ckVmYWl2eElZbEdXY0FKUlZDL01pMy8x?= =?utf-8?B?RldXaEtEcHVXSDJTV1RIWUJzWW8xWElnUlcrcm1QeC94aklvZTQ1RUx5ZzdU?= =?utf-8?B?L1ZublFTMmczdC81UjBEV0xZejNmYzhQUEN3UGNScTRaNTh4VE5PUlBlQW9l?= =?utf-8?B?WXZ3RHE3YU1BRnVxbFo2VUFZK0UxVDhQU0MyZzVoSndTZEl6Ui9ldUd6OGZ2?= =?utf-8?B?VjJ3UXZZUkNlbXhsRHFXNllzRWJJWWFIY3NDeHI2ZUJNdWxBNEtkT2hxZWRB?= =?utf-8?B?cWttWmk2RjVua2U4S1FLc1MyT1dLRWg0UVIvREhSeFRUZTFqek9Jc3NxNFkz?= =?utf-8?B?ZWtKR3VhR1JpNUNKQlkrVzJRQXZHeUxxbndtNkh3eXF5QldYbk43U0ZRRnEv?= =?utf-8?B?ZmQ0V2k1RGV3L3M5SGZXVkpCaGZYNlZhMDRFSnpCZHoxVVdyMXJ5UWRRVHVl?= =?utf-8?Q?wX60NgBWDCKNdhIXBpHu3F+yP?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KZlfFlpe9E1aFu9vx+ePRtDBYhnBTaLNNMOsjAWzUm4/P+z2PB292Qr+aVjbXzFBfzfAK9c72IUZYFdcnY3pnNC4S7uxPBpdAN/YehhPwoFDKZKagCXWohzzJWD9MUPF4sc/VAErLFc4H5yr+m7hbDZa0+XBKU9Tc0e56WhTgadveoz9mZ/DvAm2YecGkvlVta+4FvHGolXHlVoQ0tEDWWErbHw5ZLQaZj0aMqifOjn1As/4e6KYXRD5HW3Emxr3chAzNBaDZcIMnOkkQ9sT+9tYPTTgF7FDEWBhVZ0+pK8p+bhh2AL16APB39aIqFxXWtPON94MVrD18BuTUtbd6UQxlWUfS8OyjeC7ASplI0QzTzwu1QZx8dqLycKDuID5fP3JPxcP0mh4zFeNKf3KBTqXa4JjIbtxmnesZZwNYhZn80MmEwo0opDYdV/YNh1MOELeC1+6HW/gNgV5dDxjswvEpLbGPacYbDhRsgkcKcZWi1X7MHHTeH0afXGwYuPhJ3BOCsBIcVbBz9DrnFA5KptXukI0VqzWSWv8l2Njbc5a8UJWsuQLtAMvXmnyqE7Uk3Fje8vcLfBFIvhM2YhJJ6MOgiNoC+7xMj1BEBfOhIzrDyGZnPwdQ9V8aZ4tKmfw6134np6bllN07s047YO2izySD8fHlXl8a+F0+5KTvDpjFaUdOtvUv6ORRs17Rb7fNEPwJou6k8+eRIvOhQiaDfDnOAHoPbItUNfiHf3VclOUV62yr2mYvfTEV/r5zAm4sknqG1LhjCKf7+r3R+mAIWP5WhvTYzBOuruXZFeNCTxyi96B3WW7EbcMW/mtn2Cq X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e8d3ebb-9875-4274-de9f-08db81f0b65a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:25:05.6940 (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: pnavnJrVSvGXQkZp8DQVix7hkDJfs7b1r9tjVlMWiXkIsFw9kLTwzDkoIM9uKKR8w1ZYtowZ1nWm5mHwF6+iiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB7465 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067548064100002 The current implementation in libxl_cpuid_parse_config() requires keeping a list of cpuid feature bits that should be mostly in sync with the contents of cpufeatureset.h. Avoid such duplication by using the automatically generated list of cpuid features in INIT_FEATURE_NAMES in order to map feature names to featureset bits, and then translate from featureset bits into cpuid leaf, subleaf, register tuple. Note that the full contents of the previous cpuid translation table can't be removed. That's because some feature names allowed by libxl are not described in the featuresets, or because naming has diverged and the previous nomenclature is preserved for compatibility reasons. Should result in no functional change observed by callers, albeit some new cpuid features will be available as a result of the change. While there constify cpuid_flags name field. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Anthony PERARD --- Changes since v1: - const unnamed structure cast. - Declare struct feature_name outside the function. - Use strcmp. - Fix indentation. - Add back missing feature name options. - Return ERROR_NOMEM if allocation fails. - Improve xl.cfg documentation about how to reference the features described in the public header. --- docs/man/xl.cfg.5.pod.in | 24 +-- tools/libs/light/libxl_cpuid.c | 267 ++++++++++++--------------------- tools/xl/xl_parse.c | 3 + 3 files changed, 107 insertions(+), 187 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 3979be2a590a..55161856f4c7 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -2010,24 +2010,16 @@ proccount procpkg stepping =20 =3Dback =20 -List of keys taking a character: +List of keys taking a character can be found in the public header file +L =20 -=3Dover 4 - -3dnow 3dnowext 3dnowprefetch abm acpi adx aes altmovcr8 apic arat avx avx2 -avx512-4fmaps avx512-4vnniw avx512bw avx512cd avx512dq avx512er avx512f -avx512ifma avx512pf avx512vbmi avx512vl bmi1 bmi2 clflushopt clfsh clwb cm= ov -cmplegacy cmpxchg16 cmpxchg8 cmt cntxid dca de ds dscpl dtes64 erms est ex= tapic -f16c ffxsr fma fma4 fpu fsgsbase fxsr hle htt hypervisor ia64 ibs invpcid -invtsc lahfsahf lm lwp mca mce misalignsse mmx mmxext monitor movbe mpx msr -mtrr nodeid nx ospke osvw osxsave pae page1gb pat pbe pcid pclmulqdq pdcm -perfctr_core perfctr_nb pge pku popcnt pse pse36 psn rdrand rdseed rdtscp = rtm -sha skinit smap smep smx ss sse sse2 sse3 sse4.1 sse4.2 sse4_1 sse4_2 sse4a -ssse3 svm svm_decode svm_lbrv svm_npt svm_nrips svm_pausefilt svm_tscrate -svm_vmcbclean syscall sysenter tbm tm tm2 topoext tsc tsc-deadline tsc_adj= ust -umip vme vmx wdt x2apic xop xsave xtpr +The feature names described in C should be specified in a= ll +lowercase letters, and with underscores converted to hyphens. For example= in +order to reference feature C the string C should be used. =20 -=3Dback +Note that C is described as an option that takes a value, and that +takes precedence over the C flag in C. The feat= ure +flag must be referenced as C. =20 =3Dback =20 diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 52e21de81fc7..b1c4f8f2f45b 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -14,6 +14,8 @@ =20 #include "libxl_internal.h" =20 +#include + int libxl__cpuid_policy_is_empty(libxl_cpuid_policy_list *pl) { return !libxl_cpuid_policy_list_length(pl); @@ -61,7 +63,7 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list *pl) * Used for the static structure describing all features. */ struct cpuid_flags { - char* name; + const char *name; uint32_t leaf; uint32_t subleaf; int reg; @@ -154,7 +156,19 @@ static int cpuid_add(libxl_cpuid_policy_list *policy, entry->policy[flag->reg - 1] =3D resstr; =20 return 0; +} + +struct feature_name { + const char *name; + unsigned int bit; +}; + +static int search_feature(const void *a, const void *b) +{ + const char *key =3D a; + const char *feat =3D ((const struct feature_name *)b)->name; =20 + return strcmp(key, feat); } =20 /* parse a single key=3Dvalue pair and translate it into the libxc @@ -177,208 +191,42 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list= *policy, const char* str) {"proccount", 0x00000001, NA, CPUID_REG_EBX, 16, 8}, {"localapicid", 0x00000001, NA, CPUID_REG_EBX, 24, 8}, =20 - {"sse3", 0x00000001, NA, CPUID_REG_ECX, 0, 1}, - {"pclmulqdq", 0x00000001, NA, CPUID_REG_ECX, 1, 1}, - {"dtes64", 0x00000001, NA, CPUID_REG_ECX, 2, 1}, - {"monitor", 0x00000001, NA, CPUID_REG_ECX, 3, 1}, - {"dscpl", 0x00000001, NA, CPUID_REG_ECX, 4, 1}, - {"vmx", 0x00000001, NA, CPUID_REG_ECX, 5, 1}, - {"smx", 0x00000001, NA, CPUID_REG_ECX, 6, 1}, {"est", 0x00000001, NA, CPUID_REG_ECX, 7, 1}, - {"tm2", 0x00000001, NA, CPUID_REG_ECX, 8, 1}, - {"ssse3", 0x00000001, NA, CPUID_REG_ECX, 9, 1}, {"cntxid", 0x00000001, NA, CPUID_REG_ECX, 10, 1}, - {"fma", 0x00000001, NA, CPUID_REG_ECX, 12, 1}, {"cmpxchg16", 0x00000001, NA, CPUID_REG_ECX, 13, 1}, - {"xtpr", 0x00000001, NA, CPUID_REG_ECX, 14, 1}, - {"pdcm", 0x00000001, NA, CPUID_REG_ECX, 15, 1}, - {"pcid", 0x00000001, NA, CPUID_REG_ECX, 17, 1}, - {"dca", 0x00000001, NA, CPUID_REG_ECX, 18, 1}, /* Linux uses sse4_{1,2}. Keep sse4.{1,2} for compatibility */ {"sse4_1", 0x00000001, NA, CPUID_REG_ECX, 19, 1}, {"sse4.1", 0x00000001, NA, CPUID_REG_ECX, 19, 1}, {"sse4_2", 0x00000001, NA, CPUID_REG_ECX, 20, 1}, {"sse4.2", 0x00000001, NA, CPUID_REG_ECX, 20, 1}, - {"x2apic", 0x00000001, NA, CPUID_REG_ECX, 21, 1}, - {"movbe", 0x00000001, NA, CPUID_REG_ECX, 22, 1}, - {"popcnt", 0x00000001, NA, CPUID_REG_ECX, 23, 1}, - {"tsc-deadline", 0x00000001, NA, CPUID_REG_ECX, 24, 1}, {"aes", 0x00000001, NA, CPUID_REG_ECX, 25, 1}, - {"xsave", 0x00000001, NA, CPUID_REG_ECX, 26, 1}, - {"osxsave", 0x00000001, NA, CPUID_REG_ECX, 27, 1}, - {"avx", 0x00000001, NA, CPUID_REG_ECX, 28, 1}, - {"f16c", 0x00000001, NA, CPUID_REG_ECX, 29, 1}, - {"rdrand", 0x00000001, NA, CPUID_REG_ECX, 30, 1}, - {"hypervisor", 0x00000001, NA, CPUID_REG_ECX, 31, 1}, - - {"fpu", 0x00000001, NA, CPUID_REG_EDX, 0, 1}, - {"vme", 0x00000001, NA, CPUID_REG_EDX, 1, 1}, - {"de", 0x00000001, NA, CPUID_REG_EDX, 2, 1}, - {"pse", 0x00000001, NA, CPUID_REG_EDX, 3, 1}, - {"tsc", 0x00000001, NA, CPUID_REG_EDX, 4, 1}, - {"msr", 0x00000001, NA, CPUID_REG_EDX, 5, 1}, - {"pae", 0x00000001, NA, CPUID_REG_EDX, 6, 1}, - {"mce", 0x00000001, NA, CPUID_REG_EDX, 7, 1}, + {"cmpxchg8", 0x00000001, NA, CPUID_REG_EDX, 8, 1}, - {"apic", 0x00000001, NA, CPUID_REG_EDX, 9, 1}, {"sysenter", 0x00000001, NA, CPUID_REG_EDX, 11, 1}, - {"mtrr", 0x00000001, NA, CPUID_REG_EDX, 12, 1}, - {"pge", 0x00000001, NA, CPUID_REG_EDX, 13, 1}, - {"mca", 0x00000001, NA, CPUID_REG_EDX, 14, 1}, - {"cmov", 0x00000001, NA, CPUID_REG_EDX, 15, 1}, - {"pat", 0x00000001, NA, CPUID_REG_EDX, 16, 1}, - {"pse36", 0x00000001, NA, CPUID_REG_EDX, 17, 1}, {"psn", 0x00000001, NA, CPUID_REG_EDX, 18, 1}, {"clfsh", 0x00000001, NA, CPUID_REG_EDX, 19, 1}, - {"ds", 0x00000001, NA, CPUID_REG_EDX, 21, 1}, - {"acpi", 0x00000001, NA, CPUID_REG_EDX, 22, 1}, - {"mmx", 0x00000001, NA, CPUID_REG_EDX, 23, 1}, - {"fxsr", 0x00000001, NA, CPUID_REG_EDX, 24, 1}, - {"sse", 0x00000001, NA, CPUID_REG_EDX, 25, 1}, - {"sse2", 0x00000001, NA, CPUID_REG_EDX, 26, 1}, - {"ss", 0x00000001, NA, CPUID_REG_EDX, 27, 1}, - {"htt", 0x00000001, NA, CPUID_REG_EDX, 28, 1}, {"tm", 0x00000001, NA, CPUID_REG_EDX, 29, 1}, {"ia64", 0x00000001, NA, CPUID_REG_EDX, 30, 1}, {"pbe", 0x00000001, NA, CPUID_REG_EDX, 31, 1}, =20 {"arat", 0x00000006, NA, CPUID_REG_EAX, 2, 1}, =20 - {"fsgsbase", 0x00000007, 0, CPUID_REG_EBX, 0, 1}, {"tsc_adjust", 0x00000007, 0, CPUID_REG_EBX, 1, 1}, - {"bmi1", 0x00000007, 0, CPUID_REG_EBX, 3, 1}, - {"hle", 0x00000007, 0, CPUID_REG_EBX, 4, 1}, - {"avx2", 0x00000007, 0, CPUID_REG_EBX, 5, 1}, - {"smep", 0x00000007, 0, CPUID_REG_EBX, 7, 1}, - {"bmi2", 0x00000007, 0, CPUID_REG_EBX, 8, 1}, - {"erms", 0x00000007, 0, CPUID_REG_EBX, 9, 1}, - {"invpcid", 0x00000007, 0, CPUID_REG_EBX, 10, 1}, - {"rtm", 0x00000007, 0, CPUID_REG_EBX, 11, 1}, {"cmt", 0x00000007, 0, CPUID_REG_EBX, 12, 1}, - {"mpx", 0x00000007, 0, CPUID_REG_EBX, 14, 1}, - {"avx512f", 0x00000007, 0, CPUID_REG_EBX, 16, 1}, - {"avx512dq", 0x00000007, 0, CPUID_REG_EBX, 17, 1}, - {"rdseed", 0x00000007, 0, CPUID_REG_EBX, 18, 1}, - {"adx", 0x00000007, 0, CPUID_REG_EBX, 19, 1}, - {"smap", 0x00000007, 0, CPUID_REG_EBX, 20, 1}, - {"avx512-ifma", 0x00000007, 0, CPUID_REG_EBX, 21, 1}, - {"clflushopt", 0x00000007, 0, CPUID_REG_EBX, 23, 1}, - {"clwb", 0x00000007, 0, CPUID_REG_EBX, 24, 1}, - {"proc-trace", 0x00000007, 0, CPUID_REG_EBX, 25, 1}, - {"avx512pf", 0x00000007, 0, CPUID_REG_EBX, 26, 1}, - {"avx512er", 0x00000007, 0, CPUID_REG_EBX, 27, 1}, - {"avx512cd", 0x00000007, 0, CPUID_REG_EBX, 28, 1}, - {"sha", 0x00000007, 0, CPUID_REG_EBX, 29, 1}, - {"avx512bw", 0x00000007, 0, CPUID_REG_EBX, 30, 1}, - {"avx512vl", 0x00000007, 0, CPUID_REG_EBX, 31, 1}, - - {"prefetchwt1", 0x00000007, 0, CPUID_REG_ECX, 0, 1}, - {"avx512-vbmi", 0x00000007, 0, CPUID_REG_ECX, 1, 1}, - {"umip", 0x00000007, 0, CPUID_REG_ECX, 2, 1}, - {"pku", 0x00000007, 0, CPUID_REG_ECX, 3, 1}, - {"ospke", 0x00000007, 0, CPUID_REG_ECX, 4, 1}, - {"avx512-vbmi2", 0x00000007, 0, CPUID_REG_ECX, 6, 1}, - {"cet-ss", 0x00000007, 0, CPUID_REG_ECX, 7, 1}, - {"gfni", 0x00000007, 0, CPUID_REG_ECX, 8, 1}, - {"vaes", 0x00000007, 0, CPUID_REG_ECX, 9, 1}, - {"vpclmulqdq", 0x00000007, 0, CPUID_REG_ECX, 10, 1}, - {"avx512-vnni", 0x00000007, 0, CPUID_REG_ECX, 11, 1}, - {"avx512-bitalg",0x00000007, 0, CPUID_REG_ECX, 12, 1}, - {"avx512-vpopcntdq",0x00000007,0,CPUID_REG_ECX, 14, 1}, - {"rdpid", 0x00000007, 0, CPUID_REG_ECX, 22, 1}, - {"cldemote", 0x00000007, 0, CPUID_REG_ECX, 25, 1}, - {"pks", 0x00000007, 0, CPUID_REG_ECX, 31, 1}, - - {"avx512-4vnniw",0x00000007, 0, CPUID_REG_EDX, 2, 1}, - {"avx512-4fmaps",0x00000007, 0, CPUID_REG_EDX, 3, 1}, - {"fsrm", 0x00000007, 0, CPUID_REG_EDX, 4, 1}, - {"avx512-vp2intersect",0x00000007,0,CPUID_REG_EDX,8, 1}, - {"srbds-ctrl", 0x00000007, 0, CPUID_REG_EDX, 9, 1}, - {"md-clear", 0x00000007, 0, CPUID_REG_EDX, 10, 1}, - {"serialize", 0x00000007, 0, CPUID_REG_EDX, 14, 1}, - {"tsxldtrk", 0x00000007, 0, CPUID_REG_EDX, 16, 1}, - {"cet-ibt", 0x00000007, 0, CPUID_REG_EDX, 20, 1}, - {"avx512-fp16", 0x00000007, 0, CPUID_REG_EDX, 23, 1}, - {"ibrsb", 0x00000007, 0, CPUID_REG_EDX, 26, 1}, - {"stibp", 0x00000007, 0, CPUID_REG_EDX, 27, 1}, - {"l1d-flush", 0x00000007, 0, CPUID_REG_EDX, 28, 1}, - {"arch-caps", 0x00000007, 0, CPUID_REG_EDX, 29, 1}, - {"core-caps", 0x00000007, 0, CPUID_REG_EDX, 30, 1}, - {"ssbd", 0x00000007, 0, CPUID_REG_EDX, 31, 1}, - - {"avx-vnni", 0x00000007, 1, CPUID_REG_EAX, 4, 1}, - {"avx512-bf16", 0x00000007, 1, CPUID_REG_EAX, 5, 1}, - {"fzrm", 0x00000007, 1, CPUID_REG_EAX, 10, 1}, - {"fsrs", 0x00000007, 1, CPUID_REG_EAX, 11, 1}, - {"fsrcs", 0x00000007, 1, CPUID_REG_EAX, 12, 1}, - {"wrmsrns", 0x00000007, 1, CPUID_REG_EAX, 19, 1}, - {"avx-ifma", 0x00000007, 1, CPUID_REG_EAX, 23, 1}, - - {"avx-vnni-int8",0x00000007, 1, CPUID_REG_EDX, 4, 1}, - {"avx-ne-convert",0x00000007, 1, CPUID_REG_EDX, 5, 1}, - {"cet-sss", 0x00000007, 1, CPUID_REG_EDX, 18, 1}, - - {"intel-psfd", 0x00000007, 2, CPUID_REG_EDX, 0, 1}, - {"ipred-ctrl", 0x00000007, 2, CPUID_REG_EDX, 1, 1}, - {"rrsba-ctrl", 0x00000007, 2, CPUID_REG_EDX, 2, 1}, - {"ddp-ctrl", 0x00000007, 2, CPUID_REG_EDX, 3, 1}, - {"bhi-ctrl", 0x00000007, 2, CPUID_REG_EDX, 4, 1}, - {"mcdt-no", 0x00000007, 2, CPUID_REG_EDX, 5, 1}, =20 {"lahfsahf", 0x80000001, NA, CPUID_REG_ECX, 0, 1}, {"cmplegacy", 0x80000001, NA, CPUID_REG_ECX, 1, 1}, - {"svm", 0x80000001, NA, CPUID_REG_ECX, 2, 1}, - {"extapic", 0x80000001, NA, CPUID_REG_ECX, 3, 1}, {"altmovcr8", 0x80000001, NA, CPUID_REG_ECX, 4, 1}, - {"abm", 0x80000001, NA, CPUID_REG_ECX, 5, 1}, - {"sse4a", 0x80000001, NA, CPUID_REG_ECX, 6, 1}, - {"misalignsse", 0x80000001, NA, CPUID_REG_ECX, 7, 1}, - {"3dnowprefetch",0x80000001, NA, CPUID_REG_ECX, 8, 1}, - {"osvw", 0x80000001, NA, CPUID_REG_ECX, 9, 1}, - {"ibs", 0x80000001, NA, CPUID_REG_ECX, 10, 1}, - {"xop", 0x80000001, NA, CPUID_REG_ECX, 11, 1}, - {"skinit", 0x80000001, NA, CPUID_REG_ECX, 12, 1}, - {"wdt", 0x80000001, NA, CPUID_REG_ECX, 13, 1}, - {"lwp", 0x80000001, NA, CPUID_REG_ECX, 15, 1}, - {"fma4", 0x80000001, NA, CPUID_REG_ECX, 16, 1}, {"nodeid", 0x80000001, NA, CPUID_REG_ECX, 19, 1}, - {"tbm", 0x80000001, NA, CPUID_REG_ECX, 21, 1}, - {"topoext", 0x80000001, NA, CPUID_REG_ECX, 22, 1}, {"perfctr_core", 0x80000001, NA, CPUID_REG_ECX, 23, 1}, {"perfctr_nb", 0x80000001, NA, CPUID_REG_ECX, 24, 1}, =20 - {"syscall", 0x80000001, NA, CPUID_REG_EDX, 11, 1}, - {"nx", 0x80000001, NA, CPUID_REG_EDX, 20, 1}, - {"mmxext", 0x80000001, NA, CPUID_REG_EDX, 22, 1}, - {"ffxsr", 0x80000001, NA, CPUID_REG_EDX, 25, 1}, - {"page1gb", 0x80000001, NA, CPUID_REG_EDX, 26, 1}, - {"rdtscp", 0x80000001, NA, CPUID_REG_EDX, 27, 1}, - {"lm", 0x80000001, NA, CPUID_REG_EDX, 29, 1}, - {"3dnowext", 0x80000001, NA, CPUID_REG_EDX, 30, 1}, - {"3dnow", 0x80000001, NA, CPUID_REG_EDX, 31, 1}, - {"procpkg", 0x00000004, 0, CPUID_REG_EAX, 26, 6}, =20 {"invtsc", 0x80000007, NA, CPUID_REG_EDX, 8, 1}, =20 - {"clzero", 0x80000008, NA, CPUID_REG_EBX, 0, 1}, - {"rstr-fp-err-ptrs", 0x80000008, NA, CPUID_REG_EBX, 2, 1}, - {"wbnoinvd", 0x80000008, NA, CPUID_REG_EBX, 9, 1}, - {"ibpb", 0x80000008, NA, CPUID_REG_EBX, 12, 1}, - {"ibrs", 0x80000008, NA, CPUID_REG_EBX, 14, 1}, - {"amd-stibp", 0x80000008, NA, CPUID_REG_EBX, 15, 1}, - {"ibrs-always", 0x80000008, NA, CPUID_REG_EBX, 16, 1}, - {"stibp-always", 0x80000008, NA, CPUID_REG_EBX, 17, 1}, - {"ibrs-fast", 0x80000008, NA, CPUID_REG_EBX, 18, 1}, - {"ibrs-same-mode", 0x80000008, NA, CPUID_REG_EBX, 19, 1}, - {"no-lmsl", 0x80000008, NA, CPUID_REG_EBX, 20, 1}, {"ppin", 0x80000008, NA, CPUID_REG_EBX, 23, 1}, - {"amd-ssbd", 0x80000008, NA, CPUID_REG_EBX, 24, 1}, - {"virt-ssbd", 0x80000008, NA, CPUID_REG_EBX, 25, 1}, - {"ssb-no", 0x80000008, NA, CPUID_REG_EBX, 26, 1}, - {"psfd", 0x80000008, NA, CPUID_REG_EBX, 28, 1}, {"btc-no", 0x80000008, NA, CPUID_REG_EBX, 29, 1}, - {"ibpb-ret", 0x80000008, NA, CPUID_REG_EBX, 30, 1}, =20 {"nc", 0x80000008, NA, CPUID_REG_ECX, 0, 8}, {"apicidsize", 0x80000008, NA, CPUID_REG_ECX, 12, 4}, @@ -392,17 +240,63 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list = *policy, const char* str) {"svm_pausefilt",0x8000000a, NA, CPUID_REG_EDX, 10, 1}, =20 {"lfence+", 0x80000021, NA, CPUID_REG_EAX, 2, 1}, - {"nscb", 0x80000021, NA, CPUID_REG_EAX, 6, 1}, - {"auto-ibrs", 0x80000021, NA, CPUID_REG_EAX, 8, 1}, - {"cpuid-user-dis", 0x80000021, NA, CPUID_REG_EAX, 17, 1}, =20 {"maxhvleaf", 0x40000000, NA, CPUID_REG_EAX, 0, 8}, =20 {NULL, 0, NA, CPUID_REG_INV, 0, 0} }; + static const struct feature_name features[] =3D INIT_FEATURE_NAMES; + /* + * NB: if we switch to using a cpu_policy derived object instead of a + * libxl_cpuid_policy_list we could get rid of the featureset -> cpuid= leaf + * conversion table and use a featureset directly as we have conversio= ns + * to/from featureset and cpu_policy. + */ + static const struct { + enum { FEAT_CPUID, FEAT_MSR } type; + union { + struct { + uint32_t leaf, subleaf; + unsigned int reg; + } cpuid; + struct { + uint32_t index; + unsigned int reg; + } msr; + }; + } feature_to_policy[] =3D { +#define CPUID_ENTRY(l, s, r) \ + { .type =3D FEAT_CPUID, .cpuid.leaf =3D l, .cpuid.subleaf =3D s, .cpui= d.reg =3D r } +#define MSR_ENTRY(i, r) \ + { .type =3D FEAT_MSR, .msr.index =3D i, .msr.reg =3D r } + CPUID_ENTRY(0x00000001, NA, CPUID_REG_EDX), + CPUID_ENTRY(0x00000001, NA, CPUID_REG_ECX), + CPUID_ENTRY(0x80000001, NA, CPUID_REG_EDX), + CPUID_ENTRY(0x80000001, NA, CPUID_REG_ECX), + CPUID_ENTRY(0x0000000D, 1, CPUID_REG_EAX), + CPUID_ENTRY(0x00000007, 0, CPUID_REG_EBX), + CPUID_ENTRY(0x00000007, 0, CPUID_REG_ECX), + CPUID_ENTRY(0x80000007, NA, CPUID_REG_EDX), + CPUID_ENTRY(0x80000008, NA, CPUID_REG_EBX), + CPUID_ENTRY(0x00000007, 0, CPUID_REG_EDX), + CPUID_ENTRY(0x00000007, 1, CPUID_REG_EAX), + CPUID_ENTRY(0x80000021, NA, CPUID_REG_EAX), + CPUID_ENTRY(0x00000007, 1, CPUID_REG_EBX), + CPUID_ENTRY(0x00000007, 2, CPUID_REG_EDX), + CPUID_ENTRY(0x00000007, 1, CPUID_REG_ECX), + CPUID_ENTRY(0x00000007, 1, CPUID_REG_EDX), + MSR_ENTRY(0x10a, CPUID_REG_EAX), + MSR_ENTRY(0x10a, CPUID_REG_EDX), +#undef MSR_ENTRY +#undef CPUID_ENTRY + }; #undef NA const char *sep, *val; + char *name; const struct cpuid_flags *flag; + const struct feature_name *feat; + + BUILD_BUG_ON(ARRAY_SIZE(feature_to_policy) !=3D FEATURESET_NR_ENTRIES); =20 sep =3D strchr(str, '=3D'); if (sep =3D=3D NULL) { @@ -415,6 +309,37 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *= policy, const char* str) return cpuid_add(policy, flag, val); } =20 + /* Provide a NUL terminated feature name to the search helper. */ + name =3D strndup(str, sep - str); + if (name =3D=3D NULL) + return ERROR_NOMEM; + + feat =3D bsearch(name, features, ARRAY_SIZE(features), sizeof(features= [0]), + search_feature); + free(name); + + if (feat =3D=3D NULL) + return 2; + + switch (feature_to_policy[feat->bit / 32].type) { + case FEAT_CPUID: + { + struct cpuid_flags f; + + f.name =3D feat->name; + f.leaf =3D feature_to_policy[feat->bit / 32].cpuid.leaf; + f.subleaf =3D feature_to_policy[feat->bit / 32].cpuid.subleaf; + f.reg =3D feature_to_policy[feat->bit / 32].cpuid.reg; + f.bit =3D feat->bit % 32; + f.length =3D 1; + + return cpuid_add(policy, &f, val); + } + + case FEAT_MSR: + return 2; + } + return 2; } =20 diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index f036e56fc239..7bf587455d08 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -2620,6 +2620,9 @@ skip_usbdev: case 3: errstr =3D "illegal CPUID value (must be: [0|1|x|k|s])= "; break; + case ERROR_NOMEM: + errstr =3D "out of memory"; + break; default: errstr =3D "unknown error"; break; --=20 2.41.0 From nobody Fri May 10 13:54:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1689067547; cv=none; d=zohomail.com; s=zohoarc; b=k9eS9gpZ5+3GF/7D+xMJ9sbCo3syzcb+sHcZ4EpX2Dkl9TPXO+tw++LgBCwtJusI3o0sNlapl1+B89mc7INSGw8W/0YEcngfPcQafVQ3GEflRhJP8yB34YmTLc7yrYqYWU2Mwx/RBBn6/f4tu3O5IhXEmZ6aw0/zMaoLbyFEu0k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689067547; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4uHuVNwA5xpYjOyrRWFL+DwpVoS0En8vtpwS2o709gg=; b=Xm1mfHH2Sro+CZ2VFP9NC0AoysYv2QmrrWIYihaICPMYX029Ad8b/J64wU8G5Tmul4DeosadhXTe8uqZ+uh0ULy3j4JAoGOt9+L3AGuhsonJnN7O6EpVCKy0eMFmRYmQqrGfxzqqjRjloSLF7Llh6g8VPpYAm7FxRNrdRg9nxlQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1689067547303730.5154074688567; Tue, 11 Jul 2023 02:25:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.561670.878179 (Exim 4.92) (envelope-from ) id 1qJ9cY-0006KV-LW; Tue, 11 Jul 2023 09:25:22 +0000 Received: by outflank-mailman (output) from mailman id 561670.878179; Tue, 11 Jul 2023 09:25:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9cY-0006KO-Hx; Tue, 11 Jul 2023 09:25:22 +0000 Received: by outflank-mailman (input) for mailman id 561670; Tue, 11 Jul 2023 09:25:21 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qJ9cX-0005tR-4D for xen-devel@lists.xenproject.org; Tue, 11 Jul 2023 09:25:21 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d9930b5e-1fcc-11ee-8611-37d641c3527e; Tue, 11 Jul 2023 11:25:19 +0200 (CEST) Received: from mail-dm6nam12lp2173.outbound.protection.outlook.com (HELO NAM12-DM6-obe.outbound.protection.outlook.com) ([104.47.59.173]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 11 Jul 2023 05:25:13 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA3PR03MB7465.namprd03.prod.outlook.com (2603:10b6:806:39d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.30; Tue, 11 Jul 2023 09:25:11 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::fb95:b992:be69:7fa2%5]) with mapi id 15.20.6565.028; Tue, 11 Jul 2023 09:25:11 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: d9930b5e-1fcc-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1689067519; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=zcBQQHuX69ZClb6ynraVcgSiCzPG8VCSbHtg2XmHXBM=; b=UVCW8ESbpVxrUPQvxtMFVAG30+U0zuxnISB4qpN4HPZyMhIfOXLcaNza +aCI1dQnVbTHMsGpQVH8GfsKZ5RfRKhD3s/n5ir1V9g78GrDAVwlaotCW 28eDa7QGdnU6SMJXlLUVtFhZaMtcJHJm3Caeh8qCyKEIp89NKFcSZIMAt 0=; X-IronPort-RemoteIP: 104.47.59.173 X-IronPort-MID: 118383217 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:q5fHUqrrbsD6+qZYj579XtTjZAVeBmI8ZBIvgKrLsJaIsI4StFCzt garIBnVPPreNmPzeo1za4u+oE4O6MPTyoViQVY5+ywxH3kSoJuZCYyVIHmrMnLJJKUvbq7FA +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbKCYWYpA1c/Ek/NsDo788YhmIlknNOlNA2Ev NL2sqX3NUSsnjV5KQr40YrawP9UlKq04GpwUmAWP6gR5weBziBNVfrzGInqR5fGatgMdgKFb 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay RAXAB0rUi2hgMmv/LGYVsR33soIEZf7GrpK7xmMzRmBZRonabbqZvyQoPN9gnI3jM0IGuvCb c0EbzYpdA7HfxBEJlYQDtQ5gfusgX78NTZfrTp5p4JuuzSVkFM3jemraYWOEjCJbZw9ckKwv GXJ8n6/GhgHHNee1SCE4jSngeqncSbTAdtCT+3jrKc16LGV7lRNORw5CmH4msGWqGu+XNMPK Q852SV7+MDe82TuFLERRSaQsHOC+xIRRddUO+k78x2WjLrZ5R6DAWoJRSIHb8Yp3OcpQRQ62 1nPmMnmbRRtv6eSUmm17aqPoHW5Pi19EIMZTSoNTA9A79y9pog210jLVow6T/XzicDpEzbtx TzMtDI5m7gYkc8M0eO84EzDhDWv4JPOS2bZ+znqY45s1SshDKbNWmBiwQGzASpoRGpBcmS8g Q== IronPort-HdrOrdr: A9a23:y/H3N6NsVOvdT8BcTjejsMiBIKoaSvp037BK7S1MoNJuEvBw9v re+sjzsCWftN9/Yh4dcLy7VpVoBEmsl6KdgrNhWotKPjOW21dARbsKheffKn/bakjDH4Zmvp uIGJIObOEYY2IasS77ijPIbOrJwrO8gd6VbTG19QYdceloAZsQnzuQEmygYzRLrJEtP+tFKH KbjPA33waISDAsQemQIGIKZOTHr82jruObXfZXbyRXkzVnlFmTmcTHLyQ= X-Talos-CUID: =?us-ascii?q?9a23=3AUeHprGgErCFVQs3SnRrSqHzDLTJuX1vh8VXXCFa?= =?us-ascii?q?ECkV1ZabNR3StprNCqp87?= X-Talos-MUID: 9a23:hv29Hgbiag4ElOBTj2HdhR49DoRT24uMLUAKkMUE+OSnOnkl X-IronPort-AV: E=Sophos;i="6.01,196,1684814400"; d="scan'208";a="118383217" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V9je+inFL8aJOQP1MpEy2u8Nulzg2ND7kkchoNN5ipebuf0nsrNqUWsYhWe6bajWTEoQ8s7X7SZ5G1hIJ4wK5+B3YLhahIf1+KhlOmhV9/Jb+GS9L/Hiu7H5MqTW3OK3eBEXXvmvXdaOXz3EoA6+PqQEVMHhm38Hd9MBYxZLLRzh/MKQjvFDA0xw4rdetVlVhIZDry+vHjz99fu5QgcrLsmyBJRZ+BjkA3gKtAk2hPeeB9IZQZAFgW+skx0zorfItoSHQV9Zo8bvkBJ5vUResYUHbodVHWXHGFhw5sByC1x4Z1PuCkXUKA5jFm5DG+yajvvceASPUZQYWl/Xro4www== 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=4uHuVNwA5xpYjOyrRWFL+DwpVoS0En8vtpwS2o709gg=; b=BH4W3RvOsH3yoJlC6r1zDDrqUt3uZ8ltUeSw3uB6hPVAvL41hki+pw3y07nHz2Jegbd5ZamZZyFOTUAq7Spk6fPIy7n1paqibw/zBkX2s4AD57yJ2Z86Y5nyP/Mi/3uZFNZTzVEFq55n/2H0KyuZhRf7MYGctQvpsugsDU2uDIruBjVRMwWB6kXMerI+8bZueIY0Qmkg2TCBCT9SmkvWuUzus28+MzvGit3vCccBP+KIQfCFGE1Ms3su8EoBfG7nV/e5d8iI68dM4ILwpMAuswQU05JUeeYKjUYTOQb+MgZf+mdfAcXniwMt568tfZDsHf8oYSoY5IoEUpsxtd3q3Q== 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=4uHuVNwA5xpYjOyrRWFL+DwpVoS0En8vtpwS2o709gg=; b=HsNWrxQv6ABUDYI3neD1u7SwfvL48Q+PRWvxUmivNAnxfqLRgZ1W9H7nELRSawsj99WI94QPnKa7KFegYGn3VDlchroCL0WiHiDLBXg/dbDxve6OCz/b9bgTqIbPzq1Rx21BGmFu0LHH5ky6Ao5IWwkYtiRIyuIgQ/JrmBv1Ang= 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 Subject: [PATCH v2 6/6] libxl: add support for parsing MSR features Date: Tue, 11 Jul 2023 11:22:30 +0200 Message-ID: <20230711092230.15408-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230711092230.15408-1-roger.pau@citrix.com> References: <20230711092230.15408-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0255.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8a::27) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA3PR03MB7465:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f4bfbb4-e930-4c7a-4de7-08db81f0b9e2 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: +vFeM/qHTEkffKKEdmWTh8k1WVMoumP7dsf34LxaHCpWKMAK/RxPEDRmlsjmoRMyGW1JKsUcjFAKxIY3LRZMvfm152N8tNsfNnsP4NcpR0CKaFiz6aARvL8j6IPbz9W/E1yvKIcg/3YymCktX6J5RWY7nNxxXHgbXKFtkJSLwBqjGFuGu/Y4+CTs6AtWBvvFSUhXV7yncoyL1c9ZbbwM7gwQxRouvsiN1rZjs8fbjS1Ct7puONpci9G75qdIQtAjvH+38KXfiLgXa/js/uweB/cF5GJphzKepyMK1wyFZvIXGyR4YnRrZ4leQSTCD/cKRufGcQPKa6n0USld84DtVJQ+2HBCoSOCwgBqjePlJDBG04nNGZKmpJTcAKfKxhTmEDo/lmd+9y/nVkqowE+/TzUZOl+YoPEFKnLUtpmDoJr+1jBY6GP85VyYKMihfYXOL4MNDjCwHyNjwYIx2G8q1fayBNBItTqORSLjsex8yPXtnIQCYaqoSCU0mhacC+b3fSJvHPD73JaQ2HIuy1bHgwdwkgSj2KU49Rz9xzopF81BBujNB8r2kiZ/e6rjVAo5 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)(396003)(346002)(136003)(366004)(39860400002)(376002)(451199021)(38100700002)(86362001)(36756003)(6666004)(6486002)(54906003)(82960400001)(2616005)(26005)(1076003)(186003)(6506007)(6512007)(478600001)(316002)(66556008)(5660300002)(6916009)(66946007)(66476007)(8936002)(8676002)(2906002)(83380400001)(4326008)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VjJmd0NMTHJmVUg2RHRERTFzT1F0ZjBJbGhRdnhZVHAwUXQrWm5sWHBOQlEz?= =?utf-8?B?ZGdVeXdabHBUSUZYOEdjbStodmZKQkF2SGM0QkdHcTdCWnNjcC9FYlYrd3l5?= =?utf-8?B?M0JYSTVpVDFNRTBCTWJnd3p0RVd4czlRbVRUNkxuWUpXQ1M5TmhQaEVwbXg1?= =?utf-8?B?NnFEUHA1RG10VlV5bi96YTVuWWpyTy9oN2N0b2sxRGVjNVRGOFgxejJMejBh?= =?utf-8?B?MUp3Tm1IYnVWVUo0dHUreitPNjlTeDJIcjZuQ1FobGJMNzZOcXhXTWNURGhu?= =?utf-8?B?SEh4clptVGR3YStaMk1NWWxNT2szWFZjbUw2dUIrQ3hna2x5YjlSQ3VKZWJX?= =?utf-8?B?VnZxaWErTVJMWmNNSkw4c3h6R3RjRWtYRjlKaSt3WWplUVdOUFkrUUlITVpv?= =?utf-8?B?N0VBbHJjdWdJRXpRTm5qWGVxWDFYYTRXaVdYOSttZmx2S21wa0VtNXdhM2hs?= =?utf-8?B?TEJlZnNJUEVJVkFhTzZEd2MrR3RJV3hoclZudkF2UExlQ2VDa0szdGdybEhD?= =?utf-8?B?U2RSUHZ1QjVkRTJGdzJmajE0a1pEc3VENytrN0l6UXpCYXdOOFBnQ29OME9n?= =?utf-8?B?bk11dVdtL2tuV0h3OWtXZzd5VDI5MWNsdDU5b092N2c5S1NhMDRSVUVMM3NB?= =?utf-8?B?M2JzbmZmTjlyQzFiL0NTRkcrTURXVitOT2FxQmVlSkxLTVRsblhydmtJS25n?= =?utf-8?B?OVA3UzJiM0NxbGt4UXh2dWxSb1dYTEI5ek1SdVN1SWMwK1h3Wm1pYWVSbUhr?= =?utf-8?B?eko1ZCtMZXBZRnkxTUc1cmFjalpjWk1qTG9SaGtIWDJRdlo3RWFMYnhHclNG?= =?utf-8?B?TEE2NHRXQ1owN0Z4dXF0ODc3ckw0QlRMM29NS1l1bVhtRTJNMWRUTFM0MVow?= =?utf-8?B?RlF2c1JxU1B2RktORlI2NGw0YzFCNHJLa0VISlh6RUNXV0JIVW12SjhBOXAr?= =?utf-8?B?VHU1c0JVSjkwNkdRZTM5VTArRmRNbExLdW9sSzM4ZE1aMWhmV2xsOFNnVkx0?= =?utf-8?B?YnhKekREbW1xTlExNjdBOVFSRUh5QWxGb0FDSGIreFh1VFl3a0dTbEVHcWxa?= =?utf-8?B?aVA2cjhQbUFIT0RaT1BCc2g5YnV1Y0xUNmFqcUxRcEpoRGVBK0xwOEhXUi80?= =?utf-8?B?WVdEQnJ5NFloZnNiakk3YTNaRkJBYmpJMDZwZHl0K2Jhd0RxYlpCTW9RczRz?= =?utf-8?B?T0N1Yzh6bzNIdy9UbjBxZy9Wa0tCMk8xZG5kZGJEd25QNkIxYzN4Q1V1N2hH?= =?utf-8?B?N3NZWVlDY3hlanV6ZjRzUXRRbzNaWVRISmIrNW9sWHZLTG1uVVBLQThmTzVm?= =?utf-8?B?bUNEZ2RwNEk0NDZabWpLQ2dTa0FjaC9JU3RYMkZuNVErZFZTcWpXaWJ1aTZG?= =?utf-8?B?VWdidXE3eGJTZXJRT09aUVVXVXgyN0F3ZzZEcnlHQXgxTWtzMFdJVmliWnhS?= =?utf-8?B?cjRzZGRLNlBjOHVsV21pc3YvYXBzcHVzNytJQjVxNitUaVNKRlRucXVXZC8w?= =?utf-8?B?QUZMZytlcWxqK3l3SklKdVhQNkNncnpTeVE4RnhrcHo5VnJZQ2g1L052eHN0?= =?utf-8?B?QUxDVmg5MzdMbElDY3ZIRFVlOExmRDVpTzlSQTI0bDdjOFBxL2lHR2g4cmtO?= =?utf-8?B?d1cwZlFqTHIwK1hHcjc3bUU4YTljUlE0cCtNeGpleTZoOXZ1MFNwRDlTdW1l?= =?utf-8?B?cEU0V0RWRGZSRFplMktvMzF2VjlZcnF4ZXZKMVhtUlRzakh2VEtKdWxRcjFh?= =?utf-8?B?dWZCVlBublNXd2xVVEhKQ2xjNGZQUStRQklBRkUxVnJBODNSRkUvVkNXK0Jq?= =?utf-8?B?OXVybHl2dVZpV3IrMzUxQy9sYllqTVk2K3ViSmVUaW1VZmxvMURDL0l0eFNN?= =?utf-8?B?djFVVEk1eXNWQlJVRDEvck1mdnlUY0phaWMwdEJQc3ZEMmUwMW9leFlCUk83?= =?utf-8?B?U0xwU0lyVGtvREd0R0FoQUpvUU9lQWRUNUMvOGE5NENoMWVXaVVJcTByMW9t?= =?utf-8?B?U0JiSThHUEdWUDdueEI0SWk4cE9penE2SGhOZ0hrZXRzeEYwbmFwQ3Q0WWR6?= =?utf-8?B?d1o2aHFNaWhmSGUxZkNGTlpyYjJ1SUZrSFl1ZjVlREJQSmQ4MUZ6VFdaVmhG?= =?utf-8?B?SEFaM0w1dXJvZHozK3dvdUNic0JvZVV1YW5VVWpBQ2dabWtoZm91SUFpQVRJ?= =?utf-8?B?bkE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ZnKW7byNavBYXyO8aXct7QgM201v7V5HD0ry2uR9sObgRADxuZXulCl/GF91SMGk8oPpbmW9iWW8d9JAs59iaG7CaVtuPevcZqy2FoWQ/7shsdJpFTQsLrX9ecHqfEgFhejKGYBDKfgmFuADeqNnSqryeVu6twatzm3VRybHRnfynmk5GC5esfhpGmkIb21YIA2LVrWu03moH6vRvbGI2T0YOsdL9SgYyL2EIRC9r9IW1YQ3EvNDQP+3r9UqUEAS7ai5/m5bLHdv6qINREWI4PMK0yJZiz7CAis7mFkK/I+kF5bk/K05lHiAbhXDy2hzE5IFd15nCxFZywhP+LTqMFDOzcxRX4HMb/9KpXG1g8AjdZb7RdBwjNUUKhRYuMwcWVK3PgMOygZpMXhjKEAg0YSWxN13VgdFSxTiKJkPNJDV/ls45g2pSj2AlPiVrwzkjCIqgYKA9Zr6R/0V+dUM/cCN4dO3+w6ofTpZqGzBGqDqATujEDxKx6w1wh9mxPj34FFSU/7d3g4vfEmCPMAV2fhM4N1WxMJermOCHYTnt6ARH118gwq30vgrMKE8jkqZ2SvI3VR+5+X/8i6zajKHK1+yV8nhliX8tVplXbKVVUDznTpIBce17st+hY+8l6ZCPqD8HTYFuTZBmEtXqPOqDLCPZ2NTCyb58WA1mEc5Zv8LqZu4mi/0gHL78EJJqNRl1TkIjBo/DojERSHRxuwswISy0Zur+G+2JTByEa3puOgKUWtgqH/xZ+NBepJeKrAUtyFCwru3CbVJggshLAvypLSkIg+094xAkBmeQgVeQL2sCOicXYL5hIStlKGeaFbk X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f4bfbb4-e930-4c7a-4de7-08db81f0b9e2 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2023 09:25:11.6152 (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: 963P+Oblz+m//J6WELeVkKneosEKZCyPiIfnF8tAnJ5IFdukcoUl0ODEi9LT3i7FYBkwcPT3PMONFN9Y6v1KQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR03MB7465 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1689067548015100001 Introduce support for handling MSR features in libxl_cpuid_parse_config(). The MSR policies are added to the libxl_cpuid_policy like the CPUID one, which gets passed to xc_cpuid_apply_policy(). This allows existing users of libxl to provide MSR related features as key=3Dvalue pairs to libxl_cpuid_parse_config() without requiring the usage of a different API. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Anthony PERARD --- tools/libs/light/libxl_cpuid.c | 61 +++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index b1c4f8f2f45b..86a08f29a19c 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -158,6 +158,57 @@ static int cpuid_add(libxl_cpuid_policy_list *policy, return 0; } =20 +static struct xc_msr *msr_find_match(libxl_cpuid_policy_list *pl, uint32_t= index) +{ + unsigned int i =3D 0; + libxl_cpuid_policy_list policy =3D *pl; + + if (policy =3D=3D NULL) + policy =3D *pl =3D calloc(1, sizeof(*policy)); + + if (policy->msr !=3D NULL) + for (i =3D 0; policy->msr[i].index !=3D XC_MSR_INPUT_UNUSED; i++) + if (policy->msr[i].index =3D=3D index) + return &policy->msr[i]; + + policy->msr =3D realloc(policy->msr, sizeof(struct xc_msr) * (i + 2)); + policy->msr[i].index =3D index; + memset(policy->msr[i].policy, 'x', ARRAY_SIZE(policy->msr[0].policy) -= 1); + policy->msr[i].policy[ARRAY_SIZE(policy->msr[0].policy) - 1] =3D '\0'; + policy->msr[i + 1].index =3D XC_MSR_INPUT_UNUSED; + + return &policy->msr[i]; +} + +static int msr_add(libxl_cpuid_policy_list *policy, uint32_t index, unsign= ed int bit, + const char *val) +{ + struct xc_msr *entry =3D msr_find_match(policy, index); + + /* Only allow options taking a character for MSRs, no values allowed. = */ + if (strlen(val) !=3D 1) + return 3; + + switch (val[0]) { + case '0': + case '1': + case 'x': + case 'k': + entry->policy[63 - bit] =3D val[0]; + break; + + case 's': + /* Translate s -> k as xc_msr doesn't support the deprecated 's'. = */ + entry->policy[63 - bit] =3D 'k'; + break; + + default: + return 3; + } + + return 0; +} + struct feature_name { const char *name; unsigned int bit; @@ -337,7 +388,15 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *= policy, const char* str) } =20 case FEAT_MSR: - return 2; + { + unsigned int bit =3D feat->bit % 32; + + if (feature_to_policy[feat->bit / 32].msr.reg =3D=3D CPUID_REG_EDX) + bit +=3D 32; + + return msr_add(policy, feature_to_policy[feat->bit / 32].msr.index, + bit, val); + } } =20 return 2; --=20 2.41.0