From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122216; cv=pass; d=zohomail.com; s=zohoarc; b=cFYsvZVzUFXWiuHn+/QFC/6u3qQg1BCHIIK5WK/FBo5QHvVTRvglf4jA/4kKgTeIuNpWLnSjRwaC5tWrgbbHa9NCZttnNQ/5oFWrWH462nFyCU6JLGc+5KZQjDgbCtv9EchKjhBo3+G0kDSA4L2BcWoTwNauMR9Bq8Ut//fdDT8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122216; 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=aaCmk4M/L7unxCL+YD/2t5w6edbf5MelChrqRkA5sMs=; b=RgBttVOoUP7gmRnXqptrGEYWsA4H3TeAj9bY3zgO6waIqcuZvQECAFxHqHQKhE9/DJntcyomGxRKJU5K1YO62oAkamUUrSypo0EUZ1adJzbzIHFXKCqKTMKK1++Urp4cSZ6atd3YERKecAgYT4i4rIrHSG0R0o9gV4Ec7Q/3VbU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122216399682.0954330118351; Tue, 25 Jan 2022 06:50:16 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260402.449815 (Exim 4.92) (envelope-from ) id 1nCN8t-0003Iu-7j; Tue, 25 Jan 2022 14:49:55 +0000 Received: by outflank-mailman (output) from mailman id 260402.449815; Tue, 25 Jan 2022 14:49:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN8t-0003In-4H; Tue, 25 Jan 2022 14:49:55 +0000 Received: by outflank-mailman (input) for mailman id 260402; Tue, 25 Jan 2022 14:49:54 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN8s-00033A-6k for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:49:54 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 0ca30aee-7dee-11ec-8fa7-f31e035a9116; Tue, 25 Jan 2022 15:49:52 +0100 (CET) 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: 0ca30aee-7dee-11ec-8fa7-f31e035a9116 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122192; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=8IcruUdw+PlzeWFNIE/jfRspWM79IBB39qmM/KGMn5M=; b=d9nMeSvwhVlyexnf0y+/QfuBIK8ccU2xFftT1mr3zkngDMiiR9eMBj+W 4Grcf3Rdbw/E1y7yi6zWOFz1ukWDnH3pZCGY0SyThHsGOdZNCgZGBIz7e 1m7S/8BCMCdogYQS5JxgvaLMFPI941naqjp0+3nG4DBQ30YheV5PCI4lN A=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: Z/Kt2vvQFpVphod2PF08kzkxhAUwHph9jhPXD+sH+/zezkE2yTBki5JXztOmkrJThNQ/O/Sym+ fUhPrrq11R+wSrOHAdnEMBrfiQk2bj2QlYNSqVKgBmJAFD5f5DeAc2VteEBX+a9VtTpmqM4Tc9 ulxWtBjjswrGV+gQF7HhQy1lbvLizjHp02qIQ5ww6A20UDGeLA3zg/CMpukqpifFD8uE3C32rz eOW2xyR0eOQXUVxPYwY00ZReZIBGuiHvNkvs6n7ZO/ZIpiNs74iYNvqct6FM3IP391St+HkBm/ dKzG9OawxLBPtUNw60KbanlT X-SBRS: 5.2 X-MesageID: 64879988 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:6LtEra+Gm1WbNX+ZvxerDrUDZnmTJUtcMsCJ2f8bNWPcYEJGY0x3n TNMD2vSPazfazH3et5ya96x9x8E7J6HzoUwG1RorXs8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhFWeIdA970Ug5w7dj39Yy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhXz 5YKm5aJFTtwAabXp6cgDRpoFBxXaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcGgGdv15EeTZ4yY eIUWTFfQRDsfiRCeWYrKYsvu7722ijGJmgwRFW9+vNsvjm7IBZK+KfpGMrYfJqNX8o9tkSSq 3/C/m/5KgoHL9HZwj2Amlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiFiD/VkyUeMML7QF4xqyiZeK4DaeO0FRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqSFo4LLUKjsjHi9dgcK RiupTN2ubgchNVjO06TrQGe2GLESnQko2cICuTrsoCNs1sRiG2NPdXABb3nARBodtrxor6p5 yBspiRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiD/JtgMsW4hehY4aq7onAMFh meJ5Wu9A7cIZBOXgVJfOdrtW6zGM4C+fTgaahwkRoUXOcUgHON21CpveVSRzwjQfLsEyskC1 WOgWZ/0Vx4yUP0/pBLvHrt1+eJ1mkgWmD2CLbimn0XP+efPPxa9FOZaWGZim8hktstoVi2Pr YYGXyZLoj0CONDDjt7/qN5KcgtSfCFlXPgbaaV/L4a+H+avI0l4Y9f5yrI9YY112aNTk+bD5 HamXUFEjlH4gBX6xc+iMRiPsZvjAsRyq2wVJyspMQr60nQve9/3vqwea4E2bf8s8+k6lax4S PwMesOhBPVTS2uYp2RBPMel9IEyJg62gQ+uPja+ZGRtdZBXWAGUqMTveRHi9XdSA3Pv59c+u bCpyijSXYEHG1Z5FM/TZf/2lwGxsHERlfhcRUzNJtUPKkzg/JIzc376j+MtItFKIhLGn2PI2 wGTCBYehO/Mv45qr4WZ2fHa99+kSrIsEFBbEm/X6aeNGRPbpmfzk5VdVOuofCzGUD+m8quVe ugIner3N+cKnQgWvtMkQapr1683+/Dmu6ReklZ/BHzOYlmmVuFgL32B0ZUdv6FB3OYE6w6/W 0bJ8dhGI7SZfsjiFQdJdgYia+2C09ASmyXTsqtpcBmruncv8erVS1hWMjmNlDdZfel8P44Sy Os8vNIbtl6kgR0wP9fa1i1Z+gxg9JDbv3nLYn3CPLLWtw== IronPort-HdrOrdr: A9a23:Xl4GF69gv/Lnt1tlNBxuk+FAdb1zdoMgy1knxilNoENuHfBwxv rDoB1E73LJYVYqOU3Jmbi7Sc29qBTnhOJICOgqTMqftWzd1ldAQ7sSi7cKrweQeREWs9Qtrp uIEJIOeeEYb2IK9PoSiTPQe71LoKjlzEnrv5al854Ed3AVV0gK1XYfNu/0KDwSeOEQbqBJa6 Z0q/A37AaISDAyVICWF3MFV+/Mq5nik4/nWwcPA1oC5BOVhT2lxbbmG1zAty1uHg9n8PMHyy zoggb57qKsv7WSzQLd7Xba69BzlMH6wtVOKcSQgow+KynqiCyveIN9Mofy9gwdkaWK0hIHgd PMqxAvM4Ba7G7QRHi8pV/X1wzpwF8Vmgnf4G7dpUGmjd3yRTo8BcYEr5leaAHl500pu8w5+L 5X3kqC3qAnQy/orWDY3ZzlRhtqnk27rT4JiugIlUFSVoMYdft4sZEfxkVIC50NdRiKp7zPKN MeTP002cwmMm9zNxvizytSKZ2XLzgO9y69Mwk/Upf/6UkSoJh7p3Fos/D30E1wsK7VcKM0lN gsBJ4Y4I2mfvVmHZ6VO91xM/dfcla9OS4kEFjiaGgPR5t3c04klfbMkcAIDaeRCds18Kc= X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="64879988" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kihhjx6NiEgBUz0gB6XKHxUw5C0AlQOts5kXnG7QNEYEHdV7O6OqyD6K/kpofOIcwLDQw3FK0YIOjGaZKC7BmlHwAMZ0HrXTXPZnXEvm6DM/yTJAuHIXi/V1vEFDLgPaMeMc4iw7DXuoQAuibNDd99Quy6GHXe/BEmCUd1zqrMxpURuo2dFL7xLwyZ1MZATjDK97j5cTmSrsGWheT61PnG79L8+ccFhPmgMfnKCWhIJJheMf30RixkjySLAKJRJjVH+LElDbDRWnQcVmBKWOdshOHETNolKwdQXL3w/KyZ/A/FTC4u0tz4NxCZAVZ+4HwulsYYpD/NTiW4yAF6Mxaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aaCmk4M/L7unxCL+YD/2t5w6edbf5MelChrqRkA5sMs=; b=nOXh4epEZT/KLHyhbHJ5vtkibw0cdVvlFC2U0/diHYHrkHZHfdz9PNT3BBsqhizg+QtSp5g0Ne3aPyCyPW0ywnkJi2yNuuE8cUrVJjrA/CQRB3sDLDJ035m/mnKdwMjQIOrBFbmHLs76NOIARIGv0611kDhmpUgENXMyTIbBeJRlgrHdT030cFNjlfdo2hrP0Giy1WTERQ6JM2St4VdLLoFVUBD3LNS70X3MXWVtl2b3/QiY8BTDi8ejACQYitxVASszkKYW1Cv0nW4xrxUFxVfS7jnbYicwrHfANHZ8gOfuKMCVKWaQ2ktpgduuPZjcd/Sm/cMJ1216amYIM0E2nQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=aaCmk4M/L7unxCL+YD/2t5w6edbf5MelChrqRkA5sMs=; b=VGL/IO0PEoHRyadAzhZW+BhNt3MUQS8yuGTLKrm0AYNdmEHuSn4QwQK9YbdsuIDcNXfwF5BI3EB9wxSdo6O4aNMFuD/2lY/jdnbpOupPdgcfQtX0/79fKysYkxZOfvUEuLBlMCXlxGm2WsO3h16VAkwnGgfxVlB9bxuxBDZlXuk= From: Roger Pau Monne To: CC: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu , Anthony PERARD Subject: [PATCH v7 01/11] libx86: introduce helper to fetch cpuid leaf Date: Tue, 25 Jan 2022 15:49:25 +0100 Message-ID: <20220125144935.44394-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0044.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500::32) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7f2a2ba7-03dc-45de-6804-08d9e011eed1 X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:359; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E8xBhjA0/M5idWnzVIfbCTP7/qal0/s1mjng3Rfu2N8/y5igl5wV6oBI5UeqytfPdT5gdB7L8U7EIuWRU/GcENh3+N8tjn/2T9/lWPd7nJSsPVMUpTqMQNHZmPSHvxJnlijHVUmCBPmDx814RuUP/WlWPKaFUu6R2nvHtLwoGgWgTlIaAJSObRtLg+6ZQ8YXcjVKgFISAv6aFxnXxVv6iKBeCYsU9a/ozerHIv4J2cwQfp4JHPmIa3o4Up3pnnVh3dIZWGiQW6xItOGv3iVk0DmzFdGxW31aMVPPeEjqXDGzPoBn7HIlqJtuWFZJYKpZGnuIRZ2ircaTHB38nyZ0eNGDu+U9vxvY23+Ta4KMl4ST852s6eGcRfzuH8h0NTSTyGLzeRn5jeTcJcugr2PNJKNRSSZHoHkCohSN12G9ytwo3O9cl3MBl9Ypp3iaWkjnn1x9lfZp4PNH8OGn3Q204xXfpDdPVN+aFbEwMmfwYwH6dWtISkUcGXIjDkyznMnlcizURAuKey72fBQq3dtwvGOc2Ta9oHj873xmBtnts9l5X/I8LE7G55DsOqksya3l2iti/aivPwPrkxChWWP704kpN538rNssSq0UBQlkMXYvMcWH0Nidhe9fSvE//iugb++cOfemSzHYNtlnzRypUw== 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)(4326008)(8676002)(30864003)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(107886003)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TGx2V3JqTFBxOTNmS2NPR2IvNzZZRkVUZjBzY29MRndZbzdSKzNxTFJ2N0Fw?= =?utf-8?B?T016KzdwK3J5bmhTNUlpeThEcEY1cEo3anVCSkdXYlNVVGlNbmFrVk1jUlR3?= =?utf-8?B?Yk10YjVVN0NUWkJQVHNUTzNmR2EwODAxMHBtNWJtV2VkeG5wc0Rmb0ZIbUh6?= =?utf-8?B?SVVCN2U5cTl4QjFaNHJpK3F1aTFmRlZjZjkxMFU3b01CdGNxa1IrbjI2dGJV?= =?utf-8?B?QjkrcDBMa09mQmNtelg0cVVuZ01VcDNwK0llSlBVZ29KdUF6eDcxQVBTK3hN?= =?utf-8?B?ektvanBCQy9nQ0pXRENTRmRnWW54WjFiKzMxSm5KdmVQUkp6RDBlVlpnazEx?= =?utf-8?B?ZXk1SUZGTHQ2dk1VbkRpS0ZxRk5DU1VHcTlXOGhpeHl0QzAzN20vSEx6ODg0?= =?utf-8?B?Mnk0Tm9TdjdSZ01idkxDK01NUjlsOHRxSDlKdGcwTlhUcHE1cHU2cU5ZWVlI?= =?utf-8?B?aU5LMS8vdkNGMGgvVjR2YUJqY1p6RjhPRlFHM2FwSmhEZUxJV3lnL0hQbTQw?= =?utf-8?B?L2dQUmF3RmljUFJML2lHcXk5bm9jYmpLdUF1OGZzaGNGeW1oYm8ycnc1Q1Ax?= =?utf-8?B?UUM2YkRIQVFicEJxbDdITkQ0TTUzenRsQ1U2dkR6ZUR2WXNhVjQ5SlNrelV3?= =?utf-8?B?b044ZEQvTE5VdytMbFluNWN0U1JWNHFYbmNuN0krODgxRG54b0RDWUlDTmtJ?= =?utf-8?B?dzYwVmhGN3d6TzM2emFnV0lIVk96MnZkRFNjOTJUL2RZcFIxN1VoNmdIdmlG?= =?utf-8?B?QjdHZzNiQ1ovTDA2MU95cHFKcE9NSGEwZVF3YWhLby9wdThtR0xwdUNGUmIv?= =?utf-8?B?NXFFcDZPUThzT3Z1YjR6a0pSRlRCK09JY2dsdk4wN2pFNWNmRkVQZjRuZXR0?= =?utf-8?B?M1JWVHU2Ulc1aXRzcm1uUVhJVWZiQjlOSHZRTi9ucnFpajBRelNEMllGNE5J?= =?utf-8?B?L0Y5QVBrUFcwSUdjUGs2eEdVaGl1TFUxbHVHUE9RTUtQTTA2T2lQQ25mcHFj?= =?utf-8?B?MXo2YUhza3MveWdSbko2STg2VGNMOEN6ZXdxZVNjd1ZtRWUwdk9IZHo1WkdY?= =?utf-8?B?OTlLbjNUa3kwakQ2NUIzQTQ5UXVuZitHS2JiN3Babnl3N016TkVraCs0dWVN?= =?utf-8?B?UjJWaGMzUTl1c09jamM2SCtBS1NieVlLMGI4bmtDTEI4UE54TjIraHBrSVZP?= =?utf-8?B?TlFXcUVLVmRNY0pZN0ZqSXA2RXpzR0h2dEswTUFzalJ6VWc5SFRoUFFxV091?= =?utf-8?B?WU5UZ0JCakt0R25iTFRiaTFCNzJ2NHhObTE5bTdoOHd2TFFaTHd1dndyZzhD?= =?utf-8?B?YTlaWkVxR3hRcS9nL3JIMWVnWEQvdU9ha3pnSmFSUkR5QlJHVEZDcTFPT3gy?= =?utf-8?B?MHdqWFkrYnkxbXR3VnY4SVFnODFhWmE2MmlENEdEVDkxT0dKYUR6RVVNYjg3?= =?utf-8?B?b1AvVFR2dnM4Q3BoT0FjOTJ4SUFYS2U3WWpjSFBWQUNjdWU0WE9CMVY3OFJP?= =?utf-8?B?ZDBSVTJSR2V6ZWxadVVFZUtIRFBINEgyYWwrN2hxNUphOHdCaGVUd1VkM1l0?= =?utf-8?B?TnV1WFN5MWUrbnJkZGNIVlU5Lzl6eFNYVGJqaWxrS1RFQi9UQmUvZkEvT21R?= =?utf-8?B?amd4T2pjdkJXR2JUR2Q5bE9wcHBOb0V4ZlhoUzlEa1dUd0xLRHFiTlR4TDdM?= =?utf-8?B?ZVBpbytpMm4rVXFhMXB2Mi90T2ZvV0ovRHJIM1V1bTVtRTlpU1ljalNUY2xO?= =?utf-8?B?S1BheFNZeDhXaWQwazJCaUtxZDVlKzl0TFg2REF1ZmhTeTRtYUt0eDVsTE94?= =?utf-8?B?bmRyTjFyakJXVmpydk9GdzZVVlNhSHVKNjg0Nzh4UU8xUk14d3hUZTQvODZ5?= =?utf-8?B?RU1HajVjcFEvcFpIUjBGWkxFTDVzUmNYdFN5Zm1QNUZxd0dXV3RtYll6U3Nt?= =?utf-8?B?WUF1K21zdkZ2SU1SR2h4QnVGaythbU54d2Z0Y01CLzNkNDdKSGpxVG5PQ3dC?= =?utf-8?B?N1ZDYWtlbHl5bGc3RVV2ZVdpM1k0QTh4U1dwd1FBZXg4SHA0MVdyUGg2amgz?= =?utf-8?B?clJTZnQ5L3ZRa2VhYzdIY1F4c0F2N0J1NU50bzZMQkFqUU90MUZseEdWTVRw?= =?utf-8?B?ekh4SkVmYUVEY2ZYMWlWN1VkNElleS9uUEU0U1ZRTW9vY2lmNVlIdjhJVmFC?= =?utf-8?Q?mQOCeryjcUlAJhc6iA5f3wk=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7f2a2ba7-03dc-45de-6804-08d9e011eed1 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:49:47.7746 (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: Z3H5NdIgaZ3f+jYVrNEon0FzjczZ+LcR0XLa0whggN0ngYKUlC7YbEoHdLp3lWJRnR0PBTiQXyD5pJhJ1+80NA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122219385100003 Introduce a helper based on the current Xen guest_cpuid code in order to fetch a cpuid leaf from a policy. The newly introduced function in cpuid.c should not be directly called and instead the provided x86_cpuid_get_leaf macro should be used that will properly deal with const and non-const inputs. Also add a test to check that the introduced helper doesn't go over the bounds of the policy. Note the code in x86_cpuid_copy_from_buffer is not switched to use the new function because of the boundary checks against the max fields of the policy, which might not be properly set at the point where x86_cpuid_copy_from_buffer get called, for example when filling an empty policy from scratch. Suggested-by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v6: - Add more tests. - Drop Jan R-b. Changes since v4: - Rename _x86_cpuid_get_leaf to x86_cpuid_get_leaf_const. Changes since v3: - New in this version. --- tools/tests/cpu-policy/test-cpu-policy.c | 177 +++++++++++++++++++++++ xen/arch/x86/cpuid.c | 55 +------ xen/include/xen/lib/x86/cpuid.h | 19 +++ xen/lib/x86/cpuid.c | 52 +++++++ 4 files changed, 255 insertions(+), 48 deletions(-) diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-pol= icy/test-cpu-policy.c index ed450a0997..09e4b5f528 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -570,6 +571,180 @@ static void test_cpuid_out_of_range_clearing(void) } } =20 +static void test_cpuid_get_leaf_failure(void) +{ + static const struct test { + struct cpuid_policy p; + const char *name; + uint32_t leaf, subleaf; + } tests[] =3D { + /* Test for invalid configurations in the object itself. */ + { + .name =3D "Basic max leaf >=3D array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC, + }, + }, + { + .name =3D "Feature max leaf >=3D array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT, + }, + .leaf =3D 0x7, + }, + { + .name =3D "Extended max leaf >=3D array size", + .p =3D { + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD, + }, + .leaf =3D 0x80000000, + }, + + /* Test out-of-bounds checks in the accessor. */ + { + .name =3D "Basic leaf >=3D max leaf", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D CPUID_GUEST_NR_BASIC, + }, + { + .name =3D "Cache leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0x4, + .subleaf =3D CPUID_GUEST_NR_CACHE, + }, + { + .name =3D "Feature leaf >=3D max leaf", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT - 1, + }, + .leaf =3D 0x7, + .subleaf =3D CPUID_GUEST_NR_FEAT, + }, + { + .name =3D "Extended Topo leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0xb, + .subleaf =3D CPUID_GUEST_NR_TOPO, + }, + { + .name =3D "Xstate leaf >=3D cache array size", + .p =3D { + .basic.max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + }, + .leaf =3D 0xd, + .subleaf =3D CPUID_GUEST_NR_XSTATE, + }, + { + .name =3D "Extended leaf >=3D max leaf", + .p =3D { + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD - 1, + }, + .leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD, + }, + + /* Test fetching Xsave without present. */ + { + .name =3D "Fetch Xsave without present", + .p =3D { + .basic =3D { + .max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .xsave =3D false, + }, + }, + .leaf =3D 0xd, + }, + + }; + const struct cpuid_policy pc =3D {}; + const struct cpuid_leaf *lc; + struct cpuid_policy p =3D {}; + struct cpuid_leaf *l; + + /* Constness build test. */ + lc =3D x86_cpuid_get_leaf(&pc, 0, 0); + l =3D x86_cpuid_get_leaf(&p, 0, 0); + + printf("Testing CPUID get leaf bound checking:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + const struct cpuid_policy *p =3D memdup(&t->p); + + if ( x86_cpuid_get_leaf_const(p, t->leaf, t->subleaf) ) + fail(" Test %s get leaf fail\n", t->name); + } +} + +static void test_cpuid_get_leaf(void) +{ + static const struct cpuid_policy policy =3D { + .basic =3D { + .max_leaf =3D CPUID_GUEST_NR_BASIC - 1, + .xsave =3D true, + }, + .feat.max_subleaf =3D CPUID_GUEST_NR_FEAT - 1, + .extd.max_leaf =3D 0x80000000 + CPUID_GUEST_NR_EXTD - 1, + }; + static const struct test { + const char *name; + uint32_t leaf, subleaf; + size_t offset; + } tests[] =3D { + /* Test fetch different leaves. */ + { + .name =3D "Fetch basic leaf", + .offset =3D offsetof(struct cpuid_policy, basic.raw[0]), + }, + { + .name =3D "Fetch cache leaf", + .leaf =3D 0x4, + .offset =3D offsetof(struct cpuid_policy, cache.raw[0]), + }, + { + .name =3D "Fetch feature leaf", + .leaf =3D 0x7, + .offset =3D offsetof(struct cpuid_policy, feat.raw[0]), + }, + { + .name =3D "Fetch Topo leaf", + .leaf =3D 0xb, + .offset =3D offsetof(struct cpuid_policy, topo.raw[0]), + }, + { + .name =3D "Fetch Xstate leaf", + .leaf =3D 0xd, + .offset =3D offsetof(struct cpuid_policy, xstate.raw[0]), + }, + { + .name =3D "Fetch extended leaf", + .leaf =3D 0x80000000, + .offset =3D offsetof(struct cpuid_policy, extd.raw[0]), + }, + }; + const struct cpuid_policy *p =3D memdup(&policy); + + printf("Testing CPUID get leaf:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + const struct cpuid_leaf *l =3D x86_cpuid_get_leaf_const(p, t->leaf, + t->subleaf); + + if ( l !=3D (const void *)p + t->offset ) + fail(" Test %s get leaf fail\n", t->name); + } +} + static void test_is_compatible_success(void) { static struct test { @@ -685,6 +860,8 @@ int main(int argc, char **argv) test_cpuid_serialise_success(); test_cpuid_deserialise_failure(); test_cpuid_out_of_range_clearing(); + test_cpuid_get_leaf_failure(); + test_cpuid_get_leaf(); =20 test_msr_serialise_success(); test_msr_deserialise_failure(); diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c index b5af48324a..0407a54626 100644 --- a/xen/arch/x86/cpuid.c +++ b/xen/arch/x86/cpuid.c @@ -825,48 +825,16 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf, switch ( leaf ) { case 0 ... CPUID_GUEST_NR_BASIC - 1: - ASSERT(p->basic.max_leaf < ARRAY_SIZE(p->basic.raw)); - if ( leaf > min_t(uint32_t, p->basic.max_leaf, - ARRAY_SIZE(p->basic.raw) - 1) ) - return; - - switch ( leaf ) - { - case 0x4: - if ( subleaf >=3D ARRAY_SIZE(p->cache.raw) ) - return; - - *res =3D array_access_nospec(p->cache.raw, subleaf); - break; - - case 0x7: - ASSERT(p->feat.max_subleaf < ARRAY_SIZE(p->feat.raw)); - if ( subleaf > min_t(uint32_t, p->feat.max_subleaf, - ARRAY_SIZE(p->feat.raw) - 1) ) - return; - - *res =3D array_access_nospec(p->feat.raw, subleaf); - break; - - case 0xb: - if ( subleaf >=3D ARRAY_SIZE(p->topo.raw) ) - return; - - *res =3D array_access_nospec(p->topo.raw, subleaf); - break; - - case XSTATE_CPUID: - if ( !p->basic.xsave || subleaf >=3D ARRAY_SIZE(p->xstate.raw)= ) - return; + case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: + { + const struct cpuid_leaf *tmp =3D x86_cpuid_get_leaf(p, leaf, suble= af); =20 - *res =3D array_access_nospec(p->xstate.raw, subleaf); - break; + if ( !tmp ) + return; =20 - default: - *res =3D array_access_nospec(p->basic.raw, leaf); - break; - } + *res =3D *tmp; break; + } =20 case 0x40000000 ... 0x400000ff: if ( is_viridian_domain(d) ) @@ -881,15 +849,6 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf, case 0x40000100 ... 0x400001ff: return cpuid_hypervisor_leaves(v, leaf, subleaf, res); =20 - case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: - ASSERT((p->extd.max_leaf & 0xffff) < ARRAY_SIZE(p->extd.raw)); - if ( (leaf & 0xffff) > min_t(uint32_t, p->extd.max_leaf & 0xffff, - ARRAY_SIZE(p->extd.raw) - 1) ) - return; - - *res =3D array_access_nospec(p->extd.raw, leaf & 0xffff); - break; - default: return; } diff --git a/xen/include/xen/lib/x86/cpuid.h b/xen/include/xen/lib/x86/cpui= d.h index a4d254ea96..050cd4f9d1 100644 --- a/xen/include/xen/lib/x86/cpuid.h +++ b/xen/include/xen/lib/x86/cpuid.h @@ -431,6 +431,25 @@ int x86_cpuid_copy_from_buffer(struct cpuid_policy *po= licy, uint32_t nr_entries, uint32_t *err_leaf, uint32_t *err_subleaf); =20 +/** + * Get a cpuid leaf from a policy object. + * + * @param policy The cpuid_policy object. + * @param leaf The leaf index. + * @param subleaf The subleaf index. + * @returns a pointer to the requested leaf or NULL in case of error. + * + * The function will perform out of bound checks. Do not call this function + * directly and instead use x86_cpuid_get_leaf that will deal with both co= nst + * and non-const policies returning a pointer with constness matching that= of + * the input. + */ +const struct cpuid_leaf *x86_cpuid_get_leaf_const(const struct cpuid_polic= y *p, + uint32_t leaf, + uint32_t subleaf); +#define x86_cpuid_get_leaf(p, l, s) \ + ((__typeof__(&(p)->basic.raw[0]))x86_cpuid_get_leaf_const(p, l, s)) + #endif /* !XEN_LIB_X86_CPUID_H */ =20 /* diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c index 8eb88314f5..924f882fc4 100644 --- a/xen/lib/x86/cpuid.c +++ b/xen/lib/x86/cpuid.c @@ -493,6 +493,58 @@ int x86_cpuid_copy_from_buffer(struct cpuid_policy *p, return -ERANGE; } =20 +const struct cpuid_leaf *x86_cpuid_get_leaf_const(const struct cpuid_polic= y *p, + uint32_t leaf, + uint32_t subleaf) +{ + switch ( leaf ) + { + case 0 ... CPUID_GUEST_NR_BASIC - 1: + if ( p->basic.max_leaf >=3D ARRAY_SIZE(p->basic.raw) || + leaf > p->basic.max_leaf ) + return NULL; + + switch ( leaf ) + { + case 0x4: + if ( subleaf >=3D ARRAY_SIZE(p->cache.raw) ) + return NULL; + + return &array_access_nospec(p->cache.raw, subleaf); + + case 0x7: + if ( p->feat.max_subleaf >=3D ARRAY_SIZE(p->feat.raw) || + subleaf > p->feat.max_subleaf ) + return NULL; + + return &array_access_nospec(p->feat.raw, subleaf); + + case 0xb: + if ( subleaf >=3D ARRAY_SIZE(p->topo.raw) ) + return NULL; + + return &array_access_nospec(p->topo.raw, subleaf); + + case 0xd: + if ( !p->basic.xsave || subleaf >=3D ARRAY_SIZE(p->xstate.raw)= ) + return NULL; + + return &array_access_nospec(p->xstate.raw, subleaf); + } + + return &array_access_nospec(p->basic.raw, leaf); + + case 0x80000000 ... 0x80000000 + CPUID_GUEST_NR_EXTD - 1: + if ( (p->extd.max_leaf & 0xffff) >=3D ARRAY_SIZE(p->extd.raw) || + leaf > p->extd.max_leaf ) + return NULL; + + return &array_access_nospec(p->extd.raw, leaf & 0xffff); + } + + return NULL; +} + /* * Local variables: * mode: C --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122220; cv=pass; d=zohomail.com; s=zohoarc; b=GYbqNLogQUqnY37fObn02A1yzWlqhyI33Krn6TTtZZvqqSDvCtqppLyH+aK1RHrSd9N6d+fm0dobo03xihK8nZsedkb9wMlzBF/QW2Rp25PoZZDn/m4LhcV9jB6qQcI8P/85BQ09luDFEEopLm3IGJaMeEvIhujTCUzWZH4Ices= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122220; 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=KZ0k7g5jZeIdNY9/Tfsnttg1bIIKhfsWZFaLo0n4ZLI=; b=OwEQ0ztP2fGgz6vWzslmgUt2TVUDD+Z7f7katx8o3fw6UBad47Yoa9NCMRIryCjvQhjFN8ruNipyOfcGcWXTW/Wj56Wu0DEzKNwLywVjDWYdWBu2j70vSzphVpmxXbQ23XdIedp5J1gQixn1EXhqMPalNnGAH48MsOitqkUkOHk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122220857528.4121526729996; Tue, 25 Jan 2022 06:50:20 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260403.449825 (Exim 4.92) (envelope-from ) id 1nCN8z-0003hb-L3; Tue, 25 Jan 2022 14:50:01 +0000 Received: by outflank-mailman (output) from mailman id 260403.449825; Tue, 25 Jan 2022 14:50:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN8z-0003h2-Hl; Tue, 25 Jan 2022 14:50:01 +0000 Received: by outflank-mailman (input) for mailman id 260403; Tue, 25 Jan 2022 14:49:59 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN8x-000334-Jk for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:49:59 +0000 Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id f7a9aab0-7ded-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:49:17 +0100 (CET) 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: f7a9aab0-7ded-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122198; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=VpIw3Iq9GpeagSxrveN9vHOVlpdiutzDZnZ/jcnm40M=; b=QMnwJdTN6254+JHPxTy5BI2aAUgWXZJvrw5Dwalf3QhRcmp0ykiyEqJo I5huauGS9or1XvT+WNfcRPD4dM3C8bppYxVPnAyMkNsedVjqAlUXuX3QO 0HJEQozCr7YGDoZPb71tfSKgChpQpxVLKmVebtVPCaUkCiU8fVOh9qfeR E=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: KutWxlx6cZDbxosUtTTMvCbcP+A817KsCd+UKyrif3/SBhSu04DB5S1Pk/77mG4Ad8hWr+Uwpv c2XAna6ZZzRlCeYf0WRXzVcxCmKo9HQ0cP/DjTIC8mg4U3e67gW2fuFk2G5q5qKKH7fPY9XQpe qwoQ6bPZ5UaJXnI/S2JBjfqf0yFTAjI8ZI4nRDp6ucAG3vNdbXQ7QKScOLjVejTs5+dZtlC/G8 QbihNus5HrwoYltSI5ijnrM11RbNxshHPW9j0JMpTZkG/DN+hruirG2/MTqyHVrLAD5LbF7iM7 SYHcLFvPW9S3BYAhiawwqgZ+ X-SBRS: 5.2 X-MesageID: 62186664 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:n1K4vK+PyaFYpYv+kpBeDrUDcXmTJUtcMsCJ2f8bNWPcYEJGY0x3x jMWWD2AM/+IZGSgfIolad60/RsCu5eBmtExGQVk/no8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhFWeIdA970Ug5w7dj39Yy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhh7 /pd77uJQD4iN/T9k/szUDZ0Ky1haPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcGhm5g2J4QQZ4yY eIHNTFSNEvHPCYWYHkaNM8Clu61gnDWJmgwRFW9+vNsvjm7IBZK+LriKt3OYfSRWN5Y2E2fo wru/W70HxUbP9y30iee/zSngeqntTP2XsceGaO18tZugUaP3SoDBRsOT1y5rPKlzEmkVLp3N Eg86ico668o+ySWosLVBkPi5iTe51hFBoQWQ7ZSBByxJrT88yG2FjIjdzd4Y9V/hcQpaz8F+ meFgIa8bdBwi4G9RXWY/7aSiDq9PykJMGMPDRM5oRs5D8rL+99q0E+WJjp3OOvs14CuR2msq 9yfhHVm390uYdg3O7JXFLwtqxalvdD3QwE8/W07tUr1v1oiNOZJi2FFgGU3DMqszq7EFjFtX 1BewqByCdzi67nXyERhp81WRNmUCw6tamG0vLKWN8BJG86R03CiZ5tMxzp1OV1kNM0JERewP hOI4V8Au8ANbSryBUOSX25XI552pUQHPY+9Ps04k/IUOsQhHON51H8GibGsM5DFzxF3zPBX1 WazesewF3cKYZmLPxLtL9rxJYQDn3hkrUuKHMiT503+jdK2OSDJIZ9YbgrmRr1pvcus/VSOm /4CZpTi9vmqeLCkCsUh2dRNfQliwLlSLc2elvG7gcbaclM5QzlwUqGIqV7jEqQ895loei7z1 ijVcmdTyUblhG2BLgOPa3t5b6joU4o5pnU+VRHA937ys5T6SYrwvqoZabUterwrqL5qwfJuF qFXcMScGPVfDD/A/m1FP5X6qYVjcjWthB6PYHX5MGRuIcY4Slyb4MLgcyvu6DIKUni9u/whr uDyzQjcW5cCGVhvVZ6EdPK1wlqtlnEBg+YuDVDQK9xedRy0oohnIiD8lNEtJMQIJUmRzzeWz V/OUxwZufPMs8k+99yQ3fKIqIKgEu1fGEtGHjaEsebqZHeCpmf6mN1OSueFezzZRVjYwqT6a LUH1ez4Pd0GgE1O79h2HYF0wP9s/NDovbJbkFhpRS2Zc1SxB7p8CXCaxs0T5LZVz7pUtAbqC EKC/t5WZeeANM//SQNDIQMkaqKI1O0OmymU5vMweR2o6Chy9buBcENTIxjT13ANcOoraNsok bU7pcobyw2jkR57YN+Jgxdd+3mIMnFdAb4ssYsXAdOzhwcmor2YjUcw1sMiDEmzVuhx IronPort-HdrOrdr: A9a23:YRZN+6uFYIXx8MelPqwtpia+7skC7oMji2hC6mlwRA09TyXGra +TdaUguSMc1gx9ZJhBo7G90KnpewK5yXcT2/hsAV7CZniahILMFu9fBOTZslvd8kHFh4xgPO JbAtND4b7LfClHZKTBkXCF+r8bqbHtmsDY5ts2jU0dNz2CA5sQkTuRYTzrdXGeKjM2YKbQQ/ Gnl7V6TnebCD8qR/X+IkNAc/nIptXNmp6jSRkaByQ/4A3LqT+z8rb1HzWRwx9bClp0sPof2F mAtza8yrSosvm9xBOZ/2jP765OkN+k7tdYHsSDhuUcNz2poAe1Y4ZKXaGEoVkO0auSwWdvtO OJjwYrPsx15X+UVmapoSH10w2l6zoq42+K8y7vvVLT5ejCAB4qActIgoxUNjHD7VA7gd162K VXm0qEqpt+F3r77WrAzumNcysvulu/oHIkn+JWpWdYS5EiZLhYqpFa1F9JEa0HADnx5OkcYa ZT5fnnlbZrmG6hHjPkVjEF+q3vYp1zJGbLfqE6gL3V79AM90oJinfxx6Qk7wA9HdwGOt15Dt //Q9dVfYd1P7srhJJGdZc8qPSMex7wqGr3QRqvyHTcZeg60iH22tbKCItc3pDeRHVP9up0pK j8 X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62186664" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DlMh7iq6qrR0Jc28xd8xMJqvfVnuOvcqUypXjCjrjUf1xWuUspXySDMC4dZtmfd7iKz/7m+1hvQqMw0t0PF3JyFZerGVD2F812omdQOd9aLFK+zaG2wIg81AU07HjfEnpmriifcVSfccSohIBmOB3rWBVSFOjE5LFcoJzHtSXMEnmZS1q2F7Ruu9bnifpObs5AqzOjSe00sWEws+2GBhHiOi1dNK5fDRCyGXfuE5g7kJ7tDdV4vqt04KC7FdOzlZfEDHsedzPU7j7+eEPyt+Pl9NTUtsqwMS4qi9zlmRI7mtHPNIlTJhCtoIr/LfXK+8vcYQIOMXKA9TAUgCh1VPgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KZ0k7g5jZeIdNY9/Tfsnttg1bIIKhfsWZFaLo0n4ZLI=; b=oahEqM1ilqGjNxMj8Rx0iBTC3DdEhW53Kvoocyu87tzeVNBLrd92OZWF2xgch6wahm2x6cDSyTRf5/E0zjAlnSjar2TQ1ZEvxbF1+1ZLZfdSc9p3PZ0E+P0NStRSYkT96LaRAzAU7CYF8pnP+33EIsKp8vdkh1yzxYf4/sGj27b0//fuYgbw/pFQkloIOJLAwMN0f0laG9rx9QTftzO69JeAguhstCQ2uYQbW2vfO/jp1DfkRtdCJnqz9sndnF9HV0g5glp36WoXy2DA5zNs+K2I3IdG2DastMy/jcMwVGSRLHMBrZze/Da1WovAnVc9jou9bp5Q0tCjwvzLVPy+MA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=KZ0k7g5jZeIdNY9/Tfsnttg1bIIKhfsWZFaLo0n4ZLI=; b=V3DvSRB+QwN+NYGxiAbCYufEA57OYRVu14/GH4ZPgd1OYI+s9Oa8S+VbQs8b/jcBJl+ehhRTPnZ2QoUF/+9TGfYuIzIe/RAFIemQA8JoUUuSTIYpmUI60ea5fwTNoQBwrv9TT2mQSQfNg9pbrMSQu1IaeF06dbgk5WplnAkVN1Y= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich Subject: [PATCH v7 02/11] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Date: Tue, 25 Jan 2022 15:49:26 +0100 Message-ID: <20220125144935.44394-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0031.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500::19) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a563ffa1-de73-47f5-b150-08d9e011f21d X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GRJtmmYiCiNso+noPRCHq1mcwjsayI1NpwyOhhpnmTtQMqXsoGiWltuni/XaPmr86i9zObKlPwaErIOrx5c/UoSrH3OrxclskJ0RNig9aXhLEvbIUGGnMPiO4IGQeis0yQp6uhYUueaL3ILt2hcSt4PXNEqwfK7N+OeUxHuXrfevExGgEXuCZYFhy8yNRsWWVSIt3dSOemrGsHS6EMCOAAlWMrENOyq8aQmwZ4PpU4FnBGpzVs4ZmIfhEYrRoB9AOzOZC4GIcnLnJOwtmov0W1B8SOtsmOMF2Fm6LVabSMhb6pvZYj5Htao4JDLVRXxPOsU3PpbbE7glo3BtqCsslRjKblWvRG8bZwivBQqmVa3nwclOUT4vgHuHVfNK3rDRXces+5D9pMZX0BtJc9xwOfO1vI8E6YWgm5nQIgXokhLWKRfA0aBYj23z4Pv/wWyWSDB30GreaeRiFkRVf9+QmDVFuPRaCoyBz4CD47am78PBQowwb0WFyVQ58y8zDIeIhjD7Wy4fMp04XREw/RPEeqjYlJHXhl6eCKMDEWddJ18bgwFaScziaYnk9XTSeayjwdfxZ9JmXD9M7HlgfrvoHXarNOtj4vzx+NkMXLAep+vIBugPJWJLkmzvFczCNW/y2kcR1RVdAbAy/68p5vJCbQ== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z0VFblRGWkcxUVlpb0FpUTNpL3VGck9XYjdnKzlKSXhzRFhpVXhvMXRiZm41?= =?utf-8?B?ZVVHNTlvNVJYWVM1RkFSN2JQSDBQTExFaDJ6RCsxRVJieU1yNDlUWG5EZmZZ?= =?utf-8?B?SStGOXNnQkVQd2JNYU1sSnBqOEdYTnVHODN2amhWSEVjQUIyUEwrMDh2cUZG?= =?utf-8?B?SUtsa3BlcjNEeWwvTHdKRm9QMjRNS0ZFcURnSTdzb1h0TkRIZm9sQ3ZYVUxB?= =?utf-8?B?VVhKNVk5c2FEOUNKQThhYVI4MVF6ZmllSGZXZU5OdGpHd1hIRHRiVmxvb0NT?= =?utf-8?B?OXBGNmhSV0RWaHpyRnZmcmhEZmFucURPNWdJam03UWk3M3NWK3BjTWdEOUpn?= =?utf-8?B?SWdFdXZNbW82eFk4YVZXT3Y4bGFjUmQxODJHeUpnaWZFR3dYRDFmZHFRTndi?= =?utf-8?B?U2prMEhrcm1JdUdVMlBlQW9OcDJ5NzNWdU9GNHgrcXhJYnlnRHdObFp3VkZ4?= =?utf-8?B?Y1JwS29qNW56MlRqWnFKazlkU0RXcnYxVm1LRDY4OWk2aWpvcXJ6eTZXcVRG?= =?utf-8?B?U2lxYllhNzZsWGdCNmxIUW56U0RtbTBqaGdSQlE4VnF4bHE5Y3NEZTR6WTlL?= =?utf-8?B?SVN4ZkR3RDBNT3pLU203RFAwaDhQVzk4c29PTDVhMitqQkxBLzRaS0VPVHdF?= =?utf-8?B?ME84U0lxaktPRDJPSGZRQkRCWDVFMnN3K0kvU3h3cEJ6UjNOUzBPQmIvZ0lS?= =?utf-8?B?WXVSdE5tb0xkcVg1cjBvWnhvb3I4a1VkKzZKSDFHbUlXd1ZYekJWWHVweFVB?= =?utf-8?B?OVB2d0d2NmNiK3VXcVB6VFBjUFEzdHpQbEIwbktIclJXY21QMGo2MjJhaldy?= =?utf-8?B?Z2ltZlk0NzdZVHRVaFg3eTFYdEtzUXlSeHNTN0JDWlhnM2VkbmM5V3RCQSs1?= =?utf-8?B?bDZCUk9wdzIwTXRNWHcwNkpWbTlMbnI5QVdGaWZreTQ2akk4bVh4R3diV1Fs?= =?utf-8?B?V2ZGRUhnRW5IUmx0ckR4Z1U5L3pQNFRqYmNnTUVtUzJ2aFVLQS95NnVlK1Uw?= =?utf-8?B?bDNicWd5eC85SjVUbU5HeGNoQzBhSjBWcllWZnE0bXRxSEk1clNnTnFCclB6?= =?utf-8?B?Zng1cFRjdFJPcGRMU3ZZNFp1MDFnQS9HdjcvbXF6Y3BDOUxqWmlFTFZFaTc3?= =?utf-8?B?SHJ0VVVKbUdFR3ZpcVZUTVI2a1FpcjJHVU5ZeVZKQTY5blVlN3drSUNJNlZZ?= =?utf-8?B?TkcwcFlpTUUyVUNZcklieFVmMlNiaXZ3QU9xS2oxN0o5ZDBHMTVBRmFiTUxH?= =?utf-8?B?b0FoK3FsU3pWOWNia2ovQjRiUXA3cExLdFhJMmtIcmIyUzVJWm1HV2k2OTZi?= =?utf-8?B?U0hSZXRYWHRTdFkrYmY1UVJ4b1NnWTJZWmpxelBKVnM0OG1JRUg0TTZHcFdQ?= =?utf-8?B?TWZadW5ZQ1VuQ2JGZ2swcDBBSU9XK2V3cTg0NUdJV09wcDJneHZva0dZRUFE?= =?utf-8?B?cHdZQ1lwektma1RsbnFBMEs4UVYxb1FLamZCeElFRlFrSFBRbWMreEszQ09x?= =?utf-8?B?UjBzU2pxQ3h4TVVGejU5ZkhTTzhPanhwcldHRVhpdVVuNGRXRGxCYkRlSWlh?= =?utf-8?B?dzh3L29LMUJIN3p3ZFB6N2VFTTl6NXhtWUZCZS96eDZScUFQbnFERXVWQUIv?= =?utf-8?B?WUpLbG4vVnZ2M01kVEozZ1FaR3hDUHNPd3d5NzJ0YlduSjA5UzQyTHlQQk8x?= =?utf-8?B?ZFF2dUhuMFhEc2tGWXQwM1pOQlNTd0Rxa0NaajY2NGZ0cDFwSlhsMHV1ZEh5?= =?utf-8?B?blRidzRTR3NEM000UzF6aVNlNmc0cmJnUG5SdmJNaDBBR1Y2MXR2ekw1YlFq?= =?utf-8?B?dkJGY1RzT2VhaDBzRnFLZ3I4enk3WUFrWWZFLzVyb1AzMExKUjRHMzZ6MHdW?= =?utf-8?B?RmtiS2dhREM2aVdXdm5ibXVJOWJYejBnMVFLMXdDR3BVMWlGaG1pVjRZdk14?= =?utf-8?B?RXpXbFBvUm8rc256UWQ3R1FhWmFGWlg1WE5zU2VEbC9uRzQzSmc0bHhKTTh1?= =?utf-8?B?T09WUlRDczk3aVVhb080NmtURTl1dkRKU29ScjNqc2VOS1lSVHhMdnJJRXhk?= =?utf-8?B?ZkgzUmJnZjRqNTVrc2FrcHNJNy9Ua21MWmdOWUM5RUFLVFpESTNnSWYvZVY4?= =?utf-8?B?N0wwLzI1Q3dxVDNDWi84WU5sTlBCQXdsQUJMa3pzN2JmVDNaYUtDek9PN0xu?= =?utf-8?Q?/j27UNBQzo6d+bVzHZqn/1Q=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: a563ffa1-de73-47f5-b150-08d9e011f21d X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:49:53.1827 (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: KZiwJMZsxq/zSXQx0yhlitCEv/3tHLDtyDU/ld3fjVHdFUT+3lw72ze3Yg2g0x5mgWXFxFJIk8n5FT+GDPTwpw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122222277100001 Introduce an interface that returns a specific leaf/subleaf from a cpu policy in xen_cpuid_leaf_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v6: - Add newline before return. Changes since v5: - Zero out parameter. Changes since v3: - Use x86_cpuid_get_leaf. Changes since v1: - Use find leaf. --- tools/include/xenguest.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index e01f494b77..0a6fd99306 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -807,6 +807,9 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cp= u_policy_t *policy, uint32_t nr); int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, const xen_msr_entry_t *msrs, uint32_t nr); +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out); =20 /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index b9e827ce7e..ad6b349680 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -855,6 +855,32 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cp= u_policy_t *policy, return rc; } =20 +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out) +{ + const struct cpuid_leaf *tmp; + + *out =3D (xen_cpuid_leaf_t){}; + + tmp =3D x86_cpuid_get_leaf(&policy->cpuid, leaf, subleaf); + if ( !tmp ) + { + /* Unable to find a matching leaf. */ + errno =3D ENOENT; + return -1; + } + + out->leaf =3D leaf; + out->subleaf =3D subleaf; + out->a =3D tmp->a; + out->b =3D tmp->b; + out->c =3D tmp->c; + out->d =3D tmp->d; + + return 0; +} + bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest) { --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122223; cv=pass; d=zohomail.com; s=zohoarc; b=P4PcYllmGYWv6AJgAd4XiwwdmdEHjLtAUOFT8QRI3qkxNoVpYmr7lCHVc7dJslCXgCF05NE+nn+TpW9/UNRYNXTty3HlioTaT/Js/iWywQvzdw/yOQHaGVet6l0BiaDxwwzAjHHgICGC0eKrB+a+WwqBOv8NhWBsslz1q1muUsg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122223; 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=ez/oVW1DjwTHDd85Kf8eG+4Th39TrmpNJNPDRxQAGHw=; b=FcWfphzfxFcJ9HvZPSbzKDo/Ez7x0SzqYQN6LmniVpmu/PXL8RIK7SV0Vqz2Ve7rWPNSE0PdC8TJHb7Jo+++nP3cQZhX2386FQjI5dGtyWvZB7dyKNhjyV4Eu7gUfmf7GlUPdA0+gyix0AXmlgNs4LmdgQYJaVQS+90ARC/dMTU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122223475115.38242709079839; Tue, 25 Jan 2022 06:50:23 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260404.449837 (Exim 4.92) (envelope-from ) id 1nCN95-0004ec-0m; Tue, 25 Jan 2022 14:50:07 +0000 Received: by outflank-mailman (output) from mailman id 260404.449837; Tue, 25 Jan 2022 14:50:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN94-0004dr-S5; Tue, 25 Jan 2022 14:50:06 +0000 Received: by outflank-mailman (input) for mailman id 260404; Tue, 25 Jan 2022 14:50:05 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN93-000334-9z for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:05 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id fb1e3bd5-7ded-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:49:23 +0100 (CET) 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: fb1e3bd5-7ded-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122203; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=81GyJ6SBVfF8/Iszl7lMAfRV4C7DJHP49dSo/U9tyY4=; b=fJv6ZmG+MWH8kMVbdd7J95XL0wKSlSG2tGG0k2A8FUO3GWQtuPW35V9e zZfvTtx9/s4IBfI1rQAQzFYTYH+ojrCk9haMLBP96VCNSGeFsDFAaJE2D LNxvz+jkbjRzsqBzAiTaIIUgfo72/KiaeUlCiTFLy2cnHG3/CYDvYe7Oj Y=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: lGswaDTrOzUqJ/gitSxeX9vl3brfo5e6QCjJSJtXgyF00sNOeRE1ExAeYEjP199SRvLRvbRHr/ ZZ6lQp274vTfSOXpW1C1cvWMTnEw7Caw1qlg3tnrROTyfh0GoofZuSnOlC0jELcoXxdQYiWHAI GJnJz0QLC4dmbEyCHKFhFftL+cCp3OPiK4vyk+Icn0SujNzQEIdohy7ODT1C6bManzqxqe8qv6 fh/OdQDMrYwZCEuhh6QyO1boYtbGyg+wWuJhyjTHuQQsxGIK9LQhz2f3VPx1uulgBOZoEt2z+q diVYsj4al1jfGMJ39nElqp7e X-SBRS: 5.2 X-MesageID: 63124312 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:Sbz3IaiGqjk6zEjm9R6dWqrmX161hhcKZh0ujC45NGQN5FlHY01je htvXDzQOfyPZWKnLtknb9ixpBsPvZ+Gm99nHAo9pSBjEiMb9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oAMKRCQ7InQLlbGILes1htZGEk0GE/NtTo5w7Rj2tcy3IDja++wk YiaT/P3aQfNNwFcagr424rbwP+4lK2v0N+wlgVWicFj5DcypVFMZH4sDfjZw0/DaptVBoaHq 9Prl9lVyI97EyAFUbtJmp6jGqEDryW70QKm0hK6UID66vROS7BbPg/W+5PwZG8O4whlkeydx /1sl8GSUlkMfZfdhfU2ECR/Nh5fD59vreqvzXiX6aR/zmXDenrohf5vEFs3LcsT/eMf7WNmr KJCbmpXN1ba2rzwkOnTpupE36zPKOHxO4wSoDd4xCzxBvc6W5HTBa7N4Le02R9u3ZkUQa2HP aL1bxJfZSzZYgJgE2wVJ8I7kcaroWulcR5h/Qf9Sa0fvDGIkV0ZPKLWGMXRUsyHQ4NShEnwj mDM8nn9AxoaHMeC0jfD+XWp7sffkCW+VI8MGbmQ8v9xnEbV1mEVEAcRV1awvb++kEHWZj5EA xVKoGx09/F0rRH1CImmN/GlnJKalj8+BvhLTch50hCQ24GX3iG8OUk2fBcUPbTKq/QKbTAt0 1aImfbgCjpurKCZRBqhy1uEkd+hEXNLdDFfPEfoWSNAuoC++99r0nojW/4+SPbdszHjJd3nL 9lmRgAajq5bs8ME3r7TEbvv02P1/cihouLYC2zqsoOZAuFROdbNi2+AswGzARN8wGCxFAXpU J8swJD20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Mu2kidRg2bJdVIVcFh XM/XysLuPe/21PxNcdKj3+ZUZx2ncAM6/y7PhwrUja+SscoL1LWlM2fTUWRw3rsgCARfVIXY v+mnTKXJS9CU8xPlWPuL89EiOND7n1gmQv7GM6qpzz6gev2TCPEEt8tbQrRBt3VGYvZ+m05B f4FaZvTo/ieOcWjChTqHXk7dABTciNjVMmo8qS6tIere2JbJY3oMNeIqZsJcI15haVF0ODO+ 3C2QEhDz1Tjw3bALG23hrpLMtsDhL5z8iA2OzICJ1Gt1yRxaIqj9v5HJZA2YaMm5KpoyvstF 6sJfMCJA/JuTDXb+mtCMcmh/dI6LBn71xiTOyeFYSQke8IyTQL+5dK5LBDk8zMDD3TruJJm8 aGgzA7SXbEKWx9mUJTNcPuqwl7o5Sodlet+UlHmON5WfEmwooFmJzao1q08It0WKAWFzTyfj l7EDRAdrOjLgok07NiW2vzU89b3S7NzRxMIEXPa4LC6MTjh0lCimYIQAvyVeT39VX/v/Pnwb +ti0PyhYuYMm0xHstQgHu8zn74+/dbmu5RT0h9gQCfQd12uB75tfiuG0M1IuvEfz7NVo1LrC EeG+90cMrSVIsL1VlUWIVN9POiE0PgVnBjU7Og0fxqmtHMmouLfXBUAJQSIhQxcMKBxYdEsz uoWscIL7xCy10gxOdGcgyEIr2mBIxTsiUn8Wk321GMztjcW9w== IronPort-HdrOrdr: A9a23:UvEDDKmh0Dl32ONN5dEGQbTpyU7pDfO2imdD5ihNYBxZY6Wkfp +V8sjzhCWatN9OYh0dcLC7WJVpQRvnhPlICO4qTMiftWjdyReVxeRZjLcKrAeQYhEWmtQtsJ uINpIOcuEYbmIK/foSgjPIa+rIqePvmMvD6Ja8vhVQpENRGtxdBm9Ce3em+yZNNW977PQCZf 6hDp0tnUvfRZ1bVLXwOlA1G8z44/HbnpPvZhALQzYh9Qm1lDutrJr3CQKR0BsyWy5Ghe5Kyx mIryXJooGY992rwB7V0GHeq7xQhdva09NGQOiBkNIcJDnAghuhIK5hR7qBljYop/zH0idmrP D85zMbe+hj4XLYeW+45TPrxgnbyT4rr0TvzFeJ6EGT6PDRdXYfMY5slIhZehzW5w4Lp9dnyp 9G2Gqfqt5+EQ7AtD6V3amIazha0m6P5VYym+8aiHJSFaEEbqVKkIAZ9ERJVL8dASPB7pw9Gu UGNrCT2B9vSyLYU5nlhBgs/DT1NU5DWytuA3Jy9fB96gIm3EyQlCAjtYgidnRpzuNKd3AL3Z WCDk1SrsA9ciYhV9MLOA4we7rFNoXze2O4DIvrGyWdKEgmAQOEl3el2sR/2AmVEKZ4uKfa3q 6xFm9liQ== X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="63124312" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X7XIzG7jAV6bSSF+C7LExhhE0AAmQ7FZNm3VTF0KYceySYhxdbrJ7XJejgMxP+hNj2u7Qige7j3QcQpfSzYxO3e4YsyZBwpup6pTRBLw/UkGRxRoGADfefSuy3fG8oCupz8BTb6FP90rGwymEosyFjnj/fiuE0J5KPikN0Rtb2qL/nDkPx7V4Pa5e7UNwKBh2MgUJvFgaRHgu3Wo1TNGCizRTYnJAFX93QhtyHQXe/uoAVSCrwBZeWgGWb/59VJ56dHzK0J2xpULd1FfkZTD1xXmDx2E4cljMSdY9vJU0UXhoGtRFTtJ4yIbNs+qRzQoDUB8lcCrIlWfC+LlTmKBFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ez/oVW1DjwTHDd85Kf8eG+4Th39TrmpNJNPDRxQAGHw=; b=lMl/AapL+T55kMMdIP2Y2eS2NBtDa/BS+gxfcF+Svd2NInX10gy74xe1WDJBg5J4FSkLpWPYu0S494QBMUTG1EQhtKyg3HGxuPU4x6UT+c/GRc+1RSVr7nJaeBmejYi1S1vdbh9SpH5ZtpNNcXBxiZqm2gMKQQtcD5WtJpNcS3G2PMl+kNFX/qB4emh4/nHUUnV77gGxskFn41H1xI+hFKzDYzOm59sgh63M/PZn7Qn6Gc8jI+RFx5KWMGwExIkfv0wFKjT6R2dhtNdmjTGXe+iwousMnUlYZYjj49Zhes3tTmuijIL/v5x/08iKcVmcLKPasyd7AArobsmNbLWPTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=ez/oVW1DjwTHDd85Kf8eG+4Th39TrmpNJNPDRxQAGHw=; b=dA9jKBgXhUSXmdFOT3e+MG123USb3YHuoQzQj31zrOL+YotS4R9iByI8ChQdRTT8ngqlWUyW06m0Qta+IHs4lYw+wWT3cCEiSIHkhoMrOrcn6xGRaU8FRSwkA0Ime0HfnC0/AA+/ShYb8ExFIvKqsKWCbfJKsg4XRsf0hzIb0nc= From: Roger Pau Monne To: CC: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu , "Anthony PERARD" Subject: [PATCH v7 03/11] libx86: introduce helper to fetch msr entry Date: Tue, 25 Jan 2022 15:49:27 +0100 Message-ID: <20220125144935.44394-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0087.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3f::25) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 55617b6e-304e-4841-ee19-08d9e011f551 X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zCXdHCWs9thxwwxO2ipb5J0hw57wvBmOvj/IAy6wS8zw2ffQZeWefhtCnIwbW78sa0xwm1jfR95xSSPrbtxYpZV2pAnKem48gLZl6VKHBSaXCnJW3KZEVHL6FsBS2IrrQkEvAFwT2szeQZX/L44zo4woaXDUi21gow3Hc4AFF3fX+0g3U5UuLGCutI8z/b5R8tt9Sptsb4YiNg0y5i8dTH1Pa8IoGu6c55PemZehhg24NTwZ70w+jbdJ1CNW7c09ZspQuGFw4q/ORcYqpZQYbYWrTYXsFPB72tjl3yQtBawqL1x029PB2NWoR9hI1FHks9+GKcD4PN1VCRdbQNgXHy2CD7GO1dQxE3d67zDQixbwlz6lCS7XXj6i/tM28U/sKtd2CePOGfDeIUGKEQPqPGfK/QDBdL2u3IfS1OED2LNn943B4Y6loFjUZE8N/mxD/+aI2Y0YDcihlhwgDwmySjwDyVhA5c48RWtmIdrczbJwmYPAfq1XWvw8bMQDiXHYHOpY70rhZuTVIfK+PMA22aPdGjbmoTXwRZG8Vj5qB+ebvZuEBZ0Op5sNsnZoB1ZlZOcpdJUI/pPf9l+Ubu+XojGDKJPJWqOdoK2qcNevbiSN4v7Wk6i1/Iv99JwCalAEbMIVBxXu4RWuXXTP9lCnXD2mfoLQxtZb9+6X+G0t8eFlZ8kzlcXiZAB1dqySDzj8ENXxqCvmS78UQlAFZNaiEA== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(107886003)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NW81SzJ6WjFFYVJKc2M3blZpTWVCQ3FSdUxoS0R4MGpPSnpFUGw0Ui9XRHV0?= =?utf-8?B?RlF4U1dER0VrSlVkUGNSUkgwVGgwd1dIWEZRdDhwUTcwYXNNTUp1Ujg1dzcw?= =?utf-8?B?UFdLOWRXMUo4S2JmYzI5blhQdkZZbVFDRlh4QUkwR3FLRnNSWTBSd3lHWEgv?= =?utf-8?B?RlNIZ3g0VzJCNWJBRitCNFc0UnZ1dGFBMlZsVENmSHNSd0p2SmRONmJ0dDJm?= =?utf-8?B?QVVKb2lQTlBNOUJiMDdNSmZtdnNxOStpL0RxUXBhNjNYcml1aVBHWVNMVjlk?= =?utf-8?B?UzA0NXBmT3RhY1JQa0dmZXB0a0tzbVV4RStXR2FLYW1SMUdPa1ljd1BKNUhw?= =?utf-8?B?WTFLUnB4NzZreExKMkgyYmtTeTVxQnNNc0NmeXBFMS9BQ3QxS1VFSEZOSFZ2?= =?utf-8?B?U2RsWjhkVG9nUXhBeW10K05Qc2QrOXEzeUFmZHFpQ3U5MVphQy91c1VxM0Nl?= =?utf-8?B?ZWc0Y2ZZNHZQTXlqNmFCYzhnVWk2bVgrR2diVGU3cjhoZVN6RVNGNDY5b2Zk?= =?utf-8?B?dndXa2NPYWJzVVQweVZjd3RjSUdOOUppOWZnT3Q0UGJJSEgxRG5qYUo1aGhE?= =?utf-8?B?WWlKZUI3UlJJMGpSWnlPaW5uLzVJOTRqUzVLOVVibEZFbkpRanE4Wkc5dEhC?= =?utf-8?B?Qkk3R0k2UmRrZW02MXdvZXVjM2I5Q2JtckRpSVlrY25YOTNiajVIT09Da1g5?= =?utf-8?B?UE1hUy9wQ1lDWkpQUWtQODEvUi9lTkN5QW1LY3VnWUZxbXNUN0w5OUd6cnRy?= =?utf-8?B?WGxpcTVCTHNZaVFFbnNlei9LQlVhTXQwb09JYnRnVG1xMkVTVEx3UnR6NFU5?= =?utf-8?B?WWU4c3lQOWNLU3pMMkV4WWs0L0xtWDk5WDczc1N6Ym0zU1REZ1IxeXpIbE9I?= =?utf-8?B?RTVUUElLSC9tMGJTL2hTTlNJYXlLbDY4RVFTaHo1VGRrS2VLNkZnbXdsU21r?= =?utf-8?B?Uk5SL0hrVVltTjNaV0xwTitWVGFnS1NYbTM2cEVqQXpKZnpaRnF5MitFZHVr?= =?utf-8?B?VjZHMm40Y0l6VDFwcjRFNFlaR2s3TWYrLzIvaHZtSVNpNjZtR2QxOWNOVGY4?= =?utf-8?B?YWRhSjRRYzNHT3JpOEhNZmRDZE4yWkpoSFpsYituWW0rTE5VazlvV0xxTEhX?= =?utf-8?B?TFE5dk1UVHRYUUxTb3NydjdZeHUrYWZqUldVV24rb0NXY1ZmcnJRQzdtSGtu?= =?utf-8?B?UGlaV0dGZUdMVWVVdWNVY3Z5WDlTRGZiNGZTWDEwS2M1TUNmREJnZ0ZhSnVi?= =?utf-8?B?NVYzVElic3dDb2JRYmd0VC9jY0oxMzVCbWZZVVgzUWszVkpQRzRRcW8ybmRm?= =?utf-8?B?VExDSmx3UHUxc1lDdTlPMzQ3aEExc3lxSVJFNXJLbW1FMFptUm41Qks0WFNQ?= =?utf-8?B?bXlIc1owcVZsVWIyTnJCdG9tSGIrVEpTSTNjZlBwR25hZS9RM2V6Qnc1czJh?= =?utf-8?B?T2dacjhZSms2bEtjdE5IUWk1d1NndEJUL1RjdS9FTVRZK2krdTZDaDFreGRN?= =?utf-8?B?K0N0b2JFQzg4dHJTV1lKUFdXRTAwWVp4bDkzek8wdXZFL28rT1IvTXZndVlj?= =?utf-8?B?Mk9GMXRlNmFldjNtWFBwN21LSVozZGtOa3Npc2FiMVlzWmlKdFY5c1l6NE5Y?= =?utf-8?B?c214WFV1SUMwc0VIbEFmdGw5NFdxdlllblhkNG5nVUg2RGtvNnJHMG1wcTIx?= =?utf-8?B?OUlubndQMWQ0TWovdFoyVjNaeTFGbU42QUY5NjhzVGpqV0VXclBQbVZrV3ZU?= =?utf-8?B?M2RLY2FGdHBsMjVzczdMV21nTDBIMWVndXNHTVk5VzFBaDdmSjBQWE93K25n?= =?utf-8?B?S2cxU3lmVDE4eU0yWWxTZlg4WnNjenBPOENQbC9EQnpjcUI4V1E0N1dRdFBq?= =?utf-8?B?ZGRIVFZrWmhFbzJabXp0cUl4b2I0ZndQNGN3dGlRbzNZa2JvamVyQmdmQjBJ?= =?utf-8?B?SWZYRGpydGFuRDRFNDlONG1pWW92bVc5alY5Q3FaZy81NXdpRTBFcVUwMHBm?= =?utf-8?B?TjYrMkp5SWM3RDhPME5RS3pFSURQZlYzR0RvWFJNbDJqekgwZzBEUi9hZkgx?= =?utf-8?B?VWNXRGhlYWpLNm5XL3VDRUhuZy94Nlg2MmMyOE9QdUZGbmZ3a2ZmcFNsMm8x?= =?utf-8?B?L3IyYkp3ODlvNUx2WVpyaWhUL0RVR1IrdDJGaHhjSmJycVpzMnZsNkZIOXRk?= =?utf-8?Q?D4QCyI2wwSmtcPub9CPZDfE=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 55617b6e-304e-4841-ee19-08d9e011f551 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:49:58.5738 (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: KeutIA2RLTSpED3qjNjvG6JR8UczlGllJZnBMKLwP9aBUFgRIpwsxLdX0P/EJHpuIlSjkOZOGoMu+7kovZB0pQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122225175100001 Use such helper in order to replace the code in x86_msr_copy_from_buffer. Note the introduced helper should not be directly called and instead x86_msr_get_entry should be used that will properly deal with const and non-const inputs. Note this requires making the raw fields uint64_t so that it can accommodate the maximum size of MSRs values, and in turn removing the truncation tests. Suggested-by: Andrew Cooper Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v4: - Rename _x86_msr_get_entry to x86_msr_get_entry_const. - Add newline before endif. Changes since v3: - New in this version. --- tools/tests/cpu-policy/test-cpu-policy.c | 48 +++++++++++++++++++----- xen/include/xen/lib/x86/msr.h | 20 +++++++++- xen/lib/x86/msr.c | 41 ++++++++++---------- 3 files changed, 76 insertions(+), 33 deletions(-) diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-pol= icy/test-cpu-policy.c index 09e4b5f528..8f51447117 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -387,16 +387,6 @@ static void test_msr_deserialise_failure(void) .msr =3D { .idx =3D 0xce, .flags =3D 1 }, .rc =3D -EINVAL, }, - { - .name =3D "truncated val", - .msr =3D { .idx =3D 0xce, .val =3D ~0ull }, - .rc =3D -EOVERFLOW, - }, - { - .name =3D "truncated val", - .msr =3D { .idx =3D 0x10a, .val =3D ~0ull }, - .rc =3D -EOVERFLOW, - }, }; =20 printf("Testing MSR deserialise failure:\n"); @@ -745,6 +735,43 @@ static void test_cpuid_get_leaf(void) } } =20 +static void test_msr_get_entry(void) +{ + static const struct test { + const char *name; + unsigned int idx; + bool success; + } tests[] =3D { + { + .name =3D "bad msr index", + .idx =3D -1, + }, + { + .name =3D "good msr index", + .idx =3D 0xce, + .success =3D true, + }, + }; + const struct msr_policy pc; + const uint64_t *ec; + struct msr_policy p; + uint64_t *e; + + /* Constness build test. */ + ec =3D x86_msr_get_entry(&pc, 0); + e =3D x86_msr_get_entry(&p, 0); + + printf("Testing MSR get leaf:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + + if ( !!x86_msr_get_entry(&pc, t->idx) !=3D t->success ) + fail(" Test %s failed\n", t->name); + } +} + static void test_is_compatible_success(void) { static struct test { @@ -865,6 +892,7 @@ int main(int argc, char **argv) =20 test_msr_serialise_success(); test_msr_deserialise_failure(); + test_msr_get_entry(); =20 test_is_compatible_success(); test_is_compatible_failure(); diff --git a/xen/include/xen/lib/x86/msr.h b/xen/include/xen/lib/x86/msr.h index 48ba4a59c0..4d84b7cf27 100644 --- a/xen/include/xen/lib/x86/msr.h +++ b/xen/include/xen/lib/x86/msr.h @@ -17,7 +17,7 @@ struct msr_policy * is dependent on real hardware support. */ union { - uint32_t raw; + uint64_t raw; struct { uint32_t :31; bool cpuid_faulting:1; @@ -32,7 +32,7 @@ struct msr_policy * fixed in hardware. */ union { - uint32_t raw; + uint64_t raw; struct { bool rdcl_no:1; bool ibrs_all:1; @@ -91,6 +91,22 @@ int x86_msr_copy_from_buffer(struct msr_policy *policy, const msr_entry_buffer_t msrs, uint32_t nr_en= tries, uint32_t *err_msr); =20 +/** + * Get a MSR entry from a policy object. + * + * @param policy The msr_policy object. + * @param idx The index. + * @returns a pointer to the requested leaf or NULL in case of error. + * + * Do not call this function directly and instead use x86_msr_get_entry th= at + * will deal with both const and non-const policies returning a pointer wi= th + * constness matching that of the input. + */ +const uint64_t *x86_msr_get_entry_const(const struct msr_policy *policy, + uint32_t idx); +#define x86_msr_get_entry(p, i) \ + ((__typeof__(&(p)->platform_info.raw))x86_msr_get_entry_const(p, i)) + #endif /* !XEN_LIB_X86_MSR_H */ =20 /* diff --git a/xen/lib/x86/msr.c b/xen/lib/x86/msr.c index 7d71e92a38..e9b337dd70 100644 --- a/xen/lib/x86/msr.c +++ b/xen/lib/x86/msr.c @@ -74,6 +74,8 @@ int x86_msr_copy_from_buffer(struct msr_policy *p, =20 for ( i =3D 0; i < nr_entries; i++ ) { + uint64_t *val; + if ( copy_from_buffer_offset(&data, msrs, i, 1) ) return -EFAULT; =20 @@ -83,31 +85,13 @@ int x86_msr_copy_from_buffer(struct msr_policy *p, goto err; } =20 - switch ( data.idx ) + val =3D x86_msr_get_entry(p, data.idx); + if ( !val ) { - /* - * Assign data.val to p->field, checking for truncation if the - * backing storage for field is smaller than uint64_t - */ -#define ASSIGN(field) \ -({ \ - if ( (typeof(p->field))data.val !=3D data.val ) \ - { \ - rc =3D -EOVERFLOW; \ - goto err; \ - } \ - p->field =3D data.val; \ -}) - - case MSR_INTEL_PLATFORM_INFO: ASSIGN(platform_info.raw); break; - case MSR_ARCH_CAPABILITIES: ASSIGN(arch_caps.raw); break; - -#undef ASSIGN - - default: rc =3D -ERANGE; goto err; } + *val =3D data.val; } =20 return 0; @@ -119,6 +103,21 @@ int x86_msr_copy_from_buffer(struct msr_policy *p, return rc; } =20 +const uint64_t *x86_msr_get_entry_const(const struct msr_policy *policy, + uint32_t idx) +{ + switch ( idx ) + { + case MSR_INTEL_PLATFORM_INFO: + return &policy->platform_info.raw; + + case MSR_ARCH_CAPABILITIES: + return &policy->arch_caps.raw; + } + + return NULL; +} + /* * Local variables: * mode: C --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122228; cv=pass; d=zohomail.com; s=zohoarc; b=i/6+T5APHwXGv2R6S/+sY9XkgpmWZ6I00OXvBCZnw7suPUzAqexfiJfQ+pjm6sCsu5JV0S/qe3FpDK9jvGnjNiohF+obZbAcl4pKl5E89bsgxh5s3EFpDh/+Pt0eMKaMdOstMGpSn8zRm1W1uIXXXivAYaJd90T6QBC0G7RR9+E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122228; 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=2UP6F+DQsCKngxfuXZykNG42jx0HaHpJ8RyucFFd0lY=; b=RYEieDbVHRp0QwhVERpqs/t/CbrWEUgNDgABgZx2AZzr0/Fmw22CZG0+0Fz/Oo30XcSGfRuO4I/nB3DhwBRBrCa/GdMbszNIFRbu2WMgO4PZdXfZAzSgZfGhozGsP0Ddu19zrTjaTbVL2huIfVtMz+kHXmWFA4xyJeSuVnLKQ2E= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122228291954.751564401216; Tue, 25 Jan 2022 06:50:28 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260406.449848 (Exim 4.92) (envelope-from ) id 1nCN98-0005CN-I2; Tue, 25 Jan 2022 14:50:10 +0000 Received: by outflank-mailman (output) from mailman id 260406.449848; Tue, 25 Jan 2022 14:50:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN98-0005C9-Ds; Tue, 25 Jan 2022 14:50:10 +0000 Received: by outflank-mailman (input) for mailman id 260406; Tue, 25 Jan 2022 14:50:08 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN96-000334-QA for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:08 +0000 Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id fd83f6db-7ded-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:49:27 +0100 (CET) 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: fd83f6db-7ded-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122207; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=b8gUfnxfMT9jaop10Gl1R/jrvfY+DfW2W+UdEuJu/hM=; b=Gw7aE3fmcM4GIBPf6QXJtc/3L1A2/DZX9Vmy2g6csdV/oYClpYL5KWeF OWdlsszXDG2IABYUVMZjvFI/ru8FZ81dy7pRCQXy+DFZRmqJ9ZLlE2gUC YP8DNRd3JnCFZ0h/6+kvHK6Q8XGF1Rzz8sPqBaFNHADoHg/f4eCrHudFj U=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: TtqoIkttRPuZ5a0Yl4W8lu8MFtC52jinK4d1Do1ndrzzwl3ljTFPYUxIZwmpP4MsH+6McWbkp6 dcRNmPiqOB3LBpqzFKwq6rQ4AjB6nhSNp8UspioaDmi0KA8Hpf56b7eysFoLl1cUwINA1hwNyH ahENqpCrqci2mTb7iU5NoRVUGTqGbBKFcn03wHXH7r2w1PC6l47YgIdWqeCfWmStMMFetUv+/A SnBLfRHu9mSCpGnFoUbZcGuDID5wwm3QhqaWN8SXKUzCe5LtPvDOni0wA3pQBo8f3oOS6+YBXF sVo0i6McWMgWsFXUG1kKhodW X-SBRS: 5.2 X-MesageID: 64880007 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:q4Wyeaq1iOy3PCJ4deK/AvB5HXBeBmLpYhIvgKrLsJaIsI4StFCzt garIBnXPamIajb9fdp+Oo+09kNVvpLdn9NhS1E9rC4xFX4X8puZCYyVIHmrMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlZT4vE2xbuKU5NTsY0idfic5Dndx4f5fs7Rh2NQw2ILkW1nlV e7a+KUzBnf0g1aYDUpMg06zgEsHUCPa4W5wUvQWPJinjXeG/5UnJMt3yZKZdhMUdrJ8DO+iL 9sv+Znilo/vE7XBPfv++lrzWhVirrc/pmFigFIOM0SpqkAqSiDfTs/XnRfTAKtao2zhojx/9 DlCnaKxZAsMJfDlo+EyFBNITnAvBrBN2IaSdBBTseTLp6HHW37lwvEoB0AqJ4wIvO1wBAmi9 9RBdmpLNErawbvrnvTrEYGAhex6RCXvFJkYtXx6iynQEN4tQIzZQrWM7thdtNs1rp4STaaGP 5JGAdZpRATKZTx+O1E8M707xLqWukT1eSVcrF3A8MLb5ECMlVcsgdABKuH9eNOQQt5Otl2Fv W+A9GP8ajkYPtGCzTuO8lq3m/TC2yj8Xeo6BLC+s/JnnlCX7mgSEwENE0u2p+GjjUyzUM4ZL FYbkgIxqYAi+UrtScPyNyBUu1bd4ERaAYAJVbRntkfdkcI4/jp1GEA6TxNNTcd7nfQzansgx gLYzuj0DhxW5ej9pW2myp+Yqja7OC4wJGAEZDMZQQZt3+QPsL3fnTqUEI89TffdYsndXGipn mvU9HRWa6A70JZTv5hX62wrlN5FSnLhagcurjvaUWu+hu+STN70Ptf4gbQ3ABspEWp4crVjl CVc8yR9xLpXZX1oqMBraL9RdF1Oz63dWAAweXY1Q/EcG82FohZPh7x47jBkP1tOOc0ZYzLva 0K7kVoPuMQLYCr1MvEmMtrZ5yEWIU7IT4iNuhf8NYImX3SMXFXfoHEGibC4gQgBb3TAYYlgY MzGIK5A/F4RCLh9zSreegvu+eRD+8zK/kuKHcqT503+idK2PSfJIZ9YbgfmRr1nvcus/VWEm /4CZpDi40gOD4XDjtz/rNR7waYidyZrXPgbaqV/K4a+H+aRMDhxUqCKmeJ4JdUNcmY8vr6gw 0xRk3RwkTLXrXbGNR+LejZkbrbuVox4tnU1IWonOlPA5pTpSd3HAH43e8RlcL852vZkyPIoH fAJd9/ZWqZESyjd+iRbZp749dQweBOujAOIHiykfDlgIMIwG12XoofpLln16S0DLiurrs9i8 beu4RzWHMgYTAN4AceINP/2lwGtvWIQkf5ZVlfTJoUBY13l9YVncnSjjvI+L8wWBw/Ewz+Wi 1SfDRsC/LGfqI4p6tjZw6uDqt7xQed5G0NbGUjd7Kq3anaGrjbyn9cYXb/RLz7HVW7y9KGzX slvzqnxYK8dgVJHk4tgCLI3n6gw0MTi+u1BxQN+EXSVM1nyUuF8ImOL1NVkv7FWwuMLohO/X 0+C94UIObiNP8+5QlcdKBB8M7aG3PAQ3DLT8e40MAPx4youpOiLVkBbPh+tji1BLeQqbNN5k Ll54MNGuRaijhcKM8qdinEG/muBGXUMTqE7u8xIG4TskAcqlglPbJG05vUaO31ThwGg6nUXH wI= IronPort-HdrOrdr: A9a23:Rc8Sdq9Cm4KwovIabf9uk+FAdb1zdoMgy1knxilNoENuHfBwxv rDoB1E73LJYVYqOU3Jmbi7Sc29qBTnhOJICOgqTMqftWzd1ldAQ7sSi7cKrweQeREWs9Qtrp uIEJIOeeEYb2IK9PoSiTPQe71LoKjlzEnrv5al854Ed3AVV0gK1XYfNu/0KDwSeOEQbqBJa6 Z0q/A37AaISDAyVICWF3MFV+/Mq5nik4/nWwcPA1oC5BOVhT2lxbbmG1zAty1uHg9n8PMHyy zoggb57qKsv7WSzQLd7Xba69BzlMH6wtVOKcSQgow+KynqiCyveIN9Mofy9gwdkaWK0hIHgd PMqxAvM4Ba7G7QRHi8pV/X1wzpwF8Vmgnf4G7dpUGmjd3yRTo8BcYEr5leaAHl500pu8w5+L 5X3kqC3qAnQy/orWDY3ZzlRhtqnk27rT4JiugIlUFSVoMYdft4sZEfxkVIC50NdRiKp7zPKN MeTP002cwmMm9zNxvizytSKZ2XLzgO9y69Mwk/Upf/6UkSoJh7p3Fos/D30E1wsK7VcKM0lN gsBJ4Y4I2mfvVmHZ6VO91xM/dfcla9OS4kEFjiaGgPR5t3c04klfbMkcAIDaeRCds18Kc= X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="64880007" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eekxc+HW1UDGs70oPp3o71pMTQ2NwtI1P1znXComzjMifa4CvnNS6//RFAnGQ7Ok1vdDFDwHmdJ8zuvqaN1TxqdUHpWklo9Tb4hMAiDW16zO1G6BYI8FL1/G+UIneUOJ5S0sQxLDrNi1N5M5FXd1rmCQ1qzWdoBT7WnpISOjZQwrJST4hLNdsaShM3Tv5kZp6BAhiwI68IaRNYeCFN0nFR5mHIjpwcUgA3W4dQK7ykB+olsKWblkSIi9UixH1ud91b4jc205qHIMSaEtRdz3rQrekl9FjOH33JGigwrrthxBlcSelWAVFJJHzaOYmC41+k24gNRhgsPwNn8AhnuKog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2UP6F+DQsCKngxfuXZykNG42jx0HaHpJ8RyucFFd0lY=; b=hOlJhNxhktgA02qQ+OcSFHhb80vQ+zpPPkGdr7ad9ZFrzk0dBxapFGhDNTP0iQEjT55SQ7eWYFQ4gi2M08W9qMloHfrm3T5cNkahAuKXVotSBneSxlMB+jRt/KPMZZTNZrdI6MWc733OX80y7+haHnvUk+RFYBXbnqoJQuPZKd7HL6WbijeneedNJcU7bjPYvPVtm9kG/4XL+jQ1C/2ssUQcnFmpFbgtsOyCKGmcsaUEaaesJUC5I/lJR9aLtJOLVS6jja6m3Kiars+RpcFBZSsRdj9jgY8NF3lf852/ur3ZWMY+LFbP2aq5xN+ltNdExJqX67s2F6LI4yX9siIwQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=2UP6F+DQsCKngxfuXZykNG42jx0HaHpJ8RyucFFd0lY=; b=ibTj5S9vS33CGpUQpmzVmsun79JfvLbkrSjlZG/KxlP87ivLESStgWK4JyPmnZ4oK0LpUKcfP+bciXwbwZk37fC1iaYlw0aV4D69Sxu2HCQJy5e/ByY2k0akhD7fpsLhZxFGwlT/xdIEMpoU5Sqav4sZkbdUz2lVJJYkx7I4BUc= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich Subject: [PATCH v7 04/11] libs/guest: allow fetching a specific MSR entry from a cpu policy Date: Tue, 25 Jan 2022 15:49:28 +0100 Message-ID: <20220125144935.44394-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0076.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3f::19) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 54fac90c-7dc9-428a-0416-08d9e011f85d X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T/64cUynr0F6G3dt/MDY8gY2tTl2fqFoMCoAZG9tj5qdXJO14SuKIpZePkLtbO07hUXsExc+FGTv0rPFDuYjkSbBFJUXkKUABGa7NWr49eQHA4+TSMeP5lY1512ukafdniR28wYlzhRuPC5ewRHpJfdhxxP6Y5K0bUuuZQuUxBni3yNddfO7ESvkxO4cJlgamoLvFqLKY2qrpW1uMe8IVgeWxG9zFszjmatA5PW3xEiBMXAMiA2EzbpSllUvypfbwMxVSLxzp0LSP6p8WMoqVQpCn9EQE9vPZSsH69blSkRwmKJ8X5upcOIch/LAqUS2EHgNfru80uPaIPuoNkSItGf74pkyoqwmoBHFG39stWvZZHbcpiNsywSHgJBHYCmUeAZqo2edhhF2cA1u00kzEUpkR6MQFKuJp8UN8aj1yjlhTjcpNR1cBhMuvm6ggX9lCaMhIOX5PhPG96U58KPae8XTI/UttrZZnhw7gsio94/vdNW0vsZN1g0LMFrPHdEJIdsigJfqAPhd67z6lpTIYaoTEoBFJFsMbaarSBJ9vRxSbCltHXl0dVH+1wfZ5GecYNHWxjx/CNiwCxZvQS6UsIwa1eMiMLVSW/ouy7vWmhBRwiF7LW+bQx4EoSkEDoP5vNcjarooRONthlAE4hqVEA== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b3N1TkcvVTQwS2NpSXFnK2xKVVhRSlZFUVNPR1VqbEpmVnpaZEw0dXRZM0Fa?= =?utf-8?B?WXZQL1BSNDdvOEd6YTFnT001VkdyT1RkWklUdVB3Y21zNDN2bXhyTVp4WnlQ?= =?utf-8?B?cTRoRWlEYWc0L3R4TnJtaGVWSFRQYUgxTFRwNG9Bak8yRGlCaktEU25LaWJU?= =?utf-8?B?WkJ5bCtNNkxjWnM4VkFBL2FzNGJ5cXFlSUFOaExNZXBXcTQweGk1Y1RkYXp6?= =?utf-8?B?cE1raUcweGlUWmlINzJZcTBXY0JiT2ljbWgwNHVFQTFFMTFZbXpBNHkra1Vw?= =?utf-8?B?NXBxUXMrSTZFY05wSVR4c0FzMVpLdVNxeWJlc3h0Z2ZjNVgzeHozQlM4ckYw?= =?utf-8?B?MWhnM2IzZ1JHT1pZY0R2NUs4RDVXOTAyMXFlc0hVZGVXRkFxald1TGhidk9K?= =?utf-8?B?bUh0SCtHUHprWXBiV3lLREtyT0g3b1FCVElRaCtJYS9PSTQ3cDVySVJRKzdH?= =?utf-8?B?Q0FvTDQ1S0VaWjBzNmxFaXVQbGgrNHdJenZBZytoYUI5UU51ZGpKUTAwcENY?= =?utf-8?B?Vk9xcnNNTXkzeS9JQXBuQW5YdTd2M2dvSjBua3VzT1V5TWkrakxOZmFaNjdW?= =?utf-8?B?TVRDa2FJdE5JeTV6VDdCMTNlUUh4SW1yUU4yTU5mSEIzVkh0a0pCNThyc0xU?= =?utf-8?B?ZkowQ3dxR0RXTXN4eXlmdjJNZTFISDJzZHZzd2FqM1hhTTM0dmR6TmJTMFdV?= =?utf-8?B?N2JHelEwUDhhUTgrei9DN3h0K3lHS2oybUo1dE96N2Y0dUtWdzRucXR6TnR1?= =?utf-8?B?NGpKd3RQSE1pRTRRV3RlTDN0TEMvNjZOdmZrcXhLWWQ4eStXQ0VvOHdWTzlO?= =?utf-8?B?aUl6bVVKSTM4NjB2YmlyRCtSY1dZc21kZjJkRER6RGtpRUlDQXI3MTA2QS8y?= =?utf-8?B?WDlveGlja2VZbHQxcWZsK2tWQWhRQzNodUxXdUlQNUxST0MrQWphQXFIelQy?= =?utf-8?B?Vy96QjB6ZXpTSExydVY5TmJZWTNRUmxtSlpyNW56c0krMko5MGRBQURqL203?= =?utf-8?B?Sk84OFRxTjRoY09NUzFwb2VKekh5V2E3ZUlMSnV2b3NJYTU4WlVaQ0hGZldB?= =?utf-8?B?QUpzUzloNnhWSEVjcDJQQllsS1hhUmZkUzJyRmJkbkIzTnA5VkJFTWNWcG9N?= =?utf-8?B?SDdvZXdqWUxzV3drY2ZlMDdFWTB1LzJ4ZllYemdoellVZDVFcWV0V2VMckxl?= =?utf-8?B?cStBOXZFeDltVUNQdGw0QnRIK2dQdW0xQVNpOEpaZTliT1NHMGZHM0Y3Y09P?= =?utf-8?B?cTNjeU5CemZJN2RRUm5vQldyaE9sekNqcThUOEpYa0Rxc2Z5eFhhU29zclI1?= =?utf-8?B?S0c5V0kvVktqWHNwWXNqdkV6ZnQzZFp4QlVBY0Z4OTR3MmRIbE4zK29PWWt5?= =?utf-8?B?UW1JelA0NTZKVG5xR0FCdWFsdDJqSkx0VmlFYlJEQU5iSForbnJhbE1SYUhD?= =?utf-8?B?Tmw0VTNnV0U1czh4bDk0aGhmeE1EQjN3bGRjc2dVdjB6Mnc0QTNhT1NiVmk3?= =?utf-8?B?QU1VNTBIL2FNNUhpOEVka2F2Y0lZNlV0WHJ0K3dmTHI4am1YOWRzTzY2b21D?= =?utf-8?B?ZERPUnVhMlJuc0x3cU1KWTYvUzRaSGZvcE9vK1pUM1UxckFBczNCeWtvZEhR?= =?utf-8?B?SDVheWpIcDFXRGo5K3I1b1U5dXZxWDdSZE9mRlVLVnFpbHY4Wi9iZlVPb25I?= =?utf-8?B?S3Q1dEZyUVlqb1Q0UDNrbm5Mc0hOT0FWc2JRVHpLTEVBdEdnQ2t3U3pDWTBW?= =?utf-8?B?QllXMU8vRFJLZHhNZzdFbXF1b1VST1V3NHFnYUR6clhNS2tualhyU1g5aTVD?= =?utf-8?B?eFZSV2ZkYjg2N2plRXpxL2x6V2Ztd0wvRFZZTVErWE91M2xGd1diT2JzRS9B?= =?utf-8?B?bGs1Q1hjWmNnTUdxVmlId29HMStKL3dxU0cwZldSRXB6dm05MklPNTVqSGVW?= =?utf-8?B?VmZlOHM2MjNMTlpwc0Jld3pZMGtaNlBpdlhNWUE3bEJ0QUVhbi9BZ3d2MU1o?= =?utf-8?B?bjJZNWYwRS9aS1hYNmovdU1tdmdrNXA4SzlvdWsvM0xENDlxYWVobzBvejNo?= =?utf-8?B?emZBOTlNcjV4VVhjRFd2ZjhuR09VQXJtQXF0N2diK2lReDJxcHBrU1BXaTVN?= =?utf-8?B?WnEzQkZYNklWd0E5R0lIM3lObGRmU293UjVpd2pJNEp4aCtSZjBoY3BlYi9z?= =?utf-8?Q?d+Rp2s/t4RUIxMfiS3liemE=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 54fac90c-7dc9-428a-0416-08d9e011f85d X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:03.7747 (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: 8rkwKs/qSVsjOWL/yeBsbIjvfjhxWjS8rYBfRvhV7J0y4Eem0roXza1dRYWeEQNdR9COxnMelGPdHkVxGM30mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122230508100001 Introduce an interface that returns a specific MSR entry from a cpu policy in xen_msr_entry_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Signed-off-by: Roger Pau Monn=C3=A9 Reviewed-by: Jan Beulich --- Changes since v3: - Use x86_msr_get_entry. Changes since v1: - Introduce a helper to perform a binary search of the MSR entries array. --- tools/include/xenguest.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 0a6fd99306..2672fd043c 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -810,6 +810,8 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu= _policy_t *policy, int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *poli= cy, uint32_t leaf, uint32_t subleaf, xen_cpuid_leaf_t *out); +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t msr, xen_msr_entry_t *out); =20 /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index ad6b349680..af5b8e47f4 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -881,6 +881,26 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const x= c_cpu_policy_t *policy, return 0; } =20 +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy, + uint32_t msr, xen_msr_entry_t *out) +{ + const uint64_t *val; + + *out =3D (xen_msr_entry_t){}; + + val =3D x86_msr_get_entry(&policy->msr, msr); + if ( !val ) + { + errno =3D ENOENT; + return -1; + } + + out->idx =3D msr; + out->val =3D *val; + + return 0; +} + bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest) { --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122234; cv=pass; d=zohomail.com; s=zohoarc; b=alGhwarD2BgWeLbo8cbkC26DqmDfxwUSaetBXg0TCrh3jsSzZCFnsOe39qhKLJOxL8LTYhSIdK9iYvNUc1yF7x5UlBLGrfLK6sAldfBwg8uYn4SeTQGrX4zfO3OjZlWx/0MVvBCJJK36JBG5PO13o46kA6kTXEWr1MIdRpwWBMc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122234; 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=Xy2XwwkC77aRusqaEhIqZOdJcdN/UpTCfyRBjte639Y=; b=fuw/Gh5Q42QZyRPh4+yoxGBEJJ3mQKIFiOjLrUoG1FITRYIXAbC+bBUDXKm0rb8dLrLNLcvmDUaaUkKoLv7k+4pmqcEc4jf1WZw3euIkzD3EOaxQKdqogMdb6AgE+FSq4WGh3ZEPtcNMdBVWcSyZJC38YDFxRahev6qH5tOhbzY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 164312223491935.45741863822684; Tue, 25 Jan 2022 06:50:34 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260410.449858 (Exim 4.92) (envelope-from ) id 1nCN9G-0005yb-SI; Tue, 25 Jan 2022 14:50:18 +0000 Received: by outflank-mailman (output) from mailman id 260410.449858; Tue, 25 Jan 2022 14:50:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9G-0005yO-Oy; Tue, 25 Jan 2022 14:50:18 +0000 Received: by outflank-mailman (input) for mailman id 260410; Tue, 25 Jan 2022 14:50:17 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9E-00033A-TV for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:17 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 19db0102-7dee-11ec-8fa7-f31e035a9116; Tue, 25 Jan 2022 15:50:15 +0100 (CET) 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: 19db0102-7dee-11ec-8fa7-f31e035a9116 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122215; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=HZaMJj9+rL+LRyMJ6VSN4shsmzvezVh6cTf4PGv5g6Q=; b=RaZTwldg7QKfUu+Mh6n8MqiK7tkOTYrHhnhtWP7APZhanWq+eQ5wCrmp tKVpDO54NcXIiZlofz8xMkiEUxipDueBKGjfnr5HtyluOsAxYlSa2cAiS qRD2HYY5q4ri1vDVMBrAwicULvphxpgdpi+CgmJTGeIlTOBAJlFjWoXtu E=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: am4nLQAiuN9wbvfC5mdRLVyy1KLDthCgGDrP1NMou6y7CRjZc/n9uI9zke5OXEd6AsmKtDorsm NxzJ0oGxSDeZKdBfQ1ijtjE3sTQeP3Nj8Z/Smr96LIh3hzWHINH+OUTiwBRNoqigsFSZwq7Nzu kjphCAJWQdFtgud65GuFMhl5zt8/QnF6du4EuLQTnha7SLvViScChFimg7ritZCiXF5cpUOWG4 iU13pejTm5VtFXGrK7/TFyRh0O0Zzq1cbBErmz9WY5lW1AVpph/9v4ybb6lTm1at/NCWlAhfMQ OCYpCb/nAFEZUsyaa74w0O35 X-SBRS: 5.2 X-MesageID: 63124333 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:SiSgRa0isif4hPcbgPbD5Td2kn2cJEfYwER7XKvMYLTBsI5bpzUPn 2MZDGuCPq2MYGL9edolao218kIAsZGBm9IySAJspC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCanAZqTNMEn9700o6wbNh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhpM1W2 tYRub6LYx4MAPH3tNseaSJ6KnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6Diu4QBhmtr3Zsm8fD2X No4QBtWVTT5PD5yHH0TEZUTuf6uryyqG9FfgA3M/vdmi4TJ9yRz36LqK8H9YcGRSINemUPwj n3C13T0BFcdLtP34SqI9Degi/HCmQv/WZkOD/uo+/hymlqRy2cPThoMWjOGTeKR0xDkHYgFc gpNp3Ro/fNaGFGXosfVZACfsn3YsjwnccN1LbEBxD6O8JH22lPMboQbdQJpZNsjvc4wYDUl0 F6Vgt/kbQBSXK2ppWG1renN827rUcQBBSpbPHJfE1NZizX2iNxr1nryosBf/LlZZzEfMRX52 Hi0oSc3nN3/ZuZbhvzgrTgrb99Bz6UlrzLZBC2KBgpJDSsjPeZJgrBED3CBsZ6sy67CFjG8U IAswZT20Qz3JcjleNaxaOsMBqq1wP2OLSfRh1Vid7F4qWj2oyLyIt8OsWAmTKuMDiriUWW1C KM0kVgJjKK/wVPwNfMnC25PI5pCIVfc+STNCamPM4smjmlZfw6b5iB+DXN8LEi2+HXAZZoXY M/BGe71VC5yIf0+kFKeGrlBuZd2mHFW7T6DFPjTkkX8uZLDNSH9dFvwGAbUBgzPxPna8Fy9H hc2H5bi9iizp8WnMnCIqtZCdA5TRZX5bLivw/Fqmie4ClMOMEkqCuPLwKNnfIpgnq9PkfzP8 G37UUhdoGcTT1WZQelTQnw8Or7pQ7hlqnc3YX4lMVqygiBxaoez9qYPMZAweOB/puBkyPd1S dgDetmBXasTGmiWpWxFYMmvtpFmeTSqmRmKY3ivbg8gcsMyXAfO4NLlIFfirXFcEiqtuMIii LS8zQeHE4EbTgFvAZ+OOvKixl+8p1YHn+d2UxeaK9VfYhy0ooNrNzbwnrk8JMRVcUfPwT6T1 gC3BxYEpLaS/99poYeR3a3d9tWnCepzGEZeDlL317fuOHmI5HenzK9BTP2MIWLXWlTr9fjwf u5S1fz9bqEKxQ4Yr4pmHr935qsi/N+z9aRCxwFpEXiXPVSmDrRsfiuP0cVV7/Afw7ZYvU29W 16V+8kcMrKMYZu3HFkULQsjT+KCyfBLxWWCsaVreB33tH1t4b6KcUROJB3d2iVSIYx8PJ4h3 ep86tUd7Bayi0ZyP9uL5syOG79g8pDUv30bi6wn IronPort-HdrOrdr: A9a23:GniLfK6J9sGnWRDK7wPXwVCBI+orL9Y04lQ7vn2ZFiY7TiXIra yTdaoguCMc6AxxZJkh8erwXJVoJkmsiaKdgLNhQItKOTOJhILGFvAF0WKP+UyDJ8S6zJ8n6U 4CSdkONDSTNykCsS+S2mDReLxBsbq6GeKT9J3jJh9WPH9XgspbnmBE42igYyhLrF4sP+tHKH PQ3LsNmxOQPVAsKuirDHgMWObO4/XNiZLdeBYDQzoq8hOHgz+E4KPzV0Hw5GZSbxp/hZMZtU TVmQ3w4auu99m91x/nzmfWq7BbgsHoxNdvDNGFzuIVNjLvoAC1Y5kJYczJgBkF5MWUrHo6mt jFpBkte+x19nPqZ2mw5SDg3gHxuQxenUPK+Bu9uz/OsMb5TDU1B45qnoRCaCbU7EImoZVVzL 9L93jxjesYMTrw2ADGo/TYXRBjkUS55VA4l/QIsnBZWYwCLJdMsI0k+l9PGptoJlO01GkeKp gvMCjg3ocUTbvDBEqp/FWHgebcEkjbJy32A3Tr4aeuon1rdHMQ9Tpu+CVQpAZFyHsHceg22w 3zCNUdqFh/dL5nUUtDPpZyfSLOMB20ffvtChPaHb21LtBOB5ryw6SHlYndotvaP6A18A== X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="63124333" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hnsqdwNQVv5rqF/bdOGgfyh/NtlJk0RyJUcoIKAxfcIrO+w4G3vLeDDojBWWTPUBwIhaObmGu2A/WAFdA8G2LAvnYY88PoTs1/fQP6imfG8M6zxF+vpjr5FPFXTOu/dZIKXTa8NqScBU+v9fc8Wriwlp3zczUfa6XO8WbFHzFr6z16u4pwMMY3ER+TGr4iugWNquylLkEGM+glLWMrvNT+Yd8dR23At51kxJ3TjqmBjuux2Tty8qTAL6KC/FMZBEAGp4RWzRjkAXn0HZGvhsu5c+Tifn2jQSv6bknLJZq8oGseOHvXYc+DKfHTknwigL1LUfYtR5oilIKoQXKZQiEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Xy2XwwkC77aRusqaEhIqZOdJcdN/UpTCfyRBjte639Y=; b=AhU2p8lAkS6Vi14IcsH6oXImNWHGInyx3kJx7Mw9RxyRrcB5O/sUUpmUHkm4tyqEbo47DpyE9lHnfPfKi8AmS8RHt99ADDxtnkYmbjCpam5DuC2jvpWsMMBVrx0AzoMLD6nIVtvl9MurAYW6RNg/DoWyohmxEjYaZjsxcaoL8UM6l5aFqK6LlyVUc3PVY/v7j+3IF3eu/SmqFrwhqjVbp+G/to9wXhsw9yNdW/nv5ofai1h1vzDf6zLDUp2JdA9eaY4LxZqCYXiPckWbEDgwpUIZo4Jrj60XchvS5poYdAo1sW1XP8gxAe63/SAL5FBE6fVu8+2jbwbVnJQ1UyXzng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=Xy2XwwkC77aRusqaEhIqZOdJcdN/UpTCfyRBjte639Y=; b=tkSz7MzIwD9UPrxlBYZGuYJbjWeO3XJ6uc7N0Aat5pPfwfoGzz5ufUiFTJI+AEga9UTis25A6ggeeXz3tShRRYl0tpahNREvU7KDNezwCpEoVOClFm/sHSpD5pM42IT4BoixIwcDjpuSfdHvs/XN0ZCGQ9mt4Azw8/kAsqdRBC0= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross Subject: [PATCH v7 05/11] libs/guest: make a cpu policy compatible with older Xen versions Date: Tue, 25 Jan 2022 15:49:29 +0100 Message-ID: <20220125144935.44394-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0077.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:3f::9) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4aeb396b-2355-4961-15e9-08d9e011fbc6 X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:913; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lN4SHMdV99BsMb6MTomMkTFvPZrk++3EA81qaf5OL8B664dI0Exf+Y34WMYPMQrbG3794jDcj0lLxBwtOZ9Ce1y/WBpysvSY4zbwO3E9RLjne242JPE9ZVKaWU14StgOip02GBobPKjOLYxDPnE4eWaDRFUlPypcCXMKJw9ekmrGfcg4Ky2Xmd/NBAXxh37lofhKpChzxpYADbC1qz0e1zlUEQT8jUtSDlgvDBUvUiSI+/DdEpgwx8wlcjDKZukbEluB3mySG9qyV/bQRUaPmSyJuWxrcsF+lyC7p4ojAepD+eWSNoXWIzifpNgAiDV54/ZUZFvtmb7LALJVx86U+tjVLKq92CjnN8SPK9rbTvdJ5wJvrBbDcR/ojZPWhViFeGz/P4NTK224vZBbjwX/ITkC2I84yuvQJAXt1I1sThF233kpNB7naPCn37VaKAXmJUsniExYJDyRKFgljmYekqBTXUx+PmaASWpSPTe3DtqAnZXYRNTor2sBvqR25onP5/DliJSRZplMD/jvKgx7v9AbfiIlaLiizGK3nOt/ZK8JjhPp697EgJZ0RMaqVFzg50niodRsJSOV4J1htSKuBcIz4yL/zx1F9a1wpc+vvSah1GAJ6ckY21DphBZM3Lme7vZoXDqEoL+bP4ieIW7+qA== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bzQvS21ZWkFza1MybGtqMGd6VU5qeEltdnp6Q2lIaGM4UzUxM0pFTFN6RXdN?= =?utf-8?B?eDJzV0NNcmRZZFNBZGFBQUQvQkx2blpIbWZ2N24zaVJyUjVIaWp3L3hJQmx3?= =?utf-8?B?K1dFZ3M1dkRkU1ZpcUpOV1VrUS8yYkFlb3BYWnNWdXJTc1lGclNyNXlCQlY0?= =?utf-8?B?cFp1RkVUQS9rb1loclZ0TW8zSzJXdzlwdGJoYU5TejFRWmNWVTNEMnN6ZUxo?= =?utf-8?B?Wm5sRWEwM2dJNHlsdUxDWWNDWU5ManlPS1dCcS9IREpkOU9YODByNXh1UnlN?= =?utf-8?B?MVpDSWdSYnNuRG1IOW9nNjR5bGVHVHFrNCs4VHQyU1p2VnY4dG5JOTEvaXhu?= =?utf-8?B?cjFUdjk4d3F1aWdwMzJXRmNiMllyNVRrL2dHdzFTTDdTRUNuZzlvUGprcThS?= =?utf-8?B?TStxeTNPaENXWlljaEs0TEtQWXNLcTVjNzhudXcvS1NSQzlZRy9TYWlVbmJr?= =?utf-8?B?MUpCZytuWGVWUWxyb1RuSlk0M3hBazk4aVlORUgvZFl3YVVxYzFkY0xXYXg1?= =?utf-8?B?bmhodEszcTZjZnZvcS9aVVJCOGdMS0QwOUVPdDdWY1BZV3FYV3pRM0xqNE5P?= =?utf-8?B?ci9ZTWQrMUdXeWV6YVpXNFlFcFl1R0oyRFNjZFhrUmRJeWZOYnU1VU1Dazg1?= =?utf-8?B?S0pWd3pDRHJ0dlF3MlhBVG1hYS9ROFcvOFhaejZINGIzUU5ZWk9tRjRSSElC?= =?utf-8?B?cmVwb3RuS2duUENORlRqWHFrSWJhWnJtSGhYVDluN0xpMmdIT1hDcUhJZUFB?= =?utf-8?B?bWVlaDZqVDFJeU4rWkhFTXFDZTZHOUd2dDRUaXZidU9Xc1hnd2RudGc0QjlB?= =?utf-8?B?czlIZm92Tk9iVzYzNlZzS0d3dVhBdHZOeXVwbWJjbGtNYVB3enJKVWQwQXYy?= =?utf-8?B?SWZCVHZSVFVzdHVIRVRaYVZkamhMd09DQTRsOGdSSVdYS2ltdDdLTTZjNjM1?= =?utf-8?B?OVNEWlFzZEpVZkhGR3h4OHVGK1d1b0k5RlBINzRNT0pCd2c2aVJlUWtuSUJz?= =?utf-8?B?b2lyZEoxUzZydkI0SjlaTmc3ZWRQOVl0UTRIMUlCVDVhZW9yNHFnbUFZNWZj?= =?utf-8?B?eTloZHJZTGFJTGl3L21TbDFGc2p4a0l3U1BSY2tNOURmcXZ3NVV2elhvQzZ1?= =?utf-8?B?UmtGQnJISjR3MmI2S3Z6c01vN2h2VXYwRUVUV1dlVFR3Y0hHNkc2TldTK240?= =?utf-8?B?Q1AzYjBSR01NalJnWmYyVTBSU1R0K09yMFdJTEkxVFhkNzZtalpBVy9KWUM1?= =?utf-8?B?QUJmRnQreVQ5RmtqampiVUIrQkZTUkhqYitIQm9NcDEzckRHUXIxVHFNREJq?= =?utf-8?B?cHc0N1lIYlFwVnpFY0ZTaFgyUnhVN1FnMXhaZlRLRHh3ZlgwdVRxM05EdURI?= =?utf-8?B?cEM5bjJmSThUUC9tMlRFckM5bVh5clh6SE1QY215OG1IcFhqdEpDZHMyaHhU?= =?utf-8?B?d3dWb2lTeXAzVm9ob0k3VURPejBmeWxVWFpNTXc2RXhZOEs3UTdSeDdnYW1t?= =?utf-8?B?SzhCYWdKdFl5ZHZLaWdoSVp3QmVvd3cvQ0FCTkNNU0d5UFRLcGM5bmpsV216?= =?utf-8?B?SkljaGwxbllXVmRzT2JZRU40S1N3ajk2Z1ZnNWRkOUFOK0JDMjc5UjJzMzl0?= =?utf-8?B?ZTJIdldPb0JwemM1WkxoWE94V3AyUk80NFlSTTBzT2ZJQXFSS01jeGw2aktF?= =?utf-8?B?YlYzOTUzR1VOcVpvWkFjd2g4dTlYTzMzSWZrVEc0cTdZc0RMdU1GQkJUM3Nt?= =?utf-8?B?TGNKd2swTmhVWjJ6RmcyakNRZlpwKy9WUEtzUGZQaXJ5K2psSnJpUkRVaVJK?= =?utf-8?B?bER4NmpuUWJkQURRSnhFYnN3U0I0VmJtTTNtWllocWp4NWgxTGhoazNTUUpr?= =?utf-8?B?a2djVDdvN3h4K1BmeW9oNmpsdFdNUkNWUkZMaXMwYnY5K2hNem9jYTFnMUZm?= =?utf-8?B?ZTMwYWtDU25lSDQ3UlhreTFub0dMRGZtNExEbTNIYnpsV05rcEZva2NXUEZp?= =?utf-8?B?QWxMQ21hbndyYnN0NkxsNTRVaEdDUE45aTJWdjBObkxnWXFPVExIc1ByOCtV?= =?utf-8?B?eEcxeHhpU3YyemtBclJ5S2p2TTBLVFdOejV2K05nU3VnSEYrZDFRNHJ4alJS?= =?utf-8?B?eTd2cE8rN0Niais2dEU0UGJCd1pCTEZnTTVCWnlmN0ZrVlBkSVNic3RJR3g1?= =?utf-8?Q?0Xel355siSUw8MkoT305oWw=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 4aeb396b-2355-4961-15e9-08d9e011fbc6 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:09.3858 (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: 5sh4ItDzOBeLTUCCIsJIuYCOQHeNWLrSkOJ/0lvhrQoLokMPsbF1Irse1PMVzjgkTi/fsDWR90lop1t7Cepk7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122237844100001 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 v6: - Pass the host policy to the newly created helper. Changes since v3: - Rename function to xc_cpu_policy_make_compat_4_12. Changes since v1: - Move comments and explicitly mention pre-4.13 Xen. --- tools/include/xenguest.h | 4 +++ tools/libs/guest/xg_cpuid_x86.c | 50 +++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 2672fd043c..df18c73984 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -817,6 +817,10 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_= cpu_policy_t *policy, bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, xc_cpu_policy_t *guest); =20 +/* Make a policy compatible with pre-4.13 Xen versions. */ +void xc_cpu_policy_make_compat_4_12(xc_interface *xch, xc_cpu_policy_t *po= licy, + const xc_cpu_policy_t *host, 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 af5b8e47f4..20fd786da3 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -432,6 +432,8 @@ 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; + xc_cpu_policy_t *policy =3D NULL; + xc_cpu_policy_t *host =3D NULL; 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); @@ -454,7 +456,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, =20 rc =3D -ENOMEM; if ( (leaves =3D calloc(nr_leaves, sizeof(*leaves))) =3D=3D NULL || - (p =3D calloc(1, sizeof(*p))) =3D=3D NULL ) + (p =3D calloc(1, sizeof(*p))) =3D=3D NULL || + (policy =3D xc_cpu_policy_init()) =3D=3D NULL || + (host =3D xc_cpu_policy_init()) =3D=3D NULL ) goto out; =20 /* Get the host policy. */ @@ -473,6 +477,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, } } =20 + cpuid_featureset_to_policy(host_featureset, &host->cpuid); + /* 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 @@ -496,23 +502,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); - p->feat.hle =3D test_bit(X86_FEATURE_HLE, host_featureset); - p->feat.rtm =3D test_bit(X86_FEATURE_RTM, 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, 0x8000001c); + policy->cpuid =3D *p; + xc_cpu_policy_make_compat_4_12(xch, policy, host, di.hvm); + *p =3D policy->cpuid; } =20 if ( featureset ) @@ -662,6 +654,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t d= omid, bool restore, out: free(p); free(leaves); + xc_cpu_policy_destroy(policy); + xc_cpu_policy_destroy(host); =20 return rc; } @@ -919,3 +913,23 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc= _cpu_policy_t *host, =20 return false; } + +void xc_cpu_policy_make_compat_4_12(xc_interface *xch, xc_cpu_policy_t *po= licy, + const xc_cpu_policy_t *host, bool hvm) +{ + /* + * 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; + policy->cpuid.feat.hle =3D host->cpuid.feat.hle; + policy->cpuid.feat.rtm =3D host->cpuid.feat.rtm; + + if ( hvm ) + policy->cpuid.feat.mpx =3D host->cpuid.feat.mpx; + + /* Clamp maximum leaves to the ones supported on pre-4.13. */ + 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, 0x800= 0001c); +} --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122245; cv=pass; d=zohomail.com; s=zohoarc; b=GPSuR0padgc8pwQgsbVbbOIcD4uJmZfF7AKoDlr77Z3CF2qkA+cp6NENo+tv2Zg/xyoeoxSr/PB7f0NnoWbRECWkPQZDE1QM28UPQtVclXfxgIchzXj26qkI5P+GeikfGqiHMz6kizVSm/QnPxpBQieCosXf5G2f3nHNLV+/ffI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122245; 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=CKBxmdpTfoOmyTPejv/3lOo/EtPuysXYY91sehS4dfs=; b=h/eNbb0F62lWeuWp5NjtTf+HFlJcvgc0qNc7wk3LWq+KrnzzkEz+SNcSyD96ssnwDPqN0k8rWLGbxSYuNZbSBFTJ2mbd+yTAuqQx6poI/TsjG3Rm1206SR+x55+Tei66Wpp9h3e/hP2VkGIDMVv39TuBI0uRgF646uy2sfZMim0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122245982417.87758616891745; Tue, 25 Jan 2022 06:50:45 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260415.449871 (Exim 4.92) (envelope-from ) id 1nCN9N-0006dX-Cx; Tue, 25 Jan 2022 14:50:25 +0000 Received: by outflank-mailman (output) from mailman id 260415.449871; Tue, 25 Jan 2022 14:50:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9N-0006dI-7c; Tue, 25 Jan 2022 14:50:25 +0000 Received: by outflank-mailman (input) for mailman id 260415; Tue, 25 Jan 2022 14:50:23 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9L-00033A-HQ for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:23 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 1ddf2291-7dee-11ec-8fa7-f31e035a9116; Tue, 25 Jan 2022 15:50:21 +0100 (CET) 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: 1ddf2291-7dee-11ec-8fa7-f31e035a9116 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122221; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=Eqx20PH3bAMsKhLusTbAGPfcJHTu0hK5IU+4+pHYn0U=; b=VIuaSNpQhrnGUEIM7heiAq8o+dDlzLTW77As6po1OUnHAxn32cuZjwk9 Jp8iQz3OPDqpsXEz4lzFjKTidNguUzTo0y4JFfngFectOmuUNo1gbWJRr VI7yW8PjSdAxUwxjBrXnUr/yqrS8QGyjhqyBooAUBZJ+OozaDl6P7CGWR I=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 5u/vxmqF48XsEYBr7dCsFG0wEywCXnBJ1Xi3TEQSOrpeaK+pPZxw1btriIUcPaznONxxMMPJsS jUhKh019TtuHuUR/E74/tK4QJm/g5TFUujNBGViIFN0TN3RK5vqyNIXIJGnjVL5P/zdrMQPgVA arsTHgyIb+aqH+R9stmkZ2P4XW5W2OCfVENhuJgaRQnYHpYOuo3xyEEPUzmYEhZEV5VlM2XaJY cR3NTo7+zs1njCskKWHDWKPiLc0UHLMcFsw7G3ng/0rOp3kI6qpnakbM7befImYdQSj/y2Pzfg aUnZIqb4neRuxnfVVvU6rtNa X-SBRS: 5.2 X-MesageID: 62635627 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:HdTC5aLOV0tr2qUUFE+RNZIlxSXFcZb7ZxGr2PjKsXjdYENShTQFn GsXWz2CPa7cMzD2Kd52YImxph4HvpKHmoAyHgRlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokcxIn5BC5C5xZVG/fjgqoHUVaiUakideSc+EH170Us5xrZj6mJVqYPR7z2l6 IuaT/L3YDdJ6xYsWo7Dw/vewP/HlK2aVAIw5jTSV9gS1LPtvyB94KYkDbOwNxPFrrx8RYZWc QphIIaRpQs19z91Yj+sfy2SnkciGtY+NiDW4pZatjTLbrGvaUXe345iXMfwZ3u7hB2Qrtdhk fpJp6bsagEnN/D9ku4AbQthRnQW0a1uoNcrIFC6uM2XiUbHb2Ht07NlC0Re0Y8wo7gtRzsUr LpBdW5LPkvra+GemdpXTsF2gcsuNo/zNZ43sXB81zDJS/0hRPgvRo2Uv4EDgWlq2aiiG971e eswdgZIcyidak10G31LIr0lt8qn0yyXnzpw9wvO+PtfD3Lo5A5+yr/2K/LOZ8eHA85Smy6wu Wbu72n/RBYAO7S32TeDt36hmOLLtSf6Q54JUq218OZwh1+ezXBVDwcZPWZXutHg1BT4AYgGb RVJpGx+9sDe6XBHUPHkbhqo+VGArCRAeNxeGrAL4guQ9LjttlPx6nc/chZNb9kvtckTTDMs1 0OUk96BOQGDoIF5WlrGqO7K8Gra1Tw9aDZbOHRaFVdtD8zL/dlr5i8jWOqPB0JcYjfdPTjri w6HoyEl71n4pZ5ajv7rlbwrbt/Fm3QocuLXzliPNo5GxlkgDGJAW2BOwQKHhRqnBN3BJmRtR FBex6CjABkmVPlhbhClTuQXB62O7P2YKjDailMHN8B/q2/1py/8It4BsWkWyKJV3iAsI2OBj Kj74ls52XOuFCHyMf8fj3yZVazGMpQM5fy6D6uJP7Kik7B6dROd/TEGWKJj9zuFraTYqolmY c3zWZ/1VR4yUP07pBLrGbt1+eJ1l0gWmDOCLbimnk/P+efPOxaopUItbQHmghYRtv3U+W04M r93aqO39vmoeLSuO3aMqd9KcwliwLpSLcmelvG7v9Wre2JOMGogF+XQ0fUmfYlklL5SjeDG4 je2XUow9bY1rSevxdyiZi8xZbXxc4x4qH5nbyUgMUzxgyooYJq17bdZfJwyJOF1+OtmxP9yb v8EZ8TfXagfFmWZo2wQPcvnsYhvVBW3ngbSbSCrVycyIsx7TAvT9966Iga2rHsSDjC6vNcVq qG70l+JWoIKQglvVZ6EaP+mw16rk2IaneZ+AxnBLtVJIR2++4l2MS3hyPQwJphUexnEwzKb0 SeQAAsZ+raR89NkroGRiPnd/YmzEuZ4Ek5LJEXh7O67ZXvA426u4Y5cS+LULzrTY3z5pfe5b uJPwvCibPBexARWs5BxGqpAxL4l44e9vKdTywlpESmZb1mvDb88cHCK0dMW6/9Iz75d/wC3R liO6p9RPrDQYJHpF1sYJQwEaOWf1K5LxmmOvKpteEiqtjVq+LenUFlJO0jegSNQG7J5LYc5z Lpzo8UR8QG+1kInP9vuYvq4LIhQwqjsi5kai6w= IronPort-HdrOrdr: A9a23:dim6ta3JqpR/3NtUlqmMlgqjBSpyeYIsimQD101hICG9Lfb2qy n+ppgmPEHP5Qr5OEtApTiBUJPwJU80kqQFnbX5XI3SITUO3VHHEGgM1/qF/9SNIVydygcZ79 YaT0EcMqyAMbEZt7eC3ODQKb9Jq7PmgcOVbKXlvg1QpGlRGt9dBmxCe2Gm+yNNNWx77c1TLu vi2iMLnUvqRV0nKuCAQlUVVenKoNPG0LrgfB49HhYirC2Dlymh5rLWGwWRmk52aUID/Z4StU z+1yDp7KSqtP+2jjfaym/o9pxT3P/s0MFKCsCggtUcbh/slgGrToJ8XKDqhkF+nMifrHIR1P XcqRYpOMp+r1vXY2GOuBPonzLt1T4/gkWSv2OwsD/Gm4jUVTg6A81OicZyaR3C8Xctu9l6ze Ziw3+Zn4A/N2KPoA3No/zzEz16nEu9pnQv1cQJiWZEbIcYYLhN6aQC4UJuFosaFi6S0vFpLA BXNrCd2B9qSyLYU5iA1VMfguBEH05DUitue3Jy+/B8iFNt7TVEJ0hx/r1pop5PzuN4d3B+3Z W2Dk1frsA7ciYnV9MMOA4/e7rENoW0e2O1DIuzGyWvKEhVAQOEl3bIiI9Fkd1CPqZ4i6cPpA == X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62635627" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dtgMNc/9nKTu6xrSplo0tkkhVA6bxISQ8yJb8WRZvF56l7e0LijgZKI+XeukS8yHWpflwV7evEhF7R17LZiXZCO9Yj9yUbEUOO5oQTUUYLq+ViVlit1MsyNzg3zPEs8swTn08SyFqIH33YBpxvTeyUSkU/LmwfrAq56gx+757OrPw9D2ern5RYL3bkkLvdj/ueEfDYFy7NtBjK2AciLVkBs2gFFGnMfOjU8dWY+JpVjH8wYrRr9a8pNy9Cmiu+0cRgdt7bz0zGmJoruUW2ibpTYr/HLy7VXWbbhkYZ0YLTJ74KJNrNpK19gF6Cf8Vhw3GS4YrF+edEfoPOYdIt6JQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CKBxmdpTfoOmyTPejv/3lOo/EtPuysXYY91sehS4dfs=; b=PgC8f4UxY/rcMjBlP0pqgErPtoJAavHrM0/vEBjdY4pl77VhzCBJQVv2u12wJQDTG38lxE+1+7RRRqaK7zhsyuj2vztkvxti9UQD014Q6+4MAE+vt16ZDSvtNX/KT24fE7EyysjdsCJHN1dblilQAylgqMHfbliAV4+xG2Ju9gWoxE3aoHYWnWK4coSX9dtXtT/vis9RI6MjoXdhvZ2aTa3mi/zY91bq2sQcSKPiw/kr0Pltr11xBzkWl0liufY4d3nEK3cWTBpbAtArURU6330zZ2kaWKvAeOeENA0O+uCPJ1RFEYAmcDembEe7zuKlVjhZqPoAymiJ7YUSOZdbOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=CKBxmdpTfoOmyTPejv/3lOo/EtPuysXYY91sehS4dfs=; b=Shb5ii9XBomzpNO0Dj17+qAzCDR9Da+5JR4lbVGZG5C7yAosmx3SI2z4uS19YNm+Urnoz5V10oP7yFO9KJMjTbymZtSyJmyykNgaILN8TvfjGsAvEyHvCHC1fSVFmqu+5U07hFTJ6tjG0unYG6YEyBfDNQ6Mpg3eatuBLTZB92s= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , "Anthony PERARD" , Juergen Gross Subject: [PATCH v7 06/11] libs/guest: introduce helper set cpu topology in cpu policy Date: Tue, 25 Jan 2022 15:49:30 +0100 Message-ID: <20220125144935.44394-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0012.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::24) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d6b5b9a4-275f-4dba-038f-08d9e011ff2f X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ByJYa4IQvVpBqu4zl+cNeB+mt2UQ+qLnlU6dF465ERgcraNQQewTPNI0h3ploPfkZT9RuEXHDmDJUzB5qIkKHNP2xkakuHY40/LZizWRgbtljJZReBqgoU/wq1VTaTxHYo5l0GlEJKop70Xz9Kqof0lgIP/kCW2RW1JsTsG9/SloFRaoQS04yu+YIqTgwoeWkj7tsNISOlpdyejFxNlFZGDfv+DRQw9KFyikylavsq4Dkngw3jJqZsxbexyfCfVa7ZQcGRWBLDnFa5GfrR7lxsxQ1vPVDhtztSXZidKwk5O5wKBfUWe84eYs1FqLgdcR8q3eKIyHyGA0xll7aNJ8pGezD7Z+O9VoineyYo3LmT1mmyimhvUPZBRTFHeefy2XPzIHwx+e49zB6p3IXDXJO4SMpJPW3URfZViVCJYtPHepvoyM2Bs0eUOz2rVSN9gHZcpyc0o9emtSHgIU8PNQEPtbERia4s/H97rFUlOGR/lZ+/6KEO8bNPOu+9W0osvaKPzU8orUkaYJF+uxKtObf3COfQM5OgyA8X2QoUrdzp9s5k7YdiqxUbY4eTwPFVkWnEhgT6PUtJEQy3Tq4NayzjMfWNDQDEWZlccg1ZwwLXoB9Hzm55NwK7CwW5u5RatHj47qOUhha0/veDiC64EFhw== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QTVuOHdVYmtyckErRE91bWZ4eGdOS1JzQVZTQkQ2eXAzZkxkTjJvTzFJVkhQ?= =?utf-8?B?WE5BTE1JdTVyK2h6c1AzV0cyckJTMWZQbXJOTlJ4MkhoUW4vakNnY1hUOVkr?= =?utf-8?B?TU1Eb3RCRFhDZ0NXU2ZROVFJQVc0T0liL28wcWkyQ3kzZjhQTTZtY201UUl3?= =?utf-8?B?SDFZUFRiZk5aVkNna2JLVlFPemt0QVBBaU1mcTRiWGxjemh6TElyNStvbWpN?= =?utf-8?B?QTNSUmRTbmVEelh4Z2FMOHAwYWx4L3M3MmFpbENNU0xKWlJPaG9CbTJVM0RN?= =?utf-8?B?Yi96VVluaExIQm42di96NFdHeVdLUHFGU3BoVG1DVThaVHVncUNLaFVlZ2Jp?= =?utf-8?B?bVQyNzJ3STljbHdPSWQ5MXk4WFV4M3hLTlhRaTRML2x0OEE0T3lWa29lMzl2?= =?utf-8?B?RFY3eDRtSXpidk0wQnVBOERzNUs0Q0VIVTFCWkpPeTZvaGZ0T2x2dkxFSzd5?= =?utf-8?B?eHA1UW9GVHZpa1duRUxWdzdlcW53dlhMYWdYVEpEelR0OHkyZTZnNWp2emxi?= =?utf-8?B?MCtpYnFKYnQ0RkhHdmxnQXpieXNaNHVyMEFKa2tJU2duTWdEUndlRzZFREJC?= =?utf-8?B?NERqWkVJUUtoTDZkN3RMOS9VQW5RUmhuVFlqQS93S2U0T2NUejdYOGQrMm1m?= =?utf-8?B?S0c3ZjViV2ZBUFh4QWFLOWV1RlkwNklNL3EwMHRCTjZzR0pRSGRTOWR5TmY0?= =?utf-8?B?b1BjZldBL3ByVnVHanZRT1JJVUFxbkJmQW5EYjlWOU5EYzM2dHRxVHJSc3pD?= =?utf-8?B?TkhQbWtveGdITXdrWW13NVlHa1VWWkdEamxWN0pqclBNbWx4bmVvbkF4VWNq?= =?utf-8?B?ZDdaeW5Ram9qbnhQdUVYbWtqMlJiLzd6bm9teW55UTRlWHMxQnZmdDcwRXhj?= =?utf-8?B?RE9SSkRReTJiMmVhSmlmRmpQb2pFc2d4T2ZpeFpPOVZoTDZvR1djeEY1ZlYy?= =?utf-8?B?ZXU1UmdsYVBEU09wR28ycWRBZzh3eExjZXhHNlhvZ2xzU0xvNWRUWWJZL2oz?= =?utf-8?B?b0N3RFBLMko0UlhPeUFyR3JqUTNFM21GampRRFdycVNMTWRIREN3Q0lLMWpj?= =?utf-8?B?TDhIeHY4K2dKaEhxUnZLdVRFOXc5K3NGVnZLamk0YWhVNHFEUnFGTjdpS2Rj?= =?utf-8?B?eGltYlRlZXFaUWdEZjk3UDVMbDdmTmtKdmhIQ21xbFhJNXIvUHVJeGw0RENy?= =?utf-8?B?NXh3QjRBOG13d1pxOFJ4QVBWSERWeE1rSFVyS3JnNlA2T1V0UlU1bVhlSzNZ?= =?utf-8?B?L2dKc1VxUkhVRTFtR1JvemNSVUp5ZGV2Vkx5amJqVWlBN0NUbExCSzhKUTcz?= =?utf-8?B?a3hMcDF0NWpKWlBrL21Gc0FtQi9wdzR5M2MrNUdTdktUREdTTjVSMzdhRzF1?= =?utf-8?B?SWU2YTVlS00xT1JCK2s0YkQ2ZVhzSkNUM2xvZkdjZmZUZGl3SlBCRHZTa2pw?= =?utf-8?B?V2M2ZWgzbER6QWNod1FUUkVPd1R2WjBiOHVjMk1QaTNEQTNBZk9jTFBmeTho?= =?utf-8?B?OVlXSXZsQTJoeUtKODNEazloTUYyTnBvdkt3M1ZnYy9wODg5a3NUZWhoRUJj?= =?utf-8?B?bzZzcU1qYzVNaUd0aTMvaGl2bUZSWDFJb2RGR3R5K3ZLSElsOXpxT2ZnZ3Fl?= =?utf-8?B?VWN5bUVTZW5IcDJLUTJXblI3b24xVGpMa2NhMmN3RGRCY296YVFKbnM5MDAv?= =?utf-8?B?cittQ0pMbDVBcEhJb2lNMWgya2hxRHBTTURoVkUzbEgvZjlUZ3k2WWxQNWhn?= =?utf-8?B?V3J6a05NNDJvQkZiMnJ3MDlZK0lrcE5ZdmZMSHRmR2VmTzBqYTQxL3FaLzlY?= =?utf-8?B?RVhrN1NZTVBvWk9SY1BicEphTWYraGhIUGxLZUdlaVBnU1BwVVlENmJTb0Nm?= =?utf-8?B?TDc2dWZJWEpxUS9ocFl0aEJOWTJWbG5QNE5sc1E0d1dJU2luVjlDOUxnL1VZ?= =?utf-8?B?SzhtaGlLN29NVVRTZzJVOExUaGxCdTIwT3FncHZoWmRDSlZldFJ2clVndzUw?= =?utf-8?B?S3M0Um9YUVJScW4zVFArVzNDQVpudERsMFBDeldWNjBvSzUvSTFZeUdrTjRW?= =?utf-8?B?VEVzS2FlSXdSSGxJbzVicHlyOXpUQ2Z3dGVuVnd0NUZJdFJXL0JDdXhHakdS?= =?utf-8?B?OUl1WWxBVGVIeVNGNWJudW1UL3UyYm1IVGd0MzMzQTlkb0NPaFU2Tm5KVFJR?= =?utf-8?Q?3F0vxh2YzaUmmZVyi5ZEQmw=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: d6b5b9a4-275f-4dba-038f-08d9e011ff2f X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:15.1535 (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: ntP8zfWioogsrYOpIBPzrMYfROx8XJGk+9AfpbKgK+VlQL531j4WvuHBCxTNPdCzRMFWrd5epiOwgu7Vvzt6Gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122247185100002 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 --- Changes since v6: - Pass a host policy to xc_cpu_policy_legacy_topology. Changes since v5: - Keep using the host featureset. - Fix copied comment typo. Changes since v4: - s/xc_cpu_policy_topology/xc_cpu_policy_legacy_topology/ --- tools/include/xenguest.h | 9 ++ tools/libs/guest/xg_cpuid_x86.c | 165 ++++++++++++++++---------------- 2 files changed, 91 insertions(+), 83 deletions(-) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index df18c73984..5e60f81192 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -821,6 +821,15 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc= _cpu_policy_t *host, void xc_cpu_policy_make_compat_4_12(xc_interface *xch, xc_cpu_policy_t *po= licy, const xc_cpu_policy_t *host, bool hvm); =20 +/* + * Setup the legacy policy topology. + * + * The `host` parameter should only be provided when creating a policy for= a PV + * guest. + */ +void xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t *pol= icy, + const xc_cpu_policy_t *host); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 20fd786da3..6d8d16eed5 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -429,14 +429,12 @@ 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; xc_cpu_policy_t *policy =3D NULL; xc_cpu_policy_t *host =3D NULL; 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 ) @@ -461,24 +459,14 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t= domid, bool restore, (host =3D xc_cpu_policy_init()) =3D=3D NULL ) goto out; =20 - /* Get the host policy. */ - rc =3D xc_get_cpu_featureset(xch, XEN_SYSCTL_cpu_featureset_host, - &len, host_featureset); + rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); 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; - } + PERROR("Failed to get host policy"); + rc =3D -errno; + goto out; } =20 - cpuid_featureset_to_policy(host_featureset, &host->cpuid); - /* 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 @@ -562,72 +550,9 @@ 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 ) - p->basic.lppp =3D 2; - else 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; + xc_cpu_policy_legacy_topology(xch, policy, di.hvm ? NULL : host); + *p =3D policy->cpuid; =20 rc =3D x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) @@ -933,3 +858,77 @@ void xc_cpu_policy_make_compat_4_12(xc_interface *xch,= xc_cpu_policy_t *policy, policy->cpuid.feat.max_subleaf =3D 0; policy->cpuid.extd.max_leaf =3D min(policy->cpuid.extd.max_leaf, 0x800= 0001c); } + +void xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t *pol= icy, + const xc_cpu_policy_t *host) +{ + if ( host ) + { + /* + * 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 ) + policy->cpuid.basic.lppp =3D 2; + else 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: In 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; + } + } +} --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122245; cv=pass; d=zohomail.com; s=zohoarc; b=SPh/f6v40PgSk/Wb8pRVCvZrbWKlR3ejoIBjOgDcfYyOg2PEKUSPc+Xdb5M2nY4y9hiCUAiyt4lYnu/XyVeWpkD1tjJ9x6OzBTMN/qNAFSPjzRezb15ZpP6oU+FNv0nGwom1dCORPDqbqHbnkrEHrd8/jMCX8trkpFyTN0Jg8/o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122245; 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=i5SdJW4L4cnkKhyxvx6qW9ANbG0AO2oH1BePie71Hvo=; b=kM2oGZafwiAwy/KaG8DQcb9DQYZYtxNwlu0PCr/UM7r9iJvuWKb/NQmG0Zb8/JeZbwVCQcSZWYoq+ly+3cVfErpEXNMeT1cgKoUXvS/OPuRyGOAL73gone1H3OJPxJzuUuFBGvxr3E6JcdqDo5XPQewi6RjrsXMgzoS21b7yzMw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122245676317.24821739020217; Tue, 25 Jan 2022 06:50:45 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260418.449881 (Exim 4.92) (envelope-from ) id 1nCN9R-00077J-LR; Tue, 25 Jan 2022 14:50:29 +0000 Received: by outflank-mailman (output) from mailman id 260418.449881; Tue, 25 Jan 2022 14:50:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9R-000772-HS; Tue, 25 Jan 2022 14:50:29 +0000 Received: by outflank-mailman (input) for mailman id 260418; Tue, 25 Jan 2022 14:50:28 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9P-00033A-RR for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:28 +0000 Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 20d22f4d-7dee-11ec-8fa7-f31e035a9116; Tue, 25 Jan 2022 15:50:26 +0100 (CET) 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: 20d22f4d-7dee-11ec-8fa7-f31e035a9116 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122226; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=lDIDZVb6t5MamQ41A+NyYPcTCeYrA/MdjwSZFQy8WBQ=; b=fjmZJwaRxS8F+UOKlK+eajEsTFuDnpxjUIEXNb7nRDvTmmvF/DzkuKxy hfraZIT8RfSxNtoryZ9D8/Fvr0Ds0s5rcHVMkv4J+38n3Wnlsl8+hb7Mq RlsgT1qewxZ6BKawMKS9OcCm54xiHDA31kgsvkMr/HKXDfb45xMmdIRkf k=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: /4tu2aQOqTy+hLp6kZeyDKlUaENKrTvE/R1IgRQDgCp+HlhJdIFqe8Q7fps9D2qkYxj8HOnDnT 8EncfjmiKlendAAq1UNct+K1a8n6dSCCH/aazlWC/wAiMORYFMebtOJ4lu+72cky2NbEBCQWXP 8PywGwCUrOxYsHM3NBkNrnPw1IVhB6onSaYkgkeh8XhQ7kHQGhXF2QlU+t3yGk6tE/A4yETxaf 7euTY0UJSc2N+fUA9tO9dlednhLtQMMVZ45kyDy8g7r7vtNlP+BmuI+2jQOBKByX8TYLTdDYa9 qvPnvsDQ9R1GWduk4azWGV9o X-SBRS: 5.2 X-MesageID: 63124361 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:YpUyyKksk8wjF+gyA9QhAzro5gxlIURdPkR7XQ2eYbSJt1+Wr1Gzt xIcWmHVOPeDZTOjL9h3aIrioUkBu8KDzdVqTVNs/n08FSMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA180IMsdoUg7wbRh29Q12YLR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 NFErYStDl8PBbSSvb48aBoBNhonZbITrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBNPsM44F/Glp0BnSDOo8QICFSKLPjTNd9Glr35oSRqiHD yYfQRBjQynhPgESAUsOEJA5pfjrln/UUTIN/Tp5ooJoujOOnWSdyoPFMtXPfceRbd5IhUver WXDl0zmBjkKOdrZziCKmlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiHqNpgYBHIJ2KPRkzVus8amNxj3AXndRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqSFo4LLUKjsjHi9dgcK RiupTN2ubgchNVjO06TrQGe2GLESnQko2cICuTrsoCNs1sRiG2NPdXABb3nARBodtrxor6p5 yBspiRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiD/JtgMsW4hehY4aq7onAMFh meJ5Wu9A7cIZBOXgVJfOdrtW6zGM4C+fTgaahwkRoUXOcUgHON21CpveVSRzwjQfLsEyskC1 WOgWZ/0Vx4yUP0/pBLvHrt1+eJ1mkgWmD2CLbimn0XP+efPPxa9FOZaWGZim8hktstoVi2Pr YYGXyZLoj0CONDDjt7/qN5KcgtSfCFlXPgbaaV/L4a+H+avI0l4Y9f5yrI9YY112aNTk+bD5 HamXUFEjlH4gBX6xc+iNhiPsZvjAsRyq2wVJyspMQr60nQve9/3vqwea4E2bf8s8+k6lax4S PwMesOhBPVTS2uYp2RBPMel9IEyJg62gQ+uPja+ZGRtdZBXWAGUqMTveRHi9XdSA3Pv59c+u bCpyijSXYEHG1Z5FM/TZf/2lwGxsHERlfhcRUzNJtUPKkzg/JIzc376j+MtItFKIhLGn2PI2 wGTCBYehO/Mv45qr4WZ2fHa99+kSrIsEFBbEm/X6aeNGRPbpmfzk5VdVOuofCzGUD+m8quVe ugIner3N+cKnQgWvtMkQapr1683+/Dmu6ReklZ/BHzOYlmmVuFgL32B0ZUdv6FB3OYE6w6/W 0bJ8dhGI7SZfsjiFQdJdgYia+2C09ASmyXTsqtpcBmruncv8erVS1hWMjmNlDdZfel8P44Sy Os8vNIbtl6kgR0wP9fa1i1Z+gxg9JDbv3nLYn3CPLLWtw== IronPort-HdrOrdr: A9a23:ch644q4mlwXFCwk2UwPXwVKBI+orL9Y04lQ7vn2ZFiY6TiXIra +TdaoguSMc6AxwZJkh8erwX5VoJkmsiqKdgLNhQYtKOTOGhILGFvAa0WKP+UyEJ8S6zJ8m6U 4CSdkPNDSTNykDsS+S2mDReLxMsbr3kpxAx92uskuFJTsaGp2IhD0JbDpzfHcGIDWvUvECZe ShD4d81nCdUEVSSv7+KmgOXuDFqdGOvJX6YSQeDxpizAWVlzun5JPzDhDdh34lIn9y6IZn1V KAvx3y562lvf3+4hjA11XL55ATvNf60NNMCOGFl8BQADTxjQSDYphnRtS5zX0IidDqzGxvvM jHoh8mMcg2w3TNflutqR+o4AXk2CZG0Q6q9XaoxV/Y5eDpTjMzDMRMwahDdAHC1kYmtNZglI pWwmOwrfNsfFL9tRW4w+KNewBhl0Kyr3Znu/UUlWZjXYwXb6IUhZAD/XlSDIwLEEvBmc4a+d FVfYLhDcttABGnhyizhBgr/DXsZAV9Iv6+eDlDhiTPuAIm2EyQzCMjtboidzk7hdUAoqJ/lp b525JT5cZzp/8tHNFA7dg6ML6K4xT2MGnx2UKpUBza/fI8SjnwQ6Ce2sRA2AjtQu1P8KcP X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="63124361" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jWxxymfO+xm7lzsZl18IKJ8ifsKXfSbQlSK9CNa4y5BojxTACQxJSTNBWBtJfGbJaj5wiQDPAhHULOgybPR6daGOCoQb01pXC8w607B6ZiVTfdHIFACME8p+7p7RChN2rKpjSpbRjo3lyRX3eCytRlPxTh0yCSGsrTmdK7WMvH9LrvaUuIdo8PPvrIqcSA4+ziLg4kIk9lOavMl2SkmGIhykQmjKCrcWuY72LSEs/nuvCymuJyoEGgJK6hv9fkvQ0todznSAI0AIXyp5x9PCTSYXq3PiUrHbuCeYKK1YhaQcyZsfvWbq6XrtIlibbjc2GwwQzQl3ZbtQ6nY75Xr58A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i5SdJW4L4cnkKhyxvx6qW9ANbG0AO2oH1BePie71Hvo=; b=arl7Ti4CAljTVZcILAT6m93JBm5X2jBP1D/Od5sVRwaYDKB3prZ87N3JXklvdA8CVurc/n/LsERKJRQG/wa9yYNQdBe27NSXOkxkqHdlRSmPvkuhymdutVI1PvOfE/NSzsI6Syg85ROkKBoNmtA/gK9DymQ9sgoG7hAtMHjtNlwv4oStB1dy5fOc6PlADEoIkGKz90Hpl1RPFTHg25P3k1HaUjkeMjtlkDQgtICBIxsOZHZ4X/eFbg9VswZ9ChTbkROCzh6L+JruC0QF2Zx9vIUf+J6iPV1vABWKfR8wIluRDKEiXeOOgE6LyqEW7X5+w3vJkMw2er7LJZX3mI+OXA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=i5SdJW4L4cnkKhyxvx6qW9ANbG0AO2oH1BePie71Hvo=; b=Hkfpk8PqJvBvf/h4bVns3/ytS9T23PYGwh7wSkiQLfJZFZVgBjiAHBfrljo1JjEkhpeB9I3t9MQvgC1cHBo3NNzBWaa1IQ6B5moAql+xqhVweJHHTD+QC+GzOkDWUOYT7vsqRcyC/nPeCT19+4hEwW10QZT7G5/W35sGBL72hE4= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , "Anthony PERARD" , Juergen Gross Subject: [PATCH v7 07/11] libs/guest: rework xc_cpuid_xend_policy Date: Tue, 25 Jan 2022 15:49:31 +0100 Message-ID: <20220125144935.44394-8-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0053.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::17) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fcf90436-44da-42fc-18a0-08d9e0120255 X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:65; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4/M9tjTP9PlX8iQoM/Vf9iWEktbwQgp90VaQvB8QhqraMSRb4PNmQzVjhqIbh/OnK7jHP/7UkXKAhBXRWFyTclrn8Uy+YRi0sgzScxgmLxq8TgJBeQuaVn+dW90gTHs0HQyA4RTuzKForKUGQu+t6oCjbTfnzBIrgVITHSYMm0CFCekVjR4kp0Va3ETgOV/YSx0pBof1WDibe7ZAgBujcVdJ0D7+MxBOgbMnqx5Xe8vST5vY+eayNQHuI1W3oXK3JzOvdpQ/X/x08BgQEtdwdYU4Azt+aV1QpFdSGuem+clUGw9JQgzNDzpkBk+0Pv7Xax91x5OTUqiduNeYKgYyqVbZjUbuNtljXs1ykkug6buUWBRdhN2gMlubivOqfZ49vidKtEC8S08MV8lETa0jmqrDGYKy3RcvcBudL/PRbi+1tAygb09mxn2wvw3z9GxGy4Qwe2rYkTua4ACoer9GwYIUmOLJDfFW2IjXgDn0Qs2dEo5kcjnsbQk79Mt5OqiF/RZNGmDmCxBs+my9/vhHgQVnUW2GBIoPO6dfGG50D20JlN7GBHKH38LAnduMufhw306tnpWaUJan/31O2AvY7p2Et+0cprSc5wOaZMaM9NY1i0kzsjcqDLS7hmGHxAukHgPlrClubqwBxN0LbBBTgA== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YnR1NGFjTnV6cmh1eE5GVDNtb1BxTDdldjVFUVpOeDgySkg2RW9KOUtIemFR?= =?utf-8?B?Sk9JdVBZKzJmTjZTOWZNK1Y1SWZJeGJMK1pQN1ByTS9kWUxFMXRzanBhNWYx?= =?utf-8?B?SXZNd1RqMHF2MXp2YU1LVGplWUpQN2dERm82VGFLTnBEcFVPL2JvR2p3RzFG?= =?utf-8?B?VkpOQjVlTDd5bDNQVTF0bVExcnhSR2Q2RURnWGJqRzdsUlNWOTVuNFdrYVps?= =?utf-8?B?NWR2OXVmZkhydytOckVQcGxvNTRSY0E0NmcrUkRqOXJ5eTY5OWJMN1hXbVFX?= =?utf-8?B?dUN4cTgzb0lCMHRtQkJpS2JKRDA1ZUFnd0xNb2xTUUxLTlpPRHArdGFvbFlS?= =?utf-8?B?VGVIamh0b1ptL3hMNk5OUnJ5ZE11cjk3T1RJb0wrTGlKYk1OeDlSNmtlbmdH?= =?utf-8?B?M2RFK2xGemhxVDVkR2hLZU12ZGhIZ2Z1QStSWGNsSFk4b2NWMmlnSEhLeTJJ?= =?utf-8?B?WE9td1N4MUF2dDFEQldDcFczY0VzSkNGWXNya1ErVjZCdElJQ2IzZ05WTWpT?= =?utf-8?B?TVRKRGlPMm0vSmdHY0xwUGVsYzlSV1RpWm9uZWtDZ0pvcE5TL3pmTDF3UzA1?= =?utf-8?B?aG1KZGcwaVhUNGdHYmhENVl5VUdSc3Y3aGR1Q3lIQXlES2I1bWMxMzlJd1p6?= =?utf-8?B?elZXRndPalZoL3FTMFVjUDNxUjJQb2RIZ0swZDRaR3pwb2cvU0JWdktWYW5M?= =?utf-8?B?QUpxMDFzMUZ2aXFGRG1DOUQ3Q1hWUnFFa0NZRTFDRjhYd1Y0ZnhiV1VpNWU2?= =?utf-8?B?RU5YbGhmUTVBdnZncVNpTkNoK2NmUDhlUmZFRUx4N0ZzSXBMSm1ONFBxQXM3?= =?utf-8?B?ZVpzZ3hXeXNSa3dvdXVIZlMrRnkvbnJGNHdnbnFFQndtNFIrajBpTk8zeCs4?= =?utf-8?B?Vktob3BNOHpING5iaGd2dkNNTkRrZldLY2M4T3cwVWZzYWFDd0pXanVVRlRZ?= =?utf-8?B?VVY5bzJwRDRwTGVMNFhkdzVENHpWMzdFQVkvUHVSUkYrV21KZkkzRk81RDl3?= =?utf-8?B?K1dlR3hXQUs5QkhiT09qaWg5ZXFEb2V0TFYyV1A3Y1VUV0dPOGVzbk5DOS9t?= =?utf-8?B?T2h5R0JQbjliQ1pXRWxiTWFSWHNQWHdqYnowendRTlpiQTVVbDUrcFdWTVZT?= =?utf-8?B?a2JsWEFub21JZkJPUkFGY0d5SlZPWllhSlhGcm1UUjIxMjl1Z0p5RkZnWVV5?= =?utf-8?B?TmhRd29Ic21BWWZJajdXQ091TGdSK2VVU0lJWCtObFFmV0VOOUJBYlRrWkoz?= =?utf-8?B?Q2NZdDhYQXp1eVlWMzNsdTB5MjdQTURVbHNYSVBwRS9hZi90d0pYbUZTQWI3?= =?utf-8?B?eWJmT2FmMjBYNnh2TEU0eDYwRVZzSEdqNC83a1doUDdDbWZSWjRaQndtOEtm?= =?utf-8?B?aW05UVM4VnkwOUlYY3pnYlZRd3ZDQmEvempWbVpxV1gyODRqZ0lJbzZsRSty?= =?utf-8?B?TTNsMWJicEFJNFpvL2FrY0hRQjd4TzN4TWhNbzJNR3hwL2o1Rnc3dkk0QzJo?= =?utf-8?B?Q1ZwVlgwcjZmR2Njb3JEeUF2L1FZT2xDOUUzSDdhakdnaUJjK2owOXJsc2Ux?= =?utf-8?B?eE8veDR1dGZOSnJPVlpiK2grMWhHNWNvYWxpc09tdy80TkYyTi9XVEZHbWx2?= =?utf-8?B?Q3BiWTN5a2tkaUt6UTdKVkRXc3BlOVJ0QUMxOFhzZkhZSHdNL2lDT0YxWWRJ?= =?utf-8?B?cWZ0b25qZWlOV0diL1ZOc21peVc1WnpUQUdCanFleGlOaXFieGZtQWtBMFZO?= =?utf-8?B?b0thUWVTK3ZHdGJIOE1CYUVIVndpQjk5QU1uTGdMeElJSExqNnlZdU9mU2dI?= =?utf-8?B?MlRxUEUxU1BVS1hSUFhKWXBPQ01xZ1ZmQzkvMDNTTCtGZklUblhac2hkME9F?= =?utf-8?B?UUdWdGhpOVpoeUpGOGc2anZBTC9ENTBSdkVFQm1lbElLdmNsU0hraWxCaVZZ?= =?utf-8?B?Z2poOUwycjBwNUgzWTlqUDBYS05FVStCUmxtSWtzTGZMWWNtai9URnhWRzlU?= =?utf-8?B?dnNOSms0NzdLSnkrd3JiM0VLNVhPYkU2NEphQ3FzWkRyY2ZGTjRGUEtlKzd2?= =?utf-8?B?dVVYM3E1aW13SHFHWlEwdmRsblRwQkU0Y1cxbDZHWGVWR1lQdGR2WFVNeis4?= =?utf-8?B?cVFWcWkrekdaZVlod2FudXFhNjRHN1lHZjRWVTc4ZndpSkVta2pKYW04SmVB?= =?utf-8?Q?VY3NpekdNF5tjGSoUsLt9Wc=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: fcf90436-44da-42fc-18a0-08d9e0120255 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:20.4518 (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: vjnJlXs7Q/OLnNIMNnFjBIKLME6Xe9dgxA75kxIEApHxsgKX/+5HbCxL5KmXBsoIh8InBrKp6NzpMXjdHdRowQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122247180100001 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. The find_leaf helper and related comparison function is also removed, as it's no longer needed to search for cpuid leafs as finding the matching leaves is now done using xc_cpu_policy_get_cpuid. No functional change intended. Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v6: - Pass a host policy to xc_cpuid_apply_policy. Changes since v3: - Drop find_leaf and comparison helper. --- tools/include/xenguest.h | 5 + tools/libs/guest/xg_cpuid_x86.c | 203 ++++++++++++-------------------- 2 files changed, 81 insertions(+), 127 deletions(-) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 5e60f81192..98a998f11d 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -830,6 +830,11 @@ void xc_cpu_policy_make_compat_4_12(xc_interface *xch,= xc_cpu_policy_t *policy, void xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t *pol= icy, const xc_cpu_policy_t *host); =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 xc_cpu_policy_t *host, + 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 6d8d16eed5..3503f21793 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -254,144 +254,99 @@ int xc_set_domain_cpu_policy(xc_interface *xch, uint= 32_t domid, return ret; } =20 -static int compare_leaves(const void *l, const void *r) -{ - const xen_cpuid_leaf_t *lhs =3D l; - const xen_cpuid_leaf_t *rhs =3D r; - - if ( lhs->leaf !=3D rhs->leaf ) - return lhs->leaf < rhs->leaf ? -1 : 1; - - if ( lhs->subleaf !=3D rhs->subleaf ) - return lhs->subleaf < rhs->subleaf ? -1 : 1; - - return 0; -} - -static xen_cpuid_leaf_t *find_leaf( - xen_cpuid_leaf_t *leaves, unsigned int nr_leaves, - const struct xc_xend_cpuid *xend) -{ - const xen_cpuid_leaf_t key =3D { xend->leaf, xend->subleaf }; - - return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leave= s); -} - -static int xc_cpuid_xend_policy( - xc_interface *xch, uint32_t domid, const struct xc_xend_cpuid *xend) +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, + const xc_cpu_policy_t *host, + 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; + xc_cpu_policy_t *def =3D NULL; =20 - if ( xc_domain_getinfo(xch, domid, 1, &di) !=3D 1 || - di.domid !=3D domid ) + def =3D xc_cpu_policy_init(); + if ( !def ) { - 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; - } - - rc =3D -ENOMEM; - if ( (host =3D calloc(nr_leaves, sizeof(*host))) =3D=3D NULL || - (def =3D calloc(nr_leaves, sizeof(*def))) =3D=3D NULL || - (cur =3D calloc(nr_leaves, sizeof(*cur))) =3D=3D NULL ) - { - ERROR("Unable to allocate memory for %u CPUID leaves", nr_leaves); - goto fail; - } - - /* Get the domain's current policy. */ - nr_msrs =3D 0; - nr_cur =3D nr_leaves; - rc =3D get_domain_cpu_policy(xch, domid, &nr_cur, cur, &nr_msrs, NULL); - if ( rc ) - { - PERROR("Failed to obtain d%d current policy", domid); - rc =3D -errno; - goto fail; + PERROR("Failed to init policy"); + 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); - if ( rc ) - { - PERROR("Failed to obtain %s def policy", di.hvm ? "hvm" : "pv"); - rc =3D -errno; - goto fail; - } - - /* Get the host policy. */ - nr_msrs =3D 0; - nr_host =3D nr_leaves; - rc =3D get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, - &nr_host, host, &nr_msrs, NULL); + def); if ( rc ) { - PERROR("Failed to obtain host policy"); - rc =3D -errno; - goto fail; + PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); + 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); - 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; + xen_cpuid_leaf_t def_leaf; + xen_cpuid_leaf_t host_leaf; =20 - if ( cur_leaf =3D=3D NULL || def_leaf =3D=3D NULL || host_leaf =3D= =3D NULL ) + rc =3D xc_cpu_policy_get_cpuid(xch, policy, cpuid->leaf, cpuid->su= bleaf, + &cur_leaf); + if ( rc ) { - ERROR("Missing leaf %#x, subleaf %#x", xend->leaf, xend->suble= af); - goto fail; + ERROR("Failed to get current policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + 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); @@ -399,25 +354,18 @@ 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); =20 return rc; } @@ -425,7 +373,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; @@ -554,6 +502,10 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t = domid, bool restore, xc_cpu_policy_legacy_topology(xch, policy, di.hvm ? NULL : host); *p =3D policy->cpuid; =20 + rc =3D xc_cpu_policy_apply_cpuid(xch, policy, host, cpuid, di.hvm); + if ( rc ) + goto out; + rc =3D x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) { @@ -571,9 +523,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.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122644; cv=pass; d=zohomail.com; s=zohoarc; b=T91NgfcotCcI/WujrsHSGKC6T5HAuCZjIfSZwrJCzbqKvuOYhyr+jVMzmp1DkHzB19UJFayDNgI7Zg08sPaINAdGj3qLsow7q1v2XxQgPJqRUr26v/GkO+UG1Vs16PEtGbYR7CszVD/TizBg02lxtf6Z0zfiXJGr91h3o8IzWfQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122644; 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=jVUUpETo8tBhrRG7mP8uRuKx+shqlWjcNlIhA6wzNMw=; b=eAEOlD6CngVcxg44xwlsCNwsdN8/O18ljLlVImZ2qoaSYJn3xPMRH3Ly5FU6698RV7heKtIyhO+fIpeDxjAouI4X61utJm+wUqL1eWE+KRy+OUr22DHdG3pZ0KxNVEPvUEvOyPa2OPxrkbXSCZvQ6vhVEn4f/sjfxc+QgYbphzA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122644671641.5234419312417; Tue, 25 Jan 2022 06:57:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260431.449903 (Exim 4.92) (envelope-from ) id 1nCNFi-0000gb-U6; Tue, 25 Jan 2022 14:56:58 +0000 Received: by outflank-mailman (output) from mailman id 260431.449903; Tue, 25 Jan 2022 14:56:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCNFi-0000gU-Ps; Tue, 25 Jan 2022 14:56:58 +0000 Received: by outflank-mailman (input) for mailman id 260431; Tue, 25 Jan 2022 14:56:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9S-000334-SU for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:31 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 0a2ea454-7dee-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:49:48 +0100 (CET) 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: 0a2ea454-7dee-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122229; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=dL8SRFdX0K4/Jxg/plqDNDhq7sj3+sWn0uTEuGyqdXE=; b=f1JO5tDaUCeX/OKJKfyVI6UPJohSgRuQTLdMcXgVXtgqXLynfVuZR/Xv pUnMRuwv32snXhcnE1O7z6iqIVOPPHm4kj266VES/HwLhTLmsg4b6rpxq gaZ348AmZ5sqIGE8nEfPKaReshmZIvf6ZosdyahPZ8sfJjrlwG2sMTLpL w=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: p+ezTLY20VA6JKIuQSxqZtJyALluGiflJ3VpgFK5ZPkBAF09QjBL5v9dtKNj/dM/PNHCT1+xwG V3Ya4Oevcj62Wz85CvHcXzjtJ/Z74vZY2mVSYP01rBy9qmWaIDcTx9tlsJa8Po+SgN72u++nU1 u+qDU1Ymp33d9+6n3Ndls9pH0swUjOLanD96mw/5HXQySkhz3e9gt0+Z8Fe+LGWq4zYl8PUlpj VCRycSd/WN1Ozx/QBE/4oJQbLfAQJdQmySN3/7K2utRlO/VVarvDP4umnIB/q6UgXcwG+pYSmU KUVIoE7eDtXImHaK1IpYL0Sn X-SBRS: 5.2 X-MesageID: 62717093 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:TEX0rq/akcNAtS1KqDumDrUDcXmTJUtcMsCJ2f8bNWPcYEJGY0x3x mZLDG6DP/qLN2KjedlwYIW+o0pV7ZPRnYA1QFdppHg8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy +1EN7Es+ehtFie0Si9AttENlFEkvU2ybuOU5NXsZ2YhFWeIdA970Ug5w7dj39Yy6TSEK1jlV e3a8pW31GCNg1aYAkpMg05UgEoy1BhakGpwUm0WPZinjneH/5UmJMt3yZWKB2n5WuFp8tuSH I4v+l0bElTxpH/BAvv9+lryn9ZjrrT6ZWBigVIOM0Sub4QrSoXfHc/XOdJFAXq7hQllkPhA9 NlLrJuJSzx0P7bB28c8UQV+CAVXaPguFL/veRBTsOSWxkzCNXDt3+9vHAc9OohwFuRfWD8Us 6ZCcXZUM07F17neLLGTE4GAguw5K8bmJsUHs2xIxjDFF/c2B5vERs0m4PcGhmhp2ZgfRp4yY eIcVWVKMTaeWSRLFUpPWYNlxOm432TGJmgwRFW9+vNsvjm7IBZK+LriKt3OYfSRWN5Y2E2fo wru/W70HxUbP9y30iee/zSngeqntTP2XsceGaO18tZugUaP3SoDBRsOT1y5rPKlzEmkVLp3N Eg86ico668o+ySWosLVBkPi5iTe51hFBoQWQ7ZSBByxJrT80jqVAHEDdzx6Nd09uYwVZD428 ESttoa8bdBwi4G9RXWY/7aSiDq9PykJMGMPDRM5oRs5D8rL+99q0E+WJjp3OOvs14CuR2msq 9yfhHVm390uYdg3O7JXFLwtqxalvdD3QwE8/W07tUr1v1oiNOZJi2FFgGU3DMqszq7EFjFtX 1BewqByCdzi67nXyERhp81WRNmUCw6tamG0vLKWN8BJG86R03CiZ5tMxzp1OV1kNM0JERewP hOI4V8Au8ANbSryBUOSX25XI552pUQHPY+9Ps04k/IUOsQhHON51H8GibGsM5DFzxF3zPBX1 WazesewF3cKYZmLPxLtL9rxJYQDn3hkrUuKHMiT503+jdK2OSDJIZ9YbgrmRr1pvcus/VSOm /4CZpTi9vmqeLCkCsUh2dRNfQliwLlSLc2elvG7gcbaclM5QzlwUqGIqV7jEqQ895loei7z1 ijVcmdTyUblhG2BLgOPa3t5b6joU4o5pnU+VRHA937ys5T6SYrwvqoZabUterwrqL5qwfJuF qFXcMScGPVfDD/A/m1FP5X6qYVjcjWthB6PYHX5MGRuIcY4Slyb4MLgcyvu6DIKUni9u/whr uDyzQjcW5cCGVhvVZ6EdPK1wlqtlnEBg+YuDVDQK9xedRy0oohnIiD8lNEtJMQIJUmRzzeWz V/OUxwZufPMs8k+99yQ3fKIqIKgEu1fGEtGHjaEsebqZHeCpmf6mN1OSueFezzZRVjYwqT6a LUH1ez4Pd0GgE1O79h2HYF0wP9s/NDovbJbkFhpRS2Zc1SxB7p8CXCaxs0T5LZVz7pUtAbqC EKC/t5WZeeANM//SQNDIQMkaqKI1O0OmymU5vMweR2o6Chy9buBcENTIxjT13ANcOoraNsok bU7pcobyw2jkR57YN+Jgxdd+3mIMnFdAb4ssYsXAdOzhwcmor2YjUcw1sMiDEmzVuhx IronPort-HdrOrdr: A9a23:Q8P5YK7Tlqr3XGCuLAPXwVCBI+orL9Y04lQ7vn2ZFiY7TiXIra yTdaoguCMc6AxxZJkh8erwXJVoJkmsiaKdgLNhQItKOTOJhILGFvAF0WKP+UyDJ8S6zJ8n6U 4CSdkONDSTNykCsS+S2mDReLxBsbq6GeKT9J3jJh9WPH9XgspbnmBE42igYyhLrF4sP+tHKH PQ3LsNmxOQPVAsKuirDHgMWObO4/XNiZLdeBYDQzoq8hOHgz+E4KPzV0Hw5GZSbxp/hZMZtU TVmQ3w4auu99m91x/nzmfWq7BbgsHoxNdvDNGFzuIVNjLvoAC1Y5kJYczJgBkF5MWUrHo6mt jFpBkte+x19nPqZ2mw5SDg3gHxuQxenUPK+Bu9uz/OsMb5TDU1B45qnoRCaCbU7EImoZVVzL 9L93jxjesYMTrw2ADGo/TYXRBjkUS55VA4l/QIsnBZWYwCLJdMsI0k+l9PGptoJlO01GkeKp gvMCjg3ocUTbvDBEqp/FWHgebcEkjbJy32A3Tr4aeuon1rdHMQ9Tpu+CVQpAZFyHsHceg22w 3zCNUdqFh/dL5nUUtDPpZyfSLOMB20ffvtChPaHb21LtBOB5ryw6SHlYndotvaP6A18A== X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62717093" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m8eXTc1PK0jHeMWTtnytvE0pxmTI+OuC7nXFGbsE7LdV7ZVsiqCFPm1JZok9jePiG++Znf17XrsabIhGAJV8sTY9CPwvIYXSB2AjQa33vq/WKWVmudKhZ9U/108qQ5WpUAodLxMb+UCxTJMwGRmeJtPwYVHvlOp1opjJR2OhZ74NQL3Eb6kZid6AgnT20EcNC7HoV87DazWYeTCB/ATk4HYvJYmDMX/diEcBfj8iINI1VDw23U84g9BTe/eRVv8QAVhiCHxfRYDrvgrwZ+So6W5ddDS/1CVwxF4AdUQXQFja1i9vGsKXuiNltNtr/TLoAh0ol+oEwzrryu/eSOzG5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jVUUpETo8tBhrRG7mP8uRuKx+shqlWjcNlIhA6wzNMw=; b=l0h95jcR7ithh8p+9RstWRg5Zgntvk431krhdR+0qx49l0uKW7t0uUksIHRsUUrCiqNCGhGT9PwqDIXj/Dt0h08zQ6/PUQfwi+i8cI0cBl6J7NbQNJbG/SCKZ0+SfIj72HTp+IhCtMK4+oyjp4NZFZHaXJ7mHbK41J1XsMbLfvnzpEb4j+ZZtn/IyE8DejnLCjkuI1IC+nG17MpMH5AcC/ex2k1ek5qEN7iDISeuDvnhirog1FOfMmdy1qCqWIDCqDEehRj7JVX0IZucv+bo+kzcj4GMJpYJcROhZ/XliBoCcQrQ6RHUZjvDPqh1SED+0Dqqwy3CrzSgegHfdfAktQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=jVUUpETo8tBhrRG7mP8uRuKx+shqlWjcNlIhA6wzNMw=; b=Sfln5mn8KpQmPMXOgyoDfMxwQo0c+IhTGxKLs/8EOy7hqDWcmkwTcKNwMudUynil+Hu+c/31WpJ/uYZZtQonsDhCEVjICZyZQrC0kxDWcaxGxj19OoUV/eca0ZkEOfv2L5tIu3d/noXtWyiBMV72jrKYE0aUp1ACHf18Sa5j3Cc= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross , Jan Beulich Subject: [PATCH v7 08/11] libs/guest: apply a featureset into a cpu policy Date: Tue, 25 Jan 2022 15:49:32 +0100 Message-ID: <20220125144935.44394-9-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0064.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::28) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0d9b4afd-a8e6-44f3-d5c8-08d9e01204fc X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mdd9GaC7W7k2D255AWG3S7Xc/rpsDTwp7NLJfwXLYf3YqWh4Yhaeji1OM9JXnEleBFr8Yj9d/6VlJS6WWIZeUUCW3livnuAunpOy1AhA8y+S9ls8pJTWFnYGCmRUIiTQO0v0xsrLGqe8WPfTP/I99bOtOa/W6Pha038mDPId6/A7n5goZVaOWn0RxU0PvEAcjgARspJ6wRKRDJSI6vXz9khy869VydPuce+tewC9XD1AcHaU7lhnenBtLhZ2efk6lYM9Vkn+GUDoVbfV/06TFHbejrNUYY5VNQYg9p/34Kq9HDMhRAJ6EtIL2UtvBLPSbM1jSy0ZeaW+0V4TlJeCbQtLzbpDGBUYVWQD0Ajcuc4kdjyvddKQQ6FlNLTI3HW5sAzwOZCfWE1IzbDYovCiEttOB8k4mhn/EYlStBnXyaMnR91+HyTCO109ipphUg59QQ4vNw2Qdp40taqq4+8eRmC4cqPeUwAaYQOR15mJCRsOTLVhutOiTfgqYQ/VNWufly91gADeYtqgk1fhSoIV6mjGDr7oDvBgsInJDGsdXQZLc+dv5634R69QxImUey+9NkqqOffkOYioE1nk90RPJYnOpN8KDOD/wHQA1ROKvlUkEVBtDj/i42BMNepItp0QjNQDDhHMhD2H08tLe/PVwg== 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)(4326008)(8676002)(26005)(1076003)(2616005)(6512007)(508600001)(6916009)(83380400001)(54906003)(36756003)(2906002)(316002)(8936002)(66476007)(5660300002)(86362001)(6506007)(82960400001)(66556008)(6666004)(186003)(66946007)(6486002)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TVBoa1RZTjNjUWJyTmdZaHJnM3N1aVhrUTJKSElDbGVZZTNyand4R3I0L2Z6?= =?utf-8?B?Q0xWTHBObXlhSlBOejRLakR2Q0tqajdTb2JXOVcrTG54SG9zUkxRSFkwR0xC?= =?utf-8?B?RFROQUN5cVhkOEpsbVVuZDFobDFTa1l1aHY3R00vL2J1RXZJdWc5cUg0cDQ2?= =?utf-8?B?bW9kMExzTVl0SW9FWTQ1aGYwVnpERC84TGJZOFhZZFFUUjFsS2N2dS9BN05a?= =?utf-8?B?RUZZYkIxRTdMdWRtYU5lS3VXb2lGT2VTakRlOS9rWEZ0MWorZ3FVZER2NXFy?= =?utf-8?B?UlJZWW50K2lFY2tJeG0xZUw4MzcyaUxOUE5MSDdCdVl3L3BUbWErMVZhMXRW?= =?utf-8?B?bHF3Y1lJYlpMU0xXRngxS2hneVgrcFREVFllZWVYWk5VUzFtMVBwd1pCYzd6?= =?utf-8?B?QmVJN2JaNm9pSHdNSldwSk1JNzlFM0tSL2VsMlFCVGl6L1NzcEFqM0l4M1R2?= =?utf-8?B?eEUvWW5kOEY3bDlGeXltbEs4Mk8yK3Z5YVlxYks1QUx0U1MzM3lXSlRjZmRu?= =?utf-8?B?Q3JPYzNmM0w0MXdsVzJ3Wmo4bWIwKzJ6ZDlBZ0lCcFp2YTFYYkdSRVNxV01u?= =?utf-8?B?RXlZcVl6YkxidzdpTHU0d21pR1NFNFc2dzJ5YXlQdkh3ei85TXJ4VkFJQXdZ?= =?utf-8?B?RHdia3hoTDkrdnpiWnZaZ2hUTnpaeFVYTGprOExBcm9pRXBEbEQ5VzlFK2JH?= =?utf-8?B?bWNqWnpKUG96cDZHTFYxOGVPOXlrYTY3ZXEwL2dpUVlOdmZObXZDWlRPWEta?= =?utf-8?B?MGt5bDA4UHZDUzFpZHpvKzFDNGh4UnloNHB3R1NHNnZmN1V6SGptK3k4d05U?= =?utf-8?B?eTR4cHhMWUdZL0dIeHV0dGQvb1dBSTJPSnBhZVpuVXh6U0dlcGZsUUZXbkk2?= =?utf-8?B?K0lmUDJtakRUSzNBWTFWNzhzUWNTaEx0RUYzSjA4NU52L0o4RDNnbXdrU0w1?= =?utf-8?B?R3pJdXpaRHZSVk5pd2Mrc2F2aUhEdE8xZWZaQ3BHNHVvTWVjZUwyQkNRTHFw?= =?utf-8?B?OTZDL0toZC9ibGJpRDF1VU5tSGxZd0FLbWV6VVlwYnRLZWdtcjFoSi9EMnN1?= =?utf-8?B?ZnZCR2NFNytRanRmRDBBaGZhS2RHTkY2aWRnSDdnbXlhRVBCUDNtTCtQdDhi?= =?utf-8?B?Y3FjK1VTNk1GVHlqVlVVNXh2TUN5ZlJ2TUVGZFNyTDVQTWcvVXhndTY5Ykdy?= =?utf-8?B?N0dEeG5NVHZXL1hhMk81NFpuRXFkb0diRG5HVldQcHRYVlhjWDdyZVZRVnVv?= =?utf-8?B?YzN5ZjVwalBLVklZNCtPR2ZlMGU1R1Y5amNoZzNEZ2RzdmxMaVhrb3BzU3VL?= =?utf-8?B?MTBGekhtY09idVZzWnV4ZnBvSG5qTXM3VCtYSEwwMTJ2QjJ1ZEttbS8xTXM0?= =?utf-8?B?RGUyWkExbGduTkpQOHhaSmJQUkNwWUg0NGNSR3VMeE03ekxyVVFqRnp4alMw?= =?utf-8?B?MERZNEJhVU5YOXYyM2hFL2ladG4vYWppREpJRDAwWDVTK2VoVU9ienFwWmpT?= =?utf-8?B?eElCaVR5ZlVQb0s3L1FWWmh0R21DOEE0dlNTMzFCekpiMngySzVubVhKRHN5?= =?utf-8?B?bGxYRkpONGZtUlUvNzJ4U09hb0FCV0xqUThLR3FhN2QxN2ZudnNkV2UxTjBB?= =?utf-8?B?Qk4xZHlZZS9iUWpTbVBXem5lcUFNMWZJUHhUeXNwNStpanV4bnkvSUFucEpy?= =?utf-8?B?T01YL3lFVkM4aTJwVGZFRkhSQVhmUDgzR2pMbmMxMkFOOE1NMkJPRjY0VXpW?= =?utf-8?B?M0ZnYmpxakR4RFh5bDNxeEJONDNTV0hVb21kTTFrWTV2a1YxTTdrSTNqcmZi?= =?utf-8?B?U0R1YVZsaEFtNThjdjlraElYZ2RrRGo0eHN1aTZibzEwY0ZkVUs1QTJ3Si9K?= =?utf-8?B?em8vdlkwTEd2UHU5eFY0UGxIVE5vNU44RmJmQnNLd0hQSjA3SEdGSDNxL0xY?= =?utf-8?B?WE9GRmFQMGtjRTkvUnJWeU1VRmJ2aVpSWExjZlhyeU40QU1WVFQ0VUtnT01M?= =?utf-8?B?dXVBZHJETk9IUG1KMkZpUG80WWdHOWd0MFhaQ043OVJVNWhabVF4bVZFOGE5?= =?utf-8?B?TUdsd3JaSGRhUUIxRW1HVm9nd1owbE45a05xRXc3amFDR2xFdHI1TFJCa3Nq?= =?utf-8?B?cWNGckFyZXBIcjJmUEE3d2VueENOelN4Ui9zdmszcWJXRXh5R09reGNzS1Vr?= =?utf-8?Q?6Xbr7Y/QTAsd1NH0g5g7nUc=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 0d9b4afd-a8e6-44f3-d5c8-08d9e01204fc X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:24.8441 (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: /jhhi2Qu+SD1l0nW+nxvUsBD09QWvOZXJ/wiC2DJwvsN160mO2CZrkv1ZM4Z4CBkHOdJoXATyjFPRaV2dCXQiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122647375100001 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 Reviewed-by: Jan Beulich --- tools/include/xenguest.h | 5 ++ tools/libs/guest/xg_cpuid_x86.c | 95 ++++++++++++++++++++------------- 2 files changed, 62 insertions(+), 38 deletions(-) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 98a998f11d..d3dc8719c6 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -835,6 +835,11 @@ int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cp= u_policy_t *policy, const xc_cpu_policy_t *host, 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 *pol= icy, + 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 3503f21793..a2e2f7c850 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -445,46 +445,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 { @@ -881,3 +850,53 @@ void xc_cpu_policy_legacy_topology(xc_interface *xch, = xc_cpu_policy_t *policy, } } } + +int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t *pol= icy, + 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.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122650; cv=pass; d=zohomail.com; s=zohoarc; b=L83prHmdwsSUQsV2JONuEUfoCYLaFvIfPowOuDYSM8/JsBNCqbFaYhhTtQVMITJouUDT2o98z9TsKhuSDs2/1M0DH7cO0ZZ5uvyqqA3lY/T2YKBLlNPdRobgINHriIA56eAPj1VA//bDS84lIikz1v85HuQE8Ivak2dva+HVfyY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122650; 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=xy74D5vf2Qvx7Y9yHQrLLnzYNT6ecHYlSdzOweNumGo=; b=i6jJWwN4N8YkjWqXs93K/6RybTLMNOIB3tFXScY9Kp8wg9go8ogwrlHoHgm0mzdxXvriRRX3S+9KH+dpS0wff/U+BzH101uN/pLy/wGviZInOeXn1PYJV9WMuysL6AGQsvj7HZmxx4PsYMr9cpwZLmXmBppx90FhZYDs/0A8rpc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122650844168.19217414281638; Tue, 25 Jan 2022 06:57:30 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260429.449891 (Exim 4.92) (envelope-from ) id 1nCNFh-0000OC-Kz; Tue, 25 Jan 2022 14:56:57 +0000 Received: by outflank-mailman (output) from mailman id 260429.449891; Tue, 25 Jan 2022 14:56:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCNFh-0000O5-Hu; Tue, 25 Jan 2022 14:56:57 +0000 Received: by outflank-mailman (input) for mailman id 260429; Tue, 25 Jan 2022 14:56:57 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9Z-00033A-LP for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:37 +0000 Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 268b31fa-7dee-11ec-8fa7-f31e035a9116; Tue, 25 Jan 2022 15:50:36 +0100 (CET) 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: 268b31fa-7dee-11ec-8fa7-f31e035a9116 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122235; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=GhalZGD2D4ReUCHvN7oqGy8w4o+0Nmnd91/EvCsNKkY=; b=X6XrYukwsdHlNtq1m7Kw7s5PTsreOXISyGxs7ELvc/1pn4sIy4jsfeqb c6m5gL/b1WQn9JjicsJrB2/hfK8/+XmHqYeSwrhD/1p79uSgRsXD51rQo aZ2MuD/4ej3L+leA5LD4XzvPHSl/RZ0RD964q92XYwB2/YTByxsY9avGz U=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: KZ73ny8FYS3S//ZfEdzkxd8uHUJaGlOLRpjpO0sqmyZXg50kUxonRe8/lHot//YXku4Ip9eGwt dvOa74+H3BZby/MXwW083Em6Fq+LRKDM98xyUB0EEpWtXHh+hi1/JQOkwaq7JLevdwUdTM9uar T35eB8lUIJkd6KUUVgwyIkDRVzcbgrN2bzucRC/qXECJgOnKW80zqfOvvu1APVhW8dwlDjxvzE fA25Ia6ImbaAo86Yd1nNCQVURAavMuqTEssU2TFuMOSVVu8EKkO96/Nu+n0yU8XWGLC/CeBBIN W7168KL20nvL/jNkmrzKZZnF X-SBRS: 5.2 X-MesageID: 62716602 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:LvnyB66D5yxPwwBQJYsaBgxRtNzAchMFZxGqfqrLsTDasY5as4F+v jBJXWnVOvqMNmL0KdFzad6+8RgOuZXVx9NgSQY5+HgyHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuV3zyIQUBUjclkfJKlYAL/En03FV8MpBsJ00o5wbZg2NMw27BVPivW0 T/Mi5yHULOa82Yc3lI8s8pvfzs24ZweEBtB1rAPTagjUG32zhH5P7pGTU2FFFPqQ5E8IwKPb 72rIIdVXI/u10xF5tuNyt4Xe6CRK1LYFVDmZnF+A8BOjvXez8CbP2lS2Pc0MC9qZzu1c99Zx tJVh5GtZgMVIoLOhvgPSQlCGhBnBPgTkFPHCSDXXc27ykTHdz3nwul0DVFwNoodkgp1KTgQr 7pCcmlLN03dwbLtqF64YrAEasALNs7kMZlZonh95TrYEewnUdbIRKCiCdpwgm1v354QRay2i 8wxNXlgNw74Yzt1JA05VZQ4kcyvjGfgbGgNwL6SjfVuuDWCpOBr65DvP8DSYceiXthOkwCTo Weu13v9KgEXMpqY0zXt2mKhgKrDkD32XKoWFaak7bh6jVuL3GsRBRYKE1yhrpGEZlWWAowFb RZOo2x38PZ0pBfDosTBswOQrnmcjBMBdN5sD8I49h2f0LrO6jeAPz1RJtJeU+AOuMgzTD0s8 1aGmdL1GDBi2IGopWKhGqS89m3rZ3VMRYMWTWpdFFZevYG/yG0mpk+XFr5e/LiJYsoZ8N0a6 xSDt2AAiroalqbnPI3rrAmc01pASnUkJzPZBzk7vEr4tmuVh6b/PuREDGQ3C94acO51qXHa5 BA5dzC2trxmMH10vHXlrB8xNL+o/e2ZFzbXnERiGZIsnxz0pSL4JdwBv24gdRYxWirhRdMPS BWP0e+2zMQLVEZGkIctO97hYyjU5faI+SvZugD8MYMVP8kZmP6v9yByf0+At10BY2B3+ZzTz ayzKJ72ZV5DUPwP5GPvG481jOF3rghjmzK7bc2rnnyPjOvFDFbIGOhtDbd7Rr1jhE9yiF+Lo 4832grj40g3bdASlQGOoddMdghbdCZibX00wuQOHtO+zsNdMDhJI9fawK87epwjmKJQl+zS+ Wq6VFMew1367UAr4y3TApy6QL+wD5t5s1whOikgYQSh13Q5ON7956YDbZonO7Ig8bU7n/JzS vAEfeSGA+hOFWubq2hMM8GlodwwbgmviCKPIzGhPGo1cal/SlGb4dTjZAbuqnUDV3Llqcskr rS8/QrHWp5fFR96BcPbZav3nVO8tHQQgsxoWE7MLoUBcUng6tEyeSfwkuU2M4cHLhCanmmW0 AOfABE5o+jRotBqrImV1P7c94rwSrlwBEtXGWXf/I2aDyiC8zrx25JEXcaJYSvZCDH+9pK9a LgH1Pr7KvAGwgpH6tIuD7ZxwKsizNLzvLsGnB98FXDGYln3WLNtJn6KgZtGuqFXn+ILvAK3X gSE+8VAOKXPM8TgSQZDKA0gZ+WF9PcVhjiNsqhlfBSkvHd6rOidTEFfHxiQkygMfrJ6PbQsz folpMNLuRe0jQAnM4regy1Zn4hWwqfsj0nzWkkmPbLW IronPort-HdrOrdr: A9a23:Cwltg6n3dtDepEMz7hy3CceY1T7pDfO0imdD5ihNYBxZY6Wkfp +V88jzhCWZtN9OYhwdcLC7WZVpQRvnhPpICO4qTMuftWjdyRaVxeRZg7cKrAeQfREWmtQtt5 uINpIOc+EYbmIK/PoSgjPIaurIqePvmMvD5Za8854ud3ARV0gJ1XYGNu/xKDwQeOApP+tdKH LKjfA32AZINE5nJfiTNz0gZazuttfLnJXpbVovAAMm0hCHiXeN5KThGxaV8x8CW3cXqI1SvF Ttokjc3OGOovu7whjT2yv66IlXosLozp9mCNaXgsYYBz3wgkKDZZhnWZeFoDcpydvfomoCoZ 3pmVMNLs5z43TeciWcpgbs4RDp1HIU53rr2Taj8A3eiP28YAh/J9tKhIpffBecwVEnpstA3K VC2H/cn4ZLDDvb9R6NqeTgZlVPrA6ZsHAimekcgzh0So0FcoJcqoQZ4Qd8DIoAJiTn84oqed MeQ/003MwmMW9yUkqp/VWGmLeXLzYO91a9MwQ/U/WuonlrdCsT9Tpc+CQd9k1wg67VBaM0o9 gsCZ4Y542mePVmGZ6VNN1xMfdfNVa9My4kSFjiWWgPNJt3ck4l+KSHqInc2omRCek1Jd0J6d P8bG8= X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62716602" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e03IFGgCyrCKx6s8lYZDWmksmJ1/MUigWozpwIjjZgWWKvnbJ8d43prPYJwUnBuHgruuHrKW5/ao50LsroqBFZnYf/MbFnwHdYLlrKRW4ODzdvG3UQPmNLEd33+Q3mH0LLlAPpmj9gZP57Y9FubxRbaPRLTRYZWZtjuMbWA6xOaHAv449onorb5n2FAvJJdVU2npaBOQQ5ZAHXgnBsb01dZoupYQ7uTVPe2pBt2rDQVXJVeaCKJ/rwlX9oC1iYMY7bLaMRB6pvVAcRgCOSAzF2P9Z1DCbaSVqQLDwU/6C/n2BiiQlw6aCen/myavke6FBKk3NqOr4yLxIEAft6Rj3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xy74D5vf2Qvx7Y9yHQrLLnzYNT6ecHYlSdzOweNumGo=; b=WSjjag2cAcbXGvjWxPZy/rs7oDDXugOI6Dh8XBCDk1wYByAVaCrdmnnSGf2UYPVGYB/CjmgMVTI/xBYeY2y1Abl/svq0FqTvlmwRzC+FnMuabG/AKWeZvxU+TSJ2EHNq47CPgrMaXzYMbOCvBGJNYCCbcCplOwVWdRDbOEf08KO4fMpDvZIoZhkFNkZd6iwo4sO70Gj/ezeyOCIA4YIOBhhg2Anay+rolKGv5rxbfCUyu9irbhlAqAcurQhdnc1O7Cv7uwFtuUwzcvhGnK7jxvJTuerojCMzCQwMI/PlRDi6BUGPLCs7/UzuymELow+mYbz4iDAThUqf+hrU9i7BAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=xy74D5vf2Qvx7Y9yHQrLLnzYNT6ecHYlSdzOweNumGo=; b=FCSCbgqiR2UNFF/StKyfOEk/rgyjvr+4O4F9jojSHOHqdBwtevSCuP2YdFIuP50MflQ08f/YEB3ETzY1ft5mm6XB2Z0AVTBu2A8q4NTfG+HeVUb3b29s6hjkPV+5VWwm1mM6trAMTdWC3DIdFPwxOVqbC+BcIEiIp8nuxU/Aumk= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , Anthony PERARD , Juergen Gross Subject: [PATCH v7 09/11] libs/{light,guest}: implement xc_cpuid_apply_policy in libxl Date: Tue, 25 Jan 2022 15:49:33 +0100 Message-ID: <20220125144935.44394-10-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MRXP264CA0032.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:14::20) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d8581d9-e099-4ae8-127c-08d9e0120868 X-MS-TrafficTypeDiagnostic: BN6PR03MB2868:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:299; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EnPmEdSM+GNjxA+KrzXQjxiITtPSImq/h1nPBhezpbsLBcuSQTC+geGOtP7k8k6XGEe/awt2Fk9pL/Q5CHhieW9xd17ViS7XAzPo63F9nHxYnyroJyJqS0tNxNTNtoKnY7+Fx9HJqBdFWibAc3tCkZ9QI8uUlYp8Rgq+qo/Uq56conE0e45eWS10K/cx0kxgDaRpWPpU7giIjtx6aOE/DJiZPENPI5aS3I67uC9oYQ0sgbI5hiwQeAXUBbMXZ9ybIjUhtYMnHIPmYnvvdAv9CN7AxUpwX8fbVZuFfM11c5rPIeQzeD1c4gMZSQllq4EJaEnuNWIz64TX+9kMtnfxeBMUcuUtWAIys6I0B8fbCJ1H2BU90MwcH1LAThiCC3ZpopUlIX9CBTOcovnWuNkVhomUHpC/+Yyd+Q6A878C6cLsKCJ4+StYOPHR6v8JGHSSelWKOPHcUrUSVsajrXy4kn0KvACxMn2H3TStXUdfSUb5NWGmQMXTcU3ceVivHJJDSnGAPIDhjW0ZUxxOmoBpOGVcKx+RB31fOTZHc12zhZsOUybK2IH8FM1eO3qXlZZlQy6vb3kArC1o/cTDRCevyFuHsUJ7X3DbBep30JXI7Dwg0kLRaaU1HtJkIDmjM9VlUWQOK4Z29sikJT8ITxalwg== 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)(66946007)(83380400001)(316002)(6512007)(186003)(82960400001)(2906002)(54906003)(66476007)(66556008)(6486002)(6506007)(8936002)(6916009)(26005)(2616005)(8676002)(36756003)(4326008)(5660300002)(38100700002)(508600001)(1076003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S0hFcWROb2YwaWlOeUtsK0VkVGtORDZKcTFNYWxaKy9FcktTbldQbjl1aStl?= =?utf-8?B?VDdvcjFMelEyd1dFV2NOMndjYURJSm4wbEFrNjlWVkxCdUJVTUg2S1cvWlBh?= =?utf-8?B?WW5qK05sUmZkSE5nNHQ4ZXRRUkw0U3lIQ3JSR0J1cWFhc0x0Rzg2NXgrbG4y?= =?utf-8?B?NmNHSkJya0JoVTBXd1hva3p1U0dZWit0Y0o0K3hrRERuUkNFRThIM1BQVXkw?= =?utf-8?B?OS83S3QyWjZJQ1krM0dVcUlMRWducjNIUXRCejhld1dWM0NqK05zR0RPYWFU?= =?utf-8?B?eXY5Y0krbFA4NkNVY1VnUkNXOXFUbU9aR3ROMk9wcEdoM20wTTJjTVJyMTk4?= =?utf-8?B?T0E4Y2pNQythWFNGcDNFN3RPZExBeWd1dTNTN01LT2lXU1I2eksra3VwcUR5?= =?utf-8?B?azJISjdUeW83ZVFZeW12S0dYYk9HVU5KWjY4Wm1TTG8wU1JSOFFoYUJtcUpZ?= =?utf-8?B?alJ1MXNqY2FjS2hNVlA5VXB3dHhXR3NLQ3d1VEdpb3ZlS0VZSWIrclkzM1Bm?= =?utf-8?B?TWl5alo3UVhNZHFqWlJjTWlKQms2NVJRTWRPSmZBWDdoNGdxaGt1TWpPalFy?= =?utf-8?B?L0x5NmFWbHBCOHhid3ErMDQ2aEo0ZjdGQlg2a05UU1JxR2tWOFR1dnNMM3Az?= =?utf-8?B?anRjMExRZGQ5UFY3cUN6K0daZXR1OGVHM2k3QW5OeEdrSUJpUi8xbDlta1RB?= =?utf-8?B?bEpkRTcyUWRBL24yZFJMY2tMNk5GbXVXSTFZSk9NWjgxY1lycm5iZ1d2UDFo?= =?utf-8?B?UFg2OFJJMkdxY0xmQ09SVEE2UmR3TnJhb3dVQzUyTEQ2dnp1alVQMS8zUFQ5?= =?utf-8?B?K0lVUDJzbFJnY1ZaUG1qeHd6MUdVdlBnQjRidWNNUGd2MStTV2J2bnNwZkJS?= =?utf-8?B?eW1peS9PbFphaWJrNmhhaDRIU1dtTlJvKzU2VWF5L2NaZ3RZN2JoRytGa3BU?= =?utf-8?B?Y01hTm1iWHhPMVBiZG83ZWNQZlJpWkVFMEVFUTZmcGJKL094S3BlSWNseHYv?= =?utf-8?B?Y3oydXc0ZU4wKzNTZ0J1RVluOEViRjdqdGx4eXhlUjVZd1FGMENoT24yQ1oy?= =?utf-8?B?aUNuVkNiNTQ4NDNnK05hRVBQTE5vd3F6TTNZTDlRWWdlNE1najY1cTVIaGhq?= =?utf-8?B?MFpBTTMrcHNXYjNFNmpYenQzc3lyN2I4NXJBZC81QzV2NXF4TnVESk5vR0to?= =?utf-8?B?NGVxQkxCNzVqSFVMS0VVZCtDRi9YZVkzR0t1cWZCY29oME5YS01iYjFQODJH?= =?utf-8?B?V0hjTWhjOHRjSjFQU1p5TEtEeHdKaUJ2VnY2QUtMdjRlVUcrNkFTc1VTcU9t?= =?utf-8?B?NFJYWWdOTzJ0U0ZDZ1J3U25pUDdaQ3VxTW5HUzZ4dGlKbkpJR1lhWW03UUlS?= =?utf-8?B?L05BUkRjZSs3blcrQW10QkJ4KzNldmNHQlVqd0tGanZGVXRWQm9FNWNzQ3FN?= =?utf-8?B?TXlJU0N6MVlING4zYzFDalVWUmlCcWNQczAvN3RhSFBzNC9KQXhVUnJxeE1T?= =?utf-8?B?SkZYYkVFZ1V3K0RDZzFRVnFUZ0lWZTB6d1ZKWUEvVHhMTFhsSUl4eTNxMXJ3?= =?utf-8?B?QUxibVJ2dmNnZy9yMG5oNVgvTk96RzJPTkIyNzU5UTVpUlhTRTdCMUxvTG05?= =?utf-8?B?Qm5tUjdocnNmRGtIU29JanRGNTNRYVUvTWNpRHF5SHc4MWNXVVdPL1NFRklL?= =?utf-8?B?am5yYkxhMlhJckVJUVZmMERXK2NKMFRZWHN3czVhbzBJamhMRGlxRnFqV1hN?= =?utf-8?B?TEhvWU14M1hlQ0dZdVNMRVZLNDlUV3d1SWpwUVJiRG91VzB2ZnByc09sMmRr?= =?utf-8?B?VVlyNmtWR1N2eWMvQkIzMnZBRU1zdnBtUER1UkNSMGE3QmN5QVcrdG90Z1dI?= =?utf-8?B?YStIVEVkdkJXQ3JWbmt5WVZIcjhyTWV2SHVVNGhjc0pPZVlER1pJZG9XQWhY?= =?utf-8?B?OGQ1NnF3VjBVRlM5TnprbVhLRkVZd01zWU5XM3lMUE4xZDBiOFdlYVJPWjk2?= =?utf-8?B?RldlWDRiejRKTi9VRUQ4RkNBQXB0bE9RdjNBVXdZYmN2ZEZoc0NjUnRNdXNo?= =?utf-8?B?WlVMVmJvMjBiVDgyZDRVN0Q5cmhoV3VJd0RVYkdTdVluUC9BN3ZPakxXM1BN?= =?utf-8?B?QVViNVg2cVN2Yzc2Z0F0MFB4SDlkeDZqbGp6VlNpcHFjbFp4ZXNvRGQySnp0?= =?utf-8?Q?vx+DVA8ysZF+5vQ1vPacN5E=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 1d8581d9-e099-4ae8-127c-08d9e0120868 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:30.6113 (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: HkEiPAukKUgPKBI2qLTLPJCvMs5YpP2Vo+A9F9AWDJ2IvNh2c9RqiOpMdkP53udxu70wtkIBWOzyBFkTgpjUDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2868 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122653223100001 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 v6: - Use a single call to libxl_cpuid_parse_config in order to add the extra options. Changes since v4: - Correctly account for PVH guests being HVM in libxl__cpuid_legacy. - PAE option is only available to HVM guests (_not_ including PVH). 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 | 133 -------------------------------- tools/libs/light/libxl_cpuid.c | 73 ++++++++++++++++-- 3 files changed, 67 insertions(+), 157 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 95bd5eca67..745d67c970 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1829,24 +1829,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 a2e2f7c850..28993f0356 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -370,139 +370,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; - xc_cpu_policy_t *policy =3D NULL; - xc_cpu_policy_t *host =3D NULL; - 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 || - (policy =3D xc_cpu_policy_init()) =3D=3D NULL || - (host =3D xc_cpu_policy_init()) =3D=3D NULL ) - goto out; - - rc =3D xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); - if ( rc ) - { - PERROR("Failed to get host policy"); - 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 - : 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_compat_4_12(xch, policy, host, 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; - xc_cpu_policy_legacy_topology(xch, policy, di.hvm ? NULL : host); - *p =3D policy->cpuid; - - rc =3D xc_cpu_policy_apply_cpuid(xch, policy, host, 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); - xc_cpu_policy_destroy(policy); - 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 e1acf6648d..6c8643fcca 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -441,9 +441,13 @@ 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; + xc_cpu_policy_t *host =3D NULL; + char *extra_feat; + bool hvm =3D info->type !=3D LIBXL_DOMAIN_TYPE_PV; 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 @@ -454,6 +458,38 @@ 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(); + host =3D xc_cpu_policy_init(); + if (!policy || !host) { + LOGED(ERROR, domid, "Failed to init CPU policies"); + rc =3D ERROR_FAIL; + goto out; + } + + r =3D xc_cpu_policy_get_system(ctx->xch, XEN_SYSCTL_cpu_policy_host, h= ost); + if (r) { + LOGED(ERROR, domid, "Failed to fetch host 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. + */ + xc_cpu_policy_make_compat_4_12(ctx->xch, policy, host, hvm); + + xc_cpu_policy_legacy_topology(ctx->xch, policy, hvm ? NULL : host); + /* * 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 @@ -481,14 +517,39 @@ 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); + extra_feat =3D GCSPRINTF("pae=3D%d,invtsc=3D%d", pae, itsc); + + /* Set Nested virt CPUID bits for HVM. */ + if (hvm) + extra_feat =3D GCSPRINTF("%s,vmx=3D%d,svm=3D%d", + extra_feat, nested_virt, nested_virt); + + rc =3D libxl_cpuid_parse_config(&info->cpuid, extra_feat); + if (rc) { + LOGD(ERROR, domid, "Failed to set CPU features: %s", extra_feat); + 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"); + /* Apply the bits from info->cpuid. */ + r =3D xc_cpu_policy_apply_cpuid(ctx->xch, policy, host, info->cpuid, h= vm); + 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); + xc_cpu_policy_destroy(host); GC_FREE; - return r ? ERROR_FAIL : 0; + return rc; } =20 static const char *input_names[2] =3D { "leaf", "subleaf" }; --=20 2.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122652; cv=pass; d=zohomail.com; s=zohoarc; b=NMWM+TYZdUPMZbV4q9IRFMqSCDTOp/WtKYJuEp5OZfrPhToxsOGuDXngdCXAcZIbsvwLqmKTweqR4SPfC45N9n2XgjXghG/2b00QbgJqJ5N/LNyybLUF4z7oEhZYCj+aX150MC0s0MbLJCr6ULZj/T5YqUNUH6btq1WMCO42mfs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122652; 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=9G62e2hBbVhYAB3n0yWh3Gd7eGWHgXrSNMck4M9bn1U=; b=lqVLJAhHWfl0VRvqyQf7nBjXXzATBSIrJS+LHAab6iic0lKmayM113pSPzomV/bb23SIie9oma36qKvQ29Z2vPD5qZZkuZRDwPWFnJeF+TQL2BVeUDkLGECd/WX66ooB6U4b2EAo43ITfG+6yo1nwznaj4Uhp07miN5PdOg8B88= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122652785916.6074226343216; Tue, 25 Jan 2022 06:57:32 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260432.449908 (Exim 4.92) (envelope-from ) id 1nCNFj-0000iz-Ap; Tue, 25 Jan 2022 14:56:59 +0000 Received: by outflank-mailman (output) from mailman id 260432.449908; Tue, 25 Jan 2022 14:56:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCNFj-0000iA-24; Tue, 25 Jan 2022 14:56:59 +0000 Received: by outflank-mailman (input) for mailman id 260432; Tue, 25 Jan 2022 14:56:57 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9k-000334-4U for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:48 +0000 Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 148dc079-7dee-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:50:05 +0100 (CET) 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: 148dc079-7dee-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122246; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=KehW/ppR9KkdMz2wBJMq+fcXNAE0ZsiGBu8urAjaEOk=; b=RpZbS58OEmFVH4At5y+cl+B+dzVv9dqeqiPnwSIMBFxyL9xOsE7aA0nF 7Cl4GBF6al0xn8q1evaArMSClw8vrrLwNkvTKLkZJXnecYMsa9cvhuS15 P4evDq0pmRY7phZn3jDzYw6matGtC+houFpHiYTZJ7N3G2/Jgyzq33Ovg Y=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 4P91bjosiRIYw1kXSUMChskYapjw8Qjf3faiNc9mA4B+qRxoPa7E+N6Ohl+KScvZBK5WBzIENN N16cPsS+QV2tAH51mwUbZYhEuJIhYmjoh4zhVbwSLe1QNdLjF3VKjqNI2oW6/8h5G/9Y4PEJ9x 5DWN3jc0BY4luZp2FUgVBIWjL3GrsYFOqEOMOPYI3Yb4wygCo+Rbh0m1tpLKW3Tdv9WDj+Fi/m rFqG5rrpS1+S56kZ6ikC3ysoSLZDYmIgCWOZeXBiq613HyRHWsWs2HLydpq0/k3iwl2nedQBQK pcaC0Vgw5P3Ssdz9qvJJ2srl X-SBRS: 5.2 X-MesageID: 62635697 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:03I+oqnHQSeR1OTOFAdA5nTo5gxlIURdPkR7XQ2eYbSJt1+Wr1Gzt xJNDD/XM63ZM2P2KYglaYXkpEtXvJbUyoVqHgo6+yEyRCMWpZLJC+rCIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BClVlxJVF/fngqoDUUYYoAQgsA180IMsdoUg7wbRh29Q12YLR7z6l4 rseneWOYDdJ5BYsWo4kw/rrRMRH5amaVJsw5zTSVNgT1LPsvyB94KE3fMldG0DQUIhMdtNWc s6YpF2PEsE1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXee0v0XRYRQR4/ttmHozx+4 Ilvj52vDg44BaPzvcA/YkIBAisgHoQTrdcrIVDn2SCS50jPcn+qyPRyFkAme4Yf/46bA0kXq 6ZecmpUKEne2aTmm9pXScE17ignBNPsM44F/Glp0BnSDOo8QICFSKLPjTNd9Glq2JsTQ6eBD yYfQRFzYw6QTiBqA3MOIrJjm7qwtGvfTiIN/Tp5ooJoujOOnWSdyoPFMtXPfceRbd5IhUver WXDl0zmBjkKOdrZziCKmlq8i+mKkS7lVYY6ELyj6uUskFCV3nYUChAdSR28u/bRt6Klc4sBc QpOoHNo9PVsshzwJjXgY/GmiCKmhB8DHNNBKOMFzSWv+/GN8gzHJUFRG1atd+canMMxQDUr0 HqAkNXoGSFjvdWpdJ6NyluHhWjsYHZIdAfucQdBFFJYuIe7/OnfmzqSFo4LLUKjsjHi9dgcK RiupTN2ubgchNVjO06TrQGe2GLESnQko2cICuTrsoCNs1sRiG2NPdXABb3nARBodtrxor6p5 yBspiRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiD/JtgMsW4hehY4aq7onAMFh meJ5Wu9A7cIZBOXgVJfOdrtW6zGM4C+fTgaahwkRoUXOcUgHON21CpveVSRzwjQfLsEyskC1 WOgWZ/0Vx4yUP0/pBLvHrt1+eJ1mkgWmD2CLbimn0XP+efPPxa9FOZaWGZim8hktstoVi2Pr YYGXyZLoj0CONDDjt7/qN5KcgtSfCFlXPgbaaV/L4a+H+avI0l4Y9f5yrI9YY112aNTk+bD5 HamXUFEjlH4gBX6xc+iNBiPsZvjAsRyq2wVJyspMQr60nQve9/3vqwea4E2bf8s8+k6lax4S PwMesOhBPVTS2uYp2RBPMel9IEyJg62gQ+uPja+ZGRtdZBXWAGUqMTveRHi9XdSA3Pv59c+u bCpyijSXYEHG1Z5FM/TZf/2lwGxsHERlfhcRUzNJtUPKkzg/JIzc376j+MtItFKIhLGn2PI2 wGTCBYehO/Mv45qr4WZ2fHa99+kSrIsEFBbEm/X6aeNGRPbpmfzk5VdVOuofCzGUD+m8quVe ugIner3N+cKnQgWvtMkQapr1683+/Dmu6ReklZ/BHzOYlmmVuFgL32B0ZUdv6FB3OYE6w6/W 0bJ8dhGI7SZfsjiFQdJdgYia+2C09ASmyXTsqtpcBmruncv8erVS1hWMjmNlDdZfel8P44Sy Os8vNIbtl6kgR0wP9fa1i1Z+gxg9JDbv3nLYn3CPLLWtw== IronPort-HdrOrdr: A9a23:Snyz6699adVoL87wYnhuk+FAdb1zdoMgy1knxilNoENuHfBwxv rDoB1E73LJYVYqOU3Jmbi7Sc29qBTnhOJICOgqTMqftWzd1ldAQ7sSi7cKrweQeREWs9Qtrp uIEJIOeeEYb2IK9PoSiTPQe71LoKjlzEnrv5al854Ed3AVV0gK1XYfNu/0KDwSeOEQbqBJa6 Z0q/A37AaISDAyVICWF3MFV+/Mq5nik4/nWwcPA1oC5BOVhT2lxbbmG1zAty1uHg9n8PMHyy zoggb57qKsv7WSzQLd7Xba69BzlMH6wtVOKcSQgow+KynqiCyveIN9Mofy9gwdkaWK0hIHgd PMqxAvM4Ba7G7QRHi8pV/X1wzpwF8Vmgnf4G7dpUGmjd3yRTo8BcYEr5leaAHl500pu8w5+L 5X3kqC3qAnQy/orWDY3ZzlRhtqnk27rT4JiugIlUFSVoMYdft4sZEfxkVIC50NdRiKp7zPKN MeTP002cwmMm9zNxvizytSKZ2XLzgO9y69Mwk/Upf/6UkSoJh7p3Fos/D30E1wsK7VcKM0lN gsBJ4Y4I2mfvVmHZ6VO91xM/dfcla9OS4kEFjiaGgPR5t3c04klfbMkcAIDaeRCds18Kc= X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62635697" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CFaOzvXTijBzXfbH+Dw9jr3JeDu1KNm/bA3/w+I0r8EEcJJOW4u4l+JSn4yfgFFjQ0E5h3qte5XFtoPPziIo4Nvcqhf0cRO3DZ/F1OExCgpiDUgr3xAogB1yEES07U48hEc/sejEbnyP4KOdl0B7u1FLaDp33hFyox71P3Hi6ZgBuoPmfvN5c8rsYe/ig/5M0aP+zhLSTLLYel+jG0ZCJAqMKStwYq/U/MQUEqo5NrukzTZq3flvWCjzTqsGTR8I55yuoNoHfzFSLo+cSRDFHPpYlyO5/MjlxflXhjIwFrQRKA5u3IO7zLwdAq4nYsJsojVJuiBcpse5EnzLVtx7iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9G62e2hBbVhYAB3n0yWh3Gd7eGWHgXrSNMck4M9bn1U=; b=EdgZQRfgLBRbKasKAOA+mMfp/nzbefhzyVAHBov362O/heM/DMOIpHjmEQCPqDwBYCjvAaa9QLXLeNmOAHH5VH8OT8yZ0rO8aBo12T3N1CvYBzFEfYCeYP1Mmn8csLOLF7+VimLiA8Jdt+zGEZWVCDIV4QW6LLC5tKXDo0RsJ0QYgYD4Dyq87DSgBuafjh2gnucNG/ELpOPto2uhWWe8ACjQMstewsWd0ksiuIOWkpPaO8Y7NLZ4bmcIiBeweA2gVGLShNENL2GTQIXra+Qv+bXR/lo3g3QVIF67HTjQF3Lw4g5WdQ7zxNIeq2ABpDERJE7Je3kRABzm4pxexCMRPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=9G62e2hBbVhYAB3n0yWh3Gd7eGWHgXrSNMck4M9bn1U=; b=FgssMfY6DchmtrnY1tVtEWsjzQ9bNWvwiRkT8UMriTAvxZMDFCKbvRy0bToHnofzrrONBhVNP9zisDZ6MikB6eB3pCEPjFAV5n7OBkh3kEOPLs0wd1H/INL4u/amajjptPUqomIt+XJ2O9dZYQvk1VrTvxiZRUUS+1i03742FFE= From: Roger Pau Monne To: CC: Roger Pau Monne , Wei Liu , "Anthony PERARD" , Juergen Gross Subject: [PATCH v7 10/11] libs/guest: (re)move xc_cpu_policy_apply_cpuid Date: Tue, 25 Jan 2022 15:49:34 +0100 Message-ID: <20220125144935.44394-11-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0121.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::13) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bd901446-67cc-43c2-2d9a-08d9e0120bad X-MS-TrafficTypeDiagnostic: BN6PR03MB2868:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:238; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 36tFJma5s68NyISKEJ13CCY1OCO+uW8EQOiUH1nyYZdfHcQq4UiA9ke61/R6/mmcSrJPY67e4qRNrtGj5S4t6HBi+418P8B5dp/gJd2+4RWPa/u+O1+zGk8P1bA0Hytsheg3CtS1XmBOgL+UWHy5SgE9GF7awehADfUG7Dun6/mQdcnKUJW00/vrgdx4gBaV/pPhKACQszEqP/j52YqKhSUH3VukdWy4nHH05AkUbQI2tN3REvCslNwlv5sc8KPawnHa5w9RWRF3zR7JZU1CQ0RXum9/YGWrpFJ6eleQov+6DIUIOwXpecHNgAdKUDOOWOLo2q6vLOOBjTnl4goJgGsYPtVjiaV7Vvzcc+oNyjlgNaKv+nRW1U4m9p+fIavnljLqVOiEEkN1dVDQarPVHnHhVy5XJPxaZQky3RNkDNyt/b/5F64hzU590bdQGX0O7NctMI27yrsOr7NpW+NCTeWiT5avh6agRhQ2ojC03WMloSCqoNGgWCX9hrTt5jP4SDd4ANfZjMWypPG+S9SelZbNDA6IHfnvLG/OqQZAl2/TSo8E/uy6aBsh/FxvqHbwLZ4Z8e3buVwuh1AzTRjpsFmgFPAnqhYvlwD33E/hG5XygXNd9RXFzJyS3yuiv8MLQxRLVdLKVRTeYcxdlWZn3g== 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)(66946007)(83380400001)(316002)(6512007)(186003)(82960400001)(2906002)(54906003)(66476007)(66556008)(6486002)(6506007)(8936002)(6916009)(26005)(2616005)(8676002)(36756003)(4326008)(5660300002)(38100700002)(508600001)(30864003)(1076003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R0hMVGhkUFFSOEx3MTFqcW8zMEZXcUg1WlVTRk9iWFRrdnQ3MlNhQk1Gc0cw?= =?utf-8?B?SCtjSHlRNzVQTFdpLzRSRFUxSUVENlg5S1lrVmI0eHpkRC9vZXJpd2RibzY5?= =?utf-8?B?Ti9WY3NSeThvdWJpRUJoVEZ3djYyY1BCR2YxVGVZU0dQRjhVbVBOTEhmbnIr?= =?utf-8?B?Zk5TRGlUT3AwalJSVDVITGlNcTdDUk9iOWp1Tk52TnpTdGp6Q1pHdFZCaWhP?= =?utf-8?B?UkYxb3JsVHVRUHNYdUxYbnpDSDJ3VGFtQkVuM21NL3V4dk00MDN1dFk1U0RT?= =?utf-8?B?UTVUSXBLOWYvQkJsNnVya3ZCcVgzS25JQVd0cnV4a0FnOXZXR3JTSkhCajU2?= =?utf-8?B?c1NxN3VKTlExaUR3b2ZnOEtYV0xpVlJpVTRueEU2UHFFZTEzYXVDdGw0bXpk?= =?utf-8?B?RTB2NHROenhUTnhDY2piOVZCVi8zaVdGcGo5WklUS2xIdjY3N09DK2NSbGNL?= =?utf-8?B?MFloK3JwMDJPSXBFK0VPcE4rMFpEbTJuNnNkYVZiT0lZRSt3Wm9BV0pWazRw?= =?utf-8?B?L3hvZlVGVXR1U1kyWnJ5NExMbGpOL0IzTWg2REdPRk5UQXZJb2hNSmJSRXov?= =?utf-8?B?VkRXSFRqb2JNbVpFd3RnWmJBMmVxYS9xYlFwaWMxWjYxenJwZFg1UG81Yjhy?= =?utf-8?B?czErbWoxU3I1d2tIZFV3cFB5aklXMTRkNXVFTzVqcUNXd1F0dHc2bkFGd3I3?= =?utf-8?B?eGsxWkUreWZZUUdqcG5mVlREejVkZUl0Z2sxZTFhbEdaOXV2alRwMU5yYkU2?= =?utf-8?B?dGhZYnY0RjR6WC9xak5sWEVPYy9BTnVNQlcvTUZ0RWxrNDBhSTUxMXJkMmha?= =?utf-8?B?cm1vT21MZlZDK3FHK2JuSXpuMk80cml1anFHckM5WUZpd2tZc1dXME9CYzhN?= =?utf-8?B?Q1pqTlB5eStmMUJUbGVmQ1gwdzIxWm4xeHZFSG91Y0pza25iczJLWHlJR21t?= =?utf-8?B?Y1pua2NudjVKMVl3bUtHaTgwL21KWWdYT3VKQVNwY0d5OFJvNXBVR1JJcW8y?= =?utf-8?B?aUZsNHNEUnRtaXgzSGhseHZJSWVTZWlMclNGVEx3bGRhYkdvSmY3Q3JHWXJp?= =?utf-8?B?LzJTMThNcHZ0cVAwUGo0UE9HNS9ZU3RCcWhZTVkrV1MyZEdsRnBkT1FHTEhS?= =?utf-8?B?U1B2anlhbDF1LzdJOGQrTHRSRUZyZk5VNkd0c3U4Qkg3Z0JZcUJVRmZkeVhr?= =?utf-8?B?UVZiaTFLUDlpenpVM0xsMUpBbGpvdmgvbDZncFc2Ujgvalo0a0tFT3I4ek1U?= =?utf-8?B?NXNkQk92RmRVaGhaenRjOUZrZkFTeWtnNFRKZEFnMEt5blZMSFVXUksrSGgx?= =?utf-8?B?c2dmemdMckIvSVNndmFuQ2NVTFhFVkZJUE41WDB5TzdNL2g4dGhuRmdWRlcz?= =?utf-8?B?eENKYytLMWk3RlZ3RWxLLzVqbGRjUWhDYnFFc3B2SXB3cHVOUG1OV213MEZY?= =?utf-8?B?T21XV1VaOUllbVZOYktpaVlxRHFOSktLSUY0bEZxbWt2NlhwMzRYTTNhSUN6?= =?utf-8?B?RkxXSnd0dmVQTTQyWTUzSWZnQ0FhZGFKSU9ZWjg1UzJPTXVqYWd4dkVWaEti?= =?utf-8?B?WFZuVU5wMzZ1REVsZjlySFlkREZ2SytLMGp5S3JKZUZyZW9BbERLWmFTRzk1?= =?utf-8?B?SE5LQkl3bGJKOG1NYkRTeW9iNUdKTnRoWmNaZStpNnF2Y2VvbHJ6dmxxS1Fp?= =?utf-8?B?djFTRHovNjhMa21DZWZ4RmhzY045WXdLaW1KM3hhV1RGZXJCY2dacDlNWkJm?= =?utf-8?B?ZkdSMUdiSlpoSmp5UldmZGl4V2hOMmZjVGdaVXI0V0JCUlJPTXVPQlhJc0Zn?= =?utf-8?B?RmZpK1YvVVh6amx5d0JhYVBTMjJ1ZUlmbXQwbW1lVU9CbEpvSGN4b2VnaUNh?= =?utf-8?B?dXlvc0wvQnlkT0VCdktFTmJYUXJ1T3RhREhYYmtWRGRmT2t2K25kcUE5K3BB?= =?utf-8?B?Y3M0T1pTNmtPVzNQY2s2L0JYajhMRUJFaGVHc0IxUUhJS2VOK3pVZzFITWcw?= =?utf-8?B?ZmxTT0tKcFd1RVU3WVhOSU9pcmtCVzdDZFBkZjZ0UDVQeTcxTjljUmhITmxL?= =?utf-8?B?Q2NFbG92bVBvbkNyTUgxWVlUdXdMdG5IRTllQWU4OThzeFJXL3lZcmYwWHBu?= =?utf-8?B?R2ZhRFhkVk5QRTJKRmtLWCs2dWxMNHlObzlSUTVlTm1WVEhxZ2FSeXFzMUxB?= =?utf-8?Q?Vgggy+W2JCcXaOHJ/7WOFTo=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: bd901446-67cc-43c2-2d9a-08d9e0120bad X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:36.1923 (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: PeEgaTA/Ndd7h2qwxAjCgvFmBWZEByMzw71bs0TdFFq6QFpS16RFpdHtmMg0Z1uXEnK49O6Lhu6A/CqoCwiVkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2868 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122655554100001 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 | 26 ------ tools/include/xenguest.h | 5 -- tools/libs/guest/xg_cpuid_x86.c | 116 -------------------------- tools/libs/light/libxl_cpuid.c | 133 ++++++++++++++++++++++++++++-- tools/libs/light/libxl_internal.h | 26 ++++++ 6 files changed, 156 insertions(+), 156 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index 2bbbd21f0b..8a8032ba25 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1420,10 +1420,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 745d67c970..79169f8ace 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1803,32 +1803,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); diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index d3dc8719c6..ffe74c7a51 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -830,11 +830,6 @@ void xc_cpu_policy_make_compat_4_12(xc_interface *xch,= xc_cpu_policy_t *policy, void xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t *pol= icy, const xc_cpu_policy_t *host); =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 xc_cpu_policy_t *host, - 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 *pol= icy, const uint32_t *featureset, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x8= 6.c index 28993f0356..032459f3de 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -254,122 +254,6 @@ int xc_set_domain_cpu_policy(xc_interface *xch, uint3= 2_t domid, return ret; } =20 -int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, - const xc_cpu_policy_t *host, - const struct xc_xend_cpuid *cpuid, bool hvm) -{ - int rc; - xc_cpu_policy_t *def =3D NULL; - - def =3D xc_cpu_policy_init(); - if ( !def ) - { - PERROR("Failed to init policy"); - 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; - } - - 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); - - 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 6c8643fcca..5d28476eb9 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -309,7 +309,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 @@ -387,7 +387,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); @@ -437,6 +437,128 @@ 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, + xc_cpu_policy_t *host, libxl_cpuid_policy_list cpui= d, + bool hvm, domid_t domid) +{ + int r, rc =3D 0; + xc_cpu_policy_t *def =3D NULL; + + def =3D xc_cpu_policy_init(); + if (!def) { + LOGD(ERROR, domid, "Failed to init policy"); + 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; + } + + 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); + return rc; +} + int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, libxl_domain_build_info *info) { @@ -532,10 +654,9 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, } =20 /* Apply the bits from info->cpuid. */ - r =3D xc_cpu_policy_apply_cpuid(ctx->xch, policy, host, info->cpuid, h= vm); - if (r) { - LOGEVD(ERROR, domid, -r, "Failed to apply CPUID changes"); - rc =3D ERROR_FAIL; + rc =3D apply_cpuid(gc, policy, host, 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 37d5c27756..c99b271f9c 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -2059,6 +2059,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.34.1 From nobody Mon Apr 29 08:49:59 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=2; a=rsa-sha256; t=1643122644; cv=pass; d=zohomail.com; s=zohoarc; b=nE8voTtlog0Q3WEWksJ2jWQMyjxTWqufU0yAscWU7REhF72gi+CjxIEdFL4B4tUHkiH/zjT76osZ3st0HXckilKALG67GzoYAZvZzk4gbDjQ5FDFHP258m0a26i9+O6g+NgF2Lwvo5yqZtNrH6qAhpDwBDDl319T3GtgcGnUSuE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643122644; 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=ZlGOnZqzGyzuT9kP+fcec5bcZMp+YNPmS8unxsF4SiA=; b=lQbhjdJ2fHUJynGYKrd6vYL4D5pg5F/0eribakyBLCx4lU2f6eiWn4P3bXSn4z2pZXHhgSEHG0fZcw05SkcRuexWosWrN+cOhyFZu5bvQfL1Mw3cRu1n+Tmy160LFGVZUaqeyW0yzyh/lZOx+qUHJLqTC+Bi/Ye1ctOGgWn+vBg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=citrix.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643122644161759.8716113179088; Tue, 25 Jan 2022 06:57:24 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.260440.449925 (Exim 4.92) (envelope-from ) id 1nCNFm-0001IQ-Jx; Tue, 25 Jan 2022 14:57:02 +0000 Received: by outflank-mailman (output) from mailman id 260440.449925; Tue, 25 Jan 2022 14:57:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCNFm-0001IJ-GS; Tue, 25 Jan 2022 14:57:02 +0000 Received: by outflank-mailman (input) for mailman id 260440; Tue, 25 Jan 2022 14:57:00 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN9l-000334-4Q for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:50:49 +0000 Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 153584e1-7dee-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:50:06 +0100 (CET) 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: 153584e1-7dee-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122247; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=SdSYNvIvXjuUpSG4B6g2Au59lE4nuJWjeYH8MZknVwg=; b=gMfQu/ZT3sR+LOxXB1CS6L1Wf/megiNuakfNO+aNiQ5WQcaATg/MU9mS i1cE4ooC4oA6dhgoaV4AyfRf9SAShg5pbmnxk0WBeYe7zLAabexLkQqBJ PTlDeChLxncAOzBVXS+W4I0ETzAMElvm3mJ6TocRTnm4tPo+Fi/1ZWmTB c=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: TJjTIJn3k9sU0BY1Oxq8NXu//fkBWwpd3r4jllFC9MP1sRqP0p6C9Ih913kPEwvu9xN1dXycAg /VZ+RLZErVsy9tcVZ9RjKTo4vkuh1tiSseTYXXNYZvRrClE2pyt+UPr1s8tDsY7qdqb6GZUM4f lo26bpZu3mzRRSFuuBxAiY2YgsC4YVWuLB/m4LeUjdma9Wdv8QMNUGtUqXbmyO3BCxuSTSVA3w 1/WUyFeGuyjR54T963W9C4Afj3F0oWm4phk9U7fjB9Jn7mcfiGmQjcJZ+VcvaEliJOOuYsF1H4 uKBJLzTJZQRgA2MSpYwZW150 X-SBRS: 5.2 X-MesageID: 62717123 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:US5r1KNjWZ0BRgrvrR1UkMFynXyQoLVcMsEvi/4bfWQNrUoj0DRSm jFOXTuPbPrfajHwf9EnaInj8UMD7MeAxoQ2Twto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6UUsxNbVU8En150Eg+w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYo22YmZN8z cduj46TFkQuAPD3mORHQQYNRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YvNrick5atHiIasUu216zCGfBvEjKXzGa/uQuoYHhW1r7ixINebHR sQmVwdWVxHZIFpyFQctBLVgrvj90xETdBUH8QnI9MLb+VP70whZwLXrdt3PdbSiR8pPmV2Dj nnb5Gm/CRYfXPSPxDzA/n+yi+vnmSLgRJlUBLC+7uRtglCY2ioUEhJ+fVmxrOS9i0W+c8lCM EFS8S0rxZXe72TyEIO7BUfh5ifZ4FhMALK8DtHW9inV26yX7gOLJVIWbWECb+J7j882Hy41g wrhc8zSORRjt7icSHS4/7iSrC+vNSV9EVLudRPoXiNevYC9/dhbYgbnC486TfXr1oGd9STYn mjSxBXSkYn/miLiO0+T2VncywyhqZHSJuLezlWGBzn1hu+ViWPMWmBJ1bQ5xasYRGp6ZgPY1 JThpyR4xLpSZX1qvHfVKNjh5Jnzu5643MT02DaD5aUJ+TW34GKEdotN+jx4L0oBGp9aJWSxP B6M5l0Atcc70J6WgUlfOd7Z5yMClvCIKDgYfqqMMoomjmZZKmdrAx2ClWbPhjuwwSDAYIk0O IuBcNbEMJrpIf8P8dZCfM9EieVD7nlnnQv7HMmnpzz6j+b2TCPLGN8tbQvfBshkvfjsiFiEr L5i2z6ilk83vBvWOHeHqOb+7DkicBAGOHwBg5UHL7HYels/RjhJ5j246epJRrGJVp99z4/g1 nq8RlVZ2Bz4g3jGIh+NcXdtdPXkWpMXkJ7xFXVE0Y+A1ydxbICxwr0YcpdrL7Ar+PY6lax/T uUfetXGCfNKE2yV9zMYZJj7jYpjaBX02l7eY3v7OGAyL8x6WgjE2t74ZQ+zpiMAOTW66Jklq Lq62wKFHZdaH1Z+DNzbYe6Exk+quSRPg/p7WkbFe4EBeEjl/IVwBTb2i/s7f5MFJRnZn2PI3 AeKGxYI4+LKptZtotXOgKmFqaavEvd/QRUGTzWKs+7uOHCDrGS5wIJGXOKZRhznVTv5qPe4e OFY7/DgK/lbzlxEhJVxTuRwxqUk6tqx+7IDllZ4HG/GZkiAA697JiXUxtFGs6BAy+MLuQayX U7TqNBWNa/QZZHgGV8VYgEkcv6CxbcfnTyLtaY5J0Dz5SlW+rubUBoNY0nQ2XIFdLYlYpk4x eoBudIN713tgxUnBd+KkyRI+jneNXcHSagm6skXDYKDZtDHEb2ejUgw0hPL3aw= IronPort-HdrOrdr: A9a23:LC1kTqCf70wrH0flHeg2sceALOsnbusQ8zAXPh9KJyC9I/b2qy nxppgmPH/P6Ar4WBkb6Le90c67MAzhHP9OkPUs1NKZPTUO11HYVb2KgbGSpgEIXheOjNK1tp 0QA5SWaueAdWSS5PySiGLTfqdCsbu6GeKT9JrjJh9WPHBXgspbnmFE42igYylLrF4sP+tGKH PQ3LsMmxOQPVAsKuirDHgMWObO4/XNiZLdeBYDQzoq8hOHgz+E4KPzV0Hw5GZTbxp/hZMZtU TVmQ3w4auu99m91x/nzmfWq7BbgsHoxNdvDNGFzuIVNjLvoAC1Y5kJYczOgBkF5MWUrHo6mt jFpBkte+x19nPqZ2mw5SDg3gHxuQxeokPK+Bu9uz/OsMb5TDU1B45qnoRCaCbU7EImoZVVzL 9L93jxjesXMTrw2ADGo/TYXRBjkUS55VA4l/QIsnBZWYwCLJdMsI0k+l9PGptoJlO11GkeKp gsMCjg3ocVTbvDBEqp+1WHgebcEUjbJy32AnTr4aeuonxrdHMQ9Tpv+CVQpAZGyHsHceg32w 3zCNUeqFh/dL5kUUtDPpZ1fSLOMB23ffvtChPbHb21LtBNB5ryw6SHlIndotvaPqA18A== X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="62717123" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D0zonlQYGqaWmpW2MRNbGscGtLSD9S9NdFeLJ0qEAk/g0STGSjnwWUOv4o+zgw9jocDcUE6o6c4jnmupIv9+Go8PorylxuIFmrnCXCzIpSVll0W+YqJQJLCoq5hRA3AVaJpPEqDfyOwbD8tUtXEeBp61GT7jU2RVUsuoOJfb76TLe8Mp2jjEPSkZ7ccn11iwlXCgP51G4fef2/Ma9KYDTW0BlLeT5Q/vrpWUOnGmBB4ymXm4aSM5OSaqmtLfXMPiDAQWr03ZkCRuiqwGBme2sX+indqwkA7wa3o7WnA0vLHe17ykUJUkjbgDAPUQrhMJYWZ7stYC/SLrTUjFzRvqxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZlGOnZqzGyzuT9kP+fcec5bcZMp+YNPmS8unxsF4SiA=; b=LY0KF8zHGhtc9IAjHnK5u4+860Vbiu5FzCrDTSRw5JW6BKIBWxqxo43GtlBEjrG0UkqwOIVSISJMetF9Vn/4VEa7sMXwmGvPF9SfQm5LsVbtbER4+GEaPvXr+AHC+op4zhPUiqOn68Xk4QTuYur1CtZ+lnfAto98ogfUamri0UtkQjQui9lTY3eXgl7Bbxl7i3i+dHU+b/a2cb0MYLKYC72Vt3Uh5JoKlPiS2PPyz2F4U9CKPPKCIHk9oMCWKhSrcCHeyqKigjX7nNyjktaym7oU/XGDs5WwJW8MS13ZEaKlvuTnqCWVpjQlLvo/wbKJZUPFJXOxxmqBRHoT3FTsIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=ZlGOnZqzGyzuT9kP+fcec5bcZMp+YNPmS8unxsF4SiA=; b=rSSxX0DRbji7Q/0vtR0jczkRkPGm03/BplpUnI4RL8gPaUahi7iZ0KHQ2YeujwXVjX3/H+x3AAna247bpf1R1/ME73HaZZZIXWeP3nzTYIBjLA+55B2Sjz9d/ZPPXrY44boxNYlDUsqk0hk88NAppk9zelWNmZtBDVVWcheQyN0= From: Roger Pau Monne To: CC: Jan Beulich , Wei Liu , Anthony PERARD , Juergen Gross , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v7 11/11] x86/CPUID: shrink max_{,sub}leaf fields according to actual leaf contents Date: Tue, 25 Jan 2022 15:49:35 +0100 Message-ID: <20220125144935.44394-12-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220125144935.44394-1-roger.pau@citrix.com> References: <20220125144935.44394-1-roger.pau@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0136.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::28) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6ff935ad-0472-4559-48df-08d9e0120eda X-MS-TrafficTypeDiagnostic: BN6PR03MB2868:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3173; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: buHmY4QbYa0ASvS/Dki/DXAofZc4f7uSbI+H5+GWuVg8lGiqZYaG/CA3eQTOcgXRomimqynqf1m8ATSPOCqYiQlaydcy/qKPcC0tbmC/KpWUVuk5YTuwN3/jlehwoEq6Y9+L69Xwso4UFms6dQRYZiJnS4j3/xVkL4eM5HKwCoojp+XFH4jCK5W++xALJ1SfH6bNgJH9L81cP1QA6wYySfYd/yuBjtsxz5h8oPq1RRGJuuWdC0ovX/S9TM2AZHfU+bViLxGHM3Md/BSXMjhQkuXOxXtwl3B/iIyCbb4GsEXPtB1DDzSzDyvZRdf7ZiyxvwGhsvJN4FiL/vGjmFcQxv/DSpeT8c0/NwRCJAMLGAEwh1WCRRw1EDvcvkVJLYCrD78cBkP/0bZyl55Q0eP6JLexkRDxAEE1dNbJt0BJDtGBhh/1rWSso7v4ihLLxWmKKuYwmFgesP0WynWtVq5/tgdOWnsDcff1zXrvb7E6vhcVuqDc0ddfH258zomhxavrKj5Vc6tPrL3pDv9RboQYwv9ALennxCYgjYH9mWJdOMaXk1LG7WrjnevCyXnwphbVw9W8/K0Bq0mCh262poNIvDUr7ZqySlyJYV9kay7yXm8bLtF/RuZJacRdLdMMDbtzs/1pWgsNMlAQbox+oQFpag== 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)(66946007)(83380400001)(316002)(6512007)(186003)(82960400001)(2906002)(54906003)(66476007)(66556008)(6486002)(6506007)(8936002)(6916009)(26005)(2616005)(8676002)(36756003)(4326008)(5660300002)(107886003)(6666004)(38100700002)(508600001)(1076003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RXhHUlE0K1MrbHhFNUgyV3d3a3lMelZmSmM4T1hJazhqMXRwakVOWk5JVmVh?= =?utf-8?B?VXJ2M3kyVnZSdC8xYW9zZUlHYUNXblFNb1BCVTRoQ3U5SGlpdDhBU2tsWUJs?= =?utf-8?B?anU2eW0yTzU2czdUUHZEM2UvbXJZYytRUU1VdE1XUWU5bnU4ZlBnajdzV09O?= =?utf-8?B?US84UStFN1N4RlB5cVgwK0FSTFVyMytmeUZpQ1gwTGZMY1I2M1J5S1RmeVl2?= =?utf-8?B?QmZCTHJwZDMxVXVKZm5Bb1FnSy9TNmZadkxrZFZEZUY2eXNSaitINENOZnhQ?= =?utf-8?B?dTlUT0diTUdrYk5kdkVuSmMraW9uWVU5NFNjTTNQSFc4eW5maWg0cnNiOW52?= =?utf-8?B?eE12aFRETXNMQ3ZjZklLcmpyUWJBcktvOGN1OU81TE95aWV5WlVUOTZiNGc1?= =?utf-8?B?YXVzMWd0Ykd2bEpNTFpJY0txYjJYUVlJampGRWhEOFdJNElzb0FRUkc0cnFw?= =?utf-8?B?MU1XcnZTYTAzYnBpWjBlTWVXRXU2TlF0RGZvUnpLd0pmSjIzSUFNeEYzZGMy?= =?utf-8?B?NitjYVZvaFFCblRmQnBQQzdhK1UzZENvZHpETDZTWUVIajhGMWUyVGdIVGht?= =?utf-8?B?QUwxZHdhdEFrZXdxbGt5SkRTUlpadUVUbTdUdU5wU3RncHM2OXMrZnZPeFpY?= =?utf-8?B?NmtKQzEvSnY3bkFsTlNhYTY2bzZLbFo1VzhGZS95Nk9RbmhYanRJbVlBK1Fr?= =?utf-8?B?V3JQMTJNVzEzSGRTR0ZNVm1RT3VrakgzU1p6UVBvc0p6WUZsU1NaNHR0dlhH?= =?utf-8?B?QlUzU3ZZczRDYk1VQWVqWWxBMURuMUhDMWlYd2dmNDZJMHEyWUppRHVsdGdC?= =?utf-8?B?VHoycjU2Z0g0cFZ4NUxRMlhiOEVZNzd0Vm4zZ2lOSGhrVlJ1MGZURFNMQTYz?= =?utf-8?B?K0lpVGpuQ3NZVmlTN1hDMktMTVV1ZnRYWG80eEt0ejRwK2xTYzZtcGsvNUpx?= =?utf-8?B?aFIxbFNEN0lHRW8vYUJZZ3ZKRkg1d2I4Qk5vTVpFOVpvOHA4a1J1SXd2c1oy?= =?utf-8?B?a25NZkRtdVJYMnpSYkRkWDJ3dlFUdVNBbmR0Yy91Z0p4WitlN3hOY1V3c3Ey?= =?utf-8?B?Sk1Mbko3QXRxTHBpNXVLNm1jRVNsZUtnMjdIYUpYZmVIcysvWitlSEVPdVRo?= =?utf-8?B?SEZna2M2UFRUb1BXUTJpZXBJQWNORVNVSUxlZW9IYXJqRVdmeTR1bXgrOHgy?= =?utf-8?B?TTlHM3lQQVZVNTVJNWpkOWRCLytQMHlETGtMYXJGL2RIVXpUcEp0Vmc1cDhm?= =?utf-8?B?aTZIRU93MTZ1dklQTzRPMGdSRndnZEtBa0gyR0E0V1pxY0NuZEk5ckRlL3U5?= =?utf-8?B?L3Yxc3AxY2J4RUZRNHh3dmtDTnhMOGdjaE10UE9WVE9obXR6S2xLNThpUFRZ?= =?utf-8?B?UEx4VHU3cUkzczBucDJXVjVJOURKUU1JTXZiN2llcE5zVjVZNjdVRmpkUkow?= =?utf-8?B?Wlc4T1RFWHBYS0gxL0k0RnhiTzhmTk1ib3o0OC9tVjhPNEdvaTZJdWFOaksv?= =?utf-8?B?SURBNjdzQUNodkdWeDQxaVkrT1dYNHQ3TDJOOEQvYXcvQ25TRko4UmNXUWNw?= =?utf-8?B?WEppSUFhc29YeFFkZGN6WVpDMXdBUThRYUdJRTcvV3ZwdnNuTEhDZDk3ajFv?= =?utf-8?B?Z3dRTzZobnpUQjZTUnlNSGhsNVVIZVZwNTROSFRYcGVzbXUzdDB4VHA1ZkFT?= =?utf-8?B?ODA2RHptMVpQdXhMdmVXQTdtT2xKY0xoK1RTOWRmZk1IYnU0UVozVEtNeng2?= =?utf-8?B?SzE4QW1rbnF3cktzb0hUVFFXbkR2TnhWV2JuNGQ4a1p3ZEJ0QTN2WXlUWWdP?= =?utf-8?B?RmRxYnJyMW1VbWxvd1BhclY4QzFVcGtGOWwyRzJhUDFHcCt6V20vcHBFRy9F?= =?utf-8?B?TmYzZ0hHTkJ2c1doTDc1OWtxckQ2cXBSaUxoYWNzMkpvSUxLVXRqckNna0Ny?= =?utf-8?B?RzB4UXFVQ3QzTXFXcWsvSmJJZ3BOVUhudG4rT3dBcDR3VE12QWZOYlFBVk5n?= =?utf-8?B?MGErckJFMGhXNkZrOFJPUldOb3dFTEJQZkJTbVdTREZEOUJNWks1M0htSWhL?= =?utf-8?B?Q0QyL1lqeFI1cWtBRWhrOU5LQ0MwSXVHTUJ3Yk1Lbmx0ZEVOMWgrTXRqYTIy?= =?utf-8?B?RzBiSEtpY3BIdThiNHZGNXNDQm82aGNUeUprdzhraWRYUm8xNlk4RzdUOU9G?= =?utf-8?Q?z03+CUtppo5NIlFkkb+LPak=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 6ff935ad-0472-4559-48df-08d9e0120eda X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 14:50:41.3949 (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: TJqnFxRByBqkhr2EGd8pTwC7yLAZ/g1mmso8xzsHYglynyiHE/VX4zDklt1vRXS9cseHzfN45j/IbS7jdB0jmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2868 X-OriginatorOrg: citrix.com X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1643122647405100002 From: Jan Beulich Zapping leaf data for out of range leaves is just one half of it: To avoid guests (bogusly or worse) inferring information from mere leaf presence, also shrink maximum indicators such that the respective trailing entry is not all blank (unless of course it's the initial subleaf of a leaf that's not the final one). This is also in preparation of bumping the maximum basic leaf we support, to ensure guests not getting exposed related features won't observe a change in behavior. Note that such shrinking is only done when creating a policy for a domain from scratch. Migrated in domains keep their previous policy if present untouched, and for migrated in domains not having CPUID data the crafted Xen pre-4.13 policy is not trimmed to keep a behavior compatible with those older Xen versions. Signed-off-by: Jan Beulich Signed-off-by: Roger Pau Monn=C3=A9 --- Changes since v4: - New in this version, picked up from 540d911c2813. - Only shrink policies for newly created domains. --- tools/include/xenguest.h | 3 + tools/libs/guest/xg_cpuid_x86.c | 5 ++ tools/libs/light/libxl_cpuid.c | 7 ++ tools/tests/cpu-policy/test-cpu-policy.c | 101 +++++++++++++++++++++++ xen/include/xen/lib/x86/cpuid.h | 7 ++ xen/lib/x86/cpuid.c | 39 +++++++++ 6 files changed, 162 insertions(+) diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index ffe74c7a51..4b1ced4c49 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -835,6 +835,9 @@ int xc_cpu_policy_apply_featureset(xc_interface *xch, x= c_cpu_policy_t *policy, const uint32_t *featureset, unsigned int nr_features); =20 +/* Sanitize a policy: can change the contents of the passed policy. */ +void xc_cpu_policy_sanitize(xc_interface *xch, xc_cpu_policy_t *policy); + 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 032459f3de..1b83533098 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -651,3 +651,8 @@ int xc_cpu_policy_apply_featureset(xc_interface *xch, x= c_cpu_policy_t *policy, =20 return 0; } + +void xc_cpu_policy_sanitize(xc_interface *xch, xc_cpu_policy_t *policy) +{ + x86_cpuid_policy_shrink_max_leaves(&policy->cpuid); +} diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 5d28476eb9..61b85c6e0a 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -660,6 +660,13 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid= , bool restore, goto out; } =20 + /* + * Do not attempt any modifications if creating a policy that aims to = be + * compatible with pre-4.13 Xen versions. + */ + if (!restore) + xc_cpu_policy_sanitize(ctx->xch, policy); + r =3D xc_cpu_policy_set_domain(ctx->xch, domid, policy); if (r) { LOGED(ERROR, domid, "Failed to set domain CPUID policy"); diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-pol= icy/test-cpu-policy.c index 8f51447117..d883f750f5 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -9,10 +9,13 @@ #include =20 #include +#include #include #include #include =20 +#define XSTATE_FP_SSE (X86_XCR0_FP | X86_XCR0_SSE) + static unsigned int nr_failures; #define fail(fmt, ...) \ ({ \ @@ -772,6 +775,103 @@ static void test_msr_get_entry(void) } } =20 +static void test_cpuid_maximum_leaf_shrinking(void) +{ + static const struct test { + const char *name; + struct cpuid_policy p; + } tests[] =3D { + { + .name =3D "basic", + .p =3D { + /* Very basic information only. */ + .basic.max_leaf =3D 1, + .basic.raw_fms =3D 0xc2, + }, + }, + { + .name =3D "cache", + .p =3D { + /* Cache subleaves present. */ + .basic.max_leaf =3D 4, + .cache.subleaf[0].type =3D 1, + }, + }, + { + .name =3D "feat#0", + .p =3D { + /* Subleaf 0 only with some valid bit. */ + .basic.max_leaf =3D 7, + .feat.max_subleaf =3D 0, + .feat.fsgsbase =3D 1, + }, + }, + { + .name =3D "feat#1", + .p =3D { + /* Subleaf 1 only with some valid bit. */ + .basic.max_leaf =3D 7, + .feat.max_subleaf =3D 1, + .feat.avx_vnni =3D 1, + }, + }, + { + .name =3D "topo", + .p =3D { + /* Topology subleaves present. */ + .basic.max_leaf =3D 0xb, + .topo.subleaf[0].type =3D 1, + }, + }, + { + .name =3D "xstate", + .p =3D { + /* First subleaf always valid (and then non-zero). */ + .basic.max_leaf =3D 0xd, + .xstate.xcr0_low =3D XSTATE_FP_SSE, + }, + }, + { + .name =3D "extd", + .p =3D { + /* Commonly available information only. */ + .extd.max_leaf =3D 0x80000008, + .extd.maxphysaddr =3D 0x28, + .extd.maxlinaddr =3D 0x30, + }, + }, + }; + + printf("Testing CPUID maximum leaf shrinking:\n"); + + for ( size_t i =3D 0; i < ARRAY_SIZE(tests); ++i ) + { + const struct test *t =3D &tests[i]; + struct cpuid_policy *p =3D memdup(&t->p); + + p->basic.max_leaf =3D ARRAY_SIZE(p->basic.raw) - 1; + p->feat.max_subleaf =3D ARRAY_SIZE(p->feat.raw) - 1; + p->extd.max_leaf =3D 0x80000000 | (ARRAY_SIZE(p->extd.raw) - 1); + + x86_cpuid_policy_shrink_max_leaves(p); + + /* Check the the resulting max (sub)leaf values against expecation= s. */ + if ( p->basic.max_leaf !=3D t->p.basic.max_leaf ) + fail(" Test %s basic fail - expected %#x, got %#x\n", + t->name, t->p.basic.max_leaf, p->basic.max_leaf); + + if ( p->extd.max_leaf !=3D t->p.extd.max_leaf ) + fail(" Test %s extd fail - expected %#x, got %#x\n", + t->name, t->p.extd.max_leaf, p->extd.max_leaf); + + if ( p->feat.max_subleaf !=3D t->p.feat.max_subleaf ) + fail(" Test %s feat fail - expected %#x, got %#x\n", + t->name, t->p.feat.max_subleaf, p->feat.max_subleaf); + + free(p); + } +} + static void test_is_compatible_success(void) { static struct test { @@ -889,6 +989,7 @@ int main(int argc, char **argv) test_cpuid_out_of_range_clearing(); test_cpuid_get_leaf_failure(); test_cpuid_get_leaf(); + test_cpuid_maximum_leaf_shrinking(); =20 test_msr_serialise_success(); test_msr_deserialise_failure(); diff --git a/xen/include/xen/lib/x86/cpuid.h b/xen/include/xen/lib/x86/cpui= d.h index 050cd4f9d1..86cda38986 100644 --- a/xen/include/xen/lib/x86/cpuid.h +++ b/xen/include/xen/lib/x86/cpuid.h @@ -386,6 +386,13 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy = *p); */ void x86_cpuid_policy_clear_out_of_range_leaves(struct cpuid_policy *p); =20 +/** + * Shrink max leaf/subleaf values such that the last respective valid entry + * isn't all blank. While permitted by the spec, such extraneous leaves m= ay + * provide undue "hints" to guests. + */ +void x86_cpuid_policy_shrink_max_leaves(struct cpuid_policy *p); + #ifdef __XEN__ #include typedef XEN_GUEST_HANDLE_64(xen_cpuid_leaf_t) cpuid_leaf_buffer_t; diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c index 924f882fc4..6a943cd91b 100644 --- a/xen/lib/x86/cpuid.c +++ b/xen/lib/x86/cpuid.c @@ -236,6 +236,45 @@ void x86_cpuid_policy_clear_out_of_range_leaves(struct= cpuid_policy *p) ARRAY_SIZE(p->extd.raw) - 1); } =20 +void x86_cpuid_policy_shrink_max_leaves(struct cpuid_policy *p) +{ + unsigned int i; + + p->basic.raw[0x4] =3D p->cache.raw[0]; + + for ( i =3D p->feat.max_subleaf; i; --i ) + if ( p->feat.raw[i].a | p->feat.raw[i].b | + p->feat.raw[i].c | p->feat.raw[i].d ) + break; + p->feat.max_subleaf =3D i; + p->basic.raw[0x7] =3D p->feat.raw[i]; + + p->basic.raw[0xb] =3D p->topo.raw[0]; + + /* + * Due to the way xstate gets handled in the hypervisor (see + * recalculate_xstate()) there is (for now at least) no need to fiddle + * with the xstate subleaves (IOW we assume they're already in consist= ent + * shape, for coming from either hardware or recalculate_xstate()). + */ + p->basic.raw[0xd] =3D p->xstate.raw[0]; + + for ( i =3D p->basic.max_leaf; i; --i ) + if ( p->basic.raw[i].a | p->basic.raw[i].b | + p->basic.raw[i].c | p->basic.raw[i].d ) + break; + p->basic.max_leaf =3D i; + + for ( i =3D p->extd.max_leaf & 0xffff; i; --i ) + if ( p->extd.raw[i].a | p->extd.raw[i].b | + p->extd.raw[i].c | p->extd.raw[i].d ) + break; + if ( i | p->extd.raw[0].b | p->extd.raw[0].c | p->extd.raw[0].d ) + p->extd.max_leaf =3D 0x80000000 | i; + else + p->extd.max_leaf =3D 0; +} + const uint32_t *x86_cpuid_lookup_deep_deps(uint32_t feature) { static const uint32_t deep_features[] =3D INIT_DEEP_FEATURES; --=20 2.34.1