From patchwork Tue Jan 25 14:49:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 12723905 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 77876C433EF for ; Tue, 25 Jan 2022 14:50:09 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.260401.449804 (Exim 4.92) (envelope-from ) id 1nCN8r-00033I-VL; Tue, 25 Jan 2022 14:49:53 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 260401.449804; Tue, 25 Jan 2022 14:49:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nCN8r-00033B-SN; Tue, 25 Jan 2022 14:49:53 +0000 Received: by outflank-mailman (input) for mailman id 260401; Tue, 25 Jan 2022 14:49:52 +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 1nCN8q-000334-Ee for xen-devel@lists.xenproject.org; Tue, 25 Jan 2022 14:49:52 +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 f344251d-7ded-11ec-bc18-3156f6d857e4; Tue, 25 Jan 2022 15:49:10 +0100 (CET) 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: f344251d-7ded-11ec-bc18-3156f6d857e4 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1643122191; h=from:to:cc:subject:date:message-id: content-transfer-encoding:mime-version; bh=KMpJGUIBSXddYfFxNqcd0W/wOnfRTDcTzg5wC0yTDCQ=; b=MQ0h/c5tuSOOR6F0eRKhv7NikvunjqghDcfqEXFfo/LUCo3rEr98OQwg MXkvoRTOQlUTkZkMcnDkaFtz3yk2BGLhO1GMeo3EqL1RKGl/N+Ad4Nf/t FGu7I5gPEJiJfr7PyMJOUatq3Qb0p7gFFUqpms7HTag88j9Hr9xkJJ4Lj U=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: UzYjpcgZNS1eNjFzWHYStGx/MHPN2GIl2c5hC6+TrY8EaOTFgBNcsKnQap5Ybi9/xg7oV7ZGYL i/X2Zy2AM07XAK2uoNps24gjnkPic/mBghF5wIGwYsaX4oA3cioFDt+ovxY8niR/cpR+RDJx42 WQYK0A8efeMa2R4Qnl4U+C66X7B0Ki0rYsK+LVN+J54/5+VSP908rhoe0Xby/85Q929ZTqvBv9 Evt63bPKcD+xn0kV+b0a616o/JoojLu/AcrLdMnlkjKqSEUJYOdrTm/bp603v7YqK+aXb0yyQU 5LISE/KGLWelcnQGDk/me0SU X-SBRS: 5.2 X-MesageID: 63124289 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-Data: A9a23:nI60IaNFd6buvNfvrR1UkMFynXyQoLVcMsEvi/4bfWQNrUojhmcGy zYYCG6Ea6veM2GnKtt1YdjjoUpXuJPQn9YySgto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6UUsxNbVU8En150Eg+w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYoyuYttdwx /NHiZ2fQ1sbNKbsttZESiANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YvNrick5atHiIasUu216zCGfBvEjKXzGa/uRvIUEhmdh7ixINdbBb Mw5awRkVlPRWBFACnIeFIARjfj90xETdBUH8QnI9MLb+VP70whZwLXrdt3PdbSiR8pPmV2Dj nnb5Gm/CRYfXPSPxDzA/n+yi+vnmSLgRJlUBLC+7uRtglCY2ioUEhJ+fVmxrOS9i0W+c8lCM EFS8S0rxZXe72TyEIO7BUfh5ifZ4FhMALK8DtHW9imT24PT4gm/DFQFYTQdWtYtlOEEHCUTg wrhc8zSORRjt7icSHS4/7iSrC+vNSV9EVLudRPoXiNevYC9/dhbYgbnC486TfXr1oGd9STYn mjSxBXSkYn/miLiO0+T2VncywyhqZHSJuLezlWGBzn1hu+ViWPMWmBJ1bQ5xasYRGp6ZgPY1 JThpyR4xLpSZX1qvHfVKNjh5Jnzu5643MT02DaD5aUJ+TW34GKEdotN+jx4L0oBGp9aJWSxP B6M5l0Atcc70J6WgUlfOd7Z5yMClvCIKDgYfqqMMoomjmZZKmdrAx2ClWbPhjuwwSDAYIk0O IuBcNbEMJrpIf8P8dZCfM9EieVD7nlnnQv7HMmnpzz6j+b2TCPLGN8tbQvfBshkvfjsiFiEr L5i2z6ilk83vBvWOHeHqOb+7DkicBAGOHwBg5UHL7HYels/RjhJ5j246epJRrGJVp99z4/g1 nq8RlVZ2Bz4g3jGIh+NcXdtdPXkWpMXkJ7xFXdE0Y+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:YOtjhaOKJw8dFcBcTy3155DYdb4zR+YMi2TDiHofdfUFSKClfp 6V8cjztSWUtN4QMEtQ/exoX5PwO080lKQFmrX5WI3NYOCIghrPEGgP1/qB/9SCIVyAygc+79 YYT0EWMrSZZjIb/KXHCWGDYqodKbK8gceVbInlvhJQpVYAUdAc0+41MHfTLmRGAC19QbYpHp uV4cRK4xKmZHQsd8y+Ql0IRfLKqdHnnI/vJUduPW9t1CC+yReTrJLqGRmR2RkTFxtJ3LcZ6G DA1yj0/L+qvf2XwgLVk0XT85NVst38zcYrPr3FtuElbhHXziq4boVoXLOP+BgzveGU8V4v1O LBph8xVv4Dn0/5TyWQm1/AygPg2DEh5zvJ0lmDm0bupsT/WXYTF9dBrZgxSGqU12MQ+PVHlI 5b1WOQsJRaSTnamj7m2tTOXxZ20mKpvHsZl/IJhXA3a/pSVFZol/1QwKppKuZAIMqjg7pXUN WGTfusrsq+SGnqIEww5QJUsZ+RtndaJGbyfqFNgL3W79FspgEJ86Iv/r1sop4xzuNCd3B63Z W1Dk0RrsA3ciY3V9MLOA5Te7rANoTyKSi8Q156Z26XUZ06Bw== X-IronPort-AV: E=Sophos;i="5.88,315,1635220800"; d="scan'208";a="63124289" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kjSGDzYdy7h1ZqIksrKGDsGKrf9qxgLtWF3dG3h/imvmwDCP/EEPItFkFEYIAZJWror3cNyrOiqBinvVlDdXMysJ9JMI30hh6egzCV95DpySyWEyrpRfa5OXuR0XwGy0ip7LmORSiAPDU5u1YM8SNJivbIAG8I1JPA7CPNGMf8WKayK13VVMdOOZKaEqcDeDeaOIp4xBFD7EdCPEX/kDk8kSpSRMr/ymgQSx7S2TdGWGe59UrkFAOGu4s/uZsg5ZmnYyTJOySxIn/srKD1+rF2xaTSfqstaBy6mqqOiV1deHaXM1Mxb1BRTMszDlkwwCPSSEmVuEoArpYX4aFI0tMA== 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=Eru6pzQxOjTbx0wUbPSsxS8IroCkcvtDCCp2Q1k9dPQ=; b=MRMzGuLZ/pAyM8T7qQiioHyflVxogAiluyH3znIssjfa/4MjICOnGjjgmcLCELOeM7/mRby97Fr1rKdULyoEhAGHZ/adft472BTr2xcWlCyGIiSYr2VoTqzEEqt6piZ1Prd6w1XsQCD32sgA0SGVAgdZazkH4R8Vhs4F4RAGwT3i0VT4YkLkSAxKMt7/iJMUsMtZOrzk36h4LwR/VUhdfNr+80jUMRs3OtUjU9MQ98lrffFn11chhyKFNDdpVtYu/kEHzL6DbAcVCsXCPEiGcASNF67iS2XbRbD4iDbZqWF8zalbIPi7j4ie7kZAKXTtXfwJPCQgW9QX9rlartAHTw== 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=Eru6pzQxOjTbx0wUbPSsxS8IroCkcvtDCCp2Q1k9dPQ=; b=F/ZNvqyFrAaZTO7yjpfbMUpu8dZpbZ+QjDAWk0UOjJhGhicKmh8F9gsZa8Sz2RjnkiL52BCahBJFFf/KUpztV4jRQQRLM9oVf2hrt0tYDILspTzWjNcFsCYarllVEvHt+9Jf5JxZQeUkzeedcLpvYoDWNRSqXSfGNXeOZE67sbw= From: Roger Pau Monne To: CC: Roger Pau Monne , Jan Beulich , Andrew Cooper , Wei Liu , "Anthony PERARD" , Juergen Gross Subject: [PATCH v7 00/11] libs/guest: new CPUID/MSR interface Date: Tue, 25 Jan 2022 15:49:24 +0100 Message-ID: <20220125144935.44394-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: MR2P264CA0043.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500::31) 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: 31606684-6784-4f05-11b9-08d9e011eb8c X-MS-TrafficTypeDiagnostic: BYAPR03MB4568:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: H8DVx+QTwUnbRmv2LaqWSv3vnP5Ijo/83bQMR6dWPLkL4oU0wB+lH//2XBdS15DDuc6GKKJuHUHCN2WEPdh1b80ziuC8AQ4pwqia5lAc2NrYb3P1QtxYZAOma72djHXlz7s65Txh9R6tyyOCyicAhdi1igg6wfgAbZjNdZ6xhk8z0tk4w6L6x6JzYzzJROGlIULSVzEWHqe4r5xB/IDGjIdv4mjyQZRPFbnqvlqpo2U+3S/dsiXbmWKrDVx3sZbzcPF0q1AceXDyjVgFIa1WO3arFt4lZZLRZA0Hb+N5udlz/bKUQ9QZMDoH4se7Oyn2t//G5+YFoLKNf/nWpMftlxuC0oyBI0u/YtEDoIsMUvh4RGXS+1rmP/Jf4gGzaK9GUzmynW9hwl/Qk7+SsCOmFl3xdSDoGU1fu2uJOmjVaaioiAZYhz/89G3Aw+8kgO34UttcJUaDp9O3AYgtTuPewoerWVZgdPyEoHaXrmmtA3JPCim2xPx0SiMW/0Guv4t10sZr6WKKxDzD8L1iFijSPx7F+SETyVupSVHARm09eDXMr0KEAEAiLy7n4nQbZyTl0IES+Eqj77Cu7WqcojooVBLQi4JVx4y4C1q20lcAZmpDAgLfJbIhIWQiFjJ5vW+BoQkBqBCLocI5dS8T/3BZBA== 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?q?TX18XpJajFDOQW1JUfkHJjTtYC77?= =?utf-8?q?4KnxONlZjth9PMQv+EZniV03WK5AU7acVA2F0itCtjvIP+0UW8XBDE4Ywba1o1weG?= =?utf-8?q?gyj8mg86k46aa5uCkP63d+nSTUyqhXc0WWbrcwsfRF6Q1sqay02KDw9MQym0vS7gn?= =?utf-8?q?9/7/m7odsXlvCrGxrWbWgDHC7xwPzttXrTLAZNsD+seDZCKwGOJlkyajMJulKuv3A?= =?utf-8?q?nVlLGs3PksaN8lK0ZULjxb0KaloTg6iKO6uvYTtTz1w1NulAMsk2foKWSCkMgfrgQ?= =?utf-8?q?mm4kisvM68orofi4KzYQL95Dpam0KaKOlwpghIYr1mvI8CYK31feuxFRlMLRxbFsJ?= =?utf-8?q?KAke0baPKvxUUDdMq3tcaxUEljmavb3qWKJh5KlN3VEpiHo2yG8+r3Ni7jEcnRMtJ?= =?utf-8?q?+ZS+hN5XkRNKR8eq1DNjE5K9mT6bHyorHUzdOd+v1EWHms64C+4/d4JEAV+5ue6T/?= =?utf-8?q?urmVVMkc0xxiaox00AKgbdb06mBUAZN9l4gZUQH4z4PgGR9PvWW6yLXCRKQZK9R87?= =?utf-8?q?gAqX7prgh8jZFcbILeUZbVCBhrBOo6TTrAh0ldM49pRSZsJTG6qX4veVfh94xh3Q2?= =?utf-8?q?BKJLSa8ZlaWVGun4AxECGVa+wHjDoaXxWG4lkzonxIks7dumjnbhLRHVLR+OmFJFy?= =?utf-8?q?STzry7IW3Gwl3ji0aW8bq1yaifjpW64sah0s3kagYygkf3WF1VKOjIMdCYOLBisLJ?= =?utf-8?q?qlbEFYpMuIRiKe64U19fhd40jEw6eDJuWK2b1VgS5iAo03gopw9i4C3WbnmeuxN22?= =?utf-8?q?+7vqrj/VE73SNAord+Fo19Tp1Ou9GR4Xgg2Hw9Pe38R3dvP909gffdxiUP+3/yqsj?= =?utf-8?q?y4h0qCAG0D7NRr2WDGIUUnzlpVYbmvj7tIg/zl3aT8VkiiffRUgPuqdxiScvRjEuy?= =?utf-8?q?CI5W6TzkduN9P94T9KM/Bv77QH9p0lx1AOm98Jr670w6ASQqizXdDxtl7bRJuOcK7?= =?utf-8?q?CoIUQBsV4Lyg+kNSegiQGjcDkPCuiQ1FVwYo9ZJP41fL3X+ti1g6tC2IUcu2qBNcb?= =?utf-8?q?jiYBOR5rXXYecRU4tUYQzkPktR2beOTYsnmVh9n/z3PFj+qjZiVtHO/kPYgK/FwHB?= =?utf-8?q?KJxrpmwO6H7y1G/EZ6swyUU2Pfdaws0kZB4WpeLAy9+XPcOCOMtXNF/OzC+nakfbn?= =?utf-8?q?tQDfP92bl/xgOQjKnPa9MMPIVB2RW20eGgOzleBYeBWt9lugPfI8snv3ZGChGcwAp?= =?utf-8?q?G+YvUAdYvx/Ls3u7t97dAGK2YD9+omEvynnVVJPoDkB3V1EwnCvWGtq3XIB9EU0Qu?= =?utf-8?q?+QPnHr2K6WC8cFjYlzMrjrGp+uAmuIjik8ScV9hbhAbqnRoKlZOSzLxZoJ0YF6NnZ?= =?utf-8?q?Gr5VDb0CNK6xD+tH1OJA9UjpwWPqqk0W8C5fDBtD5dFqwJVO5bDxIAxCNOmkkKncA?= =?utf-8?q?8HltgCRVvxwB0IVH967a/fqRN5OKiBjecPfaA1caWgmJuoj8MprR2HxCdLqs+K3AL?= =?utf-8?q?IvF0jZ3ibnO3NrvR2NTk+BDJ3Sch6m+/eKQXsLfOlHiies55l8RHZxiFfTQYeiEsu?= =?utf-8?q?vEg/bs/EbWE5s3uud+N8JCOPQokAjlM9p8OuHX4bV16IZ8Z3ex8jXjs=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 31606684-6784-4f05-11b9-08d9e011eb8c 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:42.1620 (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: dOe1wES9LEnnS2pfpwQY+HRHVljIseyJk3WccaSh+6pXi8gaa9rRsnEn05nxgLuz74Tj3QbJF8r4KFAIiUk4KA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR03MB4568 X-OriginatorOrg: citrix.com Hello, The following series introduces a new CPUID/MSR interface for the xenguest library. Such interface handles both CPUID and MSRs using the same opaque object, and provides some helpers for the user to peek or modify such data without exposing the backing type. This is useful for future development as CPUID and MSRs are closely related, so it makes handling those much easier if they are inside the same object (ie: a change to a CPUID bit might expose or hide an MSR). In this patch series libxl and other in tree users have been switched to use the new interface, so it shouldn't result in any functional change from a user point of view. Note there are still some missing pieces likely. The way to modify CPUID data is not ideal, as it requires fetching a leaf and modifying it directly. We might want some kind of interface in order to set specific CPUID features more easily, but that's to be discussed, and would be done as a follow up series. The addition of a helper to generate compatible policies given two inputs has been removed from this iteration, sine Andrew Cooper has posted a patch to set the foundation for that, and further work should be done against that baseline. Thanks, Roger. Jan Beulich (1): x86/CPUID: shrink max_{,sub}leaf fields according to actual leaf contents Roger Pau Monne (10): libx86: introduce helper to fetch cpuid leaf libs/guest: allow fetching a specific CPUID leaf from a cpu policy libx86: introduce helper to fetch msr entry libs/guest: allow fetching a specific MSR entry from a cpu policy libs/guest: make a cpu policy compatible with older Xen versions libs/guest: introduce helper set cpu topology in cpu policy libs/guest: rework xc_cpuid_xend_policy libs/guest: apply a featureset into a cpu policy libs/{light,guest}: implement xc_cpuid_apply_policy in libxl libs/guest: (re)move xc_cpu_policy_apply_cpuid tools/include/libxl.h | 6 +- tools/include/xenctrl.h | 44 -- tools/include/xenguest.h | 26 + tools/libs/guest/xg_cpuid_x86.c | 607 ++++++++--------------- tools/libs/light/libxl_cpuid.c | 205 +++++++- tools/libs/light/libxl_internal.h | 26 + tools/tests/cpu-policy/test-cpu-policy.c | 326 +++++++++++- xen/arch/x86/cpuid.c | 55 +- xen/include/xen/lib/x86/cpuid.h | 26 + xen/include/xen/lib/x86/msr.h | 20 +- xen/lib/x86/cpuid.c | 91 ++++ xen/lib/x86/msr.c | 41 +- 12 files changed, 925 insertions(+), 548 deletions(-)