From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921094; cv=pass; d=zohomail.com; s=zohoarc; b=l714r9dxyqKlL+UTK0Z0EapZ/mICkhQVGSAI8sOUde7B2mbF15TWSDFdT2Iwzf3dcE6oEb508ty2/VxcfhUuf9+wfeznIBmGN3Zs9Rxf9j8+0PFOshfIEhbVIVDoDiUCkA3TW4XyvfvJLqt/toFQQs9oqAPyPSrF2yfI8PVo8e0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921094; 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=mEbdhEtUGe5VZzMlFSg0aCuqqcHueFD8gRJQ93XBhdU=; b=KKPo5StAT4Mt9X6ZMBTRDP9/Px8zsye+Vuq+Xiz/afatXBCmYRtdBFL1TpQKI9S8ydW1GnyafK9WRxQwfDHEtD46lSfMON5JxD98JaNOqHWDPwaqvKVNSJ8KNXRJxUdmmF3k9NQ6hAyEpi/wk9RpPQTY5tl4pMaNzYSMumh94H8= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921094827647.487197178923; Fri, 16 Jun 2023 06:11:34 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550168.859094 (Exim 4.92) (envelope-from ) id 1qA9EP-0002EL-1z; Fri, 16 Jun 2023 13:11:13 +0000 Received: by outflank-mailman (output) from mailman id 550168.859094; Fri, 16 Jun 2023 13:11:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9EO-0002EE-Ur; Fri, 16 Jun 2023 13:11:12 +0000 Received: by outflank-mailman (input) for mailman id 550168; Fri, 16 Jun 2023 13:11:10 +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 1qA9EM-0001xG-Pd for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:10 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 419748da-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:11:09 +0200 (CEST) Received: from mail-sn1nam02lp2045.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.45]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:02 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:00 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:00 +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: 419748da-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921069; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VVZh+dgSVSe07XE3ToIkuC1ghXLj6DzyVNrGoP3ERmg=; b=ZJMmhsxz7HthTcW1nbambwrY+xwefIYrcyolsDSznSO7mPmeHqA4PD7b r3/DllHCHyYp7k/hBXdwPQApY70c0nf/QVdxmLvddJb9LLYg1jNCQa45i vIu4MQbqusroCARLrT71ZQMsIslHQrB+65wlrB7HavIgnrdkULITwJPnW k=; X-IronPort-RemoteIP: 104.47.57.45 X-IronPort-MID: 111813000 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:ol6CxKCmgIxQPRVW/wziw5YqxClBgxIJ4kV8jS/XYbTApDMm0WEBz WobC2GPP/+LYGCgc9p0b4W29BxSsJDRzdZkQQY4rX1jcSlH+JHPbTi7wuUcHAvJd5GeExg3h yk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbCRMs8pvlDs15K6p4G1B4ARkDRx2lAS2e0c9Xcp3yZ6ZdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVDmZkh+AsBOsTAbzsAG6Y4pNeJ0VKtio27hc+ada jl6ncfYpQ8BZsUgkQmGOvVSO3kW0aZuoNcrLZUj2CA6IoKvn3bEmp1T4E8K0YIw2sUsHmFD7 cwkARMGKT+Fmsyy2omCc7w57igjBJGD0II3nFhFlWucNtB/BJfJTuPN+MNS2yo2ioZWB/HCa sEFaD1pKhPdfxlIPVRRA5U79AuqriCnL3sE9xTI+uxrvgA/zyQouFTpGMDSddGQA91cg26Tp 37c/nS/CRYfXDCa4WPcqyL13beXxUsXXqojHeCIy8R6uGa02082OicxWlqZ+MeQ3xvWt9V3b hZ8FjAVhbg/8gmnQ8fwWzW8oWWYpVgMVtxICeo45QqRjK3O7G6xGWwsXjNHLts8u6ceRzMw0 USSt8j0HjEpu7qQIU9x7Z+RpDK2fDMTdGkLYHdeSRNfu4W+5oYukhjIU9BvVravicH4Ei3xx DbMqzUig7IUjogA0KDTEU37vg9Ab6PhFmYdjjg7lEr/hu+lTOZJv7CV1GU= IronPort-HdrOrdr: A9a23:U1b0UK0/IkiRgDlMBhVIAAqjBH8kLtp133Aq2lEZdPU0SKalfq eV7ZEmPH7P+VQssR4b9exoVJPufZq+z+8X3WByB9aftWDd0QPEEGgL1+DfKlbbexEWmNQy6U 9hGZIOcuEZDzJB/LvHCArTKadd/DGemprY4ds3Vx1WPHlXg6cL1XYfNi+rVndYaSNhHpQDGJ +V9qN81kGdkSR+VLXcOpEdNdKz3uH2qA== X-Talos-CUID: 9a23:lZ14xmxNz7SmkZjwEh55BgU0OZs6cnDF/Ev5AET/JmB0ZrmPcmaprfY= X-Talos-MUID: =?us-ascii?q?9a23=3AIGLbTA2RwbzH3TOmDExKlSS3/TUj0q3zOH03ga0?= =?us-ascii?q?9nNSnEB5KHDicrm2Ja9py?= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="111813000" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dkI5xGdv0NbGyVtksVHPFKqv8BUC9eRA6oRC2oL6jWGcZQRKcMX9HgHpxKi0kT+syeztVE7kARDP7pNYp6jp/l8MbTrh6HxVGrRc1ZYo/rHabRZZIDmceG3i788bAkCgoKGPl9QfFnXSVdOBInwzgLD/UW6WYDQMZFnGnYY0WgAmOG+ITjGHtBi5+Y0vH6wdl4aUuHK68UQ0r0V4+o/OhziM/PtpzizlG8wt6jLvnUlWXvUvLsR2KNjWtiHMGqQkGsWkIcRulgMSZs5yey8KDjr0qogpCL1rijcBV5nmp4ZnM1Sz/nMw06JKtnD+NagvASuaG1FK2ni9qKyRWSF1UA== 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=mEbdhEtUGe5VZzMlFSg0aCuqqcHueFD8gRJQ93XBhdU=; b=ckbFGY9iBiBFqSTA6BVTyrVEXofYlVtVivJmG8OqQTzLNcIGOkEzOFi1drqatIJ00TXyDS4Mj6+7q3YHRfErXOI1Pxo1irrw8W42sptd0xpXJb6dZ4BDK7IwJtNMHyl7WzeLZD/S/tyOIIuAB8jQQ+TluaVZtYP4/dOt5XwpkmEgeQYb08n8+bdWanEuWNBWuXFiMYCEZgPoUUy6J5ZWI/R0TH1KVArE6ft2a5WTr9ECXGl08ADnsAtJ3uVub4cfSdXLc8WMQQGrRD4RFiyjnjT4rKKgr1Wg+tj+z/3T/ck1bgH/Wx8WZoVDF2agBzu+OdVWWtiNwfQsKuYQe2/qiQ== 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=mEbdhEtUGe5VZzMlFSg0aCuqqcHueFD8gRJQ93XBhdU=; b=ajoO/lOHGyoY7ESMSC4B0p7an5b+Aq4gGpDVvugp7SkIN5rY1RhSiZaXk6xQTKf4fDbsRxOoXBoYFhKDrKj5dUjxZOlN6hTRV0OwDbih/6eNdi3t0oNunSSsX4gv/YxSBzzLIhP2IpVX3K1LaYHp4ibpQH4DS49odHU2DkyzLEk= 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 01/13] libs/guest: simplify xc_cpuid_apply_policy() Date: Fri, 16 Jun 2023 15:10:07 +0200 Message-Id: <20230616131019.11476-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0507.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:272::17) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 20f7d8d5-c85d-48e8-55e8-08db6e6b215d 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: dlbjJVXfHqMLGeEyGIi32Q3z8USYVioebmIbJ+WXwACh67PfGS2kVkbw1TOAW9Wn3m3/1uOqsO7PX1aVdHOODaZhNnYpr/7jfAgm7Ln1BneogWI89gdQBN2d4Tk+v7sBPNa6PpcMEiuXlJ06DmeiUsquU8lIGd6KzjucsJAARDVAnZsPyocVyko4cYe+4wmZnKSalGC6YgTnFqRvkr3uo9CtpQjR4VqFhj9wvJjLeHSiNpILn8gunLmfOCLOMprSFKgxAwWqz6N6CW7KcXfdAz6t2n/K/nPpbcx9jDyEwlLnIYNMv4XeV2/r9pa1Koagx8CO/pabqu6Q/dVtMtWi/0xo+zNt/fFRgXvX08Le9dzbiSaZVbw4aDLNKfLcwd5TB7t3uFkgCj4gdhCV3j134g/Nnn1ILQBsdWOIiZ7SzC9jDR6RtA1VNE6517A9/LZJWxJrAA9f8qjr/cQDAo3vgnk8TdlphHwO0UQO6Wr4JmZZivdIDlKxWpuVdLO0Cl9MGdPf6s3JJF1XmVmo+x0Gc5u0E0YT6Pem38hx4RMEgPGUVzniQjOA1+gPOQvpc27P X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aXZVdVhHVnZiWjd0M0svaS82TGxPbDRnZy9NZnlIWDFqNFA1SXpJNWZDV2lj?= =?utf-8?B?eklzbEMyOUdKWGhnUUhLbytHT1pYYUZ1blE1dWNOdytKL0Y5cVMrc1RmNHhV?= =?utf-8?B?RnpvRXRTa2pnTk9ESXB4WFVmMEdXaWVtTHd6U3JoSWxrM2lRejFvUUxtUTk4?= =?utf-8?B?bTdxYUg2ZVBiN0MwL2Y2cFNrdWhxRUtVbXJTSThnZFRqNHVCT3dyVGhzeVZn?= =?utf-8?B?K1VBWnJ0Tm02WFRnMTdmZzJJeFFhck9weVB0UjlqN1dGUTI0cC8xakt3aGxr?= =?utf-8?B?Z29TRmhIM0g0UTdpN1FIek1vbVg2UjE4dktoUFhrTkxOdC93NmRaaFIxTzAx?= =?utf-8?B?bEVoeDdxdlF6VkFyM0RTRDE0QjhOL2MvYVQzZzBBNmhYaXBDV1JXMmJhQjJG?= =?utf-8?B?c1gycmdJalhnQWRLM25TcktyVVRQYjNDMkc5NmhiOVFsWWo4aXVuMkp3N1Qr?= =?utf-8?B?enRnbTZQbkczOUo5WWVQekZ2aDE5S3cwSFFYTE9zbWMyRldudmkyMlNNR3hB?= =?utf-8?B?MHZocHB0NXMyRXhyY3VYUW9yVHhxSkRUTEQwdjFkVzluN0pWdHZPa1pDYjlG?= =?utf-8?B?UHVHMUhSRitYcFNJWkpoZTdXQi9nVEY4S3puL2MzeFZVamVvdFBTUWczb0lS?= =?utf-8?B?Y3B2TWlVUDQxM0hheDBFbXNHYjgvRjdoK3BTZVAzVERLVk9HZTRvVE1MOHpw?= =?utf-8?B?RmFyUDdPUE9nalJ6Yk9jbDBHQmJndG13cTFmRCs2QS9BZ2NmM3NraGJINTNn?= =?utf-8?B?ZnlaTjV0S0VTcTV5bUNrVmZ0VGxKRW1TTjgvb1RyS2wzeHFEY1JXK1hLWTZV?= =?utf-8?B?LzdrYW5YSU00OGovNFBxaDlkOW5TZ3VBRVIwblk4NExhYWFqNHRnVFAxNEVm?= =?utf-8?B?N042OE1GVlEyK0oydkNwWFpVdHkyVHJSbW0xNitjcTVNNW5Oa0lucTIxdGxB?= =?utf-8?B?N0pud0dPeWRDekJ6SVVSS3ZVOTZ5QWd6bEtLZ0xXd0tzYUlTV2ExcWRWTmI0?= =?utf-8?B?WDk0dGV2RnIvUnhpMkFMeDUxYmpqUkxTZnlIeHNLTVNFYXlQS2paQjlTVmhy?= =?utf-8?B?RXhjWFBsU2djQitkMUVlVGREdEI4d3ByMWlWbEZ5czIvTzRzbnFja1RRUUZM?= =?utf-8?B?MFp6S2F5OFRGWXZYOHpOYnhUS0lNL2I2WTZFdWU5ZmhOOXpTdlhrYUxyNGdH?= =?utf-8?B?YWpFQUQ4a1ZZSUtsaE9nTnJRQndkazkybDFBNWQxREtyYXl5Wk1lYWhRUFJH?= =?utf-8?B?RXVRMktBSkM4UlFzdUJIR0xZV2czUGFlRlViTmowRHFFcEd5bjJ2M016bFZa?= =?utf-8?B?VnFnTTkyWEF2MzJ2b0VYMjlmK0dyVGR2cnNsSHNHajluM0VEQW5ZMEJGMFdS?= =?utf-8?B?T21UN3VkNVMvMGNlcHJZZXRrbkc1Q1FKRlptTjRGaUI5ZDhhTU5VT0NpcHBI?= =?utf-8?B?eDMvRzNMNzE4dEIvZ0xtRGFTUUJxM2tCdk93RXE2MUQ0ZjduL0xDMFd4WTll?= =?utf-8?B?RkJzcEJGZ2FMbC8vaDltWEVibGVDNlZoV3p5R2x2d2ozTk1YU1Y1MjVIYlFE?= =?utf-8?B?TVh4OUYrc0tUVjFmbU9PRVdGQU9TK0c1WldVNE1aYWQvVEVKWmg3RDhEUmhv?= =?utf-8?B?WEhXd0ttVks1RThYRTROSDAxaFJCRG15dzJmZEMzekM5Z1d1S1Znd0ttYXNx?= =?utf-8?B?TGFNbU8zQlJCeVQ3N29kQjJhSlA2VloyejdlNWszNkJGaXJaL1haWERacll5?= =?utf-8?B?a0lCS2Y1eVpTejdlTWpFdmN6d2dDRXdkN09vaFpIU2ZGNmFWeDlsTHhjSlUw?= =?utf-8?B?cGJIeEI2RlcvakVuZjQvb3JDbDdHK0o0QXk0Yi8vWitpVlBMMThkOWw3TWI5?= =?utf-8?B?eEs1d2FpME5uTHcra0xqWEk0dUw1K3JUNldkWEx0TDRlTGdPdU5YN3Qxd1VJ?= =?utf-8?B?M1FyVmNxbUU0a3NxZG5hVVI4VHQ3S2ovTUFEU1RWVGpzOG13TllxQkVDUkJ2?= =?utf-8?B?V1VOcFROVm5rVnJuYlk4TUIvUDhublFTRVd5MXJwVXl1ZENYRi9qbzVsdjY5?= =?utf-8?B?bmxuc0ZZMk1XUzA0K3phSFZUdXdFaVBoVmJqWnhJZEI0VW9hS1VCS2g1SU5X?= =?utf-8?B?YWNlaWppQnJkZHg2VE9weHlqNjNLWHFpcWNET3FoZk5yckJ4RmR4Q1pBTWVl?= =?utf-8?B?dmc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4lGw7q33OkS3ecxKh8xGZu8+QsZSwLjxNyUEdm7tNXqUtuaRF6Ubl22qztVAfV9BOJT0zL4gkAQZbCeIKKnv6xygJQExM3NKKmn83wyVfgKtqdjUHnHmUQRZYO8Gg9Yy7lgiaOdT+CgyidsGorotRrLOWWer51G4oedWJEzoUu4YCZsUTwiTBulnb40kquV9v4eKg3fg69QPukksn5Ixocq5COKfy2iqZhU2UuSZSwAgxkN+LFoSmYr5hW9P2969Fe9ZTp0w1ErD7U8j/j3hO3jSHU5DMrFmU2HrTI/1kCXyQkVOCuMKmioEUpyAgB3SQhR3C267EGoq2loq61RJF7MBUVm3wsTxClVrrEDk9hmnY+zQSQAgecYE99mPOLZblJ4w1+lNM1tTPHmFcquL2On4X4hD1rm6gee3gjfLO/vsCKIradVZqjH9Ee0GUAkb8Px7FGR/AE656AunUjjJAghTKTqrOx6ecOdXsA5vz9GK5f+wdej5ur71vL4E5MytaHGwdC4gd//qeMRe2iM1YV/S7O8C7/hnZgxKe2ER74/ujVj+PqtJr87YNoUulWv2b9OWYX+peU7hJesR9tccLLY+cWVhMFM+sVh0wYvtaJ1Pj2FFTk3JvtyUphvRb63iYpftjg6I/y/2WvC/cinduG8CLG1Si4DpHHTgh3YiREpGVWq2KSEQViu7PMK7PB1umjRndkvsuAHU49oQpkv2JGRU0keU4Q0bGh6zwtip2abBUStQ3xG0izX5JdXHsbIs66IOEIVw3FKp6KjPqyouZxcWQMFFb1i41LCqkZQx6/yP05LZhvlWysdxz8r+uCZV X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20f7d8d5-c85d-48e8-55e8-08db6e6b215d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:00.5840 (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: 2GIA6ZLfY9G1TYjPOQpQmFiGtpA6e+T7AaySNbkFEwfLoQLghYJPFnSbQQW9TxIl+tvliIF5HumtovwU68n17Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921096332100001 Introduce a local xc_cpu_policy_t and use it to simplify some of the logic in the function: * Populate the introduced xc_cpu_policy_t with the current domain policy, which will already be the default for the given domain type. This avoids fetching and processing any default policy. * Use xc_cpu_policy_set_domain() to apply the adjusted policy to the domain, thus avoiding open-coding the policy serialization. Note that some error messages are removed, as the newly used xc_cpu_policy_ functions already print an error message themselves. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/libs/guest/xg_cpuid_x86.c | 51 ++++++--------------------------- 1 file changed, 9 insertions(+), 42 deletions(-) diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 5b035223f4f5..67e0dc9b4ad2 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -431,10 +431,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, int rc; bool hvm; xc_domaininfo_t di; - unsigned int i, nr_leaves, nr_msrs; - xen_cpuid_leaf_t *leaves =3D NULL; - struct cpu_policy *p =3D NULL; - uint32_t err_leaf =3D -1, err_subleaf =3D -1, err_msr =3D -1; + unsigned int i; + xc_cpu_policy_t *policy =3D NULL; + struct cpu_policy *p; uint32_t host_featureset[FEATURESET_NR_ENTRIES] =3D {}; uint32_t len =3D ARRAY_SIZE(host_featureset); =20 @@ -446,17 +445,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, } hvm =3D di.flags & XEN_DOMINF_hvm_guest; =20 - 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 out; - } - rc =3D -ENOMEM; - if ( (leaves =3D calloc(nr_leaves, sizeof(*leaves))) =3D=3D NULL || - (p =3D calloc(1, sizeof(*p))) =3D=3D NULL ) + if ( (policy =3D xc_cpu_policy_init()) =3D=3D NULL ) goto out; =20 /* Get the host policy. */ @@ -470,26 +460,14 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, goto out; } =20 - /* Get the domain's default policy. */ - nr_msrs =3D 0; - rc =3D get_system_cpu_policy(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_defa= ult - : XEN_SYSCTL_cpu_policy_pv_default, - &nr_leaves, leaves, &nr_msrs, NULL); + /* Get the domain's policy. */ + rc =3D xc_cpu_policy_get_domain(xch, domid, policy); if ( rc ) { - PERROR("Failed to obtain %s default policy", hvm ? "hvm" : "pv"); rc =3D -errno; goto out; } - - rc =3D x86_cpuid_copy_from_buffer(p, leaves, nr_leaves, - &err_leaf, &err_subleaf); - if ( rc ) - { - ERROR("Failed to deserialise CPUID (err leaf %#x, subleaf %#x) (%d= =3D %s)", - err_leaf, err_subleaf, -rc, strerror(-rc)); - goto out; - } + p =3D &policy->policy; =20 if ( restore ) { @@ -643,19 +621,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, } } =20 - rc =3D x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); - if ( rc ) - { - ERROR("Failed to serialise CPUID (%d =3D %s)", -rc, strerror(-rc)); - goto out; - } - - rc =3D xc_set_domain_cpu_policy(xch, domid, nr_leaves, leaves, 0, NULL, - &err_leaf, &err_subleaf, &err_msr); + rc =3D xc_cpu_policy_set_domain(xch, domid, policy); 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 out; } @@ -666,8 +634,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, rc =3D 0; =20 out: - free(p); - free(leaves); + xc_cpu_policy_destroy(policy); =20 return rc; } --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921095; cv=pass; d=zohomail.com; s=zohoarc; b=FkNWsPCELJekn1SjUW+8llEHCfHMgMgGDdcgdCMfhmdAuPZ9ZX/+O9i2MgEjRFnqxsy6ntppOkhgsZCTd1ZJ9r3iorBYqerYncBINWs6Ph0Zkk0kBybqma0J/Nd3aM+YgIxFyAzZcFJgp84rQcwr/q5+vHWpUFJEEdJz+8+4XQk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921095; 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=IprQ04Jt1eHCGLkFgtgI4smULvZWNBrzC5dKiJTVpfU=; b=MM9PxDvFYLRtMcOmPSJV72iUEG9ZaU4xRgS3w9JDQ3YM9oBH7a1aTgmoh1s97vGQ38Yb9jxc/6IppFl7JxDOVRrUOsYdij3r8+UpAEbEvgz3PqOL8MWC2WM8CxOPHIgn+CRgq5chu1QxYvZtH0Yg58wuHWlbPuJLX0o3Ow3FnAQ= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921095663777.4287780992031; Fri, 16 Jun 2023 06:11:35 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550169.859101 (Exim 4.92) (envelope-from ) id 1qA9EP-0002Iu-F5; Fri, 16 Jun 2023 13:11:13 +0000 Received: by outflank-mailman (output) from mailman id 550169.859101; Fri, 16 Jun 2023 13:11:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9EP-0002Gd-7X; Fri, 16 Jun 2023 13:11:13 +0000 Received: by outflank-mailman (input) for mailman id 550169; Fri, 16 Jun 2023 13:11:12 +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 1qA9EO-0001xG-Ed for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:12 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 433aae63-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:11:10 +0200 (CEST) Received: from mail-sn1nam02lp2048.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.48]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:09 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:06 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:06 +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: 433aae63-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921071; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=teyfxT690T5FSXoOSSniTAsDc/olb8QuZGXjP4dniKc=; b=CGKY/AbjWlk+XyFxU2SA4J9cr9q0faEMqQHyrN4F2ANJilXkjP//jx+A UfXoDv6Oj3s+TDrc3l7sCmp0mJU67IImw+3aU3e85JBSBdja3bokuptLk ln2bGYbbpOWdzdvgOwyqH5Ib/GK+YekeZ3HARtTFsh0R4EUIsWvg7qF3T Q=; X-IronPort-RemoteIP: 104.47.57.48 X-IronPort-MID: 111813013 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:U5Ei5K2/CKI28OF5AfbD5fRwkn2cJEfYwER7XKvMYLTBsI5bp2AHm 2EfXGqAMvuCNGaneIhxbIm1pxxXvJLRz9NjTVE5pC1hF35El5HIVI+TRqvS04F+DeWYFR46s J9OAjXkBJppJpMJjk71atANlVEliefTAOK6ULWeUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo tq3qMDEULOf82cc3lk8teTb8HuDgNyo4GlD5gJnO6gR1LPjvyJ94Kw3dPnZw0TQGuG4LsbiL 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiI+t5qK23CulQRrukoPD9IOaF8/ttm8t4sZJ OOhF3CHYVxB0qXkwIzxWvTDes10FfUuFLTveRBTvSEPpqFvnrSFL/hGVSkL0YMkFulfOV4Wq MZIdT83bR2bu++ckaKrDeh8mZF2RCXrFNt3VnBI6xj8VaxjeraaBqLA6JlfwSs6gd1IEbDGf c0FZDFzbRPGJRpSJlMQD5F4l+Ct7pX9W2QA9BTJ+uxqvC6PnGSd05C0WDbRUsaNSshP2F6Ru 0rN/njjAwFcP9uaodaA2iv137+WxnuiA+r+EpWRzaZOkWOf4FU+JycQbV/4pfSn1GWxDoc3x 0s8v3BGQbIJ3FymSJzxUgO1pFaAvwUAQJxAHusi8gaPx6HIpQGDCQAsTDRMddgnv88eXiEx2 xmCmNaBLSNrmK2YTzSa7Lj8kN+pES0cLGtHfildSwIAu4PnuNtr0kKJSct/GqmoiNGzASv33 z2BsCk5gfMUkNIP0KK4u1vAhlpAu6T0c+L83S2PNkrN0++zTNfNi1CAgbQD0ct9EQ== IronPort-HdrOrdr: A9a23:NREI+aMvDMppAMBcTgyjsMiBIKoaSvp037BK7SpMoHtuA6mlfq GV7ZYmPHDP5Ar5NEtOpTniAtjifZq/z/9ICOAqVN/OYOCPggCVxepZjbcKrQePJ8X/nNQtr5 uJccJFeaDN5VsRt7eH3OGheexQpOVuaMqT9J/jJ3EGd3AMV4hQqz1XJyy8CUNMSAxPFfMCZe GhDpounUvHRZwPBP7Lf0U4Yw== X-Talos-CUID: 9a23:Nsyf327hWkKfKfBvktsszHFMR/p1L3Lnz3rIH0KSWHZ5D7yFVgrF X-Talos-MUID: 9a23:pdAEUQpWGMHIQxvb3bMezxhZbON53aiIMW0iq5M+v4qAODIuEDjI2Q== X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="111813013" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IUdK0hnCDmbCF7DT+bpunIApCOc7L2nks6ccXDZ5fE8Ex7u57Jni1PRWhZ9GOCttg7+ym9iLqXWEQ+S8xavQuiGFhQmJXjUyhDSJBGrZsGuz2yxiBH8kjzcr4IIycZ88jlFup6Nl6QJV2rZgH4v1YpyyPHGB7KPuHrjNFzcboKJbnbWMn3MJYI7womCAnMlMsqy8lFGxdaXRFQI43Opz53t231JDxJrrvg6ium5JMJBTpDd1hR1Oqe9Fxk9B0KPwB3fOIu0WJW/hjHfRPXieWEQA2nhQag2NBoP6ucs2KeYIFoQP2w8F3KxTJAFKDXdzObsF87wFbFebBjB4x9DDFg== 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=IprQ04Jt1eHCGLkFgtgI4smULvZWNBrzC5dKiJTVpfU=; b=jUiiBMO3XrVEpvq/8n7WEItQyt7zUwF+BjF/SMP2D8W93VJq5G0QimUV6zttXnIRJUb3s3G3aTEaY9fAvAPMlmN1zJkDehBeZDXR/RUL1fzRw02RLcUtYp4tZ2WUxI1pN0hm9TuXlK1UXH0GfycOKE3CwEmdlefC9Jz0GErO/8CO+Es+ETNuylwgxOphbVeNhx403YcrOuo8x6XDDXi6gsMbeCYdlZ3SbGPG8aghaix+/LmDgaA999KZj3VYabiDwbXiPiTyqaNg7JJtvK3y7HrYBp3S02a3T6ANmqPxy2itjWTFMksyQCpYaIFcZpmKXCSp0K543AnK1cT7N2WiqQ== 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=IprQ04Jt1eHCGLkFgtgI4smULvZWNBrzC5dKiJTVpfU=; b=Z8L8B5rYCJxIM04qi+ySteGU4sP9uGmKcHHS3YIsg3LJqVqHQquATAiwpP1y3bjDV07xsNhskkdQ9SIM3wHG+aobe8qGpHhkztt/krR4s01YYz4zPHVRk3gcyYvhEKN6dB87PufClZRfH4k/WW0WwXOTGGwjtrVbHHNt6xiK3/s= 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 , Jan Beulich , Andrew Cooper , Wei Liu , Anthony PERARD Subject: [PATCH 02/13] libx86: introduce helper to fetch cpuid leaf Date: Fri, 16 Jun 2023 15:10:08 +0200 Message-Id: <20230616131019.11476-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0035.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:151::22) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b379771-0332-4ea3-6d0d-08db6e6b2514 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: lU+kIk3HP5SVfVtTmfWsai23AsV4bHQ9yUB+k7MrpLcrgU7nDDCujlT0p+I7f/n7f7Fk9obU8sDNDisdLBTUutj2g87MFS0uWr1zdNSJt9oCQqoRh3bkM9fU+CqB7O/IV8yARjjnBdva4ERkef6ly9CAzsn/zKGMsOnosdZ3Jf3Caf6rv4WchkeOjstxiYknQAza8804htuhjvqDXEMnGAZ2xOns/Sja6ncZgXBebRrBMNLIKOUlwTSCCG4W41WOqdP9BrO4FPEV8okcG4cs90hRcWQZLza5oMVKfj4MTyfbNFAP46vSF72OUJfcgsvUY0AHHjiwzGTky8mEmAW/+R6nJM38F48+21LbT8oH8V0JDN0IIoRGGOjk9mx63tIBPLfW0tKuCBxvIbFN0s8YSjCxgI0uLMwEOdJ39igr8qBtE3bdZvlVtv44aC3IKJWp/IjagPEz0c0RKqHbWz3RZWIvD42sLKie1u/QLzNcQtYRQ8V7frqcmL1QTyNboG418pEXn0D5PKu7cL/ZQtNCnx7TAwpXyJTEy0+nPmoYzoZwUXpT1brG9A0fdPRFFCR9 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(30864003)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(66899021)(186003)(36756003)(478600001)(107886003)(1076003)(6512007)(6506007)(26005)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WGcxamMxT1ZQbXlCMU5JSnJ6WUFvaUppTDRXY2pZNzZZZHhIaUlQRktuenpP?= =?utf-8?B?MktxLzJtcWhDU1crSGlORFc5bjVnOWlRanBPYVFDWDZEQTJxSkNyY1B0WC9O?= =?utf-8?B?b09rRHhwNVgvMnhhYWZMMWZrM3lvQ2svcktzZkgzTkMwMm4wMmgybUk1ZUhN?= =?utf-8?B?S1NadmhDVCtBMjUxdWNQSHlVUlp5UFdhZFUzdEVKTG5FWE83MDJHeUVySm9v?= =?utf-8?B?T254bW44S2VJZGVlQlV4cFNKd3dyVXpnZWFKR2pTNEFBWGx3K2JCdUJDREZM?= =?utf-8?B?d3hKWXJXYTBJaFVUQ0hVMmFtVGFVWDFBTGFiKy9sNTlURk00Q3RBTzJIY1RL?= =?utf-8?B?Q2lqMC96bjVYR05zT0lPTEtjTEEwV1dFNnBZY3IrUkw3TElHcGFYREdrb0ZY?= =?utf-8?B?TlNDbXZnVkJKUzU3dFdnT29CbUJYVitWMTd1Q2hTWVQ5NEQxaSt4cjhHeUt2?= =?utf-8?B?L3Rzc3Z3VXNRRXlWcWIrSnEvU3FEYkh5cVB6cDFZQkNaRnlQNnlQZVJYRlMz?= =?utf-8?B?MFZCY09vYjZtRUtpbjJRMzBIbUNKZmE5TjJQSENIc0s3YlV3cURBbnZoV1J5?= =?utf-8?B?aStBeElDQW5WOXI3Q2lkMis4N0p5OUpzd0gvT1hleldzN1VoV1FrVWNjaGhY?= =?utf-8?B?a3JaTFhRU2FsYVFyOENCZTF4THcvdlZLSmxURk05emdES3lOeXIwZzVIYTN4?= =?utf-8?B?Zm8rVE1hOFViZDYxaVZsOWVidkhKK2xBVkMvY3l0dFdLdUdmT3AyUDJack5j?= =?utf-8?B?UHMrSW5lc3AyaldWY1A2NEhwSGZvUnJYTHFpUzFaREFUdGFuRFpGZllNeDR6?= =?utf-8?B?NnVsNC9wTkQzYUpEeEoyVVRXcmxwNjBZMDJUVHZ5bCtLanVVTGREeGRYTUZh?= =?utf-8?B?QjMzaW12T25Pc29FUnlKcVNWemNMWHFENWZsZHJkdnVhTEN6ckVuYzAvQk4x?= =?utf-8?B?aHdhbmw0d1RzZlRKc2I3TkpKUFNZd0FzYWhOejFUUkJrV1B0VVY2Z3VmSklI?= =?utf-8?B?K0hleWFDU09yTkdidUxySFpVQ3J5Y1J5UkhYQk01bmtGZXdFdlJZSE9CVkJ1?= =?utf-8?B?ZzhnbFgzalBqeS9XTGpKMTJMQkRiRU1JMnAvZUVsWXQzNXdZSUQra0hQeXVk?= =?utf-8?B?TkRnSUNPcDNUTzFuUW1pQ21GeVJmUkFNdHM1Tysyb2JJajFxQjRUL24yamxu?= =?utf-8?B?cFdSTVhvQm9teTRaUVpoeGtlTUlEYjkycVV1R2FHaURDL29MdjBnVXpGY0tR?= =?utf-8?B?c0lFd1prMXkrM3doNzY4a0t2a08zRitRZmIvVVJJWlczeGVXUHRlcUUvaU9I?= =?utf-8?B?VHdaWS8zdjhRSGtCUjJwaDU2T3dXWndKVDNxS2Z1ZWxoYkpJS0ttN2k3bDVS?= =?utf-8?B?OSsvbFFyRlZjQW5pekVrbFFndVZrQS9NcTltT2o0SkRTNUs3NjJGdHRyUG5O?= =?utf-8?B?QkxtT0lBYUdkOTc4VmJjQ0kwNktQUU8rbjB6UVhGZWp1OTR3SHFXb0xpTjRW?= =?utf-8?B?Y0VnV0drNGkwVlRIdjE1RDNQQlQ3UXE3VTJHWENCSzZldzdRUUw4K0oxME9s?= =?utf-8?B?U2d5RWwxV0JzVjBoUW44Z1FhYVhSUjRGalRMa0dWT2FLUTFtUFNwdmQxclg3?= =?utf-8?B?NW80cUpmSUFRbWlrRHNaWSsyN3c1VjZQWFV4UW9iTUFNdkFvUXEyTE1EclRS?= =?utf-8?B?eDZvcXo4NVNxMExzUnQ2VFoySTA5K05yTnl0OE1kdEJ3S0htZm05aE5ybWl4?= =?utf-8?B?bDd5N2lnY2lpUkI0bjRnOFhzQlp2aDZjaE1jQURBaCtvSGM2aERtRDMyVXdT?= =?utf-8?B?Y2VmMlFZTmg3ZStWb3dyVGQvelpoUWhCVG9pWW04bW9ySjZaL2pIK3hxYkpX?= =?utf-8?B?V2lXeTVKVG14cm1KbTQ1SXREZ0gxY0NZK3U5VFIwU3hrV09OdHpyK0xUSTFj?= =?utf-8?B?SjBsQzE4b0NUbjd6cFNuRTE0V0hEamMrUDU2cEtSdlJxRnhTb2ZPOFpGc2ZW?= =?utf-8?B?eG5lVEhOOHRnTWxoWjVZeUlaYTlUYTFrdXJMdm05ZkJ6Z1VKUzRpSDRmc2RP?= =?utf-8?B?VGRWVC90T2g3Y2M3bVVienZpdE0vTTNPdVhiOUpCcWpJczB6RlZYMlZDNHRm?= =?utf-8?B?ZkE0M1BYOUhrZ09CVU1LQ3NKb3l5Q3ZSUmQvR1JFQWNsblJEcjBMVTdpaWdF?= =?utf-8?B?K0E9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: iNchi3aEL/qSKKfoewOi/eDlMAuq9RXJPp7GUSXhr3WwqKk1HtrollHr9cNgwGSHFzOoRsZRJsiUwUJtXvwZ21puiB/Qp5To4NgnfmL6rdNnRslSluKzRhFb0McZmkYGxoNi+jm14EueexrXCj9YFc3DKeeKr42q6NMksmnjtBQm4/DzjrXIRDJEpB5s8HDwWkSADrsI/2GpQOgO2b0ZQ5eZVzldsy7ytRCbRVJpWWNH1Iko0+vqe9C7AArhPQnVdldwgb+4S4aNJqCg9c4NDFUr0SqhUrj9gOHscQYghsRbdqVb0DQS60EhCqsX0WNJUYqF3+ROeN0YkQAceDNPG8poifNnbDSaj9GuwGP8aglCFzSgA9njir0T6kSp4HGxkjTAbKRG8yPLA5ovPDlJvTnzvWM7jNw99pos0VDjrSds2EVkJSJIsZZ2iKTe9ItNs1/lJjj+hmFwTrA3vpto6HLCYG4Qu11PV/3h8yWn6DNP+U+VoARSFa7nRSD4cB+uKpfeq2buzPjHVww3VOz9PnNAljMWsRxSb1/vkR3ilfNFBWh746ncNd1oTV89rcqSHDWd1XcbjwCSjQttQPKfBZI9O7n/TWNJRLSZJOfyDuHdxjGcsv/uxG9lOVk3lVoITnLbSQQSmUb3zHJ3oWsFDXEygnkxkqRsxeMo4a0ZJ0sTRnPbDLvj/uthseV2vEby/tK5+gzOyeL+UUAJrlDSX91OlEPBUpri8VzGX3NBMPGdQoJxlogRaYbXHcfkaLlT4IEXXxQJeB4eeH/IaxYR0LGXe7PTc1aeyfva0qwE4JdZI5OMe6nPtMs3TStt1EK6 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b379771-0332-4ea3-6d0d-08db6e6b2514 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:06.7341 (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: dWN07rhwedP81Y07Fy2bO/Bid2hWA5Lq8aGzDoIrZ1f96z1B8XKcUFxRUAFLK/MQ7hLmZB14wGP77JDxvDWjPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921096414100003 Introduce a helper based on the current Xen guest_cpuid code in order to fetch a cpuid leaf from a policy. The newly introduced function in cpuid.c should not be directly called and instead the provided x86_cpuid_get_leaf macro should be used that will properly deal with const and non-const inputs. Also add a test to check that the introduced helper doesn't go over the bounds of the policy. Note the code in x86_cpuid_copy_from_buffer is not switched to use the new function because of the boundary checks against the max fields of the policy, which might not be properly set at the point where x86_cpuid_copy_from_buffer get called, for example when filling an empty policy from scratch. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v6: - Add more tests. - Drop Jan R-b. Changes since v4: - Rename _x86_cpuid_get_leaf to x86_cpuid_get_leaf_const. Changes since v3: - New in this version. --- tools/tests/cpu-policy/test-cpu-policy.c | 177 +++++++++++++++++++++++ xen/arch/x86/cpuid.c | 55 +------ xen/include/xen/lib/x86/cpu-policy.h | 19 +++ xen/lib/x86/cpuid.c | 52 +++++++ 4 files changed, 255 insertions(+), 48 deletions(-) diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-pol= icy/test-cpu-policy.c index 301df2c00285..a11c8f067aad 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -565,6 +566,180 @@ static void test_cpuid_out_of_range_clearing(void) } } =20 +static void test_cpuid_get_leaf_failure(void) +{ + static const struct test { + struct cpu_policy p; + const char *name; + uint32_t leaf, subleaf; + } tests[] =3D { + /* Test for invalid configurations in the object itself. */ + { + .name =3D "Basic max leaf >=3D array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC, + }, + }, + { + .name =3D "Feature max leaf >=3D array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT, + }, + .leaf =3D 0x7, + }, + { + .name =3D "Extended max leaf >=3D array size", + .p =3D { + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD, + }, + .leaf =3D 0x80000000, + }, + + /* Test out-of-bounds checks in the accessor. */ + { + .name =3D "Basic leaf >=3D max leaf", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D CPUID_GUEST_NR_BASIC, + }, + { + .name =3D "Cache leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0x4, + .subleaf =3D CPUID_GUEST_NR_CACHE, + }, + { + .name =3D "Feature leaf >=3D max leaf", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT - 1, + }, + .leaf =3D 0x7, + .subleaf =3D CPUID_GUEST_NR_FEAT, + }, + { + .name =3D "Extended Topo leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0xb, + .subleaf =3D CPUID_GUEST_NR_TOPO, + }, + { + .name =3D "Xstate leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0xd, + .subleaf =3D CPUID_GUEST_NR_XSTATE, + }, + { + .name =3D "Extended leaf >=3D max leaf", + .p =3D { + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD - 1, + }, + .leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD, + }, + + /* Test fetching Xsave without present. */ + { + .name =3D "Fetch Xsave without present", + .p =3D { + .basic =3D { + .max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .xsave =3D false, + }, + }, + .leaf =3D 0xd, + }, + + }; + const struct cpu_policy pc =3D {}; + const struct cpuid_leaf *lc; + struct cpu_policy p =3D {}; + struct cpuid_leaf *l; + + /* Constness build test. */ + lc =3D x86_cpuid_get_leaf(&pc, 0, 0); + l =3D x86_cpuid_get_leaf(&p, 0, 0); + + printf("Testing CPUID get leaf bound checking:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + const struct cpu_policy *p =3D memdup(&t->p); + + if ( x86_cpuid_get_leaf_const(p, t->leaf, t->subleaf) ) + fail(" Test %s get leaf fail\n", t->name); + } +} + +static void test_cpuid_get_leaf(void) +{ + static const struct cpu_policy policy =3D { + .basic =3D { + .max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .xsave =3D true, + }, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT - 1, + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD - 1, + }; + static const struct test { + const char *name; + uint32_t leaf, subleaf; + size_t offset; + } tests[] =3D { + /* Test fetch different leaves. */ + { + .name =3D "Fetch basic leaf", + .offset =3D offsetof(struct cpu_policy, basic.raw[0]), + }, + { + .name =3D "Fetch cache leaf", + .leaf =3D 0x4, + .offset =3D offsetof(struct cpu_policy, cache.raw[0]), + }, + { + .name =3D "Fetch feature leaf", + .leaf =3D 0x7, + .offset =3D offsetof(struct cpu_policy, feat.raw[0]), + }, + { + .name =3D "Fetch Topo leaf", + .leaf =3D 0xb, + .offset =3D offsetof(struct cpu_policy, topo.raw[0]), + }, + { + .name =3D "Fetch Xstate leaf", + .leaf =3D 0xd, + .offset =3D offsetof(struct cpu_policy, xstate.raw[0]), + }, + { + .name =3D "Fetch extended leaf", + .leaf =3D 0x80000000, + .offset =3D offsetof(struct cpu_policy, extd.raw[0]), + }, + }; + const struct cpu_policy *p =3D memdup(&policy); + + printf("Testing CPUID get leaf:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + const struct cpuid_leaf *l =3D x86_cpuid_get_leaf_const(p, t->leaf, + t->subleaf); + + if ( l !=3D (const void *)p + t->offset ) + fail(" Test %s get leaf fail\n", t->name); + } +} + static void test_is_compatible_success(void) { static struct test { @@ -660,6 +835,8 @@ int main(int argc, char **argv) test_cpuid_serialise_success(); test_cpuid_deserialise_failure(); test_cpuid_out_of_range_clearing(); + test_cpuid_get_leaf_failure(); + test_cpuid_get_leaf(); =20 test_msr_serialise_success(); test_msr_deserialise_failure(); diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c index 455a09b2dd22..407919ffeffd 100644 --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -50,48 +50,16 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf, switch ( leaf ) { case 0 ... CPUID_GUEST_NR_BASIC - 1: - ASSERT(p->basic.max_leaf < ARRAY_SIZE(p->basic.raw)); - if ( leaf > min_t(uint32_t, p->basic.max_leaf, - ARRAY_SIZE(p->basic.raw) - 1) ) - return; - - switch ( leaf ) - { - case 0x4: - if ( subleaf >=3D ARRAY_SIZE(p->cache.raw) ) - return; - - *res =3D array_access_nospec(p->cache.raw, subleaf); - break; - - case 0x7: - ASSERT(p->feat.max_subleaf < ARRAY_SIZE(p->feat.raw)); - if ( subleaf > min_t(uint32_t, p->feat.max_subleaf, - ARRAY_SIZE(p->feat.raw) - 1) ) - return; - - *res =3D array_access_nospec(p->feat.raw, subleaf); - break; - - case 0xb: - if ( subleaf >=3D ARRAY_SIZE(p->topo.raw) ) - return; - - *res =3D array_access_nospec(p->topo.raw, subleaf); - break; - - case XSTATE_CPUID: - if ( !p->basic.xsave || subleaf >=3D ARRAY_SIZE(p->xstate.raw)= ) - return; + case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: + { + const struct cpuid_leaf *tmp =3D x86_cpuid_get_leaf(p, leaf, suble= af); =20 - *res =3D array_access_nospec(p->xstate.raw, subleaf); - break; + if ( !tmp ) + return; =20 - default: - *res =3D array_access_nospec(p->basic.raw, leaf); - break; - } + *res =3D *tmp; break; + } =20 case 0x40000000 ... 0x400000ff: if ( is_viridian_domain(d) ) @@ -106,15 +74,6 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf, case 0x40000100 ... 0x400001ff: return cpuid_hypervisor_leaves(v, leaf, subleaf, res); =20 - case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: - ASSERT((p->extd.max_leaf & 0xffff) < ARRAY_SIZE(p->extd.raw)); - if ( (leaf & 0xffff) > min_t(uint32_t, p->extd.max_leaf & 0xffff, - ARRAY_SIZE(p->extd.raw) - 1) ) - return; - - *res =3D array_access_nospec(p->extd.raw, leaf & 0xffff); - break; - default: return; } diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86= /cpu-policy.h index 6d5e9edd269b..3fcc02c729db 100644 --- a/xen/include/xen/lib/x86/cpu-policy.h +++ b/xen/include/xen/lib/x86/cpu-policy.h @@ -540,6 +540,25 @@ int x86_cpu_policies_are_compatible(const struct cpu_p= olicy *host, const struct cpu_policy *guest, struct cpu_policy_errors *err); =20 +/** + * Get a cpuid leaf from a policy object. + * + * @param policy The cpuid_policy object. + * @param leaf The leaf index. + * @param subleaf The subleaf index. + * @returns a pointer to the requested leaf or NULL in case of error. + * + * The function will perform out of bound checks. Do not call this function + * directly and instead use x86_cpuid_get_leaf that will deal with both co= nst + * and non-const policies returning a pointer with constness matching that= of + * the input. + */ +const struct cpuid_leaf *x86_cpuid_get_leaf_const(const struct cpu_policy = *p, + uint32_t leaf, + uint32_t subleaf); +#define x86_cpuid_get_leaf(p, l, s) \ + ((__typeof__(&(p)->basic.raw[0]))x86_cpuid_get_leaf_const(p, l, s)) + #endif /* !XEN_LIB_X86_POLICIES_H */ =20 /* diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c index 07e550191448..a93b372e29e1 100644 --- a/xen/lib/x86/cpuid.c +++ b/xen/lib/x86/cpuid.c @@ -546,6 +546,58 @@ int x86_cpuid_copy_from_buffer(struct cpu_policy *p, return -ERANGE; } =20 +const struct cpuid_leaf *x86_cpuid_get_leaf_const(const struct cpu_policy = *p, + uint32_t leaf, + uint32_t subleaf) +{ + switch ( leaf ) + { + case 0 ... CPUID_GUEST_NR_BASIC - 1: + if ( p->basic.max_leaf >=3D ARRAY_SIZE(p->basic.raw) || + leaf > p->basic.max_leaf ) + return NULL; + + switch ( leaf ) + { + case 0x4: + if ( subleaf >=3D ARRAY_SIZE(p->cache.raw) ) + return NULL; + + return &array_access_nospec(p->cache.raw, subleaf); + + case 0x7: + if ( p->feat.max_subleaf >=3D ARRAY_SIZE(p->feat.raw) || + subleaf > p->feat.max_subleaf ) + return NULL; + + return &array_access_nospec(p->feat.raw, subleaf); + + case 0xb: + if ( subleaf >=3D ARRAY_SIZE(p->topo.raw) ) + return NULL; + + return &array_access_nospec(p->topo.raw, subleaf); + + case 0xd: + if ( !p->basic.xsave || subleaf >=3D ARRAY_SIZE(p->xstate.raw)= ) + return NULL; + + return &array_access_nospec(p->xstate.raw, subleaf); + } + + return &array_access_nospec(p->basic.raw, leaf); + + case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: + if ( (p->extd.max_leaf & 0xffff) >=3D ARRAY_SIZE(p->extd.raw) || + leaf > p->extd.max_leaf ) + return NULL; + + return &array_access_nospec(p->extd.raw, leaf & 0xffff); + } + + return NULL; +} + /* * Local variables: * mode: C --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921100; cv=pass; d=zohomail.com; s=zohoarc; b=AiZrrJrafwCMuf4Y75kOEgvXoTG+ee7/tAoCK2X2FWc8S/0+k2+JWv1I+5VwOQwO5/oWgyJwRV/xoB+/tPm0px83ZD12C/R7O8KwI122fEmnrNIrabJkLlhT3KQEJw+z7a5InpfCiRYZrLepz4D0OeH+PR10bvIxNtf+Deo1xiM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921100; 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=ThmNVYMmQ6VGfb+VH01B+FGJrydg+3CLS9eYmXTIbHE=; b=ec1Dg6dn4pgPn1J47xlEddLzcFmZsW3AVpWmJF+iIUQRyrQ2y01vlv0UXmLXZVgrygd+iEsXGxpRzjGCzyfiAOyf/Q8Vu7AfsdHCLZegO5nkfNU5/yDrWzV2AEPtnp1N8xK4/m/rM11bUDC/3COecZSMf3ZDiRKpPaC7HxLG8nM= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921100531683.2053740390651; Fri, 16 Jun 2023 06:11:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550171.859114 (Exim 4.92) (envelope-from ) id 1qA9EY-0002sP-Oa; Fri, 16 Jun 2023 13:11:22 +0000 Received: by outflank-mailman (output) from mailman id 550171.859114; Fri, 16 Jun 2023 13:11: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 1qA9EY-0002sE-Ll; Fri, 16 Jun 2023 13:11:22 +0000 Received: by outflank-mailman (input) for mailman id 550171; Fri, 16 Jun 2023 13:11: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 1qA9EX-0002qy-Ix for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:21 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 47633171-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:11:18 +0200 (CEST) Received: from mail-sn1nam02lp2044.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.44]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:16 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:13 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:13 +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: 47633171-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921078; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=R/FIEqQgNYgNNHOA/C/KiytTy24Bfn6/iDD9X38QBJ4=; b=dDNdNAEbVokybTFUq3Dx3T5mdPGrAHVV21YzhSil51cgfpCYkhNj2zV5 iVtd4/Vpu0WiLjZ2Zq8mvbf5SOJEaT8xHGyCG0lh/sw5DMEhpxy5dWDIP YHzGY8b8ms23vcB4fd4Qrpeqnx/YW37NI2xEPcnw/FdCKQI8bsewlA9pW s=; X-IronPort-RemoteIP: 104.47.57.44 X-IronPort-MID: 113085896 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:ee08zK84l69rD2RZT5E4DrUDtn+TJUtcMsCJ2f8bNWPcYEJGY0x3z DcWXT2AO/yNYmugfd9+atmw/E0DuJ/dnYdiSAtqqCE8E34SpcT7XtnIdU2Y0wF+jCHgZBk+s 5hBMImowOQcFCK0SsKFa+C5xZVE/fjUAOG6UKicYXoZqTZMEE8JkQhkl/MynrlmiN24BxLlk d7pqojUNUTNNwRcawr40Ird7ks31BjOkGlA5AdmO6kV5AW2e0Q9V/rzG4ngdxMUfaEMdgKKb 76r5K20+Grf4yAsBruN+losWhRXKlJ6FVHmZkt+A8BOsDAbzsAB+v9T2M4nQVVWk120c+VZk 72hg3ASpTABZcUgkMxFO/VR/roX0aduoNcrKlDn2SCfItGvn9IBDJyCAWlvVbD09NqbDklft vw6JRUiUSq7xP/vkK21afBMvu8KeZyD0IM34hmMzBn/JNN+G9X4ZfyP4tVVmjAtmspJAPDSI dIDbiZiZwjBZBsJPUoLDJU5n6GjgXyXnz9w8QrJ4/ZopTWMilAtuFTuGIO9ltiiX8Jak1zev mvb12/4HgsbJJqUzj/tHneE37aUxXOmCNNMfFG+3sZHskWwy2ZINBkbDXqCg/2FrBSlct0Kf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZebPQ2uclwQiYlv neLkMnuHidHq6CORDSW8bL8hTG4NDURLGQCTTQZVgZD6N7myLzflTrKR9dnVbWz19v8HGmqx yjQ9HRiwbIOkcQMyqO3u0jdhC6hrYTISQhz4RjLWmWi7UVyY4vNi5GU1GU3JM1odO6xJmRtd lBe8yRCxIji1a2wqRE= IronPort-HdrOrdr: A9a23:c8Yydq3Y9XGpZFbDVRaeXAqjBIgkLtp133Aq2lEZdPUzSKClfq GV88jzsCWetN9/Yh8dcLy7WZVoI0mslqKdkLNwAV7KZmCP0gaVxepZnOnfKlPbakrD398Y+a B8c7VvTP3cZGIK6/oSOTPIdurIFuP3lJyVuQ== X-Talos-CUID: =?us-ascii?q?9a23=3AaqdKSGsLklDha+yirW1Y2UIS6Is0MX3/wVL/HHW?= =?us-ascii?q?ASnswGKKbakawwIhNxp8=3D?= X-Talos-MUID: 9a23:jBmimQibAkru4YpQvJNk9MMpDOpa+4ejAhsxlZhemvCmMRBWYSy0g2Hi X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113085896" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k45Z3xPR1V0NbjFdP3XaIrwitZ3hx9n/oVLM2YZLwUFGO4XmKPbdfO3YO3SZQnyjXHftJD6wp1W4DZZ6jOdkFMrauG+3fPr17vfQ6AWhtBfQw4AgCqr7Z43MpoX+O7oIbD/tbvu8VUPxSA0Mx6OvagCZImQy7Zh2dbtw3+6LY6KE3dL1aNcZjZdMKhi8U7020Ir4g9gzOg60PqoMj0YdlExVQmWelquxo8srZXefyuXjiso1lbCzaC7kHg+EmHUIeSS1H3XoY6KoIXq3tXDJDzLe6wdJQzGC1o8EcAjArS+6O5ARJ5NODdQj6GzWt+8NMC78VydAnAdlj9J52abh8A== 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=ThmNVYMmQ6VGfb+VH01B+FGJrydg+3CLS9eYmXTIbHE=; b=GmTp73NW93WVCaR0XGym5cBBtSwJuRuAydf5DoHLP2RAfuRjvucYWObeDiaGMRPTlYgDQplnHnic5f5tTZrTsH8xQ4+GTQnCs7uQTuYsVPWgtTYt+H1uZ51HqhdPpruxz0RKxMp0wRxjAHppqpsf4n/S1Nj64IUyvTP+ErfnzZQsapA0mH15Dnd72o5MmVhoN8+9rOZD72DkzrHWdX+JV30WL2tCMn/mc3OgCSuwsyqwIxFO0nXtIaQVk9z2J8OlSFCxcuuug+kshobIe7HlsiySXOW5j75nfUev7hWjWUN5GSgMb8gY9S+pYLIY0ce5j8qlGF632vjREJecNGHnDA== 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=ThmNVYMmQ6VGfb+VH01B+FGJrydg+3CLS9eYmXTIbHE=; b=Ce5l+swfz2nQgqntYgYuH+oOGoPHGtXd3aArC/jDddjIZi1+J7xgTBxmzyDalkCv1pDX4oXfIZCb58eAAJ4W7TjtobAo+T8z73KRkOXTCRik+U4NUJkb7w0H+3lTAKD+wrpJ1tNhi0VuwvfY9ZEiO+JmZkpkmawcwMnXMpbSNxA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich Subject: [PATCH 03/13] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Date: Fri, 16 Jun 2023 15:10:09 +0200 Message-Id: <20230616131019.11476-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0139.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c4::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_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 41c1aae7-fcb8-40f6-d005-08db6e6b28d9 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: TAOJiPWoJjI7B61OAIHLkeMHXaJguimxC8kmlqypuaSCjjdoNpDH8tGaREbIRQRWN0ENvRcGpAlY7d1ALgONOtvc2rCmfLiF3PosXuRejBh4rcP0IpUbSIcVEmt/yKrEhQLYuoYI0C/GLy4sUFgOv1Nq7MP5g6JY+DK6eO4OQWKn5XVnBuCzdEr7sk7gKdwn1n5vCCTm5+u3Mz6//1SAdC1/03n/t9QujS8Q+1ucTZ8sQLk4wm3tWVeqXmt2yacIf+5Tx1qA45resHqXOvXb50FqZsEnBPCj0zZ0lBQhnUTYaqzeYn4icaXFxQQzC17LR1M8ra4eUfJPYKDLbcSJH6AKk1gbxxIbY1SJbIExxFQtr32rtBKw3Jwm5TD92s8pTtoAJftIdCTlaSyI8KCUA0DaNhIUe9m/At5fFhOb0ZeRvRV0pW4vtJurQ9dsqfKYw7kWK0QSRaQx2X56N+YGNMjpG1yATyjmrL3lGeEaMGE2cDNM04qByd+rZFyUvWbPGNztfhXlQVORfVVWG0U6XREzHO19f8a34ya/3Z6fAo2z0kncS1Qn1mpADuVJPmkh X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WWlIcURSM0tGSHluR3lObkRKdXd6UjR3M2ZlT2x5S0tWZXNTKzgwOWFrNHVK?= =?utf-8?B?Znl3MjV3U1JURTZ5Q2FKMEJuWjExNTZCQm9oNjArY1padDZFMm5IclNTQzZU?= =?utf-8?B?ZkVJL3BCK1U2ZGhGcHdzb3FTalhVOGE2Tlkyb01KMWJYWk9RSUFFNW1ZR09y?= =?utf-8?B?cHFGUW1nRGNXOG05TEUrZWdadlptRVZ3cWpsOGdZTmlWRW5DRW5vdDkyVlpD?= =?utf-8?B?YS9lanAweG9pL1UvUFZFU2VYb1paSWxHMjJJWWtHUHQ0eTJHc29YemRjajNW?= =?utf-8?B?K2UvOFpLSmhzNjhVU3RJSEpxQWJJRXhJQ2lPbW5kSnNjWlArdlVoRndFbDVI?= =?utf-8?B?cHgySld4dDVIWkdnNW9lNmVadm4yUjdHdVhNWGVHdlBlQzdRblpxbVFaVmxU?= =?utf-8?B?KzB3d3k5MlJoWEx5NDVsYzJieTkxZytldytSUGdML3Z0WHZjOE9UbUhvUmtF?= =?utf-8?B?TnJsNkg1VmhMZ2pMZFZlYTJwRWk0UE1YT0FjVGxmbWw2TWhjTHFHZ0ZBcUMr?= =?utf-8?B?bDV2dUNGczhNTHRRQ1o3bGFBcjYyMVN5SWU1UlVkREhjeFVjTjdHcUFmWTRn?= =?utf-8?B?cWhxRk9qUTY0ZlBqaVFOWXoxM0ZUQXV4NVZWNytaT085SzFCRitmL2M1a3VN?= =?utf-8?B?UDlFZ2d5RkpOSURPc2RJRk92TEwyTGlma1J3WEQzUFJueExwOUNBQkRoeEc1?= =?utf-8?B?eGxRTlhLZDVuMlRrakdKVUp0bmtmbzhlZ2Q2M2RWdzRCbWsxbXIvK0prQnJj?= =?utf-8?B?KzV0UytYdFJsUXhFWmMrZDNlT1djL1N0Mi9BUEFpS0tHNWs4UnZVdTlkL1JM?= =?utf-8?B?cnZsRUtxVUtVRVRmakFQMndSeDZLTTBEemlQT0ZzOGJyVXdDdEsySGdNYVdC?= =?utf-8?B?Mi81NGFiaTlrcncxam9zcW1mWkYxaFFuS0Rrb0FrS2VFeTBhNzFRanFQU0xq?= =?utf-8?B?TXAzUjJCeHFJZy92SnY4Q2gveFhkTENOQ0Zxd1lsRjIzSTcySFRoc0FMNEdT?= =?utf-8?B?M0ljcExXaTRmbG8wSEdOZ2QxeHA0R0Q3Y3VXNU5VOHdqakVLdjFzNDNtWmtv?= =?utf-8?B?QmVlNi9JMDcxK2JWZy9keEJrWHdhNTNaRHE4SU9uVVFNQ1VkRUlOUVYzMXJM?= =?utf-8?B?Y3VCRmplSzRlN3hJaUkxUlIwaDlBbDRmS1BpaUpWRDZ2TDRORWJuM0pMbXNM?= =?utf-8?B?Y2IrcHl3V2dvMEp6cS9UTVlVWnE4eEVxRWJKR2NIVUxDVnVrN283bWpBdWxk?= =?utf-8?B?TDR2M2YwcnhPQkRsWWZwMC96NWZEaGJHS1JXbC9mNWpiUmN3L1dpUEh2blBl?= =?utf-8?B?S0lWMzRLelVPeVJMUmZzdzVPb3c1VjJ1ZG9BbVBWMTlvZ2NEaUdZVlZlRkpz?= =?utf-8?B?UU9kWEZ3bVkwVzd0Vll5THZzdjY3TXI5aGJIZjgvOEZ3a05RN0dUOWU3alVu?= =?utf-8?B?aFlYVGZBaDc3TXN1QW5Yc0hoL3JNbHZsM1JNOWlOdEV5eDBPK042UE9kVTBI?= =?utf-8?B?UythZkJBR29RTDJJYUtqSU13bFYxOW51QVRYckozRjZ2T2VsRDdHcURMcjNs?= =?utf-8?B?OUtxRlV4VCt1VkdIa3pVVnJOb2hRaEZVV253MTR1eFd5MG1IVjRMYk9kMzRM?= =?utf-8?B?c203VTR1K1FMRCtPWVQ1MWlmSjFzeUM3RHpyMXRFYmxxNzRsbEsrTmF6YUxX?= =?utf-8?B?ZzlCd2ZMN2NiYUllcTYveXkvZDU2eWxha3I5TzF3bHRkTHB3ZlQ4amx2QmRZ?= =?utf-8?B?QUNrYldJRHNHS1pmYkJyZU01ZGdxREo3QTFyTTBsbVNiU0R0cis2dXU5eDF5?= =?utf-8?B?ckJ1WS9DaXg2Q1hRTXdKcU42Ym05V2FySjM4aU43MFovUDFQQWtDYWNGRDVi?= =?utf-8?B?ZHZCRm44S0EyMmpBQ05FYi9oK2Z6SXNtalhUQU10ZUxCazYrcmUwWHMzVnJ6?= =?utf-8?B?ZWVvdzdhMXNYYzJndTAvUUpSRHZLeVRFdVIzSVFvUjcxa1NSTVN0cmJKVWRy?= =?utf-8?B?aW5UZ290NXR3NGJZQmNXbFBWZzVlTzlrSjM4eFpjOGZRbUNNUWFJT1l5NmZU?= =?utf-8?B?U3RoWmFBQ1Z4UG45RDZaYWdrZEIyci8wLytMa3ViaUkxaEZkN2dPUVRTbWs2?= =?utf-8?Q?nrMYmqki7nUCGsVOe27+BIgBw?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 15jYTJIFWTF+nunWpGLtCdm6DznMZTpeVIRXGC0no0MRyi5rXnu5O0B1ZSEotimzoy5HLMEL3Y1xz6g1Koo2zhQOTYxBcRQfB9jYSOUuqIoVL9LEXqg3opoXG3ypPue2PPAIIfFKfSwQb1uF5rQ8/8lSzVWl+U04DSlgxP/5KorGQwObUR/VN3Z1NVPhGgxP31qCEyvat+rMd6fSVWmODTaW7UDc9k5FiPy+UybdGakRtfJiRvqUg3QGmlFzjWGPaiK8V/J5rCMbD3STtGDrDlvwRa23WVjFtJO62KAE1rJ4U+abFkAJdgAidkjzg2/usWA0/XoucG4y1m4zWCEpqOfD6plHgU3KpGhheWMd6ED4Rc5I3+g5yLmCGDcxsJu15EFtECp3woApPPB2vWvMtrtagGnRPz1uG1l7akvQdM8nheAK9lAX9gTGCv4DGpFxvrFC5k4eRvQcJltS37t/IE40CWsPstZTO/0jLJ5U91mjws8h0BrBourlhTyrjXA1zlrhAhpRRpZzOQXW4+MrI2wSN0tIXzoxDeR7R5jsmR95g3Kvm5WCB7l8Jdmc9OKhx6Rw5QxBOCWxQi93lMA5iAN5OYk7QCVxtF51wV3DOiUdWIudWOWm4jqyf2uvlu4/4JyLNa2hJ4/FtiCelNg7u1LgHT2QiePT8420U/D3g46a+qHhcLLoBxTl7SReMaAuJJoNn86tAaSQyPFTT34RtUUEEtaBbRDxy18qZhD3Ifh8bUiStRLDG5R85Cv067TsJvV5mYyFLUcztRYE7QhvsSalya1IYhLSZW0VieeZPpel6wzzBpHgSGx29XcVL5SV X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41c1aae7-fcb8-40f6-d005-08db6e6b28d9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:13.1907 (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: nXY6pgpL9+LFRHTeeaNheHPtIf8dL1N5yGvxX0kYovoxzH8xfOjWRhkNnb7hWwpFt7Dz01dlZ3Az40rqBWWapQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921101620100001 Introduce an interface that returns a specific leaf/subleaf from a cpu policy in xen_cpuid_leaf_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v6: - Add newline before return. Changes since v5: - Zero out parameter. Changes since v3: - Use x86_cpuid_get_leaf. Changes since v1: - Use find leaf. --- tools/include/xenguest.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index e01f494b772a..0a6fd9930627 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -807,6 +807,9 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cp= u_policy_t *policy, uint32_t nr); int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, const xen_msr_entry_t *msrs, uint32_t nr); +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out); =20 /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 67e0dc9b4ad2..630d0018529f 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -828,6 +828,32 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cp= u_policy_t *policy, return rc; } =20 +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out) +{ + const struct cpuid_leaf *tmp; + + *out =3D (xen_cpuid_leaf_t){}; + + tmp =3D x86_cpuid_get_leaf(&policy->policy, leaf, subleaf); + if ( !tmp ) + { + /* Unable to find a matching leaf. */ + errno =3D ENOENT; + return -1; + } + + out->leaf =3D leaf; + out->subleaf =3D subleaf; + out->a =3D tmp->a; + out->b =3D tmp->b; + out->c =3D tmp->c; + out->d =3D tmp->d; + + return 0; +} + bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest) { --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921104; cv=pass; d=zohomail.com; s=zohoarc; b=A2QjfVd7p+/yyDlmJp1Z+O+QW/QUy+ptRZm6H9tnX3PtBZKB5NU02UAKjCR9cTyTgDNAfuPg2d3AnaWxiX2bVwNqT/Pz9GD7H4GZFOzaTYShqvdAcJQaQ+pjxZJCk0qtLd0hCNnu4VJ02OZfYhM1NLq6EtBkavksxQDhdzK+BOA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921104; 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=ac5AClrtpFCusFXUZIqoP1b/u9m1+EtbcnCrqOyjr0M=; b=mIdYl5F8vIWlIRhmFaQzYAmu4ALS1YjkqP4HG3bXK6bDvdlnWHnl2NvvN5PBNGgpM4wnZWnHDSfcG6xr2h5tSgG0yQUOENjsbp+ogcUZr81/bm5YUbr2a6zH0/gAssEKjkKYb2xbhGLMFxQnlLnWLy79Se6C80VZGsv0UKIkgaA= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921104703795.9910831408995; Fri, 16 Jun 2023 06:11:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550172.859125 (Exim 4.92) (envelope-from ) id 1qA9Eb-0003BJ-3c; Fri, 16 Jun 2023 13:11:25 +0000 Received: by outflank-mailman (output) from mailman id 550172.859125; Fri, 16 Jun 2023 13:11:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9Ea-0003BA-Tn; Fri, 16 Jun 2023 13:11:24 +0000 Received: by outflank-mailman (input) for mailman id 550172; Fri, 16 Jun 2023 13:11:23 +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 1qA9EZ-0002qy-GL for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:23 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 4978018b-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:11:21 +0200 (CEST) Received: from mail-sn1nam02lp2044.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.44]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:20 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:18 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:18 +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: 4978018b-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921081; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=caRvDxyjTRnpGoU3owd5Gsf9GzyF5C4JPa0GfIQXU2U=; b=LzcWEAptuvwyaLDbpR/Alxrl7K1lLk1BBl+uOn+jLRHPlJijktWNrFcl k6+NqHdB1/Vojuum3etCh1piKjhCGDihc8rUqwUNNGO1pzxyBCnlKZe2U 01EWVkJIvzymW68MOJSYWUT9k0YPBvcv4zXee9OHoHi/Fc0+M8IyfsTAz c=; X-IronPort-RemoteIP: 104.47.57.44 X-IronPort-MID: 113085905 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:JL4B26LqReWdEkMtFE+R9pQlxSXFcZb7ZxGr2PjKsXjdYENSgTUOz DROCmyGaf3cZzfxe9h1PNi08B8CuZGDy4RqT1dlqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t ZV2hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpKrfrbwP9TlK6q4mhA4AVgPaojUGL2zBH5MrpOfcldEFOgKmVkNrbSb /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/ jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c5zG05g/ /8/NgozQTOJ1umq57+WS+lj05FLwMnDZOvzu1lG5BSBV7MdZ8mGRK/Ho9hFwD03m8ZCW+7EY NYUYiZuaxKGZABTPlAQC9Q1m+LAanvXKmUE7g7K4/dopTSPpOBy+OGF3N79YNuFSN8Thk+Fj mnH4374ElcRM9n3JT+tqyv33r+SzHumMG4UPJOYqLlAmV+4/zMsFCIEanabpd/j1VHrDrqzL GRRoELCt5Ma5EGtC9XwQRC8iHqFpQIHHcpdFfUg7wOAwbaS5ByWbkAGRDNcbN0ttOctWCcnk FSOmrvBGjhHoLCTD3WH+d+pQSiaPCEUKSoZY3YCRA5dud37+tlv0lTIU8ppF7OzgpvtAzbsz juWrS84wbIOkcoM0Kb99lfC696xmqX0oscOzl2/dgqYAslRPeZJu6TABYDn0Mt9 IronPort-HdrOrdr: A9a23:tluO1K5hSY1mSQekNAPXwVyBI+orL9Y04lQ7vn2ZFiY5TiXIra qTdaogviMc0AxhIE3Jmbi7WJVoMkmsjqKdgLNhdItKMzOW3FdAQLsN0WKm+UyYJ8SczJ8U6U 4DSdkYNDSYNzET4anHCUuDYrAdKbK8gcOVbJLlvhJQpHZRGsNdBmlCazqzIwlTfk1rFJA5HJ 2T6o5svDy7Y0kaacy9Gz0sQ/XDj8ejruOtXTc2QzocrCWehzKh77D3VzKC2A0Fbj9JybA+tU DYjg3C4Lm5uf3T8G6Q64aT1eUbpDLS8KoMOCW+sLlVFtwqsHfpWG1VYczMgNnympDt1L9lqq iPn/5qBbUI15qYRBDJnfKq4Xiq7N9m0Q6f9XaIxXTkusD3XzQ8Fo5Igp9YaALQ7w46sMh7y7 8j5RPsi3N7N2KzoM3G3am8azh60k6v5XYym+8aiHJSFYMYdb9KtIQauEdYCo0JEi724J0uVL AGNrCr2N9GNVeBK3zJtGhmx9KhGnw1AxedW0AH/siYySJfknx1x1YRgMYfgnAD/pQgTIQs3Z WyDo140LVVCsMGZ6N0A+kMBcOxF2zWWBrJdHmfJFz2fZt3SE4la6SHkIndyNvaCaDglqFC56 gpeGkoy1IPRw== X-Talos-CUID: 9a23:cQy8/G/Qls05LFq5uCaVv0oONe4vcVrD9kn/AEXpAnpORZCUSVDFrQ== X-Talos-MUID: 9a23:c4qGqAtuDdIp1/3nI82nqhE8c+1x4Y+XV38Rroc5lumAE3YvJGLI X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113085905" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FfS50OwOsfVN15ndc3wfgpZgNxrhlVyYuApV0nwO/aSl664mkKfH5Tm9+HQAFTGXsZKcye5Mn+MiNgxvrXHJadOrVsPPb039sgZ/RI7H3Ayc0+I+fdmSQfXL66IeKhEgvv/RIY6uezTfiBT09v3XESsV0L7sfeccdsc4Jl/AvDfJ+RCOFGFSFEWxbl8thNPkactf9yGYgPZPFVOqNOc3JmRYcU6EcyBt/lpLXesFqz6jO4QExpxt6VjA3DnquXlO1SbpxxPd/BgQUatLx2+0sPd07xxjFcTZ/xi1BhMCMJsmnNMsof3DGx3BxmVkKiKe32xqh4lM2BNaq90ZOyt92Q== 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=ac5AClrtpFCusFXUZIqoP1b/u9m1+EtbcnCrqOyjr0M=; b=AKzvTEZbgV28A/m647AxVkD6+PZQXdmvCTN/pTHhJpkFtr+jYfv60a06lCq6aLOVSgriQaynpLcZVOEPj5nJOQFENooLi+eEO9KccBK080bLQ2PZfBb0kYj88mvArx7TYl3mMAHHqo0CjuPB/RvjsZr2IYJarlLEReqPBhDdhzfvr77DR8rU0OeKF4jZnuvXVod6Ptk/02JYICW/1l2eLcrzL8LOs2DdCfqJydaHE1p5pNw0Pk6QA93IvgxCZUlryxUlaJwljByPr6T6MbabbgRvM1dNSnJdrq4Q7tA9dHxofbk19MASJyHPncsNc9Jrt/ZobQ0YWZLZPp5e9JwLPQ== 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=ac5AClrtpFCusFXUZIqoP1b/u9m1+EtbcnCrqOyjr0M=; b=azvp6vqemXWJ3hlgxFNuMtzUZWE6mc1y4afdEnMC0l7WYYSwbmx3DG4UilTQMu1iOQ/K6Zh8dvTSHQRIQLOlmVykJ+om5U7E58eqeeKMQgYfZLiJZ+2SYjgSKKmN78TqXDgsMQ7GYIQCSfBoj/LPtIIhJ/noR600IHFFYmFHSf0= 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 , Jan Beulich , Andrew Cooper , Wei Liu , Anthony PERARD Subject: [PATCH 04/13] libx86: introduce helper to fetch msr entry Date: Fri, 16 Jun 2023 15:10:10 +0200 Message-Id: <20230616131019.11476-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0102.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:139::17) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 1f4acfea-9356-4b93-cdbd-08db6e6b2bee 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: ZbVM+DXjxdXVnPJ+8JhspgkYra+F+UNEgkm0NMP3nt48h8ypryYtybl2jy9ddMZYoLpjpeYQ2hxH+lHtebsNscdxJOcV7/xT0pitsv8sl0WaBRelktqoZMCDIooV1prbpryRkdEpbvEg0XcQMZyDKDszulpfHN2U/ORDb5ietSnRg3D7zebZsBXUhR78sYrAuefS0nFA63LgdyDfJdqQ2V9t+DXHmswM6s0cfESX+B3YdEc56+Vll7iNLF81pZhSQQSzkRG0vE+IJUPxdPKSRWGK8U0TSUB21SSIIWzrhD4vSOceRuCPIDoX4TkaiCz3tidXXsCy1aFIgEVp7dDZZOB7dz0WLPtD6TcSxMKFpQzvvctjj6Zm5oxTY/T4HfzfRwu5JoSjIfH9BEn85714eSgXtVFEFQs7WDadk1yYDXMDKAxAOzT95hR1DToejtgBj+NmY3yS/zpgGkog0FVXTAr1EGg9hg4cEorIbnyZrmQGYIPz92rF8gB7IYjPaJhs7LC+TZJZzg0z7kCjgukSrP3viN9EL2FnG16ww/Vz2CWzywr9uwc59hmDTaJmCkT4hJvSy55cRLcsq4s6rNnNJOgKHhj2/YTOTXQSFJDTPUdigGyKkwyKJa+pKFqHk1lt X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(66899021)(186003)(36756003)(478600001)(107886003)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dDk2eVhWY29mUkIyZUxkVlFEN0kyUnVBTVdXRmQ4UWRrelBvcVpMbk5NMlVu?= =?utf-8?B?VGg3Z01nVVJiMWhPcXQ0bFg4M0R1NU5xQ2VlSkt3c01UQzM4YVdIZmV2T0o0?= =?utf-8?B?UnVQZjJHOU02VWRDMjkzL2FiMnNSOUVVSGFleFBqMEw1Mm1LS3NveFdVeXRE?= =?utf-8?B?VnllZ1J1U1R6Vmo0djFXVE8xWUV3ZGhONVZGb2JZYjUvTW5Hb0ZON0V1WC83?= =?utf-8?B?OEFwVWMyQUZJbG0yT0dGMkFEbHcvRmpnWERERzVJc1ZKTnZFWmNIVHo2VUpz?= =?utf-8?B?R1dHdDdrenFuL0MxMUlUUXZyaWpXaUEyT2hJTFJDMDZzNWFpM0JiNW1PS09w?= =?utf-8?B?dXBqZUVGUGpQYVg4YmExb0poeVhhcUM3cS8rUGRPRzErWXIwTUZnUVNzdVNq?= =?utf-8?B?UTdBUmlpdWx2L1hFVU10L2Jka2NwYXRwYlFrTHZKRlRzN2RqTDBKVVErWWd6?= =?utf-8?B?YnZVMUYraU12WnRyaWpwL0ZQU0NPSUJrSGRMVzYzdFcxc2REQWZHdDFnTXJE?= =?utf-8?B?cnExcmduTE1MOW1qQXBXMU1zdFlzNHJCdTBYMk5PZU9rMjUrUWY0c3R1Z2Nx?= =?utf-8?B?cDV6c1J2NjdEckhxZUpvaE1tOHB6Ty9KemZwRWNiVW1SVFN0NnN5aVRtdnFT?= =?utf-8?B?czFuTnZuZ3VrUVBXK0RuQjJIWTNiWlpNVlpCODhPT0lhZUFxZ0E1aS9sVGZo?= =?utf-8?B?QmE5d3VXdnFLa2VXTDM2QWRzdE9yOW02enpKRnltc0tRL1NMRU96a2ZIQXpp?= =?utf-8?B?V2hQZmkrTUxkRU1aUkgxb1dvcTF0RnNibTdrY1hhTmhieTVpV1g2N1AxWmtO?= =?utf-8?B?OHA3UWxSOFJWRGlpOEZYRVpRTW40SDhXOC9vOXg0UWpwWHZnQ0R0L1pJTHh2?= =?utf-8?B?VkRZOG5EQTA4VnBNRm8zTjM5VkpiUkpiY00raGpHdGpmRUNzOEJRUTBaVGQw?= =?utf-8?B?dHNZOHR0NFdmVHJwU1BqZ1FENXBXUHNVc016a1dLQ2d4YzU1K2hYYURJcnVp?= =?utf-8?B?Qi9mSS9RY3hqcE9jbTFoNk4xcDh6R3hudFdXWC9NS3RkUTVjdkcvNXdKeGdP?= =?utf-8?B?VVR2TW82MlgvV0ZwMzRhak53NzNqekdnQjRHbmhsN2JKODlJL2NtQjlFeUsv?= =?utf-8?B?QUNxM0craUlBckhFVXVyOWp6ak9Vc1N6b21xTEx6UmFnVjJsbVdVYVdTTXo0?= =?utf-8?B?RWIvSlpyck43VjVjY1JFcWNTenFJWDBEaEpqeFlmcUdieng5aEdjMWdnQ0l3?= =?utf-8?B?OGVGaHlXVXB0RS9vMGZRMXZrbnROVEpNRG9pVloySElkUTZjT3BqVFRwQ3U4?= =?utf-8?B?Z1dITDk5RmxILzdZNExDdGVUc1NQM3p0UVZha1JDK0JqVm9RUjVjd3VQSXoz?= =?utf-8?B?QWdadHVKZGJTNWphd2NpdzhxMkIrdFFuUXVadGNNQVFFZWhrL29DL1RHV1BN?= =?utf-8?B?QVc2ZGUwa0JIWHJheUd4UlJTUlpMd0pSL1MrSTZ1SlpnalFBQ0hKcHpSajZP?= =?utf-8?B?ZEQzb1dyeG1NRWFQcjR6WEVzRm9SOWxhREljSEhIMkxpQ1N5QUhEOHBVbllq?= =?utf-8?B?RmUvUUtsY2V2YUxoUG5FeGQ0dDJycXY1VDg0YzQyUnhyWUpWN2JmVnRwaDg5?= =?utf-8?B?bC9CbzQzVXlvTkwvcUFIYWtpa25rN2gwMGxvZVVNUEZzdUVaWERORG1RWm4w?= =?utf-8?B?VXBkd2JvWkczVHVEMWJybUFBRlEvcnE4QWlpbXZVRzl5T2VNYjZRZlpTQzRr?= =?utf-8?B?QU9ySGliUm9wSlkvbGJscXlsQkFNeWprYXRyK3JTSk5PWnhkRU55Z2N6NDlU?= =?utf-8?B?dzM5QmMyYW9jRklIeHkwTUkyRUZFbnVOZUQ5Z3h5Nm5wNGloc0xuaDVLeFFv?= =?utf-8?B?SW9hSnYvLzF6a0oxekY0Ti9YRDQ5SWpsTExFOXdJVWNUV2lmSjdhcGNzK3J1?= =?utf-8?B?MUcwOW1pRmpleWhlRkJFSnhXZnYwSVR1bytOcHpvYjRLOXJoUjNFZ1lSV0lX?= =?utf-8?B?Z0xoak5WakUvSjlDVzFKSVBwOEJUTkRRTjVyd2FnK2krenk5WDdCaXFZeDVu?= =?utf-8?B?eDNEUXJ2VmUwR0UxeVRXQTVRRGJLUk01UTgvTldFTEVNOVdiYXlOMG04N0lQ?= =?utf-8?B?endPa0xXZ1ZodnBZWjZOditLTzhNODhNTVB5a05qSzRSNm85ZCtxN2h3YUgw?= =?utf-8?B?WGc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: o6P9uSlgZ32POVtBR8VdyEm7b0AZOcfMJxOWLTm4ayH18g23hXTxsb5y/QLLNJdFS3WIHHTO/kp4jLyooDZ+y6bbFAL1OD4wU0T/6SgJAocgLujY9DWLyOZsjdhUDxSwtJ5HA7Wb4SUmWBSY28cuPxdibsGi+Lpr7h5cVzTmkVmfOhH8+w1bxn0QPgUJTjgJHRQMzpBF4MB0mv4O8dFvpMMmQkXMvSaUB3y56LoNVtLyG9BnAjasDeBE2NIlsivDS7IURmj3EOrovTDACWu737iTVXZRcaEHFAerhpD4BoVyKx+P2DpR9BhIp7/JbS1qqPPxXBVQkaDXKn/CfFlNbql2x8ckMWJ37JLuXAfwBXuCCbhRCfLvcRui5URttQRBu3sLP8pdoeLr39JGUqFB0hapmA03HFhotvsBEBSOQA4Xff8uI66EPilWSbI7oHWB7bJKFpuGKLsf7ajawWCgvLZZtDPwEPH28w7pdO4Quhusz/q3hcYuqer3MEGeC8qm7gjwQ78a9xK/Dr2weJRg6hF/lYSuXDXR1t1d1NW3s3PWtHJCvaM+qUDOV+LUm/iqOBy4Hg/NOnE3i8NZULmXbe7cePTHVVxYwqmX0SjyBFT6G3TRAqU4XoWgILWenMRrVPp3TNie0yqMtNyJRrDRbIsSm35wx6ho10zbPqk0dIC3PCrpBiY2CUincvA1oL+5tNj5EPHW7bzQVpjsPjv+RsqYdsEguPDOsosK94xqxdzgcs8k/qV5wVpSnSSvl6FvYUeL8lf1dmdPapU1PVDPxHNYXMjTjo6Vmfl9META4eQbAhhELMZx2Ohede3Ahq24 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4acfea-9356-4b93-cdbd-08db6e6b2bee X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:18.3008 (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: QzhsfdRT8FSeanrH7MwIqdqVB+kCTvzYmCOYaAY1Hc/27i/V4khu5UIlAGPtr7/u0ytb0b+brvwafnQzt/IB/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921106225100001 Use such helper in order to replace the code in x86_msr_copy_from_buffer. Note the introduced helper should not be directly called and instead x86_msr_get_entry should be used that will properly deal with const and non-const inputs. Note this requires making the raw fields uint64_t so that it can accommodate the maximum size of MSRs values, and in turn removing the truncation tests. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v4: - Rename _x86_msr_get_entry to x86_msr_get_entry_const. - Add newline before endif. Changes since v3: - New in this version. --- tools/tests/cpu-policy/test-cpu-policy.c | 43 +++++++++++++++++++++--- xen/include/xen/lib/x86/cpu-policy.h | 18 +++++++++- xen/lib/x86/msr.c | 41 +++++++++++----------- 3 files changed, 75 insertions(+), 27 deletions(-) diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-pol= icy/test-cpu-policy.c index a11c8f067aad..2ce6ee96f91f 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -387,11 +387,6 @@ static void test_msr_deserialise_failure(void) .msr =3D { .idx =3D 0xce, .flags =3D 1 }, .rc =3D -EINVAL, }, - { - .name =3D "truncated val", - .msr =3D { .idx =3D 0xce, .val =3D ~0ull }, - .rc =3D -EOVERFLOW, - }, }; =20 printf("Testing MSR deserialise failure:\n"); @@ -740,6 +735,43 @@ static void test_cpuid_get_leaf(void) } } =20 +static void test_msr_get_entry(void) +{ + static const struct test { + const char *name; + unsigned int idx; + bool success; + } tests[] =3D { + { + .name =3D "bad msr index", + .idx =3D -1, + }, + { + .name =3D "good msr index", + .idx =3D 0xce, + .success =3D true, + }, + }; + const struct cpu_policy pc =3D { }; + const uint64_t *ec; + struct cpu_policy p =3D { }; + uint64_t *e; + + /* Constness build test. */ + ec =3D x86_msr_get_entry(&pc, 0); + e =3D x86_msr_get_entry(&p, 0); + + printf("Testing MSR get leaf:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + + if ( !!x86_msr_get_entry(&pc, t->idx) !=3D t->success ) + fail(" Test %s failed\n", t->name); + } +} + static void test_is_compatible_success(void) { static struct test { @@ -840,6 +872,7 @@ int main(int argc, char **argv) =20 test_msr_serialise_success(); test_msr_deserialise_failure(); + test_msr_get_entry(); =20 test_is_compatible_success(); test_is_compatible_failure(); diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86= /cpu-policy.h index 3fcc02c729db..877879fc8c16 100644 --- a/xen/include/xen/lib/x86/cpu-policy.h +++ b/xen/include/xen/lib/x86/cpu-policy.h @@ -337,7 +337,7 @@ struct cpu_policy * is dependent on real hardware support. */ union { - uint32_t raw; + uint64_t raw; struct { uint32_t :31; bool cpuid_faulting:1; @@ -559,6 +559,22 @@ const struct cpuid_leaf *x86_cpuid_get_leaf_const(cons= t struct cpu_policy *p, #define x86_cpuid_get_leaf(p, l, s) \ ((__typeof__(&(p)->basic.raw[0]))x86_cpuid_get_leaf_const(p, l, s)) =20 +/** + * Get a MSR entry from a policy object. + * + * @param policy The msr_policy object. + * @param idx The index. + * @returns a pointer to the requested leaf or NULL in case of error. + * + * Do not call this function directly and instead use x86_msr_get_entry th= at + * will deal with both const and non-const policies returning a pointer wi= th + * constness matching that of the input. + */ +const uint64_t *x86_msr_get_entry_const(const struct cpu_policy *p, + uint32_t idx); +#define x86_msr_get_entry(p, i) \ + ((__typeof__(&(p)->platform_info.raw))x86_msr_get_entry_const(p, i)) + #endif /* !XEN_LIB_X86_POLICIES_H */ =20 /* diff --git a/xen/lib/x86/msr.c b/xen/lib/x86/msr.c index e04b9ca01302..25f6e8e0be92 100644 --- a/xen/lib/x86/msr.c +++ b/xen/lib/x86/msr.c @@ -74,6 +74,8 @@ int x86_msr_copy_from_buffer(struct cpu_policy *p, =20 for ( i =3D 0; i < nr_entries; i++ ) { + uint64_t *val; + if ( copy_from_buffer_offset(&data, msrs, i, 1) ) return -EFAULT; =20 @@ -83,31 +85,13 @@ int x86_msr_copy_from_buffer(struct cpu_policy *p, goto err; } =20 - switch ( data.idx ) + val =3D x86_msr_get_entry(p, data.idx); + if ( !val ) { - /* - * Assign data.val to p->field, checking for truncation if the - * backing storage for field is smaller than uint64_t - */ -#define ASSIGN(field) \ -({ \ - if ( (typeof(p->field))data.val !=3D data.val ) \ - { \ - rc =3D -EOVERFLOW; \ - goto err; \ - } \ - p->field =3D data.val; \ -}) - - case MSR_INTEL_PLATFORM_INFO: ASSIGN(platform_info.raw); break; - case MSR_ARCH_CAPABILITIES: ASSIGN(arch_caps.raw); break; - -#undef ASSIGN - - default: rc =3D -ERANGE; goto err; } + *val =3D data.val; } =20 return 0; @@ -119,6 +103,21 @@ int x86_msr_copy_from_buffer(struct cpu_policy *p, return rc; } =20 +const uint64_t *x86_msr_get_entry_const(const struct cpu_policy *p, + uint32_t idx) +{ + switch ( idx ) + { + case MSR_INTEL_PLATFORM_INFO: + return &p->platform_info.raw; + + case MSR_ARCH_CAPABILITIES: + return &p->arch_caps.raw; + } + + return NULL; +} + /* * Local variables: * mode: C --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921109; cv=pass; d=zohomail.com; s=zohoarc; b=SbzChGTUJ8AkY7RkBg2XIhHSADRUZ6HXNpd1hIw6c6eEuUMCwe/ZKXQaeHcfLsmsRnS5gZqlR6vmJR2YmXFyUgtqlpheXZxQsYbRmWLOC3f8zVIiLtl8HKSCCUYN/uINpsiOdrQxZ0YTi2UH/xcYqx23Sn0j/oQ3/IGGJBEQ7fs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921109; 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=qWrUG40xYuI686NvKvmyZ+nsvRDiKbBAZHC1yketgNo=; b=YPYLX3dh03oqS+L8gqkn9H4rc5vAuu8L9T8kLG0G+R1Yj93HZS5+vDWrPKHWQOO30a79bI7ZUJ5omAyjFdSLjGd+zjQFGm+4mchQsNgJmioKf02D/CGScNocisdwRrZyNQURb+eMWifr4vR9rzI5AFCvRMBCaV9nMyfbLaCLzKo= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921109665721.7748958528972; Fri, 16 Jun 2023 06:11:49 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550176.859135 (Exim 4.92) (envelope-from ) id 1qA9Eh-0003jF-J5; Fri, 16 Jun 2023 13:11:31 +0000 Received: by outflank-mailman (output) from mailman id 550176.859135; Fri, 16 Jun 2023 13:11:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9Eh-0003j2-DO; Fri, 16 Jun 2023 13:11:31 +0000 Received: by outflank-mailman (input) for mailman id 550176; Fri, 16 Jun 2023 13:11:30 +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 1qA9Eg-0002qy-QI for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:30 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 4da7919f-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:11:28 +0200 (CEST) Received: from mail-sn1nam02lp2044.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.44]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:27 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:25 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:25 +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: 4da7919f-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921088; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=hBwvY3lfHoNM8Xj1tdtM0Io/t3NQd40npWjmDL1Q44A=; b=VU4sjFCZWcNEIbHXCJMVGjhj9u9D2vFD7OxQ3Y8+Ieu45V3CUkpaB3fg Hkqf84kGtV5wU01IYjNbPZ7M8j+i2kK6D+q9B7yhfn5NmPWWHvPnQlEDe erRSKAX5wgcdMyJkAVNrIO5cBeMTMblhPnZgWWQaZliST/pcdva5y9NFo k=; X-IronPort-RemoteIP: 104.47.57.44 X-IronPort-MID: 113085923 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:l1REhKPdrd4hs2/vrR2TlsFynXyQoLVcMsEvi/4bfWQNrUomgTFWz zMZXWuHP6rYajH1et8iYInn/EoO68eBz4U2Swto+SlhQUwRpJueD7x1DKtS0wC6dZSfER09v 63yTvGacajYm1eF/k/F3oDJ9CU6jufQAOKnUoYoAwgpLSd8UiAtlBl/rOAwh49skLCRDhiE/ Nj/uKUzAnf8s9JPGjxSs/rrRC9H5qyo42tG5wJmP5ingXeF/5UrJMNHTU2OByOQrrl8RoaSW +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDW4pZkc/HKbitq/0Te5p0TJvsEAXq7vh3S9zxHJ HehgrTrIeshFvWkdO3wyHC0GQkmVUFN0OevzXRSLaV/ZqAJGpfh66wGMa04AWEX0uBdImcV6 aIXFDBXahDfh+WW+ojnTNA506zPLOGzVG8ekldJ6GmDSM0AGNXESaiM4sJE1jAtgMwIBezZe 8cSdTtoalLHfgFLPVAUTpk5mY9EhFGmK2Ee9A3T+PVxvzS7IA9ZidABNPLPfdOHX4NNl1uwr WPa5WXpRBodMbRzzBLcqyn01rKex3iTtIQ6LKK2qr00nkavxjJNOjsLdwPhjPm1lRvrMz5YA wlOksY0loAi+UruQtTjUhmQpH+fogVaS9dWC/c96gyG1uzT+QnxLncAZi5MbpohrsBebT4lz FiShPvyGCdi9raSTBq19L2ZsDezMig9NnIZaGkPSg5t3jX4iIQ6jxaKVdA6Fqew1ofxAWuon 2zMqzUijbIOi8JNz7+84V3MnzOroN7OUxIx4QLUGGmi62uVebKYWmBh0nCDhd4oEWpTZgDpU KQs8yRG0N0zMA== IronPort-HdrOrdr: A9a23:3Oo2F60cvoC7UuEO7/WzgwqjBH8kLtp133Aq2lEZdPU0SKalfq eV7ZEmPH7P+VQssR4b9exoVJPufZq+z+8X3WByB9aftWDd0QPEEGgL1+DfKlbbexEWmNQy6U 9hGZIOcuEZDzJB/LvHCArTKadd/DGemprY4ds3Vx1WPHlXg6cL1XYfNi+rVndYaSNhHpQDGJ +V9qN81kGdkSR+VLXcOpEdNdKz3uH2qA== X-Talos-CUID: =?us-ascii?q?9a23=3A1EMdU2jXD9u84jXtak24w995HDJudFf+yizMfUC?= =?us-ascii?q?ECTxtSOGVTn+qwv9iqp87?= X-Talos-MUID: =?us-ascii?q?9a23=3An5dYJA+ohtNJRhm23+V0LTyQf/937fjtVl4WrZV?= =?us-ascii?q?Y5fuiKA4oYRqdgCviFw=3D=3D?= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113085923" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Du6eygVEPkomcX7RCGWs0Im63Fnm/4qWoHUv1T10ZCXPvRqPG3k21SQHZfgiSHngggaTyMsgbuGrgisruwvrH8ZM+tCph6FGUdTiaT5DBTb0sdrwFJlSM4pqtYarK0b7EgmHGQvExRsgITltwa3RmdqRqsGng76TI7k1aShB1oHjdtHYNNImV5C92Grh/6tyj1NzEoImVL70XFW9kYvoOSfbkJkpN067DdHk9Pwp0z0qcITjfFhXVTosbQNPXzTa4dh+iCO6QjbxCtd8n3B93KeBm7pjoLx8Ty6Bx3iLFl+71arZbrl+4sMpg1JeRopP3Gs8sAZYPM+Cy6t1okNlMg== 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=qWrUG40xYuI686NvKvmyZ+nsvRDiKbBAZHC1yketgNo=; b=Qmqc1MPAH9aiKt/CgZTnybP6L7ziTyPAQbWVPiBGx5UtaynzW4xYPgg70FEZb2lraKNqm2xjMCga0MSz/Tx4vrxlQ0eOrPY5n0BSfMaeLyhKdTnql0m4iCrAbcDq64OivVNy1nEqdXSaabl/IPP5Ao1c/JN/YFoocsmTLWpGrBcBafczY9S8lgnWRCTdqH9Z0GSqep19aaCy2pkdo3NjYliAUE7Maclvb85DtuGc3mKMKOPIF5g6oZXUcui2nJECELzw9ewdC1vaEHEDjcqjMQn9TAcwCnACgM8CpGHTAyPzEJzcwICbq4xEnvGeZQgiLY5gQ3pQr4ctad3/2pKt7Q== 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=qWrUG40xYuI686NvKvmyZ+nsvRDiKbBAZHC1yketgNo=; b=PG/pfOIU7tjMTbfQx5ux65+hrmh3iYRQ5sB3Sfz7/lovZtI13nhr6TqPLbWfw7Yum81InecTn/QXT7fOJnaTvwR0PC7zGzEC8gagjPIT9X5gbv9SZkdHMcna8F1jyZv4nMHtMpEW0pWe6L5w8dVqV6jDstn2IdbMPJbImkRVjOE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com; From: Roger Pau Monne To: xen-devel@lists.xenproject.org Cc: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich Subject: [PATCH 05/13] libs/guest: allow fetching a specific MSR entry from a cpu policy Date: Fri, 16 Jun 2023 15:10:11 +0200 Message-Id: <20230616131019.11476-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LNXP265CA0049.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5d::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_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 2b730fe6-8e3c-4b69-bd64-08db6e6b3067 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: 2ksVjEoXiLuz9GJoaEbkjsFgmtDKUHyLPwKj54hCqxv0mYK5MwammpwKqU2V53O72UgJ/y1Ycc1nrqna5y816EWtxEoUtKaR5SPcl4yBFnNYzOMSfkstls8QywtMPy3UgGpn+JhHySr8yccWSec+b8FvacZP/M7gOXAF3Cgy2c0IJFHd1n6fAfrNKefQK9DOqC1GfaB2fkJQatzLqbXeK5VvqAC0Y3Qh9Rl4pl1Nmp1IQ6vDSC3IpG3y4nehmuxlXK08HytxEeeLc79fka6nn4OtGdtWQX/io1rh48QBPE0sIkIOkEdcw/NI04RcLvwWv4UjeBfWCOFvxIHGId1pVrrF4aiT61EPdY15a3d3eHLlpqAQWoV4F/1dSzkDYwhfS3qptLiBGwbelzXb1gl5b9dzJn+SPMBNL1s8Ys5UnBI7It3bHajgskY2mNekH0uYm9/uE7HQWj7Af8ZypdzuQZYDXUY1+UUHxthTj+69De7P6JQgHnCSXYI5qZIw7R3T2oKym8ZHOsp4BceSuHYmmGFrY15C6Zvy5XYj7QClpkOeaJ32gUVp+6I+3rqb//Jq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZGhScnFObmFUbmRZVlJObjNnTTVDTFdWOU5HaisxZ2R4ZjY1RnNMY2pJUmVr?= =?utf-8?B?OXA4VENvM21EWVdBalcySk1yQjUzb3F4TitwazFic0M0VDhTS2gvQU5VNlJ1?= =?utf-8?B?anRrdllOdnMzUDN4YURLaGcva3JrM2g3T0FzTStJejFpd016a3kxTE5wa2d5?= =?utf-8?B?WmZWa29nM092RTJpeTBLY3lVdk9FTStKejI3UE9PUFNsWWtLSEdVNnJCci9C?= =?utf-8?B?Qy96RlM1dlh0c1NvRzJnQWRlbHBoL1ErY2Z0T3g0bUxqNHduZ1h0UWJRWWtI?= =?utf-8?B?RjVKUFFTZ2tYYTBFRnh1cVptUVFxZGNsc1REQkVXWTkzcGRpTmVkMVhJcHpm?= =?utf-8?B?YzBsSHpIRU1BTXNtNzFuOEZuWkp3Y1pRdDZzb0JGdkJkR1JSZ1B1bzF3Z1JI?= =?utf-8?B?MjJKSEZ0NXowZ1RIUEsyREtlb0lNM2pZbE5VSE0yNnhGTWxFWGYwM0NlMkUx?= =?utf-8?B?Zk01ei9sb1ZtRUtkMUJpckphaXVndHdLczVIUlJoekFJcm0vTWxLOGw2MW9z?= =?utf-8?B?N3F2YU8yWTF5Vk9YSmxJZDl3amUwTEQ0WkZuYmppMHNtbUlHZWtVOWdTVWxO?= =?utf-8?B?QzUrZmFmS0d5M2RMOVp3NVRSYmd3Q2MxRElTMFhpVStIcXhkbS9aTGJJT1JV?= =?utf-8?B?RVgrMitUa2pwcUZvQThMMldLNnYvZ3RiQS9kMlY5VXFSTmZNeG1rSzR0WDNz?= =?utf-8?B?eDR5alVta2diL0VlSXdEUjhyeFJWOWttMS9WaGttZUhiQk12d1ZBcUNUOVZp?= =?utf-8?B?Rkt2Q0JxZDArdjR5VU1wWGw5dTlZaVYwb0pLTnF5dEl2SzEvdlVVRHhFS2JE?= =?utf-8?B?SnVac3NpcGJBdk9mOFJCU1czM2J6WU4vQXdNUFdFYnFXa2p3T3lKWnNvQlFy?= =?utf-8?B?SmFMeVNpOENQQ3p0b2EvL09oa2FGUEtZa1N6bzIzYkRLNU1odGN5N08yMTVq?= =?utf-8?B?M2NXdTR2cWw5UDJpeXpibW04K1ltK1g2cHRlRjJPays1OVVTOXNUQllHazdZ?= =?utf-8?B?cWgxTEtMUTRUK0Fjak53WmlsV1ZwbXRmWjBoUmRSczRMOHpVaW4za1dLaE8z?= =?utf-8?B?bTlqeE9EOTBSL2h3QVY1ZllscWR6UmZIMlJ6TkQ5TDhUaDI0cDEybFZIWG1O?= =?utf-8?B?VVhvRmR5K2JPNjAzeWl2bUtJa3Q3OVA2bklRNnFxZU02UGRyUTcwSEw4eTZi?= =?utf-8?B?N0RYa1NUb3ZwcHNDN21sZmJObWVWREFHSUZjamw4dElXRjQ2TVJqZHVYSjYr?= =?utf-8?B?TVVRSk1Lc09UbjBZN0Z4Yjd3NnA0Q05MTnBxbmx3Zk8vVmczTkNxZ0daV1cr?= =?utf-8?B?K3d2TDhQRXlYY0pETndTaGdRcnhxTzltUFpla3JyL0VQenpDMzVVanp1ZFJa?= =?utf-8?B?Q1IrR2gzcER0QnBLaitPRGoyUkJJSDErdWkvazJTY29xdkcwM3p4ODBrYVhx?= =?utf-8?B?NTFnUURtREI0R1dVQngvclQwODQ1ZmhQV1lYekZJT3BPNUJKZlc4dDZlbUhE?= =?utf-8?B?MVhIQjZTTTZFYXVyRm5ZbHVFdnhnUWZMS2dLUUFTSUtQSXV2Mlk5RXY1L1Vu?= =?utf-8?B?Y0tCcG9lV1VPVkQ5ZWpRbVhSaDFBQ05tNlpiWGVlSjAvVUVVQk51SVQ0YmJ6?= =?utf-8?B?YlNxZTN4bVdWR0FJUnFvUzJRMncrZ1BweTJwd1VCZXhLY3E3d2ZSOVJVZU1a?= =?utf-8?B?cjFROHJEWlJGRC9NckxKdEtPMlJrMytPK2hKMzVrTCs4Q0k2TGJTNHlFNkZt?= =?utf-8?B?RmtTem9zSUxLeDhPMUJFeXpDbnFOdXpQVnVMcHJPVm5aYVRJZXRTckdtcTMw?= =?utf-8?B?dU1ZVkcyRDVobGlZS1lwQ0xwZ2xqSGJsMUVsUGZLZXMwNlc5T3RuMWxiVXVr?= =?utf-8?B?a0Z2b2lua2tYZjhzMk1vcm8yZGFZYU00K1kvNldBLzN0WTZQcC9QbjVPRFRW?= =?utf-8?B?L0xBV1RIVUVuWElZS2Mza3lJb0Y1cnlGL0xGSlBBaTRHcnpFTnMrTE0rWGwx?= =?utf-8?B?S3dqR2YzeWc5ak9PTDMramxJTFhPR1BHanpDYzF3d2FjcTVYbUlCOTNzQjJN?= =?utf-8?B?VGZCSmdlQTA5R0lHejNIeisvNmlsTlFDUHBYNGpSTjZBTDNuV1pSaVZHQzhp?= =?utf-8?B?L0dQaW42QkVjcHFheUhZVGR2c2NpQ2sza0VJaDc1bU9MUi9LVmhsdDFZOEt2?= =?utf-8?B?QWc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0EuYKFdDNE/Bda9p1F8U1/+UqKhZN56DersOWL7gycX3fql+l9MKemcHRAA8ZMhsQpGnEnjRH+t5cD9VrlGX5uy6Q058Qcvi+hVFyhH6yLCXbJQHHAyxUKso23xiwrFPS/UPUidFqZKntseh5xP1r+La6DPewsVQWPTk9ieDmLQYXqdHvo6nStU5RNz7sd2+5xJXY88tyOJrpEFI9AOBuEeD7EAikNr+xN7HVhFuEDG2qjj9pO2RKJUkjwAnpeuiB0l9cQQG3pe5kyKHcb1+5OiT9eUvKs98IWXAMpsYt3ErdewTrJDUSC4Ro+HJcBC7fbNSnMfuc3ugSPtrevUb28Y69LYVLciaF3s1/OIwk5/7HSevdwZDN6tPXNyAKD0ybNqwOiYYwYIFDUsc6grOE+8oJr8QrzULCPnvi5oVdkmRi3yi9oMNJdBXycT3rd6QUhEeWrgIvFqVoQ4cowCGPwC3wSsdz69pcT2tApw9GY2zhHImEeWGi2xokI/TXfwAgp11sOmgnswWBO8oSqhh9BmoAzLNxoX7OeX5/vYq2k7zE00AmAdV1YghOYXaVkJuQ1ashoEM95drSlb45445c4bTUY9QWbeacFtcCEk3DdeyDiwMbuv1mhrNVfgHnFTRgWOTh/t3H4d/qP/tpnFZmjzXQlW8Ls56+w6r79lfEnnT0e5nw+2Vqt8fBYpsxl91wNltb6CFzFC7EK0eXYwvpSd8L35n7OtMVdd5V6V5wYo93f33ADCMtFd02iX06tmlsVTtAxrGqatelkVKHSrbIJtc6cAPn0tzZ9UvOccEgCywPz4qclla7gtxIaeKRJRu X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b730fe6-8e3c-4b69-bd64-08db6e6b3067 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:25.6715 (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: Ewbo0j0ICgYrl7thVrBp/tYV4h7sNdEohzU+xdmoGd/npOpz6DU+jkrwBT2FA2l0VeOjo+ogzoYFzPIxYUPo9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921111274100001 Introduce an interface that returns a specific MSR entry from a cpu policy in xen_msr_entry_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v3: - Use x86_msr_get_entry. Changes since v1: - Introduce a helper to perform a binary search of the MSR entries array. --- tools/include/xenguest.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 0a6fd9930627..2672fd043cf9 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -810,6 +810,8 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu= _policy_t *policy, int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, uint32_t leaf, uint32_t subleaf, xen_cpuid_leaf_t *out); +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t msr, xen_msr_entry_t *out); =20 /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 630d0018529f..c67e8c458f24 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -854,6 +854,26 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const x= c_cpu_policy_t *policy, return 0; } =20 +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t msr, xen_msr_entry_t *out) +{ + const uint64_t *val; + + *out =3D (xen_msr_entry_t){}; + + val =3D x86_msr_get_entry(&policy->policy, msr); + if ( !val ) + { + errno =3D ENOENT; + return -1; + } + + out->idx =3D msr; + out->val =3D *val; + + return 0; +} + bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest) { --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921115; cv=pass; d=zohomail.com; s=zohoarc; b=WHw9+hA7+Jsdhttp2E9BHgBbgsml7Y8UBtXzbW8JWGHPk3GhTa3car/DG76xVTEKSpTJLe42Y7B6OjksQn+tn7cc/qp/+KeLM4coUPzjk3S/1NmDu4PftTezZzhfRacUbAo6VYn29nK62ZEcdbIgFqRO7QW/yQhc7Y0XouwnV6s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921115; 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=iGF4NgKbdLxi9cAWht352jpRnufL5F1NEQpFr1PckI0=; b=nkCZCJp8Y3Co1LIqocj0fU7hXzCQZtyiHC0Ltogi1QFiep7yDkSPg5UA7KsI0VIiTl0l+7a53TeEq5oVm9f1RCsr6InktGvkq57ExfJJiB7puKttD9qkCSC5XHTHmt1UdVRzkFXyjn7JC2n0YRqhLITGwz6Hza1vE9eMS8Bk0d0= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921115942444.61015255823463; Fri, 16 Jun 2023 06:11:55 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550179.859144 (Exim 4.92) (envelope-from ) id 1qA9En-0004Dz-R9; Fri, 16 Jun 2023 13:11:37 +0000 Received: by outflank-mailman (output) from mailman id 550179.859144; Fri, 16 Jun 2023 13:11:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9En-0004Df-Nu; Fri, 16 Jun 2023 13:11:37 +0000 Received: by outflank-mailman (input) for mailman id 550179; Fri, 16 Jun 2023 13:11:36 +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 1qA9Em-0002qy-7N for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:36 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 50e18efe-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:11:33 +0200 (CEST) Received: from mail-sn1nam02lp2041.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.41]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:32 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:31 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:31 +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: 50e18efe-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921093; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=hliZfAPo88FD8LfVDnai3HNz4jmGABT4LkpZwEyRO6Y=; b=EIMS6GEIOE+cnHYYTPOeiChalUDMos5guk+Itdt+AcXMCRKwBPASnegh ilQQVm65cyr6nth9u8MH2XQO+VnFnH2Wywc5Cl1BMPpAFv62LO1DweZk8 zrUK/VYUHVNlkkfTUJ61DxIBK5urt+dso9T8/Y1xsjBDxwHor6pwYCAKE A=; X-IronPort-RemoteIP: 104.47.57.41 X-IronPort-MID: 113085936 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:PXMC7qKm3KyjpAKmFE+R9JQlxSXFcZb7ZxGr2PjKsXjdYENS0jcPn 2sZWmmFP6yOMWfwfoogPdjg8UNSvZSBxtZnGQVlqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t ZV2hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpKrfrbwP9TlK6q4mhA4AVgPaojUGL2zBH5MrpOfcldEFOgKmVkNrbSb /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/ jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c5WI2N3r 8MzMAoSZ1OCp/jx/qCicvZF05FLwMnDZOvzu1lG5BSBV7MdZ8mGRK/Ho9hFwD03m8ZCW+7EY NYUYiZuaxKGZABTPlAQC9Q1m+LAanvXKmUE7g7K4/dopTSKpOBy+OGF3N79YNuFSN8Thk+Fj mnH4374ElcRM9n3JT+tqyv33r+SzHilMG4UPPqR+vlxkV6v/UMsIgUUf2rmqMecqGfrDrqzL GRRoELCt5Ma5EGtC9XwQRC8iHqFpQIHHcpdFfUg7wOAwbaS5ByWbkAbShZRZdpgs9U5LRQo2 UWOhMjBHiF0vfueTnf1y1uPhTa7OCxQNmlbYyYBFVEB+4O7/Nh1iQ/TRNF+FqLzlsfyBTz73 zGNqm45mqkXiskIka68+Dgrng6Rm3QAdSZtji2/Y45vxloRiFKND2Bw1WXm0A== IronPort-HdrOrdr: A9a23:VMB4m62i4+RO2J16MZc04wqjBH8kLtp133Aq2lEZdPU0SKalfq eV7ZEmPH7P+VQssR4b9exoVJPufZq+z+8X3WByB9aftWDd0QPEEGgL1+DfKlbbexEWmNQy6U 9hGZIOcuEZDzJB/LvHCArTKadd/DGemprY4ds3Vx1WPHlXg6cL1XYfNi+rVndYaSNhHpQDGJ +V9qN81kGdkSR+VLXcOpEdNdKz3uH2qA== X-Talos-CUID: 9a23:vDazD2FcCfusHHI6qmJG1kwtQP8OakfCxTTRA1X/N3RwcKK8HAo= X-Talos-MUID: 9a23:+eCLNwXTJT9FG5Hq/HjFiDZ5JcRU2IuRIlgPu6RbsvehFwUlbg== X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113085936" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZNlbY7Ytj+srlNC9JMF8R0olvHsYR5/re/Oj8HZbJXk+plfwgMhbzGakGiTTkubm5TtF7EPGdivF1ds1ifNE7ZgAWqC3xaIvmGiaDt11woFo5bn3OKRxcg8zrKOQxZxSGTgpgjRNMbMi/EuucWiuF0M9dIbMiQvw3DtQ1+6VC18hXts2B7PQyAgqh1XokuenoTy85W7cJVjg9p5LseKrbRWTMjpqyCWhKkwJyHXYyNCuWtmjw8GgWeRhlRAtp3v4KNV8voyRhQe0ZVJP5cObyLCwRXsPLD5VYGELiWbF8T02/LRdYhcgzkaNQiAMAzMBk1Axfj4nNTQ87fthSXDvQA== 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=iGF4NgKbdLxi9cAWht352jpRnufL5F1NEQpFr1PckI0=; b=N6Qu0J84U68sbzZi8DpVt9rJ6+atK+uO0k7jL4dC12CoZpPxcV9OsdJwT+hvPNYFr64XKTEF1gRjd5EUNo2m8giiM+n7mcfb68M5hojKDydsfGfZSKZew6vrtJgbP2CIPzM1Dy3VsZSAU3Z4JUaj6EWPH+5Fk1HLM2/E7cy5O8zAYVRSqp2zfVrXo6Q1AvnANdwkcWACUyRf596iNLyhJHjn+ZFPuPgHprzoSVREVGaMGxZrc7GaZzs8thdnsd9TOOOh126oGTUumBGBI8Y9Y2hl8zB6ookHKlrXDrt1uHVQZ80V7ouAMd2Z0eb4yCwH944RVSAinNdd+VilAXKIpA== 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=iGF4NgKbdLxi9cAWht352jpRnufL5F1NEQpFr1PckI0=; b=OaDR7hxIj8EsvyfH+EsdLfuDUz640mApD3aHdTOQ0cCdjshq3Fmgs8RcgqhkVux6QHwnx2PnjvyXnnhUDt3Cx9pcEhUcRdmaE1HxS3/KySoeYGhg4HvRu8XR7Se5SvfLUnkjuO6pfYdXu63lh9fkhrX3jBkJ0z+T6vF7Q/oLn4Y= 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 06/13] libs/guest: replace usage of host featureset in xc_cpuid_apply_policy() Date: Fri, 16 Jun 2023 15:10:12 +0200 Message-Id: <20230616131019.11476-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0265.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:194::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_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 540acf58-dbd6-4f56-9352-08db6e6b337f 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: w+mFrfrLQ9hqQcZHzwtMGBSmXDkm8G3jttn1kx9vfjJRi70Lm6tqjlfadrrz0koPIBwhVjBHSXGlnKOjBoEpGH1JkUFL4S9niohLnC1Gb7IfcTfmDFB1my4nY7w2y65rVQWmaymV1tUEAXXmXsrHkUdN+zii1AZ7hJkUjqhE0ba8u+dtL7lC5+YLIiGgSsk9E0dp2tYtMqLdOc+PqzKMCC7RrwLhz7G+FWLj+gNtFtLVsZVre2UOIaxrw7xWzzWHuT5JmOuOXJOjfAqfVqVBp1TNc5VCa0L+89eN/b6mqeuPBUnFzN4VeZNqqyR/WPW89ZV69GeG46rQXsrnm9js7TuhquZ3nY+d4MgYvAJ/ni2mAw2pLQGEL3k4OnizWy+//EYJPLK6sWJXGmfCXQCMh8qFmH2wUIYZsQrP45jdcCFPT4JmN8xmSSOl4XuG+fDR58beOIHjLu8fBJQhc2gex5EJKf/Oo+p9tkWltcgXTb3CEYvVXlPr5Zk3wWVuST8YdKwLttOByVU96sVuJdQ8hiqzmYlib4qLH0NRHSiahKCQVDL7pOB17qSaU8+RQ1ee X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZUVFV3d2elN3VHhjMTd1eFRQUzJXdjNGYTJWcXlaNGQza0pHRU9ZdDZHZHBR?= =?utf-8?B?UlJWVXJMc0dFZUd0SzR3Qk5kK2pPOFV4K05DRlpmMmpNa3N2M1cxYWw4Q09C?= =?utf-8?B?OXYyUUJsbXYrREVGeVJvMHBhL2ZSNU9HR0l3WTcrRjU1MFNMM3dlb1FhVHRC?= =?utf-8?B?V1RwbkM5QlVYQzVtRUE0RFpCcFAvdFJvbW12dFlyUDFjZFUxVXZHeU9uTlNn?= =?utf-8?B?NFJaVm5rWjdTZk5KSTh1RFlYa0J6T0lieElYaDVCaEtwQzJqMk95MXRBL1do?= =?utf-8?B?NFQyRG1mMHpWNzdNYjg1VTR4bHRHOVJCM2R6aVN2Q2RjdEtBL2RKaVBzSmZq?= =?utf-8?B?Mk9RR1hJNFI2RXNueVFGSm1KM243ZGtObmN4Q29nNEVDRFJQSUFLZWMzVUdX?= =?utf-8?B?MlE1TFdKV1BvOVdaaDRPODg3NlJVZ2lMb3JIMWZaNVo4WlVMNlVMTDc3K3hT?= =?utf-8?B?YlZUdWhVQnJSQ0M5YkF3VVhuakRlOEtLVEVkVFZjTFhaQmRYYXJSVUhiVjBO?= =?utf-8?B?ZUVjNnJpdUxtbmVoNU1OOHhSajNtdlIvQ29adnJjajZQN2hCeUp4emYvMWNu?= =?utf-8?B?bHB3aTZzMTdRcU9vWk96K1IxK1NPYllUK1FIZGNCOFB4TnhJMGVVd01ITzFO?= =?utf-8?B?ODFwMW9qd0pqQlEzZEpJUmxoWlNOVnlROWM3MDFyclVETE1JcnNVR01wYVpP?= =?utf-8?B?S0JjUlRFbXFJWWZTUjlwcXUxT2x1OEJYMjFuZkFCUlFLSURjYzNGOGx2WnJJ?= =?utf-8?B?dEl1VFBkVWU2eXVoYWxQWXpPeTNVTHpFMXN2Um5FclM1WXZTcEZFYTdReDNx?= =?utf-8?B?SVl3R0w0Tk53YWVjL0ZHNzBwbVhiUGo5UC9rM2t0d0FCN05BR1M4b2lxUHNT?= =?utf-8?B?YlRXOFptbzBRSDBGUjYyUHpzcmpZb3VJd0o5K29xSnRsbTBYRThHQ0NsbWZT?= =?utf-8?B?ZFdwcUxCZ1JwMHphbDg5SHJ5NzVsSlpHL3FXalVWMVRvQWd2bFMwamRlQzFT?= =?utf-8?B?NWlod0V5dHcvYUNsbU9BcFIyYWtEUzVNWXkxN01ueVZLMXhzMGUySXFHYnlE?= =?utf-8?B?RkRyL2VVNmxmYkwwaXdZaHczMXY2S3d0M3FtNHBjRmNWSGhiTXVycWtCZkV1?= =?utf-8?B?Z2FqcVo1Y1JKTVhrZ2VCbVduTnNjQ21MVlBVUGtMcmx4VENqQ3A4Q09Hdnh5?= =?utf-8?B?L3ZpWDlKN0JhUFVBaDNJcUl0ZHJMZlJXRnJlZUFJVkg3NEZZZ2xUWW1LU2Fs?= =?utf-8?B?UDBZc2VlU2R2NVEwMS9ZV05WRm5xOXR4eXJmeG43cDFkRlg3M2RWOThYeFlN?= =?utf-8?B?enNZdTdMUVU0SXZPTG5vUkRxS082K09iMytKSjBzTkpEbWEyRzVWZ2EwZk80?= =?utf-8?B?OXlhZ2hybmJ1L1FoMDNqcTBHT1BNMHY1bzJGdWtDcmxLL0JJTmZrVDFjM1Ja?= =?utf-8?B?OXpoVktMaHZrRW5RbGhBZk9nTktLY1BXdlE3UWhic2M0M2NuWERURlZwSjk2?= =?utf-8?B?UnZEeitnb1BRc0lOMzZYK1ZTWGlPSjV1WFlsUXZqd0ZHR1R4WGFSa3A3NWlk?= =?utf-8?B?bEtxNTZwV3hpZTRtMlpnRFkwRTlwaUxOYTBFVmdEZmcrZE40c2hsdUZKR0VZ?= =?utf-8?B?QkJ3dGJjZDZUVTFkR2laVmcvNEthb2JPV21pWkVpT0NBbXYrWG9TOERNM0Uy?= =?utf-8?B?OEZ0dUNMTVNxTElnZ0lmU3N2RU94TCtoOHZhQnZTR3JrMnFpeXdxZ2VWdEJv?= =?utf-8?B?MVlGVXZTWlFtMjhHUzB2SFdQV1ZLV2gvWHZBR0V0bkNCTURhOURzQ1dFZkh3?= =?utf-8?B?NjhCYmNrSE5GZU9pWVZvTDVNdTkzTW96QkNYY2NtZUYxUHpKRmx5ck1xS3RJ?= =?utf-8?B?K2JGdEVqZ2ZQZktGdkRKSUJZTmJtVjVWQlZzcTMyYjBVcXBidjAvSVR1MTdX?= =?utf-8?B?QXpBUjFGbmdZVkJVZVJhUnZIOVczZzE5a2R3WktJcGZ0aGVwU255YkpJV1hi?= =?utf-8?B?ZUhGTHp0U2ZNK1EwZVQ4V2RDR2xnN3J3ZElKN3Q0MjJpdzQ3M0t6MXVHcXlu?= =?utf-8?B?aXcxT3FUanBtSzVPb0RST3NkM3lXUFFidEorcXdJVjBaMG1memVBU3RHanB4?= =?utf-8?B?VFZmZnlobHZRSWozN0tkZUNweXdRUDlsYi9OcEdlZkg5bnVaNFlQUlgreStj?= =?utf-8?B?ZkE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: WYmnaNAMWKIeaI9LqVwxK+pQz+k+YgLLUxgoqcD+ikKPoRnTYZo1JCl+a3rfZfMbr3fYKjpudNfXxAEtftt+ZJNjNytX5O0Ou+lwWRUU3r1Y6IgfdyFfxBAcihocWDJliHovM3gbYbyaYJ4rLjmNxHlnJ42/jL+OUqVWrP4byb2Y9vkxZAqBpT915r7TjiE9Y6YVFGaPKZol5UMQMCdp5zKhqdFZWkpCrbEWi+HxbRF0h3cVGs07OWeZu22NRpwif+oBWLALXOxg0A7z4o4LZL5zfxTT+Is+qgwLLxWzvWm76D+fMFR+eI7+TWAYb5FUBDrTcb10eTfYd5WUrlN2T2j7JIMkVc9DL5ssN+XQdsmsOtALJF8AfYoeiPHyelzU4pa0PL/vV62+jjOkJjhgB4ydPTIQo4uBQHD1lV1SMlW45sNiLl/npgx/tbPmhIA3grQsDIh96BdHocpzdivR2psaGUE6sIsg4aQm+gvz3mQcg0c8xYULQ71W8JKZZoOFB2zhAH87Ax9I4tFLrFggy9ImQHvqR85h2AqMd+nda4ci7N9u3FYwFbabNLMLXfL2hWWoNP3Lv0fF8RR5zkD+RDSsXpMD/tJml3Mor0zWOH6vDwMGg3Opq8qjgIHYTUiKYKv6d98srdGRYtapwuaMCx8/fNKjVRGnH/dHRT0ztW20F+VKJJpiNgX/UgbloobKlaNKY5V0CVrKnG56bjaqZyn3KeTMerkyzRtirK66j0/cGvbL8MKGuf2Q+RvuS6dDjV6ufn2b5Bf7XRVeb0k8y5Si4BXNkbY/a7KCuGpvnE1iznR/i2aMVUmBefwc4hiA X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 540acf58-dbd6-4f56-9352-08db6e6b337f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:31.0398 (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: a7JYpF5c2J7HQrkbEzZRm0RLw0pIF6wMU0MfiYbYp2XTH2jFmLCvU7iCxuqI8/bqmR4njXUtjmxSZLOASnig8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921118041100001 Further changes to the function will require a host policy, hence switch usages now in order to avoid having both a host featureset and a host policy in the same context. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/libs/guest/xg_cpuid_x86.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index c67e8c458f24..1e532b255c21 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -432,10 +432,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, bool hvm; xc_domaininfo_t di; unsigned int i; - xc_cpu_policy_t *policy =3D NULL; + xc_cpu_policy_t *policy =3D NULL, *host =3D NULL; struct cpu_policy *p; - uint32_t host_featureset[FEATURESET_NR_ENTRIES] =3D {}; - uint32_t len =3D ARRAY_SIZE(host_featureset); =20 if ( (rc =3D xc_domain_getinfo_single(xch, domid, &di)) < 0 ) { @@ -446,16 +444,14 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, hvm =3D di.flags & XEN_DOMINF_hvm_guest; =20 rc =3D -ENOMEM; - if ( (policy =3D xc_cpu_policy_init()) =3D=3D NULL ) + if ( (policy =3D xc_cpu_policy_init()) =3D=3D NULL || + (host =3D xc_cpu_policy_init()) =3D=3D NULL ) goto out; =20 /* Get the host policy. */ - rc =3D xc_get_cpu_featureset(xch, XEN_SYSCTL_cpu_featureset_host, - &len, host_featureset); - /* Tolerate "buffer too small", as we've got the bits we need. */ - if ( rc && errno !=3D ENOBUFS ) + rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); + if ( rc ) { - PERROR("Failed to obtain host featureset"); rc =3D -errno; goto out; } @@ -485,13 +481,13 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, * - Re-enable features which have become (possibly) off by defaul= t. */ =20 - p->basic.rdrand =3D test_bit(X86_FEATURE_RDRAND, host_featureset); - p->feat.hle =3D test_bit(X86_FEATURE_HLE, host_featureset); - p->feat.rtm =3D test_bit(X86_FEATURE_RTM, host_featureset); + p->basic.rdrand =3D host->policy.basic.rdrand; + p->feat.hle =3D host->policy.feat.hle; + p->feat.rtm =3D host->policy.feat.rtm; =20 if ( hvm ) { - p->feat.mpx =3D test_bit(X86_FEATURE_MPX, host_featureset); + p->feat.mpx =3D host->policy.feat.mpx; } =20 p->basic.max_leaf =3D min(p->basic.max_leaf, 0xdu); @@ -560,8 +556,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, * On hardware without CPUID Faulting, PV guests see real topology. * As a consequence, they also need to see the host htt/cmp fields. */ - p->basic.htt =3D test_bit(X86_FEATURE_HTT, host_featureset); - p->extd.cmp_legacy =3D test_bit(X86_FEATURE_CMP_LEGACY, host_featu= reset); + p->basic.htt =3D host->policy.basic.htt; + p->extd.cmp_legacy =3D host->policy.extd.cmp_legacy; } else { @@ -635,6 +631,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, =20 out: xc_cpu_policy_destroy(policy); + xc_cpu_policy_destroy(host); =20 return rc; } --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921124; cv=pass; d=zohomail.com; s=zohoarc; b=fVKQUOIXYCWOU5V30hdVt/g/XHKl87w27VNXSLCEpCKuWIGad5iIuk0jJa5FwlryeKyxlZ+3dYWeefeNz7dh7edkKrY6brNNWMWAWgdigBu+n1gZSksGULpRlzh8Qpji+Xi3JC2SlFyhzRhg9Rga80lzIWPlWcjcni7p8EyDC58= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921124; 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=jzuDL17K5HVWw0U6vxRy/7T4WO2u/BryL7lPZZcHWag=; b=N+6nlm4qaPAIdcq14Uwz2EcJ8id+zpS4dWsMwEaYrDA90RuSTEmQUn3sTOQik8cg7VtJKTkXusmo9Ins5c3Yo21LpSJbZtjV+g4CiWfxXbaC/THxsKcYh4YRdP2U7cKUydaAnuJX/Y6huKabX8NjnnudD3/EIzzUwJiJxGhGrUM= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921124314525.9327006788296; Fri, 16 Jun 2023 06:12:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550191.859154 (Exim 4.92) (envelope-from ) id 1qA9Ez-00058r-7x; Fri, 16 Jun 2023 13:11:49 +0000 Received: by outflank-mailman (output) from mailman id 550191.859154; Fri, 16 Jun 2023 13:11:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9Ez-00058k-4L; Fri, 16 Jun 2023 13:11:49 +0000 Received: by outflank-mailman (input) for mailman id 550191; Fri, 16 Jun 2023 13:11:47 +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 1qA9Ex-0001xG-J5 for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:47 +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 5730c64e-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:11:45 +0200 (CEST) Received: from mail-sn1nam02lp2049.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.49]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:39 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:37 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:37 +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: 5730c64e-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921105; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=+2q9vH3BWwKJ4q10lD+ahR58VVJqbvLHJmNue2GHCrU=; b=d4llkfzJnyq7n5jYv4yTlruuNkNcgHVA+xUzXqnREqHBWN3juJRmgAyL IDPyImGvsCrlViTItIF+AxoOIbRUb7iV8fIQBs+FIBH8BHI1s6bvUkNMB iZDkWYEcTLtJLXfRCSMPYdM0l6n1WCIXBdAgodpx8T+cVji+xPzXYqDXF Q=; X-IronPort-RemoteIP: 104.47.57.49 X-IronPort-MID: 112390549 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:ctEjZ6PbgSMOxW/vrR2AlsFynXyQoLVcMsEvi/4bfWQNrUorhjEHx zNJC2qHbPjbM2GmfNlyatznpBsHuZ7Xz98xHQto+SlhQUwRpJueD7x1DKtS0wC6dZSfER09v 63yTvGacajYm1eF/k/F3oDJ9CU6jufQAOKnUoYoAwgpLSd8UiAtlBl/rOAwh49skLCRDhiE/ Nj/uKUzAnf8s9JPGjxSs/rrRC9H5qyo42tG5wJmP5ingXeF/5UrJMNHTU2OByOQrrl8RoaSW +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDW4pZkc/HKbitq/0Te5p0TJvsEAXq7vh3S9zxHJ HehgrTrIeshFvWkdO3wyHC0GQkmVUFN0OevzXRSLaV/ZqAJGpfh66wGMa04AWEX0vlqX0x/5 dwnEhZTURSFleS9npuJc/Y506zPLOGzVG8ekldJ6GmDSM0AGNXESaiM4sJE1jAtgMwIBezZe 8cSdTtoalLHfgFLPVAUTpk5mY9EhFGmK2Ee9A3T+PVxvzm7IA9ZidABNPLPfdOHX4NNl1uwr WPa5WXpRBodMbRzzBLcqyj317eSwXKTtIQ6Tb7gzdhnsgGplmULJTEGWGS8/9SasxvrMz5YA wlOksY0loAi+UruQtTjUhmQpH+fogVaS9dWC/c96gyG1uzT+QnxLncAZi5MbpohrsBebT4lz FiShPvyGCdi9raSTBqgGqy8qDqzPW0OKzYEbCpcFw8duYG/8cc0kw7FSctlHOitlNrpFDrsw jeM6i8jm7EUis1N3KK+lbzavw+RSlHyZlZdzm3qsqiNtGuVuKbNi1SU1GXm IronPort-HdrOrdr: A9a23:4dj846xVaAnJ9/NH6hS+KrPwFr1zdoMgy1knxilNoHtuHvBw9v rAoB1/73TJYVkqNk3I9ergBEDjewK+yXcF2+ks1N6ZNWGN1VdAR7sSj7cKrQeQfBHWx6pw0r phbrg7KPCYNykdsS8i2njcLz/3+qjizJyV X-Talos-CUID: 9a23:6FAg2GH1zY/fPuzFqmJ46RA5K9AFTUf7kkjUJV2+AjhAeoSKHAo= X-Talos-MUID: =?us-ascii?q?9a23=3AgNTsJQ7Qz/d5d5fnjcJCRPuKxowx4PyVLk0/za9?= =?us-ascii?q?WstGpGTx9BDDDoReOF9o=3D?= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="112390549" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JJcd6w41D7eAqMmjTeMfS87UM5Fo8p0gQFLslaF6flD8wpt1WWVZC5p2wuhyOWuTTw5adYAC+qwxt+Moy2R49+zPAsd7Mzjay+QEVtviGVMIwwViHqjEIVGgzkmkzOeJGfVdow7wsY/bd7KkJtHX5HNnZ2ZhkFJAa0DnAkAfKOl+1qQFGuQFYQQbMvWw4r3y5inhPj5YgQ3uZ1cwz+gbXbgFw5bPjhbM0k6zP7vKWIHR7rPdslcVZ0PGwK7+hVFNNgrw99LW0Mp0UjHm3ARzd+w3K4yXuo7NxyRPjEuwRITRxLkr3dBgB5zsfhc32Pyot+Ckap0Kzngq0s72+jzr+A== 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=jzuDL17K5HVWw0U6vxRy/7T4WO2u/BryL7lPZZcHWag=; b=WOSc5Z4iKbhxZYgKarS/z0H4pX4+fE+OoRGRd2s7b3Z53l6uBrROqR5vKIKB83i/ZkCUnRKlO6IcwtVluird1KP4pgYDFwpzl8p4mxZ0b8OVyWRYvRCMX6Hesizqk/F+RoeYQHOIHXYXCsghTMnaIT+ocuIWEdXxjpzVqklTR8vv5AhydrzUeDpqDT9ZDWKMS5mbYCeC6ehbncZXzZ6FLYtliEqfutTAk8q7rsokTWgmlB/ZIeQ/IpO61Xn2x9tdYuPvjCDtUwLYv3PPs7rLB6qBT3H6eiznO/VmoY2Whz7/U0ETPkMW6vBf8mhZHRBTHaQ6TzB1RSaPt/s/zxwgmQ== 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=jzuDL17K5HVWw0U6vxRy/7T4WO2u/BryL7lPZZcHWag=; b=O42NuCWVqDSMVxp2yrYlCYwF5ESGmopGBkIb5PEMqu3SdJK9M8LI0E+lDKvwQUUXIAyR8fH8ffFsz3mqpVejX2EyYzeSWYufLG71f+N2PYR2G7BsYfv8HH2yumIlgkltDiiOtMADEF0z1Zeg4cNaXHyBppcwHqX3Bzwaz0Cn1t8= 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 07/13] libs/guest: rework xc_cpuid_xend_policy Date: Fri, 16 Jun 2023 15:10:13 +0200 Message-Id: <20230616131019.11476-8-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0226.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::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_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: fc458089-4a5c-4dbb-a79e-08db6e6b3734 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: heDrS+Pwg6ht+hA6JrBnglIfFiSrq8dLSnGfMh1uptVnjtnumaSuWcEP1rGanmY6yL/z9UZlDTO9NGJzaEelA0W1SGCcG7V8yt/ZmxzUKBkQzribqG3si3jra9JfrDSzNUD6zZo4EsIimSb1gduAmzE2GMYNji8VYreb+8W8LRyzjj+Me96KYLXCwLMpq/P8FzB+zXyT+TL4gklaT/noq6XniNrH9m8z6thQCZAUcAJIgvZhQ16bgH2dfxiB6ifhGigS8DK4lSY5pAiK8VY4fRiW90tMfDH109pcmlAWkZsh86WCUBkDqQtCXeUK1rKhSNahrU1M4d2JDmn871igVLeVNdiLyd/uDHh/wcGPIOAuXGkf37MIJ805teLZ9cjNsym8qp204qYNW6YQETWSBO8bPWsgQXjh9O7d89PnhtC1/OKTPjtQdtCFqTxWiyBOWSzh8SuwuERcjej9c9tsuohrk2RaYmMbn1JUXKTRuG5zjCbf0Y+hBEvLYDP6nkyfa30MeyIljDK/xOyjNzRlBqyFcT9hdnPtjx95aiedLwUbXGsB1Y0qep3ptsVS/daJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YUxBUHZVcWY4UFpTcy8vSldIbmYxZkVtWmxwTXpEdDNOalN1V05Ea2RxUDM4?= =?utf-8?B?TUVlTC83RVlQL0xuSllkbXRBT0NGTUlmUG1nTXhtT2YwdkRvNStHNVZyaVU1?= =?utf-8?B?THZiYzJkZnJWVlFZbTFwbS95ZnZ1dnY2d0pnVTFzSHN3TnBOMEl4a2FrQkw4?= =?utf-8?B?V2xTVW5vVXp3MXJuZ3I3UmZpalNQK0NDSytETXZJamNTcDdENkhsZnNDRG95?= =?utf-8?B?NWZreG05YXcrYkhHZ0RKVDFuU0szeTBTVFNIc09VVlFFU0RqdWpBZFcvMEJU?= =?utf-8?B?SFVLOXgvcWhsUEhFZU5rT2MxUFV1Q3p6ZVJlV2ZrYzFHQ1h4S2RGVTJOblBy?= =?utf-8?B?UllWOHpzWk9WcnJLZWp6VTB2UWNSbmp4dXFvM1hmaWc5eHhwMlVIMUJVTkxj?= =?utf-8?B?a3U5L3dEQk9BNjFxSkZ3TXI2TkQvQnJyTVA1TlU1Q3pna3pwMWkwOFpFaHQz?= =?utf-8?B?L1p0c29Xd3puQkFUSEtTUTV0b3QxUUFnNllkOVdiSUtwRFZ2MkEyd0ZCSDJs?= =?utf-8?B?cFdMRGZDRjg4Unc1RnhBM21wK0pTb0JPazJDYWtYQS9xMm5tbENrSXJRUWln?= =?utf-8?B?T3NWZ2k1ekZGaEJZNi9Ld3R1UXhjbVRMaDdIaTdVRGxudkdhV2hmWTRSUkVl?= =?utf-8?B?b0VVazB5bWZqQlBqSXozVm54dGM5NlpVRElIRXZvb2d6WCtxS2tXTnpVRUR5?= =?utf-8?B?cThSbXNZdkI1R1ZFMVhqY0xqTmpWbkNXNHhsb3VlOFVtUlY0VXV0RG52UWsw?= =?utf-8?B?MmNKTDFQcHZsdU1MWFh3Uisya08wM05KSWNOTFdrYTJhOXpaZ0FPMm9iMmF0?= =?utf-8?B?UllYeUZFK3kxZXVtc1U5NGtyM0liSmdZWkl4UG9ic0NhQTA2SUtIelVrVndF?= =?utf-8?B?cnkyNVNpci81UEJJM2JHYnZyUWNQUWpnQmZWalBuTDVjbTM4TTJHeFIyU2Ur?= =?utf-8?B?TmpUNXZqbmVRYTduVTN3TEZiMXJQY0NneVlYK0VuOHh2T2QvYWVyQyt0REMw?= =?utf-8?B?RXlQNENvMnNZRUxSK2FaeHVhOTRqc3U1YUNCY2lTQnVlRXJ4cFlsSnNlSWlp?= =?utf-8?B?NFNONld5b0g2a2p4NTlkV2FaTzFDQ0VyVUpTa1lROHpCTlRZQUtoa0U4SE81?= =?utf-8?B?eVg2ZUwxbzBvYVhvaHEyeFFJMjJXcWx3Y2FWUXFYUVpKWjZkTXd1b3VtSXZ6?= =?utf-8?B?ZDhkbzVudHM2M3JjQlUyalZUeVRqK1ZSTDl1MkpRdU9Lem1yTWNjdUdJZ0s3?= =?utf-8?B?SEROU1U0OFZJWnh6YjN3WFFUZXhzZ3BzZ24vZk5wWVpnb0p3RWsrSnF0MlNN?= =?utf-8?B?b2YyQWM4ZENSM2lya3dvbnNSK0h3WTVlcXVDNGtreVdHQ3NXTEtJWFpIajBs?= =?utf-8?B?MDVGNGRnMHhWZjJhZ3RVM2NtOTJRQ0FUaXZRSE0yc1NiR0NkKzZJeTJvajhu?= =?utf-8?B?YzdHV3NQTDdoeFZhMEZVREZwVmVRd3JyWkdYMlp2OVQ4bm9zUVRHMVFRc1Zp?= =?utf-8?B?NGxZdHpvQU5WLzJiQVhnT3V4VTljR0JTT1piS2FIa0VlWGh5QzVNOXRoOHBk?= =?utf-8?B?M1U4SGdkaDhZREcxeDgzVGsydGVFb2lsTm84K3N0S1JQWDRrNFR0SFppd0t6?= =?utf-8?B?WktVZ0YvTjExVDcwa3AwZG1welhNbnJqY2MvRWRCSk1kNmJJcGdseXE5N2ht?= =?utf-8?B?WmN5VmtmZ0hHaHRWcXhqNStqZlRqVllKN0hZeGwwYTd0QzcxOGRJNkRPTFFX?= =?utf-8?B?K2ttdTVpUVBkRWs4dFBiR1BsdFVsSmZFTmxxbnNzdnRGZTNpM2FBSjN4UzRv?= =?utf-8?B?am9ZalRvai83Tmgzd0pVTUhEQnhtR21oWEdZYjFwR1ZQOVBpV3UwUzBvdTlH?= =?utf-8?B?bXJya3ZGK0x5UERYTWpUcnEvMzNVNWkzL2ZyUk5NeXVLOWZTeVpqd0VLRml2?= =?utf-8?B?QkxDVTRsZUp5NUt3WVRyRy90TTdVcC9wMUhGdVhhOVUyU3RtSHhSalhHeFJR?= =?utf-8?B?aGxraUJrZWpxelVzTHFGZGxPR2x0ck5mSDU0V0xzdlU2cU5ZNHo5S2NKOGxU?= =?utf-8?B?ME1sSkRUTk9EVkNaT3ZNdTlvajJwOFRYZm1ETGRLQ2Q5RGVBbDFJUDdQUW8z?= =?utf-8?B?dHlnbStkdUhYazJRaDQ4bDNaaGtCT1ZsUHVpZ2lIMithVUZiMEkzODVLcEJi?= =?utf-8?B?blE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FLW0e8Vk3yWOqJecLInbegesChKsF6UWLxZDtN7hqkqkpRzKHocmhpeiuLtArf3WspAmH4bajvpsFdroF9bznc0oPfnVgcPA6p9QSco/w8twI5Agw8e/hQ7gH/0R4eEzcujWFq7wju08w5JX9FW7NBsJC0pMKg4SFzdVHoId30Ry/+1Rb/uTmzGSUmJttHwLL7AGNBTJf7XJaMo6iSDrhQ/RQ4UahQLRhkOzhQ0qGkiY5TSfyQSci6DTFuRCdzoZ4TlABsy7BsHhhcSvjbbmAODNSg5uTv7mG3KFoMbxSGfdaDTYwrUMbMv/Vc1R+nyK59XjDC+HZifJDrnrxsIzmmsIzOqSbDH51TN5EVZo+SRaFJ87aX3bZ4qF/GxavUJhBK98uiZREVdYZ6i9+yRgKjk7SGxwTsVxLXPz0ipgzcKLWZ7wqKuxxA2+hvGW+mK5WNet6aF8oQZb23RVGEtCRNOyOXy8h7kf2Tp39PmqhilAkcNkgHScfT3MHhhQ5Op635kw2KriHThpewXSm8ZgYY+eDGv1wZQDGJg1vgDGbvna6HFFriXJmrG9TRuIEaxep+BD73HiTw5aWGjl5L0WpYqkyBkWiak04UDzOKXIpL73UnmSEuVISqEYTCq6NWyLsZ0Awa3C/YHkSQ7X4mzJCqihce97+JZ96NJPW1sQQnhKGyR/G5kE3acIejLLlOtx6eUV4SndMxPL1A37aQCufL0L48P6TPO+kOsVh1/uACGfDI3xDuM6uB3QW5hM1dL7RhYyjzOwRm80mUVf4MaiEtsKNgQAdaF4T42J9oJPG6SUKV6/cVtX6rTc+poil91x X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc458089-4a5c-4dbb-a79e-08db6e6b3734 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:37.2341 (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: cy0YDn+iU4ge2oC5M5gwrxB2x7nhZDLUDicxPW/oib55CLj/xLBhKgc7RO9NaR1Axvs+GTaBDE85HQ7dtXYpTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921125994100001 Rename xc_cpuid_xend_policy to xc_cpu_policy_apply_cpuid and make it public. Modify the function internally to use the new xc_cpu_policy_* set of functions. Also don't apply the passed policy to a domain directly, and instead modify the provided xc_cpu_policy_t. The caller will be responsible of applying the modified cpu policy to the domain. The find_leaf helper and related comparison function is also removed, as it's no longer needed to search for cpuid leafs as finding the matching leaves is now done using xc_cpu_policy_get_cpuid. For the purpose of the 'x' modifier, assume that the passed xc_cpu_policy_t 'policy' parameter contains the default policy, and hence just skip making any modifications in that case. This simplifies some of the logic and avoids having to fetch the default policy for the domain. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v6: - Pass a host policy to xc_cpuid_apply_policy. Changes since v3: - Drop find_leaf and comparison helper. --- tools/include/xenctrl.h | 2 +- tools/include/xenguest.h | 5 + tools/libs/guest/xg_cpuid_x86.c | 201 +++++++++----------------------- 3 files changed, 64 insertions(+), 144 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index dba33d5d0f39..45f05a2d3d7e 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1839,7 +1839,7 @@ 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 *cp= uid); 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/include/xenguest.h b/tools/include/xenguest.h index 2672fd043cf9..705a93a058fb 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -817,6 +817,11 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_= cpu_policy_t *policy, bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest); =20 +/* Apply an array of xc_xend_cpuid leafs to the policy. */ +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, + const struct xc_xend_cpuid *cpuid, + const xc_cpu_policy_t *host); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 1e532b255c21..0d0970d4bd69 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -254,145 +254,67 @@ int xc_set_domain_cpu_policy(xc_interface *xch, uint= 32_t domid, return ret; } =20 -static int compare_leaves(const void *l, const void *r) +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, + const struct xc_xend_cpuid *cpuid, + const xc_cpu_policy_t *host) { - const xen_cpuid_leaf_t *lhs =3D l; - const xen_cpuid_leaf_t *rhs =3D r; - - if ( lhs->leaf !=3D rhs->leaf ) - return lhs->leaf < rhs->leaf ? -1 : 1; - - if ( lhs->subleaf !=3D rhs->subleaf ) - return lhs->subleaf < rhs->subleaf ? -1 : 1; - - return 0; -} - -static xen_cpuid_leaf_t *find_leaf( - xen_cpuid_leaf_t *leaves, unsigned int nr_leaves, - const struct xc_xend_cpuid *xend) -{ - const xen_cpuid_leaf_t key =3D { xend->leaf, xend->subleaf }; - - return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leave= s); -} - -static int xc_cpuid_xend_policy( - xc_interface *xch, uint32_t domid, const struct xc_xend_cpuid *xend) -{ - 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_cpuid_leaf_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_leaves, sizeof(*host))) =3D=3D NULL || - (def =3D calloc(nr_leaves, sizeof(*def))) =3D=3D NULL || - (cur =3D calloc(nr_leaves, 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_msrs =3D 0; - nr_cur =3D nr_leaves; - rc =3D get_domain_cpu_policy(xch, domid, &nr_cur, cur, &nr_msrs, NULL); - if ( rc ) - { - PERROR("Failed to obtain d%d current policy", domid); - rc =3D -errno; - goto fail; - } - - /* Get the domain type's default policy. */ - nr_msrs =3D 0; - nr_def =3D nr_leaves; - rc =3D get_system_cpu_policy(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_defa= ult - : XEN_SYSCTL_cpu_policy_pv_default, - &nr_def, def, &nr_msrs, NULL); - if ( rc ) + for ( ; cpuid->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++cpuid ) { - PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); - rc =3D -errno; - goto fail; - } - - /* Get the host policy. */ - nr_msrs =3D 0; - nr_host =3D nr_leaves; - rc =3D get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, - &nr_host, host, &nr_msrs, NULL); - if ( rc ) - { - PERROR("Failed to obtain host policy"); - rc =3D -errno; - goto fail; - } - - rc =3D -EINVAL; - for ( ; xend->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++xend ) - { - xen_cpuid_leaf_t *cur_leaf =3D find_leaf(cur, nr_cur, xend); - const xen_cpuid_leaf_t *def_leaf =3D find_leaf(def, nr_def, xend); - const xen_cpuid_leaf_t *host_leaf =3D find_leaf(host, nr_host, xen= d); + xen_cpuid_leaf_t cur_leaf, host_leaf; + int rc; =20 - if ( cur_leaf =3D=3D NULL || def_leaf =3D=3D NULL || host_leaf =3D= =3D NULL ) + rc =3D xc_cpu_policy_get_cpuid(xch, policy, cpuid->leaf, cpuid->su= bleaf, + &cur_leaf); + if ( rc ) { - ERROR("Missing leaf %#x, subleaf %#x", xend->leaf, xend->suble= af); - goto fail; + ERROR("Failed to get current policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + return rc; + } + rc =3D xc_cpu_policy_get_cpuid(xch, host, cpuid->leaf, cpuid->subl= eaf, + &host_leaf); + if ( rc ) + { + ERROR("Failed to get host policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + return rc; } =20 - for ( unsigned int i =3D 0; i < ARRAY_SIZE(xend->policy); i++ ) + for ( unsigned int i =3D 0; i < ARRAY_SIZE(cpuid->policy); i++ ) { - uint32_t *cur_reg =3D &cur_leaf->a + i; - const uint32_t *def_reg =3D &def_leaf->a + i; - const uint32_t *host_reg =3D &host_leaf->a + i; + uint32_t *cur_reg =3D &cur_leaf.a + i; + const uint32_t *host_reg =3D &host_leaf.a + i; =20 - if ( xend->policy[i] =3D=3D NULL ) + if ( cpuid->policy[i] =3D=3D NULL ) continue; =20 for ( unsigned int j =3D 0; j < 32; j++ ) { bool val; =20 - if ( xend->policy[i][j] =3D=3D '1' ) + switch ( cpuid->policy[i][j] ) + { + case '1': val =3D true; - else if ( xend->policy[i][j] =3D=3D '0' ) + break; + + case '0': val =3D false; - else if ( xend->policy[i][j] =3D=3D 'x' ) - val =3D test_bit(31 - j, def_reg); - else if ( xend->policy[i][j] =3D=3D 'k' || - xend->policy[i][j] =3D=3D 's' ) + break; + + case 'x': + /* Leave alone: the current policy is the default one.= */ + continue; + + case 'k': + case 's': val =3D test_bit(31 - j, host_reg); - else - { + break; + + default: ERROR("Bad character '%c' in policy[%d] string '%s'", - xend->policy[i][j], i, xend->policy[i]); - goto fail; + cpuid->policy[i][j], i, cpuid->policy[i]); + return -EINVAL; } =20 clear_bit(31 - j, cur_reg); @@ -400,33 +322,19 @@ static int xc_cpuid_xend_policy( set_bit(31 - j, cur_reg); } } - } =20 - /* Feed the transformed currrent policy back up to Xen. */ - rc =3D xc_set_domain_cpu_policy(xch, domid, nr_cur, cur, 0, NULL, - &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; + rc =3D xc_cpu_policy_update_cpuid(xch, policy, &cur_leaf, 1); + if ( rc ) + return rc; } =20 - /* Success! */ - - fail: - free(cur); - free(def); - free(host); - - return rc; + return 0; } =20 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 *cpuid) { int rc; bool hvm; @@ -617,6 +525,16 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, } } =20 + if ( cpuid ) + { + rc =3D xc_cpu_policy_apply_cpuid(xch, policy, cpuid, host); + if ( rc ) + { + rc =3D -errno; + goto out; + } + } + rc =3D xc_cpu_policy_set_domain(xch, domid, policy); if ( rc ) { @@ -624,9 +542,6 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, goto out; } =20 - if ( xend && (rc =3D xc_cpuid_xend_policy(xch, domid, xend)) ) - goto out; - rc =3D 0; =20 out: --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921626; cv=pass; d=zohomail.com; s=zohoarc; b=gMUx0H8r9nDTHtvm+0G0tYMSu+VJJDnE4kFulnhowUfX+pL8weRLteZi/+nUL5uwvyvvYh6TB7rY5Zw2jx4Tjl9E0AUjqGCOOXi/3+eZc46+UBAVoEbeeQY+qY6WdlVis1hrjPj+7Zhv6w48KuXRcuJr8ewZTsU27tANb9KE1JU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921626; 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=nQoex3KxQDT4pxXIKFv2y1HP714iKzUK1fS15AmZAi4=; b=MpVZBNmLbIXa0Aq8MzDQ2q8YcSbBFJ2VXgpV2r+rdQfsAM0nZwRvnFWHwgwePB1/+esucWsZ2O7rheku4pfoqF+ci2mnwYK1qcw91+OAfhHI+4c0WLfPrZpbLYIzO3R2C3o9D6c6ovWMfvxZhUiT1uG0/Xs5vYStCzYkedNoeaY= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 168692162652185.58495331746906; Fri, 16 Jun 2023 06:20:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550221.859184 (Exim 4.92) (envelope-from ) id 1qA9Mv-0007yQ-Pk; Fri, 16 Jun 2023 13:20:01 +0000 Received: by outflank-mailman (output) from mailman id 550221.859184; Fri, 16 Jun 2023 13:20:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9Mv-0007xz-LW; Fri, 16 Jun 2023 13:20:01 +0000 Received: by outflank-mailman (input) for mailman id 550221; Fri, 16 Jun 2023 13:20:00 +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 1qA9Ez-0001xG-R1 for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:49 +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 59769fc9-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:11:48 +0200 (CEST) Received: from mail-sn1nam02lp2049.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.49]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:47 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:43 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11: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: 59769fc9-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921108; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=YPA9b+1Jq+QT5jKnKko+p2QVQM1PKRxB/6N+2JAeUmY=; b=FLjv9VAj4aPPo+qUklI+fEzR2VqXL1H1fVYiHBVSqi3pcbQQEt5NETLV 86zM8BODn6IkqUBsT0mGyyrlZm/wXvGYIoMF5ghgsjiVxIhkzm6u3B3e3 GZaZyaR4Dm12rdEOF+TP2YGm/+RS85Q8BV27IVcNzA1ISI5sbF6U1hMZV I=; X-IronPort-RemoteIP: 104.47.57.49 X-IronPort-MID: 112390561 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:8UEaEKgqQunNzVDoUjnY5fBnX161RREKZh0ujC45NGQN5FlHY01je htvXjvUbqmJYWOnLt5xaI+xoU4D7JWGmNEyTQY9/yk1RX4b9cadCdqndUqhZCn6wu8v7q5Ex 55HNoSfdpBcolv0/ErF3m3J9CEkvU2wbuOgTrWCYmYpHlUMpB4J0XpLg/Q+jpNjne+3CgaMv cKai8DEMRqu1iUc3lg8sspvkzsx+qyq0N8klgZmP6sT4gaAzyN94K83fsldEVOpGuG4IcbiL wrz5OnR1n/U+R4rFuSknt7TGqHdauePVeQmoiM+t5mK2nCulARrukoIHKN0hXNsoyeIh7hMJ OBl7vRcf+uL0prkw4zxWzEAe8130DYvFLXveRBTuuTLp6HKnueFL1yDwyjaMKVBktubD12i+ tQDLgAIYAzAltuMnu2AQ7dcoMl+EMTSadZ3VnFIlVk1DN4AaLWbGeDxw4Yd2z09wMdTAfzZe swVLyJ1awjNaAFOPVFRD48imOCvhT/0dDgwRFC9/PJrpTSMilEuluS8WDbWUoXiqcF9hEGXq 3iA523kKhobKMae2XyO9XfEaurnxHqhA9NKSePhnhJsqFeXwUA5LDkbbl/hiKi3mlOsHIlcN 0NBr0LCqoB3riRHVOLVTxC+5XKJoBMYc95RCPEhrhGAzLLO5ASUDXRCSSROAPQ5sOcmSDps0 UWG9/vrCiZoq6a9Um+G+/GfqjbaBMQOBWoLZCtBVg1c5dDm+Ns3lkiXEoclF7OphNroHz222 yqNsCU1m7QUi4gMyrm/+lfExTmro/AlUzII2+keZUr9hisRWWJvT9bABYTzhRqYELukcw== IronPort-HdrOrdr: A9a23:Y19reKDwEqYHgLvlHeg4sceALOsnbusQ8zAXPh9KJCC9I/bzqy nxpp8mPEfP+U4ssHFJo7C90dq7MAjhHP9OkMAs1NiZLW3bUQeTQr2KqLGSugEIeBeOvtK1t5 0QFJSWYeeYZTQUsS+52njfLz9K+qjlzEncv5a6854bd3AJV0gP1WZEIzfeNnczaBhNBJI/Gp bZzNFAvSCcdXMeadn+LmUZXsDYzue73q7OUFojPVoK+QOOhTSn5PrRCB6DxCoTVDtJ3PML7X XFqQrk/a+u2svLhyM0llWjo6i+quGRhOerN/b8y/T97Q+cyjpAUb4RFIFqegpF491Hpmxa0u Uk6C1QRfibo0mhA11d5yGdkDUImQxel0PK2BuWh2Durtf+Qy9/A81dhZhBeh+c8EY4uspguZ g7q15xmqAnfy8oph6NkuTgRlVvjA65sHAimekcgzhWVpYfcqZYqcga8FlOGJkNESrm4MR/ed Meev309bJTaxeXfnrZtm5gzJilWWkyBA6PRgwHttaO2zZbkXhlxw8TxdAZnH0H6JUhIqM0kN jsI+BtjvVDX8UWZaVyCKMIRta2EHXERVbWPGebMT3cZdI60rL22u7KCZkOlZCXkcYzveQPcb z6IS1liVI= X-Talos-CUID: 9a23:Oa0R2W9Ni2KLks29O8mVv1USKsUrbj7M9U2OfHSxV1ZPReCpRGbFrQ== X-Talos-MUID: 9a23:xyivXAahxSFw3eBTvTvrqBtGEMpT5/6HWU4djIdB4MqYOnkl X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="112390561" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zl1XMyXD73kJrpy3z5KNFPc+gMODbkEFnOKSszHdoMz58LCs/X+Y2c9yDeSgSZ7rOMqNt1D3iaDZCgJMZoep0/ZxQjZg586UrALr42GDfTWK8VHfpRte410cVUCzI6eQtjy0jJUZrJZKipU5S3LpkWkJcRCO88PrafFT1XdkA5WZuxSQhs7pP2yKRKyCUQWG5X+6WeH84zZpCzDEyX2lSLt53ITdeJCuFFBFoQxXCfKOXHFPAJsMW/hZiYn07RcUXA8bJftvrYc+NfAqUuayubSc5EHXK65VrL8eX6gBTWyFJRZwJuvPW//SxWWFlYG7ZuKff/8nCUkKdmtQD4IhuA== 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=nQoex3KxQDT4pxXIKFv2y1HP714iKzUK1fS15AmZAi4=; b=J/ARkOuUqlmlDF54S9My45+oa7SAGCvRH0aroF05qYGhDoivZSkGFVSry7BK1H4GFodM0WyzWeix86Q0s0lAGsPWtJ4Gz6dy4jrHunaFfCdvf1cF5+AHZxSqE04e9pU/TEhaKQuERv3EMWSoLDnuqMpnMMtoIPbnaUX9ATJcZ2cCZ1aXlcfu5IxDXZjX0v5T33YWKPIkJxffVXGKE2oVWdD0dtPhM0qzqEe9SmLAC+YzsvMK922xILm9kBJnMvipevvOneGXtszWf3irKhAdfvgZB9lI4FeEjKLqJNu3VtHBYnlO+Y3TDnHcAq5Yqlh9NLN89B3fCXlaPomJKFqnvA== 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=nQoex3KxQDT4pxXIKFv2y1HP714iKzUK1fS15AmZAi4=; b=aFEIF86WfsFIoDZeMEvxj9GkFiL5CjEl3EiG1MqoP8dDTPq4En+TjbR1pysjI/CuELFMW1uRLXriwAK/McCXfyTio7HtS5vncf06gRQZtmzhx2Go+8VsbD4TJ5gpt+sby3GWMCBUsJIs25G1pcfnHjUM/dzMcREAqz31Yn85WGM= 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 08/13] libs/guest: introduce support for setting guest MSRs Date: Fri, 16 Jun 2023 15:10:14 +0200 Message-Id: <20230616131019.11476-9-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO3P123CA0013.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::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_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 7505b2f8-e908-4db3-37e4-08db6e6b3b06 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: jR9doi4taS/D/BxUzcl3RjApWkX+UGoXdlpQeCO7pYbDCK6W6aiaOWP+dDjoBFhVRVIpQEFc0GkX6B6mJ0H91sPzDFhEWmsOWO8zoIW5vwnsMs+bgbc8DkPOq/yYStceyoMa7fOkO5E90+OqNjkHAfCxdYAYdse2hRlPnHy/AQMC28CPml6pVC9ZrTmKJx4C9gmdP+LAfOGVgKDIP5S/+gQiU4ippUXPLYsoqhaENndIGgVo/s7EWGe78ztRSbaRPzuwXk0tFebJ06dNhoK7d9Q11TL4CixFzEeMEOk+0kA0n1/mvB7dynpCYRWLtyCLC5gr27MK+OHojBNuo0YdcW41ydXbKGLX3MjIr5b8Q1AIxA+gQrKSuEpVblWwoN5ScJWMUAVU9ZbaM5PEp/bJ93Jwg9IvDue/d/nO/9kV/FP2N9jpaUaIxaQCZbeQJK/+9/34Vjr5HyF8SMWOqVb/8aPjKB6okYHBU2Zp0HRkNC4lF/BCEDgCDIQo9cGogkBdjhtoghV/Hvi933A2ZFSe5ok5J1wt7x8KKA8y9ClrDEUfOqVaReTBpsHTJ1wiwdgJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RlhmeW5GWkpJQzljZmg2NWhmTWFrV0YwVFZCVXBvYjFqRnR6UUs3ODZ1djAw?= =?utf-8?B?YTVoeVhKVUVTMHhLcFNWYXZkd3p3bEZGOGlaMitUVFlQcVVlR3NIcnk1VDhm?= =?utf-8?B?ejBhOXVDS1FLb3FvM3YybUhUcDR1WkpjRjl3eE1BTDAyUGNBRHowTm5nRUVL?= =?utf-8?B?b1ZMTlhKU1dCcVpKSjdBdXVIQnhHNHhRRS9nU0FtT3RoSkl5cHQ0TzV4YUlG?= =?utf-8?B?ZUZXcjhScFEzaDdHREQ2MHp5NHp3VWlFM0ZiOEswVTFWL05KOUUxekpXU2dW?= =?utf-8?B?VWtld0tUaUk4M0FlZ2paU3p1YkROTmtVNFJDQVlVU09vbDVMcy9mSEJDaVpQ?= =?utf-8?B?T0Z3S0NsTHB2MXBCbWRnWlpLZVJSYjdZTXBRMitSaFB3U3JuWWVLT1Fkd0Uz?= =?utf-8?B?V05KZnlCUE5QQ3FsZ3BhbkUwcmxJbTR2MklBQkdhaXREd0E4QmVzalFTUkt0?= =?utf-8?B?RlVTenlSTU4rQmFMenhCOEdUc1BSamtIU2VHZnYxcHhIZWwxemhIN0lQV3BX?= =?utf-8?B?ckpNZ3l5VEd4Tml6U3VRbjVDYkJpN1IxN3BXM0k1czhUMERVN05UbE90Vmgv?= =?utf-8?B?NzhneDE1Qnp6ZHZycE5UV3VEdkY5YU93YjhSTjFyOUFWRE5rL3dRREVmOE5J?= =?utf-8?B?M2FZb0cxTmpJSGdXbDg2RG9YWit4b2JXbUc5QmhnbFVFTExxcnBPWTg0am92?= =?utf-8?B?UmZ5a0hDZVpzRlNDM2ZMeFhQM3lOcll4QUFmTmdCY1Y2Ky91VUtadnEzUFli?= =?utf-8?B?SVlSWkZ6NTdBdWtlK3JJeTA2elZVNUtDWVdlazNkMDFCV040SE5rQUMyV0Nj?= =?utf-8?B?UlhvVkxTZVdtRGlxRGk3L092VStEdnB6SFF2aXZibnd4QWJtd2p2NGdETUk1?= =?utf-8?B?SHdkOHlSK0pIRXJNVlVXQi94SjQ0TzhpMjl1UHk3bDEydndYdjVlZ0hTS25h?= =?utf-8?B?eUYrais4OU1MdHlxOW5FWTRrUW5nMDRjOWZQanplVkRPNEpXQWNDVXVOdTlE?= =?utf-8?B?bHE2YVdiSi9IV2lnU3NPSVBDSWo4OGtkcUlLbnVvWC9BMDZkWWQ2bC9FWDQy?= =?utf-8?B?b1NFaXpHYXUzNTdqODNBV203WjBpWUluVS9JYTY2bkVOWkNYTVQzWk8xRVN6?= =?utf-8?B?dFJUc0tBR0l5QkhPTWJ0UjJNd0lLNFh6R0xWclMrdWpQMXY0QU9lalp5Yi8w?= =?utf-8?B?dE84dHNiL250Z09nUG1iYjEzVjBkZTcvTHNUcGNBb1UrQVg2SjV2eEQrcmIx?= =?utf-8?B?WndKT09zQ2pnWG9icThIejRYcGtiNTRaY0hYYlVCV3pBUTN6VHFsYzgyelpY?= =?utf-8?B?V3pxcERGeU9taXdiOFFzdy9hUG5EMG14Z2c2dmVaeGdONytVTFRRNUhoeHpr?= =?utf-8?B?cFRaU3REN2hpTEhVRXozc0RSNGFUUmNyT0lGMXhoM0RpZk1nbll3YUFHNk0r?= =?utf-8?B?c2pqd1NpWUhmVDdBWTQ2QzRxc3FaL1VLRGNtYStTOTRjRGs3aDNoNmthcnZD?= =?utf-8?B?UGROK25Rb1JUaEV0MkxzdnBTZDZEdFJMcDhKTHlqdHYvNWY4UitxUm82UHRC?= =?utf-8?B?Q2U1MVFiVHBvbWZzMlpPckk2dDE0QkxyVmMyb1d4Zm1FQms1WDkzNUJtQXVE?= =?utf-8?B?U2NkQW1qeDdWcFBtYkNLWGVPcmZmemNXQVMyTDljMnNmY05wTXBmemg0U244?= =?utf-8?B?VTc5aXJNOHNJL1JjNEJLVGV2QTdKM1lXc1A2NFIzZStKNE0va2RTOG1acDk3?= =?utf-8?B?dzJITDVtTWFWTTdTZldOMFQzYStCT1NTQ092RXBQdDlRNVJtTHJpMUNMTjVS?= =?utf-8?B?akFOYmhaQ3k4MmZKaE9VSUpyNldVL3orQTF1SlQ5MFJxOS8ybDBWVUg1NVJZ?= =?utf-8?B?REFPdFFDV1RkQ1lIc21WN2xjdmdjVUhVanAwdVJOTUpheXBzdzI1NlAzekly?= =?utf-8?B?azhYUkduSUI2cWgxR0cwSGZpL2RES2ZKcWFLYWhGYTZZYU1Ray9KTFBEb1Mr?= =?utf-8?B?OEc3T1dEYVJkN0VTRTVLWHo0ZWZDOGx5NFdZUWF6ZFBuVExySGNFMTlSeXFh?= =?utf-8?B?QkxMSGZqL295ZzZ0L0taUjlPS3lob0F3dk5yckI0c2h1bE43c0E1ODlWeWRq?= =?utf-8?B?NmY3NFlTNDV3T1BIT21UcEdNaDNoYlR0M0RkZ0kyS2JiaWtiNlk1VDBXYmdC?= =?utf-8?B?eEE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0WtjfyfPJkxPBM3/0TiyBjKLpl4eJCqW7B4eOlj1amuvwI6Vjr+xZRJP7FyN9G5oDSV0iMymZ0mkmH9996qvDnd9FrbIZ4ndxvTn+jbtUAqih/9GFlJdpgHyRDDrWI+7AHGxs+CnzY9niYi6DPfzSLNGQ8jo4hgwOv1GU5DdtomRI7MWiX55EAcelGAs8Y5jHLouORSfbvsskS4Co8bkNdY98Ef2gcK4Rr7lKRXQmJ2KrRLUOOZRYLBZezfqAZOs1tgPYXG+iDIvy4MPHpmuqZQCmUVDIlSSYX4/GA4ErgUSqEjCtyhIKuQZJhc7P1Rgd5h9X8p1H/iOZ+mNaFjmNyNxgXxJSg+uQDIYoWLAiDWfq72tEKVYcLuW4c0jnunxCXP4Qd9mV7AxYq8kpiuWLR994bVL/zhHis7H3sJlW48jWdKK6IScn3Z6V80E0sPJq6Z+cfjt2Wzq3yyaDvChV1JJdk1XS1u1oSqwADqHwGMq5jzb8OtRIeZjCW28g3g9MwF+4PRBvC3PRz/jSC2op+1rDfKBpQtolee2p1zHv7N36kxB+Vr+WkpNrd4DQD3sYM63M3+57pgC9IDAXKUf3r5CVJXY/iumHhFbGyetE7vOWAieF4ZBVAdXhO/w8kEVf9KiLcLSKV2NU7x2UZVb6mTfODVYc3FauiF3t5QSSzqxA/2XJ77YUVXL298ZbIFNuah5KgaVnLowX++gIqImR0TUJDqoQHHMG67lQKro1D7UkvQYTSF7r7Rs9WPKZlZO3mmhYtuV7IJsiCh/ua6nzmSJinp6GIAUqQ8nXlcIEFVZ9Oj94glYmmilFABwr+EN X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7505b2f8-e908-4db3-37e4-08db6e6b3b06 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:43.5606 (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: sZap6wW/AhYRUjqHYm0WmWtMJokK9Vopd/gk6EYfo+SpzSI7WBPvXv/YsQdg5s45yv3v7oMm17pNtZ29DIwxww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921628474100001 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 --- tools/include/xenctrl.h | 21 ++++++++- tools/include/xenguest.h | 5 ++- tools/libs/guest/xg_cpuid_x86.c | 76 ++++++++++++++++++++++++++++++++- tools/libs/light/libxl_cpuid.c | 2 +- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 45f05a2d3d7e..786061282c91 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 (@cpuid) or MSR (@m= sr) + * 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 *cp= uid); + bool nested_virt, const struct xc_xend_cpuid *cp= uid, + 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/include/xenguest.h b/tools/include/xenguest.h index 705a93a058fb..be61ff0af7fe 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -817,10 +817,13 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc= _cpu_policy_t *policy, bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest); =20 -/* Apply an array of xc_xend_cpuid leafs to the policy. */ +/* Apply an array of xc_xend_cpuid leafs or xc_msrs to the policy. */ int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, const struct xc_xend_cpuid *cpuid, const xc_cpu_policy_t *host); +int xc_cpu_policy_apply_msr(xc_interface *xch, xc_cpu_policy_t *policy, + const struct xc_msr *msr, + const xc_cpu_policy_t *host); =20 int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 0d0970d4bd69..09a012960a43 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -331,10 +331,74 @@ int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_c= pu_policy_t *policy, return 0; } =20 +int xc_cpu_policy_apply_msr(xc_interface *xch, xc_cpu_policy_t *policy, + const struct xc_msr *msr, + const xc_cpu_policy_t *host) +{ + for ( ; msr->index !=3D XC_MSR_INPUT_UNUSED; ++msr ) + { + xen_msr_entry_t cur_msr, host_msr; + int rc; + + rc =3D xc_cpu_policy_get_msr(xch, policy, msr->index, &cur_msr); + if ( rc ) + { + ERROR("Failed to get current MSR %#x", msr->index); + return rc; + } + rc =3D xc_cpu_policy_get_msr(xch, host, msr->index, &host_msr); + if ( rc ) + { + ERROR("Failed to get host policy MSR %#x", msr->index); + return rc; + } + + for ( unsigned int i =3D 0; i < ARRAY_SIZE(msr->policy) - 1; i++ ) + { + bool val; + + switch ( msr->policy[i] ) + { + case '1': + val =3D true; + break; + + case '0': + val =3D false; + break; + + case 'x': + /* Leave alone: the current policy is the default one. */ + continue; + + case 'k': + val =3D test_bit(63 - i, &host_msr.val); + break; + + default: + ERROR("Bad character '%c' in policy string '%s'", + msr->policy[i], msr->policy); + return -EINVAL; + } + + clear_bit(63 - i, &cur_msr.val); + if ( val ) + set_bit(63 - i, &cur_msr.val); + } + + rc =3D xc_cpu_policy_update_msrs(xch, policy, &cur_msr, 1); + if ( rc ) + return rc; + } + + return 0; +} + 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 *cpuid) + const struct xc_xend_cpuid *cpuid, + const struct xc_msr *msr) { int rc; bool hvm; @@ -535,6 +599,16 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, } } =20 + if ( msr ) + { + rc =3D xc_cpu_policy_apply_msr(xch, policy, msr, host); + if ( rc ) + { + rc =3D -errno; + goto out; + } + } + rc =3D xc_cpu_policy_set_domain(xch, domid, policy); if ( rc ) { 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.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921133; cv=pass; d=zohomail.com; s=zohoarc; b=OGTe2/SUUpVCYK5yuHTg+91Spv/iErJug8EX1c7P3mpZjVn1k/2nmR4m7c9lsFv5uGC34VJv8gcwykO8lb2a3Uz+24x8CRPkMZyC/u9A/nFCWhFC3/9NUmCmBfp4gAU807t7/RFozGnmsxq+jptTtV50dPGGi9WSLxcsscaAFf8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921133; 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=K/kbRo92d6u5kFORF8OyzCqReC5oQpO77s0waaoKxaw=; b=CmMLkoizBuvcp/4y7nsb7mZoMco0xZRAoN434+N4eHu2s4YgmV8IYGc28AMVUTCJk5U9ida6ij/qpY4z6e/qGVFlHL2UeTEDE0CIDJ5EkNMKRTMKhTqGW4UrjrQfVQ6pA+pX8mbw6R9cl3q3r49ozRyLRc5glZOpfnc5qKcSs6U= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 168692113390385.86807165550022; Fri, 16 Jun 2023 06:12:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550197.859164 (Exim 4.92) (envelope-from ) id 1qA9F8-0005os-Ho; Fri, 16 Jun 2023 13:11:58 +0000 Received: by outflank-mailman (output) from mailman id 550197.859164; Fri, 16 Jun 2023 13:11: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 1qA9F8-0005oh-Dl; Fri, 16 Jun 2023 13:11:58 +0000 Received: by outflank-mailman (input) for mailman id 550197; Fri, 16 Jun 2023 13:11:57 +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 1qA9F7-0002qy-Lh for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:11:57 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 5c952631-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:11:54 +0200 (CEST) Received: from mail-sn1nam02lp2044.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.44]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:11:52 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by SA1PR03MB6547.namprd03.prod.outlook.com (2603:10b6:806:1c6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:49 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11:49 +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: 5c952631-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921114; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=7Ds7+HuYIyt6HEqzcj5MwosLlYKE7B0tHlsStdp/T7E=; b=N/SQvEraLBKcjAWOw+R8HJFPEP3v59y5XfQBdGy+YJJcBsLVEqXSOc0m Se8CfYqZIChfzywBGeiXzGjSvD6OBXn0RqRkh11kcFPQ9kcVyTS62nNOX 8yHlHW115KK4kGSFHP4JogTj0wE5kdhLI9FY5F05fo22EbmHxAaV/fvTR M=; X-IronPort-RemoteIP: 104.47.57.44 X-IronPort-MID: 112951618 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:QEWS8aBIH0MCgxVW/wziw5YqxClBgxIJ4kV8jS/XYbTApDJx0mRRy mcbXzjUaKqOM2vzKdpzbYm2/BlV75Pcm4A3QQY4rX1jcSlH+JHPbTi7wuUcHAvJd5GeExg3h yk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbCRMs8pvlDs15K6p4G1B4ARkDRx2lAS2e0c9Xcp3yZ6ZdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVDmZkh+AsBOsTAbzsAG6Y4pNeJ0VKtio27hc+ada jl6ncfYpQ8BZsUgkQmGOvVSO3kW0aZuoNcrLZUj2CA6IoKvn3bEmp1T4E8K0YIw6N1OGltN7 MYiJC0OMjOqheC40JerVbw57igjBJGD0II3nFhFlWucNtB/BJfJTuPN+MNS2yo2ioZWB/HCa sEFaD1pKhPdfxlIPVRRA5U79AuqriCnL3sE9xTI+uxrvwA/zyQouFTpGMDSddGQA91cg26Tp 37c/nS/CRYfXDCa4WPcqCPx37GWzUsXXqpDCeSoyvxNvmeC/UgRDQUnR3u2juOA3xvWt9V3b hZ8FjAVhbg/8gmnQ8fwWzW8oWWYpVgMVtxICeo45QqRjK3O7G6xGWwsXjNHLts8u6ceRzMw0 USSt8j0HjEpu7qQIU9x7Z+RpDK2fDMTdGkLYHdeSRNfu4W/5oYukhjIU9BvVravicH4Ei3xx DbMqzUig7IUjogA0KDTEU37vg9Ab6PhFmYdjjg7lEr8hu+lTOZJv7CV1GU= IronPort-HdrOrdr: A9a23:J2caH6BY+6WwG6HlHeg4sceALOsnbusQ8zAXPh9KJCC9I/bzqy nxpp8mPEfP+U4ssHFJo7C90dq7MAjhHP9OkMAs1NiZLW3bUQeTQr2KqLGSugEIeBeOvtK1t5 0QFJSWYeeYZTQUsS+52njfLz9K+qjlzEncv5a6854bd3AJV0gP1WZEIzfeNnczaBhNBJI/Gp bZzNFAvSCcdXMeadn+LmUZXsDYzue73q7OUFojPVoK+QOOhTSn5PrRCB6DxCoTVDtJ3PML7X XFqQrk/a+u2svLhyM0llWjo6i+quGRhOerN/b8y/T97Q+cyjpAUb4RFIFqegpF491Hpmxa0u Uk6C1QRfibo0mhA11d5yGdkDUImQxel0PK2BuWh2Durtf+Qy9/A81dhZhBeh+c8EY4uspguZ g7q15xmqAnfy8oph6NkuTgRlVvjA65sHAimekcgzhWVpYfcqZYqcga8FlOGJkNESrm4MR/ed Meev309bJTaxeXfnrZtm5gzJilWWkyBA6PRgwHttaO2zZbkXhlxw8TxdAZnH0H6JUhIqM0kN jsI+BtjvVDX8UWZaVyCKMIRta2EHXERVbWPGebMT3cZdI60rL22u7KCZkOlZCXkcYzveQPcb z6IS1liVI= X-Talos-CUID: 9a23:I40fc27SDwkIvmdp79ss5nUtAfoma0fnwGrTf2yRC2RnWJiFVgrF X-Talos-MUID: =?us-ascii?q?9a23=3A09brgAyB9z3WQ/FEN/QshIEf/E6aqPWzUVAxk7I?= =?us-ascii?q?4gdi/ES51IwaPrDmYWLZyfw=3D=3D?= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="112951618" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U/XAaXztHCW4n0L7sUejslu0aU3t8hQuZRD2RqfmfsKRofElr4VJWYpw9Uh+tS3Er/3ZvMQZvKUBolPtHEzQBg/SJPIicPOGOSc69dQFkSYGn9QzvbX+rimUxNkMVMeNgz7FJ2en01JBHVPTDOEbSOyzwT+gH8OuSeZc+xS8UZXNBrUELrjt+/fY4nfysczlXm51cC8vIwb+fFm4eXX9Obh9f6KamUcvqDGvwLcdZNQZ9+wvbet4movci7kQP2/9YUDY5t6J9/+CosjrB1Ox/NokpEGRB3TKw2R/mtFADXvgOzW3dkexllk5RZdNPtR0Yi6Il/uPMif7wlDV7rP5Pg== 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=K/kbRo92d6u5kFORF8OyzCqReC5oQpO77s0waaoKxaw=; b=Rb/W8B6asNkQP85/8067Ulu8Ob9rHuGVqMtTPoxa0w9uZXUiDJkKLmv7fdGBc0aL/U4qSjJ9nDoMpTKUQZxJyJJa82QWWwpIK0HLungVXzENnVvUw9ywR6PhngS7l5pHTq3Fw5WdDDCEvFQU395CByu7b+Q0THSnVtAC7VrKuw5ISJEEjbqTRbwp3+YLHTihW4Ihmw01SG7Jvoz9k4dJGsPjsidKtMAfh6aXjjop7cW1gi4ENtIJA7a+5pbLYeK4IdLwBjsbaEzy1fLuBFSjvHsHtJBabTTSOkOY/C8b5CaquNDeUO7dSsijc3ANIhf5+KNmjD5DfkE1Mune1AhNjw== 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=K/kbRo92d6u5kFORF8OyzCqReC5oQpO77s0waaoKxaw=; b=rPfiUnw6h6MNFxi7VKeQEb51akWHdcmAxeeOgqXORTMtjHAxLACLPJD6acr/fp/09rctk6gTu0lphitjfKhOwT/9gj02IKwYI0nZp7wrK4KTUkFZeNox3hoCzpaexPVBckij1c/81drJtI8h5Z+uTlm6kdoR8CXEpjuAsHAjR/g= 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 09/13] libxl: change the type of libxl_cpuid_policy_list Date: Fri, 16 Jun 2023 15:10:15 +0200 Message-Id: <20230616131019.11476-10-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0029.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:61::17) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|SA1PR03MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 0910a13f-c6e4-46ef-654e-08db6e6b3eaa 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: WySOezY4OMCfwUkSycr4gqPLIIXnfHJjMXj8Zg+FSyydrLdVqtxNUmWk8/8J98bOGQCdUTlJe8osMu9K4BDIYUjupM2FAjHGRNyrho3PLPv7z5wcmlTf0UgXPi3FWD3wtSUZtDEG5wZLTSfAlUdEHV5AljJjcyY30yh2feuxJZO9zVDWK+OF8mnS6/O0dBYWJ+uaRYMfgsJLp1pluSarggyBKrNhJHJZQllyrvPekMJT3iegfz9NZEEwK8etJ3OD2t0PqbaqoNz/epVfAJ5IkYyCX6TjKYj9BZ1zi9AATj2IAoDgbH/iCHOZQzMxYTeFDinEGmosTCFLMPlKvmJC6VVD7thDR9twS7NWhRupltZROb1yLeq3ILwMw1BQx7HuSG8YdkShUoqeWfcJQWafjfXwacL9deB5vKmzE1RCmxkeefqdco7OnW/ZmirnmqJjREwMnWYmf3qQiBb6JM2cw/CFOW0p4mU8AEH29gK6dvzERFxbzzl3dW7bWPZMBJjss2BTsrnqYhKRJ5hB87ScJ6aAt62RURdnYNHfWhg4pG3YE26rF6xBQACaebxCoyfy X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR03MB6423.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199021)(86362001)(38100700002)(8676002)(5660300002)(82960400001)(316002)(8936002)(41300700001)(66946007)(66556008)(66476007)(6916009)(4326008)(54906003)(83380400001)(2616005)(186003)(36756003)(478600001)(1076003)(6512007)(6506007)(26005)(2906002)(6486002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dExpL3hmS09DUDk5cU4xcWZXWXVSQVNWVnlUZFdnUG90WS81ZzlVSG5yQlYz?= =?utf-8?B?WFM2WkFXK1ZldFpsUDJhYUxMdDVjWVBkZFNrRjhqY292bVZvNHVJSzV3Um81?= =?utf-8?B?TjVsaTRKZnliMnpNdUtJMU55OENNVXh0cHg3NjFXTTBodGpLVGp2aHJXamVX?= =?utf-8?B?b3BHUGNJVFZjR2tUK2YraVVzTEdGenVjMkhrT25WNmxKRmoxd3laTFhiZ1RS?= =?utf-8?B?TUwrWnJ5c2RacGQvSUZldkZhSmZNNFA5MVdNOTRpKzB2SXBYeXpqODMzWTVO?= =?utf-8?B?YzN5SWhIUHk0MFpxU25KQ2xwcTRjWXdPbWZ1UEhBNXpvaExrNndzSjREUFZ2?= =?utf-8?B?SHJuVndkTm9La215bjR5ZHNuT0xkcUZMQlU5NDhmQUxISzBqcTBaV2NoT3J5?= =?utf-8?B?dnF4TURLR3lXR3FITS9tMTRQLzd4SCtBSTVSR052Vm1WT0JDOVhvVENjMFB6?= =?utf-8?B?Z1Q3bFkzSndMVkp1ejBmdmx2MktLOEV6S0VaY1FLL0JweDZlclh4N3F6RVpF?= =?utf-8?B?bnRHd3F2TnQ3WFd2ckpzdG5JeEJlTTJVS2JvRTNMYkt4Qm1tazZ0V0EycDJt?= =?utf-8?B?WW5ydFM3cFlNbmt1UjlPdUdMckQ5UVk0VjdKdUY0bFh3WUtVSXBUT0xMdzJO?= =?utf-8?B?Q1JrV21YSXRLbnpSNXNpa0g2N0NtMmcxMi9rRDlZd3RNM3NKSVMrekhvVTRu?= =?utf-8?B?ZURMWkRpSkJxL0VhTWZFZjRPeE5MdVpqMGgzSUFON1IvZUczd3ZqdWg2eFIr?= =?utf-8?B?cExKbXVhQzhjSndHU1c5amNpbWpQaTYxUnFZR2RzREVXOFg3bTQvbnFKeXpr?= =?utf-8?B?b1RYRG5xUjluRDlHNW9HaEdkZExtTnkreGJ2ZkEzVEFObGMxbGMvN3VaTFVV?= =?utf-8?B?cUJFb1UxWWgrVXo4dnBHaGRJekwxVFNZR21iaTRDbnFjbHFQTHprcnhTYTJM?= =?utf-8?B?Z3puV2lJdndxTE45NzNIK2l2dms2bERucmhXS1VhUGphUHV0eWVhWWJiN0N3?= =?utf-8?B?VGlUaWlCaXBzLy90SVh6VEdYR0FwckdrQ2ZnYTZla3FneVBYWG9FTi8zTkhv?= =?utf-8?B?eFNzRWNkZ0RhY1lPa0l0RFJ3enhCQkVaOWFHWTZFOU1Obm9UWVdiZTQ2OG8x?= =?utf-8?B?SUNRazdKdTkwM0c4TGYrY0FnMUdZNVFscVFwL1pwZytGK2J4eTZRSkJqUm5y?= =?utf-8?B?ek9Xay93a3FCQ0Q5TUZpV1M2UjlnWktJZGVvRnJjdU9DamhHL2w4UzU1dlo5?= =?utf-8?B?cUFhN0RrN0NqRHdnaDRIY1FxU0Zyd09WamdHZjN5Rng2bVp5azlkSisyR3Vx?= =?utf-8?B?UEQ0MFNzQ3pxS3dEQzczTElUWGNGRWpJbE9DZ2xlV0FndFhuWUlPQU1CaXpx?= =?utf-8?B?Nm5hZXV0Z0R5ZXhsMmtpNkJQelBnVTZsQnpuOGtqYVZ1MTAwQzEraU5BRzNn?= =?utf-8?B?SlRwUVpoZXVPUGVCdElhNlQ2Q1ZsZVlhZzUxVUVxdjh0RGE5dy9xVUM0NWc3?= =?utf-8?B?TkswSDRBQ245aW8vQXJLSFRFYTFPbDFLT0VYZWZZYkJPTGVLMG9WR0hKZW9q?= =?utf-8?B?UmowbnB6S21UbFV2QXEvM0UveUEwWWM4eW5pclIwM1lVeElkL1ZnMlMwUXp3?= =?utf-8?B?YVhEOVVZVkdkblE0NW56c1NkUjFDR205Q0pVS0trQWFvbHo5aHN3UXZyNDgr?= =?utf-8?B?QjJKcXRPaUNwYzk3LzMwb0VHRVdGc2NNbnVRbmNOV2tIL1FXY1dhTkZzY0NT?= =?utf-8?B?RFZmZHlYdWR5ZTJ5b3Y3WGtMOFRiTzl6d3RpTUprdkN1NEEzMUVidCtCZS9H?= =?utf-8?B?Z2d0K2lsUyt1VkJodDFRckdrSW1RZ2FaM1Q2ZmU4UGFOZTZvTW54OFY4MjVM?= =?utf-8?B?VjI4MGowdkh4b2dqQkRlazN1ODRxcFZmZXJxbWVXKzdmN1ljc3JSSDFwQWlk?= =?utf-8?B?ZUZUV1hta0hpVXVJTW5tZ1VaQjY4WFJ6TExWUlhubFR4ZG1iT0lYdmtNQmhP?= =?utf-8?B?MFVweFcrUXdxMHhKalYwYVFuY2ZGOUdWMDVtWW93RFRTSmZVcU9YQi92TXlF?= =?utf-8?B?Nkh4RUxFSXlKNjFLSSs0Qk16empyKzRCQ1ZwUTZaNUpWWWlnMHhvcTlydVcy?= =?utf-8?B?ci9TcUJobUVnMHhUNzNTa244QzFZWElibjZ3bk9mT24xai9qR0NkQ2ZqVlhN?= =?utf-8?B?a0E9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6XflWninR5RmXwYjCenMhw19t+o/NiKmD+bjgL3iHqBB9ReVdYKiVac4kfMHFSvK8PXJm5f/yPrN0VeaY2/vtd3VWalqxC3qfShcskIybL4t53IBB7ee5tAN13prbIxOICW3Ed0I9dQEvlZk80JGJ6HpmmeMY4QPcDw9rqdRgDgECxJ8ux1xSPDHiZ4r+aQyajoFtd9m4ZX4vLq2CMPImcFeIlZ+5UKarEzpyrnTap6uA4XH6d9uaVmilRpUjm2CzthGqHrPgUZPoEMWeCTKpuTqSpnbOC7pBJ3JlNcuEwRCQ4L1T0JRtm0uBk08Ys0diXf9gutUExxoCP9ueZCVtNOXJimvNu5RRIBzOlNMI3e9+JW+zx1zqi/nn8pYA/cAjTUIQcuueteh1VxVySHtOP9elMzIQCgDUecLAtJSp6IyITexKVkdkII5sIoMVTnt4avPhGgKPYvjseoSbXq9R9As5aWw7nnU/RiLaG3RD8f8VGB81b9FfuZjYO3wLybkv0inomSY3Nb0lBxrD3Rgi1S8bRyRMCutkxBGnJ6E/s6FKmQy40wlJ6cRlS8BUftbYsPMgyQNeop9ZdRt1koAxb1RxbKo9JZA5zuUnzJ/1kY3oaotSUy5eIbJXetBrPAX1g2QgK5f2/HcuwLtLjAQWonuFQXXryTP4z4ucJ9RLe5jebteu/BXt0G+GVbVxEBRRG94vxPqkQ/i74SghOZBCz4WeV03qwi+tn0xhpwmmRDta/oVAfp+Gfs2jdPH7d7Ro4NkKTVHSTEJpk+NBlUJSUsJh6JSn6vVC0/UTZaeuZckBCHvkmk/9nu4CM903tM1 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0910a13f-c6e4-46ef-654e-08db6e6b3eaa X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:49.6398 (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: NZS2zBB7fvzaiOj2F1yXreu+4Zl/3VxrJZu6zLje+mm0FM5FaoJ1jjk/nvWgm2zqSYKnm5rfymYs9zOEfz5DTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6547 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921134498100001 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 --- tools/include/libxl.h | 6 +++-- tools/libs/light/gentest.py | 2 +- tools/libs/light/libxl_cpuid.c | 49 +++++++++++++++++++--------------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index cac641a7eba2..41e19f2af7f5 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1459,8 +1459,10 @@ void libxl_bitmap_dispose(libxl_bitmap *map); * 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; +typedef struct libxl_cpu_policy { + struct xc_xend_cpuid *cpuid; +} libxl_cpuid_policy; +typedef libxl_cpuid_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/gentest.py b/tools/libs/light/gentest.py index 1cc7eebc826d..207f988a741d 100644 --- a/tools/libs/light/gentest.py +++ b/tools/libs/light/gentest.py @@ -194,7 +194,7 @@ static void libxl_cpuid_policy_list_rand_init(libxl_cpu= id_policy_list *pp) }; const int nr_options =3D sizeof(options)/sizeof(options[0]); char buf[64]; - libxl_cpuid_policy_list p =3D NULL; + libxl_cpuid_policy_list p =3D { }; =20 for (i =3D 0; i < nr_policies; i++) { int opt =3D test_rand(nr_options); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index c96aeb3bce46..ded0d0b8bc15 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -19,10 +19,10 @@ 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 *policy) { int i, j; - libxl_cpuid_policy_list cpuid_list =3D *p_cpuid_list; + struct xc_xend_cpuid *cpuid_list =3D policy->cpuid; =20 if (cpuid_list =3D=3D NULL) return; @@ -33,8 +33,8 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list *p_cpuid= _list) cpuid_list[i].policy[j] =3D NULL; } } - free(cpuid_list); - *p_cpuid_list =3D NULL; + free(policy->cpuid); + policy->cpuid =3D NULL; return; } =20 @@ -62,9 +62,10 @@ 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 *policy, + uint32_t leaf, uint32_t subl= eaf) { + struct xc_xend_cpuid **list =3D &policy->cpuid; int i =3D 0; =20 if (*list !=3D NULL) { @@ -86,7 +87,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 +346,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 +401,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 +428,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 +503,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, NULL); + pae, itsc, nested_virt, info->cpuid.cpuid, N= ULL); if (r) LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); =20 @@ -527,9 +528,9 @@ 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 *policy) { - libxl_cpuid_policy_list cpuid =3D *pcpuid; + struct xc_xend_cpuid *cpuid =3D policy->cpuid; yajl_gen_status s; int i, j; =20 @@ -556,7 +557,8 @@ yajl_gen_status libxl_cpuid_policy_list_gen_json(yajl_g= en hand, s =3D libxl__yajl_gen_asciiz(hand, policy_names[j]); if (s !=3D yajl_gen_status_ok) goto out; s =3D yajl_gen_string(hand, - (const unsigned char *)cpuid[i].policy[j], = 32); + (const unsigned char *)cpuid[i].policy[j], + 32); if (s !=3D yajl_gen_status_ok) goto out; } } @@ -575,7 +577,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)) @@ -587,7 +589,8 @@ int libxl__cpuid_policy_list_parse_json(libxl__gc *gc, =20 size =3D array->count; /* need one extra slot as sentinel */ - l =3D *p =3D libxl__calloc(NOGC, size + 1, sizeof(libxl_cpuid_policy)); + p->cpuid =3D libxl__calloc(NOGC, size + 1, sizeof(struct xc_xend_cpuid= )); + l =3D p->cpuid; =20 l[size].input[0] =3D XEN_CPUID_INPUT_UNUSED; l[size].input[1] =3D XEN_CPUID_INPUT_UNUSED; @@ -627,10 +630,10 @@ int libxl__cpuid_policy_list_parse_json(libxl__gc *gc, return 0; } =20 -int libxl_cpuid_policy_list_length(const libxl_cpuid_policy_list *pl) +int libxl_cpuid_policy_list_length(const libxl_cpuid_policy_list *policy) { int i =3D 0; - libxl_cpuid_policy_list l =3D *pl; + struct xc_xend_cpuid *l =3D policy->cpuid; =20 if (l) { while (l[i].input[0] !=3D XEN_CPUID_INPUT_UNUSED) @@ -641,9 +644,11 @@ int libxl_cpuid_policy_list_length(const libxl_cpuid_p= olicy_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 =3D &pdst->cpuid; + struct xc_xend_cpuid *const *src =3D &psrc->cpuid; GC_INIT(ctx); int i, j, len; =20 @@ -652,9 +657,9 @@ void libxl_cpuid_policy_list_copy(libxl_ctx *ctx, goto out; } =20 - len =3D libxl_cpuid_policy_list_length(src); + 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 --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921633; cv=pass; d=zohomail.com; s=zohoarc; b=cp52IfJ8dNWAWdUnhaXaOSN/uZE3rS6LPMhWrCcEY8RyQz2riHJLLexuYqJQTCIbpaXrMbi7ZiF30shOMsl15p47pN6252Yr0UtX2/KuWEhzYz+L+K1Hw6V9ZNw/xyQujZ2xZtWQ+SHisgR51hV7RSHztjlEg7nbiDkkHVdvHaw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921633; 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=B45CPjJS2wNothOhTq7SFJvAgWc7InS6Fke8gTqrsao=; b=hIvGUVmXCSAeG8wjs5EC9awimgOKYanvgCgh8xHH7hx5gkLWHBCBbnDdX++c5DInl70eJR8t6vg+N6kVCOg4kqxjhCbE62B+HXBN9FTc+U9NVUPsGdbmz6oS6YDUcV3cwyUu7gmfQSGQPKyyHaTGrLI7PDyJwLhHG5JgPxZ0Rfc= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921633348827.0863976093195; Fri, 16 Jun 2023 06:20:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550226.859204 (Exim 4.92) (envelope-from ) id 1qA9N1-0000oa-EA; Fri, 16 Jun 2023 13:20:07 +0000 Received: by outflank-mailman (output) from mailman id 550226.859204; Fri, 16 Jun 2023 13:20: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 1qA9N1-0000o8-AH; Fri, 16 Jun 2023 13:20:07 +0000 Received: by outflank-mailman (input) for mailman id 550226; Fri, 16 Jun 2023 13:20: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 1qA9FF-0001xG-CC for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:12:05 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 625e0382-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:12:04 +0200 (CEST) Received: from mail-bn7nam10lp2107.outbound.protection.outlook.com (HELO NAM10-BN7-obe.outbound.protection.outlook.com) ([104.47.70.107]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:12:01 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by PH0PR03MB5736.namprd03.prod.outlook.com (2603:10b6:510:37::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:11:55 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:11: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: 625e0382-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921124; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=jjb2XN3FlzP7GiqggDJ+sTgjB6pTu8yM2HN3iWebSd0=; b=QHsaGcxfDmK2g9BUOHwxDL1rkqdpBALEPG7dszmCzPCLYXohDNSWgDdH OtlqJeRUo6A6YtWCiyEYi6ad3/PTkZRVT6BW3yIEBLt1NrZL7620hOtYu E2fYu5zksfZuc9Tb4fsqQ/0SpCTsIjJIE8vX2YsaoP3G29sVt/Mf3R6Eq 4=; X-IronPort-RemoteIP: 104.47.70.107 X-IronPort-MID: 111813143 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:5IY/4a27Ou1eVU7/NvbD5fdwkn2cJEfYwER7XKvMYLTBsI5bpzdRn DQeUWiBafaPZWSnc952YIy08x4DsZXRzYVrGlNppC1hF35El5HIVI+TRqvS04F+DeWYFR46s J9OAjXkBJppJpMJjk71atANlVEliefTAOK6ULWeUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo tq3qMDEULOf82cc3lk8teTb8HuDgNyo4GlD5gJnO6gR1LPjvyJ94Kw3dPnZw0TQGuG4LsbiL 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiI+t5qK23CulQRrukoPD9IOaF8/ttm8t4sZJ OOhF3CHYVxB0qXkwIzxWvTDes10FfUuFLTveRBTvSEPpqFvnrSFL/hGVSkL0YMkFulfIUBj9 KUJORY3X06mlsev2qDnctdvv5F2RCXrFNt3VnBI6xj8VK5ja7acBqLA6JlfwSs6gd1IEbDGf c0FZDFzbRPGJRpSJlMQD5F4l+Ct7pX9W2QA9BTJ+uxouy6KlFMZPLvFabI5fvSQQspYhACAr 3/u9GXlGBAKcteYzFJp91r137afxHiiBNl6+LuQ+Kd00Aai1G8oNSIYf1CSvem/iW2jVIcKQ 6AT0m90xUQoz2S7Q9+4UxCmrXqsuh8HR8EWA+A88BuKyKff/0CeHGdsZiFFQMwrsokxXzNC/ l2GhdTyHhR0raaYD3ma89+pQSiaPCEUKSoIY3ACRA5cu937+thr0VTIU8ppF7OzgpvtAzbsz juWrS84wbIOkcoM0Kb99lfC696xmqX0oscOzl2/dgqYAslRPeZJu6TABYDn0Mt9 IronPort-HdrOrdr: A9a23:I6m4saAme8S7pJjlHeg4sceALOsnbusQ8zAXPh9KJCC9I/bzqy nxpp8mPEfP+U4ssHFJo7C90dq7MAjhHP9OkMAs1NiZLW3bUQeTQr2KqLGSugEIeBeOvtK1t5 0QFJSWYeeYZTQUsS+52njfLz9K+qjlzEncv5a6854bd3AJV0gP1WZEIzfeNnczaBhNBJI/Gp bZzNFAvSCcdXMeadn+LmUZXsDYzue73q7OUFojPVoK+QOOhTSn5PrRCB6DxCoTVDtJ3PML7X XFqQrk/a+u2svLhyM0llWjo6i+quGRhOerN/b8y/T97Q+cyjpAUb4RFIFqegpF491Hpmxa0u Uk6C1QRfibo0mhA11d5yGdkDUImQxel0PK2BuWh2Durtf+Qy9/A81dhZhBeh+c8EY4uspguZ g7q15xmqAnfy8oph6NkuTgRlVvjA65sHAimekcgzhWVpYfcqZYqcga8FlOGJkNESrm4MR/ed Meev309bJTaxeXfnrZtm5gzJilWWkyBA6PRgwHttaO2zZbkXhlxw8TxdAZnH0H6JUhIqM0kN jsI+BtjvVDX8UWZaVyCKMIRta2EHXERVbWPGebMT3cZdI60rL22u7KCZkOlZCXkcYzveQPcb z6IS1liVI= X-Talos-CUID: 9a23:4UQj2W4Ai940jGX7adss1G85G5k0Y1vn/Sn1MmqhE3Q1cIOWcArF X-Talos-MUID: =?us-ascii?q?9a23=3AHCQjBwxjAQpLSKsRNkZJxFHd5DaaqKr3FhBWoIc?= =?us-ascii?q?FgPS7OwZ7EiuNijeUX4Byfw=3D=3D?= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="111813143" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L39OD1CPGuXNeI5nj4RcqImH9pRJRtXky9MIsyAMNfwK298pMOBlHN6Kb9U76Dk/x2/GcorS+qN0ixy3fj+/ckR2Q9sedcypynYvnDQgGyGM3rrYUE6MMm2/obcsPzO5lZ4JEkMUOABXgGV8f37F2tNugq3j7OEDghGoA7Mvk5WpdL08Sq8d8eEmwKz2/Bp1oXfgPfbXDhvqGe34ufFsQrgA0Q/llI+zx+50m12TdD20QhlhSY8i6FoK7Q6Iou5i1kSZ6GxJOqFvW00s/0MNLxYK6iDQpv0lOZtSxY68f0PNA+IPRnAauVpnShtxETJUs3Q98Ndg9/5eD/TbyR3fhQ== 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=B45CPjJS2wNothOhTq7SFJvAgWc7InS6Fke8gTqrsao=; b=dlIBDVNjwhPGu+qxHkRCWNQllsfmIblm8Wq9piROwWkmrhp4lvUaTSiYxnOJ6r2ExkzcWkMdU5FgheCRjlCj0OiGZHKuefut95ESwnfwQYwA+sS+mCULeREej2/cwQ8dAtSnfpyrjxieYQ5+ItdMMCbzu38UEtYFqo3pxjOtplnQBV7GkyCEMfJ9+zsCNa+FUEAgmSMvMpEUSwwfA7EdC02z5jtv7ECisF30O9YVNL9wZjHu8yZU3/4ZG37gPisU4mkuTnBgPwHKjrcXYD3/TkEQT+32FLyNf7c/oPFPmKocrE0bsGQdP3vuPQ9XzpRcwMTE2WT42MH80/4vmkUaOg== 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=B45CPjJS2wNothOhTq7SFJvAgWc7InS6Fke8gTqrsao=; b=Yi1y4vscRanWwa23Owoxs13vmv87bjr+v1cg7j3/BUlmvNg28486jFFRDxo34zLjs5xm+hrjqUA9A95dU1RStA7Sj6NX/LjrVlTuBKD7K6J6hnzl2n30y2etMMtJWVZ2yX0RO78zt0oqkOoqAw02X86PI8HrZSKhINYjvQ2g+cw= 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 10/13] libxl: introduce MSR data in libxl_cpuid_policy Date: Fri, 16 Jun 2023 15:10:16 +0200 Message-Id: <20230616131019.11476-11-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P123CA0056.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1::20) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|PH0PR03MB5736:EE_ X-MS-Office365-Filtering-Correlation-Id: 0302a3f6-12bf-4eab-cbff-08db6e6b41ae 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: kzDQcHNV49mBBTM1/RF/K5wHDrJs3xzhPThNsdgJXU0h7oCoSI2uEw9mR8zsqwNiXq16yLAWpiLXwZ/kA7fjLTDsR4E7Wo407S3tFE3BViEj/RKwZ0oi3/lfnhXxWCn0lUgPHc5T0KI4lgMMzGusPc45Hlf9AIpWBEtzMQqIjV5aH2sS0m6Gc/+uV2UyVBPkH7B3ix/j/7RwbFHKb/ETWrUlI//LozeDFo2n1VwFu5NgI35n6msmua8F4KcoHh3sGTMQruLTTbL1L6139w36xkgayVcIJlfmHWOv0rvT1ibnKnf6SONEBGkufb7ou8mY+Ly0sJ4ezQU2GrxiY3wrsLn4Ql+2i4WNPcO7CDE6v6/9zHLFFpLo9zmKO9w6t2Ty8xI6CPv1KNtmSzBm8vCTnn+V0HMYpiPGZmbuz0U/agmXGqiT9ifm22jrbFFMaxQ5QhwYX7RfD6roZfqvCAM5ZArs3FO+Mz+YC0J6hZG5IyajN0MA7pJR/inwY8mKviMGBlhCVHsC+OWtXn03vwu08p1I7Sxl+049V66HVm9muyyS5Wv6rlhn8VRXfesjZUux 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)(366004)(39860400002)(346002)(136003)(376002)(451199021)(54906003)(41300700001)(8676002)(86362001)(66946007)(66476007)(66556008)(6486002)(6916009)(8936002)(316002)(6666004)(4326008)(36756003)(66899021)(478600001)(6512007)(26005)(5660300002)(83380400001)(6506007)(1076003)(2906002)(186003)(82960400001)(38100700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YURaRzVkeDdMQ3g4SkRjbzhLR1I0SFdXWENwbnpJV3l4OWpwY0FTcDVmMXRn?= =?utf-8?B?Y0xNUTdoWVZhVTBITkVyTWdzc1hWMXhTaGZXVTFrWG1QekxCSEdsaFVFaURh?= =?utf-8?B?bXpXYXdSSFdRNWswdWU3RXZJOGpMN2tUNnBkcFdvbUlUamlaVWQvYnk3YWJF?= =?utf-8?B?VS9mWWg3dkVCcEtBUGhmekJ3ZnJGTGlhNjlUMmJmVTV6K2U5dGtTekRHV243?= =?utf-8?B?c2VKQUk4emFOTmVnZm5KREswOFFEbU1XZjd2cVE2WEpSR0x2U2hTemFlQjVv?= =?utf-8?B?c21iV216VURRZlJoMDFCYVlRU3k0YmFyUEdzSFhCYVlGM3RwenZxUUM4UWZJ?= =?utf-8?B?eWVEUkxFVTZRYm1nMnFEYWwxOHhSTFBVWlV6RmdRVDFGaXJVMTJ6cmJJUGsw?= =?utf-8?B?YlNMZGhnMHVEN0g0MW0rRTNtaVYreXIwZzlWa1lrdkpUc0FxRGlINlFYS2xF?= =?utf-8?B?Myt0RnduZkhjNlZiUm1yTU11bHNISlMwTTFCV3R1bXZ0bGEvZnIzYm03cWNC?= =?utf-8?B?UmdpcTFWcGdQdjZkQUV2ZHhtbWxCc0NzNWRYYkM4dWpGcXZkSUR1Z3hnRDVn?= =?utf-8?B?ZWRtc1prTFZLUnMyc3BidjdYU1I3UnJpRmJaK1RWZnB6emQ4UVlocHhZVXhn?= =?utf-8?B?VlJZd2tFUERscXhkR2ttS09BNVNza2dtUHprQ2t2UkNCa3VRcnUvcjRNV09M?= =?utf-8?B?VUNTamlPVXBRdFI0amdkZ3dkMW9PT2F3QSt4VGdndTFrdVhoeWJDMFo5R2lj?= =?utf-8?B?UHpQckdzN3FIaUZSRkxydm5DdHJIT01YcE90VFl4S25sUGd0b3Bid3Q1YVE0?= =?utf-8?B?b0JZc3UybGhGK0d2SW5ZdGFvTGZqSjJ0WDNKZitEQUZzRXhlWEJRc3ZGRHpM?= =?utf-8?B?T3orREtwbFNaN3F1aG83SnVXOFhsT3NybWhpR3htZ2cyZlZBRFFUeWtxRCt6?= =?utf-8?B?S0dRYTdrWUIwcW1EcURCNFdsKytWVC9PRzRPeURRN2QzTmtwNERuaThJT0dZ?= =?utf-8?B?ZEZ5M1JhR0dnOVlEdjhuclh0UEw1TlZiUUNsOUxOd2FRV05aTTVtMm1STUVp?= =?utf-8?B?Q3lpb3BZZG9lOUJTY1hiSUpvL2R1aW1xVHZEVzlRclU0c0JJNTJvOUJ3MzNF?= =?utf-8?B?U0JxY21qVlI2UmxsY3Fab09ZekFQUGNPOFZWMmxyMXFBZk9YL2RKSmdzZzU0?= =?utf-8?B?eEI0VUsyWVBvMWNWWG5MWkdtRjdRTm8vNFBHeGRKU1RLU1I4NXZiZFBTNFAr?= =?utf-8?B?bDZzbEZzZ0VBRlluRmF0SFBLbXZ0Mzh3R2ZsZnR4T29qK0pmY2VoQ29SUEdI?= =?utf-8?B?NTRDQTBDSkxMRXNsTmtUelJpNE53bE5UTVNPTzVMdCt2eUNOaS9RUWtjb0E4?= =?utf-8?B?T1VORStBRUkzRFJoNkVKVXRkQkJMME90aWNWdEFySzk0dWdxZUU4MHVncGtr?= =?utf-8?B?TWRMc3FQVUVDNFNFWm1HMUM4UGVicEZNRCt2UmJRK2JKMnk4RmNxRnZMdlBq?= =?utf-8?B?bmhPUjd5VmpyN0tML1E3dlRBTTkwODVVOEp0STFMekVLUXkxZm95T3Nka0xO?= =?utf-8?B?aHlZTzYxWG10cm5ZV1lqSms0VzdMbFg3MVdDWTZsY0syekdPSXgwbzAydTMx?= =?utf-8?B?aVpycnl6ZzBNZUxreE8wazkwVEV1S29kRW1ZbG1jclZQZGV6eTFSbkR2Ym1y?= =?utf-8?B?d3ByY2FvSGdYcmRYQlRneWlIbjN5OTZEOEYzVFJiMXRQcUxBUEwybVV1LzJy?= =?utf-8?B?bjFadXZWOVlLM3NZZDRXVWw2QTk0Q3NOYmp0Q0RzNFBaUC94dFpwbk9CYWJC?= =?utf-8?B?dTRnb0JKdGtEeW5xWG5JUUdKM0tUNFJaWnZVV3R6QndPN3BxOG92QnAzS2t2?= =?utf-8?B?MXhaMHFUbnBtaDQzVDhsR3l5d25ZaVRvUDF1NXFlZy9VZ0MybDg3VFM3UWE3?= =?utf-8?B?MFB0eWsybzFRaDlESGRTMjNyMThTUDI0RkhyeXQ0NktqcFl5RXJCV2JNMWVJ?= =?utf-8?B?anNiM0dQOWY0ZmVHVWJNYXBPdTRDYnFJZjBSdDQyLzRUWVVvT0l5QW5wQlZn?= =?utf-8?B?RWNTVDUrbC9WcWxlb0FvZ2R1NjNJRXA5cm9nRjIwMUVaTmtKd3dvZ3o4bmNx?= =?utf-8?B?YXpxT0RhOHFRTGFHbUM4LzlYdXdxTmQ5aXVkWEYzZDcrbkloazNzVmFrRTRL?= =?utf-8?B?VHc9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: vRyHWjTy1+FVfaec7cefF9egrkB7NczVdeUnSrRCMf9TSnL0GxUJB39tAGaJ4UOivmELb47arMCI0iehuZUg+tG/7eAdhZooiWNzfioSEWEy2eWSlbNn30Y/tyxdPBvDYNbq4feQhhLIoFkaluke1il762qWyFHkgnNqhEfes5hLqy3zO8tKgRFNMjvqwszEITMWIGrlIHm6t7IgkBnkL+GgUu1XnmUqMr8ygohVYf/4BZRn6SiH747zZeZu5Hjjcq1Y8UB3qQjsddVu4a52dWLIAmk5wC2eVJfZzviYkADhwHw0KMhZkqVQ/pALeT1egxzeP+A+mn0YLTohZJkbNZ2idCWhJrVy/BIGec2qLL9nPFxlpSH01gV2Nil1nR3oxLSHPPJw33dvuP2EqlRaVlKBkXj0xcEftsT1D5B/XgN455iIyzxVY7L5Vs2fWdRJr2zsQZUgmNY569/CAP5An6EyexBdjDisW+SnDgYaoahSWd/xK7yLx7a3cajcVw3fvTfZl2kQBOXtRowrqATh69j0swlPXjlZSO7z6+SIHSWqzokuj62z4GBgu7yWFcyUjZ0/Ez48RoPg56uP6PuRFYSpRvGd9Ce0VlppriexlsGfQvtnlDOiAMiWu+Lky4zMH/QPOFzgNoHyY1Slmz4dX7SP3Bruv9dcSxPB3YJ/gakNH31i9shvqmiTRDk9JYgfhHDGElP/utkvtCzNoCtOqyJ2j0+z0T6iENQoYwHOv+LXc/ALZxxs4I/m5+//SnmTM+ftD2S4hrRhxV28wanFJVOuJECSKYOwKhfF119KFyVYGjq7Y88cL0VME+NAZcjE X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0302a3f6-12bf-4eab-cbff-08db6e6b41ae X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:11:54.7219 (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: HJLNTEiyLDVB4xBzQBtC6toth8H17u52AQA9oMIIgZy8Nnj2fejzP8GLfrIa5RH4uuQfqBfRaMGT9fYlUJmXkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5736 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921634187100001 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/include/libxl.h | 1 + tools/libs/light/libxl_cpuid.c | 31 +++++++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index 41e19f2af7f5..4e7b08ab5027 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1461,6 +1461,7 @@ void libxl_bitmap_dispose(libxl_bitmap *map); */ typedef struct libxl_cpu_policy { struct xc_xend_cpuid *cpuid; + struct xc_msr *msr; } libxl_cpuid_policy; typedef libxl_cpuid_policy libxl_cpuid_policy_list; void libxl_cpuid_dispose(libxl_cpuid_policy_list *cpuid_list); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index ded0d0b8bc15..7261c1f1fd82 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -21,20 +21,26 @@ int libxl__cpuid_policy_is_empty(libxl_cpuid_policy_lis= t *pl) =20 void libxl_cpuid_dispose(libxl_cpuid_policy_list *policy) { - int i, j; struct xc_xend_cpuid *cpuid_list =3D policy->cpuid; =20 - if (cpuid_list =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 (cpuid_list) { + unsigned int i, j; + + 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); + policy->cpuid =3D NULL; + } + + if (policy->msr) { + free(policy->msr); + policy->msr =3D NULL; } - free(policy->cpuid); - policy->cpuid =3D NULL; return; } =20 @@ -503,7 +509,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.cpuid, N= ULL); + pae, itsc, nested_virt, info->cpuid.cpuid, + info->cpuid.msr); if (r) LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); =20 --=20 2.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921633; cv=pass; d=zohomail.com; s=zohoarc; b=jSJDwTYqFHO59aElkm9QQg5d9niWpHoB5HPZBOEPE25dy7P6DSYExVxqS8ASpwxqAQfrZQ2b8sd39dR2nxHLXCG+R+AiBSgXHFdCZEFZjreMz6PQkw45q2ulpbks6GwCKxGQKxz91+SKrmnOQJzWgsvFSnL3HAFcqV4hicsStB4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921633; 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=89oNHMjcOQaqY5FhZmJT10qj0SRQfG/Z1me2QYyTjBQ=; b=jaXnYgeZYA73zbLDGf1Hcb0PU4gByQjuVSfnJQAUEpIU1oopCe+FcNOEec8dFNxT2Vq4v/bVWKwC2u5Ixgucr7ZgqfhXFojErPSnKGrj6iHoaQIknc53acBcLPbYEZolPAZ2OkrQZ1enLixVCRUk5WPnnNijasJo7iEuCl0XxWk= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921633781373.5305134919404; Fri, 16 Jun 2023 06:20:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550222.859189 (Exim 4.92) (envelope-from ) id 1qA9Mw-00082C-1i; Fri, 16 Jun 2023 13:20:02 +0000 Received: by outflank-mailman (output) from mailman id 550222.859189; Fri, 16 Jun 2023 13:20:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9Mv-00081O-Tn; Fri, 16 Jun 2023 13:20:01 +0000 Received: by outflank-mailman (input) for mailman id 550222; Fri, 16 Jun 2023 13:20:00 +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 1qA9FH-0001xG-0d for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:12:07 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 63cb7b89-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:12:05 +0200 (CEST) Received: from mail-bn7nam10lp2107.outbound.protection.outlook.com (HELO NAM10-BN7-obe.outbound.protection.outlook.com) ([104.47.70.107]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:12:03 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by PH0PR03MB5736.namprd03.prod.outlook.com (2603:10b6:510:37::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:12:00 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:12:00 +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: 63cb7b89-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921125; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=gVwZvkh6fQpNEwo+H17Wdk8WJM37Ao2vdvqxgWh3rWk=; b=IUZBPAIZEX1aBbKSgGnZdSRrKcwFpZ5DpCMXnKSGwATVme6zrNyKrik3 61r9IFEtRpvcKWLoWt6mb2Ps0qeQgqBgkO3uSju/qlQ5PiCvxNySLctGL T4I8vmgkmcPirYJ7aqgnyCUpGMmTK+COqM3x2KZwDv9LHaQEkesoEPU/X U=; X-IronPort-RemoteIP: 104.47.70.107 X-IronPort-MID: 111813151 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:orUHMawl11adrcS8xYd6t+cTxyrEfRIJ4+MujC+fZmUNrF6WrkUBz mBMWj3TPf6OYWP8co1xbdm28EwFscKAy4JnGgNp+SAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s ppEOrEsCOhuExcwcz/0auCJQUFUjP3OHfykTrafYEidfCc8IA85kxVvhuUltYBhhNm9Emult Mj75sbSIzdJ4RYtWo4vw/zF8EsHUMja4mtC5QRgPK4T5jcyqlFOZH4hDfDpR5fHatE88t6SH 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KTpA2 uQzOj5UVQqKlfu/0oq9bs41m8t2eaEHPKtH0p1h5RfwKK9+BLrlHODN79Ie2yosjMdTG/qYf 9AedTdkcBXHZVtIJ0sTD5U92uyvgxETcRUB8A7T+fVxvDCVlVQuuFTuGIO9ltiiX8Jak1zev mvb12/4HgsbJJqUzj/tHneE37aWzXqgAd9LfFG+3s8wm3m5nmkINBpISUO0n+Ll1Uijes0Kf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZebPQ2uclwQiYlv neLkMnuHidHq6CORDSW8bL8kN+pES0cLGtHbylbSwIAuoHnuNtq1k2JSct/GqmoiNGzASv33 z2BsCk5gfMUkNIP0KK4u1vAhlpAu6T0c+L83S2PNkrN0++zTNfNi1CAgbQD0ct9EQ== IronPort-HdrOrdr: A9a23:23Cj5q4iJLsdHkRWOQPXwVyBI+orL9Y04lQ7vn2ZFiY5TiXIra qTdaogviMc0AxhIE3Jmbi7WJVoMkmsjqKdgLNhdItKMzOW3FdAQLsN0WKm+UyYJ8SczJ8U6U 4DSdkYNDSYNzET4anHCUuDYrAdKbK8gcOVbJLlvhJQpHZRGsNdBmlCazqzIwlTfk1rFJA5HJ 2T6o5svDy7Y0kaacy9Gz0sQ/XDj8ejruOtXTc2QzocrCWehzKh77D3VzKC2A0Fbj9JybA+tU DYjg3C4Lm5uf3T8G6Q64aT1eUbpDLS8KoMOCW+sLlVFtwqsHfpWG1VYczMgNnympDt1L9lqq iPn/5qBbUI15qYRBDJnfKq4Xiq7N9m0Q6f9XaIxXTkusD3XzQ8Fo5Igp9YaALQ7w46sMh7y7 8j5RPsi3N7N2KzoM3G3am8azh60k6v5XYym+8aiHJSFYMYdb9KtIQauEdYCo0JEi724J0uVL AGNrCr2N9GNVeBK3zJtGhmx9KhGnw1AxedW0AH/siYySJfknx1x1YRgMYfgnAD/pQgTIQs3Z WyDo140LVVCsMGZ6N0A+kMBcOxF2zWWBrJdHmfJFz2fZt3SE4la6SHkIndyNvaCaDglqFC56 gpeGkoy1IPRw== X-Talos-CUID: 9a23:0WbyqmGH7gL+McWAqmI8+mEMMdIrK0bHxWXJKl2AD0JOEaCaHAo= X-Talos-MUID: 9a23:fj4BbwkELgsnnFh1tZmRdnpTbtxMyfyrE3wKz4ketPefaXN2JhaC2WE= X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="111813151" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IFCKKBl7hS7DL7MymfjABQ7xajgt0ekYIi3uGE7SIxRuCqgPdt7L3xi14SPIyE0SrEKdyAuI1ZKWDWyDa6iPT8XddDFP03urCA066WSPLyvIVRoC4vr8UY5kKWgdILbSvsS45h0KMdG/f8/EcorWNaeauwkmWNUDFhOHfoFf7yN8m95dkH/ib/vRwBbyVePvmE72L3IVVTBzyWlA01WQzYRb5Aga0XrnTVJ9fitHqcXthjwHGv3xuH3RY4rjW/hYuetZvz4L8IkAfiGtitwzoUhFyuwEtOJHMGdvITciJsu3p9LzXKDJSCpC21r810vzUu+48E/K5hL646ACqdkIvQ== 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=89oNHMjcOQaqY5FhZmJT10qj0SRQfG/Z1me2QYyTjBQ=; b=GW8MW/ZlXtuVF+UgQn9g0dEsCYlF/8RoZirBlZRBPumCyhbhb0zlpV7vJxuDAn+vul8AYVebdDhnVUACxzVpI5ygQAJN6SdH30sG7dgd1fpKmtZvA4qWsKPTTXzpI8L9cQvCwA2LqOpEqLT+C1edRotmPmiOGlArY0BgX6VB/8Py2t2bRVPSPfClj9WEh+izT9b2IwTaTYD0V0WUDLMiL/14vLumQ0YqZpVbcRhv1IRz+8bJfZ8wXrS10e5WhDvA8NYJEeNXH36eubCrL/Yxr8BElSqb1zosD8MXfQwjIGu8qQaDLlv9VFn7baMqyRtB4OWm0HsvAYmvtLZOlj8OMw== 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=89oNHMjcOQaqY5FhZmJT10qj0SRQfG/Z1me2QYyTjBQ=; b=rbNp8KRPhdxB7/HUqKQcSv6EWTJ+wUw+jElUqBx6rRoyDqwonffyg7bjeuVo5BgJTGXtyhhMbzXRjJFyewnVol18Xaf8KG/Mg7Jza704CnxcG9+eurGgQdExyBF72nek1AC2VRURNYlhLafBAr43Ty8WJNbTneHFZQXP3gR5S24= 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 11/13] libxl: split logic to parse user provided CPUID features Date: Fri, 16 Jun 2023 15:10:17 +0200 Message-Id: <20230616131019.11476-12-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO2P265CA0329.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a4::29) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|PH0PR03MB5736:EE_ X-MS-Office365-Filtering-Correlation-Id: d0b4cf0d-b3be-4b0c-e5b3-08db6e6b4533 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: xWFStiwylD/og+D1k+buFtbGq8HNplTDTv+s986cGjJqI1GPWEaxsirHM7HkBdz5Hzzi3PaUe25YnUws47k0Gpve0JsJCVFCgGQhf7s/2RD+as7Zmk0DHTisgBAJC0Ljn2YJjWBioYOh2XMl0jttc64u88+3ehpx9Co72Zw6N+FLfdPmjMN9JAERWIT4+p+1y+JkxyFC8a/tr1muHbn9Kb9RGjRwAD+LEFVpSTGnWa/5BAeAtjgcDqKKTcIJjRBQnECER+E6vVBcgJRdCH5KUhyRkPAVccwafoG2hiYldj5uRhnVTGfHaxS1VFj6PItBidQRZFWgj+TYZvOAxQ+xKG1BieLPqn+t5BqHU/S5K9j9sxK1CO/fpwEfo1LU/twzFOSe0OcojDIfHC3qscyTWZRSxe6/bAxRFgFzn97HnFwKyb+/RGxDy1zRL8C2H/yBbtz5z00whoPVtjRAaY1MnkU9XRmSkwQbe6tzhBsy6jXtp8fPlvlbLQ2d/G/HbLPw/Se5Q6JsCzL3hBuUGI4jP0A0RhnBNB2M2SxnHrmd6iiXg29zrqCnlEmsao2bmQ1T 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)(366004)(39860400002)(346002)(136003)(376002)(451199021)(54906003)(41300700001)(8676002)(86362001)(66946007)(66476007)(66556008)(6486002)(6916009)(8936002)(316002)(6666004)(4326008)(36756003)(478600001)(6512007)(26005)(5660300002)(83380400001)(6506007)(1076003)(2906002)(186003)(82960400001)(38100700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MkpubTVMdnJWT1NmMHZnLzg0cmRPR0h3djdDSklSQWlzNDF4eVZoMHBxaDAv?= =?utf-8?B?NTlyTk9qUDlkV1Q4QkEzbWppWW4zSkl3VlNUdHdsQ29BODdocFZMOG4yRWVV?= =?utf-8?B?MmJsaUZaRWZhY2h2WXAwbCtMUWRrUkdBNm05dGRqczFwOVIwUDNiWmM1Qm1t?= =?utf-8?B?clRGeVd2RUpsaGc0c2JJdnJwQWZnN0FpVUtmdHRIWkJNQy9PQzFzc1hYMTls?= =?utf-8?B?RTFJQkpHM0VCdTJ0SGpSU0txcXFuRUdsTk1zTG9iVm1WdUJaanpEUjM3VFRr?= =?utf-8?B?Y0J6bmtRSnpmTmp6SG1ZNUNCTUtrbGNqWVVsVlFhLzgrcG0vNEFCRWt2QTVa?= =?utf-8?B?ZmszaTZnRnN4NlREbTEzUU9EaUxGRGgzS2ZrRUI3Nzg0Y0hESWYvVy9CWUtQ?= =?utf-8?B?TTZvcWdwcGJvUE1NSHYyWmdLTjduYU5lNldmWFRyeFlFUGFtdzdVeTg5Rytu?= =?utf-8?B?YVBUL1BpMnZpQ0lRejVNRkpuajY2QWxLR1pHUUlkdmxPdFp2V1pNdTF3bmcy?= =?utf-8?B?TW4ybmlnZTYybFgzMFFSaEJpWm1JZGRWNklCVk9acUcyV1JiUWRUZ1JuNVJQ?= =?utf-8?B?NzNKV0NFejJ3M2tOenZGNlBUQXAwYWh0MFFOQitWa01KbU02RWJ5RFpGS1o2?= =?utf-8?B?bG1KWGJmeXAybEo0bFZlU21PL2hwZHZLb2JVaEFjbXMrckhKN0ppSjd0am1q?= =?utf-8?B?SVBGQ1g2cDlHSG9rUFB1Qjdhd2dlUlZRaXBVSEpCcE5yLzhweEZDYzlJQk52?= =?utf-8?B?VU5HT1dXS0hNRG9ya0ViazFwYlJKSzY3VUwzTWludGtEc2czWmJlcGtzd0dG?= =?utf-8?B?cEk5Y0U0cHdsVm5KNlJPeWZlSUhCb1cxVXg5Y2RlM3BHNnl6YU9qYUxnWlM4?= =?utf-8?B?d3piTWJ1bXVrTjk3U044KzhuUnY4akpvSFd2dEFwbVZTQi9ha1h6VlZpeTZC?= =?utf-8?B?YjhjK2JzZWpLdHVMK2hZZnpMb3BMY041SHFiOThQU1JUY1owTVhheVl5Zks0?= =?utf-8?B?NkFLWmlmYk9ZNVJUTDFkNndyd3p3M0xCZjV4SjZwNGN0eGFvb0grc1IxQjd4?= =?utf-8?B?UzhDdGNhUmdlbENNVGtCVUJveG51OHFCanZ6SjVXeDVMWWRnSCtYR0pjdU5S?= =?utf-8?B?SWl3RkpLclFEQjR1RWVXaHlDb2dvYjBMYkE5RjVKV3hvMy9rTVhCajRkcmtQ?= =?utf-8?B?VTV5UW80eTdJMFgwdEFJb1dsRklpZ2srUFNmY2lEaGhUTjVaSlVtcEpzLzc2?= =?utf-8?B?WmxRMWlwRTB4S1IxVHpMMVNPRlVFTDdtYjhYQVhTdnlMa0x0S1IzeklNNWYr?= =?utf-8?B?emNLTWpmd0lGSlhOaTUxeUZTU0xjcnVnUmltYllQbU5xK0Jwa1hJRTRta1V3?= =?utf-8?B?SzIwRlFvbUlhckl1UG1obkpGeGxZYTNmaUxzR0JqVFR5alVWVVdGWGp5aFpS?= =?utf-8?B?VUxRTkVId01tR3dBclBqVXAvODZDNStSOXVtYkgrMnJmVkdMS01adnE0RVhH?= =?utf-8?B?K1RncFcwdEdtWHlad0NTRXZqa1BPSy9DaGs2OVRJb1FVN1hodlRXM3Qxb3FD?= =?utf-8?B?amMvd2lkMVBNbDlIcHFidTBaUUhKaWQ5bHAxRWgwcDRvSzFPUTNOV0ZoR1ZZ?= =?utf-8?B?eW0vMVk0T2tQZDUzNDVMYkRua3VaRU1xeUxrYXpBTXduMHdNWFpmcHpVMEJE?= =?utf-8?B?SDdzREhhTjIzU3lvYTEwTHVJeWZ0dDRQNSthd09zZzNmd0U5Vjc0dER0UzBW?= =?utf-8?B?VzJjMmRjeVlhNEZsaTV3bUxpemtGeGRESm9aU3J2WnBoZW1OcVliT1F3dTlu?= =?utf-8?B?NEVhSlBZTC9DMDZJTHA1b2ZXWHNGR3IraWpGRDh3ZElsYzVCWHFqbUQ0STkv?= =?utf-8?B?TUlJZU91TjdyTjZsZFpaSk1sbW1BRklGV2lnOFEvZ3h3cTRRS3Q0OEJxK1Jk?= =?utf-8?B?S01FRDVyaDJkR3pJaHNOTHJ0UHJBQmtvU1BYQ0dLeHl0U01hTms1ME94U3BX?= =?utf-8?B?OHB5WnNIQm5aMzhzZkR5SUVGVTd1TzJnVHZqSGhpT0xQNmF2UldLMjY4eUVX?= =?utf-8?B?b1dVeTBzYzRCR3NtMmY3akI1TXRvSkNaSXpQZmdSYkJwZ0IyUTJDSlg1TlEr?= =?utf-8?B?dWJsSjFYd0tsNFY2TGtYREpISEZjUVhPZjhtOVB2SHZnWkxFMW9kVnVJbWdN?= =?utf-8?B?a2c9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: VZQX1sfNoN3tl+CORhyBHV3qTN0uPV+pm8qBTVTgUnITVyy4RoMY0FA3ll130X/X2jr+MLDrIOb8vcWjgKJoxbWXcIcxaSUZDNt0JcQwO/8RvzHJ0oQ7Q3xYP3nUZW5gfe+bznS/vmg8955+Sg0u5CSoabQZocg3ee4rPydFy1XtdQZQsqk9PflyIYWaqW/mLNeFdRgsVcHzmHXZv7WSxHjkI0DtWsQiYzops16zAP6I9rVJpbxwnA2pJLZOeEDoV08012TosRv4dccfyVUYMOKxlu57JE9lnxEctDQwl2zEfEE/3+Ac0RUVF5iKII/mDtzAn4595UL1Z1kgLNtzEZVjPa6M+9IaQnpH9aYPkh/sJh6h380U+vKyEAVHGFcX7ZpEgu92UAY/2icIkTtREUO7tUO6N4IlupgvCJ4eWL6W7rm6dOBaF4HFM8qQOOyXab84EVnOjYDOF4iP5LHANCEsmPsYerGQ2oRtUKbH3s5iZ5HbBMEr5zEEyb6oBaA0Lr7IF2wPSOzRMufkGZsKr9IQ5fpm6tFSmR26ERjrL0ptRmaWfgOJMMCdcgLhng0RynILebIaNDC+o6IymwlEf+qG2NUhd3C8hdqI9Xg10X09j3rXG5i/qynFsC6sxRUJeiwW1N93By32x1cEzgXGgRfj/jjTaDxu2RnROC9JovyZi3Ez/ALsC6l37m5oCO7VVpElIwQpbeJuPjT2enuREpPhlR/jm5apZ5co/kN7h/CGxSh2uJHp93Wwpg3sdmXSFRaWoqMK+jwep6RzMTF+hNs8b81HBi5DqJog/Lbt2RyJem3/yOnOLaJS/HRuP033 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d0b4cf0d-b3be-4b0c-e5b3-08db6e6b4533 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:12:00.7272 (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: ePISHWykQof+B87s1uj9PVz7KAykksl7X4a8J12+Lfidct9ooM9zqRDrcqLWkvBxwAEiGn8VV4DoCvEAOA/2qA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5736 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921634526100003 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 --- 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 7261c1f1fd82..d0ac5b2bc102 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -88,6 +88,66 @@ static struct xc_xend_cpuid *cpuid_find_match(libxl_cpui= d_policy *policy, return *list + i; } =20 +static int cpuid_add(libxl_cpuid_policy *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 @@ -332,12 +392,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) { @@ -347,60 +403,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.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921642; cv=pass; d=zohomail.com; s=zohoarc; b=IgTbE0EEO7+X8KUdidn3YoVC4X7fHSYr+pYhryEfsevSouO+0dJCnRn/IYNUNlSvHWcq4cf+/4sfrcflbE3F0zAfJWrQjQMoH14LQbiwQ0ZilCtsyWi18+rs0w+jQet5ed5SlCV5j98tkdIiDxx5BEJS0C3bLWaYg2csG+o933g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921642; 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=TwvFq2qizFz52+7Nx4padiTvAhqPe0/kcagVO7qnwS4=; b=UraO2NwEjrO//Q2JR/J2Rknf3FG7PkfHxMhYdml2BhpDte+8pAAqNLxTocC1HUVVBuOiBWOQ+J3tx1zQvzq+wRkkWhPeh4SVj6tKpGzY6oQ59JDjmNV8w99kxpwvuw1XaiEFwVJ5pVNEsfVa/xCKaQVHbkIYxgU9Q2N/6559TZs= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921642699673.0200537500691; Fri, 16 Jun 2023 06:20:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550227.859209 (Exim 4.92) (envelope-from ) id 1qA9N1-0000rm-PD; Fri, 16 Jun 2023 13:20:07 +0000 Received: by outflank-mailman (output) from mailman id 550227.859209; Fri, 16 Jun 2023 13:20: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 1qA9N1-0000qc-Ix; Fri, 16 Jun 2023 13:20:07 +0000 Received: by outflank-mailman (input) for mailman id 550227; Fri, 16 Jun 2023 13:20:06 +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 1qA9FQ-0002qy-37 for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:12:16 +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 6726d063-0c47-11ee-8611-37d641c3527e; Fri, 16 Jun 2023 15:12:12 +0200 (CEST) Received: from mail-sn1nam02lp2043.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.43]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:12:09 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by PH0PR03MB5736.namprd03.prod.outlook.com (2603:10b6:510:37::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:12:06 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:12:06 +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: 6726d063-0c47-11ee-8611-37d641c3527e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921132; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=GZpr78/jfVQj+rN1NN3ev3EOcCzUwsdsDYWFHWDJN/s=; b=h+/MITMEn8Bo/ANbwyHFP+JkDrg8jcPijWNtYqQZ8YH3BENX/8gALHrx NnG4LXMP8kYeKDzXtGCbiYklgBzUBezKPjmGe7GOGsU9nagmUgpW3yzrx uhUXanBpTMWwZJ60RzcW1Gfv83Ovdkky0bl1ivaDCLYs6GmSGEs7OpMkY I=; X-IronPort-RemoteIP: 104.47.57.43 X-IronPort-MID: 115608599 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:JYSpGa8Rqhy+pGg0Q8DqDrUDpX+TJUtcMsCJ2f8bNWPcYEJGY0x3x 2FKC2qHMv6KMWWjKNokYN619U8H6JbSz9EwSAZl/C08E34SpcT7XtnIdU2Y0wF+jCHgZBk+s 5hBMImowOQcFCK0SsKFa+C5xZVE/fjUAOG6UKicYXoZqTZMEE8JkQhkl/MynrlmiN24BxLlk d7pqojUNUTNNwRcawr40Ird7ks31BjOkGlA5AdmO6kV5AW2e0Q9V/rzG4ngdxMUfaEMdgKKb 76r5K20+Grf4yAsBruN+losWhRXKlJ6FVHmZkt+A8BOsDAbzsAB+v9T2M4nQVVWk120c+VZk 72hg3ASpTABZcUgkMxFO/VR/roX0aduoNcrKlDn2SCfItGvn9IBDJyCAWlvVbD09NqbDkkJ1 t8RIQAVbimnrOS2xouwErZUn+E8eZyD0IM34hmMzBn/JNN+G9X4ZfyP4tVVmjAtmspJAPDSI dIDbiZiZwjBZBsJPUoLDJU5n6GjgXyXnz9w8QrJ4/ZopTWMilAquFTuGIO9ltiiX8Jak1zev mvb12/4HgsbJJqUzj/tHneE37aSw3urBdNDfFG+3sdaoESKyWsKMhA5U0rhr/Plq0C8VusKf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZebPQ2uclwQiYlv neLkMnuHidHq6CORDSW8bL8kN+pES0cLGtHfildSwIAu4PnuNtr0kmJSct/GqmoiNGzASv33 z2BsCk5gfMUkNIP0KK4u1vAhlpAu6T0c+L83S2PNkrN0++zTNTNi1CAgbQD0ct9EQ== IronPort-HdrOrdr: A9a23:0KvKT6xQ0xvfQr8YNi5kKrPw4b1zdoMgy1knxilNoHxuGPBw8P re+cjztCWE6gr5N0tNpTntAsa9qBDnhP1ICOsqXItKNTOO0AaVxelZhrcKqAeBJ8SRzIBgPa cLSdkFNDXzZ2IK8PoT42ODYqodKMHsytHNuQ9HpU0dNT2DbctbnmBEIzfeKGJabi9cC6E0EZ KNj/A33AZJKRwsH6KG7mBuZZm7m+H2 X-Talos-CUID: 9a23:yyI3SWOI9Bxrwe5DHwpE/UckAsAcVlbbzHHpKBfnMX9MV+jA X-Talos-MUID: 9a23:O+uZHwvtfjYrbeCpos2nvQFCLd5n5L2UBW8LgM8IsZWlOy59AmLI X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="115608599" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DN067OZThGHKGGZBLIdgV4zXVcbDq6oMZNzLDpZK+GKVeP7x6wSuYewZmfkG1GeH87auB7VWXPbDAjqz3u8XnE70ZkRP9f3QXN5Dk1WNP2toA0LiEVrRLoRsSgIydvt7XKGnq5KUjzBeX4rKkDJJ0Z61nt3jySzVBIBj1vNA1kmOpjRR5S9kDZZ+kFXNr5M4Imjw0zUfeHl6ub1KYjuCP2X9Rjji5GQGVWdkNs9S/7DFXH9nPyxE53x0JPK2cBBgBm59reavc2CSC1w/gs0w8iNeh0Ijl+yo8rC+1g7WMeMXBxionwl43FEAThoceDWxgcO8V2YtzSbvHdxpeF94Jg== 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=TwvFq2qizFz52+7Nx4padiTvAhqPe0/kcagVO7qnwS4=; b=OvccUVtkToW56nBSp8QUs0Q7X6vtRZ8X0u8lVpzd6EqfAK9paHuSTG3afjSMcwOOO02IKs+NvJFHwS+Q59T7wmXNL0yhuWtCxztXQuP7CJ6cH964vnEag9jvUOTrs32o9k2qd4F7qV4HfiLS7/CKv3oM1g5wdrtuX4p+xJZQPsdvR0+49eUwPMZZ2nf5B4VIJ530RgfYwO2dYFRrtl2KegLCMGKIcqOHj034taXwt3HdzObsqF9TLzUq2WVWp/JiACWLiBNaHj4EKmkZYyiNvDNziYZDCkDn7i4iBvNGRbpX1Lp5vAigqCh0PHdb5ODMbrVZThp0liGeDKQ2B4zahw== 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=TwvFq2qizFz52+7Nx4padiTvAhqPe0/kcagVO7qnwS4=; b=fs2iKz429zldCcmq1nBrft4FIYdxCSi+1eqoHK4Fh+OECeq/qxUlH/SKX55BdQ/oaa6LmW/WGniWVEUmtvLobptqwsbASCevU/yxu1xbBADx8eyWwe1AbQwmyyLVX7iFQU3aa2I0s5w3r1V8hd2orecUm9UEu3wppvypHnKqLFc= 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 12/13] libxl: use the cpuid feature names from cpufeatureset.h Date: Fri, 16 Jun 2023 15:10:18 +0200 Message-Id: <20230616131019.11476-13-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P123CA0122.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:192::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_|PH0PR03MB5736:EE_ X-MS-Office365-Filtering-Correlation-Id: 2beee5bc-8fe8-4644-9983-08db6e6b4897 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: ignTJg1N/ZrumkJwExQdYs5RgU3qvlhBusqBG/dPxOEYOCl9CvfxF+FHsjze1Hx3kQc+mDAM1nozN2dNTvZdQSJNATFFMuebyFJ8LoszGbRIQgVHjO+PisRdvuJ3PtjKp8+FZzAmto1xsVPgrx03NQLK4p3UIlES4aglC1PECDDupyeF/fxb1H7IX9Gc6kD80OF94IsP0ZXZhHyUw6HmBKAk0soLPVJGh4gjTnZmUF7omDZvK5cBSIzMvrydburmQsoGreeWII9Uz0qk0rdP3RMHHTju9uRrjgVaDKgfdQaqkuFnLpNge0R/mAFmU4Vm6IjmV+1cWT93Szh5i7DW80EfDWiGVish1gLpgeTJiS7a9XFOILYzss0uaTsQC//gyz4Dr46fCAEEi9149HFHNogl5/b7lBvb1LX92lxK+djzSfQkUC2JXt0N2eSjS+LQl002BYALJ1+PSIvDY856f92yqENFuCwJtZ/7pMVYnfLbMu7pDC6KjOV8aS1SCLcIFrUsnfrtrWWI0qVxjOxln/fduTHzM8NTqBMOHpqfH0XIB691h4+ymVn2FHL4L4tVYXxefglXtisSu7giE2GR1Ztawi7tf0lJplEbAd/sOMs= 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)(366004)(39860400002)(346002)(136003)(376002)(451199021)(54906003)(41300700001)(8676002)(86362001)(66946007)(66476007)(66556008)(6486002)(6916009)(8936002)(316002)(6666004)(4326008)(36756003)(478600001)(6512007)(30864003)(26005)(5660300002)(83380400001)(6506007)(1076003)(66574015)(2906002)(186003)(82960400001)(38100700002)(2616005)(473944003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ek92WTNqVURVTmtwVlZwMEJ1TU1uS1Z6QXJ2RUw1TWJFNHREWlg0cGZYL0JF?= =?utf-8?B?NW9GNFNwblROWmlQcThXM2F0MURIR3EvYUF2NWFqSytUTVRzZVdaRFN1Yi9P?= =?utf-8?B?SFkxZ0hpYmZ5R2wvb0lwQWF3UWEvRGt3NGliU0J1QVZIT1diMHdFZS9LL0ZV?= =?utf-8?B?Z2MzRGdPT2p1V1orOWhDbTFkVWhhOFhnNTdPa2VEZTZNWlVWMjY0S01TSlpD?= =?utf-8?B?STl5Z083VG1qK0xDaEJDSkFneWhpNlowRXIzU2MvcFdiUVVKeHJ5RHJXSXZB?= =?utf-8?B?RVVJT2lGWnVaME9hcklxUW02U21tcTFRZjJhdGx5MjBFSDROaURtZmo4NTAx?= =?utf-8?B?NXQvdmJlOXQvcjF2VUovdHFHVWhzcDZkQ2Q2ZkkyTDNmbnRINFdZY2M1NHNM?= =?utf-8?B?TFpVMUhnUFNCOWhCcFc0QnloN1Y0c2REaFFlOCtPd1pHS1JXYkVydG1qOEJm?= =?utf-8?B?YkRTeVVHVC9sVjYydVZQVnY0NnJkSzN6T0N5aEcrZE03bmJHQUYvOHhTZ2cw?= =?utf-8?B?SUJKUkNjbnNJNElGSURHRTB0djZFZStvMkhHbWx3cjN5Y1pFRGJ3WWwyeSti?= =?utf-8?B?czhrWkczaTViSGh2R3o3QjY2MXNZWVZKMkRHMXljUHNLT0I2MC9JRC9PRzJl?= =?utf-8?B?YWtJZE1VWG9PUXVSc2ZtRjB0eGc2dWRjUnFoWmxsU3BGazZkaU9PYWlVeUpw?= =?utf-8?B?S2hGY3BEY2hjeWhuZGNubDI1WTdFTkc2cThFa0o2V2pWQXJIeWszMTVhL3lQ?= =?utf-8?B?YW14djJYN3RuemhoMnZxd2F4Mzl3QXk3bkxTbE5KUzBuYThyQlhMcldpOWFp?= =?utf-8?B?YnVPZjVmRmMxRXY4TVptKzIzMUFRbC9aNmRNaGxFVDByR1lEUGx2cG9JZmJh?= =?utf-8?B?NTZDNGlRc0lXbWtHVFRNTGluOStuMGV5R2hIYkpWWHkwTU42VWt0cWY1bmI4?= =?utf-8?B?dGJzdlJzNnk4MmYweGVZQU5sNVptVFpWTzFteTR0dHB2MjBkR0k3aDBncWNM?= =?utf-8?B?YmVFYVJuVi9NUlFjWnN4Z2dZeDdMV1Q4dTFjRlJET0h6c0xISkxrK2gvckty?= =?utf-8?B?SlZuRVMwYU1GZXBDeitnVU1LL2hnUG1xaSt2dUhRTGxiV09nWTBEV3EyM01J?= =?utf-8?B?WkhmaWVLMXpRRTUwazV5VG4vL1ZBL0Q1eU1mWThzeENGbnZKbW1lQU4vTjRE?= =?utf-8?B?SWN0UUI1SWQrN0E2dVJ2aVAzV1NhRlJUMXZaSGI4RHFQVEl2UmNpbmFIcUVo?= =?utf-8?B?biszOEszYVBZd01SWCt3ck5yeUYwblRQV2F0ZVFFd2tpSjBvTTRqQ3F6Z2xj?= =?utf-8?B?aXBnWE1HQWlSODVaOEErTlkva1gySUQ4VFh5aEcyQ2c0UENVWmdSSjhhNVlY?= =?utf-8?B?NG8wb1ZBaTFId01KSjFuN1puRmg4MEp4L3RFYVJtWUVuR3pYU1ZzWldNbGkv?= =?utf-8?B?UG5iSVllQ3hQL25CT010S0NyQXEyWlU4enI3bmZTS2x0dzJoTjVIbUNMdWZX?= =?utf-8?B?NUZocUY4UkFCNFhpUzh0TWMxTEtEOGtjV0xsRzA5K25taHRKbWpGbXM2S2hU?= =?utf-8?B?M0xJeVFGa2NrQ1g4SzJUMm5aamVUVGRhWTFLZGNLN2NXWnVjTHZKcEZBUGdr?= =?utf-8?B?cEZJcjNNVm90aEQ5RXZOanJCQkhlMDVGNVJVMmM5Uzl5MVBuUkZsM0Fqd1I1?= =?utf-8?B?b2Q0cFJsVnZjWTB3Z2lqMGFaTmg1TlBaREp5cEVhcUQ3bzgxd1FyY01ERlhU?= =?utf-8?B?VE45THlienZudmVGTk5qN094NnExR1RLZlA0eStqcDNVbmFpcHRaZTZtMDJV?= =?utf-8?B?Z2dIQTJuSG1BMTEzK1pFb1R3b2N1QXlnVlVmVUJrWmFCSWVTbDRvRUQxb2tI?= =?utf-8?B?ejhpMjZINnZXTFhnUWxwc3VjdEdmWXhZeU1pQnNuOG9UZ0RpMURhb3VWbCtE?= =?utf-8?B?MERWNElJcEF2VkpmRURUd0NOMzJ4eEE2Q0VUd2lwalRvRWVhcm4rNXg0NjBq?= =?utf-8?B?aVZsMWQyOTd0YXB0SS9wNk54ZkZrUnEvM2VjZ1RUcXJpMWFjZDl4TVN4NTNs?= =?utf-8?B?dG0wU1pJc004b01BYy81N1I0QTVGeUZwdStxUm1UN0hiYUhLQk40TXNlV3o1?= =?utf-8?B?K3BQOVM3UVI0cTFvTjNrTDdxYUt2bXloQWMzSmxUTDh3bjBiSys5ejc4YXVL?= =?utf-8?B?UFE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: oq+K7avRGJyFR6axEsxr/UgU+0lJutCEyVuy+iZml9vtIhzk/9w5LZF9syKQIF/WqvIz9tC0GgdyRPqlPOVQwodPKN5rRWgFhdZqUwxz1uttV578pbUXcT/zf6Y0k6MVKcdo3ATEhkVg0NUTJUlSVPUhY4q9IMgl5kdiFnKCTkCOT7B4tL4EN+ACyL8TbapwG3RDZ0ZfmjIda1obNS8N12DAuZ9jhukJOQ8CziZ4DIG94kAyBAJWc3SqN72zy+pE1fVXGT0QurGcOWS+xrNqLi238EAdeOyEwfBNMyL0UzEWdPNLczKX2fYTpox2QN3+QGKQ6d25qMhnG+70a4ztirK7D2lnPybQ9RQPkCZvGC7RjZpk8QZOyC+pOvldpqcUjJsbp/uXe5I4/WtMCrGh5/on0DQiWufXF7W2Vg9d2Bwv7HQWQvSgJadxLMZUAZM65mgGKQz9Bx4+q5p0daFqVdsFViv8ULO+Qv3xOWBidAEYNjH0oUTegRawbLxGaVqP6x2re/0JhEtZ1zKYau4y3zFE+1cHfIOyjKGocVhTMAkhOCnynqbOCF3ULhPKHyxxIowJWxDChHRXxMxaop4ote1fk8XtpdK5BYYe8pUgB4RASs5NbZoQpbEkh7cM4qZ/NLc33zTbimhUXBJY5LZrRGNpIiNBXVbPbutUEaQdXhPKzgBHicFqW287AkvXFaIjGZjLjmxJf0aEcZ/xQKvxNC3oWC/YhKTeJ7Wfj0I6Ly43gsUbSmD35qFvCIW0VLKmgWGfZ/qojpbMXlsRaMTUmDw2xRoPtRzjN8q0B3Kbdv5GqHM2dMI2ryzM4wwfoxG8 X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2beee5bc-8fe8-4644-9983-08db6e6b4897 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:12:06.4209 (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: VMPvi6aEsTEocPlbtHgUmTJCjAEHS0QTR6fBsbEtSQGQisyOd8Px6svwkB65uOHnLHKUUY7GXGFJMVSLaCdYyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5736 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921644569100001 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 --- 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 d0ac5b2bc102..cbbd5d31d63b 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); @@ -57,7 +59,7 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list *policy) * Used for the static structure describing all features. */ struct cpuid_flags { - char* name; + const char *name; uint32_t leaf; uint32_t subleaf; int reg; @@ -145,7 +147,19 @@ static int cpuid_add(libxl_cpuid_policy *policy, const= struct cpuid_flags *flag, 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 @@ -168,208 +182,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}, @@ -383,17 +231,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) { @@ -406,6 +300,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.40.0 From nobody Tue May 14 12:26:43 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1686921639; cv=pass; d=zohomail.com; s=zohoarc; b=m7erftPU+q7kE2tFPqDKjSQGRP+QcE0SyawsTIxWeCpmjCUBr5M4KX28eEhBM+MsTJJLtA1xPa+vfNrxVHqz2pIdCRk6wg056+3GUyjPlZrY4XDwd8W3iwCK7u6vXDQpbe+iTKmZHWkBDA11mfMBT0qiU53L8ViRY7f/FM4pg7E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1686921639; 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=3Mor47Tk+HAkXO06D3oYKwBm48TJAA+Ss+RoUvUbsSI=; b=RQ0bQ/+JjSOiEdozWFHfSNpEVdjicpcMxeR2TndWFk8FqHdWxu4Hf52LcI6juKaMam5ZhrPX+8KOTmRrSgks4z1vo5n2rCJBx/EV9aBf7tuK1mg/THiBBYgl0IqRZUVUlktGL5QZ6kRfxE2/ZCXj9aSOeguO7DV9rrL3iIFJL/c= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); 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 1686921639761512.3644607979985; Fri, 16 Jun 2023 06:20:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.550230.859224 (Exim 4.92) (envelope-from ) id 1qA9N4-0001UL-CA; Fri, 16 Jun 2023 13:20:10 +0000 Received: by outflank-mailman (output) from mailman id 550230.859224; Fri, 16 Jun 2023 13:20:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qA9N4-0001Tm-7x; Fri, 16 Jun 2023 13:20:10 +0000 Received: by outflank-mailman (input) for mailman id 550230; Fri, 16 Jun 2023 13:20:09 +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 1qA9FT-0001xG-BD for xen-devel@lists.xenproject.org; Fri, 16 Jun 2023 13:12:19 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 69968e84-0c47-11ee-b232-6b7b168915f2; Fri, 16 Jun 2023 15:12:16 +0200 (CEST) Received: from mail-sn1nam02lp2045.outbound.protection.outlook.com (HELO NAM02-SN1-obe.outbound.protection.outlook.com) ([104.47.57.45]) by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 16 Jun 2023 09:12:14 -0400 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) by PH0PR03MB5736.namprd03.prod.outlook.com (2603:10b6:510:37::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.27; Fri, 16 Jun 2023 13:12:12 +0000 Received: from SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47]) by SJ0PR03MB6423.namprd03.prod.outlook.com ([fe80::ab2a:a298:bacb:db47%2]) with mapi id 15.20.6477.037; Fri, 16 Jun 2023 13:12:12 +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: 69968e84-0c47-11ee-b232-6b7b168915f2 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1686921136; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=sjKlgl/yPyFkCKYOe4mhWoUddlmkQUo8Y8MV7rKkmHo=; b=aCb32IaL1FA99tG6dUFZ9mfRtuOllU6/QJBEOUEqP9Kr8qDAl/CQBYEU ZVMkc2+Ze6dkgz4kUNbI6UKutE0OE1gubxiZCgDxQv3HIzcCGr5Zr00sy 9nWuLZpy99FQcABw1MNAmmb1lfo05BWkC743M0pR+9x+S5sN11eF2mmsl o=; X-IronPort-RemoteIP: 104.47.57.45 X-IronPort-MID: 113086008 X-IronPort-Reputation: None X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: RELAY_O365 X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:1Vykq69hXgOhhk2GjRAXDrUDpX+TJUtcMsCJ2f8bNWPcYEJGY0x3m mcbCDjUOq3eYWD3Ld0lPozioB4H6JCHytJhHANvqHo8E34SpcT7XtnIdU2Y0wF+jCHgZBk+s 5hBMImowOQcFCK0SsKFa+C5xZVE/fjUAOG6UKicYXoZqTZMEE8JkQhkl/MynrlmiN24BxLlk d7pqojUNUTNNwRcawr40Ird7ks31BjOkGlA5AdmO6kV5AW2e0Q9V/rzG4ngdxMUfaEMdgKKb 76r5K20+Grf4yAsBruN+losWhRXKlJ6FVHmZkt+A8BOsDAbzsAB+v9T2M4nQVVWk120c+VZk 72hg3ASpTABZcUgkMxFO/VR/roX0aduoNcrKlDn2SCfItGvn9IBDJyCAWlvVbD09NqbDklJ9 aMeGi9OcSyjoP69m62hVuhzv8EaeZyD0IM34hmMzBn/JNN+G9X4ZfyP4tVVmjAtmspJAPDSI dIDbiZiZwjBZBsJPUoLDJU5n6GjgXyXnz9w8QrJ4/ZopTWMilAsuFTuGIO9ltiiX8Jak1zev mvb12/4HgsbJJqUzj/tHneE37aUxXOlANpCfFG+3ttmpgyY6TwzNCIHfkHmsPe1hEHhZ90Kf iT4/QJr98De7neDXtT7GhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJhZebPQ2uclwQiYlv neLkMnuHidHq6CORDSW8bL8kN+pES0cLGtHfildSwIAu4PnuNtr0k+JSct/GqmoiNGzASv33 z2BsCk5gfMUkNIP0KK4u1vAhlpAu6T0c+L83S2PNkrN0++zTNfNi1CAgbQD0ct9EQ== IronPort-HdrOrdr: A9a23:1fClgasnnZJ5u6rD9odxz2PA7skDRdV00zEX/kB9WHVpm6uj5q WTdZUgpH3JYVMqMk3I9ursBEHvK0msjaKdjbN8AV7aZniehILKFvAA0WKB+Vzd80yVzJ866U 4IScEXY+EYa2IUsS+Q2mmF+rgbruVurcuT9IDjJxgGd3APV51d X-Talos-CUID: =?us-ascii?q?9a23=3AucmUVmgXi0gadljmG5G4fEVr9TJudX2CykXPYFC?= =?us-ascii?q?EKUF1Q+aKU0OR55phqp87?= X-Talos-MUID: 9a23:HYXLVAUP34qip4bq/BrgomBpG5dI35u/I1pQgJsKtcbbCSMlbg== X-IronPort-AV: E=Sophos;i="6.00,247,1681185600"; d="scan'208";a="113086008" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ezHsxC/PxitmDLy/AuvHFOeg6NRsGJ6zUok5QoNuN0g4dzNeKYkep8m9NXpoc8pPaWKkxhgD6zBp3s2CiR+7CC+JaDtkRMXh8PQUggycD3mO8wxLlaqvH9X9qLfa1tBV03zT1Kqs1nbFf57QiX7CeZxD2n+AgSSgHjlAZ/RP3PWsElCyHzV+zDvOaWVM1xOibPPEfpQjvdOyT91sz/WGuNLwsI528OZkz4EhZIipxo+HNKm9mkf3TgIkD2vUc7VQbwi/JpU2/S94dsQxkeEKJV2qx+b0fm5QHL8S58aXOFEdvkjD7W0JPBYatepYAGppSaQrw68ll6ovHnhAE3HR/A== 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=3Mor47Tk+HAkXO06D3oYKwBm48TJAA+Ss+RoUvUbsSI=; b=kk8KKI5/kwVelY1+iDPYKOqSaRhrUhXyN2trk7svgCWuOH0oQsatxdfm08cKfYqyWs+hFJz8IPc+0XxBJk8Z/XCLFm+M/JMZOv4V7+Zw+WIXG0sw3zuxIScBHbZrCuqlFsLE8I8mXn+7QcOJPZUwTmLaCbCC3L2RydqUNjtoaJNojIklyyRIUW1S0EtJbT6jVjYdzM9wzeOC2jSZsNMIobALb4oLxaNENk5BNeWilur09JJnfXV0EFwzqPv1e/HvMpX6zbeZ5NpKDn6R0tiDWBXrzcy2JrC98MXuD2Dnqkk1xUwAXUOsD3ocdKN1Bc7/CanUT3RP/xK03PBMCL1LXA== 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=3Mor47Tk+HAkXO06D3oYKwBm48TJAA+Ss+RoUvUbsSI=; b=lMY7IT8VgZrbN2vL2/bwOBCj173Lv2Xa3A29wkNIcTg6KKnUlTBxEgKbcpDp5M1qV5X0gncc3JLd+4HuAW239Ahn9ctp/Y6XhBy8wbdks+Ln/qEqX8R9SWk/PZry0lmaL8RJ4pNsUQ3dDQOJeO62i2jaf3XaWcTxhyR6pNE7K6I= 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 13/13] libxl: add support for parsing MSR features Date: Fri, 16 Jun 2023 15:10:19 +0200 Message-Id: <20230616131019.11476-14-roger.pau@citrix.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230616131019.11476-1-roger.pau@citrix.com> References: <20230616131019.11476-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: LO4P265CA0141.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c4::11) To SJ0PR03MB6423.namprd03.prod.outlook.com (2603:10b6:a03:38d::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR03MB6423:EE_|PH0PR03MB5736:EE_ X-MS-Office365-Filtering-Correlation-Id: aec05583-0ffa-432a-6ccb-08db6e6b4c21 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: chK8S6k+M1WYhCkZlWouMVZyRmb8/CkNZCZz0W1n3zZoFbXhK8NNsP7eZJxQr75NAEahY8+8vFn2rS4OKokXISaY9EqY0PTGfRxuiTddN/U8xd6okGbzvjolE5HeYzwUiT83f6VeJreSMEaFFKCRnD+c0bprsF/opLkJ3L4ZXasIxZXl16G+GRt/s4h70ICC6xKeTeTNh7aa11/zKL1wiWWL5SlzPus8qz927K0oqI7PdjVo+21Os53LtTGSSMY4QSQ1JysemSJo4K7SGZunwtK4l4uA4yHkoVGHLlMAxQD7+H4vOs03WJ9WJJ4PwWaXCj9k0DowWe3HQelz4wzFFthShaHDR009STWlN3ilUCrCM1LoWoiuidzTWOzX2sOmpazeYz/q9WocEIJ1JvF99j0QGVMOwypx/wfG7sYaqxLcilPXTbe7D7jYLTWtOa189/VzR/VMZZQHtbzVZ6wlGHra9d4RfqUaIl/sQfetpoXxpYEujcTHkGkNCmfM4VreEx5k27OanDHYw5mT59CYTIHEZShUn6+eZAwSw/SbD4w78pD8P6ib7+i8dBXAwPkb 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)(366004)(39860400002)(346002)(136003)(376002)(451199021)(54906003)(41300700001)(8676002)(86362001)(66946007)(66476007)(66556008)(6486002)(6916009)(8936002)(316002)(4326008)(36756003)(478600001)(6512007)(26005)(5660300002)(83380400001)(6506007)(1076003)(2906002)(186003)(82960400001)(38100700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?V3QwK3YwbVFCOTV2U21CK05HWmxzSTZHVlhMbVhTUVBkdCszUEg4Z1RGZHc0?= =?utf-8?B?ODA3aVpUMTlFZm9SS1N6bEwwd1pRU082VjJBalVKRkliN1RHZnlFTDJ2dDBl?= =?utf-8?B?Wk8rVnhxYmdyQjFMOG1CT1cyRHVzNXhiUEFzN3dRbFFqVGxYSnYwbEsrdkJM?= =?utf-8?B?UVpBdnRuYkpoYlFmeGpOZ1dDR0JFdGVORUtxZXBIMDd6ZGI3SjA2eWV4VUwr?= =?utf-8?B?Tm8xTW00TlV5QkRzNCt1elZxeUJTeXpNUG5VUTV0SGdvQmtmODNBem1zNmxl?= =?utf-8?B?cUtXRzZpYzVWUVROSld5SmN3M0JYSy9CbWdoWURyNTUyMUVwdXpyeDdoYXpQ?= =?utf-8?B?WENKMHlYUU8vVUtnQk5PZXZqUHdkY0Z3VEhLenk3NUdVL3N3eCs5L3EyUThS?= =?utf-8?B?aHNoYnZrZG51UFpYRG9EYUExYlUvUDZGbzZlK3lrR0tUME9kL2RrWDdZZGkz?= =?utf-8?B?T1Y4V3o3S3hLL3ZxeTRDRVlvWUM1WkJTTVBWdGZ6OEdDM3Erc1JEYk5aZUd2?= =?utf-8?B?Wnp6Z245WEhDWUJmaDZXaWFRblFkeG85a20vQmdxa29RRjB4NmU0ZU9DUXBH?= =?utf-8?B?alFwMklFQ2xqM242QzJET3R0RjJFZmo1WDlLQzdNU3NFZmpYRHJGZ0EyTmd2?= =?utf-8?B?WHBPaE4wTUxCQllVd3JXd3hKLzdTZitmNGpYTzRzKzlDbGYxUjFZN2lpaHh2?= =?utf-8?B?a0hTeXdPYk1VRXRkZUo1UEkvUnN4ckEvQm5pRG5RT0xTU2ttTnpBUXdOVFVm?= =?utf-8?B?bTBTRWh1MDcxN1R3Zkk3LzdjOEM4d0VmOUd2YndIUUFMS20xVW9nNkI3L3lN?= =?utf-8?B?emY4c2dhN2pzL1FqRjF0VGw4NWhuaXpRSWlXVFVYWjFOenA1ckVqTXNTZEIv?= =?utf-8?B?OFR5WG9iTGtXYjZ0Q01JdVRzdDQraFdwWlpkN2RrZytaMEVvUmVrNC90NmVt?= =?utf-8?B?Qk1lMFNCa2pYbktyK2FoK2REVFJNaGduSEJIR2dVa1BxZkQ3N2pKTjA4Y1cy?= =?utf-8?B?d3puai8wSXVYQmtBQ2NiajBDUlRsK1kxTWlicGdZK2FYNTdMNUNtd1EyQi9m?= =?utf-8?B?T2Y0dTFLdjQ3Y1hhUHEwZWdRR0p5MEppa3M5M3JaVXFVS08xQnhGdTBNL2FO?= =?utf-8?B?ZTY0L0hFNTMrbHNGeHhFa09FVVdTRkFuMGNyYVVRMTlLVFZReVE5Rndja0JN?= =?utf-8?B?WDFXYXg2eC9HMElabzYyQ1p6a3pacy9FUlBvSkRjMjROOFZsQS8xVHIxekht?= =?utf-8?B?TFNTenVQbU8zRGhnSnNaZmJ2Ly9aT0Z2cDl5eU5uem41SEVGSVE4eHpKSGtP?= =?utf-8?B?YzgvcGFCeTQ5cTZhSUMzMWlwWDk4UlFlNFFwUzBJWjRxdExCQ29GRTR3RFl4?= =?utf-8?B?dXNHRFkzZzBDNERFM1YzRWhDeHpWeS9sUmo2WHRnbi9nSXNGT2hYS2Q2QUZR?= =?utf-8?B?TlpiYmc5Z0pNWFZUVk5XT3JPelRKWTBJQ2QzMlZFYm0zTHhUb1ZNL3RoSVgv?= =?utf-8?B?SGI5NGJYNUZHSmJoOEkvTzJaYzdpYmM4VzZrTzIvS0hxek5GTEU3VFFmSjEr?= =?utf-8?B?c2NkV1U4Uk1MQVJoNjlpdVc0b1QrU1Fmd1lCM0FwaG1vUHBkdSs2NmtLSFow?= =?utf-8?B?Qy9CY1BwV2JhSFRhdXM3Lyt6aHZPdWhFVW50VFNVellUdGorUW1WbE9YZm5n?= =?utf-8?B?dDZscmloM3NPV2ppdlFxZkR5SHlZMDFRWnNEL21OcVE4bzIrL2RsUUthK1VN?= =?utf-8?B?UDB5ek5YZjN5QlJFYUE1UExYVjJheTVaa0RsN2k5Q0ZRaXlzNlR4Z3JNSHUy?= =?utf-8?B?Wm52TzVvSzF6UUpPME55NWpHUm92a0lrVUl2SzdzcUZWdi9OaWJ4YnRab1R1?= =?utf-8?B?WFZTQ2JrNEtQc01RY044cjVEd09heUNVdUZsRHhiU3FLS2VzbkswdG5oaEEx?= =?utf-8?B?RXZsNzFDeGppa2tuUUNmdFdUSHNScDZNbmZnUm0xZ2MyRjY1N2pGVDN2dTNx?= =?utf-8?B?c0hCby9mbStDOEhXSXUzSFJjZEtoYUdvQk9GS1RkWVlpQS85VTBzVWhHVkhU?= =?utf-8?B?dTRCODlGVmxCZGF4SFE0a1haUDRpVGpIWXZTZElyRjBzMVpEZkNqL25sK0c4?= =?utf-8?B?RnFrRkZFMG9BZTVUWGFCbk5VeWhvNEdIZS82TmJ4dkFpaVFvRXZqc25kWUt1?= =?utf-8?B?TVE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ob+pv/Gj0wQn2PP8hTHv3d+eI1/lERKhxREVpJNrW3MwuOMz1QvKTsdA9MgtUxlhYuaEbeB3EnCEWYnFAonClM8kzwF4PufxKWiGywR3jezTvoO3ni678JbX22bKx20Yb1RgEKc4MFI/SThJ832kqXPYVlynUGq4maBPoPwQbEiSiyZW83+tFYAXgMAVWre6mG1ePcWCHAjLnc3laqudF1sTuRNj487a75T6mrgliFmljXiJaT3BI8ytUOHgOyn/SBDW3N+uned2OqlNtNvcPZFcxtZqago/e4pVLdawMe1gKQwscBD72QAd5Q77gM86C8CTQOy3Yxi+eJgDHRgMyzQlKkw2U42wT2k5WZzxiABN+cjnAaouXZv3tfgKNpVqpwbT4/qiLFeL44MsN1blz7Tw99rbAn+AhCpB7XWegEAzcUMJw/ZKFEMDjzfhhz2uLomKadVmq7A6tyrIm84VwIXQZauOplk+HGAvP5Zi13LVFKhyKfbeE+Oo9noqtBNSv4s1bXTedXikWgq6fiPO7VKkWVwUHBrC5f1V5VZnFkcgwth+nyNTYskylWrj13V9Cm4b58GK++4rIwdmQC6qLVTA3CtVDBWT37Hvg55jtBwzspGbDD+HI1MufGFJF/pzywsMPwXEw4o8xi30KctKjPNfPfeg43mCx0Zcgns/MAXXFZzGzj7yX91JsiknKdyiMRtOyM7uJh+yPicUHi5q1ezE3gxtuMbOKP4fmQ54lFZEKIaKZkGup0GlDgvv/rMWQhU5yybVCB83DGSkpklSSMX12AG/COGuf19kNKGI+hCOpvMfioFvHX80fCnHixTb X-OriginatorOrg: citrix.com X-MS-Exchange-CrossTenant-Network-Message-Id: aec05583-0ffa-432a-6ccb-08db6e6b4c21 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR03MB6423.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2023 13:12:12.2519 (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: hvQgu7h+LCuFlVox6aW1Cy0VWysTw+Fi5DVTf+xB6Sxnbcn6LA8caUpY+Gz3ofQfNVnzsHa08Txc++kyyTvpSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB5736 X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1686921640674100001 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 --- tools/libs/light/libxl_cpuid.c | 57 +++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index cbbd5d31d63b..804dddb446c3 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -149,6 +149,53 @@ static int cpuid_add(libxl_cpuid_policy *policy, const= struct cpuid_flags *flag, return 0; } =20 +static struct xc_msr *msr_find_match(libxl_cpuid_policy *policy, uint32_t = index) +{ + unsigned int i =3D 0; + + 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 *policy, uint32_t index, unsigned in= t 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; @@ -328,7 +375,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.40.0