From patchwork Thu May 6 09:57:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Roger Pau Monne X-Patchwork-Id: 12241945 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E4EFC433ED for ; Thu, 6 May 2021 09:58:06 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id BA3D961176 for ; Thu, 6 May 2021 09:58:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BA3D961176 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.123399.232720 (Exim 4.92) (envelope-from ) id 1lealK-0006hy-Tw; Thu, 06 May 2021 09:57:42 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 123399.232720; Thu, 06 May 2021 09:57:42 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lealK-0006hr-QR; Thu, 06 May 2021 09:57:42 +0000 Received: by outflank-mailman (input) for mailman id 123399; Thu, 06 May 2021 09:57:41 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lealI-0006hl-Te for xen-devel@lists.xenproject.org; Thu, 06 May 2021 09:57:41 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 788cfdf2-b699-4c15-87e7-ea6064af0ac3; Thu, 06 May 2021 09:57:38 +0000 (UTC) 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: 788cfdf2-b699-4c15-87e7-ea6064af0ac3 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1620295058; h=from:to:cc:subject:date:message-id: content-transfer-encoding:mime-version; bh=/v5wimBLgevMxM2ps68tYaaP25TA6n8o1lF4wq9Fz6M=; b=AiepEDcz1BmiuTQa+dir2AzC1I0ma0CdqitMDHQLAP41Gzfcs5oDawCR IxjZr5P9nhSdGdlYpTQ/J9QUE8MaQAWThQjs4gCo2k9KTM3pIA6d3JkZs YshzEGQsvNNj996EwlWNGiKGAmqnGtjHOVQFQXPpbKqY7YnL8zsAp5KWk 4=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 563QkYKpxDBVqFMi8GWC6tPXjwxU45+2KA0DD+hPvg6LPgnknRrJ9NtDZ2eqohkxLtxvUVzlOx O1BWJofwqkmQ+imA8EhZtLeNaMn6mij2yTvYxjHj64xkZLabdsCVyf7HABCCATT3/6qDuL2Xni 05haO7HZ4NlnoE7aDeDcmB/yOv0WhG0CK35FNyjt71l7tOElF6DL1MiQpB9G56Onyr+EhreL7H FBkdVEsl3SEcXqbPO3DMq5JNWnfNKmSdKJsmjoMYts59KjUxOfNfwsDMsqbSyZVT3NEOKZ6wTj SfI= X-SBRS: 5.1 X-MesageID: 43207016 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:a1pVSKszdgfhtfbe3a03BzVD7skCeoMji2hC6mlwRA09TyXGra 6TdaUguiMc1gx8ZJhBo7C90KnpewK6yXcT2/htAV7CZnidhILMFuBfBOTZskTd8kHFh4tgPM RbAtlD4b/LfCBHZK/BiWHSebtQo6jkgdOVbI/lvglQpGpRGsddBmlCe2Km+hocfng4OXN1Lu vQ2iIpzADQNUg/X4CePD0oTuLDr9rEmNbNehgdHSMq7wGIkHeB9KP6OwLw5GZebxp/hZMZtU TVmQ3w4auu99uhzAXH6mPV55NK3PP819p4AtCWgMR9EESjtu+RXvUjZ1S+hkF2nAn2g2xa1e Uk4i1QcPib0kmhPl1c+nDWqk3dOF9E0Q6T9bea6UGT6fARCghKTPaoKOpiA2zkAnEbzaRBOZ RwriukXqpsfGH9dRvGlqz1vmlR5zGJSFoZ4KUuZi9kIMEjgIE4l/1owKoDKuZ9IMu90vFgLN VT X-IronPort-AV: E=Sophos;i="5.82,277,1613451600"; d="scan'208";a="43207016" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KCS8INC8u/MLjkAAF8q6RILCjOPKrrXv1Fp7TghRslcPBc8al2Ndy2YPyg8ddKJOheKOPwpaKFtWhYVjQkFS9dGChMePL7RHFOtYcklETRQPrmysi+vKt0exG2OSvWm2WxpiQjdiuokvd7WxFc41v0rr+jZX5L3N4e9OgBJfS/6Pqbp8ad+B8Xk4qjI/eUqYLphz29lJg4oikM+ZAfQNPmoRhBG4gVzY9jfZJAfHVax/Z1D8ITCDH6DF1EFkgUABULUn2uVy5aDMr8KU4kTDsNONB7rOOGX0Wv+dPyMamNY2jLQrjDtrzHbKjetKMjr5fdkSE8w0VZTUxrVmX8hyow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k+pCfK3ruyr0u0q8biCc2bOuDQxymNsb+FKpc4zeygM=; b=N9pvnWGTngoimklzXv/Pwv7etY3LEXxmnvrUMhLdtidY26KJ43+aDZJMvexEkj9D+m8RXJEG5PfvxkPnKCsdwOsqDEeCzG7N8zUkToDDrKWGel0CMapDHN9PQ46jUwHCav3GqUyIGCTcYJdmGdd7GMwKcVnBE+mALD+YIMk6JGm1t9zWrIfRqwciNBAwf7Gv/6U4JRr49C5TNO9VGd5DnsK+KUGIJv7kmTR/yaqTtBDI6hnbcbnuReV8A0OrKmBP5AQ8S/Y1nJdXxupLIOw4HSVmXzVSeQ85l0O5H686uqin3lE008tA4QWRukpTpKZ+erE5z10li0NoN9shDU7pFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k+pCfK3ruyr0u0q8biCc2bOuDQxymNsb+FKpc4zeygM=; b=kCyZqBt9sA1q2vjrIdweAZdyR9e30j7Pn40xqE6dK9HoMS0qSwDK8OFp3/H04hdUT0cn9wJlfQp2GboiN4VabTrGCLaZeoyLxZBFnuM1GrXLPmLK6tOJ6mk3EYE2lrEdjlb2slZYRNDq+QeR1UGSgDEHCuw8Lb2aak4bRUD0RMA= From: Roger Pau Monne To: CC: Roger Pau Monne , Ian Jackson , Wei Liu , Jan Beulich , Andrew Cooper , Christian Lindig , David Scott Subject: [PATCH v2] tools/libs: move cpu policy related prototypes to xenguest.h Date: Thu, 6 May 2021 11:57:05 +0200 Message-ID: <20210506095705.1796-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.31.1 X-ClientProxiedBy: MR1P264CA0018.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2e::23) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 13365b05-6bd8-466e-a27f-08d910755411 X-MS-TrafficTypeDiagnostic: DM6PR03MB5065: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oZw/w+Z4oTFLk1fQRpmn5T9pyqefvW3x8nlGoFOBWl2DDxCTXoohP+/MFBwWsHLNXts85BFIsZVPyDyWNbpYbs40wh4Akb2n901trH01IRrGKoxu88A31VRGeEnsdMp5zkU9sZlVxs/fcUpXquODJLIC7iNDwCJZAZKfQIE1NMKj2/rYV+Js9bxPWCBoY3pmUSK2K54DrPITsKzmUODT/KPaH9ORSXW9juN3C0jZfd7bKL9VmmO7z4OUEDXNcz/NrL1U+V9XinftwUG+zUmqC89dmtHsgd+Hw73TYvnDFftvkIMM0k1x0hpVTL6fmY1OCgZgIHKiuxHX0/pZvik6yWtHHijrVhC5/Mv+2g+dinCiFFuwYSaMehr8bIpeKkKOF5kyLzpDhGj6LP1+g5oBYeYJzD+ZBe2gaMEEsUmNCb/vm8IBvsWJ/A/E8uQFDobQmrCt7XFbvBjOHFdr9U+l0g8tBPGNsSLdHx4fQv7WPi68w33GHe8ThVqBhHx8mhk8ttrT8LKZhT+rINXL8592NF0vxQ1xO4EyMsBhMyhkOiLyLHJ7Rb5wvfQEVYtDLb0wb6sT+qN+sLPtkfR0dG6D03kq0Mai6Xo1dhi0/FmyVhI= 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)(346002)(396003)(376002)(39860400002)(136003)(366004)(26005)(6666004)(6486002)(1076003)(86362001)(8936002)(8676002)(478600001)(38100700002)(36756003)(66946007)(66476007)(54906003)(316002)(66556008)(16526019)(186003)(2616005)(5660300002)(2906002)(956004)(6916009)(4326008)(6496006)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?ONHzsgn3LLATE17TiNyQro8zsVloY6?= =?utf-8?q?XI1YxWcRa5rTdpgiLxutTQB20jkTFPzMuTxOkOt9n3XedWEijxZUcTyO9xP3f1CiL?= =?utf-8?q?Je4e5K2Qo3nsFkNN6uCrBegWYFBzToHyYsXVhG+iOxzUALKCFW2HDaFG2QChEk9Hl?= =?utf-8?q?8XHVbLlrDN8AR+6REN7blW3ITVve47C+uZFOjetDNdCHdb7Uopo3CnpzqLZzuYrUW?= =?utf-8?q?h6Dicxs7iqctDxr1FPE+iOanQT/H1AqpMS16uxGCQ8NN1Q9T87wo6xU+VEv9y/RAA?= =?utf-8?q?dIUQafD3COhnY6g0EJRp1n53AOkDshdKl2hAOPbb3bAoTHdNMmft8+UFUfsiyKoUI?= =?utf-8?q?SLVhNrdfil257kKk/HbyAPLnjBcEuJdpf23I5cenIsVOmqPuSp2DG3uZD46x4S6Nv?= =?utf-8?q?PTnqQtFYVfeb6WQMMRwOpxu6ZcjpxBnKZwLgjUC5P4so8euliZyVmQS7G646LcNe1?= =?utf-8?q?x5k/qb3zklc3BYxoWGL4W069+0A/KdvbvOM3njC/yChR04/HgM6OIGb3RUFSKZVLl?= =?utf-8?q?eNIsQf8/VYbv7l+OoQjKR85WQDtw8nqP5Bpdw8fi7wXfC9kcQTqP4Yk1Dfj70El7t?= =?utf-8?q?e3jUqi6aKHijU0OMKr0EMxhZQ7KltsZ3pzb9L1sXpiir9xe5WTYHSh0syRfCO/yVh?= =?utf-8?q?Q7/r4sFx/0/tMslei/+mQEhUtLVNd+cdKj6zRRJAfmODDXO/xpNZYF/kulEULvCov?= =?utf-8?q?b1plB/HaNuI/5WMPjm4f0A7Zo2ZBYt7v09dQu2ZOD/DeRgJ+lErFFlZOE+1Qckorq?= =?utf-8?q?5UiOz1PsCpZJ4v7Ya39JFMQPxX73JMcZjZNjtENiQgFeubmgYm3zHxfN8IL93MqPf?= =?utf-8?q?OSFpB+N36335nZBnejNE8XE+7LI6zRw3NC05C/wTg1UsSJs+efRQPT3ndTeXmDH4Z?= =?utf-8?q?3ijR8Ci11ibv1GonHQzHZAFHdAK1ziZ9f9YG7iJD0sJK+kjrI/E8ciDstqQ0wF2QC?= =?utf-8?q?dRcx+EdpMlOw8hFO2JRs9hTMmMfHsg/UXSv6RwqYoYsODxhT+zL5o6PUZbmhZ1CJ+?= =?utf-8?q?QO8tS1GCcHEVe5V6Xl/ErmDFOFs4EnKCCOV47kMa1dNhTS3KCvKXwpjn04kX9OjNv?= =?utf-8?q?9h+PupIVIQ8aSWyKMitROVaEtHsmeHPe7at6VeQbGwxQFtzAMgg38mO90hjk3BSzS?= =?utf-8?q?t4sk7to/aQ89jrtHENjr+ov5+SlGXEmD9CCl7j53Vt7+NnL4dWOX74N77J9YVyt8q?= =?utf-8?q?jHBVl0/QQ2EWUEY1TpLl3g85cmacVruOFHHk9JzlyQUX7CYt3bCjJgGP+KhpOUmj/?= =?utf-8?q?Fvos1AP41mqZKN?= X-MS-Exchange-CrossTenant-Network-Message-Id: 13365b05-6bd8-466e-a27f-08d910755411 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2021 09:57:15.8540 (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: Em9ozvofMDww6tnGjlqigcnuB6xKbCKEwgvYg+H2TMV8E2EL/cJwoYmzqgPk6o3+Q9/NAQqYDgQr16/Oxb4PwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5065 X-OriginatorOrg: citrix.com Do this before adding any more stuff to xg_cpuid_x86.c. The placement in xenctrl.h is wrong, as they are implemented by the xenguest library. Note that xg_cpuid_x86.c needs to include xg_private.h, and in turn also fix xg_private.h to include xc_bitops.h. The bitops definition of BITS_PER_LONG needs to be changed to not be an expression, so that xxhash.h can use it in a preprocessor if directive. As a result also modify xen-cpuid and the ocaml stubs to include xenguest.h. Reported-by: Andrew Cooper Signed-off-by: Roger Pau Monné Acked-by: Andrew Cooper --- Changes since v1: - Include xenguest.h in ocaml stubs. - Change BITS_PER_LONG definition in xc_bitops.h. --- tools/include/xenctrl.h | 55 ---------------------------- tools/include/xenguest.h | 56 +++++++++++++++++++++++++++++ tools/libs/ctrl/xc_bitops.h | 6 +++- tools/libs/guest/xg_cpuid_x86.c | 3 +- tools/libs/guest/xg_private.h | 1 + tools/misc/xen-cpuid.c | 1 + tools/ocaml/libs/xc/xenctrl_stubs.c | 1 + 7 files changed, 65 insertions(+), 58 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 58d3377d6ab..e894c5c392d 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2589,61 +2589,6 @@ int xc_psr_get_domain_data(xc_interface *xch, uint32_t domid, uint64_t *data); int xc_psr_get_hw_info(xc_interface *xch, uint32_t socket, xc_psr_feat_type type, xc_psr_hw_info *hw_info); - -typedef struct xc_cpu_policy xc_cpu_policy_t; - -/* Create and free a xc_cpu_policy object. */ -xc_cpu_policy_t *xc_cpu_policy_init(void); -void xc_cpu_policy_destroy(xc_cpu_policy_t *policy); - -/* Retrieve a system policy, or get/set a domains policy. */ -int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, - xc_cpu_policy_t *policy); -int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, - xc_cpu_policy_t *policy); -int xc_cpu_policy_set_domain(xc_interface *xch, uint32_t domid, - xc_cpu_policy_t *policy); - -/* Manipulate a policy via architectural representations. */ -int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t *policy, - xen_cpuid_leaf_t *leaves, uint32_t *nr_leaves, - xen_msr_entry_t *msrs, uint32_t *nr_msrs); -int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, - const xen_cpuid_leaf_t *leaves, - uint32_t nr); -int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, - const xen_msr_entry_t *msrs, uint32_t nr); - -/* Compatibility calculations. */ -bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, - xc_cpu_policy_t *guest); - -int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); -int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, - uint32_t *nr_features, uint32_t *featureset); - -int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, - uint32_t *nr_msrs); -int xc_set_domain_cpu_policy(xc_interface *xch, uint32_t domid, - uint32_t nr_leaves, xen_cpuid_leaf_t *leaves, - uint32_t nr_msrs, xen_msr_entry_t *msrs, - uint32_t *err_leaf_p, uint32_t *err_subleaf_p, - uint32_t *err_msr_p); - -uint32_t xc_get_cpu_featureset_size(void); - -enum xc_static_cpu_featuremask { - XC_FEATUREMASK_KNOWN, - XC_FEATUREMASK_SPECIAL, - XC_FEATUREMASK_PV_MAX, - XC_FEATUREMASK_PV_DEF, - XC_FEATUREMASK_HVM_SHADOW_MAX, - XC_FEATUREMASK_HVM_SHADOW_DEF, - XC_FEATUREMASK_HVM_HAP_MAX, - XC_FEATUREMASK_HVM_HAP_DEF, -}; -const uint32_t *xc_get_static_cpu_featuremask(enum xc_static_cpu_featuremask); - #endif int xc_livepatch_upload(xc_interface *xch, diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h index 217022b6e76..03c813a0d78 100644 --- a/tools/include/xenguest.h +++ b/tools/include/xenguest.h @@ -719,4 +719,60 @@ xen_pfn_t *xc_map_m2p(xc_interface *xch, unsigned long max_mfn, int prot, unsigned long *mfn0); + +#if defined(__i386__) || defined(__x86_64__) +typedef struct xc_cpu_policy xc_cpu_policy_t; + +/* Create and free a xc_cpu_policy object. */ +xc_cpu_policy_t *xc_cpu_policy_init(void); +void xc_cpu_policy_destroy(xc_cpu_policy_t *policy); + +/* Retrieve a system policy, or get/set a domains policy. */ +int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, + xc_cpu_policy_t *policy); +int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, + xc_cpu_policy_t *policy); +int xc_cpu_policy_set_domain(xc_interface *xch, uint32_t domid, + xc_cpu_policy_t *policy); + +/* Manipulate a policy via architectural representations. */ +int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t *policy, + xen_cpuid_leaf_t *leaves, uint32_t *nr_leaves, + xen_msr_entry_t *msrs, uint32_t *nr_msrs); +int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t *policy, + const xen_cpuid_leaf_t *leaves, + uint32_t nr); +int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy, + const xen_msr_entry_t *msrs, uint32_t nr); + +/* Compatibility calculations. */ +bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host, + xc_cpu_policy_t *guest); + +int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); +int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, + uint32_t *nr_features, uint32_t *featureset); + +int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, + uint32_t *nr_msrs); +int xc_set_domain_cpu_policy(xc_interface *xch, uint32_t domid, + uint32_t nr_leaves, xen_cpuid_leaf_t *leaves, + uint32_t nr_msrs, xen_msr_entry_t *msrs, + uint32_t *err_leaf_p, uint32_t *err_subleaf_p, + uint32_t *err_msr_p); + +uint32_t xc_get_cpu_featureset_size(void); + +enum xc_static_cpu_featuremask { + XC_FEATUREMASK_KNOWN, + XC_FEATUREMASK_SPECIAL, + XC_FEATUREMASK_PV_MAX, + XC_FEATUREMASK_PV_DEF, + XC_FEATUREMASK_HVM_SHADOW_MAX, + XC_FEATUREMASK_HVM_SHADOW_DEF, + XC_FEATUREMASK_HVM_HAP_MAX, + XC_FEATUREMASK_HVM_HAP_DEF, +}; +const uint32_t *xc_get_static_cpu_featuremask(enum xc_static_cpu_featuremask); +#endif /* __i386__ || __x86_64__ */ #endif /* XENGUEST_H */ diff --git a/tools/libs/ctrl/xc_bitops.h b/tools/libs/ctrl/xc_bitops.h index f0bac4a071d..4a776dc3a57 100644 --- a/tools/libs/ctrl/xc_bitops.h +++ b/tools/libs/ctrl/xc_bitops.h @@ -6,7 +6,11 @@ #include #include -#define BITS_PER_LONG (sizeof(unsigned long) * 8) +#ifdef __LP64__ +#define BITS_PER_LONG 64 +#else +#define BITS_PER_LONG 32 +#endif #define BITMAP_ENTRY(_nr,_bmap) ((_bmap))[(_nr) / 8] #define BITMAP_SHIFT(_nr) ((_nr) % 8) diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 1ebc108213d..144b5a5aee6 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -22,8 +22,7 @@ #include #include #include -#include "xc_private.h" -#include "xc_bitops.h" +#include "xg_private.h" #include #include diff --git a/tools/libs/guest/xg_private.h b/tools/libs/guest/xg_private.h index 8f9b257a2f3..db93521c567 100644 --- a/tools/libs/guest/xg_private.h +++ b/tools/libs/guest/xg_private.h @@ -27,6 +27,7 @@ #include #include "xc_private.h" +#include "xc_bitops.h" #include "xenguest.h" #include diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c index d4bc83d8c92..2b1a0492b30 100644 --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -8,6 +8,7 @@ #include #include +#include #include diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index d05d7bb30ec..6e4bc567f53 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -32,6 +32,7 @@ #define XC_WANT_COMPAT_MAP_FOREIGN_API #include +#include #include #include "mmap_stubs.h"