From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798048; cv=pass; d=zohomail.com; s=zohoarc; b=h4BTekF4oqzO9eqVj3MbCM8pevXJ7AVvsfohoE02WrOoudgNPyArwvZ/PS7jSteV9qYfWx0ef9iXNaFdSvuwG1vtW+UJFYTEqjPuw30A+XWCstlsrWJ8YEKOfp09uzS9zFXOkkTOMGusuoWLtixfA5hlFVPkiDKoGe+OadrsSu4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798048; 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=Qgb30KFYcBaUuDasLfF1eBFyIimrl8aSOAVxfb7Zs3E=; b=fN/bcvDcShs+OKRCFLMWnRGaAZSk8KU80v6vzDmDd+mEc0FG4T9QrsIaw7+DEQMC4FH7BDmwCuacYcBEmFyt3YRxjd7mVY86Die3d83Pqt+c5wD6dngB/jVvPw3KvVKaVHTy6+ySt7EZHqIRfm75LoPK4lmAzlpDQ8KwwswP/Yk= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798048028838.8640318754094; Fri, 30 Apr 2021 08:54:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120597.228081 (Exim 4.92) (envelope-from ) id 1lcVSZ-0000Wm-2E; Fri, 30 Apr 2021 15:53:43 +0000 Received: by outflank-mailman (output) from mailman id 120597.228081; Fri, 30 Apr 2021 15:53:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSY-0000Wf-V2; Fri, 30 Apr 2021 15:53:42 +0000 Received: by outflank-mailman (input) for mailman id 120597; Fri, 30 Apr 2021 15:53:42 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSY-0000Uy-BO for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:53:42 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id d6e58172-2242-4fd7-a63c-504f03630e9e; Fri, 30 Apr 2021 15:53:40 +0000 (UTC) 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: d6e58172-2242-4fd7-a63c-504f03630e9e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798020; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=PCmZiBcei6/dqF4Y6hVv7Ycr6USHYz6GfRbyy4sLFtA=; b=bZivxbGxVSvCDW1P97fi6GOk3CmkPhQcOpBYPayL41vXDdHJW/fE32YA 5KaWnht1bxJyNHQnR9RNvVl7bR7z5g9WRYqJUiVEjNVfg63hbDlfz/And Lj0uH2qkPs27ejtyfnuux9k7tfJgKfJLB/cp0DJvtWxmhT14LWfpLYJK6 0=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: xNn46K4gSBOG8/JwAtcR+3jZ5Bk9XVEdayKXa8Ec/Hcs5H/UAR6/ScYLqBbQUkFeDyGDsDnL+D WwwyLZ3kY+Kt+hFMXuT7RTYd5xwtJa59aH+Tmhf5QvXMls9VY3QN713GBijZ7QoLYwVGxRGHLC I2b11ZXKB6MN9u0HrAF486hMEr6As8gjhvjZZy252sobb7wFItS0purJnoWhnVQD0NX5kFgLqC +baL8mrNen7zmf9RG5TO3txNWBd/xr1F5nWZQ6Y9AD2Nibg1kPt9WI7XYe1gRo3jygJ/F0TaMU feM= X-SBRS: 5.1 X-MesageID: 44331678 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:fEGxaqi0mfSDLtg5CfoFV0q8SnBQX11w3DAbvn1ZSRFFG/Gwv/ uF2NwGyB75jysQUnk8mdaGfJKNW2/Y6IQd2+csFJ+Ydk3DtHGzJI9vqbHjzTrpBjHk+odmup tIW5NVTOf9BV0St6rHySGlDtctx8SG+qi0heHYi0xgVx1udrsI1WdEIyywe3cGIzVuL5w/CZ aa+457vDKmY3sadYCWAXMCUujFqbTw5e3bSDQBAAMq7xTLsCOw5NfBYmSl9zo9cxcK+7ct9m DZjxf0j5/Dj9iXwgLRvlWjlqh+t8DmzrJ4damxo+gTbg7hkwO5ILlmMofyxgwdhMGKxBIUnM LXoxEmVv4DmE/5Wm2uuxPi103B/V8Vmgff4GSVi3fivsD1LQhSY6Eq6PM7A3mpnnYIh91y3L lG2GiUrfNsfG79tR/w+sTSUFVSnle0yEBS4dI7tWBVUocVddZq3Ooi1X5Sea1weB7S2cQMFe ljC9zk//BGcV+WRGCxhBgf/PWcGls0BRuIWU4Ep4i81CVXhmlwyw8iyNUYhWpozuNzd7B0o8 D/doh4nrBHScEbKYp7Gec6WMOyTkjAWwjFPm6+KUnufZt3dU7lmtrS2vEY9euqcJsHwN8Zg5 LaSm5VsmY0ZgbHFdCO9IcjyGGPfEyNGRDWju1O7ZlwvbPxAJDxNzeYdVwom8y8590CH8zgXe qpMp4+OY6iEULeXaJymyHuUZhbLncTFOcPvMwgZl6IqsXXbqLwsOj2d+vSOarNHT4oVniXOA pHYBHDYOF7qmy7UH7xhxbcH1n3fFbkwJ52GK/Gu8gfobJ9crFkg0wwsxCU98uLITpNvugdZ0 1lOo7qlau9uC2T9WbM5GN5BwpFAi9ukfLdekIPgTVPH1L/cL4FtdnaU3tVxmG7Khh2SN6TNw JDuVJt++aSI4aLzS4vT/KrW1jqzkc7lTavddMxi6eD7cDqdtcTFZA9QpF8Eg3NClhSggZlqG BKbSceXU/BHjbSiaGo5aZkRt33Rp1ZukOGMMRUoXXQuQG3vsc0XEYWWDaoTIqqmwo0fiFVgV dw6qcbp7KFlV+UWC0CqdV9FGcJRHWcAbpAAgjAQIlPgLjkdDt9SnqwiSWAhws+fXfr8Esuln XsRBfkC83jMx54gDR1w6zq+FR7eiGmc0V8ZmtTnKd9GW7F00wDm9OjV+6W6S+8e1ECyuYSPH X5ejMUOBpp3M3y/gWSgiy+GXIvwYgOMuTRAK84Saza3mqgJeSz5Pg7Ns4R2KwgGMHls+cNX+ 7aRhScKyngDfg1nyOSvXQoNUBP2TAZuMKt/Cegyme23HQyW6WPZHtnQqwWONGa4SzPQe2S3J BwkNIyuq+RPwzKG6m74JCSSwQGDBXZ5VOSZaUPj7t/uKoprrt9H5XBS1LzpTp69SR7CP2xrV 8URaRw3avINYBudfEDYi4xxCtcqP2/aG8Q9jHsCuAwfVsRn2bWEtOA7b3Ps6cuCCS61X3NEG ja1yVc+vvfNhHzroIyOuYVIW5MblI752kn1OSed5fIAAHCTZAPwHOKdlu8eqRaUq6LBPE5qQ t7+ciBm6uyezDj0A7d+Rt9LaQmyRfqfeqCRCaNE/VP6dq0JBClhbar+te6iHPPcgSAAn5ozb FtRAg3dcRMij4rkY0x3GyTc8XM0zwYumobxypmmF7r0pWh+0HBEyh9QFXkvqk= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="44331678" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jkBWrQJskZdbF3bwRGFqRxUm4BUhF5+duVbTnaV8lC9uHbfC4w7l8dZi7sodtOyzmG1D8oySR+Tfy2b7w0GBMTvxk+YVje8AkE9UVyyoVemUrqBPG8IqLyJfL8K7wUs3XrA9JKUpPNSlcwxMYMd1WScnbDjaUbAzfBBYQ1seMmww/0CI/Wo3waMxRIps0vOXQqQ5syFBhmKhCxhkKjPNiYaxhaDEtWfYfNJ68HI446ZAQl9m8KAtOxPvZzunMzQLYH6BJICT+ZJwH2Gi+Hq72pLNhDn7bOGdRr1IcQiL1ldhGSHhGwotVhhbU2HZBpp2doODRY8D20YIWTXu9/ePmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qgb30KFYcBaUuDasLfF1eBFyIimrl8aSOAVxfb7Zs3E=; b=WjJx4oZy6hRLrLgo1lK2iX4xx/iR75htJThriuiY08Ld4Mgct0b0sKDRFoqTnZGrIZSltfWbd/zW81OHCbQOIkLDEdQSuH+bUJ4JGzgE0ksNe7QUzt62FE3Cfsa2xLhLPKjbprlcwTt/zofIIAXcyN5++ifT4pmK2v/V7IdZiAiR8c/EkPsStyULR0zVg9AFspA6uiN9X6varaxn8MzI77Vi6OEFNA2+wMQGUZJn/b+MuFnuQ6Zwwr3Hxk4LJRPE7+lzqRnPKVM47BcI0dlbZ/0OOq5cQIBlil+GwMxaGiGIqyXNyDwKK4Y1ZXbuehd1zvwgY2VeuOEXDXGHBwGQmw== 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=Qgb30KFYcBaUuDasLfF1eBFyIimrl8aSOAVxfb7Zs3E=; b=rX7iDPuu3pLc6HmZAvYxcyCJaXl+xcdEYkUxS5bx67c8mVLzLHGNL64J8gMn23ZHZT5VOu0L/fftApZyuKBWZPoWvjQUuQKfWgJX7mZS2wox6WkdYgZRnR5T7liZ7waHB1ZDGv8vc0mJjveyjANN1j50dW2zTZOoQSadssi7jmk= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD , Jan Beulich Subject: [PATCH v3 01/13] libxl: don't ignore the return value from xc_cpuid_apply_policy Date: Fri, 30 Apr 2021 17:51:59 +0200 Message-ID: <20210430155211.3709-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0030.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::17) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3f5d6a9b-15ad-4092-de43-08d90bf01d65 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mBoySspwKzEnKdv8wZig951N1yfvuUMCFO8N19jCqTWGwPJ9MwM2LhoAUZ0C8fBHMFmjmf50HeoBBhx1NEuXJiR8eH4Je/EeLmi9cmIlhfnkGEJlYDb8cYLGQOnMHLqqSatHQfXVr/MnljaDtL0juo8giIm6UnLmo+DMafnffx18FMWU9oJajA/kCmYOViHybNt27yaDwsFza7cu58WsW2RyMSQmRmVZNwP677DJ84ZtJ4hgg+CbaA98EzV4iEiiin6C9fpRYq9gKKmVu/4V7ewL4g1C8DWNphTn324PfkDSl02XP93d/Og9gvfNoMP/WeeHejkgfr5PjKKcV44narkC/sk23+4MMSduyH4EilVcHggNOTnpfjqFvL2CJAeQjTQCbAUf4L0G3nYNb2TTRKwcMqbXVHAT6zr0mOgnDNmh14WjD3kgpRWFWQoUFoHJIY0kTiAkSefRwFP1A9/Ja/A4y4B3jpmhv+RyV9cW76l8bP29qrvy8Tw1Hw+oFR6/JrB69it+QFJDF1mwbcgQ9mZrZa50bnJH+drwyg1Gu3IqFQmGao0vzBxD0j8FJ9KQ2HMSxmj+Y5q6W7OYk7BdCNAhUEK6XzU0PzW7/ZMmAoo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(83380400001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?YWtxWXdzRGNDNWRKNWJxR3R6Y0ZnTnhhdnc5Vkorc2IzY3JyU21FMFA1Sml3?= =?utf-8?B?WTExZXNONXdic3VPTjY0STFBUTJKY1RaaDBqbzB2YzlJR1NLZHRzd3QwcW9M?= =?utf-8?B?N0hyNUlTaS9Iek8wZS9JaHlMUWt0UE1OQllNVXlFbEdsNFhYMExLb0Erdi9i?= =?utf-8?B?VFh0VnpsTjdxQklOS2pzZHMzN1QxZE1XanJpczBJTmFQT2xBUW5yVkVReDFS?= =?utf-8?B?UU13WGRhVld4UXpNdTY4cXVkNTYwQU1kQzd0dWxjZVJxNlNnMjlnU2d5V3Jw?= =?utf-8?B?UDF6SnhDVHA3UFhUYmlFSG9oZkMzd3hJaG5KRmdLckxFdzNORzlRSXVUWWNp?= =?utf-8?B?aFdYOS9ubUpPVjNzaWVDYlJFNGh1QUJyMEpNMHFuUk14dVhnK0xsMnJtTEVs?= =?utf-8?B?Z0tMdmFaRFAycHdleFlyeHU4SXlWZGI5eWRWTG1sYkxtVTZmTktYYTJPS05S?= =?utf-8?B?SktyTmRlRVhlMWZsRG1uRDFLZDFBaENZSnAzM3BFeXd1TmR6RXpXM2dWL2hU?= =?utf-8?B?aVBjVmNYRG9iTnkvOWRiUW5KL21ZZE9BdHJJbW9zY1hCTExWaGxyeHVHU3d1?= =?utf-8?B?QlRBRitlUDNPWjhPODJLNlpPem5IZjRwUmJ2bzlCeVBMRlBaRmNCOVhFUFF0?= =?utf-8?B?bEorME1tSmpNMnYyT2JxRVZJWjBnWUtleFp5ZnRHRUNkQmFEK0JlN0RXaVRi?= =?utf-8?B?V1I5WEhkdEJ5b0VMK2EzK1dxMEFvSk9EdEhEbGY5MXVqd3V4WkkyOFpiSlBJ?= =?utf-8?B?MXdNL0NldzVMcnQ5emNMa3VDWlQvbUZISUxHaDRpL1ZaYXRHczBjL1RBTkZS?= =?utf-8?B?dFliRitjRzljOCtZWTZ4bmZ2bFBXYmFRUVBUK3BpK2duWCtNSlJ6UVBqSFdi?= =?utf-8?B?UnQyanhibWJXNno4cms4Nk9TdWVad3NUdi94RDRidjR1TUpBeTJWZ3ZoTEcz?= =?utf-8?B?VS9UU09VYmV1TnJreFE5SWZJeWJzUzFGZjZ3NEx0RStENzNNR0ZEcnF0U3h0?= =?utf-8?B?SW94TFFPMGgwZW1DU0ZKTUN0NTJXY3c2T3RpQ0N6eTQvVm5SSWpwOG40V2Ri?= =?utf-8?B?dU5KbDhjSDA2N3c0TTVHeGxvaTVUZnBJWGJwbVh3T1hLTXI2TUdjZUlwZERC?= =?utf-8?B?QTNWZXVPQXBrMVkwazQrOTlheUFwMHZuSkk2cHVyeExTUWhkNFFmZ0pnNmRS?= =?utf-8?B?bGZlZ2tJN0xvZFlyeElUV1drRHhTTVAzVXZkZ05ZN3dMdkgzSmo1RkUvb1BM?= =?utf-8?B?Y0Zzd1FiM1dEZjlhTDB0dHVyVzlVb1MwUGxzVWN5Y3F5NTFhSkZRbmMyTllm?= =?utf-8?B?bEQ4MHJkRU9MU1JsTXloczVjSi9PeUE1MWpiSysyaTZrMys0U1FWVmZDTmxt?= =?utf-8?B?Mmd3ZldPZXNONlNMVExEL2M2REtYcWUrRmJpRkdsUE9XeDl4Q3lGYWo5VDBC?= =?utf-8?B?MDVpZ2ZBSXdsVVRLTnJmSWlHcEpUcTQ0VDN3STN2Sm5kUXF6VmlJeEh3Q3BO?= =?utf-8?B?Q1JwbnRUWXhieVRwU05XZThWamM2bHlueEVBdnZraVdQelhBM0UySWVZSzhD?= =?utf-8?B?bkcwOWFEN1hCU0o1ejRLT05pTHNEc3B6RC93OTlrQ3czb05LeVMrNXZkeDdT?= =?utf-8?B?RmFObjJkVnRkeFhYdWYvTUtmZ1ZURnpwckJXR0NBZmdzR2ZNVy9JUVp1ZkdL?= =?utf-8?B?NitvN09wWUN0OWVieHYxeDM1WmNzWFN6djVIcGV3SFkvRzV1a3lEOXp5bFFi?= =?utf-8?Q?BF06MdsqccBx9RcbRxd0dHCsD/Jhws4XyNHcVwf?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3f5d6a9b-15ad-4092-de43-08d90bf01d65 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:53:36.4052 (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: 93V7NCGb8vxD3WefAtltGzc+FJcV16TnQWKHOjYT4barX0uOkAQ6mgLXWMnHoyxO1GqHJ3e4ORh4/kKjGOoKXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Also change libxl__cpuid_legacy to propagate the error from xc_cpuid_apply_policy into callers. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich Reviewed-by: Anthony PERARD --- Changes since v2: - Use 'r' for xc_cpuid_apply_policy return value. - Use LOGEVD to print error message. Changes since v1: - Return ERROR_FAIL on error. --- tools/libs/light/libxl_cpuid.c | 15 +++++++++++---- tools/libs/light/libxl_create.c | 5 +++-- tools/libs/light/libxl_dom.c | 2 +- tools/libs/light/libxl_internal.h | 4 ++-- tools/libs/light/libxl_nocpuid.c | 5 +++-- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index f32c5d3a6f6..eb6feaa96d1 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -426,11 +426,13 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_= list *cpuid, return 0; } =20 -void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, - libxl_domain_build_info *info) +int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, + libxl_domain_build_info *info) { + GC_INIT(ctx); bool pae =3D true; bool itsc; + int r; =20 /* * Gross hack. Using libxl_defbool_val() here causes libvirt to crash= in @@ -469,8 +471,13 @@ void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domi= d, bool restore, itsc =3D (libxl_defbool_val(info->disable_migrate) || info->tsc_mode =3D=3D LIBXL_TSC_MODE_ALWAYS_EMULATE); =20 - xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid); + r =3D xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, + pae, itsc, nested_virt, info->cpuid); + if (r) + LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); + + GC_FREE; + return r ? ERROR_FAIL : 0; } =20 static const char *input_names[2] =3D { "leaf", "subleaf" }; diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_creat= e.c index 43e9ba9c634..e356b2106d4 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -1434,6 +1434,7 @@ int libxl__srm_callout_callback_static_data_done(unsi= gned int missing, =20 libxl_domain_config *d_config =3D dcs->guest_config; libxl_domain_build_info *info =3D &d_config->b_info; + int rc =3D 0; =20 /* * CPUID/MSR information is not present in pre Xen-4.14 streams. @@ -1443,9 +1444,9 @@ int libxl__srm_callout_callback_static_data_done(unsi= gned int missing, * stream doesn't contain any CPUID data. */ if (missing & XGR_SDD_MISSING_CPUID) - libxl__cpuid_legacy(ctx, dcs->guest_domid, true, info); + rc =3D libxl__cpuid_legacy(ctx, dcs->guest_domid, true, info); =20 - return 0; + return rc; } =20 void libxl__srm_callout_callback_restore_results(xen_pfn_t store_mfn, diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c index 842a51c86cb..e9f58ee4b2b 100644 --- a/tools/libs/light/libxl_dom.c +++ b/tools/libs/light/libxl_dom.c @@ -384,7 +384,7 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, * being migrated-in/restored have CPUID handled during the * static_data_done() callback. */ if (!state->restore) - libxl__cpuid_legacy(ctx, domid, false, info); + rc =3D libxl__cpuid_legacy(ctx, domid, false, info); =20 return rc; } diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_int= ernal.h index c6a4a187f5b..44a2f3c8fe3 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -2052,8 +2052,8 @@ typedef yajl_gen_status (*libxl__gen_json_callback)(y= ajl_gen hand, void *); _hidden char *libxl__object_to_json(libxl_ctx *ctx, const char *type, libxl__gen_json_callback gen, void *p); =20 -_hidden void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool reto= re, - libxl_domain_build_info *info); +_hidden int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retor= e, + libxl_domain_build_info *info); =20 /* Calls poll() again - useful to check whether a signaled condition * is still true. Cannot fail. Returns currently-true revents. */ diff --git a/tools/libs/light/libxl_nocpuid.c b/tools/libs/light/libxl_nocp= uid.c index f47336565b9..0630959e760 100644 --- a/tools/libs/light/libxl_nocpuid.c +++ b/tools/libs/light/libxl_nocpuid.c @@ -34,9 +34,10 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_lis= t *cpuid, return 0; } =20 -void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, - libxl_domain_build_info *info) +int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, + libxl_domain_build_info *info) { + return 0; } =20 yajl_gen_status libxl_cpuid_policy_list_gen_json(yajl_gen hand, --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798052; cv=pass; d=zohomail.com; s=zohoarc; b=SO9Ujxp2GcBXREgj0Km40AKkRa8kqeuaqPsiAMfRMkPgdEolde7m50I++hIWjCDdu7fC8QM2lbWoq6h3YcH3zGHQ9BQyn+zop5ZYzTqj1617Qmrr4GgCDmbsCNyG8P8d+vYbJRLbN6qhl89QLxFieVMUN/oqKkKgtdBaSx7YLHA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798052; 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=KyuIaS7BuF4VGyvgnC9lay8BjM2lepDtuERfKu+QpZI=; b=AzxPqpjDVTV+4pJDKRxcE5bBYzGO1Nj5WOvBKh5/uSENs53g89riZoYwW0bVJTqkmU2DNglsDixNFQXzyJrI9np1nNnGHlloJqiWNpP0d7y9HhofrGNZaNkBOM617+tO21LPnzqGQUd+KFL58+kh1is0xeuyj2OSU3+IBHyAyb4= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798052489286.33796497665014; Fri, 30 Apr 2021 08:54:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120598.228093 (Exim 4.92) (envelope-from ) id 1lcVSf-0000a5-CJ; Fri, 30 Apr 2021 15:53:49 +0000 Received: by outflank-mailman (output) from mailman id 120598.228093; Fri, 30 Apr 2021 15:53: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 1lcVSf-0000Zw-8k; Fri, 30 Apr 2021 15:53:49 +0000 Received: by outflank-mailman (input) for mailman id 120598; Fri, 30 Apr 2021 15:53:47 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSd-0000ZU-Qv for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:53:47 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 811015c8-61e6-4789-a1bd-c69fd7925069; Fri, 30 Apr 2021 15:53:46 +0000 (UTC) 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: 811015c8-61e6-4789-a1bd-c69fd7925069 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798026; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=hELyE44OjIjzV7+Wdf4YgVbmMqt+ERhOJXbcDBIErKg=; b=c83pQE82Zg5WiN92q9eMFTR5ovj7eCfSdGWd7HCj0cUHwhIbAPrRRRhH k1849tcdZNSOe/+6wddKU/xvBYngVioLQfFLbndJvxgh5aBbuvfQqfP0S sGMTKSMavidQK92hL8XYW4jgdvduaRoMDf+KKTKX3JWsMWhr1mw/2cAAC 8=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: q8NT5IUDhpvBjtZh+pb8MBXK9/TJdmwxRNo+2fz1mnU96RaPnIR2pzn7HTUxjLuBIytJ+hpXsI GMVW1rxcqOakF9BEdEBu9oSG6zWhdyxubWdIKHzkAMYg/Js1ToIhbkKXBWlH0uU3djZ5F28SEV oJv3QDpfzaDSVoX6X6QjHzEDQMWJa3MsvSgJI6VCUPCjxfxBbwsbJCaqBys7yTi+2ux5jlX3yW DIhhCbT74zpoeD8MlZK//GulgnfTm9LqYu/Zkd0+i5BHo/jwlIaqgSnsfxxld5Zmww56VQsLTI qw8= X-SBRS: 5.1 X-MesageID: 42930019 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:6mjpAqiS7RJv/QE8O2Enh51B/3BQXiUji2hD6mlwRA09T+Wzkc eykPMHkSLlkTp5Yh0dsP2jGI3Fe3PT8pZp/ZIcVI3IYCDKsHalRbsM0aLM2DvlcheRysd42b 17e6ZzTP3cZGIK7vrSxAm9H5IezMKc8Kau7N2+815XQQtna75t4m5CY27wf3FefhVMBpYyCf Onl6h6jgenEE52Uu2LQlUDQujft5nqufvdEHo7Li9i0ifLoROEgYSKdiSl4g== X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42930019" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JkvwYiCWizhVRJhxjAXQcWx10lPZGXM73BL/g6Iu+E9o2Cy26PmXbKkq63W5wWhvb1/x1dg9Ll2MnHkZ51FVN0oB9WjqO25lOiS8zB2GDXj/w8CWR6rud1uG0f5ovJPRATwit7c4mA60jBrj0v/c0VuLPEZFFl/MfFl5Ca3HZu6pMowIspQVJ/1vclJDWl1YKjR1jwmO2kowXYh4BHcDeFDo4vFdrWZf6Bzcv4mL2Swmxbi4N4jEYSbWE+WPHRoMXKgYFiPuTO29teBDJyiObcQPKORdAgdfgrlIe3pSBDDfB5xiTAltphAy+JSveL3EBW87t1LlNavBKj3hqHpm2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KyuIaS7BuF4VGyvgnC9lay8BjM2lepDtuERfKu+QpZI=; b=Ho9w5l4D05LOQBrKs2JJrJgvOcRfpYogmO7GKcFcmPTkAv7G3SbI9H1YbYozvqDzKVhdAVwq2UMcW0Drsol2YbUywN6vqV4dnSD88a2Wl7Y+sDOSMB8CE5bkJREl4i9qI+D19bfA1VF4o9l9ODr0fnWbKYNVtmUcFx2Di/Sjw3BuHqOcEJat1xloOwv88KI1e9DyL/fOhrLhL1lS5o0wVgZNm1UnGc4+9W/fzHqVu2i4fnAxdV4ZW01Smn7nswFyeGz7WOMdJ+U+05qdRDiZ8Ipq8hK/rfow/e7qIr1Y21lzwCoK3wOhk4kVwVlXFzvG6xT60zEPK8jBE7D+JyIw6g== 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=KyuIaS7BuF4VGyvgnC9lay8BjM2lepDtuERfKu+QpZI=; b=PI/0IynwZFfgoYc8FAMYx3dOqFvBahWj+tEN1Dm8unwYXWbd37ij4iMQZbn9I/phuuGGHcwUc2UnRluNNq7YvxfzQbHiJgQYyZPTCvAiG8XOc21sXIvZfFB1RFXwDRoA1ZHTxeFz6F24/N7+usK4VStmFOaIZOQYYjwoHKPELqE= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 02/13] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Date: Fri, 30 Apr 2021 17:52:00 +0200 Message-ID: <20210430155211.3709-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0015.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2e::20) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2f27cf8-99a9-4121-eb94-08d90bf020b8 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AdTT5iY5vkyEqrNEX3amhdcUpI83iaHeq2FIRVkMjEGzgzPI6k577F3APc8Uoy8x9s2BlrWSidZpStscndnfpptSg2OsMNIYpKgws2WY2oDxixGZ74CIKf781CD65hCUkVO6dB0TTK83QrytSWDqcB0KC33ele/d98KLFGha7yYMHTXvKb0xLBJgLOw7lgpgceHzCP2jgy6/+ZIhHn47LkmkGvBAGRb4MadH9/aR8nMnyy+xIjgrqMUxCgYswJ8fSTInbZqF/u/lr2rpU0vMX2hZxWG2PHqTvoIrB6SyColhVUIR45FbOo1bMQmPpPhe9Y+P320a8IyqDlBvegYfKaa465ZbAMAKPcwxMPFM+skqlS63Vb6wGoaZrzeanNaRXBEKTEmpvnjmYcdvkJ7w7f0Pj6WX3/8PcuV4YNQlfjNIPtAa7OLKgRxy9kM5hOubp5rIznsBh1AwwWmU0VFmXLCKanMnK2mswsUkemw0To5hE4Al3jW8+Y322L5N425CTnyut+NLcJK7l+kETe6W3bETmZCi88ErAKdTRQEPXAJUHCEzSX0AbVAh0d12QghGYNUw4OYVKSaOBciLDcr1hRc1DLRKPGIjbyEjn2AVJoU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(498600001)(6486002)(2906002)(5660300002)(26005)(66946007)(2616005)(38100700002)(66476007)(83380400001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?Z1pxdVcwS1Q1Z2c1MVphWGdTbWx3ZnpnYkRpOWg1L0ppcllZZnpVbjdCVWdu?= =?utf-8?B?R3RDMEZoNkhQNkYrOEpGT1pmblJadzAybHpoY0RJR1J6TllPQnpFUXZPOHla?= =?utf-8?B?OC9CUlRNQ2htRXg1ZUdVb2VZWEx2RTYyZzNwQTlZY0lWY0p2dnJwRmpwb3hi?= =?utf-8?B?L01ZbWVybDg5c3NtazVJUEVtNEhob3Joemc2bmxIVmlWb0lqdjl5dW1qSTB2?= =?utf-8?B?WXlmVVdQMDR4a2p2cjNHQUYreEtUWjMydXBLS0kvT29idnJNV0xTc0IwTHFQ?= =?utf-8?B?Y0w0VldyVWNFZWdzcEdpZHpZcytvSUUydk1FTndxb2RiZ1MzT1FJZ3k2SEg2?= =?utf-8?B?RzdtMkZ0Nlc4ZTdqZzFyRHBRRnY1RWh3MkVWYkxPdUprL2NEVEFJcE5aMXpx?= =?utf-8?B?Q3hieWJFa3VkTnBtTTV4N2hFZEYvSTlOekhobUluY2llQXVpYUdGRmFYMUtC?= =?utf-8?B?eERZMWVxc1pZaTZCdTJRVVc0VlVkRHpNcGRhMFpiRzI3M2FUbFJxQmwyRHlY?= =?utf-8?B?L3RJUzlES0xVTktTWkx1bkZSOENqSHBEdFdkU0gra09WN3VUdTlUZzlmUURy?= =?utf-8?B?OVFyRWUxRVVBdTBONU9QTkl4cmFvUGJra25FbFNXWGltQU1BbThDeUFGeWJE?= =?utf-8?B?aG9uczVTRmZsVjQyY0Y1WVVqNTQ2N3BPOGkvcm55MTQxbHFvRFZyWmtVaVZx?= =?utf-8?B?bTYrVFNDUWZCUklFL0MwZlRBb0VDU05PRDhlSzdibFRhSGVaZEN0bkR3NjFu?= =?utf-8?B?Rk02VEk3MXJRczMwMU41cU1pV1N3M3JxRHJ2NFlSMHI0WGFzdFlJTm5MYm5O?= =?utf-8?B?aEltZnlzcmhmaW1uakFQN3NjR1c0c1hkR1hFUjNPcnZHTTFxdG5EOFNSUTBv?= =?utf-8?B?NWdGdlJEWlVWTGhEc000bEd3SGxud1IzRHNqZE12MVVpdDFaRUtMVkpMODVC?= =?utf-8?B?ZGpxNmRDOFBoWEJxZG1NajhXT0tOQjRtUHdQUHEzSnFlWkt0djJvVzhmaXUw?= =?utf-8?B?cWoyazBQVTZPRTNvZ3lLQkNGMTdtc1E4Y3ltTHUrVVdNNC9uYldaOGlaZ2pL?= =?utf-8?B?Q0hrWTBOT0NyQUlLRWJXaTJRKzh0WjV2SU1Sc0ZNNU1DMlJOMTZMWndBL1py?= =?utf-8?B?SjAxNXM2d2Y4R0NyTnFBMWlqbTRROVY3ZHUzOGNneGc2UkMySzY0TVZ3VzFk?= =?utf-8?B?L3ZyTXB6S2pMMDF1clB4M1hTTHA4K0ZRbnl5MGNvOE5PeXVBOEVMRGpSZDNm?= =?utf-8?B?Y1NITVRwUnpMeFRSWGdxNEtZTXpFREJPRzdBTG1rUDg4Wm9kdzI0VzkybGI3?= =?utf-8?B?YmdBQy9tOTN1S3NzLzZUbzd0OHowY1ZZVWMyZzg5NzcxbG5nVk5ob2loSFE4?= =?utf-8?B?b1J0eU9BQTBKOURQMFRONmRtNzdEOG93a254V0hGNWJQTU10SU9KNnV3enR3?= =?utf-8?B?SXFNTnZYdDNJYW0zMHUxSHNRNTFlaGtoZXFXbUlyNnNWZE5LcVN4QjU5dE83?= =?utf-8?B?aVdWR0lJckc3RGZ6eFp4KzhpK0c5Sml2dXAvcm52dzk5UzRjL01GQjFvTEcx?= =?utf-8?B?dlZWLzd2RkdDalJndTlxSHdhQ0xzY1dZSHFheHFIRXJrWHhIN3BNYlU5OFh2?= =?utf-8?B?cjVock5RcVRhbkU3Q3dnbmpwaWc2eEltbkJkUHl0empUZVIvUG9vYXpwRHVZ?= =?utf-8?B?VmU4bmNxZC9ielQ2WVUrZmY2NGlyMi9YQ2laOTdvQjhTQVFjOVlwUmJNNVNu?= =?utf-8?Q?mjOMJvvmqzSoVfxEP/PPYLwxwkPNq0WN1MqfAKW?= X-MS-Exchange-CrossTenant-Network-Message-Id: c2f27cf8-99a9-4121-eb94-08d90bf020b8 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:53:42.0524 (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: 1cBKCSNoHXWq3uKlUGXF5RyvZoT15a7I32uAk4pm8ljYi/ALFtmIMlqh6Xp9+qXHkCxJwF8N14+fEyZ8KQdfVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Introduce an interface that returns a specific leaf/subleaf from a cpu policy in xen_cpuid_leaf_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Note that callers of find_leaf need to be slightly adjusted to use the new helper parameters. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v1: - Use find leaf. --- tools/include/xenctrl.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 38 ++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 27cec1b93ff..cbca7209e34 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2608,6 +2608,9 @@ int xc_cpu_policy_set_domain(xc_interface *xch, uint3= 2_t domid, int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t polic= y, xen_cpuid_leaf_t *leaves, uint32_t *nr_leaves, xen_msr_entry_t *msrs, uint32_t *nr_msrs); +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t polic= y, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out); =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 0c9b3a960f0..de27826f415 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -280,9 +280,9 @@ static int compare_leaves(const void *l, const void *r) =20 static xen_cpuid_leaf_t *find_leaf( xen_cpuid_leaf_t *leaves, unsigned int nr_leaves, - const struct xc_xend_cpuid *xend) + unsigned int leaf, unsigned int subleaf) { - const xen_cpuid_leaf_t key =3D { xend->leaf, xend->subleaf }; + const xen_cpuid_leaf_t key =3D { leaf, subleaf }; =20 return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leave= s); } @@ -365,9 +365,12 @@ static int xc_cpuid_xend_policy( 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 =3D find_leaf(cur, nr_cur, + xend->leaf, xend->subleaf); + const xen_cpuid_leaf_t *def_leaf =3D find_leaf(def, nr_def, + xend->leaf, xend->sub= leaf); + const xen_cpuid_leaf_t *host_leaf =3D find_leaf(host, nr_host, xen= d->leaf, + xend->subleaf); =20 if ( cur_leaf =3D=3D NULL || def_leaf =3D=3D NULL || host_leaf =3D= =3D NULL ) { @@ -822,3 +825,28 @@ int xc_cpu_policy_serialise(xc_interface *xch, const x= c_cpu_policy_t p, errno =3D 0; return 0; } + +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t polic= y, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out) +{ + unsigned int nr_leaves =3D ARRAY_SIZE(policy->leaves); + xen_cpuid_leaf_t *tmp; + int rc; + + rc =3D xc_cpu_policy_serialise(xch, policy, policy->leaves, &nr_leaves, + NULL, 0); + if ( rc ) + return rc; + + tmp =3D find_leaf(policy->leaves, nr_leaves, leaf, subleaf); + if ( !tmp ) + { + /* Unable to find a matching leaf. */ + errno =3D ENOENT; + return -1; + } + + *out =3D *tmp; + return 0; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798049; cv=pass; d=zohomail.com; s=zohoarc; b=FVgUTdM/kWjG90kBjLuMWE4rqSkCqi+cl+LcuzrfdmydCKUow+K3YUvaIjA9LA/1SaFDkWbD//OvXzfMYFOUBfaRc+ulG2vlxc8yhP5ALOxmiJbvMRxXQJ7V0RfiDQ+JqpM4XDduUJJVslL5riBWYdhJMpqly1RW1XJzeAT2lEY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798049; 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=ReYtIhfneceED5ekYrJYnGrommG0WKr3NQgh92cs/8w=; b=Pt6PLifuuJ63+ZRLcCUaIx+Uk5P1ymzr4g0Nj2HhGfpLOA7Yjs9yXIoCkFnT46P6YlbubkixfwzeNS7VpZW5k2+ZfyFit3KyUrwKD+DYvdALrmXLQ0SVfCLhVPKU4IzE1CNyQV/sUt6ASqtmRhrBH46IrMx7mJwXyHo2aa5fEl8= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798049027586.1146708817793; Fri, 30 Apr 2021 08:54:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120599.228105 (Exim 4.92) (envelope-from ) id 1lcVSk-0000es-LX; Fri, 30 Apr 2021 15:53:54 +0000 Received: by outflank-mailman (output) from mailman id 120599.228105; Fri, 30 Apr 2021 15:53:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSk-0000eh-I8; Fri, 30 Apr 2021 15:53:54 +0000 Received: by outflank-mailman (input) for mailman id 120599; Fri, 30 Apr 2021 15:53:52 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSi-0000cv-OZ for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:53:52 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 383de63e-048e-4b57-b395-a2ed92b46ed9; Fri, 30 Apr 2021 15:53:51 +0000 (UTC) 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: 383de63e-048e-4b57-b395-a2ed92b46ed9 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798031; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=3QI6nIHICm7IiETY4sabstkRIAffc6tHvTWeY2+r5kw=; b=Bjbn7xNSZyDmgG7BKVjdfIjwwiuWTknYp0iW8RcyzUy/mUXraxbVj54U CtdNvgVIjRZyaVl0XNQ+KG4GN0nEtqzzUhXAlhjjJyszAnUSh0bSQ63gl BB2Z/e6XeNV+gPYY/cWU+uiIIUz1NjyhwdWDWk2H7Gt4TwxqPBHLv9sRf s=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: b+jLvBzF4coDP6O8VQIKJdH7/COxxvA8D13kuMeQ0d+c6M7BfrpeMEwgQ/08XK+eXFAqODhGBs w4iLc93OKiJRqHpXlDvJGOdNTvtQ92K5oSifGwK65VkDRGYaFXfVZpEfN7LtOBH7laHVRe4sVC nmr3yJlNVCejG1FcC+KOTlPaGF3DhiReFMODiZYVYwOqhw9DrxCSMoLi0o97IvNPm0KtNXATeu y0aZ5dVT+T+SBab/yPAy8oO9CeTW7mh/vAX6gc3ghWbbP3BI3d53eZZ9fXq05+cS5x93womncf t2A= X-SBRS: 5.1 X-MesageID: 43199232 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:4mjqk6zUzNbHoIIWf9mMKrPxvu4kLtp033Aq2lEZdDV8Sebdv9 yynfgdyB//gCsQXnZlotybJKycWxrnmKJdybI6eZOvRhPvtmftFoFt6oP+3ybtcheVysd07o 0lSaR3DbTLZmRSpczx7BCkV/Mpx9ea+K6l7N2utktFZwdsdq1m8kNdAgGUDkV5SGB9dOIEPb Cb4ddKoCflRGQPYq2AdzI4dsXKutGjruOCXTcoHBgigTPhsRqJ7/rAHwGczlMiVVp0sNEf2E zktyC82am5qfG8zXbnpiXuxrBbgsHoxNcGJOHksLlwFhzWhgylZJtsVtS51VhYz92H01oknM LBpB0tJa1ImhTsV1uoqhjg0RSI6lYTwkLi0lORjD/CpsH0VVsBeqh8rL9ZaRfQ5g4cush92s twrgGknqdQZCmgoA3No/zzEz16nEu9pnQv1cQJiWZEbIcYYLhN6aQC4UJ8Cv47bW7HwbFiNN MrINDX5f5Qf1/fRWvepHNTzNulWWl2NguaQ3IFptee31Ft7T9E5npd4PZasmYL9Zo7RZUBzf /DKL5UmLZHSdJTSq5hGuEbQ4+SBnbWSRzBdEKeSG6XWp0vCjbokdra8b817OaldNgj150pgq nMV1teqCo8YETrBcqS3IBa8xzETWmnNA6div121txcgPnRVbDrOSqMRBQFiM27ucgSBcXdRr KyNfttcrzeBFqrPbwM8xz1WpFUJ3VbetYSoMwHV1WHpd+OLoXrs+fcYevCPbaFK0dnZkrPRl 84GBTjLsRJ6U6mHlXihgLKZn/rckvjuZRqEKbb+OAXwJMXNpJFtxUUjVjR3LDLFRRy9ogNOG duKrLula224UOs+3zT0mlvMh1BSlpO7K74SHNMrw8SO0byebIO0u/vPFx67T+iHFtSXsnWGA lQqxBL4qqxNYWX3j1nIcmgKHimg3wao2+qQ58QlraY39rsfoo1A/8dKehMPDSOMyYwuA5x7E 9fdQcPRybkZ0jToJTgqKZROcbyWJ1XhhyxLctdtHTF3H/s3/0Hdz88RD6hUcmenAA0YSFb72 cBvpM3iKacmDqpNGs0iPk5NloJc2iMHLdaFm2+Ffhps6GudwdqQWiQgzuGzxk1Z2rx7k0Xwn fsNCuOZJjwcxNgk2Ed1qbh61VvcGqBO0p2d3BhqIV4fF62zUpbwKuOZqCp1XGWZUZHyuYBMC vdaT9XJg913di42FqUnzmFfE9WsKkGL6jYDL45davU1W7oIIqUlbseF/sR5Y17LrnVw5w2eP PafxXQICLzCusv1QDQrnE5ODNsoH1hlf/zwhXq4GWxwXZXO4ubHH12A7UAZ92M5WntQPiFlI 90it84puO8OGT8YNzu89CiUxdTbhfI5WKmReAhrp5Z+b8ovLxoBp/BTH/G0mpE0BhWFraFqG oOBKBgpLbPNY9kc5ZMJ2ZX/l81mM+OK0VuuArsGeM6dUwsiXieP97h2cu3lZM/Rkma4A33Mh 2D9icY+fHPVS6Kz6QbBKI9On4+UjlI1F1yuOeZM5TNAwCrffxZ9FW0MnWhYKZQIZL1Zok4v1 J/+ZWUhOeZeCrzxRDIsTZ6KqxI9Xy7QcnaOnP8JcdYt9qgOVqNhaO24Mm8yDfvIAHLF3gwlM lCaVEaaNhFh30rkJA3uxLCOJDKng== X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="43199232" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gx8PbYQeGFznCJLGvd1TDRysETJAgN+yBr/NvxucF2bquHkGsB1zocYjqwEVGWfnu5wu1XC2y5JsnB0AM6L66yNKAyjPFH6O/XErj1aj/xDyIcyhhEKd1LsqnL/2tsWEpuSnHVL/Spb6q9CaLqewvQzDpqWywemkCKreitEe8eqxeAeqOQzbaGkUGmOkHhazEfeTk/p/shypTxCzcFXaJAUTuvCeOTlqbr7rJh9THMTnlvfYysXvyXHZWrICC+9N1lgGHyDVcwhLUFRPMgICZZfrawI+OKG4K8hqL/N+L/rr3XYSfM+37SDHahkclrZJzE388C3PX7sLtUlSC8C10A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ReYtIhfneceED5ekYrJYnGrommG0WKr3NQgh92cs/8w=; b=icTsCbe+UVNYdBLCQTWMeQKJm0/psLBXHZEaeNYx49KVLkZ9ButF0GYANcvuASYmSuy1S9YVb9oVo0nyA4d7G8ncdkQJ2DNcxJEzJCoQZ6QtK5K7uPFzxW3DLz39vfuICKIctSDZdJnmQdRQoH9xIqSNcsQD7AXIegFNZwAq0sg9m2AeAyMHq7XRfw+sH9irRtbN+CB7JINZ1v52L8QkdhnvUGYqEss7mJYM1UH8g0w/OjExwn+C+6iqNxC7R1pUgjAs8Qmnz0GcCMy7ldJjqOIatHVOaBm6ZhiRcqEfzs7BYziOKGoGP0s4xmsv+PxYY1pMWooATMaMBvO8WGiZpA== 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=ReYtIhfneceED5ekYrJYnGrommG0WKr3NQgh92cs/8w=; b=OIFBmtJH+57JqD5P/CZIXmTSH6PzLn8Xft847pmnZWwSS6tH3ZxPLq0bUGRgcnaaumgHUniqlTZ8p+zS6T0+Ad4NN2Y39A5VC0MVnLCfZ2i6xXVcKnHJM4vIF1FNTsMh8kZgwlcg4RVA1VbRshmqXip+Wiue4VQfzkXGVxFW4OY= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 03/13] libs/guest: allow fetching a specific MSR entry from a cpu policy Date: Fri, 30 Apr 2021 17:52:01 +0200 Message-ID: <20210430155211.3709-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0017.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1::29) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 20912c23-6269-496a-e325-08d90bf02424 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m5aITIx3FG28L2Et90HdUdi94T6lHdCsO+sUeQ95p0vyieQ/EPjFmrAE+xy02rpbJZ3EfgjM3D24SMwgvOfSgOm7EeTmnA+fXqzpgfgJqCWZAhAT5ojw8I9U1PU8CxQ1o4J1VFIen3nkVjPYBZSayHyZcUYo6WB7pmyUfybyLqzzwDxDIqyVK+W/U9SCSUhZLtUpJsj2P5J22GOkezc6/r5ddkXQtYi+FXa9X1TDHNSJ0GJlIUfTHSe7U7SWbGx4/j7ZT+QioAi2esa0dG+m/NPyw6Yjem0rwwkyuk9yuvc5Y8ATkd5I3wvGJZdLXIS0lfolNpfwi96x5bKe6W76tg+c09DYo4p5xiPyIgksmgvT20MpYzyWtQaiAk8+QO5kXhScMcEvoiXOT+i0x9bkKsySVBKl9pjM9JPvs7tTxl8vP16pcMlcjKH9fnkpj+RAE36ER5os5CQyel8QX+QLyKD1o7YfAuAm6IZ+FEykKR3P7WjUgjAtAnZ1yF2nHM+Et1W6BzCKgwmdZs3gJuMdMIuVPzHNpebT2vJ98WNk50TGeMpbAg19fLNsgZkIMfJKK6bhooMWv7YASKz7Tn+1iXBjIEiacV0mzmXaXamm198= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?TWF0ZDczWWpucmZjVlhYMWZzQ0xoM0lsZVNnVE9WUDF5czB4L2xLSUZnaW1I?= =?utf-8?B?K1RDRHd6WkNRUEVaZjZQT00yM1pYeWZpcTdNRWZHQlNWZWhjUUVKVUhWNVN5?= =?utf-8?B?algyZDZvSFQweFJZL0dPb3lTK1d0WldsNFJnWE5YWklhcngydFRqUzY1VTRL?= =?utf-8?B?ZGtkRWJ2VERPWldLbDNJMHhtRmgzNVhCbEtFOURwcjFLdmhTZ2JjcmkrOUtS?= =?utf-8?B?dnROQVNOcWVxcThjWnVHYzk3a1Z6RW5pSjRVOWVxWm1keFZnM0g5b3ZZNnU2?= =?utf-8?B?ajVVR1VOLzNsUFZnQUVPd0lYNzdtR2M5QmZoWngzcWxFNkZ6OXdQZThINUtS?= =?utf-8?B?dTh3WnNiSHFVM1VDdjNlWjVoQnJoaTVJenY5TnJsZkIrR0pNaTdTVTJLMlBH?= =?utf-8?B?d2lSYUtFTW1BVFFKbmw1S093aXJQTFhTSHB3clJaWGhGMWh4STREdXZYSjJK?= =?utf-8?B?VmFFNVNoNWNFRUZTT0h1bFprVDZ4b21aVEo2VXorS2FrQXFVdFltNnpkcGJZ?= =?utf-8?B?UUdDMDBPd0ZoUXZtTjNPOFRwUlpYQVVUT2taZS92YjN4cjh4cjZETmRTLzN4?= =?utf-8?B?OGxWYzRUY2dXWXNpNGRtRnBaT1JqM01kWWtjbDRwb1lORFhnTFNQdFFBakNN?= =?utf-8?B?OXpuZ1N0dlJVejh2cmllNGNuKzdQY1cxMjhUVWxaWlE4ODA4TkNaSGt5UXd3?= =?utf-8?B?NkhPZTRNOWJCOXdYL29lVW1ZbXRiTVhQQkNxdDVZTEd0UEVmdzJSSnVKeHda?= =?utf-8?B?MXNkcHpPRWk0emp4WkJyZHFOakF5ZGN3eUZtU2daMisxd1FJMVFQdDh6RHJt?= =?utf-8?B?eTd2bG1ML1Nud01nK0ttcmxWbjBJOTJsQUhIMnZaOVZOQjlGa1haQzMrQkVv?= =?utf-8?B?MzdTVWllbHpNdm8vK0tDZlBJY0RCUkZqWGxEQm1Db3BSV3MyWEVpazRQdXVV?= =?utf-8?B?REducGhob1pnbTUwVGQvbXZqUTZHUW5jUkI0eWgzMVVUdVFEeVJyL1BUR1cz?= =?utf-8?B?SlVkOHlJeXhsWDRCL3ZBdmhLY0ttU1U3VVlqS0txL0tZS1dCY0JyS3pvd2Nv?= =?utf-8?B?Njh0cVE4enk4UWJkMjRDcGZrRUdRYWFRcWdBQ2NoditiZ2NYdG9qcldjYk0v?= =?utf-8?B?UTlYeUF5bzRmOEhaR3pIc1NMVkMvcGVpdG9obk9SblFkSDZKYkFjaE52NVFp?= =?utf-8?B?UmV6QUg1V0VSZnFkSXpYcFZTR3pySzQyWjRkQUFYK1dCOExvVFpadnZLUUJM?= =?utf-8?B?TWJyQlkzRjlsamU1NWw1UHhSSXRCbnRRcEhTbWZ3YkVpQmlySmxaT0kxVlpC?= =?utf-8?B?dHFBd203ckwwOWduaU0zcE85LzhVK0orUXJWS1JmRGZBRVlqc0RoV0R2bWF2?= =?utf-8?B?SG5YaHI0VUdjdVJ0OFphKzZtUUR1VXhYNi9BMERQSTRZSHNzUmsvUVFVem1I?= =?utf-8?B?T3liK3VjcWNwTnRlY3hmakVuUmIvYU9SQmYxY0tIRmdIV1htSnRvMFZiY2x2?= =?utf-8?B?ZUhaSGdsV2lqeFdXSnQvNnZGQWFod3gyeUcvZnBrTjFtSTVqS2R2NWJ6MHlX?= =?utf-8?B?YTZ3aU8zVkk2c3QxY0xkcVVJelp1QlZPTytJak1MMWh0V0c5aDByNnU4eUtH?= =?utf-8?B?UlNtMno3QTVwbXk5RVVlL3F3SEFUVXZKbTdvbHRkTkREM29TUWdtODVVTzE4?= =?utf-8?B?SkZ0U2tCK1B2MG1ubytlazdMUXZlZlZINUo4VDlSUjQ5QlhSaXUyKzZtVHpK?= =?utf-8?Q?MddXE/3vQuhJvaBIFocTp9rkROrBjgoTxzxzWUA?= X-MS-Exchange-CrossTenant-Network-Message-Id: 20912c23-6269-496a-e325-08d90bf02424 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:53:47.7981 (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: j6jBqpnSLD/DNbJEGZagIN2YG8DEMk0Yxf5BeeaSySkK4ft3RQvEwyPmYF+2xLxpqtHgeTFQojS+0h9ozOyNUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Introduce an interface that returns a specific MSR entry from a cpu policy in xen_msr_entry_t format. Provide a helper to perform a binary search against an array of MSR entries. 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 --- Changes since v1: - Introduce a helper to perform a binary search of the MSR entries array. --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index cbca7209e34..605c632cf30 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2611,6 +2611,8 @@ int xc_cpu_policy_serialise(xc_interface *xch, const = xc_cpu_policy_t policy, int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t polic= y, 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 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 de27826f415..9e83daca0e6 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -850,3 +850,45 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const x= c_cpu_policy_t policy, *out =3D *tmp; return 0; } + +static int compare_entries(const void *l, const void *r) +{ + const xen_msr_entry_t *lhs =3D l; + const xen_msr_entry_t *rhs =3D r; + + if ( lhs->idx =3D=3D rhs->idx ) + return 0; + return lhs->idx < rhs->idx ? -1 : 1; +} + +static xen_msr_entry_t *find_entry(xen_msr_entry_t *entries, + unsigned int nr_entries, unsigned int i= ndex) +{ + const xen_msr_entry_t key =3D { index }; + + return bsearch(&key, entries, nr_entries, sizeof(*entries), compare_en= tries); +} + +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t policy, + uint32_t msr, xen_msr_entry_t *out) +{ + unsigned int nr_entries =3D ARRAY_SIZE(policy->entries); + xen_msr_entry_t *tmp; + int rc; + + rc =3D xc_cpu_policy_serialise(xch, policy, NULL, 0, + policy->entries, &nr_entries); + if ( rc ) + return rc; + + tmp =3D find_entry(policy->entries, nr_entries, msr); + if ( !tmp ) + { + /* Unable to find a matching MSR. */ + errno =3D ENOENT; + return -1; + } + + *out =3D *tmp; + return 0; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798057; cv=pass; d=zohomail.com; s=zohoarc; b=BHIs8P+5yAf5s8y0lfJy6Jg2uQu6dn8mvLmdysDqxA2EMLAeEsInMlbHnTaQO1g5N8aDdeor0cV6XVOOMUkCDjTyRlUvNqS1VuFMfNuohWvTOtyHSs0SzdetIeKwAl3ycvPv6oqAK+FdZ9W0MGC8XW5qhygZqVdVPQuFzSjnYPY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798057; 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=KrqI6833NbHxFCO57sSX2aG8FrkbJegAmboNZQJdf7M=; b=JoMohfKoSvjRyPvSp+p+8MJzyHlg/Lm9oOz3Gr8laZLYHbeJzq7zdvu+jVdangbwdqAwlcU508YY/n5aCpVxemLMlFQ8tY3mzUrEptXQoBxoLulVh0EXDjOzLqubBKInO4rzHEoiNaExVHYskbFdoSpzQk/3Fl8Hj9m0ykNTQWY= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798056995343.53805156821875; Fri, 30 Apr 2021 08:54:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120606.228117 (Exim 4.92) (envelope-from ) id 1lcVSu-0000mo-70; Fri, 30 Apr 2021 15:54:04 +0000 Received: by outflank-mailman (output) from mailman id 120606.228117; Fri, 30 Apr 2021 15:54:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSu-0000mg-3M; Fri, 30 Apr 2021 15:54:04 +0000 Received: by outflank-mailman (input) for mailman id 120606; Fri, 30 Apr 2021 15:54:03 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSs-0000lG-VX for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:03 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 842897c2-1b0e-4e67-9d4b-837ef2fc8b91; Fri, 30 Apr 2021 15:54:02 +0000 (UTC) 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: 842897c2-1b0e-4e67-9d4b-837ef2fc8b91 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798042; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=JO3corwwH7CRtk0Hj71DwiqJkvyHqQxAbPsRbBGQKto=; b=NkM9NtR3SkEWADHCKIpCybbAGrwZPeglH3tufxEO3LhTnHQbvVDtMYRC dXx8OSOQtqIn19V/TBu0kRLScfhiBFke0xpo0E/bKHGTq7CjYoFecRFiE 9CU4oyVBNnz7pfiw/Awv0MS55TqI3mRhfEVGfn0r2n0iptOsDVL4TxFws w=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 8xIh4amYL5gHTXVoWaHJlUQ1bsKzWDhxeYN3cucW6wnbUy70IEd/5WHW94p+53S0ss9jPxzo5T H9//bQWE/5jnSplsY3ZTvD5turiAsrfx1BxTA5ZppzBggYgdrSl78wyHzj6Bk8uEJdk0A7AqmT HNW+uqhV1Nuva0CdeZ+xQr9a5CYgD0SZo+ORkyHq7THvpY6992RKMK+JARU9TeLLHXc3SaujqW xjkojvYqCl4nTd8zYFspN6qj8nApRkni6ySWFwosQQ2RqGbZsivecTrSZIx+CpcWNZJczCneJh mas= X-SBRS: 5.1 X-MesageID: 44331706 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:3UPkQqnmmKSNMLge4myFAzn/EjnpDfO+j2dD5ilNYBxZY6Wkvu iUtrAyyQL0hDENWHsphNCHP+26TWnB8INuiLN9AZ6LZyOjnGezNolt4c/ZwzPmEzDj7eI178 1dWoBEIpnLAVB+5PyQ3CCRGdwt2cTC1aiui/vXwXsFd3ASV4hL6QBlBgGHVmh/QwdbDZQ0fa DsnvZvjTymZHgRc4CHFmAINtKz7OHjuZr6bXc9dnsawSaUizfA0tDHOjiemiwTSjZehYolmF K19TDRwoWGn7WFxgTH12nVhq4m0ufJ7tdYHsSDhow0B1zX+2KVTb9sUbGDozw5ydvHgDpErP D2rxgtJMh14X/KF1vFxifF4RXq0zol9hbZqWOwvHr5rcT1ABI8BsZR7LgpECfx1ks6sNlwlJ 9MxmKS3qAnbi/ooSKV3bn1fiAvsnDxjWspkOYVgXAae5AZcqVtoYsW+14QOIscHQrhgbpXXN VGPYX53rJ7YFmaZ3fWsi1E29q3REk+GR+AXwwrptGV6T5Lh3p0pnFoi/A3rzMlztYQWpNE7+ PLPuBDj7dVVPIbaqp7GaMnTdaoDHfOBTbBKnibL1iiNKxvAQOCl7fHpJEOoM26cp0By5U/3L 7bVklDiGI0c0XyTcKU2plG9Q3MXXW9UTzhxto23ek4hpTMAJ7QdQGTQlEnlMWt598FBNfAZv q1MJVKR//vRFGeWrph7knbYd1/OHMeWMoatpIQQFSVuP/GLYXsq6jeePbXL7z9DCY8VgrEcz k+dQm2AP8FwlGgW3f+jhSUcWjqYFbD8ZV5F7Wf+fMSxogLPohFqRMUlly9+8GOJVR5w+0LVX o7BImivrKwpGGw82qNxX5uIABhAkFc56ilT2lHvhYQM0T/ca8KvtKWfWw65grDGjZPC+ftVC JPrVV+/qy6a6GKzSc5EtS9LyaxlH0Ivk+HSJ8ah4yO7croYYkDE54jQaB9fD+7UyBdqEJPki NjYBVBblLDHjnu4J/V96A8NaX6TZ1ApyuFZeRTsmnSsE2Ao9pHfApgYxeeFeiNgQgvQDJIgE ZW6KF3usvMpR+mNXY/jOMkMFdFdWSQB/ZcAB6YYZhP84qbBT1YXCOEgyeXhAo0fXev/0IOhn b5JSnRYv3TBEFB00oom5rC4Rdxdm+HeVh3ZW0/uYphFX7esnIb6579WoOjl2+QYEAF2OcTLX XMZiYTOBpnw5Sy2ASOkDiPUXUgyZNGBJ2qMJ0zN7XS0GiqMouGiOUPGOJV5o9sMJT2qfAQON jvCDO9PXf9EackygaVrnEqNG19r2Qli+rh3Fng4HKj1HAyDPLOKD1dNvkmCsDZ63KhS+eD0Z 1/g95wp+e2P2nrYtONyK3cbVd4W2fuiH/zS/ttpYFfvKo0urc2AoLSViHQ0mpbmBo5N8X5mS olMdRGyaGEPpUqecMceyhUpAV00NuOKVYmqQzwDKs1e0o3g3rSItOO5P7JpNMUczO8jRq1PU Pa9StXu+rBVW+E07URDqorO2RYaEQm8h1ZjZa/XpyVDB/vbv1J+VqxL2S0f7BcQrWUALl4lG cE3/iY2+uMMzfi0A/evTFnMrtD/mauT8S1Gh+NE4dzgq2HEEXJhLCr7s61hCr2TjX+a11wv/ w4SWUAKsJelzIlkIo7liCvV62fmDNWr2dj X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="44331706" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RorquNSTBsfgsLMkm0Anag3Yp5OPbuWQNAqMmUbDPHcZG2G8krTo/qsPumFNoHooh3qRq/nfurK1Rvw57Wtms+gsxWjePQXhyU/PYAMy87o9Hlu0nYx2ZzZS1pkuHmXbJfP9PBYyBeW8GFMRwx+4NA+mGoqEJcWD8ZBxN3Hk8tum950cuqLqgQxrNlCQLUUtDwXw50a/IXWgxr01NIBDRs+IQ5rwcN+Zp+CwrV8cya2FX3e3Td2EgcRgrJCQc/O7gVqEljGZgXncMKguIshw2MrzsAksct8d0oF60sMQB3nFyOfIdT07T4mDuAZ16x0Bj/XlhEH3Ah3U+hoVFY9gQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KrqI6833NbHxFCO57sSX2aG8FrkbJegAmboNZQJdf7M=; b=No8HaK2DuEFNeR0ANtDMOwCsHi5AqjjxSVcni+U8VFXPElmfMLkLsSXvLHf+be2xXTrnjaVqM9Wy9+Qi9qh5LR1zPYYl5AbrmweW4AdJoJNK7LkpvkU2znW7KTKei/SBKRmC6rbm5I1JkfFctWeZoVh9EwY1oG3EzAlEbdaCtHv6F7in1zl5PNQYBX3ZK4nAIK0plEXvRjjOtuXZZV/c9On8fgovkm8AUtg9DzYE7o7jyakYMzCFfmdqHgfoCB7PIsLBlZ7fUA7xWzDprADsWx27Ct/4XFhq05Czc4nobawTk/q/PvNXAI3SASvHehZSHDZ2pWlFLJr2zK9WwAEdjA== 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=KrqI6833NbHxFCO57sSX2aG8FrkbJegAmboNZQJdf7M=; b=wVtYyY7eF+4J5bTiTZytIvRidnLwmQ+DTpn6pyDtIVZo4i/DdlLUwN6MxPVjFVn9YZrES6uFT6Bwa0y4J+HAAmUMwhg9hsFNirpSF91PNg10o4BzUBUl/zDiLVJYPXMAJ6ofRC0XbRFRRy85Ti/7TETAc6cOwZDBlp3X0dOieuc= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 04/13] libs/guest: allow updating a cpu policy CPUID data Date: Fri, 30 Apr 2021 17:52:02 +0200 Message-ID: <20210430155211.3709-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0013.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::25) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ccc9d339-1e0f-4931-4466-08d90bf02ab5 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JRxiHCRp82z51yuHbU7uDUgzM7ll/Vx+i1nwXdPkm828eavuk5vsvK3D4m2HU9wOTF/pEwL9KTCPBizhM766T0GcCsd3+H9KDX9kAVEs/+B5vflWL1WRhw4xudTEhaJGmylRocf/6UtNAYaXY3QGZolcAR6dAdyj7EM44l9Tut7ZJzjbFOq7QNOwQyNNcB5BngoEEtuOyzF5K90DCTqYiR9s3q1X5iSuiGPfvZdGNmXaRcfZm5kHHHr6mTcsLpEJL183YrZEruJ7QTYLJwrk/ibhx6Wi1X9K1D0Yf5NBQ9ER27R6dcM3ebLwOF2F2OzMEIVgcltTrFY4HZhxu4a1k7U6JBCxiA1KaarcKtqsmQsfGdZ0Wl/w9tC87Qw7HWd1XQSItG/QBZwL6BjW81Pct4tb9oV+qHCZWE1OZ03vjz81CI9KUMXXA5FnMOT9vqD0yNAFAlVUqnD1wQ0UZwUao971VPdeLUwePV5kRFVu7Gci6jISlLNFQvYS4H7RMal7+T735Jdm4Prg+Tbz5SgiWWGKwZnH8u3Su+hWRsD4khR9LndkuLkRPbgkz/1yT9zaPNb+dJj8sf0wsfQh/KwwkltvCovYEj+0uRsEDi+P9h0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(83380400001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UFhTTVlYamg1Yzc2cEVOL2JwU05Ybm9CbCtpNVdmOHNzUTRZamF6YUt2MHQ0?= =?utf-8?B?NHVhTER4NE1zMVRPaXlYelRndUo4cEdnblloNlNEUnF4QW4zWW15eWNmeXhn?= =?utf-8?B?ejdyMGlaT3BTUWpWOUFENTVydUZRU1JJUDV5Q1c4WkJJcEsyNzlkY1gyNCtI?= =?utf-8?B?dERvYUJjaFRnUTQ3SHcxUnhqUnhHM2pNTW82Y0p2Uy9uZzVFRHNtVWhXd2hx?= =?utf-8?B?S0FDRW1RUHFnT29uUHBJUE44SC8rTS81Y1RUZTc4bk5JOXV3NGsxZldoeW1V?= =?utf-8?B?WXF1OGhoejBaaW9mczY1amNLeXJMRGNmNks2cm1hcS9WVjk5dEZ2MjY3aTBC?= =?utf-8?B?U1dqNjdJNTZPQzBlMFpxZjV1Yng3R1NJa3prYnA1dWMvdWdiamp0Q0E2TmNB?= =?utf-8?B?cUlFSHJBelpLM04vTjZjeUhiRm9DdkJIc0lzVFlJR2tSZFp1S0NjSWp0K3Rj?= =?utf-8?B?YSthSmg4Rm00RURoRkdpUWxLdlRTUHcrd3NOelQvc1h0eUs0TUY1eHdIdXBq?= =?utf-8?B?WFhLWWRyenJFMmE0eGtEWWQ3RlZrekFNUzhvWkduMmJOMnhQZXgxQTJ2dFdO?= =?utf-8?B?cWtlT2FWTUIxeHByNzdscHFDN2FIdkV1cU1hQ0h5Snlic01Ea25JZm1lbmhW?= =?utf-8?B?QmVzbSt3L25WNXlra2llM1B4OVNod2RoTFpuWERJaUR4SGIwa0xKb1YzVnVN?= =?utf-8?B?Z0hJN1duUGNTLzNMYUhwNnAwazArTnppNG5ORDhNVUtVbEtSb2dSaGttcU1G?= =?utf-8?B?d3VmMlEyTmdDVG9PRVBEclQyTEt6OVgyQm0zZnBILzFRd0JlRHY5V0ZxbXJI?= =?utf-8?B?Zi9maERCazgyUkJDSHc0RWFVOFlydHJaME9lUlIza1FpZ29OemVEQkpLU09h?= =?utf-8?B?OGpyQkRlM1dVc080bHphWllESkRCQjVCRTk2RHZDdkZweU9XdXJ4L25CN3gx?= =?utf-8?B?RVhBeXVtU0VXa0NTTC9QK3haRzJ6NWtZMFdBNnJyZ2VzbldHcnVsSzMxTnJX?= =?utf-8?B?WHIvZTh3UXFRR2pMOTVCM2FUcUpMZGFWRG1GSjRlTjVKQ1E3eVZlMG9KaldH?= =?utf-8?B?cUthdlRwSUd2ZlpXZnJZb0Z3SkJsUVVOUG40MlpNeldxeVQ1bDMzemNRZ1lE?= =?utf-8?B?OTNJQzRDcUhPRWJvWkpZMHZSMG4wcFQ3MG9IeEF5dHdXd1FhRUxKUjVkUGpo?= =?utf-8?B?V3VLa2NiR1IrSlY1R2VPV1JrSFJPTnp5cURteVJycWYyVVBFWXpmM2YyYU9L?= =?utf-8?B?N3ByVEFjYlRtaGFxdEpGeGx1NXFOSlF3VXpBeFpmSHJiM2tLeFVxQU9FOXBM?= =?utf-8?B?em5Xa1gwZVhoNnNjS1cyTE5Pa1BJbEpaZmFNRGtSa1Y4c3lNbTVOcWNDNzAr?= =?utf-8?B?NGtVU0I4MUxaVm9lUDhoUmxSUkd6eGZmOVh5TlJmMXhVS1JJRDBJcGladmV6?= =?utf-8?B?eFR0Tm93N1IvS0xxREwzZTdJTjczQ0RpbjNQWndIVCtiVlVUZloyb0VpOEkw?= =?utf-8?B?QkVrN09LNXk5SkJqYmF0ZFh5U2oxemVJSFJSc1BZNGYwSnVOZ2VlZyszM09B?= =?utf-8?B?WmFodDkzV3RWR2xGUnBDSEFjTzdYYlpFWDgxMEZ2d2d1eWYxMzZacU9MSks2?= =?utf-8?B?TFNUQnBocStabmJ3V3hXU1c1S0pFaDhPNkpWUVR2TC9iUE1YM0loQ2xtVUNV?= =?utf-8?B?L0VCWURrZ1hra2FEM2dpU2lFZkJqS3ZvcUM1Wkd0a0lFMEJqanF2VnBUaGVv?= =?utf-8?Q?WItvgfEOsCk+n5FCz5SivlNOu9MBKZ5GAGSkOCZ?= X-MS-Exchange-CrossTenant-Network-Message-Id: ccc9d339-1e0f-4931-4466-08d90bf02ab5 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:53:58.8046 (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: oYm2ke5gqREQm/UtyUgQHNRB1cMllabo7lOJLRru/8QWv9XQXJZR+dJVeRV+U2LGjfdsXBwS6Dy0oYLwjKAMrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Introduce a helper to update the CPUID policy using an array of xen_cpuid_leaf_t entries. Note the leaves present in the input xen_cpuid_leaf_t array will replace any existing leaves on the policy. No user of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Andrew Cooper --- Changes since v1: - Don't use memcpy. - Drop logic to update the leaf manually - x86_cpuid_copy_from_buffer already does it. - Only print a failure message if err_leaf !=3D -1. --- tools/include/xenctrl.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 605c632cf30..49f919f16a7 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2613,6 +2613,9 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const = xc_cpu_policy_t policy, 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); +int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const xen_cpuid_leaf_t *leaves, + uint32_t nr); =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 9e83daca0e6..a38e75f8fb1 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -892,3 +892,23 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_= cpu_policy_t policy, *out =3D *tmp; return 0; } + +int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const xen_cpuid_leaf_t *leaves, + uint32_t nr) +{ + unsigned int err_leaf =3D -1, err_subleaf =3D -1; + int rc =3D x86_cpuid_copy_from_buffer(&policy->cpuid, leaves, nr, + &err_leaf, &err_subleaf); + + if ( rc ) + { + if ( err_leaf !=3D -1 ) + ERROR("Failed to update CPUID (err leaf %#x, subleaf %#x) (%d = =3D %s)", + err_leaf, err_subleaf, -rc, strerror(-rc)); + errno =3D -rc; + rc =3D -1; + } + + return rc; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798062; cv=pass; d=zohomail.com; s=zohoarc; b=e0RNp1FrBsHYi6ILuH/mtZHCQiD4nXInfnwrSYZSG0sVyvsnn7OREg75l4zDzv6kAyp7MUxSgyYe00i4z2tOL9cmx/wV9DAPoMsGdHKyU69EjeydrtBfDc1CoX2uu54GemGExEw9UQ2hpoM/t3Us/TewVg90um0U6qq6cHcLmBc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798062; 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=+LhKndnVfulc+pPE8LZrgUCySKsih4Prcl9DAfyw9Zg=; b=FCTSN4gv7gDrJvoUS1BkHhyNTs3CDEthuTQdr3jGi/ytowhK1T4Cg7EQZ6DQxP8H89zCibAGofzQfoFIZ5FhgPcwk9EVyuGkdgXOJxW5Y+pUL5yqnDkvw4RIOFIv/ckxG58NT/IlfuLkjY9KHp4pY/IAUV/lhDWbA4R1NwvRd1Y= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798062339413.9191066023168; Fri, 30 Apr 2021 08:54:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120609.228129 (Exim 4.92) (envelope-from ) id 1lcVSz-0000rQ-IH; Fri, 30 Apr 2021 15:54:09 +0000 Received: by outflank-mailman (output) from mailman id 120609.228129; Fri, 30 Apr 2021 15:54:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSz-0000rE-DG; Fri, 30 Apr 2021 15:54:09 +0000 Received: by outflank-mailman (input) for mailman id 120609; Fri, 30 Apr 2021 15:54:08 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVSy-0000lG-1l for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:08 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id a8110f1c-f9fc-47bd-961a-05df22b7e5a6; Fri, 30 Apr 2021 15:54:07 +0000 (UTC) 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: a8110f1c-f9fc-47bd-961a-05df22b7e5a6 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798046; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=TQdtl7OR1654V6RadoMtlKC18LBsP9bJIIWv024exN8=; b=IZmi4eqfpG6mwFSPT9ZoWIQaanfuM4Ni6Kj7MAAxqt7+ksrKkkZS9+73 usMpUequOFxsCJR4kMhWF38UEZ7Q5nnnZVx6+vofzHRifpYDPnVwviNgt bQuYF7SsVomsjl+A7X9qsaIqRrWK5FSapnH2oz4RO/GfqTQOyFRPgv3N9 w=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 18pnHwUAczDGT26EsQfJH/KotBR3rTuhXfzsOyzVhSXlY1jyinf3+fA0I24SRA7lLfcMIphpTf DjG8Y1WoUQ3BF9rL8TVeK1bEs/rYrzHH+cTFrJ/COY951CGcPK2rTD7k3sSMOa31JwJvR+fdab ZLXDbzdGUvsSJ7qP1qlAg9Nyha35px0kt18U2Bd1zCYXoSyHQiOyuVoYqT9zHTUP2JaZXT3NiT 0hBQH+J+Xa3Cc2wkng9KG+hO6aG4Fs+I8w4I+iGaOqPqyKIkzPGnwDgiZP5IvlmWwZmefvBAPA lqY= X-SBRS: 5.1 X-MesageID: 42930044 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:z/PZ865USRftBEWMlwPXwU+EI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoex3h3LZPy800Ma25VAfr/FGpIoZr8Jf4z1TbdBHW3tV2kZ 1te60WMrHNJHBnkMf35xS5Gd48wN+BtJuln/va0m0Fd2FXQotLhj0JbTqzOEtwWQVAGN4FD5 Ka/MVKvH6Nfn4QY8S9CBA+Lpf+jvfMk4/rZgNDOg4/5GC1/E+VwZPZMzzd5BcRVDtT3awvmF KlryXV7riu2svLsyP0+HTU6/1t6b7c4/tFQPeBk80Ebgjr4zzYHrhJf52nkHQLrPq06FAs+e O80CsIG8ho8XveciWUjHLWqnHd+Q0j4XPj1lOU6EGLyaeSKUNYeqgx8L5xSRfX51Etu9txys twrh+knqFaEA/am2DF78XIPisa5nacm2YokuIYkhVkIO0jQYJWxLZvmH99IdMrGSL3750fC+ 9+DM3Qz+Y+SyLqU1np+kZo29CiRXI1A1OvRVUDoNWc13xskGl+1FZw/r1Rol4wsLYGD7VU7e XNNapl0JlIU88tdKp4QMMMW9G+BGDhSQ/FWVjib2jPJeUiATbgupT36LI66KWBY5oT1qY/n5 zHTRdxqXMyU1iGM7zM4LR7tjT2BEmtVzXkzc9To7JjvKfnebbtOSqfDHgzjsqbpekFCMGzYY fyBLtmR9vYaUf+E4dA2APzH7NIL2MFbcETstEnH32UpMbmLZDrq/z7fP7fKKGFK0dgZkrPRl 84GBTjLsRJ6U6mHlXihgLKZn/rckvjubJ8eZKqu9Q7+cwoDMlhowIVgVO26oWgMjtZqJE7e0 N4PffCmqO/rm+mwHbQ4wxSS11gJ3cQxI+lf2JBpAcMPU+xW60Eoc+jdWdb22bCARNjUcXMEk p6q05s8ay6a7ycrBpSSu6PAya/tT8+tXiKR5ATlumo/sH+YK41CZ4gRehWDgXEFxt8nC5ws2 ddYAo4RkvSfwmey5mNvdgxPqXyZtN8iACkLYp/snTEr3iRoskpWz8mRTK0aNWWhgwvXjJQoV V0/8Yk8fy9sAfqDVF6rPUzMVVKZmjSJL5dFgyKaL9Zna3RdBhqQX2HgiGbjB8PanPnnn9i9F DJHGmxQ7XmE1BdsndX3uLR/FR4en60UmhwZnp52LcNX1juizJW66umd6Cz22yeZh8+2ekbKi jCeiZXCBhp3cqL2BmcnyuiGX0qyo41BPHUCK0uftjoqyqQAbzNsZtDM+5f/Z5jOtyrj/QCVv iHfRSJaBz/EOEk1mWu1z8YERgxjENht/zm2BfotjflmFE+BOffO1RgSfUwJcqG423tWvaP19 FYgLsOzJyNG1S0TuTD76fdKwNnAFf0h0WdSukzs5Bava4ortJIbtLmeAqN8EsC5Qk0Kcf/qV gXT6t66o3QI4MHRb1nRwtpun4S0OmVJEQlsgbKEvYzUFEkgXjcJc6I6dPz2MwSK3zEgAPxPF WFmhcthMvtbm+m1bQADbg3LnkTQE8g6G569OfqTfycNCyaM8VC9kG9KHmzbft0T7WEA6wZql Jf78uTl+GaMwr+1wa4h0o2Hot+t0KmS9i1GgSCBKph9MG7I02Fhu+S2/GI5Q2HAQeTWgA/no 1KdUsZc8RFhH0DteQMo1aPY52yhFkknVtY6SxgjXj31OGdkT/mIX0= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42930044" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S9EKOUdCICyu4J85Frh4q+oWndFCFRm4/Jlx5A+gSBwbzF+sGZqNzeKwhx/tOOVszOVbk8pZtHq6+dthZ/bu2+v1dY/R1nEtD7AKM6PQsE5gOAprDNHbROD6Rr+35nbKvXEh/1iVspJ2bqKnXbxK07Nxkm8G5ACX88midt5Hxc4MgHTz/7it1lyEeKfHpy3ABgs2GmN9m2DItNZ77TWj79UR6qyoqyieQhmCspNb3sb2QAV+zogjc3Evie8c+QRmi4Jtt65+2r8fKggMveUj+ZvX57DxH3TQX+m8/ItYooT8W8KEy8/3YKF440zSsTzLrguEbme3ellJDYw3aKZzOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+LhKndnVfulc+pPE8LZrgUCySKsih4Prcl9DAfyw9Zg=; b=Idra5N9U5bMRCe2p81Vp0EXtJ9dSRh4YIfNsGsgN+9oTN5NF1Ss/SEN0klvz9rq2Po3wHcevF0Z+U2g4cTSlF5N357EKQr3JVc68EXqTbpXvlyi+uK/k1xw1lhMPGvWmcfjud1WoLNTCk6xp+q/cooX+6WK4QfoRRGDszmJFGi1lqoqoj3S4YMLIEea8HjTSy9NnV8pPRKjN7pja0vbolmLF/XvaAKulW92X2X5+91+q67WTTUZN8blEf6AxlsXozLjE1ns3v8WnMnbYefc1izrPSujKCwD/gZccvDAKO+cjSP7od5BEvny5zxNfo7V2LlTNuZfX6UlOs6Xp5H40GQ== 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=+LhKndnVfulc+pPE8LZrgUCySKsih4Prcl9DAfyw9Zg=; b=HcGWS7t69i6xqBdruDRe2WbPB96yQWT/UwF8cWCt/GxlGCC5Ow9TDpD40IESIQBRwnVupRU3/svANhvfxIRSZtG0CD2E1VkxhEE7vNMOPJUzIuaQgYKGXTsWaBy7IX/T0aJkPjdJTW6zj1zEtqSzYahttNBtlyYWH9tHp2M+KXc= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 05/13] libs/guest: allow updating a cpu policy MSR data Date: Fri, 30 Apr 2021 17:52:03 +0200 Message-ID: <20210430155211.3709-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0095.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:32::35) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e07b9057-25e3-409f-c606-08d90bf02dfc X-MS-TrafficTypeDiagnostic: DM6PR03MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Luk8HRbr+JX7eyJZHqEZYqVy+wXNtC34+TN2WUO8uFaPBPGXFI3Y98hPzpWPgGvynIWpMyAaPtqAz2p2k6LTOWDT3R2cOL7Vgw6slX9bMmIYwjcO18oBbqio0YcBd8fz3mUCJKc4nsBXGKrIE/EXB/EFUQU+jE9c3SkjOSsjc8byHoSSS24oHrnat/TSNPBzMFLLwqiTY4m1AbvorHzqEhRoPeHbG/0TKps1hf2o1sO7JAYtr3FsKdCLPIkdrMb4ElsCIRAImAV4CR5owlpwsjeeYxO8WmfzI/emxdeDmpk1bZlKJr4jq+0suh6mVupebw3j4Bh9b9ZH2hVUtSVU7JKpQMsCb1/pJK1PRopOqYV7kL5CRNdPikWyGqdWQN5Buz0dqxut8+IIXcbV+KrRIAgJAoTxwad2Jv5aaazb9+XqAK9OJDqnHQoisBtUpIK3XQdAzgeSY9PUZC8G9rpHcXJIVk0Nu5HPF6xbOWtVzmJB8yg2zyAXO0Bj/nTDwpQs/IMZyVvtuBw3bfBIMhexbdY7OnYld/7s52D0KNBPq/ZUB2zWW9XuzKpKO7ELl2We4G8Cr2rS4Vmbo5PT7qKzUg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(39860400002)(346002)(376002)(478600001)(54906003)(36756003)(316002)(186003)(26005)(66476007)(6496006)(4326008)(83380400001)(1076003)(2616005)(66556008)(2906002)(8936002)(66946007)(38100700002)(6916009)(6486002)(956004)(5660300002)(16526019)(8676002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?bGlvdTg4ZTZ0YXRnaVVHR0tZbStlT2VSVmZGOUJPZ1ZlYWMzaStLOHVXdmwr?= =?utf-8?B?Z0R2SmxJa0lZa0tveDl6Q3BidWprT2pUWk9IcTBEUmRpWmozclEwNmxYM21H?= =?utf-8?B?bGFqa0FDanFKRC90M2MxY1lQUE9BTTFTSDBLcnhDY0kzWVBDaDVIUFdVVmRP?= =?utf-8?B?QlRxcnRucE8vYkNNeFdhaWdySzlYUFIyMzluOGE5aWd4Uk5aQlFRT0dTV3E5?= =?utf-8?B?SzFGTUpONEZwQVhVL0VoNFJHTmd3SFExdGQrZVp5S2xOQXlXR3ZCM3lqNC96?= =?utf-8?B?ZllwVklKR3VKSDR2azlicG5HSDNyTWNqZGpDL3B1UEtnR2U2eldFZmFSTjVr?= =?utf-8?B?YXplTVNiWmF5d1hFMm8zYitiQm5tN1htU1pGV3h3RnA1UnNTdExFQ0dSbnhN?= =?utf-8?B?Y2JXVDN0OG92NW1YQmgwNFVobXRjeDJMblFvZzIwNnJod2twR0ZUL0pEcWtI?= =?utf-8?B?VlQxVkMrblc3Vy9WYUpZbnZHOHF0L05EZk1QZTZyZ282ZS8ydmZtcEFSNWhU?= =?utf-8?B?Y2M4SkZhczVxSSs5cFdJVDFuaFFPT20zSE4xYWVDb0V6UWFkUG5LdTVzVkNP?= =?utf-8?B?WlhMaksrQmV5NDFueUx0YmRsR0lUQVFkTzErb2RXN3ZPRHpWdmpkY2k2bGFp?= =?utf-8?B?b2FudGFQL2RTSFZ4dkdPUVhreFdzT1dEeXZubWViYXZtSDBqV0pXSmppRzhL?= =?utf-8?B?QzlDWm9xc21WS2RINnhCMng3T01ZdHdnMjI2dk5kM2lEZUNCN2xYK09MYmdL?= =?utf-8?B?S3l4MkFwZlY5SW1iRktrWERXakF6bmUzdHpBYlc4bnpNM3I0Z0EzVHUyRVpy?= =?utf-8?B?ZUdhYjlQVWxLaEg0aVJHaWhWalRZaDE3RmJHc1JpQ01vUW9ldEVlalNHYjBu?= =?utf-8?B?bTdsMit1bnpGREpyNjBNSHN2dTF0OTdwcUZ3b3FNaUI4YTNDb2hNV09xSFlW?= =?utf-8?B?OUJuUVNlYVhmaS91c0xWTzRjSFlLRmRkeUhpelYxcitvS3F1enR2dTYxeitZ?= =?utf-8?B?blNnSENPcUliVUExOTJ0QU1iYnRZUC8xK0EvV0VRTGhGRXI4alA0UzBYZEZv?= =?utf-8?B?V3JyQzY1S05TMVEvbTlkdXRCZEl2NWlTZm9LZDQ4UnhGRjhwWTlGTXhBcWpn?= =?utf-8?B?MU1FR0pXeXg4VFZIb1BBQ0QyNjFtSlZUMHlRS2V4cFZVN252cklldjZFQ3hs?= =?utf-8?B?MXRhMFNwVGhaenJaY3ZvN25wWWtvOU5yK0xOVytjU3U1TWFhMlRKTGlEL1l1?= =?utf-8?B?Tng2OVlZV1JEUThFR05CdllJUGtQaTdOaElxNXFMTUoyOEtRQ3VnM3JiQmF6?= =?utf-8?B?NWJQY3JoclZuUDNYVEpmb3dwaTVxQ3dwMFZoaXdUcERNVTVxWnpoTzBVY2N6?= =?utf-8?B?bDBSaXpyaWw4c0JNaWxwOEY2aEJjM2REQlgrUnVJR2twcnpHYTN1czlCelVP?= =?utf-8?B?dm5Rb0ZtZUk4amtwbmg5MVZKQ2puTGhRU20ySUFFK09rUUtobGcwdHMxOWtL?= =?utf-8?B?b0ZBQ1E3eGZyUDJwbityVlNRWWtkMGJydFBtN2MzSWt4djU0dzJjd1JlWWVD?= =?utf-8?B?cnYvZ2M2UlVocnJSQ0lrejl1cDdlR2NsZ3k0dHRNeEJrYmlIOWJWd0J1d2xz?= =?utf-8?B?SThyYmdZbUpPOUJ0Vk5MWXYwaVJFTktraldOczdIcHJ3WlBGVGVrejRzVVUw?= =?utf-8?B?ZDlxRERRTmozb3FIM3Rzb1pnQkp2T3FvVk9XMUdRb3hYQlFLemtUQXpQdnNP?= =?utf-8?Q?DQiiMKUoXaCD/fx39wR9OLLQYzyV/kZo1CtZBJ+?= X-MS-Exchange-CrossTenant-Network-Message-Id: e07b9057-25e3-409f-c606-08d90bf02dfc X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:04.3234 (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: UKvG0EtRl6nnrIPXeYoxuT50vBcRJNL2tUMGYDILDUUEf0p3YE8RVo7A8oNMmMgVz6Z2C9n3kxzDhy4XhipS6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4218 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Introduce a helper to update the MSR policy using an array of xen_msr_entry_t entries. Note the MSRs present in the input xen_msr_entry_t array will replace any existing entries on the policy. No user of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Andrew Cooper --- Changes since v1: - Drop logic to update entries manually. - Only print failure message if err_msr !=3D -1. --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 49f919f16a7..9a6d1b126d8 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2616,6 +2616,8 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc= _cpu_policy_t policy, int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, const xen_cpuid_leaf_t *leaves, 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); =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 a38e75f8fb1..37e55279ffe 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -912,3 +912,21 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_c= pu_policy_t policy, =20 return rc; } + +int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, + const xen_msr_entry_t *msrs, uint32_t nr) +{ + unsigned int err_msr =3D -1; + int rc =3D x86_msr_copy_from_buffer(&policy->msr, msrs, nr, &err_msr); + + if ( rc ) + { + if ( err_msr !=3D -1 ) + ERROR("Failed to deserialise MSRS (err index %#x) (%d =3D %s)", + err_msr, -rc, strerror(-rc)); + errno =3D -rc; + rc =3D -1; + } + + return rc; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798067; cv=pass; d=zohomail.com; s=zohoarc; b=aPAnDEjveq7YAlq0niFru0X14mHmu87yU34hB09fjcG6KBakUJK4Ne8xlYdkUqh0fJ2iWCSjgWyXNqwLkqcFYL5Tfx525CiYF+BeWFB/bUXJ55JvOEVXpwogUwHwncQdh3EwjoZkbTlxeJjNXbYa3ezsQr1e7z4SBzwdfYGrT78= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798067; 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=V3o2QvcoZ6aVqm325GW0WaeCjiv2jnbCGTc6SoBmmbE=; b=ibg7jpBktFPRMdIQhEqlhsY1kA+NGaoyBHF0gbkms/DhJD8druuqYfEEfT2xvVVe/FajUI50qsIr2+pbM1dCQWsGsGPYyv23hT7L4DpXQqED7JV9ARCQBGlS0+ZMxXq6K01j3E77ogQk8z2Wgv+WEGukqP8J0j9K2z30DaJ0PoE= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798067825248.75703752085974; Fri, 30 Apr 2021 08:54:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120615.228141 (Exim 4.92) (envelope-from ) id 1lcVT5-0000xc-Ry; Fri, 30 Apr 2021 15:54:15 +0000 Received: by outflank-mailman (output) from mailman id 120615.228141; Fri, 30 Apr 2021 15:54:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVT5-0000xS-Oc; Fri, 30 Apr 2021 15:54:15 +0000 Received: by outflank-mailman (input) for mailman id 120615; Fri, 30 Apr 2021 15:54:14 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVT4-0000wV-7X for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:14 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 7fd02742-d0ab-4975-80cf-ed15e4814c4c; Fri, 30 Apr 2021 15:54:13 +0000 (UTC) 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: 7fd02742-d0ab-4975-80cf-ed15e4814c4c DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798052; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=dLIQdWJ/rQq9cDoz+VNpuFqWNGmZaFJFYqKXFPnGBS8=; b=cp0G8zCIEYZcxYNrXsZcbu3Q4yqWENgiRsfabbw35MWAhrZX9pnRUW5W vKn3D78UTrlAbUS2lIxzhEejWJEBKvKBTrin9esQsuuSMwVhC5+bkily2 E+rJlLo7meHMZXd80LKELaWvleDmptQX1w8zywke9noSKDEMwRm+N0G0j Q=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: GXDbTmUi5a8h5yVbRaks+E/+qwLElnwWb7+Cnm6AuJvx5JNX8mk3Rqo8KxeBQ5taRBDlAFuP6V TOEb+ha2huWJzOGZNwjZQos1ZLq4U6uT6IoyPfFRkwsLm6ACvousNU5X7B9uznU6MtprQ36h0Z c3lPLnN6zR2vKUxn5UUpDulMU4C24uCk4nxOjOaHW/6MdKXdWwsZCm8TErNJzGUloVWNLbiy9O nRWujPiwxKnV2IhmmoI5MR65uIXJBnHT+35KGmqR54LsKdk8xyu4Ms/5yOYIQxzkCWJ54C+8h+ k2g= X-SBRS: 5.1 X-MesageID: 42810466 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:Gjb25q3sLNzHGcVMVP0NJgqjBFUkLtp033Aq2lEZdDV+dMuEm8 ey2MkB3RjvhzoLHF0mk9aMOK6PKEmslqJdy48XILukQU3aqHKlRbsD0aLOyyDtcheRysdzzq FlGpITNPTVLXxXyfn3+xO5FdFI+rS62YSln/3XwXsobSwCUdAD0y5DBgyWElJ7SWB9bPJTfq a03cZbuyGmPU0ec8XTPAhgY8H4u9bJmJj6CCRmOzcb7mC14g+A2frdCBiX3hAXVhtV2rc8+W 35kwj0j5/T1s2G9g== X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42810466" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i4jbpHFmQOSJ0EwigzyZ3kF3kYDDV2PF9e7ekH57NEtBB+AYUnNSBQ3J7ikHshLKtP1KWIIABnet19YeP6/X/XC8ynOd9CzJPA4CAzyjid0eZgc4tQ3PrbCi652Ttr+Uk08K7wng5P3rewtpQBzX2lHVqsOjw5lks9rCxsLZ2jPU6XMjjSI4shId1L7TuFPObrdcX28mmMine/cKnGd0tWDuDbc6P8UsSMnj+Yw49AX8KEbr8nXj9JA2WRxMUBG1KxzgIUN58pI3145RVqgt+IQusAnckmoUPLXo/XE9mgNfFvKEcecYGoML2lXkUHN5vvdBM8kZK8ZjlKEhU07uEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V3o2QvcoZ6aVqm325GW0WaeCjiv2jnbCGTc6SoBmmbE=; b=ZDOhf/CnobaI/sHY4v/HWSFP7AI+quIGyMIPh89cS+ts9KM9kVv+Xnx/OmpVsYkjPpXAkr799q9TbYLZu0b8+yjwdUjJm5yLc086nfObykT/SIenOJ5ZpAAa0QIyiHNP0zzJMM5m5opwnYAjpTEJhr+PZeEvben5RnClvX/3c+ZEkv+1btekXhVKIxw0IqVu62du16Rjpd3qWIVK1aukkJi3wlq3bSvZ22/kNF0pwYNGsupApnm4X2Ob6wH3/oRhcwsCeR1z1ht2ACwQsKy++qzgGy8UUG+wgrwfAtJqDy4MuCLAd8iOJycP6AaY+plFthvJW0hyzRyoFcT3rqosmg== 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=V3o2QvcoZ6aVqm325GW0WaeCjiv2jnbCGTc6SoBmmbE=; b=snApkINHTQZsUTWq6Oz2mccat3V2G4Rf9Tz+b+NKO6j2doa3uulLY4P0WWty+0yJduQMWEjHj2jRRfF0WLsHSs1rRM0JwPJDc1GpZupVVolUat5pxpMyWNfG9zEoT/VnwpED42tqGgQReX+QgSYd/wcnjtpKCAOobEDP8G6DbHM= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 06/13] libs/guest: introduce helper to check cpu policy compatibility Date: Fri, 30 Apr 2021 17:52:04 +0200 Message-ID: <20210430155211.3709-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0015.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::27) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 857750d9-21da-4aaa-d6cd-08d90bf03154 X-MS-TrafficTypeDiagnostic: DM6PR03MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 85htbtuOZalFc37kbvL2rPXTedPrHMsTtSlWO4jWSruLnycgBuQUc1YOuOjlvHknMehxyhwY40xCyKbDecZzwNUBBJmDU6+71d4GpDuNyDXvyYwxAr4OJegb0nIlhCKR/zNtesOsj4NAhJXuDtJvHwS96q57cCnvPsaF9K34r2NrYmM41uJXZZm3wQrMe6kkPqPrdU4IHdc4A1x+KASnd+tPZQWI5znj07/UTJWCp4JPSrIkKnq0S37QETNnkG07Oy50E2uTgsi+WfMRFEnwzEvNmb+WnPVM/D87s1AjZVx+88itz1ThDcLpdn5JfhdW0U3UsBJflxMJWMRxrmxnRkWmjQU1WViKbibuZrWTTVQBAZWX0vtm/q//6yS2W9PQn2K3XZdtRIzpF/rEO6r0Nm49g7kkCg1NPsPqKxKLmRTh9nyWmxs7fhljhsrBIKJvsS9F7rQJhk2aR744s/jb9O8X2n/VOgbm9g/RftBCOv58MIcHZNVxADdZHULqnMVRpjQbKIaAk5t3+9OqoWBczCe/YxmdHJKpDg/R3JEGoRLTLNMDBAG51W4tEBFORaDgC8QZpK2NaMnzM96laQJeI/qYIxrSkAxNcdT+08azFCw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(39860400002)(346002)(376002)(478600001)(54906003)(36756003)(316002)(186003)(26005)(66476007)(6666004)(6496006)(4326008)(83380400001)(1076003)(2616005)(66556008)(2906002)(8936002)(66946007)(38100700002)(6916009)(6486002)(956004)(5660300002)(16526019)(8676002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?YTQ5U0hoSkJ4dGFudGJQOE1Cc1EwYUJUZDM0VUhieU1KNTBxN25wajBscEh5?= =?utf-8?B?Wm9MSWcrVkswbHRzNnZYY2pwOHBWTU9kbFZrOUxpdytwN25TeFVUcW9BM3VF?= =?utf-8?B?K3ZvYXRvVS9YbEtXVHN1T2w3SEg3RG5XNjdKZVBaKzk2QXI2dVNBN1oxSnRU?= =?utf-8?B?VFdacjNhbUZGd3NOZGluckdkNDQyWERheG5US0lCUjNqci9TRDEwUzV6bUZs?= =?utf-8?B?SkUwTXlvNnJmdHFrZ0NIWTFlQTdJRXFKaGVNdSsyZkZKb0RFR0l0SEdjZkNn?= =?utf-8?B?dHZEQVlVY04rTCs0eGJhdzlOQXNlZVg0VVlLVi9pR0h4NHBCcmdCeXhpM3dQ?= =?utf-8?B?eFRJejZmMlQvcWJDRzFkK1RHYVFGY1QrN0tSQWl0WXFwWFNUSWZ6MHd0N1Jn?= =?utf-8?B?TjJmc1JwczlYYXhFd3dESG9jc3ZpRDZtUk9iaXdKbmhWb3VEZkVBUnY3NnVS?= =?utf-8?B?SG96WHo0TlZHekRxYUVsZlZhN0ZJSElLbVYwenM2VUpLWG9mZnM3V21pQi9u?= =?utf-8?B?RUpUMS9tRURNaGlMSExPeEh6Vk43SXBKa2xKV2x2UWI0VnNzSitGeGF5TUwx?= =?utf-8?B?cFAvTGlxeDNFcE0zZkZhWmlRaHRuUzEzVmd4Q08zQXgzUmxTODVFcXlsTERu?= =?utf-8?B?U2pIMUJ2THU5clV2UHNOMXV6UDdMRHJLbUt3MHhRNGoraFFjdjZBcUdGbW5O?= =?utf-8?B?MDhGT0syQUN1a0cyZ3ZJZWd0K1A3TFZEZDJxSTIxNDRFVEtBYStoOWZKLzll?= =?utf-8?B?cnd0Um9zdHh6VThOYmhjQktXVVNDNkdCWDVDMUpweGFXa3Y5U2hHZzExY2ky?= =?utf-8?B?Um9QcnBBcGJyYzZCMWlrdlVZWUM5c0ZjNlF5Z1hmZ2dRek5HOC84bUNZelVk?= =?utf-8?B?Z01wc2FJZlpnWmExT0xiRjhhUThmakowNjRRRE5hNnF5YmFBbE44MGUyNHZC?= =?utf-8?B?TWNjNm1YZGs4OFI4ZFNheUJsY1RGeUxyQ0Iwc2hLeWlXRTNucnNRUXVQMDlW?= =?utf-8?B?cWI0R1pDTVl2NmpoQTFCWjhKVzhYbXJLT2Mzd0ZjODV5NkE1WlhzbEVsbG80?= =?utf-8?B?dWoxRHdsak9pZXFoOTY5Q3F3T0EvTWYxRGZ5YW9YWWlwN1doL0RjdURRTWtz?= =?utf-8?B?eXUrdVhZa3NjdW1GcDBabE5vRDYreDhrRDZzMDZwWkpsbTdvcVM0M2xVTDVS?= =?utf-8?B?TDdiaXVNUjNhenFDTkY1TXhUKzlodExjWXdXUS9YcFpidExiTEtVREdwcHV6?= =?utf-8?B?NWNXeGRFL2NoaXNlZEdSS01HOE1mSXdqSUc1dFQ0UnB3dUZKQnFJc3kwVyti?= =?utf-8?B?KzJ2QTdBd0J5RWxuY3hmNGExSy9YS0k3UGY3L2g2azZyeVVEbklVM09iblhR?= =?utf-8?B?YWt3eEpiWW9NcWV2SkNVODRUdEZ6U29YbVRHZHFhOTJEcG9QbkxRVURUcml0?= =?utf-8?B?Y3NFNEtxTU9vdmcrZU9pZWZzZXJFQWtQMXNSZlpoM09CNEsvL3E4c25WeVE4?= =?utf-8?B?bit4djJ1cFVoQURiWUZWMDNtcjJGY2ZBMlNBTXFOSDd2QzlWNnMwdld1b2N6?= =?utf-8?B?RG1uV0RONCtMMHJZM0V5WVdKV0YrMTdWOFE3Q08rZXYwL3d2YWRxNUFWcGtB?= =?utf-8?B?bS92SmdLVGRwUUZ6NmJzMFdMWEpCTS94d3hiL3F4TzdYVzNSVUNpc3I1amJs?= =?utf-8?B?akV3UTJZbXFTTmxpeGtuRGNwVTBOOUpPKzVQWlR5MU5ONXlkd0Uwa3gzNDFW?= =?utf-8?Q?oftVUJt2PJQU3GSlDkepJrjTr0LytIyZl2Qnid5?= X-MS-Exchange-CrossTenant-Network-Message-Id: 857750d9-21da-4aaa-d6cd-08d90bf03154 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:09.9277 (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: /3IJ6of9v+s+6DZ0YbqhjWmA+ua7V7glEQbpOOcbdcjP3dHnWyk/BJFpDH9+BeB6losb1ke7BAVE9N91Hy09hg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4218 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Such helpers is just a wrapper to the existing x86_cpu_policies_are_compatible function. This requires building policy.c from libx86 on user land also. No user of the interface introduced. Signed-off-by: Roger Pau Monn=C3=A9 Acked-by: Andrew Cooper --- Changes since v1: - Initialize err. - Explicitly name parameters as host and guest. --- tools/include/xenctrl.h | 4 ++++ tools/libs/guest/Makefile | 2 +- tools/libs/guest/xg_cpuid_x86.c | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 9a6d1b126d8..5f699c09509 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2619,6 +2619,10 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc= _cpu_policy_t policy, int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, const xen_msr_entry_t *msrs, uint32_t nr); =20 +/* Compatibility calculations. */ +bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t = host, + const xc_cpu_policy_t guest); + 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/Makefile b/tools/libs/guest/Makefile index 604e1695d6a..6d2a1d5bbc0 100644 --- a/tools/libs/guest/Makefile +++ b/tools/libs/guest/Makefile @@ -40,7 +40,7 @@ $(patsubst %.c,%.opic,$(ELF_SRCS-y)): CFLAGS +=3D -Wno-po= inter-sign ifeq ($(CONFIG_X86),y) # Add libx86 to the build vpath %.c ../../../xen/lib/x86 =20 -SRCS-y +=3D cpuid.c msr.c +SRCS-y +=3D cpuid.c msr.c policy.c endif =20 # new domain builder diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 37e55279ffe..6b8bae00334 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -930,3 +930,22 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cp= u_policy_t policy, =20 return rc; } + +bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t = host, + const xc_cpu_policy_t guest) +{ + struct cpu_policy_errors err =3D INIT_CPU_POLICY_ERRORS; + struct cpu_policy h =3D { &host->cpuid, &host->msr }; + struct cpu_policy g =3D { &guest->cpuid, &guest->msr }; + int rc =3D x86_cpu_policies_are_compatible(&h, &g, &err); + + if ( !rc ) + return true; + + if ( err.leaf !=3D -1 ) + ERROR("Leaf %#x subleaf %#x is not compatible", err.leaf, err.subl= eaf); + if ( err.msr !=3D -1 ) + ERROR("MSR index %#x is not compatible", err.msr); + + return false; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798077; cv=pass; d=zohomail.com; s=zohoarc; b=N6MZoVmM5dA1dshfUTilytJp/8mMLflv0znH+hgG42BU27StmLBLGwahM1kqoG6JtVglOvtkTB6zLPWU8VQXVZJzlUH9qzq78LmiysmKegu1eeMyC7OBSy7k0WDNMbrKxcbLXySx8k605cWy8uV1yZOIF7pGbiY0uONErN+3KLo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798077; 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=bSU9iAR9gJn2F5NIkLs9bGfJT3MYOFmgJtTRnRYEooQ=; b=lZjorGfwiA4ZlzCJvO1zZmlnOUrxUeFRws4E33ehmvNxJ5UhvI66p1iMA3B3/PO4hogEbHlbmUTuvbr2SvgTjfIhyZanYkiddwa5sZuu6rb1xGrXVOAM7RRLDHOGH7UZzXFrn1NG9CWzg37zazCbpnyhNOjIAW2AbPDFEFfAU9Q= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 161979807742649.27941866056335; Fri, 30 Apr 2021 08:54:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120621.228153 (Exim 4.92) (envelope-from ) id 1lcVTD-00016m-GP; Fri, 30 Apr 2021 15:54:23 +0000 Received: by outflank-mailman (output) from mailman id 120621.228153; Fri, 30 Apr 2021 15:54:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTD-00016a-9x; Fri, 30 Apr 2021 15:54:23 +0000 Received: by outflank-mailman (input) for mailman id 120621; Fri, 30 Apr 2021 15:54:22 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTC-0000lG-K5 for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:22 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 1068a7e3-4ec3-4342-bda4-5b4644f72d2b; Fri, 30 Apr 2021 15:54:18 +0000 (UTC) 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: 1068a7e3-4ec3-4342-bda4-5b4644f72d2b DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798058; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=yCoyPCVGCFESZfxZk+zm8lKADgKfPH1an+DD+K5jasU=; b=Sa36rw0cD1LSYyV4X6Abdt373uNDniFNsBXcBmkBAr+8xA+slxsUlZg3 mqGgHPf8zgZLCRzprPs3nQuu3PnEu/b8r4OwUrw0i+EkdzBL/NaP0jNoX ZfG4dHL9RkpxLo2/naNliNS0NdwAal/r+dkFe6pW1mPju6IsFOyJfBLue A=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: H0k3LhR/vJx7/Lnl4HN4xlu6fAWOYGa8wdMDQ3zlbYoQALrKsctKSvEl/6uL4WRfs/nx3DqSte Qfoi/CTCPDGvbUJpV+B10xrEuqxnXQi0otSqrvt98ucr54b2jX8SFn9p31fGEckYEbKJYS52hS EC9zzYNmGP3/vHsbsiGDGY6iHY1WsvlHPcUtlI0mMwWqJI8heJ+PSuaQXION31LxXlUpSpFgBq ldsRGtQc+rcOflbMeWYS48ivwZ281YliPGC4Mwmg8ViXkQRummvQ3XgCfT2M9NfYcfolv0iijo g8k= X-SBRS: 5.1 X-MesageID: 43199272 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:e9XNhKi8I2ic2ZpxYRQOxFmxJ3BQX0hw3DAbvn1ZSRFFG/Gwv/ uF2NwGyB75jysQUnk8mdaGfJKNW2/Y6IQd2+QsFJ+Ydk3DtHGzJI9vqbHjzTrpBjHk+odmv5 tIW5NVTOf9BV0St63HySGzGdo43Z2j+Kenme/Rwx5WPHhXQotn6Bp0DRveN0VwShVPC5ZRLu vl2uNsoT28dXMLKvmqH3VtZZmJm/TnnI/rCCR2YiIPxxKJiVqThoLSMx/d5RsGViMK/LFKyx miryXcxoGO98620QXd0Wi71eUdpPLExsFYDMKBzug5Qw+c7jqAX4hqV72csD1dmojGhDkXue LBrBs6M8N452m5RBDTnTLWxwLi3DwygkWD9XakgGDuqcG8ZDU2B9spv/M6TjLl6lEttNw57a RT32jxjes1MTr8mk3GhuTgZlVPrA6ZsHAimekcgzh0So0FcoJcqoQZ4Qd8DIoANDiS0vFqLM BeSOXnoNpGe1KTaH7U+kN1xsa3Y3g1FhCaBmAfp82u1SRMlnwR9TpW+OUv2lM7sL4tQZhN4O rJdo5ykqtVc8MQZaVhQMAMXNWwEW6IZR7XKmqdLRDGGcg8Sjzwgq+yxI9wyPCheZQOwpd3so /GSklkuWk7fF+rBtaJ2JFN7xDRUGSwVTng0ahllthEk4y5YICuHTyISVgoncflie4YGNfnV/ G6P48TA/KLFxqsJa95mynFH7VCI3gXV8MY/vwhXUiVn87NIor28ujScPPZIqvxAS8pM1mPQE crbXzWHoFt/0qrUnj3jFz6QHX2YHHy+pp2Dezd5OgcyI8EM4VWqQgLgVGl5sWGQAcy85AeTQ 9bGvfKg6m7rW658SLj9GNyICdQCU5T/fH9SX9QvBQLNEn1aL4HvN2adQlprT66Dy46a/mTPB 9Uplxx967yEoeZwjo6Dcm7dkiAiWEImX6MR5AAu6GK6Mv/YKkkBpI+VKEZL3SOKzVF3SJR7E ZKckstW1LWHDKGs9TfsLUkQMXkM+RarCjuC8hOsn7bvVibvqgUNwEmdg/rd9WWjwYoTydTnX tr/cYk8fe9sD6yNGoyh/k5OlVQaGKRRKlLFhiBeZ88oMGXRChgCWiNnjCUkBc1Zy7j8FgTnH XoKWmOdejMGUc1gAEQ7o/6tFd1fH6aZUR+dzRztpB8D33Pvh9IoJi2T7v212uacV0ZxO4BdD nDfDsJOwtrg9S6zgScljrHFXIowPwVT5rgJaVmd7HYwXW2LoKU0akAAv9P5Z5gcMn0rfVja5 PtRyaFaDfjT+850Q2coXgofCFytXk/iPvtnBno9nKx0nIzCefbSW4WD40zMpWZ9SzpVvyI2J J2gZYusey8Pn74Z9SGxavUBgQzXi/7sCqzVaUluJpUtaU9uP9vBJHdSyLPz2wC0xMkLsv4/X luMJhT8fTEIMtocMMTcS4CoQZsm9SLMUcxsgv5RuU5ZkoginfHP9WPp7rEwIBffHGptU/1Ix 2Y9SYY4vLOGy2E3rQeA7grIWtXZFMngU4Sid+qZsnVEkGya+pH/FCmKXezf79WVbidFdwr32 lHysDNm/XSajHx1w/RtyZqO65C826oRsWpHQKHcNQ4guCSKBCLmaul4Mm6kTfxR3+6ci0j9P F4XF1VaNhfgT8/i4By2jSuS8XM0zAYr2c= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="43199272" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ojt4ltiOBhCVhLDbT0cNZUsJFhC6jPvTAD6k8OEsueM3tfJmo3mzS9Ayn2zhs78lfqZLORL+ZQ1KowmA9rAeD4B37l3lkXxHTESArur9jMup0S1h3dwuzJM3K97ygC8O4TnlQxuORl3WPpeAwEekyf2zB47nIxB+OePOp05rmQGX6sJzy0OHGqudt3vrwGgF1iIb/sC/kIJjIx/qgKvapKXRBkyr3T9izSfx+zm4OAk2KLYEh846nvhnLUrjSQTmsIzC2KrZaQu6v0LpikB9P7lDmganP1rQy2kmdYsXWDlIE9zc1vmZsdGkUX6IRsNLN/pN+/JNUWim53KKNKhimw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bSU9iAR9gJn2F5NIkLs9bGfJT3MYOFmgJtTRnRYEooQ=; b=oQj8IoWi5UigYuNu9u+X1w9pXAKIR9JEbRhGsN0hyEvs4sgTLgjNuytjxcCk2R8K6LOZJWqnZo4cb1o0RlhSwlaH5S/zIn9W5oszvIrEfTcL+k+v2SUnjD+2WHub03yQuKp/t/N9CYjesweYy4P/nyoJF2VKC0SLRLjm5MjOVp6WchZ4TXo6pVrTHrx2soLBX6gwspnwkHmpmUKWHGpS+qmDUUMcm1mJgG4a5p3kilD9+DPbVGs1JD1KTeZHEn6RJdmW3ypHBg1tUPkrRz4+CiM2By6rKtnb8fx7ZIm6/REEBWaN8rG2rmiu1UTvABdNtVB6MFFyTdiP7GyEntdFFw== 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=bSU9iAR9gJn2F5NIkLs9bGfJT3MYOFmgJtTRnRYEooQ=; b=UB9wij/eUsGk5BbRFCHdvk8/qFa0Y1U3rX067cYOtRsGRavu5ixZbxXNM0YPMOAMBHzNNh9OomcQAW4zq6Y/2xdOcENpNM6m+qh3eWnbVYW46x4v7hZSOW0jYCtbz+Lk0/E2+1rprpUYP2CNDe2B+a3BNSGSyq6gBrWOP9P2Gro= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v3 07/13] libs/guest: obtain a compatible cpu policy from two input ones Date: Fri, 30 Apr 2021 17:52:05 +0200 Message-ID: <20210430155211.3709-8-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0007.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::19) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 74d06c06-1b48-457f-ad0d-08d90bf034a6 X-MS-TrafficTypeDiagnostic: DM6PR03MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8Iwq4PLJdAehNBIAdgRq8Z1my3MLt6sw4qV21KwlrVDlCLHoYSKoS2/6ayN8BpVkjeKx7r95x6EllVdbIwu479Q/rxL3W6/U2F5MCU7A7Pt0Coe/5oN9k9YTyKh1iGTyfO/nS19hZ2j19a/wmp6CkbEMaNq+SEkq5DxOxJZ6ez4vj8MK2oB332GF6NMxO6LU6nHrYGuwOWkEFY3BfI7nFqAYKtJQcMR8ErgbyLDsGibpH7P5zuA5VNekzNCA+U77iCjXwdc7eC/YwKUu0YQubyYxBXNLNyQMFgD+KuYGnahOcNoXeRtYn8zi2OrnyoMnpxiVbAKcbT2vw3wIzTO+ec4Zpjg4JPTKI4s/3MsNPe/k0uKUgySXa2HnFSEHL0QB2atYqIJMS0uWLiCCVSnckIZbfavZlGmqxVB5ht8mnPY1R2zp+29tEotsNQYOI3nTF9pS0bPHqYGWOR078Uw1jsf2OdEoPTMONpZXAM5sYNwLdf9DRUGb2Pt2dR94NwDi00tg9/q4y97UclTV5KOhxgHPpOEiBZIgeB8s1644WlbCBspP9U63HNmyQAaI+8vDOlS25eBSCWmfW00z2HDyKoiu7WaIb8m4TqJuH3O4qUg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(39860400002)(346002)(376002)(478600001)(54906003)(36756003)(316002)(186003)(26005)(66476007)(6666004)(6496006)(4326008)(83380400001)(1076003)(2616005)(66556008)(107886003)(2906002)(8936002)(66946007)(38100700002)(6916009)(6486002)(956004)(5660300002)(16526019)(8676002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UDBPaHdXQ3R5ZEp4N0xhRkJ4bmRBZE1lY0h6dXJpVkhnK0JNOVQyZ2VDbDI0?= =?utf-8?B?NVhyaXJPaURENjVJcjlibkRWSFdFNzZqRFRMNS84V05zSUl0VzJEU2FUQVZw?= =?utf-8?B?K1ArSTFXLzNjNS8yUnVlWkZzTTRWYzNXaGJmRC9WdGVQVisyVkZjQnhFYklC?= =?utf-8?B?SXkrUnNxMlRhQzgyZjVTenRkdjk3S2N1TmtrK3piQ3FLbWxpN0NLd3VuTkJD?= =?utf-8?B?NGNBUGtVZ0NoYVNNK09KWU4zRlVWV2lzRnViN28rU2toS2ZoTXFFQjVJT1BB?= =?utf-8?B?eC9OamY2V1N0QklWY05yNkdxVzdQazBZcHc3Z2NFamc4NGxNQVRQNk9BSlYz?= =?utf-8?B?aXNSdktxcGkzOTBYNi9IdUJEWGptTzZhQ0tWbEFEbE9rZE91K2dpSGdybW1z?= =?utf-8?B?QUx1eGtabHJEbm9jY1ZIUTRNeitmYW4zd0crbDRHdmVUbzRCeExPZHpMMm4w?= =?utf-8?B?THR6cEN2TitDTzJQdHJ4aTdUZHNCQTBPeGhFRTNpUzBHeVlURHFIeFdVc241?= =?utf-8?B?Nk44eGZEcHFYcTUyVnp4cFdjL05pbVBmK29KMi9OMGJTNlJ2SlpldEt1a3V3?= =?utf-8?B?ZEJRRElkVFFyWUZtaFR5NlJySzlvcDlvS3VRWElwRG5yRkQraTFHOHlPRnBS?= =?utf-8?B?cVB0MXhrL0hER2pKTVR5cXlvWUN0b2p3cWpPbUdUcVZheHA0Qm5OeEttajJS?= =?utf-8?B?ZWUzUjUwc1pTVXdkSjkvTWRRYzgySFd6ck1ZNlQ0cWhOSEtOL0ZsajlFYlRY?= =?utf-8?B?cHNtYUNHdXIrL0hyS3o0MEV2RFI4QzI3eXkzYUZSMkIvLzNzdXl6dzhGcUlG?= =?utf-8?B?WWQraEtiSWxGamZUTE9oQkpjeUE3bWk5MFhPQ2tqckFlTE1wajN0QzRyRlNM?= =?utf-8?B?aFQwck1aUUNKbU9zOTZMVytncGI4U0xJR3ZUVVBCYkdyWDMyN3dCU2VXVVV0?= =?utf-8?B?OW1QL2Y2dkpHeWtTSnkxN2w3Qk81Zm1LeGN6RTlhcjNRSGl5eTdUa0hUcHlW?= =?utf-8?B?bER4K3lMRWJ0MUdZUGs2WVVzWWlhYXB5ZDdKSmJqOFdTT3I5YjNvS084WUIv?= =?utf-8?B?MFNmMDM1OStVT09VZnVnSUg2djdGaDNVYkozSHJPR1JiT1drcWtoUVZjRFRC?= =?utf-8?B?S3UzWjJkcHBRN1JJSFl3eUxTcjFDbGVRSTA4QkN0a29FaCtOUTgxVWxrYTVN?= =?utf-8?B?eUQvZmhwV1BCYXpnckdTUlcxUWFDaG5DSXNRQWx4VVFhZmNOUlNHazBmUHFn?= =?utf-8?B?d04vZmhsZGhhWWdVM3FERUNEZ0x2VVJBcFEya1lmL05rMi9KYzdmeGpKTitI?= =?utf-8?B?c0FySU80RjhEVFRORU0rZDZPZlYxbVlDbk9iUmNCV0dNTWZXU1ltQWZ1Tlo2?= =?utf-8?B?dHBKZTI1amxGN2VrNEl0d3E0VEFSWGJzakJxcUMvU1QwYU94YnRvMGgvNnRs?= =?utf-8?B?d2NERmg4VXVRMlpWYi9nVE9MR3hoaGlxQzB0UHhaaHZUNVVXYnhJNU5RZFhU?= =?utf-8?B?Ym9GT3R6Q2RJZTNtKzQxRE1tSWNhd0huZ1pmakhYVi9TQ3JoUDdMK2puc1lW?= =?utf-8?B?NkphVCtZMDdrM3RMM0xVV0pnZTFwYW1VTThMRHhDSkx2K1pHSy95TEllUE84?= =?utf-8?B?NjF0ZVRxMkdPL1ExckpUaXpack1GZUJrTlJEMGtzakpCcm5QMHZUKzVKRVNp?= =?utf-8?B?VE9zS0xwcG1lVS9TR21UZnVvMjRJUjFuNG1xcy9kMnBUbE9yUzU5ZmlzTXZL?= =?utf-8?Q?3fgn3D2Fk1NxcKVqKcWYfOv6s/GGntsHcvrIkyM?= X-MS-Exchange-CrossTenant-Network-Message-Id: 74d06c06-1b48-457f-ad0d-08d90bf034a6 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:15.4205 (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: 5mnHnpc5o5PaY7FJNs+9MVJ6I4Tmvrv0Wzq1DmrTNgDM1h8y4MKSQyrfI4KrwRzhlGloiCpzUtCp54leFtqZgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4218 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Introduce a helper to obtain a compatible cpu policy based on two input cpu policies. Currently this is done by and'ing all CPUID feature leaves and MSR entries, except for MSR_ARCH_CAPABILITIES which has the RSBA bit or'ed. The _AC macro is pulled from libxl_internal.h into xen-tools/libs.h since it's required in order to use the msr-index.h header. Note there's no need to place this helper in libx86, since the calculation of a compatible policy shouldn't be done from the hypervisor. No callers of the interface introduced. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v2: - Add some comments. - Remove stray double semicolon. - AND all 0x7 subleaves (except 0.EAX). - Explicitly handle MSR indexes in a switch statement. - Error out when an unhandled MSR is found. - Add handling of leaf 0x80000021. Changes since v1: - Only AND the feature parts of cpuid. - Use a binary search to find the matching leaves and msr entries. - Remove default case from MSR level function. --- tools/include/xen-tools/libs.h | 5 ++ tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 137 ++++++++++++++++++++++++++++++ tools/libs/light/libxl_internal.h | 2 - 4 files changed, 146 insertions(+), 2 deletions(-) diff --git a/tools/include/xen-tools/libs.h b/tools/include/xen-tools/libs.h index a16e0c38070..b9e89f9a711 100644 --- a/tools/include/xen-tools/libs.h +++ b/tools/include/xen-tools/libs.h @@ -63,4 +63,9 @@ #define ROUNDUP(_x,_w) (((unsigned long)(_x)+(1UL<<(_w))-1) & ~((1UL<<(_w)= )-1)) #endif =20 +#ifndef _AC +#define __AC(X,Y) (X##Y) +#define _AC(X,Y) __AC(X,Y) +#endif + #endif /* __XEN_TOOLS_LIBS__ */ diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 5f699c09509..c41d794683c 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2622,6 +2622,10 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_= cpu_policy_t policy, /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t = host, const xc_cpu_policy_t guest); +int xc_cpu_policy_calc_compatible(xc_interface *xch, + const xc_cpu_policy_t p1, + const xc_cpu_policy_t p2, + xc_cpu_policy_t out); =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 6b8bae00334..be2056469aa 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -32,6 +32,7 @@ enum { #include }; =20 +#include #include =20 #include @@ -949,3 +950,139 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, c= onst xc_cpu_policy_t host, =20 return false; } + +static bool level_msr(const xen_msr_entry_t *e1, const xen_msr_entry_t *e2, + xen_msr_entry_t *out) +{ + *out =3D (xen_msr_entry_t){ .idx =3D e1->idx }; + + switch ( e1->idx ) + { + case MSR_INTEL_PLATFORM_INFO: + out->val =3D e1->val & e2->val; + return true; + + case MSR_ARCH_CAPABILITIES: + out->val =3D e1->val & e2->val; + /* + * Set RSBA if present on any of the input values to notice the gu= est + * might run on vulnerable hardware at some point. + */ + out->val |=3D (e1->val | e2->val) & ARCH_CAPS_RSBA; + return true; + } + + return false; +} + +/* Only level featuresets so far. */ +static bool level_leaf(const xen_cpuid_leaf_t *l1, const xen_cpuid_leaf_t = *l2, + xen_cpuid_leaf_t *out) +{ + *out =3D (xen_cpuid_leaf_t){ + .leaf =3D l1->leaf, + .subleaf =3D l2->subleaf, + }; + + switch ( l1->leaf ) + { + case 0x1: + case 0x80000001: + out->c =3D l1->c & l2->c; + out->d =3D l1->d & l2->d; + return true; + + case 0xd: + if ( l1->subleaf !=3D 1 ) + break; + /* + * Only take Da1 into account, the rest of subleaves will be dropp= ed + * and recalculated by recalculate_xstate. + */ + out->a =3D l1->a & l2->a; + return true; + + case 0x7: + if ( l1->subleaf ) + /* subleaf 0 EAX contains the max subleaf count. */ + out->a =3D l1->a & l2->a; + out->b =3D l1->b & l2->b; + out->c =3D l1->c & l2->c; + out->d =3D l1->d & l2->d; + return true; + + case 0x80000007: + out->d =3D l1->d & l2->d; + return true; + + case 0x80000008: + out->b =3D l1->b & l2->b; + return true; + + case 0x80000021: + out->a =3D l1->a & l2->a; + return true; + } + + return false; +} + +int xc_cpu_policy_calc_compatible(xc_interface *xch, + const xc_cpu_policy_t p1, + const xc_cpu_policy_t p2, + xc_cpu_policy_t out) +{ + unsigned int nr_leaves, nr_msrs, i, index; + unsigned int p1_nr_leaves, p2_nr_leaves; + unsigned int p1_nr_entries, p2_nr_entries; + int rc; + + p1_nr_leaves =3D p2_nr_leaves =3D ARRAY_SIZE(p1->leaves); + p1_nr_entries =3D p2_nr_entries =3D ARRAY_SIZE(p1->entries); + + rc =3D xc_cpu_policy_serialise(xch, p1, p1->leaves, &p1_nr_leaves, + p1->entries, &p1_nr_entries); + if ( rc ) + return rc; + rc =3D xc_cpu_policy_serialise(xch, p2, p2->leaves, &p2_nr_leaves, + p2->entries, &p2_nr_entries); + if ( rc ) + return rc; + + index =3D 0; + for ( i =3D 0; i < p1_nr_leaves; i++ ) + { + xen_cpuid_leaf_t *l1 =3D &p1->leaves[i]; + xen_cpuid_leaf_t *l2 =3D find_leaf(p2->leaves, p2_nr_leaves, + l1->leaf, l1->subleaf); + + if ( l2 && level_leaf(l1, l2, &out->leaves[index]) ) + index++; + } + nr_leaves =3D index; + + index =3D 0; + for ( i =3D 0; i < p1_nr_entries; i++ ) + { + xen_msr_entry_t *e1 =3D &p1->entries[i]; + xen_msr_entry_t *e2 =3D find_entry(p2->entries, p2_nr_entries, e1-= >idx); + + if ( !e2 ) + continue; + if ( !level_msr(e1, e2, &out->entries[index++]) ) + { + ERROR("Unable to level MSR index %#x", e1->idx); + return -EINVAL; + } + } + nr_msrs =3D index; + + rc =3D deserialize_policy(xch, out, nr_leaves, nr_msrs); + if ( rc ) + { + errno =3D -rc; + rc =3D -1; + } + + return rc; +} diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_int= ernal.h index 44a2f3c8fe3..5709bcb93fa 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -126,8 +126,6 @@ #define PVSHIM_CMDLINE "pv-shim console=3Dxen,pv" =20 /* Size macros. */ -#define __AC(X,Y) (X##Y) -#define _AC(X,Y) __AC(X,Y) #define MB(_mb) (_AC(_mb, ULL) << 20) #define GB(_gb) (_AC(_gb, ULL) << 30) =20 --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798080; cv=pass; d=zohomail.com; s=zohoarc; b=FoyaPv0Hp7tYrO0LMQ85h+CvuMeDgugDq3wZpmEl++ooSTKL37+3Wd0tco9Bo9u8wxh8BtTAdCJbeKnxkH+TQQ9FfMWQZ7IZLFtuojo+v2xK++TP5AuleN3g7Tx2DVlUf0QxTKXpYj2jbV+ltVvekS+/RlaIHYvsPnbs2fFK0Vk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798080; 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=Ny+lyu/S5v+lbPlL8rnvx4QtBe2dSkn0/l6+PnoTvYM=; b=T+tY7tgPSVfpp4WmJUBlQHMivcVaLfO5tMwEcJC59CII24Xhzq6ex5AfMp2VwwbWEovV2DRyuBtw6HKucAVZW4Vgs9JACwHrznruMJyWSudO/6hWWWI0TrD/bCvhw0Gy4RJ3v83KL0Qi+YQGR7caTI+Gil6sxmsfI6hkd/PBnH0= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798080445825.1474588221733; Fri, 30 Apr 2021 08:54:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120625.228165 (Exim 4.92) (envelope-from ) id 1lcVTI-0001D0-PX; Fri, 30 Apr 2021 15:54:28 +0000 Received: by outflank-mailman (output) from mailman id 120625.228165; Fri, 30 Apr 2021 15:54:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTI-0001Ct-LA; Fri, 30 Apr 2021 15:54:28 +0000 Received: by outflank-mailman (input) for mailman id 120625; Fri, 30 Apr 2021 15:54:27 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTH-0000lG-KM for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:27 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 491a00e0-6dde-4df9-8c22-cc4ba78e87ed; Fri, 30 Apr 2021 15:54:24 +0000 (UTC) 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: 491a00e0-6dde-4df9-8c22-cc4ba78e87ed DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798064; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VgksK4tHss3xtKOhq6faeaUH0m3du7BNxGNFsPIw5pk=; b=RQJXQeNIW9wJmHBu0h2bI/O/yWPRaPRPAcfH4j0Bp5j4lLhnAT2C7CFx UM1dLmH2kjTZ7OYTVcFWb1p89Uzz+3XYnw0wd1YvVLtMt54E4DI8i0UhT pUjhMIAf5qmxpZkCGbSKEtJWZpL/BTqqzigtwsxkSkQiBoD3QYNF+giNk 4=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: AilAOLpV6aGIW/46Rr7DzUdKCcHRH2MYhV3ruAHeRKc4J/P92V6jTBD0gVzJVcw9YcdrRlf8xW HRByVwt9JYN3o18B5v9/SRZhDqoynXQuOVbm1ZC42IU9N4njNKt/4c4XyGuGfkkjSn6Pc3VVdL LNyQ47wA3EzaJsuBV2ONaGt1wfm/6/jx9msCYIzVbUQGD9TeRyjwOEgPUn0ObYXuM6hYwihmNp tBXzP5l/L4kzoRLblpcpLAuGJje1dBXjCoAH2KYh16ixQqp9iveMHjhOM4lOGIdxV/sfCTTcGe iXw= X-SBRS: 5.1 X-MesageID: 44331736 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:dyAjk63JNZhJmjq0X4LqMwqjBSB3eYIsi2QD101hICF9Wvez0+ izgfUW0gL1gj4NWHcm3euNIrWEXGm0z/NIyKErF/OHUBP9sGWlaLtj44zr3iH6F0TFnNJ1/Z xLN5JzANiYNzNHpO7x6gWgDpIEyN6I7KiniY7lvg5QZCttbLxt6Bo8Lw6dHFF/SgUuP+tAKL O34M1bqz28PUkGd8jTPAhPY8Hvr8DG/aiWBCIuKAUg7GC14w+AyLm/KBSA2wdbbjUn+8ZFzU HgsyjUopquqOu6zBi07R6Y071zlMH6wtVOQOyg4/JlTgnEsQqjaIR/V7DqhllczI6SwW0nn9 XWrxArM94b0QK3QkiOvRDv1wP8uQxP11beyESViXamgcv1SCNSMbsiuatlcwDU40dlgddk0K gj5RP7i7NrC3r7/RjV1pztbVVHh0C0qX0tnao4lHpES7YTb7dXsMg24F5VOI1oJlO31KkXVM 1VSO3M7vdfdl2XK1rDuHN0/dCqVnMvWj+bX0k5vNCP2TQ+pgE382IogOgk2lsQ/pM0TJdJo8 7eNL5zqb1IRsgKKYVwGfkGWsnyLmDWWxrDPCazLD3cZe86EkOIj6SyzKQ+5emsdpBN5oA1go 79XFRRsnN3dFnpDcGIwZ1X4hHASGiwRl3Wu4Fjzqk8noe5aKvgMCWFRlxrudCnue8jDsrSXO v2OJ8+OY6hEULeXaJymyHuUZhbLncTFOcPvMwgZl6IqsXXbonjtunRdufPNKPgeAxUGF/XMz 8mZnzeNc9A5kekVjvTmx7KQU7gfUT54NZ3C6jV/+8azYAXLY1Sug0JiVC0j/v7aAFqg+gTRg 9TMbnnmqS0qS2d5mDT9VhkPRJbEwJI+rn6SmhLogULKkvwdr4Gt7ykCCVv9UrCAiU6Y9LdEQ ZZqVgyxLm+KIaIwzs+T/i9NHiBsncVrHWWbpsVl6GZ//35cpcgAptOYt00KSz7UzhO3Sdjsi NqdRINTE63LEKUtYyVyLgvQNz5W/Y5qgGxOsJQoW/Yriyn1LsSb0peeSWvX86RiRspXBxOiD RKguIiqbKdhDeiLnY+iuwkMFtKLH+aGq5CER7tXvQoppn7PA53VmuEnjqcllU6fXfr7Vwbgi j7ITSTYuyjOCsVhllIlqLr+khzbGOTYgZ5bW17q5R0EQ39ywFO+P7OYqq4yG2KbFQehukbLT HeeDMXZgdj3cq+2hLQmDGMExwdt+MTF/2YCLQoaLfI3HyxbIWOiKEdBvdRuI9/K8qGiJ55bc uPPwuOaD/oAeIg3AKY4n4jJSlvsXEh1fflwgfs4mS01GM2aMCiaGhOVvUeOZWR/mLkT/GH3N FigdU5sfC5P2/xZtSFoJunGwJrO1fWuyq7XusooZdbseYur7N1BYDcSiaN23dd3hkyRf2E5H 82UeB++vTGNYBudcBJJH4c8VotidiVLEwk9gbxGfQzeFkxj3nde9OFioC414YHEwmEvk/3P1 La7ihWu/HCVCGH3aQBC60xLX9NAXJMnUhK7aeHbcnIFA6ud+tf51K0PX+2ba9FRMG+aMothw c/58vNgvSeeCX50h3BpDd3IqpB9GC8XMO5aTj8aNJg4pi9IlSDgqyj/c61gnP2UFKAGjglrJ wAc1AMZcJejTRnhJEr00GJO97Knn4= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="44331736" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HiOEbu8uIjU8gunSS1hMZJoOcAj/iSbA6VLcmNeHj8zeSx54GBhxpl7/XOwqwncwOae84YEBiSPVkXwu/bIC7oUgK2zoRQWK/C0M+XW4Jkv3af2TKK3zIsCD7+aS4lszM0gasS9LUIb/o90KOdiCQhnALS3FXsoPMnFr9aovX0Bxo6tuv/z2zBqw+stC3uJaxsQJ+asflXUgxfawFnufU58KbcTndZrLho+tx05vS8iVT2mWpiJdn5ScJCoZ6qWzCCtDqnapiwk3dc/UKEUjsbr38Ba1r0YuUGoBKt211Hht5iyxMd7ipwLwa1MjtstBXTFPxaes3NmOny0hdN7cNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ny+lyu/S5v+lbPlL8rnvx4QtBe2dSkn0/l6+PnoTvYM=; b=kVTHHtA+P9Xx+2ZSjfoH1LejWKFIWyk/CBBHK/TtNlbObdW+cI3K7m3wW+g90Z32yCPucKpf0moeBt/6/cbZPXdUylGoJM9X1rEfld53XwxI7XdcvQMa+x9cXLzHstAk79BLKwNC1YSqsLWL61JDNL2uB1CSzR9VizRJoeLbvowi6NwdF2yftkcwR2L9qhs3xejGRySGpidC4LzZi2md1kHGUK8ZGHuTxyZI1E4tXWjJvAKFlrMGPwo0IQpFKetsm1s9WRc3PxtPi7mSJuR6WjcBGPhXZ8Kro0qf4pZ/UYhDL8rOUoY8zGH3v+ue+JTpLBlbivLDqavcdQex9pO8sA== 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=Ny+lyu/S5v+lbPlL8rnvx4QtBe2dSkn0/l6+PnoTvYM=; b=Dvce4jOfKjqg2sF71lmO2XMxm3XPSM3Bw0QdqUGlwfx5cl7CrCHuOa1XZb0j2cd2x40iyzIuzN1M/rG21/Em6SmYuNjbDUamk/oXpyC2mZz6kzAxKXQQAVCCer4/R36mGnKzoxvEa/eV5RC22IsUUPF0Rp1L1UoRwKb9otVMmJA= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 08/13] libs/guest: make a cpu policy compatible with older Xen versions Date: Fri, 30 Apr 2021 17:52:06 +0200 Message-ID: <20210430155211.3709-9-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0018.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::30) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 021b9f80-ecae-4de7-3e04-08d90bf03832 X-MS-TrafficTypeDiagnostic: DM6PR03MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: C8JoGvBBRnntcIaSCDbMGdpcjWIYAufPqmXIjCYVjma285FnQqPCmw3nr43OjHjmiBPglZTY/OqG9rq3E9e1vuWHovpQ9sTzjr04E1BIX6KtWutI0ubWElBf9ikfmffGjpInjTBh8/1Mx7cs//69czgk54oh3t53gECGc8qcOlsYibQs02lLwC2SjgkUeCJTo9rsfb7mZFTbZEv6KuPLrkatpyjSUkzJXYfNvZ0a7lsckYob17bK8CuTTd8jbu7bfd4J8GOQ+wWWbDF+vQicPexFL7w1GlUMjeVyvkH3AL4p5zH1wAVOFbggifqLTt5mS5nD1K8xirPhCBniVcnzJ6ythBjmqyVN410qDIwK21Ne+DuCr7GAXs/7Ie8eYxKFAKITeQ72E6xbTn503k6+yE/6RubI5EOU+nRUIXSGnqZrPIaZJZzM7wvw+XXNF88PPoXwv6CvrnaVZb6t9wWFibrgSwICFwOCPlT1sLP01jq+K9k+gaOjEF9qQEh+2VsYmJahw1Cty/fQOXS3Hj7AaRUBxoRMwdtkOfBiNCDe4Dzc4WNEQ5vpsYURxgel41FI9DTFI4m8LEW1Wa9Y5l64CFvPly0F7WdmO2eqxSKqrf8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(39860400002)(346002)(376002)(478600001)(54906003)(36756003)(316002)(186003)(26005)(66476007)(6666004)(6496006)(4326008)(83380400001)(1076003)(2616005)(66556008)(2906002)(8936002)(66946007)(38100700002)(6916009)(6486002)(956004)(5660300002)(16526019)(8676002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?T1Q0c0ZWelFMUTh6amRJTnFyaFhmWVg1SGhTbCs2U3ZURUtOQVdSdStrS2JX?= =?utf-8?B?V1NIMnF0N2F0MzViQW4wN2ZRaVYxYjQ3N3VaTGRvOTlxZEpydnl5UmJtcUlR?= =?utf-8?B?dnFhckJUZ2lRcWpFWHM3S0d4ZjN4WnRLZno0dWQrd3FpbTllc09NaG0za2hj?= =?utf-8?B?SnJGZlhYdHpNWXNGbFh0TFk3TU9uZ0tiT0hGMXhUWVJtRWpoWFZDeXFUZDdo?= =?utf-8?B?ZjFwMEhXMWhDcE83YkZMSzlmTEpvTmdGVDc4dCs4d2NwaGhFOEwyVXdFNStl?= =?utf-8?B?bEhvT3R4cDBoRkR0emJXQVhSZWlIT3lhS1ZNcHJ0VDFBSlZ4ckZTWWJvdm9K?= =?utf-8?B?MWh5L21lNmdNaUZNQW4weElEdU95Qjc0ZzF3TUFiQy85OE1Da2JZSndOeTY4?= =?utf-8?B?emVtaGwrUnA1am5ZU25HczdxU1NVeFFTREpYbFNuSFl1SFJEZVJnNGpZWDdZ?= =?utf-8?B?OTdPVDhBY2RuSjR5Rkw5eFdqVmcrNTdqSkl1dEgvMkpFeEZZMVJyWVowRDdY?= =?utf-8?B?Tkg0UUJyQ09xWFZoZU5KeXNlWmNhajNQSnI1SS85L1VTRlMvenBTQWRsUXQ3?= =?utf-8?B?RHdwcWs2TmkrY1BEeGdaaTVKVTRVQWRoSE5kM3JaUHlCV3BtT001ZzZaa3Va?= =?utf-8?B?NjcybXFSbWRuUG5WeXNZTGMvRVJ4Y041bUVBeWlYckJ5UzhsUkNlZGl2Mm16?= =?utf-8?B?U2xDSFRMbWg3QUhiZUlrc1hqR3hDc3lkY3Q4WWlFQkN4V05Pelc1RDhuSG4v?= =?utf-8?B?MkxLc1prcTVTNzN6S0JSL2x2ODdZcDA4UVE4dmVMcWcrOGcvRjNrZlhVT01s?= =?utf-8?B?MlNOajJ4cit5ZEd3cDl3NkZNUUdUaW9sVHFMUlVYb2NMT2JqYUpzOWZUY2Js?= =?utf-8?B?Mi9CK2VkdFZ2Mzc2YjR1UUJOb2d4YXZtWW9tSkpKTm0vOEhvNkFmTkFObU1S?= =?utf-8?B?QlRTTStGVTF3dUNHQ3RId241YTVzVzFBdUdJUDFvODVtRlNqMm5DdGNmbkJX?= =?utf-8?B?VStYODN4aW81dGJJNDk4T3lqZXdQUitNVFhnK0R2NkxPdmhCOXN6OEFKKzQv?= =?utf-8?B?eXJPaWcyVzBCOTgyYzJVSXgzOVUvbFpxb3pUVzdROVhTZ1lIQklJOUpnR2F2?= =?utf-8?B?MzlDcVhDdlhFdWl1MHpJNFpzZDBsM1FMRFJjTTF2S0dBai9pL3kwRkI5VS9l?= =?utf-8?B?Rm9IQkZ4YjJnS3hLb0psWElKMURPRTZmek5HbnU5elJPeks2YU9EZ3BWczF1?= =?utf-8?B?bjFybTlrVzRoOW1CelpFRE1aSWg3VkdmVGtzYVBJZEtoeVNkbDlJdHpocit4?= =?utf-8?B?ZmRmcTdvUlZmcTQyUnl2cHhvTnZQM2JVQ0FqcUk5cldSVXBjckROdFZxd1NL?= =?utf-8?B?bFIzZEludzllTTloaFVQd3QwZEtNY3JnN3d6WmZXaUtIcmwrbkdkdVptVGlp?= =?utf-8?B?b1dNTi9wd0J1NmVCZUtoU3lJWjViYlIvdXRMbjFxb25MZVI4OEdDNDZLNmkx?= =?utf-8?B?N25IL0NaWGRVT1ZiZGY5MVdzS3dIZWdsZXJTL3pYVHBnd2ZHN05wY3FEUnE3?= =?utf-8?B?Y2tmY3A4VDk5eGRmVDdUVmFBUUJQR3UyK09jdmF4bGh0UndsSFRxbXJHMDV5?= =?utf-8?B?TWg4ZFFuNG9uQjAyQnJjU2dSM3BpRUIyNXpzZjZZQnlMUWVTL0JOcU1nRG5p?= =?utf-8?B?b2ZLR0svY2RLRVlaMzMwY3ZQbTVVTjRJRW4rYm41OWJGWjk1S2l3UlRPUFZS?= =?utf-8?Q?hMJJeXDjuXiG7/YlZz18VwpwOHUtxMpm+rbYM/6?= X-MS-Exchange-CrossTenant-Network-Message-Id: 021b9f80-ecae-4de7-3e04-08d90bf03832 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:21.4420 (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: oAm/6gzXIVqjFoEN3IEUAjdu8WwFhwFm3foX32K5qsTmLNpwgZRM1y62B0rt+Td24tjw3MsdAycP77vbwqRi8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4218 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Older Xen versions used to expose some CPUID bits which are no longer exposed by default. In order to keep a compatible behavior with guests migrated from versions of Xen that don't encode the CPUID data on the migration stream introduce a function that sets the same bits as older Xen versions. This is pulled out from xc_cpuid_apply_policy which already has this logic present. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v1: - Move comments and explicitly mention pre-4.14 Xen. --- tools/include/xenctrl.h | 4 +++ tools/libs/guest/xg_cpuid_x86.c | 58 ++++++++++++++++++++++++--------- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index c41d794683c..89a73fd6823 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2627,6 +2627,10 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, const xc_cpu_policy_t p2, xc_cpu_policy_t out); =20 +/* Make a policy compatible with pre-4.14 Xen versions. */ +int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t polic= y, + bool hvm); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index be2056469aa..855d252e067 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -446,6 +446,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, unsigned int i, nr_leaves, nr_msrs; xen_cpuid_leaf_t *leaves =3D NULL; struct cpuid_policy *p =3D NULL; + struct xc_cpu_policy policy =3D { }; uint32_t err_leaf =3D -1, err_subleaf =3D -1, err_msr =3D -1; uint32_t host_featureset[FEATURESET_NR_ENTRIES] =3D {}; uint32_t len =3D ARRAY_SIZE(host_featureset); @@ -510,21 +511,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, =20 if ( restore ) { - /* - * Account for feature which have been disabled by default since X= en 4.13, - * so migrated-in VM's don't risk seeing features disappearing. - */ - p->basic.rdrand =3D test_bit(X86_FEATURE_RDRAND, host_featureset); - - if ( di.hvm ) - { - p->feat.mpx =3D test_bit(X86_FEATURE_MPX, host_featureset); - } - - /* Clamp maximum leaves to the ones supported on 4.12. */ - p->basic.max_leaf =3D min(p->basic.max_leaf, 0xdu); - p->feat.max_subleaf =3D 0; - p->extd.max_leaf =3D min(p->extd.max_leaf, 0x1cu); + policy.cpuid =3D *p; + xc_cpu_policy_make_compatible(xch, &policy, di.hvm); + *p =3D policy.cpuid; } =20 if ( featureset ) @@ -1086,3 +1075,42 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, =20 return rc; } + +int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t polic= y, + bool hvm) +{ + xc_cpu_policy_t host; + int rc; + + host =3D xc_cpu_policy_init(); + if ( !host ) + { + errno =3D ENOMEM; + return -1; + } + + rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); + if ( rc ) + { + ERROR("Failed to get host policy"); + goto out; + } + + /* + * Account for features which have been disabled by default since Xen = 4.13, + * so migrated-in VM's don't risk seeing features disappearing. + */ + policy->cpuid.basic.rdrand =3D host->cpuid.basic.rdrand; + + if ( hvm ) + policy->cpuid.feat.mpx =3D host->cpuid.feat.mpx; + + /* Clamp maximum leaves to the ones supported on 4.12. */ + policy->cpuid.basic.max_leaf =3D min(policy->cpuid.basic.max_leaf, 0xd= u); + policy->cpuid.feat.max_subleaf =3D 0; + policy->cpuid.extd.max_leaf =3D min(policy->cpuid.extd.max_leaf, 0x1cu= ); + + out: + xc_cpu_policy_destroy(host); + return rc; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798089; cv=pass; d=zohomail.com; s=zohoarc; b=GsvN9jMhR4nbrF/9mAqrIO0aRR2AwbPzWpPjOyDskB8hxrxF/ZqUUNNoSoL8IEkzvg9CoHYPOiHLMCZMaZQ8z37DK0+qPnTj1Nze3Fh6Dneqp5VHPuH8mjtR1YLEdknLag64k7JZfKgWm+I5Y+/Wj5PXnzcnMsI48Up/+GBLcK8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798089; 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=ea2OyWmpWeWANsLogJ31RjsyaXJdLUB3QXTZ/zC3WVM=; b=fhuX+hqo3AMk5GUkl0oh8XRTU3Bd3MxzSlYFBfcx0wz9TjCQ8SzzXDyq3o1TRhfjJZAn6rj2bcMYCXV6BTNJoBq2R+ZW/VZU2GBZ+E0uQ8np54GzezgnjzanZYNUSkjBriTNDlvVITyEOS36bH1PgBx0MDP2UvZRk3z602F5Nwc= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798089243630.6535532429109; Fri, 30 Apr 2021 08:54:49 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120629.228177 (Exim 4.92) (envelope-from ) id 1lcVTO-0001Ix-6d; Fri, 30 Apr 2021 15:54:34 +0000 Received: by outflank-mailman (output) from mailman id 120629.228177; Fri, 30 Apr 2021 15:54:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTO-0001Io-2V; Fri, 30 Apr 2021 15:54:34 +0000 Received: by outflank-mailman (input) for mailman id 120629; Fri, 30 Apr 2021 15:54:32 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTM-0001HD-1q for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:32 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id a5139e80-954e-4ae4-89da-6d7871d49a3f; Fri, 30 Apr 2021 15:54:30 +0000 (UTC) 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: a5139e80-954e-4ae4-89da-6d7871d49a3f DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798070; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=oc4vJ9FpsItMZ9oM+720ChbMm7Y8/Upo9eZYs7rpJ94=; b=fzSbAxMgzZHpLzrn3mDqYrbl1xHA//5gv5qJ92xR18Sb3EKyZ2ZQtZz+ 3XfYWro2fw53bBcAzqHrj7jMxaTUybsH2fsxKlBnm+iYXP77pzZ1GXE7q FZ2gvgBRK5ivYd49qTKYH0CwQ6HdBCbgtvm/wzQlkxA9CoaXNu26kanoZ U=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: Mcrl3ekkTHGoFBoh2GtV1viL2f35URWjUhtUJ8N5Cyxc4FZk7HHxdY7jpHTdmsS9UnXM59wGX7 /Y5/87B5a0nec6SFTpOdvJJ2/g2YajZmMBtBrz8J3jcPu15rvuaW9J0GGql7P6RrPCgXfFJ1yX oznKXaClKimNPHx4Fbw5m612CZucaxbYLEfF2nr8VHAQIPCVVThQdLjvPqA/pAXuA+4u9Pq8oS 2KXd7u7ln3lOJ34h4pFK3n9TOaoB0IgGZ0VJ5sksYdIUdDbXmmTlvPHnIb6kwD4NjEr69yF+Mw IZs= X-SBRS: 5.1 X-MesageID: 42625713 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:5XK9O6nu9HmyU6Quw34nC0Wl0MHpDfOrj2dD5ilNYBxZY6Wkvu iUtrAyyQL0hDENWHsphNCHP+26TWnB8INuiLN+AZ6LZyOjnGezNolt4c/ZwzPmEzDj7eI178 hdWoBEIpnLAVB+5PyX3CCRD8sgzN6b8KqhmOfZyDNXQRt3brx7hj0YNi+wOCRNNW57LLA+E4 eR4dcCmiGpfm4ZYt/+Kn4OWeXCoNOjruOYXTctARk75A6SyQ658bKSKWnl4j4ycRNqhY0j/2 /MjhDj6syY0s2T5xfA2wbonu1rsfT7zN8rPr3otuE0LXHWhh+sdMBdXdS5zUoIicWOzHpvr9 XWuRcnOK1ImgDsV0W4uwHk1QWl8BtG0Q6b9XaijXHuodP0SVsBYqIr7+8pEWq6mj8dlepx36 5R02WSu4A/N2K8oA3H68XVTBYvr0KooBMZ4J4upkZCWogTYqI5l/14wGppFv47bUbHwbFiOu xvAMbA3e1RYFOXYlvI11MfseCEbzAdGAyLTVMFvdHQ+z9KnGphx09d/8AHmGwcnahNBKVs1q DhCOBFhbtORsgZYeZUA/oAe9K+DijoTQjXOGyfDFz7HMg8Sjzwgq+yxI9wyPCheZQOwpd3so /GSklkuWk7fF+rIdGS3bVQmyq9A1mVbHDI8IVz9pJ5srrzSP7AKiuYUm0jlMOmvrE2HtDbYf CuI5hbasWTbVfGKMJs5UnTSpNSIX4RXIk+odAgQW+DpcrNN8nErereXPHPJKf8MDotV2/la0 FzGQTbFYFl1ASGS3X4iB/eVzfGYUrk5699F6Dc4qwyxeE2R8lxmzlQrW78ytCAKDVEvKBzVl B5OqnbnqSyonTz2W7J6m5uKydMF0o92sSmb1p64Ssxd2/ke7cKvNuSPUpI2mGcGxN5R8TKVC lSukpw4qDyC5CL3ygtB5aGPwuh/joujUPPa61ZtryI5M/jdJ99JI0hQrZNGQLCEAEwvx1rpm dFYAotXVTeCTvqtKWggPUvdaPiXug5pD3uDd9fqHrZu0nZj9ooXGEnUzmnVtPSvRwjXANOhl p687YWhZ2JnTrHExp4vM0IdHl3LEiHCrNPCwqIIKFZgKridg1LQWCWvjCCkB0odm3290Idu3 z5IUSvCIP2K2sYnkod/rfh8VtyeGnYRU52Z3xgmaBWFGjNuB9IoKW2T5v291HURkoJw+kbPj 2AXCAbJRl2wcurkDSPniyZKHkgzpIyH+DUAbg5aYvP0ne1JIDgr9BeI9ZkuLJecPz+uO4CVu ySPzKPJDTjEuUzxki7oG0mNCQckghsrdrYnDneqE620340DaCMfBBIR7QHL8qd6GahbfCSy5 l9hc80u+z1EmiZUK/w9YjnKxp4bjXUqiqKasttj7Z+l6c7rqFyEJnWSiGg7gAN4DwOaOPP0H oDS6F66o3bMoBhf8YuaztUl2BZ4OinHQ8OiEjKGecwclEmsm/DM/6I67TOr6AzAkfpnnqHBX CvtwlU//LIREK4pMUnIpN1BWRdc04n7nt+uMuEao3LEQ2vHtszsWaSAzuYcLVHTrKCFqhVhh Fm48uQl+vSUybjwgjfsX9aJa1JmlzXDf+aMUapGeRS9ca9NknJqqy24NSrhDOycACFUS0j9M V4XH1VSN9ChDkkhJA21Sb3apWfmDNar3JupRd9llDs3YC65nz8Bk8uC3yAvqlr X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42625713" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nxUs+zcBaXCyCH6+sFio+wyI4jMjQaIm7PWI0vR5dumin7kdn6HNZ3GTHjizLRO3rWuypxug+iBRc09bfKV345wVyvzkXABY8uHfsWZGH5piJdjP8CJsJMjrOwIFypc6WSa3uBBkNFRPOGUFRAR/cOmDM1XeK1kaNEpKwuaM1N2kKqOeXWmKC5e0kXMuEmCucpcM/DyNvyGGmyj7DtdlQ5mS1K3xtFzska1Sm9ajZZGXM2vicp5ElSNAwm0s1jQIEvDMDBGjMgpxdPu3/r4qbRqOxA5lpMDdGwn6sfRuloleZTvhCBAZwY87MC3ENMeXlVA0Xn9IPEKUxBd8OY06jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ea2OyWmpWeWANsLogJ31RjsyaXJdLUB3QXTZ/zC3WVM=; b=HqI+nBPQxOgqxSiaP4jXZny3faXwKjlRxDGigd3foODLORdiy8dcNNKEi44hBUZVnPLIESeWBBdrY1a2fNhzpx5IUq1QPaDj/sjSpPH04qZ9iZvTal5VPlK17NQZThwzFgkb3mhGco6WiENHS3fkmnuRhIb0nev9TN62yiOHWXHRfnKNkdW9qNpN+carTQ5/dfgBxplcV3VtK/1x/nb2TE9eSxOQUT7dHnXZb2U9ztfGwsfj/RzAIWxY4ryKX6Ymbtj67hCNDrbpPI/KBsTdoz/Y6OhF4WPXPUDSayWnyDzKNzxai89AWwQgQXpe9wLoVFE/eBGATWJOQlt3PaSBsw== 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=ea2OyWmpWeWANsLogJ31RjsyaXJdLUB3QXTZ/zC3WVM=; b=gZRllac2G+iqsgaFzBQr92epK8lM6BuOr04NP8Q3fItq4BYPB5BBfOPxkxrWH7nOY5p0LxDhybl4KqtFTreURxdSZhM1pPrvFEK8JyrefozLEow+xpXjJS0Cgu/T6UPZeq+pixANIrSZbuAN5WUbhOwYYAC5eE/UW+eBuGVC1xk= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 09/13] libs/guest: introduce helper set cpu topology in cpu policy Date: Fri, 30 Apr 2021 17:52:07 +0200 Message-ID: <20210430155211.3709-10-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0010.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::22) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7f7c8eed-39a8-401e-6040-08d90bf03baf X-MS-TrafficTypeDiagnostic: DM6PR03MB4218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1169; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NexlH798I11O0XMu7kvnHnqCExwGNssKX9lJyFejlnmflMyaZjIqIZwCR5A+C/CHkOBVJJAua8klLS4FnrRIDewgCQUmfrsLBKwyF/Q75VMjsP8TRCkKphIH+ICtpWzOMzxI3Hgk+aoI14ibWpgULahIJfVjf6sHdGX/8BSUJU588VRGR4MCl5owMFVLEQ4R0tAPhlSlqGxYlG39t/XZ7Sh1GwWxAJvV4LEHnvgjaJf5W9977X0qOvQ7yp80HajOX4ues/2/U6rGIZDYlND5HuKFI+O3bykiZHVavTpw3wY2ozOoz8ghQhPaFcyESEpODQdN/ZoyrjnwXqxtvFomhQRIcRheYwEIYN331DQHfBLmJJHLEt0jfpEhkBi1AT1DcL7m6KgLyYkGrCObdqPorAQyWeWVnwkpzl3m/6zKnNWrnPQPm7tpgNeP2X0ZE1VeEE5ZrIn2ijLR7dUBzrUM8irDS7YjzKBYE0tuEgxMO+7zDwxkMTtGges9vs6qtU5vyNFygvoVCBFHA+WS79Ob32uzlGhRXV1yexQUkjvSrBBTaA0GDyfFDV0IEi4BRBGqmyXPt4BPuU5BaB6+v2Yeh2RLhNVdnWUmbPNqTevflts= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(39860400002)(346002)(376002)(478600001)(54906003)(36756003)(316002)(186003)(26005)(66476007)(6666004)(6496006)(4326008)(83380400001)(1076003)(2616005)(66556008)(2906002)(8936002)(66946007)(38100700002)(6916009)(6486002)(956004)(5660300002)(16526019)(8676002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?OVN6Mm90VHhDR2Z0bWRuRGFyUC9HTGNCUkFwTTdaaTBvQ01UVlZ4Z0tBSUdo?= =?utf-8?B?TFl4bjc1OG1kZVRJeTYzd2ZacUtHakxGeGhVWXZQb3NWNEI2NG5maHF0NUtK?= =?utf-8?B?V1VOOGVYTHZyQndGRldVM2c1TUFrd296SFhTM2xPc0FJVGp0V3Z3STh5aHZR?= =?utf-8?B?bGlMS1JGZEtNZlRWKzNqL0IwaXdmUzBya08xdEFJcGN6UW9OYWRsWGxzaVp2?= =?utf-8?B?N1VkS3ZmY3IrQkdpVnFpaDFDRk84Wkt1VmcyemR0aHBISklBSXY4T0oyVGNO?= =?utf-8?B?WjYrMGdXa2hOd2xzWFFqRnZyaXl1eFh6L0IvdktUYVBmbHhUZkJHVzdBd1Nj?= =?utf-8?B?ODM5T1U0amphMFpIeGJ6ZElDTE51TGFLY3I0YmxlTUp4REpFd3dCS3JxV3gx?= =?utf-8?B?SlJhRVJVbm8ycUQvT0l0MGwvR2hZaXpKSHdxa1hGQ0RXK2I4M2Z1dnhnSFls?= =?utf-8?B?RHZObjBGNk5lVDF5SEJlRVZCYjUzSzN1SWNlTkl1Mll2QWljQ1NOd2h3NVNl?= =?utf-8?B?U2Y5VVUyWkI2ZEVJQ3ltOVZlQllYWmYrUlVqTzI3dkl5Mm0xVUpucEZmRDZw?= =?utf-8?B?d3dsT3o0VFdGeHRMRElGMis5OTJCVjRyNTBtSmxjSjlDVjZUYzJuSE9LQVUv?= =?utf-8?B?SjRaK3JsbjdlVzk2YUJteHhQcGF5Rmk2Mm1Ic25VSG9GOW5jU280a2RFbzg1?= =?utf-8?B?NEZBZS9wRzlDaHZiNDJweHRkNnVaTWFKZ0xJUjcrM0plTTVkRkhFMldFRkxP?= =?utf-8?B?V3lxMGRqMmJrLzY3QXJXWEtRa1ljQkpmb1ZTRmd6RmRJSGZmeVRMWnBRTkFS?= =?utf-8?B?YmJ5V1JseHNNb1lTQlA1dHV2TXlKd0xIQmpnOEVqWmU2Z1BzMzRPVGRBSUhH?= =?utf-8?B?c2dSazhsL2ZyRUw5U21VQ1Y1ai9LQ3hUcTZJbFgyN0k1a2pGRmJHMEN1R1U4?= =?utf-8?B?aFF2cmFEbGpnRjJKbFY0VGZtU3dad21TTklndE5nQURBeXd1aWd0enpBRmQr?= =?utf-8?B?anVoMHZYVUNpdHhyTzRIVGN3VU13VHhjNGNlZXI4U2VRS01QalhFWTQxOVlW?= =?utf-8?B?Wlk3WWxsVmpjSENseVg0Tk9ESzVaYkJCbUxkNXVtUSt6cllqU3BQS1NKREwx?= =?utf-8?B?bnRCdFBNcXJHNEJuMmkvaENTaW43Z2JaS01mdmhyalJQZDZrWEVpRE1CYmlU?= =?utf-8?B?MWU1VU5Nb0VmajRLcHNLRFBoV0JLSUZYMmtxN1Mxb2hoRStKTzRDT2JlL2Jm?= =?utf-8?B?V3RtdU9EYkJoZkVYTitBWi9NTDI3MGZoSjRySFArL2IzS09RV01Tc3M5ZXpH?= =?utf-8?B?dEk3bmd0R3VoN3ZkVFNWU2JzODhBZDFxTmUzYjRURTgyVi9TVXF1MFhPakow?= =?utf-8?B?aE82TmY2NFYyNDhpZWd0RW1jR0tOMW9yNjZ3NkR2eVRYeU5XVHRhVDY4VVo4?= =?utf-8?B?ZkhwVUdjM0l6RXc4WFhxcDd4eHJCbzRjYlVhejg0RTZrd0hFTlFwcGNkQzdQ?= =?utf-8?B?QnNqaTJlR08xdlAxMDlOZ3l1Y0JzSWlHbkVyUEFIMWNpNm15Y3hydVFWMEdx?= =?utf-8?B?eVo0WU9LbnplOVpYSnJpZmZ6cm5CL3hQTmdXazNIRWppdEVrZVZDVFJ6aURD?= =?utf-8?B?Q3FRQW5DK3RjM0JNaldTUVIyK2FPZFlPbWt3a0E3L1EzWG5PK3cxMDBKcndF?= =?utf-8?B?a0EwMnc1eVNWQXlWczJLTlZGV05rYXRNRFRsSmdvVGRyWFA5OHh2K29uNTZ2?= =?utf-8?Q?sVTEB4LXrBVsmywcJNEPY84qSGUJQq7KL7gw3EF?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7f7c8eed-39a8-401e-6040-08d90bf03baf X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:27.2096 (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: lkTcfXjmbOjQnbRFG93ULT3/UUBR0LP3EzrhzTqFMS/EtciQAV4pgPZ5H31RWkPaL/j96kupHIJcLouh4SE0Jw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4218 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) This logic is pulled out from xc_cpuid_apply_policy and placed into a separate helper. Note the legacy part of the introduced function, as long term Xen will require a proper topology setter function capable of expressing a more diverse set of topologies. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- - s/xc_cpu_policy_topology/xc_cpu_policy_legacy_topology/ --- tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 182 +++++++++++++++++--------------- 2 files changed, 103 insertions(+), 83 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 89a73fd6823..ec184bccd3f 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2631,6 +2631,10 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t polic= y, bool hvm); =20 +/* Setup the legacy policy topology. */ +int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t polic= y, + bool hvm); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 855d252e067..dbf2ef67ee0 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -443,13 +443,11 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, { int rc; xc_dominfo_t di; - unsigned int i, nr_leaves, nr_msrs; + unsigned int nr_leaves, nr_msrs; xen_cpuid_leaf_t *leaves =3D NULL; struct cpuid_policy *p =3D NULL; struct xc_cpu_policy policy =3D { }; uint32_t err_leaf =3D -1, err_subleaf =3D -1, err_msr =3D -1; - uint32_t host_featureset[FEATURESET_NR_ENTRIES] =3D {}; - uint32_t len =3D ARRAY_SIZE(host_featureset); =20 if ( xc_domain_getinfo(xch, domid, 1, &di) !=3D 1 || di.domid !=3D domid ) @@ -472,22 +470,6 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, (p =3D calloc(1, sizeof(*p))) =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); - if ( rc ) - { - /* Tolerate "buffer too small", as we've got the bits we need. */ - if ( errno =3D=3D ENOBUFS ) - rc =3D 0; - else - { - PERROR("Failed to obtain host featureset"); - rc =3D -errno; - goto out; - } - } - /* Get the domain's default policy. */ nr_msrs =3D 0; rc =3D get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_d= efault @@ -571,70 +553,11 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, } } =20 - if ( !di.hvm ) - { - /* - * 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); - } - else - { - /* - * Topology for HVM guests is entirely controlled by Xen. For now= , we - * hardcode APIC_ID =3D vcpu_id * 2 to give the illusion of no SMT. - */ - p->basic.htt =3D true; - p->extd.cmp_legacy =3D false; - - /* - * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package. - * Update to reflect vLAPIC_ID =3D vCPU_ID * 2, but make sure to a= void - * overflow. - */ - if ( !(p->basic.lppp & 0x80) ) - p->basic.lppp *=3D 2; - - switch ( p->x86_vendor ) - { - case X86_VENDOR_INTEL: - for ( i =3D 0; (p->cache.subleaf[i].type && - i < ARRAY_SIZE(p->cache.raw)); ++i ) - { - p->cache.subleaf[i].cores_per_package =3D - (p->cache.subleaf[i].cores_per_package << 1) | 1; - p->cache.subleaf[i].threads_per_cache =3D 0; - } - break; - - case X86_VENDOR_AMD: - case X86_VENDOR_HYGON: - /* - * Leaf 0x80000008 ECX[15:12] is ApicIdCoreSize. - * Leaf 0x80000008 ECX[7:0] is NumberOfCores (minus one). - * Update to reflect vLAPIC_ID =3D vCPU_ID * 2. But avoid - * - overflow, - * - going out of sync with leaf 1 EBX[23:16], - * - incrementing ApicIdCoreSize when it's zero (which changes= the - * meaning of bits 7:0). - * - * UPDATE: I addition to avoiding overflow, some - * proprietary operating systems have trouble with - * apic_id_size values greater than 7. Limit the value to - * 7 for now. - */ - if ( p->extd.nc < 0x7f ) - { - if ( p->extd.apic_id_size !=3D 0 && p->extd.apic_id_size <= 0x7 ) - p->extd.apic_id_size++; - - p->extd.nc =3D (p->extd.nc << 1) | 1; - } - break; - } - } + policy.cpuid =3D *p; + rc =3D xc_cpu_policy_legacy_topology(xch, &policy, di.hvm); + if ( rc ) + goto out; + *p =3D policy.cpuid; =20 rc =3D x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) @@ -1114,3 +1037,96 @@ int xc_cpu_policy_make_compatible(xc_interface *xch,= xc_cpu_policy_t policy, xc_cpu_policy_destroy(host); return rc; } + +int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t polic= y, + bool hvm) +{ + if ( !hvm ) + { + xc_cpu_policy_t host; + int rc; + + host =3D xc_cpu_policy_init(); + if ( !host ) + { + errno =3D ENOMEM; + return -1; + } + + rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, h= ost); + if ( rc ) + { + ERROR("Failed to get host policy"); + xc_cpu_policy_destroy(host); + return rc; + } + + + /* + * On hardware without CPUID Faulting, PV guests see real topology. + * As a consequence, they also need to see the host htt/cmp fields. + */ + policy->cpuid.basic.htt =3D host->cpuid.basic.htt; + policy->cpuid.extd.cmp_legacy =3D host->cpuid.extd.cmp_legacy; + } + else + { + unsigned int i; + + /* + * Topology for HVM guests is entirely controlled by Xen. For now= , we + * hardcode APIC_ID =3D vcpu_id * 2 to give the illusion of no SMT. + */ + policy->cpuid.basic.htt =3D true; + policy->cpuid.extd.cmp_legacy =3D false; + + /* + * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package. + * Update to reflect vLAPIC_ID =3D vCPU_ID * 2, but make sure to a= void + * overflow. + */ + if ( !(policy->cpuid.basic.lppp & 0x80) ) + policy->cpuid.basic.lppp *=3D 2; + + switch ( policy->cpuid.x86_vendor ) + { + case X86_VENDOR_INTEL: + for ( i =3D 0; (policy->cpuid.cache.subleaf[i].type && + i < ARRAY_SIZE(policy->cpuid.cache.raw)); ++i ) + { + policy->cpuid.cache.subleaf[i].cores_per_package =3D + (policy->cpuid.cache.subleaf[i].cores_per_package << 1) = | 1; + policy->cpuid.cache.subleaf[i].threads_per_cache =3D 0; + } + break; + + case X86_VENDOR_AMD: + case X86_VENDOR_HYGON: + /* + * Leaf 0x80000008 ECX[15:12] is ApicIdCoreSize. + * Leaf 0x80000008 ECX[7:0] is NumberOfCores (minus one). + * Update to reflect vLAPIC_ID =3D vCPU_ID * 2. But avoid + * - overflow, + * - going out of sync with leaf 1 EBX[23:16], + * - incrementing ApicIdCoreSize when it's zero (which changes= the + * meaning of bits 7:0). + * + * UPDATE: I addition to avoiding overflow, some + * proprietary operating systems have trouble with + * apic_id_size values greater than 7. Limit the value to + * 7 for now. + */ + if ( policy->cpuid.extd.nc < 0x7f ) + { + if ( policy->cpuid.extd.apic_id_size !=3D 0 && + policy->cpuid.extd.apic_id_size < 0x7 ) + policy->cpuid.extd.apic_id_size++; + + policy->cpuid.extd.nc =3D (policy->cpuid.extd.nc << 1) | 1; + } + break; + } + } + + return 0; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798094; cv=pass; d=zohomail.com; s=zohoarc; b=aR8lhfzA6xbu8likeH2V+CR5G6Qu9ns1y1yCbptpvh2RnJelPe23j1bM41FphvgR5WZ/STtGN4jWKEm0syvHemXho7N8SIThQXMiW8HSrA83LarUIGnr2QGmNDT0sjSBOnHYvFskhx+zl1heFzxowwyuhfEdY+vfYALUvF2l5nA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798094; 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=1a5L+d5za5DWdudCEWDZUtzQrAZyeZPsBE0hIe9r1IU=; b=Qctz1UIwqDIH6LS2vM6z6LBSdD1dSFGn7177lEab4ftSi6pEXWDLzZ7g6hhkw2KIglXXR0ctBTDBkvIELIyLxDbkVUr/NhprEdO92dS9aW916+2s2PJ4N8Y0Rk+QRdric5rAhOW0SBDYqCEm/EUlIGT3OSfaWNcuvDZcwQ0ThVc= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798094131490.4693067895756; Fri, 30 Apr 2021 08:54:54 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120635.228189 (Exim 4.92) (envelope-from ) id 1lcVTV-0001Q7-Fz; Fri, 30 Apr 2021 15:54:41 +0000 Received: by outflank-mailman (output) from mailman id 120635.228189; Fri, 30 Apr 2021 15:54:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTV-0001Px-CO; Fri, 30 Apr 2021 15:54:41 +0000 Received: by outflank-mailman (input) for mailman id 120635; Fri, 30 Apr 2021 15:54:39 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTT-0001HD-6X for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:39 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 9cb1a7ef-8314-414a-a12f-6e0fca40efc5; Fri, 30 Apr 2021 15:54:36 +0000 (UTC) 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: 9cb1a7ef-8314-414a-a12f-6e0fca40efc5 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798075; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=Z6rM4sPpyB5WFE0aM6KS6fS53aeoShZ4p2FpkyddptI=; b=UBiJuYzwdVIdJu1kuPonAWpo5MeZiZ7yht20Kr+QO6LfH4+NIUESguW0 9liYWOFipVzexzDmgn0dXEwVCSPvAhfNbgteOeH61JNeZlMRiasr8q8id vfj8BWXyGM9SB81EIz4NZtZvzCMXw0B+GGYGH+HM8jiU5t4RGeCl+ShQH 8=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: fMD9tSFRe1Dhctu5MtT3XvJvvwXbQn91vi4L3QiHMXW1AcHWpaJcrNSndXzpdv2eVQ+UB/MyC7 0v+oyb3QpqpSdWxlOixQuYvYQoQibccHk01xKP1lMOv/NI1nprOnqfT5ODLI5Ruc4yPUyks1RM Ofo4rQv2+ykzB20Owym7xpnlYV+xpcYpVLwlS8chK3VWLMwBw+pPd0ZMFfYK1s1kqwJLIf97hW UFRHn3jsuskz1d7yMjc/OTe54KJdodSLKNoiWUwU23lui+pwoUsam6w3YytItKX+vdmlbusggG OvE= X-SBRS: 5.1 X-MesageID: 42930075 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:f6cJ6a7sgggeMORbnAPXwU2EI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoexzh3LZPy800Ma25VAfr/FGpIoZr8Jf4z1TbdxHW3tV2kZ 1te60WMrDNJHBnkMf35xS5Gd48wN+BtJuln/va0m0Fd2BXQotLhj0JbjqzOEtwWQVAGN4FD5 Ka/MVKvH6Nfn4QY8S9CBA+LpT+jvfMk4/rZgNDOg4/5GC1/E6VwZPZMzzd5BcRVDtT3awvmF KqryXV7riu2svLrCP0+HTU6/1t6bnc4/tFQPeBk80Ebgjr4zzYH7hJf52nkHQLrPq06FAs+e O80ysIG8ho8XveciWUjHLWqnDd+Q0j4XPj1lOU6EGLyaeSJENYerh8rLlUfRfD500rsMsU6t Mw40uju4dKFhSFpSzh5rHzJmBXv3Cpqnkvm/N7tQ05baIibtZq3Oki1XIQOpIBECXm0ZsgAe ljAerNjcwmD2+yXjT3uHJiz8erWWl2NhCaQlIassjQ6DROmmtlpnFoiPA3rzMlztYQWpNE7+ PLPuBBk6xPdNYfaeZYCP0aScW6J2TRSXv3QS2vCGWiMJtCF2PGqpbx7rlwzvqtYoY0wJw7n4 mEeE9EtEYpEnieSfGm7dluyFTgUW+9VTPixoV1/J5ioIDxQ7LtLGmqVE0uqc29uP8Sa/erGs qbCdZzObvOPGHuEYFG00nVQJ9JM0QTV8UTp5IVQFSLjsXXKpD7l+DSffrJTYCdUwoMayfaOD 8uTTLzLMJP4gSAQXnjmiXcXHvrZwje8PtLYe3n1tlW7LJIGpxHswATh1j8zNqMMyd+vqs/e1 Y7BLvml6i8tFSn5Gqg1RQsBjNtSmJupJnwWXJDogEHd2nud6wYhtmZcWdOmFyKOwF4VMGTNA JEvVx49eaWIvWrtG4fIuPiFljfo2oYpXqMQZtZsLaE/93ZdpQxCYtjfrdwGwXNHxlcgh1rt2 9HVQ8BSibkZ3DToJTgqKZRKPDUdtF6jgvuC9VTs2jjuUKVotxqemEWRAe0UcmcgR8nQh1dgl EZyd5ZvJOw3RKUbUcviuUxN1NBLECaGqhPAgi+aIJIobzzYw1rQWCWhTuVtgErdgPRhjYvr1 2kCRfRVeDAA1JbtHwd6Krs/V9uXki2fk57aBlBwMZAPFWDnkw2/f6AZ6K13WfUV0ALxfsFNi rZJREIJBl1+tyx3BmJuTqLGHk83K8yNujFALlLScCU5lqdbKmz0Y0WFf5d+5hocO30uugQSO SFZku7Kij7B+5B4X3iml8VfA1P7F8qnvPj1Ee7sCyW3HsjDeHTJ1ojbbcBON2Y53XlQfHN8J gRt6NAgcKAdkHKLviBwuXrShQGDDX5i2u/VfspppBZprhajso6I7DrFR/zkEha1xA/JvrunE wQQK5H8KnMU7UfCvA6SmZ8xB4Vj9yBI0sgjxzuDsI/dV8riWXHP9nh2cu+lZMfRmmIpA79Ij CkglVg1saAeyuIzrgBDa0sZUxQdUgn8XxnldnyPbH4OUGPd+tZ+kC9PWL4WLhBSLKdEbFVih ph+dmHk6u2cCX/sTqg8AdTE+Zr82y9R9m1Dx/JMelU88aiMVDJu5CU2qeI/X7KYAr+TV8Zi4 1DfVERacoGqgBKtvxJ7gGCDortokwklFNC5ypAjVCF4Pn+3Fvm X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42930075" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AVozkcNqy1O0lDtWH/quK2qUi2V12PLKqAmRDDuzWcMaiVfJ0dy9xGaJEIO5PmtR9ifBJ3orTpbWhh9DWS5Q972JojUowNTfRHaDWk3GsSY8Sk+woMga62Nn8Tt0nUrGvbv6qV+C9sRpEm8+8PpxSYNlcPyCkfW4g1nvTtxjwS7MskVxGCThcvWy0BZg+E0H91GPO/2CO52kmcXlAGWtxJoHX+AUuYtMwU+03Bz2uo0aTbDnQhvnEHJBRjr3BDIirNN/WPGnh33N61hgcgUODw+rrrKJ/APEArY69BZipUp2PsQkbmFLT4LnIyV1hbNSG3+pMe4O4Bsy8ypOSnbQjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1a5L+d5za5DWdudCEWDZUtzQrAZyeZPsBE0hIe9r1IU=; b=FP3rGVzfQ1kk6X/A8EOzbu2e1IJtEnFdfaYYqxAo4uDr2HMrPdDi7SGieN7Q++7IXKb7xf2tNs3jR60YehfrEQBsFKlv2GaOONuyfi95MP/8hOSrvn9Qxty81oSlu6HjSE7GGKu0/s/Rioc5nTahRIXVSo3FR9ZPIUNe3gRAS2WDdfi3Syt9NxIRoTOqW+T+oU5TimUNiuvsW5fLRHnvPh6QdKaRfkTCLp/7zmL361dAqsr1uQtGq+K5hgr6oziOmFG5ABj5qOj2BukTzoUdUH+ddFD8VkzvO6u5wVfzaO+8T1iE87yH/bUXNBj6Ak+mzIPEIH+Rleecsa16+P5jFA== 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=1a5L+d5za5DWdudCEWDZUtzQrAZyeZPsBE0hIe9r1IU=; b=jiDhTKTVcCw8bAJzJ6hPes3f63IyJB8G8Vi1k09Kk6QVZfTiwdQFtMzJFtyxKbVVXPaop45I4uTNbgm0Q9DAIEwP8BSQaM7a9mu0K21/DrmRxj+U1khGLWRZrq08mM7vFTX+uhj+is9EPEvkm72EXGbmOQWirRGBdWdZER1e7lg= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 10/13] libs/guest: rework xc_cpuid_xend_policy Date: Fri, 30 Apr 2021 17:52:08 +0200 Message-ID: <20210430155211.3709-11-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0020.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::32) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 477b2cb1-6298-4fe6-a98a-08d90bf03ed1 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:65; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2DWjIn5q6ZKtznP5rPpIuXJt8ah8wBVuvSZKAvC16YTkoQwyEU36orkDQ9ANOwwHG/voVfCuHmx66yeDoyvn7AygBGbxgoV+66cBzegqiz7uwlkVZrITxTg0jgs+8+NrqYKIV1hMghtkJ2gcSsnPB0UvsZXAJLDsILZMqeoOg2A/MHLQHWLhO8BbiuSPeXPIueZIeMS6YfDwFQ/07PdHRtYtUkilBi5gkJ2+iJrPGWe9fMyO3jRZ21V0I2aXDlcNLKUyMh52OsqPkuByNn+f4goZXuz3Gae046b/vrScGlvycv2m1Z3gdDeej3lQvYRj2w/yOcPqi7ej/TuF3kCB0RrQANOVrrr+pXdiOuOKDkKvTAMlOYYxBGHSEau0VT+DfPnCjPOWOz5UbkG31r/P6XKzsfr1nhAvSdJUogPXarTQb3YGIdsCqCqsiYko28EDycD4y53QngprvveFAwu8xAkD/xdznfViSXQMVRvidB9Wb9nPAsSdz+Z2nA15IDPgwS1j6NGllERKHNAJ4NLpTf8hOctNLclbkyoRjhYV/6zT3hjUXjkO0IHqfjhPIJ4GTOX+E8yPw256lQ7XmJTPrmChMH5LIJm013pwnMUiF3M= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(83380400001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?d0lPR21ncHA1WjdYeEw1Qjh6SXFmV1IyOHRhNFpLalMvUjdCdUxNajdGdk1R?= =?utf-8?B?SG0zem16N21qOVBFMEgybWRVdFlDYnVNaFZEcWZMRG5aWGNqOVBFTStFQlRR?= =?utf-8?B?YktoWi81Qk9BY1JXQXRUZ0xlYWF1U3F5SkRTT245UFlUc1BFU0Y2VkZhNjBv?= =?utf-8?B?cFdVaTF6V2ZQQlZTREtYTnZZUUlIV0ZvV0FFeFI2UVJJYkU4YUNyVTdhTFRQ?= =?utf-8?B?UndiL1NZT2NBbUlTN1BlSm1oS2lIcHRWUk9CZ0FocnAvcVdWRzdIb3d2cVBQ?= =?utf-8?B?WkowT1B4eVc1QmU2UVl5SmZBVzZhbXQzOEpwMnZnY2RKNUUyTzFYR0Rhcy8v?= =?utf-8?B?aEVNamVReDFTbmowLzhrNW5jNC9oUDJhblZDMjZueU5CaXQ1aFI3L0hDY29F?= =?utf-8?B?UklFRnBpUGFvdzFGYlJGOFE0SFJ3bU1udVcrSC9hT3A3NkI3WUlGa2ZkQVF3?= =?utf-8?B?dmg5cnR2Q2Z1ekpjTzdXQTBFQXZwTm52c1QvVlZJa0s4djQrUkV2VXF2dlRK?= =?utf-8?B?UWs3SWVoTkVydTFGUmFWZDA3UGtvWndKNTBIU0JpamxZSGw1bXhHeklJWlF6?= =?utf-8?B?WndhdFFMQzVrbEYyZnZlNDV5bjA3SXVWYnNnbG03YWJXQzQ1VGlicGo3bFVm?= =?utf-8?B?aldLZC9QVTIxbmFNUkdhQ3ZXVGVQSW5aSURtNzgzaExwbGszc0lROCt4cnVE?= =?utf-8?B?eWZLSzlwTVM1a3JYZWlicUxtNXQzellkVnVqWGw1bDRGeG5QYThPREF5MmZJ?= =?utf-8?B?ODNoNHVYTks2VUU3d2dYZWNBQWIzTzVFSGdNWDVhYVIwSFJLSk1YVU41SFZv?= =?utf-8?B?K3dxLzZkSklSTWowb2JsQy9pTkpBTVE5aWZXWFBCMHJRU2R0U3lLK3F3dEY5?= =?utf-8?B?NTUzbklpTklxRVlua1ZSbjQzeXN6VmdnUHJ1bGcwb2lFWWQrWUo1TXpEUGE4?= =?utf-8?B?eGZ3UHlNVTk2UnQ3eWRiRTVmWlBDcEhtbUpjWWE1ZGhXZlcvNjYzNUxnNUFt?= =?utf-8?B?MDR2L1FsaXBFSmYvRDNaekNRYmZ1Yk4zRVJSNC9aaFY0NEJGWFNURG9WRytQ?= =?utf-8?B?YlJSWjJmeDNmUGR0SzcvL3BSZlhXZWFkMEZYbUFkS2xmdUZzWlh2OFFEclpt?= =?utf-8?B?N1JHZVBmMmx0aURtbUJDZ0hIY0N0ZU10TG5WRE5mRS9qSlY4dTJQWFZTbW1r?= =?utf-8?B?VFdBV2dac1MvdFduSnB3Q1RSdEIvSWlEM1VzQjFyWnJoV0k5NkVUV1FTL3Mx?= =?utf-8?B?azBTVkJYVzlQRFlmei9WOFVwN0RKQm10VS90b3ZFb1hJRGZodEYwVFJCMHZJ?= =?utf-8?B?cDhuUFVuWSt6YVhVcmJud0hLNEI2akZhS214Wkw0QXpkNW1tRDIwOU8zaFJV?= =?utf-8?B?dmU5Y0c4VVA4ZForeW41MUxhYStmN2ZmbCs3WFp3SWRXODFCVVJhQlFqNGF1?= =?utf-8?B?SXpzaDhkb2tTR24vMjJsK2F1Nlo0dkZ4bnFMU0VJUTA0MFpGaDNqYXlLUXBP?= =?utf-8?B?a3ZNVWw3VFBacDlXL0pNN2h4ZU1YbGdpenM5SWM1clUyMXMvbnBlNEZtVVVR?= =?utf-8?B?ZFpVd3cyWExZVmlNZDdjQ1lIb1ZJWHpBYWZ4cHdvdFJpckgyMDNqa3VrZ0d3?= =?utf-8?B?SGwwdnZMSG9DVzVtVHZ3cmtzZVo0VXNUUHFwclUyMll5bTREanhaUmdBZmZO?= =?utf-8?B?ZldBQmdRU05nVEtNREs3Nk85YlROb1VYWjhhMDRZdGJINmF3KzNmZGd2WVBC?= =?utf-8?Q?rzpDuqnvJqt5YXRb4Jmr1GuzIXgIECicNCV0VlO?= X-MS-Exchange-CrossTenant-Network-Message-Id: 477b2cb1-6298-4fe6-a98a-08d90bf03ed1 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:32.4645 (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: OWdibR6sUlzYZNpQzqBLxCoApewI3mb+qAPmnberdVK01TyYdsD4JL8cEzurif6HhgUgwnyjsAXOY7wELIIyZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) 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. Note that further patches will end up removing this function, as the callers should have the necessary helpers to modify an xc_cpu_policy_t themselves. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 182 ++++++++++++++------------------ 2 files changed, 84 insertions(+), 102 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index ec184bccd3f..ce0785f7654 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2635,6 +2635,10 @@ int xc_cpu_policy_make_compatible(xc_interface *xch,= xc_cpu_policy_t policy, int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t polic= y, bool hvm); =20 +/* Apply an xc_xend_cpuid object to the policy. */ +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const struct xc_xend_cpuid *cpuid, bool hvm); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index dbf2ef67ee0..d313a093af6 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -288,124 +288,107 @@ static xen_cpuid_leaf_t *find_leaf( return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leave= s); } =20 -static int xc_cpuid_xend_policy( - xc_interface *xch, uint32_t domid, const struct xc_xend_cpuid *xend) +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const struct xc_xend_cpuid *cpuid, bool hvm) { int rc; - xc_dominfo_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 ( xc_domain_getinfo(xch, domid, 1, &di) !=3D 1 || - di.domid !=3D domid ) - { - ERROR("Failed to obtain d%d info", domid); - rc =3D -ESRCH; - goto fail; - } - - 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; - } + xc_cpu_policy_t host =3D NULL, def =3D NULL; =20 - 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 ) + host =3D xc_cpu_policy_init(); + def =3D xc_cpu_policy_init(); + if ( !host || !def ) { - PERROR("Failed to obtain d%d current policy", domid); - rc =3D -errno; - goto fail; + PERROR("Failed to init policies"); + rc =3D -ENOMEM; + goto out; } =20 /* Get the domain type's default policy. */ - nr_msrs =3D 0; - nr_def =3D nr_leaves; - rc =3D get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_d= efault + rc =3D xc_cpu_policy_get_system(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_d= efault : XEN_SYSCTL_cpu_policy_pv_defa= ult, - &nr_def, def, &nr_msrs, NULL); + def); if ( rc ) { - PERROR("Failed to obtain %s def policy", di.hvm ? "hvm" : "pv"); - rc =3D -errno; - goto fail; + PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); + goto out; } =20 /* 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); + rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); if ( rc ) { PERROR("Failed to obtain host policy"); - rc =3D -errno; - goto fail; + goto out; } =20 rc =3D -EINVAL; - for ( ; xend->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++xend ) + for ( ; cpuid->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++cpuid ) { - xen_cpuid_leaf_t *cur_leaf =3D find_leaf(cur, nr_cur, - xend->leaf, xend->subleaf); - const xen_cpuid_leaf_t *def_leaf =3D find_leaf(def, nr_def, - xend->leaf, xend->sub= leaf); - const xen_cpuid_leaf_t *host_leaf =3D find_leaf(host, nr_host, xen= d->leaf, - xend->subleaf); - - if ( cur_leaf =3D=3D NULL || def_leaf =3D=3D NULL || host_leaf =3D= =3D NULL ) + xen_cpuid_leaf_t cur_leaf; + xen_cpuid_leaf_t def_leaf; + xen_cpuid_leaf_t host_leaf; + + 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); + goto out; + } + rc =3D xc_cpu_policy_get_cpuid(xch, def, cpuid->leaf, cpuid->suble= af, + &def_leaf); + if ( rc ) + { + ERROR("Failed to get def policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + goto out; + } + 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); + goto out; } =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 *def_reg =3D &def_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' ) + break; + + case '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 '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]); + goto out; } =20 clear_bit(31 - j, cur_reg); @@ -413,25 +396,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 ) + { + PERROR("Failed to set policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + goto out; + } } =20 - /* Success! */ - - fail: - free(cur); - free(def); - free(host); + out: + xc_cpu_policy_destroy(def); + xc_cpu_policy_destroy(host); =20 return rc; } @@ -439,7 +416,7 @@ static int xc_cpuid_xend_policy( 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; xc_dominfo_t di; @@ -559,6 +536,10 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, goto out; *p =3D policy.cpuid; =20 + rc =3D xc_cpu_policy_apply_cpuid(xch, &policy, cpuid, di.hvm); + if ( rc ) + goto out; + rc =3D x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) { @@ -576,9 +557,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.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798110; cv=pass; d=zohomail.com; s=zohoarc; b=WaBEPdICivIEgy9sl2QPqLJ0ktqDlo9BiDKaEKMr3uCMfjQJw26lWn2V8GnRyuckqnaGs2OX7L9HRPybnIx7t4wdxo/eaZVFZrJ0ROOFW8a7t2bp4gzwgtzhbftCtP9DITh39DFiQtr18fWVboYAI5gEcCjyzvLG37vouijlscU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798110; 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=OI1adWYY6QWjkd1MdeyydMXNw87PB1TRtgvlJoP2W4k=; b=nnlGdKnUfTfAw/geBS8YYOUDs7w7mEn1CCn6uTfMMqTSjU50KIu6uhFegk9Zh4V38J0/NEToV08J0sKznB+ASzHjHXEpT3kBKyjAngOPIb2afLRgtpPFAxkTZqsRPWNb0ZOrfgjFEQT1q+/T+X43ERHSenaCaq9Jy2mDzCpOVUk= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798110231166.887849971008; Fri, 30 Apr 2021 08:55:10 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120642.228201 (Exim 4.92) (envelope-from ) id 1lcVTf-0001aF-43; Fri, 30 Apr 2021 15:54:51 +0000 Received: by outflank-mailman (output) from mailman id 120642.228201; Fri, 30 Apr 2021 15:54:51 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTe-0001a1-VT; Fri, 30 Apr 2021 15:54:50 +0000 Received: by outflank-mailman (input) for mailman id 120642; Fri, 30 Apr 2021 15:54:49 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTd-0001HD-6r for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:54:49 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 29d17a9e-6d03-4399-8ff1-4f1fadecb34e; Fri, 30 Apr 2021 15:54:41 +0000 (UTC) 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: 29d17a9e-6d03-4399-8ff1-4f1fadecb34e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798080; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=6KYEvnOb+R8RyMpBSvOpf5DodPRKSrhAh2PIRCR9EUU=; b=HjEkDUWsNx4XbkoAumS/HFtRtVXpd9oYpJKyvbgAxROOVsNWWFnrwmKl zktO0Rk4dX9ebSp//cHbV6Pji9c2UiTOlt5QH3/2Qt6Qni6jwIfewmvzj VEw5QaxJFsxyrdIdLm5ssw8mcaz0MYZ/Zo/FY/oIG0DBi75RRLAxVO+6u Q=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: c8XXl83P3HhuQChV5RhRl69Ri+TU+KIdATO8t100zCY/t29fDzmz5Eomlqparv7K/5B5tAVt/d tKA0jmQpvzHetQRq0URJbvJcujpH0GzQkpdlU3lqtBodkPZHllqN+qWV6PlGoc6aTFWJNutrDQ oflyXgY+AFDqylKWxheoGu5je2sWLeAbBJyxi5cPJ91uBcCrusArKMwrcCnMO7wLpfnnuIlqsR wK+j6XQ8ZKjSs+Tb4ngzVflzn9FjneWz/yo2DmoK9MzB9qfYyuYXSO56zktGVWIIgB+KwevOZz lv4= X-SBRS: 5.1 X-MesageID: 42810498 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:qQR6t60fTFxk1sdjP4I+XwqjBTV3eYIsi2QD101hICF9Wvez0+ izgfUW0gL1gj4NWHcm3euNIrWEXGm0z/BIyKErF/OHUBP9sGWlaLtj44zr3iH6F0TFmdJ1/Z xLN5JzANiYNzRHpO7n/Qi1FMshytGb8KauwdzT1WtpUBsCUcFdxi1SYzzrdXFebg9AGJY/Cd 6g/cJBvTWtYjA6ac68C3kDUYH41qL2vbjhZgMLAANi1RmWgVqTmcLHOjW7/jNbaTNAxr8+7X PI+jaZ2oyPu+y2oyWsrlP7wI9RnLLau75+LeyKzvMYMzD9zjuvDb4RIYGqmBAQjKWR5E0xkN /Kyi1QTPhbz3/KZGm6rV/M9mDboU4TwkTvw1OZnnfvyPaRLFlRZrsj9OApByfx0EYusMpx16 hGxQuixudqJCjNgTjn4JzwXwxq/3DE0UYKq/IZjHBUTOIlGdlshLEYlXkldKsoLWbR7YAqF/ RWF8fM5PpaWkPyVQGpgkBfhPOrRXg9BRGAXwwrvdGUySFfmDRDw1If39F3pAZOyLsND71/o8 jUOKVhk79DCucQcKJGHe8EBe+6EHbETx7gOH+bSG6XWp0vCjbokdra8b817OaldNgj150pgq nMV1teqCobZ1/uIdfm5uwJzjn9BEGGGRj9wMBX4JZ0/pfmQqDwDCGFQFcy1+O9vvQkBNHBUf rbAuMXP9bTaU/VXapZ1Qz3XJdfbVMEVtcOh9o9U1WS5u3RLInHsfHabebzKLLhHS1MYBK7Pl IzGBzIYOlQ5EGiXXH1xDLLXWn2R0D59ZVsVIjWltJjjLQlB8lpiEw4mF657saEJXlpqaotZn ZzJ7vhj+eerWmy9mDY0nVxNnNmfwFoyYSld0kPiR4BMkvyf7pGkc6YY3pu0HyOIQI6aM/KDg hFpRBS9bisJ5KdgQAuYujXc16yvj82njanXp0ckqqM6YPOYZUjFKsrX6R3CEHsDBx6mQFjrU 9Zcw8aTkrjFjfj4J/VzqA8NaX6TZ1RkQ2rKclbpTb0rkOHv/wiQXMdQnqTS8KNuB0vQDBVn1 V11KcajNO76HCSAFp6pN59HExHaWyRDr4DKAiefo1blormfxxKQX6QiSaXjAwyfWTW51wf71 aRXxG8SLXuOB5wq3pY2qHl/BdPemKRc1lZR1p6vYd+fF628Epb4KuuXO6ewmGRYlwNzqUhKz nDeyIVOR4r7cuwzgSplDGLEmgGyp0iMvfGNqkqd6je1xqWWdS1vJBDO8UR0IduNdjovONObP mWfBWNKijkT8wuwA6Yqx8eSWBJgUhhtcmt/hLr7GK1hiFiRdXTJUlrXLEdLZW36XP+S/OBzZ V+ipYUsIKLQxLMQ+/D7ZuSSThJbi73iyqRacoDrJhPp6I8tLdpBfDgIHD1/UAC+C97Fdv+kU MVfb9y77/AMLJ+ZsB6QVMswnMZ0PC0aHYxugP4AuUCbUggon/SMdSO+afJo9MUczu8jTq1HV Ge9iFHls21JBer5Po/C6gqJ35RZ1V5wHN+/Pmaf4m4MnTmS8hzuH67OGS6arlTVeysHqgRtA 9z55Wtk/WMfyT1nCDWsj0TGNMDz0+XBeezChmLA+hG7piTPkmNmLKj5IqLtwjMIAHLI3gwtM libkwfbsNKlzkkgskW60GJO9LKi3NgtUBf7zFhnkPqwa687g7gbBl7DTE= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42810498" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fdnJhT2J92B9GqnWddqUg69BaP7eiOvqRLUY8P8HxD8rBjL7e6vHR8YVUPB/nQiR+vqmYYarvDMIZWjnmPF21DtIT/TEqTb/hP9Zx52VncJmPAl/yX/xWErKAFm2o5wWy+SmaJC3CMC6lvTJeVUR3B+LwpAaHioW7ENmHadcRsBfSawb3az9zZ4cOAp7XcIndrtDoM59cqb4VwU8SX0N4qGLeNQPU1LDDqh2jdoyZLrt2gqLjitcRYKfnNRS/TbgtwN7FBwaZjciI35TmdNgcbSZCxpbwnvtF/MqsGijJWxEwbVhJ1hPjEh1NK3OGlcYQKfSriQCDiteyXtZYszZqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OI1adWYY6QWjkd1MdeyydMXNw87PB1TRtgvlJoP2W4k=; b=S+3lUaT7Gael4mYTXpOl0Pet7YyHf/HrrexAQHaFUx7mW/SAkNB1Y6318xX2Hyq/vMuFEpgFTSC5fHnJyenP5S2pREAwr30zpqkfrg8+2X/fMYwnBWTTxDdsHfj7p40YHh2otEiOdLzu0Wj5zDMKT9exElgi3eHEB+vUOj8NSxElSKXgv1NZoS1vizkOLCDRUsZ/WpLSGwpfeMCCY9vAyqyU6kyHYKgFtbemdZrbFH2xNscUhkUAMU5d7wjjRLE7tpj+VJ9cuZ60m64vCFSno6QL610lbxRjBaTa+eMFEpXmQzwyUochhK7GhLjw4/oc1hNM+PysQLhbtUhpkI40fA== 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=OI1adWYY6QWjkd1MdeyydMXNw87PB1TRtgvlJoP2W4k=; b=fPGU4FyzAljAgz1Q9kLHHWy7JPURE7UXwcuw9E5zeaWRcFB/YzYwNOic92ru5DhNt2NPwSwojSEjon88xHEY/ddZlV8tb3A5sp0PO587HfYfZfSdUfS+19lWHC7j8epSmZmG+ZjGSwjduGNCyIUtgQkErJwnMdOit+lYcMsNf6U= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v3 11/13] libs/guest: apply a featureset into a cpu policy Date: Fri, 30 Apr 2021 17:52:09 +0200 Message-ID: <20210430155211.3709-12-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0002.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::14) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92d9fa90-5073-409d-3659-08d90bf041e5 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bOY9qY+wwNnt5l7QDQcYVH0XHBAIqyU/Dx+UTXKp4G0hBuCTnRyaf/O0xTmi6KVdPCj0rZ0mjy4jBR+8kI1UeoXE5Pv2XHhUJnuyb0vhZ8B22lZbEXfdnRBCyZ0oeltCL8eEAI3Mz8e1ArNY666qqcpu2V1luxPuCXn19fZkEhAP6WHEJgsRxO/ITv1CR3XQtX6+bb79o1Bparv7qJaz6Q2M5dJk0YZIt/1qS8wMCE85IX1ui4l21rWVR9+YXOHr81hhYUUiORf/YYGAiAKPQDkila9LW9UAleOnB1aD2ITj9mQGXEUkDjQMqMq4P3LUWSyZrdRrHiOfyZlLD+D9MdFWSKhHmK6ns3SVZWX/pma/1m/10k8JjlXhGNRa67CW0oCdUqzlzUNbEJ8vMHaJGrD4s8IxC0Ap3TMqPJBjxUh7w25/bwVw4A7NASpLSMqrfqBYiTrw7qaLgKogKy0adOUwBOj+y6KJ154DM/sKJpk3/49guZ1+/S9S/WscddoubuQ1Rl6xBOlBkXm8AtsqZz0hq1AcsQsDbW7BuDsAMMOxAC1uOWxUQ28ScUbHgLWZy0IOGMukgQRRKHI6+uHPhjlez2+pMuk7LXL7OK9gDS0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(83380400001)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?WjVyeGwxNERHYTA0VGNvNlZqL2RhMXl1YzVxbXRXYzFPTDVydnlxblNTa0Rk?= =?utf-8?B?WmtUSHp2aEdQQWNhV25MV2d4eTlWV2d2N3orZlYwSjA5amIwZUZEM2QvdFhu?= =?utf-8?B?Rkt4endjYXNrU3NlVzh1ZXFPZklvNjFIUzZDN0srYmlyTmkyMzFvWUVlZjJI?= =?utf-8?B?d1dCQjJHamVnN29kVkJFME93b1B3ejRMUDBZenJvSlNpNHJBWnRkS21CMXp5?= =?utf-8?B?K1RWYjZNM1ZXd2RtTTRaeUl1SG5hcUYzVVVNby9YRWl1ZXVkMmdOSmpRM0J5?= =?utf-8?B?N0hCdENveVhBdk01eGdQazlyYVdLMmpzVXZ6Z0xBMlFySThtZTNVN0pKMEZH?= =?utf-8?B?TklQNkZvd3VybmpRWW5kUCtrK2xiMDNqU3VhY2kxZGlLcCtheGFRWTNLYjg3?= =?utf-8?B?WjBhNlZRdkFTUDlGOVZRcHdIaVBHZTI4NXhENTl3bEY1U1pqbm93QTRGcG54?= =?utf-8?B?Q2duR1NheDhMSHNtYURhNEtTb3lvTnA0UWVPV3hiK2xic050WmNBSS9rZkVk?= =?utf-8?B?UHFwcXZhWks1dFdTUTN0NFZROXJBS2l2YW5DeEN6cFgxYStPNUVyaldheTJV?= =?utf-8?B?RnZaZm5UYWZQdlRPMW1jTDRwdXBkdkFKMEl5Ync2cHIvRVpERXVqUHNINXQy?= =?utf-8?B?OC9KWUZDOEV5S0dFV3JMRGc1czZUejVUaVBGSHpCdmdsMFh5MHArbnBvR0dO?= =?utf-8?B?OHhERnlGQmxSV3pSWDBwMlRFUkR6Nk0wYmJrL2hmK05RVWw0eDg2SkF5Uk1o?= =?utf-8?B?VkFvSHh0c2hHc3hqb0NoMlZjVmV0VzREdHd2MlJZZFpjQ0FRMTlndm1yQ0kr?= =?utf-8?B?eDZVMVFzZjByQXJjU3hLc25tU0RqSXpuMExYR25saWlQWmk1RU5VN3BQT0Rq?= =?utf-8?B?RW9HREpaTGVwQ0h5M2wyQ2MxL1J2WEtoOCtlOWpKMTJHU1RqZjJwZEpjWFlM?= =?utf-8?B?WEtSNGFjaUtMdlFjSHJuS3N5eHUzWVhjdVJQRUppNktNRnJURE5CdU12NGIy?= =?utf-8?B?QUxkQldjVmdXTFFKV2xOZ216UDB0UE9DM2o2TW9rYVNiTlVaUzVWd0N3Z2Rv?= =?utf-8?B?ck1wR3VRRTRLT2ZZZVl2QndZNmh2U256YmlQam5DemZlNiszazQ1NGZKRmN5?= =?utf-8?B?OExpNFpIeGNWRjcrR0lRTVdoVVpqeGIxeTl4R2dVNHBSOU90bnBSTlArY1F2?= =?utf-8?B?M1k2K2ZRaDV3bTlYZVppNDRuQ05pVmx0aHFna3ZTLzYwZnVWY3R0RjIvSlZo?= =?utf-8?B?d3pUeXp4TU1BS29tSXJPT0s1ZXVQMVFGTWV6cVdLNUpBTXRraktLY3ZWTGxt?= =?utf-8?B?THp6bW1LT0YvS1g5TzdJS3pYY0hzemNvY2cxaXBBcjBSbWNvb1hEUk5yQUZi?= =?utf-8?B?NFdtSkhRU2pDaDlEeDlmNERyRnZ2ZFlWTWJkdXN2WVN6WFV0aWJpNTVNRk1n?= =?utf-8?B?R2Rxa0ttb2l2eHMvVUxZNW4wUEY0clg5Y0FSc09UNGhIeGVMeFBHcmtpbDRI?= =?utf-8?B?U21VUGVvWDM3ejh5akJtc0szeGFpTUVRazdVa2Jjam1wc3FMbVpsSVJycU8x?= =?utf-8?B?Q0EzNkFkdysvOGJwZDJFQTJ2Ty9Nd1ZPZUFpVkllSEY2ZDZsM2ZISTFJRlE3?= =?utf-8?B?SFdKY1U5UFhlNmVvN2ppOVFYc0xzQXZ4Z1FTbnJtQ000WXVISTlEY2R0SFB5?= =?utf-8?B?azUrL09ONXVhUytpZ2JIYytSL0d1N3FHWTc2VXp3ejVhbGhXR2t2QlEvWlB0?= =?utf-8?Q?lspAbA4xcG+MRHvMkl+D8O4TTRLfvctisIIIPkh?= X-MS-Exchange-CrossTenant-Network-Message-Id: 92d9fa90-5073-409d-3659-08d90bf041e5 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:37.6646 (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: TwPfHngVCo3JTo1R24hiY0Io+yoWp8eamHGMG2C2+Bh5nC1hFfBJV4qXgbu9UZj8huKQjY3U/sQY6RDiM99Nig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Pull out the code from xc_cpuid_apply_policy that applies a featureset to a cpu policy and place it on it's own standalone function that's part of the public interface. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- tools/include/xenctrl.h | 5 ++ tools/libs/guest/xg_cpuid_x86.c | 95 ++++++++++++++++++++------------- 2 files changed, 62 insertions(+), 38 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index ce0785f7654..3fef954d1d1 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2639,6 +2639,11 @@ int xc_cpu_policy_legacy_topology(xc_interface *xch,= xc_cpu_policy_t policy, int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, const struct xc_xend_cpuid *cpuid, bool hvm); =20 +/* Apply a featureset to the policy. */ +int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t poli= cy, + const uint32_t *featureset, + unsigned int nr_features); + 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 d313a093af6..e2237e33709 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -477,46 +477,15 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, =20 if ( featureset ) { - uint32_t disabled_features[FEATURESET_NR_ENTRIES], - feat[FEATURESET_NR_ENTRIES] =3D {}; - static const uint32_t deep_features[] =3D INIT_DEEP_FEATURES; - unsigned int i, b; - - /* - * The user supplied featureset may be shorter or longer than - * FEATURESET_NR_ENTRIES. Shorter is fine, and we will zero-exten= d. - * Longer is fine, so long as it only padded with zeros. - */ - unsigned int user_len =3D min(FEATURESET_NR_ENTRIES + 0u, nr_featu= res); - - /* Check for truncated set bits. */ - rc =3D -EOPNOTSUPP; - for ( i =3D user_len; i < nr_features; ++i ) - if ( featureset[i] !=3D 0 ) - goto out; - - memcpy(feat, featureset, sizeof(*featureset) * user_len); - - /* Disable deep dependencies of disabled features. */ - for ( i =3D 0; i < ARRAY_SIZE(disabled_features); ++i ) - disabled_features[i] =3D ~feat[i] & deep_features[i]; - - for ( b =3D 0; b < sizeof(disabled_features) * CHAR_BIT; ++b ) + policy.cpuid =3D *p; + rc =3D xc_cpu_policy_apply_featureset(xch, &policy, featureset, + nr_features); + if ( rc ) { - const uint32_t *dfs; - - if ( !test_bit(b, disabled_features) || - !(dfs =3D x86_cpuid_lookup_deep_deps(b)) ) - continue; - - for ( i =3D 0; i < ARRAY_SIZE(disabled_features); ++i ) - { - feat[i] &=3D ~dfs[i]; - disabled_features[i] &=3D ~dfs[i]; - } + ERROR("Failed to apply featureset to policy"); + goto out; } - - cpuid_featureset_to_policy(feat, p); + *p =3D policy.cpuid; } else { @@ -1108,3 +1077,53 @@ int xc_cpu_policy_legacy_topology(xc_interface *xch,= xc_cpu_policy_t policy, =20 return 0; } + +int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t poli= cy, + const uint32_t *featureset, + unsigned int nr_features) +{ + uint32_t disabled_features[FEATURESET_NR_ENTRIES], + feat[FEATURESET_NR_ENTRIES] =3D {}; + static const uint32_t deep_features[] =3D INIT_DEEP_FEATURES; + unsigned int i, b; + + /* + * The user supplied featureset may be shorter or longer than + * FEATURESET_NR_ENTRIES. Shorter is fine, and we will zero-extend. + * Longer is fine, so long as it only padded with zeros. + */ + unsigned int user_len =3D min(FEATURESET_NR_ENTRIES + 0u, nr_features); + + /* Check for truncated set bits. */ + for ( i =3D user_len; i < nr_features; ++i ) + if ( featureset[i] !=3D 0 ) + { + errno =3D EOPNOTSUPP; + return -1; + } + + memcpy(feat, featureset, sizeof(*featureset) * user_len); + + /* Disable deep dependencies of disabled features. */ + for ( i =3D 0; i < ARRAY_SIZE(disabled_features); ++i ) + disabled_features[i] =3D ~feat[i] & deep_features[i]; + + for ( b =3D 0; b < sizeof(disabled_features) * CHAR_BIT; ++b ) + { + const uint32_t *dfs; + + if ( !test_bit(b, disabled_features) || + !(dfs =3D x86_cpuid_lookup_deep_deps(b)) ) + continue; + + for ( i =3D 0; i < ARRAY_SIZE(disabled_features); ++i ) + { + feat[i] &=3D ~dfs[i]; + disabled_features[i] &=3D ~dfs[i]; + } + } + + cpuid_featureset_to_policy(feat, &policy->cpuid); + + return 0; +} --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798118; cv=pass; d=zohomail.com; s=zohoarc; b=gXE2RIURgjL1BC5S+LpIA/pFnOfYpJn1AEkHjHTr52aXeZ1AADnWKgj8CttNJ/KZX1WmaaeWJWhvpjq4+Zw+z8D6LMNTCRKvEb6S2KqIJcci0CjZBei0voEgP6kokSp/RYC0l6AmqlEje2ppafkMmjET316RF0oQlgmIyxk53Gc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798118; 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=yN5vLdUrRPJsQKL4S9ockz5uFH49rwlndHZPbJDf0P0=; b=EpOZsra8fQE5Wxi7RW8WGcJgsdWXXEOxvtNKmqj54RC5K9i4QEtByxUqW6Ii7zrhg0shE/JK6/dZM2HjFf39tk7dhOoOtmSPXEgEGUIC/umXXjkm2zHWDvZcswiy0NUk/G6BSj3fq6AYG44avedf4q8d4FI1vcTUplw3MeHAAJk= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798118088919.2888343833316; Fri, 30 Apr 2021 08:55:18 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120652.228213 (Exim 4.92) (envelope-from ) id 1lcVTt-0001kG-EI; Fri, 30 Apr 2021 15:55:05 +0000 Received: by outflank-mailman (output) from mailman id 120652.228213; Fri, 30 Apr 2021 15:55:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTt-0001k9-9v; Fri, 30 Apr 2021 15:55:05 +0000 Received: by outflank-mailman (input) for mailman id 120652; Fri, 30 Apr 2021 15:55:03 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTr-0001jX-R6 for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:55:03 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e17ed7e9-646d-4094-a0fa-63fc2e859e13; Fri, 30 Apr 2021 15:55:02 +0000 (UTC) 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: e17ed7e9-646d-4094-a0fa-63fc2e859e13 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798102; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=t20EnpqKBlUzjHM5i+zlh4pmJDciRR7qXb3GX4KHcTE=; b=LWytefZxYqDf93BAww++kAAYT5UbM0vrvUcorKEwsPlx+W2HzWQqAELz CvqwJHFORo5t/y+Edvkxt0uW36dkRLq+/c6FiF4jeqf6q4htF3ttoMlSz cubX/Xuoe8UogUfYgNBc6PM/NgDyeL1ZEp0/1qvBkklMu5zVRmvsaFZEg s=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: XmvZSEfulV3vHW9Ck+CzUz6k4wE/Gtdcw79Wf5aNNZ8NuU4pNIG6/88Cje98wbVdh8AMnoHOCN dRrSYoG6szqblOVB+seXyFTgCX7qabNBGHZ3z46wVV9EKcwl0d2S9QRFc81FL1Yp9W/9NTY5X0 vXnVt8TP70tXkM3qSTRNLs3WjkVQ/FeaRt1TN5niJXUtq+fG7pyZef+wJpZjr1OKlgG7i+aMHj 5eGRNaTJpilptdc32IJUdFUKozb36buq2pgKiuyWmnw4vZ4zQinpSdCeTVzRFZJt9m782/ooiB xOw= X-SBRS: 5.1 X-MesageID: 44331764 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:UlZV3aDt1GAGz5PlHegrtMeALOonbusQ8zAX/mhLY1h8btGYm8 eynP4SyB/zj3IrVGs9nM2bUZPvfVr1zrQwxYUKJ7+tUE3duGWuJJx/9oeK+VLdMgXE3Kpm2a 9kGpITNPTZEUV6gcHm4AOxDtYnx529/Lq1gPrFpk0McShBQchbnmBEIyycFVB7QxQDOIEwE4 CS6tECiz2rf3kWacrTPAh7Y8HoodrXmJX6JSMXHhJP0njzsRqEyp7fVyKZ0BAXTi9Vzd4ZkF TtvgTl6syYwoiG4zDG0Wu71eUypPLAzZ95CNWImowpLFzX+3yVTaBAf5HHgzwvuuGo7z8R4a rxijMtJd565X+UXkzdm2qU5yDa3Dwj62DvxDaj6BOJy6GJJ0NZer98rLlUfRfD500rsMsU6t M340uju4dKFhSFpSzh5rHzJmFXv3Cpqnkvm/N7tQ04baIibtZq3Ogi1XIQOpIBECXm0ZsgAe ljAerNjcwmAG+yXjT3uHJiz8erWWl2NhCaQlIassjQ6DROmmtlpnFoi/A3rzMlztYQWpNE7+ PLPuBBk6xPdNYfaeZYCP0aScW6J2TRSXv3QSyvCGWiMJtCF2PGqpbx7rlwzvqtYoY0wJw7n4 mEeE9EtEYpEnieSvGm7dluyFTgUW+9VTPixoV1/J5ioIDxQ7LtLGmqVE0uqc29uP8Sa/erG8 qbCdZzObvOPGHuEYFG00nVQJ9JM0QTV8UTp5IVQFSLjsXXKpD7l+DSffrJTYCdVAoMayfaOD 8uTTLzLMJP4gSAQXnjmiXcXHvrZwje8PtLYezn1tlW7LJIGpxHswATh1j8zNqMMyd+vqs/e1 Y7BLvml6i8tFSn5Gqg1RQvBjNtSmJupJnwWXJDogEHd2nud6wYhtmZcWdOmFyKOwF4VMGTNA JEvVx49eaWIvWrtGEfIuPiFljfo2oYpXqMQZtZsLaE/93ZdpQxCYtjfrdwGwXNHxlcgh1rt2 9HVQ8BSibkZ3HToJTgqKZRKPDUdtF6jgvuC9VTs2jjuUKVotxqemEWRAe0UcmcgR8nQh1dgl EZyd5YvJOw3RKUbUcviuUxN1NBLECaGqhPAgi+aIJIobzzYw1rQWCWhTuVtgErdgPRhjcvr1 2kCRfRVeDAA1JbtHwd6Krs/V9uXki2fk57aBlBwMdAPFWDnkw2/f6AZ6K13WfUV0ALxfsFNi rZJREIJBl1+tyx3BmJuTqLGHk83K8yNujFALlLScCL5lqdbKmz0Y0WFf5d+5hocO30uugQSO SFZku7Kij7B+5B4X3dml8VfA1P7F8qnvPj1Ee7sCyW3HsjDeHTJ1ojbbcBON2Y53XlQfHN8J gRt6NDgcKAdkHKLviBwuXrShQGDDX5i2u/VfspppBZprhajso5I7DrFR/zkEha1xA/JvrunE wQQK5H8KnMU7UfC/A6SmZ8xB4Vj9yBI0sgjxzuDsI/dV8riWXHP9nh2cu/lZMfRmmIpA79Ij CkglZg1saAeyuIzrgBDa0sZUxQdUgn8XxnldnyOrH4OUGPd+tZ+kC9PWL4WLhBSLKdEbFVih ph+dmHk6u2cCX/sTqg8QdTE+Zr82y9R9m1Dx/JMelU88aiMVDJu5CU2qeI/X/KYAr+TV8Zi4 1DfVERacoGqgBKtvxI7gGCDortokwklFNC5ypAjVCF4Pn/3Fvm X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="44331764" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NVIDwR4oCD7Gwg/fgtdKqdN11Sf4qzymaKYRYAMbKfxzaADeox2SKltoYn26gWr1TxhN/B3mm/kScuB4Djkf0Rlg+VQjhA8d8RbR3/YIC6BKZOFcd2whm4UpmjsQTkVh1Tmcm+fG5y7mhq5XA79t2cFNdrl429No330SzhQdQUGXWC7+TS06J/VMCQwMFxPIwLKyJ4o6gz+8DcDClIrSwWtFLQGugpOQqEUK5qUSeZyAecksQyaxVDCfEyom5CcoqxDNbGLwoXpDK+OHYNHrl2lr4W8qB3nEBTvAPfNbgFkosv4hP27Ff61axELVHB/h1xhiak9z4a6Gs+dAlA2FUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yN5vLdUrRPJsQKL4S9ockz5uFH49rwlndHZPbJDf0P0=; b=DCy43dh/j8yUkPwpn4sCkGammSg5LXvUS5y/QHsSeG5Oxn9GzmucQY0uxVjb9+tq/PHnmjd52nbJ7/64L/hPHlO2Mvn8w/Gu3N+FgINb7GVIoat2SWuk4GbvagTVoKt7/606HXcrxwoYw0mWKgTyTVrG98ibi7WqK/PEC+LgzJhHkmp5G5Qr6rxhmEeKZiXD6U+OVH2Q+EKR3lDS24Pibjt3OyzMdVOX1GngTBmRl8M8PfuDkvHHEXzY3b0pqjMVy2jrLLUIU5E5KZHD+XnXv/tkoEwUspBQFe442EkKYp9D7o9Pe2TroVDwGOABeC2ccsDUDBjgKvgnZfaQEtu30w== 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=yN5vLdUrRPJsQKL4S9ockz5uFH49rwlndHZPbJDf0P0=; b=If739HcVR2x1/PB0vYwBhFAEY6ypAhGGKzYxJyxOL0sRorijVFNoo0x5nZyIoXa6PIJcMw/h0iCRXtGEh6yqudgQpwi8nCh7H8US+n7cVl4UCoK4WPXyu8O2SyCYfFZGeW8yQAtUbKjCAPuvN8LDQpRBeFsPv1pu9e0eXuYplxI= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v3 12/13] libs/{light,guest}: implement xc_cpuid_apply_policy in libxl Date: Fri, 30 Apr 2021 17:52:10 +0200 Message-ID: <20210430155211.3709-13-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0114.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::30) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d7518d8-e2b7-46ea-e2a5-08d90bf04598 X-MS-TrafficTypeDiagnostic: DM5PR03MB2923: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:164; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iKDMDn49+8BeMrcMfaxgvCw8GKx/Gh6pKGcrXdmuxJYEw9e38aC9X+WYJXnWc7ACspyUJDuQC6hw+MJ8O8qvbRrMmvAz8sg379QgjQR6EuEsElZonYbga3XELZcWBGA0thIf0d32QaWv6BSnaVWatik4Z7QcbNiFk45fyeh8ChQEwPP195yNB+9Ksk29iRAPidIYIHnOqc+jJ+sdmMKHnvN0xgBLMsndze303kCgGAaPvldUKuVvmjF4bNKGkGSJNZZLU4onn7X88CMNbRcIWaDIY4ZnT/T951y3+l4Y6EUIcBic3IoXL47c2+s0V1r0Dia04S7ZjPDs0dPTDLG0tYPTLjbKBndmZMNxpU+jfItNCipuEW+PD9LP8LphqiPp5cyJLLbv+2edr8ggubptA3OtdQ2zOnF9vAkHZjB1NWuJ3QsYqjogFH+CY1LXq3J0tsFi70UUKBIDplrgEvoE6ft14+oaBPDpJ7s/TDmLqhnuJkyhcVDf6h2rXE9x6Okf8rlxfcWqWI+x6emu2cIqPRHjdw2TRLXv2nT83pRe6KDrG9Po5F2wJcogh7O0uRxxQh2TEkTrx3cmb3z4Q5cGsnsYWu4J68ZMsmKNogQwaA0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(956004)(186003)(16526019)(86362001)(4326008)(8936002)(1076003)(6486002)(2906002)(5660300002)(26005)(66946007)(316002)(2616005)(38100700002)(66476007)(478600001)(83380400001)(107886003)(6496006)(66556008)(6916009)(36756003)(6666004)(54906003)(8676002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?M1ovNndSSjZhZ2tSeXdTcGtpVHlIOVFOUlVuUnFZclFPcDZFNUF3MmdBVkFH?= =?utf-8?B?WHFMeFo4R00vTGM0bGs4VHpyNWZOamJZWnhFRk1vcEIyRGRPSk9aSlpyenFY?= =?utf-8?B?RVRFV1czaDArM1dQUkozNVVNdUtxYVJ2a2JxOU5mWDVKY0xXUWR3OHYzajE3?= =?utf-8?B?Um5DWDB2UGR6a1ZJeDJLMkkyaG1BSFZ3V29WcEpBVlF5cFlCYnhBSG9nZ0VB?= =?utf-8?B?Umpzei9uNWZPTHBXRGhLQ2FSS3RpNlZPTWZTRFlHL2RtQ0ZJRkNDdlNXQVdD?= =?utf-8?B?eW1XL3hCWk1JVzFIeStnVVkwZ0JUcW8rS2FyNEtIWm9Mb0Exc01JOXpoRlJV?= =?utf-8?B?ZHE5ck02ZHBYeEVPMEZIYnpxaFlXNDNXQ3NMVFJYRHg3ems0S3BZMS91SUt3?= =?utf-8?B?UitVbEYybWpFalZlbkxabHovUGo3TGJTc2o3aHp6cXNDYjNwZUJBaEJ2dHJB?= =?utf-8?B?VUhQWW5UTTQ1SGVpdGUxYTY0Ti9ZM2NmVGh3RFB5SkpGeU1vbFBqZStTRGk0?= =?utf-8?B?Y3FUYVhKM2VZamVuWVRVTFl0dHRhdk9uM2hQd0I4bkp5WE1IUnYreUluelh3?= =?utf-8?B?N0Y0NEhibCtOMmtxNkNRdVUreEE0Q2JGcjJhVnl6M1ZBZVA0aUVJV1c3eFJw?= =?utf-8?B?WnpkeWtEZm5paHR3U2RKUXZFTWtVL3F5QmdlaHNTdG9pRXU4U3FoSE05MjA0?= =?utf-8?B?RWFDR1NhU01PWnNPV0dnSHE4TGNZdndiVFBDaFVkTHBFazhjS3lsQ1pQOTMr?= =?utf-8?B?TzdGeFJnVHVKTXVPeEdVZkpRZ2J2dTFsdVZnc1gxdEtjcWpjQ0kxeGUreXZq?= =?utf-8?B?UnNpZVJER3p3WSszOUNzT0R2ZWhmL1B5U2NmZkhJeXVudEk1QzdCSis0U0pY?= =?utf-8?B?WFBhSkkzcWIrVU1aZFNwNjRMNGI2bVZlYkwwaGxqMVpFc0pUWHJSTXdGZDRE?= =?utf-8?B?cy9XUEdxd2Fld2tUQ0E5eUwzTnVWNTdHQ1JPN1NpOWg0STB1UHh3RUhUWU55?= =?utf-8?B?K3FORTNlb01xTzVNSUh3d29kOXVqT1B0QzcxbDdnaHBob0J1VktBcXZEeEhN?= =?utf-8?B?RjBsMFhqK1pUNmFjUjdmbWFJZURlNEQ3NnBNQ0RMUStxTmZBOHlvbGlodGc2?= =?utf-8?B?K29MaWpBVVdIS3ZoamJscGRJTFRUY2UzeEIwR0VqeklEa0FMYU5OQ1dtbmFM?= =?utf-8?B?aG9IdEErbk4yWmlQYWNGSzQyY2FqeG55Y3YrYjBVc1p2cmRmZWhSdTZNMXJ2?= =?utf-8?B?TFN2Mjh1K1JDT1hud1BmUHFhdGMwck9FTWZtMy95Q1pmMStlQ2ZhTVgySmJi?= =?utf-8?B?d2lWYUtCTmxwMmVUbE4yc0wzemttYUZiMTBFZ1l3QjdQS242RGdiS2JtVG0z?= =?utf-8?B?TnNZUWtxUEJiZDR6MTRaM0RZUzJyb0sxQ0F6Z0dkU0ZDS3FKblQ1SWJKSU1I?= =?utf-8?B?OHd1UDNYeTFicVhzRlZXRmJMbzRiVXRSOEhLWXN4MnQzMnBPNllXN2JRem9S?= =?utf-8?B?bnl5YTN1K1p1ZnhiUjVURU16U284eTBUMFBzalB0N1dWd1FYY3pkUW0vM01p?= =?utf-8?B?UEtmcnRFdTBtNlRMaHpubEs1SlpRcndNU3F1U2x6SVZjNG1LZFQrdGVvL1JJ?= =?utf-8?B?M1o0YU93bGdJc3JIUytmV1l0L0ZmTk1ZSHRvTG5ldEVHRzIyemY4UUVrKzZ5?= =?utf-8?B?UjZZWVpQVWpZZ3FEc3pCd2VaemJRSlZJZ0JxMzhUYzlvNStuNkxNNGZ3NnMy?= =?utf-8?Q?kp5J3Q5ni0A2loQMQTwf7t5dC2ZSkyYxrLz5ue5?= X-MS-Exchange-CrossTenant-Network-Message-Id: 0d7518d8-e2b7-46ea-e2a5-08d90bf04598 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:43.8853 (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: feTmyoWg0YPWjwPWCUveQ+5hlw8vJNx0orBe21RsS9WHnjp6bAFuYetGYgx1PqoKsPlToP/Q6QA1UN+XsDAMhQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2923 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) With the addition of the xc_cpu_policy_* now libxl can have better control over the cpu policy, this allows removing the xc_cpuid_apply_policy function and instead coding the required bits by libxl in libxl__cpuid_legacy directly. Remove xc_cpuid_apply_policy. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Anthony PERARD --- Changes since v2: - Use 'r' for libxc return values. - Fix comment about making a cpu policy compatible. - Use LOG*D macros. --- tools/include/xenctrl.h | 18 ----- tools/libs/guest/xg_cpuid_x86.c | 122 -------------------------------- tools/libs/light/libxl_cpuid.c | 94 ++++++++++++++++++++++-- 3 files changed, 87 insertions(+), 147 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 3fef954d1d1..c6ee1142e8e 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1890,24 +1890,6 @@ struct xc_xend_cpuid { char *policy[4]; }; =20 -/* - * Make adjustments to the CPUID settings for a domain. - * - * This path is used in two cases. First, for fresh boots of the domain, = and - * secondly for migrate-in/restore of pre-4.14 guests (where CPUID data was - * missing from the stream). The @restore parameter distinguishes these - * cases, and the generated policy must be compatible with a 4.13. - * - * 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. - */ -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); int xc_mca_op(xc_interface *xch, struct xen_mc *mc); int xc_mca_op_inject_v2(xc_interface *xch, unsigned int flags, xc_cpumap_t cpumap, unsigned int nr_cpus); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index e2237e33709..d00be5f757d 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -413,128 +413,6 @@ int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_c= pu_policy_t policy, return rc; } =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 *cpuid) -{ - int rc; - xc_dominfo_t di; - unsigned int nr_leaves, nr_msrs; - xen_cpuid_leaf_t *leaves =3D NULL; - struct cpuid_policy *p =3D NULL; - struct xc_cpu_policy policy =3D { }; - uint32_t err_leaf =3D -1, err_subleaf =3D -1, err_msr =3D -1; - - if ( xc_domain_getinfo(xch, domid, 1, &di) !=3D 1 || - di.domid !=3D domid ) - { - ERROR("Failed to obtain d%d info", domid); - rc =3D -ESRCH; - goto out; - } - - 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 ) - goto out; - - /* Get the domain's default policy. */ - nr_msrs =3D 0; - rc =3D get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_d= efault - : XEN_SYSCTL_cpu_policy_pv_defa= ult, - &nr_leaves, leaves, &nr_msrs, NULL); - if ( rc ) - { - PERROR("Failed to obtain %s default policy", di.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; - } - - if ( restore ) - { - policy.cpuid =3D *p; - xc_cpu_policy_make_compatible(xch, &policy, di.hvm); - *p =3D policy.cpuid; - } - - if ( featureset ) - { - policy.cpuid =3D *p; - rc =3D xc_cpu_policy_apply_featureset(xch, &policy, featureset, - nr_features); - if ( rc ) - { - ERROR("Failed to apply featureset to policy"); - goto out; - } - *p =3D policy.cpuid; - } - else - { - p->extd.itsc =3D itsc; - - if ( di.hvm ) - { - p->basic.pae =3D pae; - p->basic.vmx =3D nested_virt; - p->extd.svm =3D nested_virt; - } - } - - policy.cpuid =3D *p; - rc =3D xc_cpu_policy_legacy_topology(xch, &policy, di.hvm); - if ( rc ) - goto out; - *p =3D policy.cpuid; - - rc =3D xc_cpu_policy_apply_cpuid(xch, &policy, cpuid, di.hvm); - if ( rc ) - goto out; - - 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); - 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; - } - - rc =3D 0; - -out: - free(p); - free(leaves); - - return rc; -} - xc_cpu_policy_t xc_cpu_policy_init(void) { return calloc(1, sizeof(struct xc_cpu_policy)); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index eb6feaa96d1..2489ceb49b8 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -430,9 +430,11 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, libxl_domain_build_info *info) { GC_INIT(ctx); + xc_cpu_policy_t policy =3D NULL; + bool hvm =3D info->type =3D=3D LIBXL_DOMAIN_TYPE_HVM; bool pae =3D true; bool itsc; - int r; + int r, rc =3D 0; =20 /* * Gross hack. Using libxl_defbool_val() here causes libvirt to crash= in @@ -443,6 +445,41 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, */ bool nested_virt =3D info->nested_hvm.val > 0; =20 + policy =3D xc_cpu_policy_init(); + if (!policy) { + LOGED(ERROR, domid, "Failed to init CPU policy"); + rc =3D ERROR_FAIL; + goto out; + } + + r =3D xc_cpu_policy_get_domain(ctx->xch, domid, policy); + if (r) { + LOGED(ERROR, domid, "Failed to fetch domain CPU policy"); + rc =3D ERROR_FAIL; + goto out; + } + + if (restore) { + /* + * Make sure the policy is compatible with pre Xen 4.13. Note that + * newer Xen versions will pass policy data on the restore stream,= so + * any adjustments done here will be superseded. + */ + r =3D xc_cpu_policy_make_compatible(ctx->xch, policy, hvm); + if (r) { + LOGED(ERROR, domid, "Failed to setup compatible CPU policy"); + rc =3D ERROR_FAIL; + goto out; + } + } + + r =3D xc_cpu_policy_legacy_topology(ctx->xch, policy, hvm); + if (r) { + LOGED(ERROR, domid, "Failed to setup CPU policy topology"); + rc =3D ERROR_FAIL; + goto out; + } + /* * For PV guests, PAE is Xen-controlled (it is the 'p' that differenti= ates * the xen-3.0-x86_32 and xen-3.0-x86_32p ABIs). It is mandatory as X= en @@ -453,8 +490,15 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, * * HVM guests get a top-level choice of whether PAE is available. */ - if (info->type =3D=3D LIBXL_DOMAIN_TYPE_HVM) + if (hvm) pae =3D libxl_defbool_val(info->u.hvm.pae); + rc =3D libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("pae=3D%d", pa= e)); + if (rc) { + LOGD(ERROR, domid, "Failed to set PAE CPUID flag"); + rc =3D ERROR_FAIL; + goto out; + } + =20 /* * Advertising Invariant TSC to a guest means that the TSC frequency w= on't @@ -470,14 +514,50 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domi= d, bool restore, */ itsc =3D (libxl_defbool_val(info->disable_migrate) || info->tsc_mode =3D=3D LIBXL_TSC_MODE_ALWAYS_EMULATE); + rc =3D libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("invtsc=3D%d",= itsc)); + if (rc) { + LOGD(ERROR, domid, "Failed to set Invariant TSC CPUID flag"); + rc =3D ERROR_FAIL; + goto out; + } =20 - r =3D xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid); - if (r) - LOGEVD(ERROR, -r, domid, "Failed to apply CPUID policy"); + /* Set Nested virt CPUID bits for HVM. */ + if (hvm) { + rc =3D libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("vmx=3D%d", + nested_virt)= ); + if (rc) { + LOGD(ERROR, domid, "Failed to set VMX CPUID flag"); + rc =3D ERROR_FAIL; + goto out; + } + + rc =3D libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("svm=3D%d", + nested_virt)= ); + if (rc) { + LOGD(ERROR, domid, "Failed to set SVM CPUID flag"); + rc =3D ERROR_FAIL; + goto out; + } + } + + /* Apply the bits from info->cpuid if any. */ + r =3D xc_cpu_policy_apply_cpuid(ctx->xch, policy, info->cpuid, hvm); + if (r) { + LOGEVD(ERROR, domid, -r, "Failed to apply CPUID changes"); + rc =3D ERROR_FAIL; + goto out; + } + + r =3D xc_cpu_policy_set_domain(ctx->xch, domid, policy); + if (r) { + LOGED(ERROR, domid, "Failed to set domain CPUID policy"); + rc =3D ERROR_FAIL; + } =20 + out: + xc_cpu_policy_destroy(policy); GC_FREE; - return r ? ERROR_FAIL : 0; + return rc; } =20 static const char *input_names[2] =3D { "leaf", "subleaf" }; --=20 2.31.1 From nobody Thu Mar 28 13:30:02 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1619798125; cv=pass; d=zohomail.com; s=zohoarc; b=g/CXf51Pi8mK/HuIgiS4aDXKNxB9ozqrAUeqJmiAA2Pl4/ahs7NEI3tTc4fS5NQwPPJtNP9GzsamUBeIsguGJDtqDwllkdFoy/6jVUxlJ6TAf8KF8JcCSJ+wmVDL7amviO2N6LWrsNkVaHhWwqRM7x0PFqC30+ccgH5WHEKKVXw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619798125; 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=m8dPs554Z+qKHV0aj5xYX+zXPIW+eM8kD/rIFlYebrw=; b=jtRFc6ic8VKlpzK2BqxsCRLkva0EYVLfGvNGyVZ4iiCYGRIZshHhJtYnvkSqdt7QSStrzEsXLe81Gl9j4UOX0w8tq5E5UcLHfy+8SkLanSe7sFvvTFaVOB8IPlSzrKulrqtJAV99TKCtfKCYpYEWgOUE3va2dJi5jsn3SIXjFPE= 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=1dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1619798125703484.4002952923213; Fri, 30 Apr 2021 08:55:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.120657.228225 (Exim 4.92) (envelope-from ) id 1lcVTx-0001oT-Rt; Fri, 30 Apr 2021 15:55:09 +0000 Received: by outflank-mailman (output) from mailman id 120657.228225; Fri, 30 Apr 2021 15:55:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTx-0001oK-O9; Fri, 30 Apr 2021 15:55:09 +0000 Received: by outflank-mailman (input) for mailman id 120657; Fri, 30 Apr 2021 15:55:09 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lcVTx-0001HD-7Y for xen-devel@lists.xenproject.org; Fri, 30 Apr 2021 15:55:09 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id aeafd958-da13-4b82-84db-b27d68e2283d; Fri, 30 Apr 2021 15:54:52 +0000 (UTC) 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: aeafd958-da13-4b82-84db-b27d68e2283d DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1619798092; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=a+brw/ab4WDrji72+dgrWoVFuLwkt3UX6eVY6D2foKw=; b=VTmn3r2W+kgglWPV2RpA9hvgqkpfofzcjYnPWw6pLegt1pW+JmkP8Q1k e0glNZk4jMIr34rO3VBM2VmrogEuQggQYKz7swuJ8Czlxy7A0MUiL0FoT dJSuvITT0c+lbVwTZzFpBveCBVi2oSUGRqOKDxAXkA8zT5foGlMR7BHjV I=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: WTLBaoxEGsEnXTK0lfhgGcsqomh5xsR3+B745OH30UwKJiOt0gpggCEM3Fc18LuMQjuacZ03sZ jLBYYbeoB42fciKgXG3am0vbxDbG0mrvPcc+5wczB43QgwQrfwDcKwP8xySRsY3X793RCeCnv2 ZhTK3/u+IhHT4bmnurcBdDj9Om9tPTxzfdY9U4lpAvETOG6KgP9SEBiUtYZN/QbjcXkLWmQKuB S04j19dDHlbT1u+ZjiJu2gvbAMhPpHJ6TCNFWl2zA/YK4JwJMc38b4JfiEcx0qWtYxKkKiypWq 8Cs= X-SBRS: 5.1 X-MesageID: 42625739 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:eJ1P663JA78c9QM3qH3b5gqjBSB3eYIsi2QD101hICF9Wvez0+ izgfUW0gL1gj4NWHcm3euNIrWEXGm0z/NIyKErF/OHUBP9sGWlaLtj44zr3iH6F0TFnNJ1/Z xLN5JzANiYNzNHpO7x6gWgDpIEyN6I7KiniY7lvg5QZCttbLxt6Bo8Lw6dHFF/SgUuP+tAKL O34M1bqz28PUkGd8jTPAhPY8Hvr8DG/aiWBCIuKAUg7GC14w+AyLm/KBSA2wdbbjUn+8ZFzU HgsyjUopquqOu6zBi07R6Y071zlMH6wtVOQOyg4/JlTgnEsQqjaIR/V7DqhllczI6SwW0nn9 XWrxArM94b0QK3QkiOvRDv1wP8uQxP11beyESViXamgcv1SCNSMbsiuatlcwDU40dlgddk0K gj5RP7i7NrC3r7/RjV1pztbVVHh0C0qX0tnao4lHpES7YTb7dXsMg24F5VOI1oJlO31KkXVM 1VSO3M7vdfdl2XK1rDuHN0/dCqVnMvWj+bX0k5vNCP2TQ+pgE382IogOgk2lsQ/pM0TJdJo8 7eNL5zqb1IRsgKKYVwGfkGWsnyLmDWWxrDPCazLD3cZe86EkOIj6SyzKQ+5emsdpBN5oA1go 79XFRRsnN3dFnpDcGIwZ1X4hHASGiwRl3Wu4Fjzqk8noe5aKvgMCWFRlxrudCnue8jDsrSXO v2OJ8+OY6hEULeXaJymyHuUZhbLncTFOcPvMwgZl6IqsXXbonjtunRdufPNKPgeAxUGF/XMz 8mZnzeNc9A5kekVjvTmx7KQU7gfUT54NZ3C6jV/+8azYAXLY1Sug0JiVC0j/v7aAFqg+gTRg 9TMbnnmqS0qS2d5mDT9VhkPRJbEwJI+rn6SmhLogULKkvwdr4Gt7ykCCVv9UrCAiU6Y9LdEQ ZZqVgyxLm+KIaIwzs+T/i9NHiBsncVrHWWbpsVl6GZ//35cpcgAptOYt00KSz7UzhO3Sdjsi NqdRINTE63LEKUtYyVyLgvQNz5W/Y5qgGxOsJQoW/Yriyn1LsSb0peeSWvX86RiRspXBxOiD RKguIiqbKdhDeiLnY+iuwkMFtKLH+aGq5CER7tXvQoppn7PA53VmuEnjqcllU6fXfr7Vwbgi j7ITSTYuyjOCsVhllIlqLr+khzbGOTYgZ5bW17q5R0EQ39ywFO+P7OYqq4yG2KbFQehukbLT HeeDMXZgdj3cq+2hLQmDGMExwdt+MTF/2YCLQoaLfI3HyxbIWOiKEdBvdRuI9/K8qGiJ55bc uPPwuOaD/oAeIg3AKY4n4jJSlvsXEh1fflwgfs4mS01GM2aMCiaGhOVvUeOZWR/mLkT/GH3N FigdU5sfC5P2/xZtSFoJunGwJrO1fWuyq7XusooZdbseYur7N1BYDcSiaN23dd3hkyRf2E5H 82UeB++vTGNYBudcBJJH4c8VotidiVLEwk9gbxGfQzeFkxj3nde9OFioC414YHEwmEvk/3P1 La7ihWu/HCVCGH3aQBC60xLX9NAXJMnUhK7aeHbcnIFA6ud+tf51K0PX+2ba9FRMG+aMothw c/58vNgvSeeCX50h3BpDd3IqpB9GC8XMO5aTj8aNJg4pi9IlSDgqyj/c61gnP2UFKAGjglrJ wAc1AMZcJejTRnhJEr00GJO97Knn4= X-IronPort-AV: E=Sophos;i="5.82,263,1613451600"; d="scan'208";a="42625739" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dZx7wlsr9SzmGn7ouRzpMDuSdlCSjkktwgSxn8JE/QWnOA4tKEoaurk/hEOfdZf9Fu2gA9CcTwXxzYkXwb46jpeUCtMrSnETCLaf2v/e5A2665WrCnw3A5hTRUT9+8S6YzeZciC8OFfPlnVOXokE7gqujqM5QrCjZEvTm9NEwOcCY9o5Ehi2wPf+7f5r40NvfrLRpVnd0FtDKtFGmlk0p+EtD1COVvbFDOPnJB8iazGEPp7wwvejxVr/xD06Ehh4TMcg2hGU6/7SJYp7beEZLhE6lyn0Y9NIIF+aou39vByIznQ+KGafKZU43+yaVlProb7gWbqIeHOkJDRDiXj5KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m8dPs554Z+qKHV0aj5xYX+zXPIW+eM8kD/rIFlYebrw=; b=Cz3e2ABM4AMpwkXfO0sMvckAxGxnKLkJOP6u3vfFgUaKjyjhoghSxPdWKP34YWOFgbL+7MaxNM1519L8J+mMoqNaQv6RDGAEdzrnvNzXWXuqvSxet2VmZq1S8/HkQFiGl/91/8418FHBi18YF/r1wHiwhsrrn6T9RBV4sT+6Tx+0C8eHz19mINhF8ER8pW7q2ShH83AGuJEy9Dq9nYsOa5LZ4x1dzulefdugXXMxsDfU3d3znqEkl8BrM/2H/G1DJYcUIIvyVPKmR2z2JUVsdBMLYt7Kts0phFvyYRiBwhMLMu2tRjIDVocwMRGlCay8fijr9To4C905P/vNr54chw== 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=m8dPs554Z+qKHV0aj5xYX+zXPIW+eM8kD/rIFlYebrw=; b=hhqs7oIEqqkh9rbSLkkJQ7dCTh1kOLj2Nc4uZowHCy3vpKh21WIlXopPTdQZDqV0p9LlrcN+ucfZ6eR5YyCuap4dh9CeDW6r2tH1lLrphqbtsyConMr8BuZnTbtfAwL8DG3DzimyEknirV8hfdv/9jIr9Z0qCVaMg5UYDf6KHGQ= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v3 13/13] libs/guest: (re)move xc_cpu_policy_apply_cpuid Date: Fri, 30 Apr 2021 17:52:11 +0200 Message-ID: <20210430155211.3709-14-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430155211.3709-1-roger.pau@citrix.com> References: <20210430155211.3709-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0138.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::30) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1ef60f8-222a-43c5-cf22-08d90bf048dd X-MS-TrafficTypeDiagnostic: DM6PR03MB4602: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:272; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Fpj7HFBK61WU/LIKGHehygfyoLz31GQWq1NJFQIwiztR8lpL2hFyX5ihQajvLatYrXk9WqGB6YUEYWU/CJtAHWIoKCzyImJUoz/c+blEJi3ak0JybLwI++oo+7sRSQTQ6Drs2YL2MS2SOzCKiNEDZ5q4g+6mrMiWapfiDTPZSRVAwK+Vc8x9g+r6KHVBGVzqa5IqaNqP5HHROqvfCRltvMiNCzGkvgsHQgPlHGUd6bn7SVAN5cWn7qHnsZ0O2k6C9vpUCH2+bRr4/dy4KTNk5V35wkNvgyFxOcwlrTo/JX3ZEi+LUCCiUNS6zgVyT6+GNoIMg2Zv1K7Q9ObxW2deyyJBsljCcJOSdEVK2C4p6CqZqEUcLzSVGdmVhQuZ0yjP6ulJd0R3WqnHhqcbOCw3raPQ+fMAaSzSAzhvAXleWC2FZh3BPvB/6f3Tu0JZnGsrt9EncC87tvK34XLsPnbx6gL4M/36eSSIvQuthugQr3u9x7ir/f7zIxFJmadYt0E5WYlWq12Gs6FcUajht0tunIYauk9hU22oeaKQKc4GWHnr13yAHYBtlSm/Y/nsPnT7J2D9RgXR5jwDOv1fTFOh3EnoztJBer5y/Q4zq8vEPJ4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(39860400002)(376002)(396003)(366004)(346002)(83380400001)(107886003)(54906003)(66556008)(36756003)(1076003)(38100700002)(6916009)(4326008)(66476007)(8676002)(2616005)(26005)(2906002)(6496006)(6486002)(8936002)(6666004)(186003)(86362001)(16526019)(316002)(30864003)(66946007)(478600001)(956004)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?V05ERXRaVWFNL0llRWhudEhxVDZNVGdkb01RV1l4c2JYUnU3bVp4R0cyQjRU?= =?utf-8?B?aEdrd21Yb3EzWGxIbGlyNWpVem5BdElKc1dwZy90NjM2enJXOCsvZ0IwZlZ5?= =?utf-8?B?clppQTBzSHFvRHJ2UVRsYkp1UHJ2NUJhbHczQTlrTU9xck1jU2UzN2NLMnho?= =?utf-8?B?TExiWTNSbjJPeGR1YlRqZHIvdlI1UXNyL2tjd0ZLcGxpcTNZKy9hM3I4UTV2?= =?utf-8?B?MEtPendJRVNwYTk5TVpZbUU0OWdjVXRpbnhFSk1ackdUSHpZU2FWQ0pxNnAy?= =?utf-8?B?Zk9CZy8vOFR1bmVBcDVuVmpmZTJwUmpLRmpjT3JOUExOcGtWNTlWMnRJTm5j?= =?utf-8?B?cVZuelVSVXhob1E2VklVQkJVMFRQTFdPaHh1YUNYbVlmMGJ4THNRL3pTNkky?= =?utf-8?B?SUNmSmVQWjZwUHU1RVh3d2VYaG1iZ2lUR3BUQStPT3Z5WVhuUTRXUUtnY09p?= =?utf-8?B?a0d5SXlaNkxxbzA5RTFvNmJvRGxoWmZ1R0Z5QmE5Q2NMZmY2WWJsYnpqSkNI?= =?utf-8?B?b3EzVVU2b1ZoWWtqN29MeWVwOEZVUk5vVGhNazZlMFB0MXhna1h6aVIrUC8v?= =?utf-8?B?dk9RajNBZmsxbFFseW9IaThlcm5aQ2pLMWRSdDlQV0d0STZIVnZQTlN6QkUx?= =?utf-8?B?TjJLWDNHMTJaL0VTM3NQbUxxeXhwOVU3Y2RnMk1XdmhkaWF5MlhnNGZBaFUr?= =?utf-8?B?T2NndkpacGRTQVZ5eStvb1RGQ0Mwb2tjOFovcVVJZXQ2M1JkcXlHa2RyYU9I?= =?utf-8?B?aTZzN1M2OGdJbVVaU3pOa1lhaDcyRnRDcjd4dkFzcHRyNzFFM2UydHQvQ0xh?= =?utf-8?B?NzZna0RFRXIxSmU4TVQwWHBWdkZBWDdJcFVlS1BSeHM0Q08rOVJncHBPQWNV?= =?utf-8?B?WGM5Mk9BcXRTZHdqdU9mandXU3dqMFc0eHNtdmhIOXNPRERsQUorL0pmR1E1?= =?utf-8?B?Z2tjZWpDOGV4azBycTczMHlVZEYyMk8xMGcrMHZhczBUcEZPVUtFVWNKZWdI?= =?utf-8?B?TGl0VlJHS1lWVHlKdkY5TDJFbElBQWRPUmpITlpqdEJXa3hGTUpXa2tod295?= =?utf-8?B?UmtBaFhiY3JhM2tqeXVnRzlPbUFsRm1uSFp5cWxxd3FYckMwUHlTZ0JySlN4?= =?utf-8?B?ZzFML1RrTlNHQ1BEakJIMFVQY0k4cmYrRHVXMDNoYUI1TjFuS2xLdmd4cDBl?= =?utf-8?B?dXMvWkRRY3pTN2xja1hYZ2o0LzFGa243eHVPMXZLdFFZZmVEeDVPaXZoY05j?= =?utf-8?B?WjVhL1R1MG5vYTZQRnA4ME9yQ1RhdmJrb1pCNFViRmZZY3g0L3J6TTUrWjJH?= =?utf-8?B?d3B6TFJRRWRCRlRqY3p2dnVLTGdQWTlMZCtySytGR0J2aVp2OURhcmF6eVhF?= =?utf-8?B?RzIxdVVEUkRTd3Vpa0J6UTl5SXJ4SUY4ZTlYbmt0OUlhd1RsMk1OUHlXb2Vo?= =?utf-8?B?OFoxWDh2R2hHc0dJMGtaMzZucGQvVHZFTjNTZit3OUNmLy8xaVR2ZFQyVFlL?= =?utf-8?B?UGtxbzBkMzZYSmVJZVkvMmFMUGR3VGpaM2hJUVdZZklURVhweWJaNjllSzcv?= =?utf-8?B?OVVoVzIzZjRFMUpzUGZ2WWZvek8yRlVIZksyTXU3MSsrL0QyZFZuRytDUjFU?= =?utf-8?B?a2VDQnR0L2tuS3p0dlJQT1Zycm9Wd2dxS3Fkalc0OVAwdWJma3pldm5Wb1ZR?= =?utf-8?B?UE1WeVp3WU1xMWhaOFN6KzNhY3BoU2d6UHY4WEgzciswNG1xeldWY2Y3VlRG?= =?utf-8?Q?qm8JVGWqULJqSxi/VT0LQqkitm0kXDvGQBbYQhC?= X-MS-Exchange-CrossTenant-Network-Message-Id: d1ef60f8-222a-43c5-cf22-08d90bf048dd X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2021 15:54:49.4129 (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: qPACY8ZNie7KxIh1iQZqkkvk8aFlTuFgrz+gudkqAY7yueQUbvEJACEek5XUBkyu6g2NL/dDNV4pQz+7YRRMyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB4602 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) Move the logic from xc_cpu_policy_apply_cpuid into libxl, now that the xc_cpu_policy_* helpers allow modifying a cpu policy. By moving such parsing into libxl directly we can get rid of xc_xend_cpuid, as libxl will now implement it's own private type for storing CPUID information, which currently matches xc_xend_cpuid. Note the function logic is moved as-is, but requires adapting to the libxl coding style. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Anthony PERARD --- Changes since v2: - Use LOG*D. - Pass a gc to apply_policy. - Use 'r' for libxc return values. --- tools/include/libxl.h | 6 +- tools/include/xenctrl.h | 30 ------- tools/libs/guest/xg_cpuid_x86.c | 125 -------------------------- tools/libs/light/libxl_cpuid.c | 142 ++++++++++++++++++++++++++++-- tools/libs/light/libxl_internal.h | 26 ++++++ 5 files changed, 165 insertions(+), 164 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index ae7fe27c1f2..150b7ba85ac 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1375,10 +1375,10 @@ void libxl_bitmap_init(libxl_bitmap *map); void libxl_bitmap_dispose(libxl_bitmap *map); =20 /* - * libxl_cpuid_policy is opaque in the libxl ABI. Users of both libxl and - * libxc may not make assumptions about xc_xend_cpuid. + * libxl_cpuid_policy is opaque in the libxl ABI. Users of libxl may not m= ake + * assumptions about libxl__cpuid_policy. */ -typedef struct xc_xend_cpuid libxl_cpuid_policy; +typedef struct libxl__cpuid_policy 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); diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index c6ee1142e8e..044d05321a3 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1864,32 +1864,6 @@ int xc_domain_debug_control(xc_interface *xch, =20 #if defined(__i386__) || defined(__x86_64__) =20 -/* - * CPUID policy data, expressed in the legacy XEND format. - * - * Policy is an array of strings, 32 chars long: - * policy[0] =3D eax - * policy[1] =3D ebx - * policy[2] =3D ecx - * policy[3] =3D edx - * - * The format of the string is the following: - * '1' -> force to 1 - * '0' -> force to 0 - * 'x' -> we don't care (use default) - * 'k' -> pass through host value - * 's' -> legacy alias for 'k' - */ -struct xc_xend_cpuid { - union { - struct { - uint32_t leaf, subleaf; - }; - uint32_t input[2]; - }; - char *policy[4]; -}; - 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); @@ -2617,10 +2591,6 @@ int xc_cpu_policy_make_compatible(xc_interface *xch,= xc_cpu_policy_t policy, int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t polic= y, bool hvm); =20 -/* Apply an xc_xend_cpuid object to the policy. */ -int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, - const struct xc_xend_cpuid *cpuid, bool hvm); - /* Apply a featureset to the policy. */ int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t poli= cy, const uint32_t *featureset, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index d00be5f757d..139aa91dd11 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -288,131 +288,6 @@ static xen_cpuid_leaf_t *find_leaf( return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leave= s); } =20 -int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, - const struct xc_xend_cpuid *cpuid, bool hvm) -{ - int rc; - xc_cpu_policy_t host =3D NULL, def =3D NULL; - - host =3D xc_cpu_policy_init(); - def =3D xc_cpu_policy_init(); - if ( !host || !def ) - { - PERROR("Failed to init policies"); - rc =3D -ENOMEM; - goto out; - } - - /* Get the domain type's default policy. */ - rc =3D xc_cpu_policy_get_system(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_d= efault - : XEN_SYSCTL_cpu_policy_pv_defa= ult, - def); - if ( rc ) - { - PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); - goto out; - } - - /* Get the host policy. */ - rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); - if ( rc ) - { - PERROR("Failed to obtain host policy"); - goto out; - } - - rc =3D -EINVAL; - for ( ; cpuid->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++cpuid ) - { - xen_cpuid_leaf_t cur_leaf; - xen_cpuid_leaf_t def_leaf; - xen_cpuid_leaf_t host_leaf; - - rc =3D xc_cpu_policy_get_cpuid(xch, policy, cpuid->leaf, cpuid->su= bleaf, - &cur_leaf); - if ( rc ) - { - ERROR("Failed to get current policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - rc =3D xc_cpu_policy_get_cpuid(xch, def, cpuid->leaf, cpuid->suble= af, - &def_leaf); - if ( rc ) - { - ERROR("Failed to get def policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - 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); - goto out; - } - - 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; - - if ( cpuid->policy[i] =3D=3D NULL ) - continue; - - for ( unsigned int j =3D 0; j < 32; j++ ) - { - bool val; - - switch ( cpuid->policy[i][j] ) - { - case '1': - val =3D true; - break; - - case '0': - val =3D false; - break; - - case 'x': - val =3D test_bit(31 - j, def_reg); - break; - - case 'k': - case 's': - val =3D test_bit(31 - j, host_reg); - break; - - default: - ERROR("Bad character '%c' in policy[%d] string '%s'", - cpuid->policy[i][j], i, cpuid->policy[i]); - goto out; - } - - clear_bit(31 - j, cur_reg); - if ( val ) - set_bit(31 - j, cur_reg); - } - } - - rc =3D xc_cpu_policy_update_cpuid(xch, policy, &cur_leaf, 1); - if ( rc ) - { - PERROR("Failed to set policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - } - - out: - xc_cpu_policy_destroy(def); - xc_cpu_policy_destroy(host); - - return rc; -} - xc_cpu_policy_t xc_cpu_policy_init(void) { return calloc(1, sizeof(struct xc_cpu_policy)); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 2489ceb49b8..318f3bd8599 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -298,7 +298,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *c= puid, const char* str) char *sep, *val, *endptr; int i; const struct cpuid_flags *flag; - struct xc_xend_cpuid *entry; + struct libxl__cpuid_policy *entry; unsigned long num; char flags[33], *resstr; =20 @@ -376,7 +376,7 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_li= st *cpuid, char *endptr; unsigned long value; uint32_t leaf, subleaf =3D XEN_CPUID_INPUT_UNUSED; - struct xc_xend_cpuid *entry; + struct libxl__cpuid_policy *entry; =20 /* parse the leaf number */ value =3D strtoul(str, &endptr, 0); @@ -426,6 +426,137 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_= list *cpuid, return 0; } =20 +static int apply_cpuid(libxl__gc *gc, xc_cpu_policy_t policy, + libxl_cpuid_policy_list cpuid, bool hvm, domid_t do= mid) +{ + int r, rc =3D 0; + xc_cpu_policy_t host =3D NULL, def =3D NULL; + + host =3D xc_cpu_policy_init(); + def =3D xc_cpu_policy_init(); + if (!host || !def) { + LOGD(ERROR, domid, "Failed to init policies"); + rc =3D ERROR_FAIL; + goto out; + } + + /* Get the domain type's default policy. */ + r =3D xc_cpu_policy_get_system(CTX->xch, + hvm ? XEN_SYSCTL_cpu_policy_hvm_default + : XEN_SYSCTL_cpu_policy_pv_default, + def); + if (r) { + LOGED(ERROR, domid, "Failed to obtain %s def policy", + hvm ? "hvm" : "pv"); + rc =3D ERROR_FAIL; + goto out; + } + + /* Get the host policy. */ + r =3D xc_cpu_policy_get_system(CTX->xch, XEN_SYSCTL_cpu_policy_host, h= ost); + if (r) { + LOGED(ERROR, domid, "Failed to obtain host policy"); + rc =3D ERROR_FAIL; + goto out; + } + + for (; cpuid->leaf !=3D XEN_CPUID_INPUT_UNUSED; ++cpuid) { + xen_cpuid_leaf_t cur_leaf; + xen_cpuid_leaf_t def_leaf; + xen_cpuid_leaf_t host_leaf; + + r =3D xc_cpu_policy_get_cpuid(CTX->xch, policy, cpuid->leaf, + cpuid->subleaf, &cur_leaf); + if (r) { + LOGED(ERROR, domid, + "Failed to get current policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + r =3D ERROR_FAIL; + goto out; + } + r =3D xc_cpu_policy_get_cpuid(CTX->xch, def, cpuid->leaf, cpuid->s= ubleaf, + &def_leaf); + if (r) { + LOGED(ERROR, domid, + "Failed to get def policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc =3D ERROR_FAIL; + goto out; + } + r =3D xc_cpu_policy_get_cpuid(CTX->xch, host, cpuid->leaf, + cpuid->subleaf, &host_leaf); + if (r) { + LOGED(ERROR, domid, + "Failed to get host policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc =3D ERROR_FAIL; + goto out; + } + + 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; + + if (cpuid->policy[i] =3D=3D NULL) + continue; + +#define test_bit(i, r) !!(*(r) & (1u << (i))) +#define set_bit(i, r) (*(r) |=3D (1u << (i))) +#define clear_bit(i, r) (*(r) &=3D ~(1u << (i))) + for (unsigned int j =3D 0; j < 32; j++) { + bool val; + + switch (cpuid->policy[i][j]) { + case '1': + val =3D true; + break; + + case '0': + val =3D false; + break; + + case 'x': + val =3D test_bit(31 - j, def_reg); + break; + + case 'k': + case 's': + val =3D test_bit(31 - j, host_reg); + break; + + default: + LOGD(ERROR, domid, + "Bad character '%c' in policy[%d] string '%s'", + cpuid->policy[i][j], i, cpuid->policy[i]); + rc =3D ERROR_FAIL; + goto out; + } + + clear_bit(31 - j, cur_reg); + if (val) + set_bit(31 - j, cur_reg); + } +#undef clear_bit +#undef set_bit +#undef test_bit + } + + r =3D xc_cpu_policy_update_cpuid(CTX->xch, policy, &cur_leaf, 1); + if (r) { + LOGED(ERROR, domid, "Failed to set policy leaf %#x subleaf %#x= ", + cpuid->leaf, cpuid->subleaf); + rc =3D ERROR_FAIL; + goto out; + } + } + + out: + xc_cpu_policy_destroy(def); + xc_cpu_policy_destroy(host); + return rc; +} + int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, libxl_domain_build_info *info) { @@ -541,10 +672,9 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, } =20 /* Apply the bits from info->cpuid if any. */ - r =3D xc_cpu_policy_apply_cpuid(ctx->xch, policy, info->cpuid, hvm); - if (r) { - LOGEVD(ERROR, domid, -r, "Failed to apply CPUID changes"); - rc =3D ERROR_FAIL; + rc =3D apply_cpuid(gc, policy, info->cpuid, hvm, domid); + if (rc) { + LOGD(ERROR, domid, "Failed to apply CPUID changes"); goto out; } =20 diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_int= ernal.h index 5709bcb93fa..d130c073ac4 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -2050,6 +2050,32 @@ typedef yajl_gen_status (*libxl__gen_json_callback)(= yajl_gen hand, void *); _hidden char *libxl__object_to_json(libxl_ctx *ctx, const char *type, libxl__gen_json_callback gen, void *p); =20 +/* + * CPUID policy data, expressed in the internal libxl format. + * + * Policy is an array of strings, 32 chars long: + * policy[0] =3D eax + * policy[1] =3D ebx + * policy[2] =3D ecx + * policy[3] =3D edx + * + * The format of the string is the following: + * '1' -> force to 1 + * '0' -> force to 0 + * 'x' -> we don't care (use default) + * 'k' -> pass through host value + * 's' -> legacy alias for 'k' + */ +struct libxl__cpuid_policy { + union { + struct { + uint32_t leaf, subleaf; + }; + uint32_t input[2]; + }; + char *policy[4]; +}; + _hidden int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retor= e, libxl_domain_build_info *info); =20 --=20 2.31.1