From patchwork Tue Apr 13 14:01:19 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: 12200621 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.7 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,URIBL_BLOCKED, 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 959FFC433B4 for ; Tue, 13 Apr 2021 14:02:32 +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 3CC0761206 for ; Tue, 13 Apr 2021 14:02:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3CC0761206 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.109767.209505 (Exim 4.92) (envelope-from ) id 1lWJcG-0004ri-Du; Tue, 13 Apr 2021 14:02:08 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109767.209505; Tue, 13 Apr 2021 14:02:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcG-0004rb-AU; Tue, 13 Apr 2021 14:02:08 +0000 Received: by outflank-mailman (input) for mailman id 109767; Tue, 13 Apr 2021 14:02:07 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcF-0004rK-EV for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:07 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 9f706b10-97a6-4ef3-8c94-0b990a922eb5; Tue, 13 Apr 2021 14:02:06 +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: 9f706b10-97a6-4ef3-8c94-0b990a922eb5 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322526; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=0Z9bLa3Of6ehyx4kNWG7tTOMC4d6bLSrky0iA51bLt8=; b=f0NYHJDaTPgqlL+rhF/a9FlM2drqBdIm/sGmSPrFtO6E1ilpsodbmLtT ye6VEG0lE1FaOvx5P59Maq5gXaLWN7JAV6cMkGH4GIc+u1Vzw+6Pajh8W 5vTXx83fQrej7Bw4TqAL50Og7ikptGR7smpiXxbgp0h8AeYxDIH+v5o8v g=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: rTCzCnezs2/a1q15+916qSQliMPcyYRgcH8b6mORBVMV5k3PtPQCK7FD1P5Cg79kxPL1cCkElL 8snMS1sOugxYScpDYmQKx6C48cunOz1+YqXkS6wb0DFNohKZWy/YR80s2h+6w3N+GjGmUyW4oX M/Ba4JP1hN9yjJxAn+3SGG80kYOaG5FQnmMGjJrXr53NExKI/RCgiLntRAt8KXM6jsOwTJdf6e UgLGagThj0RusoDEY2NeithEi9tKuFzojJwOa+QvxbFUQCsJcgD1V929iJiF6tmYnrm7Z5XoQT 8So= X-SBRS: 5.2 X-MesageID: 42955851 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:V7Qx1q2LlN6n4cJdP6gNdQqjBTd3eYIsi2QD101hICF9Wvez0+ izgfUW0gL1gj4NWHcm3euNIrWEXGm0z/FIyKErF/OHUBP9sGWlaLtj44zr3iH6F0TFmtJ1/Z xLN5JzANiYNzVHpO7n/Qi1FMshytGb8KauwdzT1WtpUBsCUcBdxi1SYzzrdnFebg9AGJY/Cd 6g/cJBvTWtYjA6ac68C3kDUYH41qH2vbjhZgMLAANi1RmWgVqTmcPHOjW7/jNbaTNAxr8+7X PI+jaW2oyPu+y2oyWssVP7wI9RnLLau7l+LeyKzvMYMzD9zjuvDb4RIIGqmBAQjKWR5E0xkN /Kyi1QT/hbz3/KZGm6rV/M9mDboU8TwkTvw1OZnnfvyPaRLFlRa7sj9PBkWyDU5EY6sNZ33L gj5RPii7NtAQ7dhyO43tDUVnhR5zuJiEA/mu0ehWE3a/p4VJZtq+UkjSZoOaZFNif75Ic7Kf JpHcHR6d1HGGnqEUzxjy1BxsehUW80GQrDak8eutaN2zwTp3xhyVAErfZv0ksoxdYYcd1p9u 7EOqNnmPVnSdIXV7t0AKMkTdGsAmLAbBrQOAupUBvaPZBCH0iIh4/84b0z6u3vUocP1oEOlJ PIV04dnXIuemr1YPf+nKFjw1ToeiGQTD7twsZR69xSobvnXofmNiWFVRQHj9agmfMCGcfWMs zDea5+MrvGFy/DCIxJ1wrxV915Mn8FSvAYvd49RhagucTOBor2tvHKUfraKbb3eAxUGF/XMz 8mZnzeNc9A5kekVjvTmx7KQU7gfUT54NZRHcHhjq0u4blIErcJnhkeiFy/6M3OAyZFqLYKcE x3J66itqu6oGKx7FvZ9mkBAGsYMm9lpJHbF19arw4DNE35NZwZvc+ERGxU1HybYjhyUt3RCw wag1hs46q4I9ixyEkZepyaG1Pfq0FWiGOBTp8alKHGz9ziYIkEApEvX7E0Mx7KGRxzkQNDs3 xCdwcAe0/aGlrV+OaYpa1RINuaW8h3gQ+tL8IRg2nYr1+gqcYmQWZeYySjSveNgQElRyNdg3 p496N3usvGpR+fbU8ExMgoOlxFb2qaRJZLFh6Maolvlrf3Qw1oVmuRiTuGixY8R3ry+ywp9x /cBBzRXcuOLktWu3he3Kqvyl9ye2mHV29ba3xxs+RGZC/7k0c29dXOSru40mOXZFdH//oUNy vdZyAOZil0wcqs6RKTkDGeNHkvy5k0JNbBBLA7f7y74ALqFKS40YU9W9NE9pdsM97j9tIRWe WEYgmPMXfWDfgq1wH9nAdSBABE7F0f1dXm1x3u4DLmgDoRAf/OLE9nQL9eCdeG9GTgT+uJ1p I8rd9dh5rFDkzBLvq9jYfQZHp/DzmWh0icZeQhs4pVsqI/r6EbJeiSbRL4kFV8mCwjJ8L1nn 4ESKt14Lr9KpZiFvZiDh5xzx4MrpCzN0MlvQz9P/8mcXwsh3HdOcmV47Cgk8tZPmSx4C/5OV yS6ERmjo/4dhrG8b4REKQrJ2tKLGA69XR55euHHregQjmCRqVm/FCgNGW6f6IYYK+ZGa8Iph I/x92TheeYe27Z3w/X1AELb55mwiKCQcmoBhiLFvMN29umOU6Uiq/v2fWNtl7MOHKGQnVdo5 ZEe0wWZtlCjTdnrLRf6FnMdoXH5mQ/k1Vf5jl7kEXKwYbO2haDIX17 X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="42955851" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fVSHbZ+AuFB66qVIV+dDETUr3T2iIvOQJ3KwteRPqFS0TD87Zi+cHRGTYG5MsGrDVSvUrhV2f0LbqV2KIOsaOR3x+ANVVgmoYItXYTlC16vsHOsn9V1egj7cal+2jvHAcqjmLqNkV7FbvAWpGhBXc8d2nWbk7yaesGsxtPVweNR+oeM5zvL2keRnqdqZMwvaE+3nBWlDN7okpLv0Q39Y6Z+GrTVXAAcEYbG4RnH9NrUn/US0hfjJ/ZlOTQdrIYa0tFzkW430gJdTu9Oi74C9NNKLetW1d7KkWc4sWt/KeGu7BZtMN67cVfWMqddWXcQmkZ1Z8mzbx9LWfUEIWi//Rw== 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=ZiXg4RaaWYgPdIkmGYs/6vFIpLjmbLaKb/fElO2iGok=; b=d8Dq5X21ymlAiJOcAeJ1XUnp6jbeGwAD4PGccB8i0tEmo5NwOshm+21jJqcWYZVK366Chk9rxHWEZ9GmF0ypYqCjHOXWD6w5GS0BrFu3g0M1mQ6Z9X7F+X26M5RSKHgOoZDbMJnc8F+G3SrHXx9NDdiYEQy0vh1AyaS0CVKB9mVVGw9oZTQJUchH62x6lbqdqLejIm2NZTD9wDab2Ev1uy84URzGa0cir+XTyO99v+ZbftTLgqJcTeOI4ntGbDdXhdUrSaCJ57Ov0Zuts/irxFKn9w8wzs8K0KLyFjBfVX6laAEXDkZXdrHcjbjplL/4bwGFt1p4ifJahgr6uVqFzQ== 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=ZiXg4RaaWYgPdIkmGYs/6vFIpLjmbLaKb/fElO2iGok=; b=eJ5xqxkLinkGPcsVXnwbLFJTrgzUeQ+MTtJ37UJGmIIDreHUBVkg6sYlD2yL18g8DJpT4v+oBj8tuysUTG/agGmFbR001zqax6aJpgfj7FYPOOKyxdmTkBoOXjlGjdRvwqraHnUScSD3DGkQgIV3H6STsfKgA+wgeh52jDuj420= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD , Jan Beulich Subject: [PATCH v2 01/21] libxl: don't ignore the return value from xc_cpuid_apply_policy Date: Tue, 13 Apr 2021 16:01:19 +0200 Message-ID: <20210413140140.73690-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0134.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:30::26) 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: bb95fbd9-47ee-414c-36cd-08d8fe84b65d X-MS-TrafficTypeDiagnostic: DM4PR03MB6096: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xu+ohUAqjLQ049XEbtMgfk8/5ndfnbzurHyGlWfu+0zqa8qT31L8xvJIwKU+CTopQMLL2PooOIVpCiA7u+Qw7B6NM4XcwFPMI3jbcOJGIvFnBDq0GJ9PacqV9wu35SLaB2LRRSQOByUmOr21hb2jrX0oK6u6v5IMhjHUgXfA9OsxJwXhP2cpQJBsWvRt4/6hN/NooclFIDN9hjjFkGYuce/Ksm7HLBUQSmO8ZCo9+czDdaQBEDYDsJ3O//6zPlCXTzzIPW5rt4IjdZej0WS1t6D2T7Zx47ZVM89q0dm5paBNqfwDNA691/z5T7ouvn1vpwhvFgwLnCYQke9Bw8l3rslvKLtNg9h3yFnRWSxla4IRtyuHEe3uBCLNjJpK0DSwZ80KLS6obBFQtHgWasdoUidUuWy0P1OPwTxj8QvSEXWT34Cqth6UvKI8zrN+arvPnN6r1mhBkCYcIBJJjFqjfJJ27v+gYDyQdFs0SW6LD9kGjD9EJmvQR+PTrsSn6OoHVbaTgEcLimGciAUGZNJ6UK32LybhR7Ras+dt4Dt3/wooGIv0tK2Dl/nfenlPlhzdSSBJ6Kw5iKGtV8Wm99Skbm9k7GaA+evCQHcDp++Y9kc= 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)(376002)(136003)(39850400004)(396003)(346002)(26005)(6916009)(86362001)(36756003)(83380400001)(186003)(8676002)(6666004)(16526019)(66476007)(66556008)(54906003)(2616005)(6496006)(5660300002)(956004)(38100700002)(478600001)(1076003)(4326008)(2906002)(8936002)(6486002)(316002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?7AtQrpkWjmCV/J1rBVbXBOhbk5nwQB?= =?utf-8?q?to+kKkclCBHv4mBxIxgUo4r4tYPTqa7jhJGDiZbOi2ajQ+9WInitU9R7csEfHTpv2?= =?utf-8?q?AESis1dxquyPKgQvvbaXp4AQTfvKi2zSbWM6ifJKHvsODC5FslmRopKJoFjqlm3qY?= =?utf-8?q?gEJrGvl/nyzW/cQzltSHXrEC4BtPZyVitw40QCM8RDvyRT/evTVxPTeypgmusBckg?= =?utf-8?q?roycN6wtsiPqUPS24yua8roemRZKW0KwSE44oxsK3JmLtRg9XbLPR5bLBUVcsj0PY?= =?utf-8?q?sKvLUmMAanN2pzC8KT7Knq+fEvk44eA37Pi7dXXa8VZfYs6y/cOnPmUfJkbIt6Ev2?= =?utf-8?q?tQJpFVM+L+O+dMNYeZzt1MDoGta96qIzP3knqXDB0urV5maEUjF6rqGYIGSGBZe0z?= =?utf-8?q?kVGPPbVrKJnn6owWKby31rvz9/tGg7CPNIB2+7uNFwI+xW1jRRxwPGAZllLBGjcD8?= =?utf-8?q?PjdZzF3ItXqXfFuidr6NB+bYjWJU98Me2PaKA8E4ran1jMvtt/+Flpzla45/90hbA?= =?utf-8?q?fclU78xbTY/M2JPbZ6nvE1uq+JjUFvdu6MVdHygPCJ7B0b709xugwy4zEKxXwx/VM?= =?utf-8?q?SQSshBQR3kQ3BY8nnctgBgunKMcTu2Xi0HbpmmPkuM21ZP0xzM/KMnIGB52J80td2?= =?utf-8?q?DfPxJ1nXFZghVMhN0Z0MtoiNfhyvqApUQxrPUWfiVsFFeFSNFqbo64sa2xaHhLT/r?= =?utf-8?q?IiFv7l1C33El3TyQTMkKgTY2NGgDPa5VbCBa7+B4e5aESoK/1khIwWqbBIwpUha1H?= =?utf-8?q?eMDwJVdt5XYQEJAz2Y+bOlhyrosHskMhTwobD5taWFvjtrCLhS6JZHneWtB9RPwho?= =?utf-8?q?nhOipDmWsRYPobHzTJwL2kHsASqKtJx/htfw3eJZ+JtkxmHAOIOIpGT6q1PMxMfNP?= =?utf-8?q?c1whis1Ki5n79DOI0T+OCKzJLIOUWpSqjqkIxJDSA1Xb7jZjZ3lgQvPhjxmx29fJu?= =?utf-8?q?0ygd+qAcoVvgWcw9QjJnEfr52cUZweyUAbEq8Yj9zJ5OLS7Y7jlkxYjHjGOTdQTkM?= =?utf-8?q?ST2Ygts3Sm8vq0oGBKR9ELzyVi2CIAneDQSZYvny/hpUGVSB0ApQZhSoDC/RnCZU6?= =?utf-8?q?tl8x/mWgAr7nWftt4eUr53WqAtyj/LBPBE38IvAy0d9GyQzRf6rUcqVPzuvmZbN7B?= =?utf-8?q?4n5sO6/3u4OpqKE1U7oidc+7+X/DjNlw7Ha3GBhRG40gtewIR14p5DM5XGv6qv5Dy?= =?utf-8?q?9AkKqc01C4Wn5rQ1Bj6DoeF24QH3afBKVV+75rA6/t+1Joq3vJzBOThwZgViYFZjk?= =?utf-8?q?OPydlFtR1TWN/+?= X-MS-Exchange-CrossTenant-Network-Message-Id: bb95fbd9-47ee-414c-36cd-08d8fe84b65d X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:02.2690 (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: Fi8tEj8wb3b41sumVcZ8BAFMe6WNwVKOX8Coevm0IIMsbxWTspotNiCZP50Gh3DgEUFfLKdNd6qWJiuK7rHk0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR03MB6096 X-OriginatorOrg: citrix.com Also change libxl__cpuid_legacy to propagate the error from xc_cpuid_apply_policy into callers. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- Changes since 1: - Return ERROR_FAIL on error. --- tools/libs/light/libxl_cpuid.c | 15 +++++++++++---- tools/libs/light/libxl_create.c | 5 +++-- tools/libs/light/libxl_dom.c | 2 +- tools/libs/light/libxl_internal.h | 4 ++-- tools/libs/light/libxl_nocpuid.c | 5 +++-- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 289c59c7420..539fc4869e6 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -419,11 +419,13 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *cpuid, return 0; } -void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, - libxl_domain_build_info *info) +int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, + libxl_domain_build_info *info) { + GC_INIT(ctx); bool pae = true; bool itsc; + int rc; /* * Gross hack. Using libxl_defbool_val() here causes libvirt to crash in @@ -462,8 +464,13 @@ void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, itsc = (libxl_defbool_val(info->disable_migrate) || info->tsc_mode == LIBXL_TSC_MODE_ALWAYS_EMULATE); - xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid); + rc = xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, + pae, itsc, nested_virt, info->cpuid); + if (rc) + LOGE(ERROR, "Failed to apply CPUID policy"); + + GC_FREE; + return rc ? ERROR_FAIL : 0; } static const char *input_names[2] = { "leaf", "subleaf" }; diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c index 0c64268f66d..2faa96d9c68 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -1443,6 +1443,7 @@ int libxl__srm_callout_callback_static_data_done(unsigned int missing, libxl_domain_config *d_config = dcs->guest_config; libxl_domain_build_info *info = &d_config->b_info; + int rc = 0; /* * CPUID/MSR information is not present in pre Xen-4.14 streams. @@ -1452,9 +1453,9 @@ int libxl__srm_callout_callback_static_data_done(unsigned int missing, * stream doesn't contain any CPUID data. */ if (missing & XGR_SDD_MISSING_CPUID) - libxl__cpuid_legacy(ctx, dcs->guest_domid, true, info); + rc = libxl__cpuid_legacy(ctx, dcs->guest_domid, true, info); - return 0; + return rc; } void libxl__srm_callout_callback_restore_results(xen_pfn_t store_mfn, diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c index 842a51c86cb..e9f58ee4b2b 100644 --- a/tools/libs/light/libxl_dom.c +++ b/tools/libs/light/libxl_dom.c @@ -384,7 +384,7 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, * being migrated-in/restored have CPUID handled during the * static_data_done() callback. */ if (!state->restore) - libxl__cpuid_legacy(ctx, domid, false, info); + rc = libxl__cpuid_legacy(ctx, domid, false, info); return rc; } diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h index c6a4a187f5b..44a2f3c8fe3 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -2052,8 +2052,8 @@ typedef yajl_gen_status (*libxl__gen_json_callback)(yajl_gen hand, void *); _hidden char *libxl__object_to_json(libxl_ctx *ctx, const char *type, libxl__gen_json_callback gen, void *p); -_hidden void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retore, - libxl_domain_build_info *info); +_hidden int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool retore, + libxl_domain_build_info *info); /* Calls poll() again - useful to check whether a signaled condition * is still true. Cannot fail. Returns currently-true revents. */ diff --git a/tools/libs/light/libxl_nocpuid.c b/tools/libs/light/libxl_nocpuid.c index f47336565b9..0630959e760 100644 --- a/tools/libs/light/libxl_nocpuid.c +++ b/tools/libs/light/libxl_nocpuid.c @@ -34,9 +34,10 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *cpuid, return 0; } -void libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, - libxl_domain_build_info *info) +int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, + libxl_domain_build_info *info) { + return 0; } yajl_gen_status libxl_cpuid_policy_list_gen_json(yajl_gen hand, From patchwork Tue Apr 13 14:01:20 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: 12200615 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.7 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,URIBL_BLOCKED, 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 BEB81C433ED for ; Tue, 13 Apr 2021 14:02:27 +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 624BE61242 for ; Tue, 13 Apr 2021 14:02:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 624BE61242 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.109768.209516 (Exim 4.92) (envelope-from ) id 1lWJcL-0004un-Pb; Tue, 13 Apr 2021 14:02:13 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109768.209516; Tue, 13 Apr 2021 14:02:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcL-0004ug-MX; Tue, 13 Apr 2021 14:02:13 +0000 Received: by outflank-mailman (input) for mailman id 109768; Tue, 13 Apr 2021 14:02:12 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcK-0004rK-98 for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:12 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 48c99015-3a53-41f1-8730-55d527821831; Tue, 13 Apr 2021 14:02:09 +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: 48c99015-3a53-41f1-8730-55d527821831 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322529; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=OVrwr3BA9em1iIl+C3YJ3vNrkONASrz74AXCzhLJFEw=; b=OPhIvVgtDGgWBs1bHMIP9Sc/ELKEsdBbPMSjvpxr5y/+rseriBVD/uX9 gVkCS/AxV0/48a8H6Ltji90UuO/9rWV6UygI/Z8u41hBIqx+9779HxFFr kv13Oodh30zUHQMIcJR+uhRzkmVkhUWSO7Sex1BIWVqpBIk4EySLAn6Hw A=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: SeCTuAeuUTjiNEw5xG0CgRsQnlCMfV0xcotneONWGIvmP/zwSIl9G0eajD6fFwGIKOStOGSvNc aWpQsM6YXBerPURXrIm0E4kkHgNRVNCC56csl701RM3YFVY0RE6/DVxmWwfVx8QRNUueo2XSUk Z8ov5TJLPo1jXsfuIqoUy1ayizIbVhur8uH6d2me3JIZ06D6dWQKe/bZEH83s0YC+C0wA4y4UH wFG7TYPC1vwn3AO8cWO4fYY4oqa6/l+WF5SBQP6rAbITtmb4K3CzVkj8Ezcz3tBqcvkqUwhMgK kEY= X-SBRS: 5.2 X-MesageID: 42955875 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:7t9B8aCGp8u4YT7lHegptMeALOonbusQ8zAX/mhLY1h8btGYm8 eynP4SyB/zj3IrVGs9nM2bUZPufVr1zrQwxYUKJ7+tUE3duGWuJJx/9oeK+VHdMgXE3Kpm2a 9kGpISNPTZEUV6gcHm4AOxDtYnx529/Lq1gPrFpk0NcShBQchbnmNEIyycFVB7QxQDOIEwE4 CS6tECiz2rf3kWacrTPAh4Y8HoodrXmJX6JSMXHhJP0njysRqEyp7fVyKZ0BAXTi9Vzd4Zn1 TtvgTl6syYwpeG4zDG0Wu71eU1pPLAzZ95CNWImowpLFzX+32VTaBAf5HHgzwvuuGo7z8R4a nxijMtJd565X+UXkzdm2qV5yDa3Dwj62DvxDaj6BOJy6yJJ0NJN+N7iY1UaRff4UY71esMqp 5j5G6Fq4FRSSrJgSWV3am4azhRikG2rXA++NRj6EB3bI12Us41kaUvuGlREJsGARvg7pEmHO REHKjnlYhrWGLfQHbDsmZ1xtuwGlw1AxedW0AH/veYyj5MgRlCvgcl7f1auk1F2IM2SpFC6e iBGqN0lItWRstTSa5mHu8OTea+F2Sle2OCDEuiZXDcUI0XMXPErJD6pJ8v4vuxRZAOxJwu3L zcTVJxrwcJCgLTIPzL+KcO3gHGQW27Uzio4NpZ/YJFtrr1Q6euGTGfSWopj9Crr5wkc4zmcs f2HKgTL+7oLGPoF4oM9Rb5QYNuJX4XV9BQlc08X36Iv8LXOqznvuHWa5/oVfjQOAdhflm6Lm oIXTD1KskFxFusQGXEjB/YXG6oWkGXx+M0LIHqu8wojKQdPIxFtQYYzX6j4NuQFDFEuqsqOG 93ILbtlLKHtXC7lFy4q1lBC154NAJ48b/gW3RFqUshKEXva4sOvN2ZZCR00GaYIAR8C+fbCh RWqVgy2a/fFe3f+QkST/acdk6KhXoao3yHC70GnLeY2MvjcpQkSrA8WKJwEg3PPwdvmRljrV pCbANsfD6dKhrezYGeyLAEDuDWcNdxxC2xJ9RPlH7ZvUKA4f00SmAjRD6oW86PiQMITz5Z72 cBtJM3sf6lo3KCOGE/iOM3PBlpZH6MCLxLNgiDeb5Zg6vmYg12UGeMiwGLkh1bQBuYy2wiwk jaaQGEc/DCBVRQ/kpV1avn63tYXGSQdUAYUAEwjaRNUUD9/lpj2+6CYaS+l1aLYlwZ2+cHLX Xuej0JOD5jwNixyT+YkDuPDm8d250rJ+DRZY5TNY376zeIEsmlhKsGF/hb8NJZL9joqPYMSv /aVAmPLj/0YtlZrTC9lzIAAm1Tp3Ylm/+zh0Ggw2i8wXIlAf3dZH5hXKoWJtmA727iA9aEua 8J+e4djK+VCCHWbNXD9IT8KxhkATnXqXStT+4ppYtP1JhC/IdbLt3+a3/wyHpD3B8CN8/6m0 MVfbRj7Nn6S/pSVv1XXxgcw0Egm9uOJnY6qwDaAucxelc2kn/QVun5lIbgmP4KCk2FqBCYAy jmzwRtu9PEVTCEz7gUFuYZJnlXclE17B1Zjam/XryVLAWhbOdY+lWmdle7bb9GUaCAXZEdtA xz7d3Nv+iZcUPDqU3tlAo+BqJF6GC8R8yuRCqKBO5T6tS/fW22vZHC2r/7sB7HDR2ha0oZgo VZdUsfKuR74wNS87Ef42yVUaz4okUsjl1Exypo/2Sdg7Sb3A== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="42955875" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3XokpEHaMnhaA3jpVQSpPGCz28oHwcnso4E3it17TPbnWfEDHblv6E8X4E05soRfgHwv31L2BFmgsUFzSytfOK43Yun9IPHImhhqtDxCauTodzGEi1SA5nCJ8UV9d7tdQSWJZ6aCj/YQe9bUmS47l7mH1rtp0/wcFDFLCo/59P1tuNGxLYU5Oy3bceztzWIaIS2IZzgWRM2zvYib3A6f6Lmi1219Oo163HQor46Jv9TccMW/qU+XGTblLTs8QCrlPcy47dfBEqXf0OyB7MObtndIvAhIzzY1ucyOe+kPL9Jx8pZBNA5479R+JVuR+VTGhjm+xGVh1NECS4WhnwsGg== 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=AoWJS/SFtHWRRkap7XLMIw8mpVF2QgzC+GpX7sO6F4c=; b=W7edqZkYpnseA/m33je5UCCLA8cwe5dCjViWAXgE14MGUdY32u/JuXBqI4QvejzLdbA6ECAPZJmiq03TKN7P58bBULr5t4VuAhcMFxrojAj8SprSq3WXZOaaarYC/P9EYyydxd4JPUnneQf3o7ECRrsVIs7J4lle8llAppBnYrWTB9TMzjJi2RFqwLuuMCmMK1nJ2G353Es8ynAvqgBT7QuV6EY+ayFb2xWSAogoCGgszZSJN2WnbtLpnRI5NGKZq0WkAou8dp2YRXCdJpXUD6QYE6kX91Ug+5oWasiQEaoMbrxm14xwODE630cyi1G4sWhGc30+ofwdhXNGgHp9kA== 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=AoWJS/SFtHWRRkap7XLMIw8mpVF2QgzC+GpX7sO6F4c=; b=sS7038EEzn81OYlq39E8SeFvBUnN5DNNw2ZRy4VvK9kUoB7OhJg4U7ZGcfI+93WAecHIrKI3pZCYB13Guw5tDdv5FF2WnXRNbUax6dvgoxahueGI9855/DlKY4cl0r8fNPbZDs/5fOukJjGiYkuiy5l8DPGbNDlwDabBnty1l3w= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Jan Beulich Subject: [PATCH v2 02/21] libs/guest: rename xc_get_cpu_policy_size to xc_cpu_policy_get_size Date: Tue, 13 Apr 2021 16:01:20 +0200 Message-ID: <20210413140140.73690-3-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0146.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:1::9) 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: 43a425bd-6181-4761-2d64-08d8fe84b9ab X-MS-TrafficTypeDiagnostic: DM4PR03MB6096: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:626; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s2asjK6QgMbZDc/csizUOK9m+dMKrGmxI/EyH2CXZWt35m93mly94Lgt1SUd5ueffb+p8ckGbcgCYEedtkYpjQKN1KmuAgEGtBbEuekmlsIa411aRJ19kb7g511Nv8l+CyNZrHi375ZZoykgc9fN1hbqSuHXWYY2jfK10Csf58vqdDClo8ki9oRhrn5p8eE79Knlxeuf0htt87LUi1gIurpPOrL3ujZ3SpBmd5b9djFpImb5O36ZqdkZLxIO4I5Wly9oo/8Yuf/c+7OfslAgdol5PUCdpyZ9RAtzxV+f16AZy3brNTpPy1T+HHpJtIy4qvfa1n7AOoNVcIjH5U1ZcGW8zfdPxQHKZEXjXJV44YE2aUadf9X0ldZwOrRKkbegvBMvWdA95QFhMKUayu1fO8Qzy2Zs298/admYVq5IdLUYgjT9itjrwtgmUQPzd36dCi+QcqxMywUPssj8NFum897/9dEwH8InzF4G9mfrtKZOqywyyiDTjHT4UCsvQFqQ1VK+DxrgLkRmbqeCXIRDrRnsRzZAA0YMrjkrx3xyRa+q+tslf9m3JkVNobipMI2bLT60+oNeo69cskPQdKnp4p0KGBiZbfJsSuUL4WmQK8Q= 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)(376002)(136003)(39850400004)(396003)(346002)(26005)(6916009)(86362001)(36756003)(83380400001)(186003)(8676002)(6666004)(16526019)(66476007)(66556008)(54906003)(2616005)(6496006)(5660300002)(956004)(38100700002)(478600001)(1076003)(4326008)(2906002)(8936002)(6486002)(316002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?2Pqbng9zCdyDGsAKWBBoGNaNuc7E3S?= =?utf-8?q?KF5qa5wGtN+BNrbW9NX3aFcVor1syfznhflpGtPMMBeRbjegIsiKUDLGmaowMYeOX?= =?utf-8?q?sT2OQyagRU3u1CKRojeH0entZJeih8sgabaeNDdpP/xazH0ArmrQ4qMKMiMgVlpV2?= =?utf-8?q?jXlv7PrJaNXMhxBV4ch/0fRRY1kuLrThH8uyRgsJC1zblGhTEPg3iwtmDiOampO1H?= =?utf-8?q?6Hwx39kxqjW/rN8bfmCK6b/MEaYyjTzkvJCkiiU32ZkrrGVcoiZxBJioEPZRIQzxf?= =?utf-8?q?BFucSzyk/bp2GO4MxB0XO/qk1i+v2JOD2XG1OJprnAm3FnKFPFtWwTQohYxekibU9?= =?utf-8?q?1f51eqXHNYkc7LkVj6nkV0z15yCscNOqlw0YD/PzKyllZ6YOFRug8666MyN4V/n+K?= =?utf-8?q?ZEeDi0ecCoH8wDand2IgiTfD2KUg4ELyH2L4fFIzoUeB5eEoAAiaWibQPBTTSc9z0?= =?utf-8?q?bORkCBmRlW6ulGwcXTwIV6C4O7yP13mYa4LrtKBYn9muaD62XHz/vwYxPIfh4XdJl?= =?utf-8?q?F9VMo5Vd+ivmgqT+s6uwzdW7rAP7lhB+sF2q3Y8xNdwIde6j6FkR+nUBnS65qJDM2?= =?utf-8?q?BgPtVi9ufbwTQQ03GJB9wIT3YcpyZs9suxYa+7sK+ASyEJy4MQKMW+pxP8Hn9fW3t?= =?utf-8?q?UBEuIsq4HZCfGsRwIq89GdrxC0GhcMsavH6WytkBfrQ9Q2IcFJQBdDzOBa/4EeC78?= =?utf-8?q?eDZXXau5eMV7pjjj9W+PgrlDyG16SHhgkEYvnSYrzLtBnUT9WwcF8usDjBZF/JHW2?= =?utf-8?q?pSZDOEmpWHPAcAL/BXUR6IU5j3OFypqMkurNdnnaaiFd5ffjW+T5oWyIXbjpSQbLr?= =?utf-8?q?CXk1Mg0LPXGQcUngFUzZhrFuqJQrkFE9MKS7DydyMaL3yUCpwrmMM0hJnlbiVaC0g?= =?utf-8?q?yskMu0fgVQGoHquEneooinVSGzarv35E5H2PnI7csPrRUgI5M1til4nHNWOChKe6x?= =?utf-8?q?X8Ea4mr3Mi4Y+O336yvGRQy4UfeVeRE6FoCfDysaLrGlrkOST2lEZ+ZGKPQVyqKmC?= =?utf-8?q?txm+8fasnsEywIAfn/laoA09qvQhDH85lPWhKvycXwPCiOOHBNInH2nHyplXb2jBN?= =?utf-8?q?LoMP0PLvxzgnyQwIaXmLFvrAsH7svOPPVgYornW0cFxECRQ7CBGN24Si3i97Ny/Og?= =?utf-8?q?nDmA9H3EuuWXBOt5B166bea3LeT77UAP8H0G+M9NhvpmzjgezVo96ruqLuX2D5FGW?= =?utf-8?q?KT3ONug0etlMOMhNpp0fl2p/wWB6Uwlsy9sAjRALQha/tAjRnEuhTaH0p+54XOg13?= =?utf-8?q?eKOSKbXgS0Xt+S?= X-MS-Exchange-CrossTenant-Network-Message-Id: 43a425bd-6181-4761-2d64-08d8fe84b9ab X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:07.9127 (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: g2Fzh24Z/ay5DGmpo/3r0qkbvzyuHJJGNEwtO65VlejzaVUcXhDt6EfAGjOpMgprWOKf0WCn147TOExvFj0hNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR03MB6096 X-OriginatorOrg: citrix.com Preparatory change to introduce a new set of xc_cpu_policy_* functions that will replace the current CPUID/MSR helpers. No functional change intended. Signed-off-by: Roger Pau Monné Acked-by: Andrew Cooper --- tools/include/xenctrl.h | 2 +- tools/libs/guest/xg_cpuid_x86.c | 6 +++--- tools/libs/guest/xg_sr_common_x86.c | 2 +- tools/misc/xen-cpuid.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 318920166c5..e91ff92b9b1 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2594,7 +2594,7 @@ 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_get_cpu_policy_size(xc_interface *xch, uint32_t *nr_leaves, +int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, uint32_t *nr_msrs); int xc_get_system_cpu_policy(xc_interface *xch, uint32_t index, uint32_t *nr_leaves, xen_cpuid_leaf_t *leaves, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 5ea69ad3d51..cc5cae95725 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -109,7 +109,7 @@ const uint32_t *xc_get_static_cpu_featuremask( return masks[mask]; } -int xc_get_cpu_policy_size(xc_interface *xch, uint32_t *nr_leaves, +int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, uint32_t *nr_msrs) { struct xen_sysctl sysctl = {}; @@ -302,7 +302,7 @@ static int xc_cpuid_xend_policy( goto fail; } - rc = xc_get_cpu_policy_size(xch, &nr_leaves, &nr_msrs); + rc = xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs); if ( rc ) { PERROR("Failed to obtain policy info size"); @@ -448,7 +448,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, goto out; } - rc = xc_get_cpu_policy_size(xch, &nr_leaves, &nr_msrs); + rc = xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs); if ( rc ) { PERROR("Failed to obtain policy info size"); diff --git a/tools/libs/guest/xg_sr_common_x86.c b/tools/libs/guest/xg_sr_common_x86.c index 3168c5485fd..4982519e055 100644 --- a/tools/libs/guest/xg_sr_common_x86.c +++ b/tools/libs/guest/xg_sr_common_x86.c @@ -50,7 +50,7 @@ int write_x86_cpu_policy_records(struct xc_sr_context *ctx) uint32_t nr_leaves = 0, nr_msrs = 0; int rc; - if ( xc_get_cpu_policy_size(xch, &nr_leaves, &nr_msrs) < 0 ) + if ( xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs) < 0 ) { PERROR("Unable to get CPU Policy size"); return -1; diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c index 2d04162d8d8..52596c08c90 100644 --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -462,7 +462,7 @@ int main(int argc, char **argv) if ( !xch ) err(1, "xc_interface_open"); - if ( xc_get_cpu_policy_size(xch, &max_leaves, &max_msrs) ) + if ( xc_cpu_policy_get_size(xch, &max_leaves, &max_msrs) ) err(1, "xc_get_cpu_policy_size(...)"); if ( domid == -1 ) printf("Xen reports there are maximum %u leaves and %u MSRs\n", From patchwork Tue Apr 13 14:01:21 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: 12200619 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.7 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,URIBL_BLOCKED, 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 1E2C5C43460 for ; Tue, 13 Apr 2021 14:02:30 +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 C407B61353 for ; Tue, 13 Apr 2021 14:02:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C407B61353 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.109769.209529 (Exim 4.92) (envelope-from ) id 1lWJcR-0004yg-2l; Tue, 13 Apr 2021 14:02:19 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109769.209529; Tue, 13 Apr 2021 14:02:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcQ-0004yZ-Vt; Tue, 13 Apr 2021 14:02:18 +0000 Received: by outflank-mailman (input) for mailman id 109769; Tue, 13 Apr 2021 14:02:17 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcP-0004rK-9I for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:17 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b347eacb-f47b-491a-b78f-e06b12b7d42f; Tue, 13 Apr 2021 14:02:16 +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: b347eacb-f47b-491a-b78f-e06b12b7d42f DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322536; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=mB4obio716LwGQbmmtPzikOtLnuYNlelD6BrKRg8sk0=; b=TPi/xwKM/R3lOCiAZgO4AXJI6IeT3BVy8uZgr0NiZpcU2wOb7Q4Q2mDU qr8tdslZkbBtnBZdZXuDatqenZS1yv8YAv8hK+qa9xjZGJNvnUa7mNla1 C7xsJBR7TD7qqNs/Ng4Krb4I2wSw1EihWvlhoil139UIf4MCQEAPAgbCx A=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: NDbDpY8DBSNyLo8KErrFWsE7BS2gc3mmZsToRgTsST9nWEvtoJrbrgHJnu/IQLulH4eAgHb84k dx27Q6arg5IOdxoI4iFFqFLKUobTipHztRA/HUt3z3hg4Hqq4yaWFhrCwqHZ59fsR66vSj5LH0 mk/F1aG42TLEcPiGxnZ5NPs3NNMV/HPjkPVGEgPKXtNQTOcp6WYHSGJ/BaGHPm7d94kVk6EBH4 jE8shNYXuKTgmF1X4o8rJBFuDR0rsRB3IxjQ+wDcut8MA5Olb9VSnK6vNOvyzCKHQb2C8in/Dn 0tM= X-SBRS: 5.2 X-MesageID: 42955896 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:iDZwgKrpOz0K3Z/in5UjoKsaV5tgL9V00zAX/kB9WHVpW+afkN 2jm+le8BfyhioYVn1Io6H4BICrR3TA+ZlppbQAJLvKZniDhEKEJJxvhLGSoAHINi3l7+hG1b phda87L9vsDVd7h87m4A++V+snqeP3i5yAqvzZyx5WIz1CT4FFw0NHBh2AEktwLTM2YKYRMJ aH/MJIq36BVB0sH6aGL0IIVeTCuNHH/aiOCXVtaCIP0hWEjj+j9dfBcySw4xYEXztDhZck/G TV+jaJgJmLjvfT8H7h/l6Wx4hKmdfn19tIDNGBh4woChiEsGqVTbUkf4fHgRcYj6WE7k0wnN zFvhE6Vv4Dk0/5TyWQqRvp1xKI6kdI11bSjWKzuEDOherFaBICYvAtub5k X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="42955896" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ASAOl0eFExnNjB0xuoLpv+GwXwvyI+xqCLF/qEhzFfzW0drWZpXMn/vjX8v4pqfuDNyP0IzKSjsS+05elakml8SiN1kCaopCQFkpGaAny8p0aX4QSd2G0RN4I+gj14J9lr07vYWYOJr3U0+4lP8RPyQbZKbKEg4CJvmNmsB/sZmrXV0r5YY1mjlGlCWr7G0zbIzXOXD/5psd9QpExolv0bAuHhTeMiuLPGCCQNPGtrbY7YhbXtEfOnM7XKujEH5BAcCVlm8+Ar5UrOdgbyMNa16qkvlHw7h+RwqRe+1qb3IlOZStzq6QWviPRQd4mlf7Y7mMwOcOaDCdUsu3RnjCJw== 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=XNG8CdU1lDvF/vM3JRvweREahb/itHxFfxS+2tlcVlw=; b=mMrkboakucD4rTbRTYx/xEp4kDys9RM8yZbVmAsm9GTLgAZL4A4OJHzt1lfRUEsZBWETzbpnP36WYhQCr4MtQkqESjamGudTlq8nkFcTfid4G+47JHhW3ZUv6LifiCG6ipM8ttP5322TpUu0QyX/qlmaybmdpklU+RsuKAai9+6v8jmxCk2EEdlU1nXQHcOhN9YOb5QlFfXWWPP7dkAavT40NRU1u6Y3SatSEkAranwvwH3dYVNZGdp6G7ASXBkCB1TS76V99X56iiFMLd7HXCGcN+12eSBrJs30VQk4nYpcB/qrOg7eYdB2m/3R3DzYt6diA2JEsPHZNztaJnVFeA== 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=XNG8CdU1lDvF/vM3JRvweREahb/itHxFfxS+2tlcVlw=; b=kSj7/KquCoH3eIcW8cFOntyBLOP9kU2axF95kXMTR1vgLqy+ZrCh/v1iJVx9QmeN81Y6NDD/cUe/bR+cZM9gsc2oJpN7NTvLA2sZbX0xjJksOCmCPxf7RQF3BN7745wTgVda78+uhr/yU4NhL/RAjBbrj0XdtpX470A/ekP95Cw= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 03/21] libs/guest: introduce xc_cpu_policy_t Date: Tue, 13 Apr 2021 16:01:21 +0200 Message-ID: <20210413140140.73690-4-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0016.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1::28) 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: 6193172f-8a0f-4590-7d0c-08d8fe84bd26 X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4303; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: THCNHC3Qb1pEZ8hxvomoPX8bssJLx3MHz/qew1HspNkEtD0Wo8UN16nANoVb38WPXCU8wb9jTFldmrl06RCzez8NEf0T4GlxKWIca4Frp7JoEIYGej7/RBmO8B5rn78+mLDG8zkpmn6LJQXBIufId/McNn4ZJPq1snQC1dACK86qnjX9A9SXGE7p5yNaF/fOQxfu2G9I84vNeovEvnkZU2t7NDcUFvW6KP7roEpsk7LfwEhxCkdlygTIWqmYgZhZndf/EcxHcl+3ju8rvPtRVkSr12q6x7ozRBE4Ktk1AILHuE4S45GjuzkSOZXR7lJ4EBxbMq0FelVyTA3vExf7SFZmErI43IIKJrN1EcQTKzddYj8MjF4NFhcneL1FvEuTmWETfGERMjBwBo+vZrHSd5xFO7F+1JlffrtS0AVKvAiMnyejGoo3eKXZFujFwKw2IH77zF95BJYF2Urg49iKyIOtOOWmtqMyXt8PmVhD68arILFUfvLu4f6ExbAEN+0pepvBTvVxb0ZhAbznSb+DTh7DS3XEx+ZbOXOVUH3ZN2tQ2SPPjwn6gdmNAocTUbyef/60Rr/5Zf1blfRssh0O99ym1tUDTgHGar4wE/2EV/8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(1076003)(6666004)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?JyMRgzaUVrCksemoyyll/HscpG3Ebg?= =?utf-8?q?y9OzE8Ak41UnMW1CJZjuMt5l6uGalu91Pj7lnPzSldZXtcfDHc0rzWhy9whEff77L?= =?utf-8?q?UMaoS4P2g/Rn7ZspRWbfsodmvbZPev/maqbYQ0JnzZlZuLfU1yKi+YEVGNzwE77wH?= =?utf-8?q?43luxDdudPdwy2nO0DgGAjxHJGLn+TerkQBVMuVsjkY/hcjE8LRQz+2Vx/pzROgeL?= =?utf-8?q?hmrCqND/bqmzQO2CjRAwKSkLnS0mo8jwPFpUW8am35GsUY1/ZlfZJEXfRq4EL8JMc?= =?utf-8?q?21JlL9rNMy6RYcoHsVTG3KdU1+2jp259zmmUoY//isc6umVw0Nr1v6RTHUP6wYkD0?= =?utf-8?q?a5O028k5GdC+B/mg2u6rvhTwI1P6UTJhTaNuQObmnoB9gwq4vlJQ0vdQrJv3TIcW6?= =?utf-8?q?Emy7T1+eY5C5L7thYZHr6IIN3zfb/cDKmxFTBpxT180nGASUPPCZ4i1g0ImoB1owZ?= =?utf-8?q?msDsGDO1HZuQdknDEzUT5G1PYQmURz+lSIeYIOJyQBL7B2vGtTwO4GDJMgbnwhaVG?= =?utf-8?q?KriyRckpoZYwQyfMBpAbvivwfrAbHuu82zlcuRPKYXKLcgoT77ra2du1PfFh69AR2?= =?utf-8?q?mmqSpKhx+7FOAWpatfXlEbIGqgvgcMAUzRQGr+97NtYNBOCPF5YMZbNM+s9AylGbU?= =?utf-8?q?zuKoTJW+D8ubV2o35qfQcLAS9jzWGyoLoGMDCEpozNqw174BACA2Zi022Q5cBvB9+?= =?utf-8?q?MO8s79ePN/qr1v4852pS3XskGpWUs0MDodkWuQN1vEO+5nj+05/NAtwPFWqpKk/i6?= =?utf-8?q?jEPeR8/N/BPtzsEwr4OOafyrc6R1UOVMb3CCcp0gr+yCdnrXQVo7zmH+vactx6yg/?= =?utf-8?q?4anB6N7FLz//B5EkCR8Hebxjr6RKmH/3CHALEsfsApyKPN2xwgR21XQ4Howo6hdo1?= =?utf-8?q?SYIQBV8os1Ih420OMY6ewpoHIObdFtrR3MDaJeXBoKwlZAAnPsNRSUltIWAuLW3Bz?= =?utf-8?q?0nDIH3dNx9l1WFmbtO0741pm23hHPapQRYe/0qessxRBJ5N7rI9uDkaigjxyzNrLi?= =?utf-8?q?PmlZQ75z0OHpKQj9MdNHNdqaLjGAz7T8AAUIx1b1ROor7P3I00ugqaZ393UV8sUdT?= =?utf-8?q?1vHiowyvkIkiVJvzg2DJLJqMfZNqyw6ABSnTVgNm8sKtpwgY6bmOIUYC8X1xXRkih?= =?utf-8?q?pA+ndLn+lizv1SWG5+B1465JOShR54VUzXOMY30mytPlDI8MAwMfBQP6zsMdnPWSj?= =?utf-8?q?7zSmmHaPjJJuMtrCSgwxYOSlY6sqaVKYOjHhg2xb1dH3fMU2SQL6yejA3+X7f279v?= =?utf-8?q?SADSK3SPIsYBZI?= X-MS-Exchange-CrossTenant-Network-Message-Id: 6193172f-8a0f-4590-7d0c-08d8fe84bd26 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:13.7615 (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: oKs27sWmeiUOYRmUzxyqOuZ/c2MtVuOQzeqgAagUo/uFwawuHPUEwqRJgdoQVyB0c0SmnnzF270nnWO4nVsLUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Introduce an opaque type that is used to store the CPUID and MSRs policies of a domain. Such type uses the existing {cpuid,msr}_policy structures to store the data, but doesn't expose the type to the users of the xenguest library. There are also two arrays to allow for easier serialization without requiring an allocation each time. Introduce an allocation (init) and freeing function (destroy) to manage the type. Note the type is not yet used anywhere. Signed-off-by: Roger Pau Monné --- Changes since v1: - Introduce two arrays to store serialized versions. --- tools/include/xenctrl.h | 6 ++++++ tools/libs/guest/xg_cpuid_x86.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index e91ff92b9b1..1aba814f01c 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2590,6 +2590,12 @@ int xc_psr_get_domain_data(xc_interface *xch, uint32_t domid, 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); + 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_x86.c index cc5cae95725..8e3a1a8cbf2 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -39,6 +39,13 @@ enum { #define bitmaskof(idx) (1u << ((idx) & 31)) #define featureword_of(idx) ((idx) >> 5) +struct xc_cpu_policy { + struct cpuid_policy cpuid; + struct msr_policy msr; + xen_cpuid_leaf_t leaves[CPUID_MAX_SERIALISED_LEAVES]; + xen_msr_entry_t entries[MSR_MAX_SERIALISED_ENTRIES]; +}; + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps) { DECLARE_SYSCTL; @@ -660,3 +667,14 @@ out: return rc; } + +xc_cpu_policy_t xc_cpu_policy_init(void) +{ + return calloc(1, sizeof(struct xc_cpu_policy)); +} + +void xc_cpu_policy_destroy(xc_cpu_policy_t policy) +{ + if ( policy ) + free(policy); +} From patchwork Tue Apr 13 14:01:22 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: 12200623 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.7 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,URIBL_BLOCKED, 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 0BC0AC43461 for ; Tue, 13 Apr 2021 14:02:35 +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 A9F8D61242 for ; Tue, 13 Apr 2021 14:02:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A9F8D61242 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.109770.209541 (Exim 4.92) (envelope-from ) id 1lWJcX-00053U-CF; Tue, 13 Apr 2021 14:02:25 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109770.209541; Tue, 13 Apr 2021 14:02: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 1lWJcX-00053L-8Q; Tue, 13 Apr 2021 14:02:25 +0000 Received: by outflank-mailman (input) for mailman id 109770; Tue, 13 Apr 2021 14:02:24 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcW-00052d-0C for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:24 +0000 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 5b7db29d-1084-42cb-b665-9ae2c43f7373; Tue, 13 Apr 2021 14:02:23 +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: 5b7db29d-1084-42cb-b665-9ae2c43f7373 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322543; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=ovr7/YsUP39oXdKzt7Kk8fSJbiorDCwX07ke7Osg8Gc=; b=fi2J8ld5ELHNbVU27V6f+ln7C3z/kPXjbZiW7nR11irfX1qfgYkSiHfJ wvtRsPMvRHn+xoXtkF9myjO/CYnLzR1G0fBjjF2a3WtFovIQmu6LdIQnK EdZWsUsQf4xt9sgH2tCv0ZUa4chCwFiCD0WgFOFx0Rtq1AiXhvrUEZqXd g=; Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: Zp14r/kNJzYeinSih6yGez5dnzsPOTnNkIKP5E5mMjTg1o5KeUcGHsguFHr3TUpODXu4VG3zg1 YOkX6ubrhaoW6cOwJIXybBgx34sRXytxxldUhUbrrKzxiIYacJKqgSEUDRyywOWjoe5/yu0mgu HG/+3LThxnEJKcZJHoLyscH55xho23jbw0pKtFplc57NQmBE3NVKYhq24Qan6Eth3RkpIclGhy ugqF9Oxme2JC9eT5TvEcKx/8q0cIbeO9EJEz8Cl08hSF6Zbw46NHg7XzLs+JNSy62UleUNxfxR V+o= X-SBRS: 5.2 X-MesageID: 41866893 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:F72rGaF+VB3OFmT1pLqFMpHXdLJzesId70hD6mlYVQFVfsuEl8 qngfQc0lvOhCwMXWw78OrsBICrR3TA+ZlppbQAJLvKZniChEKEDqFHqbHjzTrpBjHk+odmv5 tIXqBiBLTLYmRSot395GCDfeoI5Pmi3OSWifzFz3FrJDsaCZ1IywtiEA6UHglXaWB9ZaYRL5 aX6spZqzfIQx1+AviTPXUZQ/PF4+TCiZOOW3U7LiQ64wqDhy7A0s+YLzGk2H4lMg9n8PMZ3k Xu1yf44aiitP/T8G6n60bjq654tfGk5t9KBMmngtUYJDP2mm+TFflccozHhh8ZiqWC70srjc ntrn4bTrhOwkKURE6Zi1/M3BTtyzkn4XOK8y7mvVLT5fbXaRh/Lugpv/M8TjLpr3AOkfs57Y dwm0WejJZTBQOoplWE2/H4EytEu2DxnWAvioco/htieLpbUpB9h6oF8nhYFZ8RdRiKk7wPIa 1VAMbQ6O0+SyL9U1np+m1mwNmbVn8uBBuxQk8bpsyP0zRN9UoJtncl+A== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41866893" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nQ4Y8ZA5AMUfBpf6/amurY82kCJ5uJ78eh6wrc8fxBKby1bc3SLKMiAk4a4mctw7yisEKfPoE6Vp7w3wex0cIlhhVIFRZbcuHObaPhEcisaUYgFc1PYleAvnqLNhToP+uSEo/rFWutEPgE5dKvjGIsigVADOgSPtHUkOjXVQWaFK29H87+qW/mEAkzjPxB05M22oAppWAq/vpJtBjBMirIgTuphxMgsaKoTSdNix3wODF0dUyhmVJdKMQI2248MkkEK9kRXxVOxb6EEIBlzmbJroRaBUVTesO6AwudZQQ6K15KeADU52kkYntgSNuQeGp5GLzAWesM/jcNFSKw+zXA== 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=6P/SnasJN8U82dOcBiB6I/f0U0K1k+7/Q7LtDAffDeY=; b=Pj733Uw5RGvl2LpBFwhJaKuG13CVHVXxGAgo1O3ZfG+9TdoRbBVL3xXzXFLnpLNThmk+jlIc4gb/vZBc+nKm8n2xWGMUP6WOGmyr7u0E+wgSDeZ6NB5V1Fl1wUqLu53juWYLTAvM9SYO1HslduTbFCvbFpTmAmcGmyj2U43UFGVsGpNEqOTcofTFQl+3xXDkID+Ja1TrPF1aMJglTOsmbPK2+5VEXKaTFZlSW33gH+TuI2xWznvclexaLII065X9jX8HL371qptqGffOpbu69x2DlqaDXA9BWTu4NY4kvGYXnU+NQiuCWD5g7F1kGhvoAbyfuhmuV2X0sFUZ/AUY9A== 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=6P/SnasJN8U82dOcBiB6I/f0U0K1k+7/Q7LtDAffDeY=; b=lX+TpiWF2XNzmwyxsDJpNCw6mqn5NIBWWbxvh15bItXOb39mRp5T8XZd4muaqxuxVha72ULeTQjqqp5tLtHlZ1w3rRsOtDa+17ArRCxIozyFcWgLq7vVXfT3gyw3sGCby8gzuhqrfoAjh6iJfwLWd5V2EwAClfSm0/7jzV5RB/A= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 04/21] libs/guest: introduce helper to fetch a system cpu policy Date: Tue, 13 Apr 2021 16:01:22 +0200 Message-ID: <20210413140140.73690-5-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0010.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1::22) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 921b7890-1c3a-4d82-4348-08d8fe84c01c X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:127; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c7IIScWxMDQ7+9qfzTz1pxH4VJMhjglcOkYkjJmuYmg+WpE44x8grGJ+OQ2Qs/LHaeZxT6sLIZ94WB10sqOGrFB0x8aV+/dD2dEgZR3j//GcjVupAFE+RvyPZ492mieBBTu6E3Ip70f/HbdbbabJk/0Vzl7tyZdez/B3VCr6NAEIyXLdfzO+9llkgHa8ahwmKc8v8foMXbzbNLMd60DqHmiHqeN7l4eSx2yWCsJacFssB/QHXO+WDAj5JlVENKzFIFOH8B4KYZRVdKeVnZRqKFQ8JXumcW47l/aizvz+DLJboFhzanrc5AgcVlfgpuWSK9u9SnJIACfFIz9DDPF54Hhnc1U5/BMdl0kfRqc0YnaCkj+RlnvgioUx34laLC/XpRF+1uqPL69UBoB9L9qljQe90k8PbQcWwDPm7iEpISKBwCAAX3VRjlyQd22O2c9its4geITHgzxzI2nPPKd6I1fZxFxTxT22E2AOiqywN6wTZvfI50bs9gah8UTPh42xfsmodCnvkEfFNtusMf2uLBqSbnnop8xAhvd6khceX4uRor6BGPkb4fQNqOeQM2RQpMjB7qUNTWLHppgSQmq7/sOSkmqNyIleYvICjkPd6Ew= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(83380400001)(1076003)(6666004)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?ESwtjCIrbLkJGZykunFJd6y96lsP5b?= =?utf-8?q?wXmgB/O2G2IlpCIM7gnUuALOCoe3mfphZ67PPpO3sQQNCW5MfdJuFPdzIB2f0yI3s?= =?utf-8?q?Wk8KYmmhzwuFHRyaFl5Iaktt+V8AnuLZnWYvHt4MZGSLWgJy4fe9HF2WHJyGiaYHo?= =?utf-8?q?WgbvxLPHsT23/x7wSJYwLN2iX0SV06NBqbexJ5JJSmA0gaHV5DOcGVancl8+ztdGz?= =?utf-8?q?JSi1caHNTmNN1JurWnJmAOmy/YnRkHzcyxWROTD7YuVOiAodI2qlq7b0Ju33xrW/v?= =?utf-8?q?/d+ycTzUSWKQlEjyKDi9jx1/qb54YZP6xdRVrkcNZbyw6Y3BC01T3a9IoijRCxxQd?= =?utf-8?q?Q9xK+Qbq/n9GZF7pH/2mB1jfFSdXsCQqEwBUUnnnE19hKcUAwJPobLoMGUr65gDOg?= =?utf-8?q?MsAiRtQnB4MB3A04hDKbNkkByR3Dgj+YaZmUQSrcLHGaCpEolss4PTeVnLrDghGo5?= =?utf-8?q?xNAueoX6BdfgHrBXF9BX0+nAglqbnPsw+ZFu/1NEhnSpIavyVkCHZFa6X4TfnivtS?= =?utf-8?q?5/cTLnQXDeo3IE0hTqAXZoZp+kdAaAo2jElgU0Q4UFGYAfUYBr+MMjkkZdTm5lzbC?= =?utf-8?q?oP1t5gOshu/WoyuEMmBurUxom0nYQNV1f5KO8qlc1UlgZiNoGrHrhIKSSNF4Fj6M8?= =?utf-8?q?bKNlXbRmrt1EVSp0pQRWcuo838vphYq7+znAXcuxGiQatuvtW0wNSSfjTwuu3BUHw?= =?utf-8?q?wcUAKAVwsepnDGOcw+yuyoU/QQuOC0UaGBZzu3xJRp04p/hmVDpj/k9HTcfwE5T8K?= =?utf-8?q?d3AGVRvqsJazjKeJ3ApK2SFl99ge9CqKQiNb8Kwb9uD2NoEwRcOPxQdm3/Enhkb2i?= =?utf-8?q?SYxv4dictZ27fghciwizfvvSFv2u33dzt0OstuqFOGI0oQEOZPgPsL5XGp71VFp0G?= =?utf-8?q?Gm/G6KdF5ajqkFe/gEroqGatrtCP9kDBJ5c1jF7Zz9nnahuYLzQwyzJNpPgmXAHKG?= =?utf-8?q?YOp5XZy2MvP5sXeGdTAtXbQGwWvdy6k0x24bk+ZO6Rie0UUn4SYbCXV8RrYg3SSda?= =?utf-8?q?49UjlHSW+7C1xcRztva0OgJYvx+S8R/862aY3ZDbI4WF0DXOt6Mjf0DFqoqKutuzi?= =?utf-8?q?lJ7yfFtgWwhduqgdgVT0f4BYtXVK0RMkZAnSFRRUvQIddCGGstTmrVMQtc2BgGE4D?= =?utf-8?q?2A5wwsu6415H7SWYCoXT88dwLyIzVCubHjgXzhj+4WHGY+i2yJW72aJGVImfiJCaP?= =?utf-8?q?HYXnVU9BLPDkY+uGSSxa6aK1XuOkOyAMWg0t98XBtWa9A5Qo8YGm1jpajKo1NhuRT?= =?utf-8?q?f3Ash3SVOGFl9n?= X-MS-Exchange-CrossTenant-Network-Message-Id: 921b7890-1c3a-4d82-4348-08d8fe84c01c X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:18.7221 (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: YWytHuSaQZneGV5Bufk4+EMLRnRy4cHiOKQFthuuoWuvQQoHH56B4e8WU8yNenR/Zy2EaNgKXT7t/HZoE/07YQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Such helper is based on the existing functions to fetch a CPUID and MSR policies, but uses the xc_cpu_policy_t type to return the data to the caller. Note some helper functions are introduced, those are split from xc_cpu_policy_get_system because they will be used by other functions also. No user of the interface introduced on the patch. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- Changes since v1: - Always return -1 on error from xc_cpu_policy_get_system. - Only print detailed error messages if err_leaf or err_msr is != -1. - Rename idx function parameter to policy_idx. --- tools/include/xenctrl.h | 4 +++ tools/libs/guest/xg_cpuid_x86.c | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 1aba814f01c..187df5c5d2d 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2596,6 +2596,10 @@ typedef struct xc_cpu_policy *xc_cpu_policy_t; 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_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_x86.c index 8e3a1a8cbf2..78fbc7db9d3 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -678,3 +678,57 @@ void xc_cpu_policy_destroy(xc_cpu_policy_t policy) if ( policy ) free(policy); } + +static int deserialize_policy(xc_interface *xch, xc_cpu_policy_t policy, + unsigned int nr_leaves, unsigned int nr_entries) +{ + uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; + int rc; + + rc = x86_cpuid_copy_from_buffer(&policy->cpuid, policy->leaves, + nr_leaves, &err_leaf, &err_subleaf); + if ( rc ) + { + if ( err_leaf != -1 ) + ERROR("Failed to deserialise CPUID (err leaf %#x, subleaf %#x) (%d = %s)", + err_leaf, err_subleaf, -rc, strerror(-rc)); + return rc; + } + + rc = x86_msr_copy_from_buffer(&policy->msr, policy->entries, + nr_entries, &err_msr); + if ( rc ) + { + if ( err_msr != -1 ) + ERROR("Failed to deserialise MSR (err MSR %#x) (%d = %s)", + err_msr, -rc, strerror(-rc)); + return rc; + } + + return 0; +} + +int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, + xc_cpu_policy_t policy) +{ + unsigned int nr_leaves = ARRAY_SIZE(policy->leaves); + unsigned int nr_entries = ARRAY_SIZE(policy->entries); + int rc; + + rc = xc_get_system_cpu_policy(xch, policy_idx, &nr_leaves, policy->leaves, + &nr_entries, policy->entries); + if ( rc ) + { + PERROR("Failed to obtain %u policy", policy_idx); + return rc; + } + + rc = deserialize_policy(xch, policy, nr_leaves, nr_entries); + if ( rc ) + { + errno = -rc; + rc = -1; + } + + return rc; +} From patchwork Tue Apr 13 14:01:23 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: 12200625 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.7 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,URIBL_BLOCKED, 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 66408C433ED for ; Tue, 13 Apr 2021 14:02:38 +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 183E261206 for ; Tue, 13 Apr 2021 14:02:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 183E261206 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.109772.209553 (Exim 4.92) (envelope-from ) id 1lWJcb-00058B-SL; Tue, 13 Apr 2021 14:02:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109772.209553; Tue, 13 Apr 2021 14:02: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 1lWJcb-000583-Oq; Tue, 13 Apr 2021 14:02:29 +0000 Received: by outflank-mailman (input) for mailman id 109772; Tue, 13 Apr 2021 14:02:28 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJca-00055v-O3 for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:28 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 97c9e2fa-9949-4b1d-a14a-e3b47dc21392; Tue, 13 Apr 2021 14:02:27 +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: 97c9e2fa-9949-4b1d-a14a-e3b47dc21392 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322547; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=WGVjcZJbLqz1e0K2Qv90XwMs+SAdnWmxpckssWf3UQY=; b=KnJRdZif6IhAZ05E7o7r9vSRM7Qixa/ypY4+thfB7LirB1Jl5SXtXbGj HSpXIwioa1o2RhkhMAIsdU2DS427G32aM70LdboyBaVsOVvyUC6LC2kTo +WQql1KVUhYdo0YHuAM98zzoiBe1KFJi6LwtyKb94/vRudp8igQWHqi2G 0=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: ny6wdbq1xxQnWPkZASog2YB8UKm3gHC6diJ52Ox5jdlkFtqBJ2O3/UIRIeELIKR3D6TqNGFlaW Uqp9Xb5S8xLrEIA6X1kfGoWDAFaltWtpW+5ojlm4auHn20dfQGqAc6F2ZGni5+FalMqZLA4MF5 ePsuaVW2V+N1I+skYuIrMmId1UwYaDjQ6qf8+kJTmokH0YO8nYBP5Zk6pd83QLY9U+mDQgLjUh WcP3K+SC/fi+mHAjdpyn2nxrzjC8OxWZwAK7iwddoF0suc2Y5s3dRJlQVQtI0ASUojQTfHM8FC n+w= X-SBRS: 5.2 X-MesageID: 41613815 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:25MGkK1424yXglONOf1kOwqjBTd3eYIsi2QD101hICF9Wvez0+ izgfUW0gL1gj4NWHcm3euNIrWEXGm0z/FIyKErF/OHUBP9sGWlaLtj44zr3iH6F0TFmtJ1/Z xLN5JzANiYNzVHpO7n/Qi1FMshytGb8KauwdzT1WtpUBsCUcBdxi1SYzzrdnFebg9AGJY/Cd 6g/cJBvTWtYjA6ac68C3kDUYH41qH2vbjhZgMLAANi1RmWgVqTmcPHOjW7/jNbaTNAxr8+7X PI+jaW2oyPu+y2oyWssVP7wI9RnLLau7l+LeyKzvMYMzD9zjuvDb4RIIGqmBAQjKWR5E0xkN /Kyi1QT/hbz3/KZGm6rV/M9mDboU8TwkTvw1OZnnfvyPaRLFlRa7sj9PBkWyDU5EY6sNZ33L gj5RPii7NtAQ7dhyO43tDUVnhR5zuJiEA/mu0ehWE3a/p4VJZtq+UkjSZoOaZFNif75Ic7Kf JpHcHR6d1HGGnqEUzxjy1BxsehUW80GQrDak8eutaN2zwTp3xhyVAErfZv0ksoxdYYcd1p9u 7EOqNnmPVnSdIXV7t0AKMkTdGsAmLAbBrQOAupUBvaPZBCH0iIh4/84b0z6u3vUocP1oEOlJ PIV04dnXIuemr1YPf+nKFjw1ToeiGQTD7twsZR69xSobvnXofmNiWFVRQHj9agmfMCGcfWMs zDea5+MrvGFy/DCIxJ1wrxV915Mn8FSvAYvd49RhagucTOBor2tvHKUfraKbb3eAxUGF/XMz 8mZnzeNc9A5kekVjvTmx7KQU7gfUT54NZRHcHhjq0u4blIErcJnhkeiFy/6M3OAyZFqLYKcE x3J66itqu6oGKx7FvZ9mkBAGsYMm9lpJHbF19arw4DNE35NZwZvc+ERGxU1HybYjhyUt3RCw wag1hs46q4I9ixyEkZepyaG1Pfq0FWiGOBTp8alKHGz9ziYIkEApEvX7E0Mx7KGRxzkQNDs3 xCdwcAe0/aGlrV+OaYpa1RINuaW8h3gQ+tL8IRg2nYr1+gqcYmQWZeYySjSveNgQElRyNdg3 p496N3usvGpR+fbU8ExMgoOlxFb2qaRJZLFh6Maolvlrf3Qw1oVmuRiTuGixY8R3ry+ywp9x /cBBzRXcuOLktWu3he3Kqvyl9ye2mHV29ba3xxs+RGZC/7k0c29dXOSru40mOXZFdH//oUNy vdZyAOZil0wcqs6RKTkDGeNHkvy5k0JNbBBLA7f7y74ALqFKS40YU9W9NE9pdsM97j9tIRWe WEYgmPMXfWDfgq1wH9nAdSBABE7F0f1dXm1x3u4DLmgDoRAf/OLE9nQL9eCdeG9GTgT+uJ1p I8rd9dh5rFDkzBLvq9jYfQZHp/DzmWh0icZeQhs4pVsqI/r6EbJeiSbRL4kFV8mCwjJ8L1nn 4ESKt14Lr9KpZiFvZiDh5xzx4MrpCzN0MlvQz9P/8mcXwsh3HdOcmV47Cgk8tZPmSx4C/5OV yS6ERmjo/4dhrG8b4REKQrJ2tKLGA69XR55euHHregQjmCRqVm/FCgNGW6f6IYYK+ZGa8Iph I/x92TheeYe27Z3w/X1AELb55mwiKCQcmoBhiLFvMN29umOU6Uiq/v2fWNtl7MOHKGQnVdo5 ZEe0wWZtlCjTdnrLRf6FnMdoXH5mQ/k1Vf5jl7kEXKwYbO2haDIX17 X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41613815" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S0UH35FCVfoJidA/NbGvIfQ3vUqiiuwkHizfhN7kk1PCBbY0ak1uc1hLgMNyCJQu1DcjqoSkOiVG929DUEtMzbyRKqR/npSRt5G2heuKv1vja9DpwDrRoKLP1cCM9uOK57O2fPhd1rGH7APqXW6uXREv/Chn1mF6EP2wGgJmZ4o90YfV4A9BRUjfxeVtxejr8aP4iS239Pa4Oe3HtZe09CvsIl3QdmPwXERqGItmSQboqPbFa85C4H+y76FGHRs6rG9UJujTJcqRbjrbTf+TeR1VpquUN5lZvRSIVPyHkxhT28XPkve2SBKONb6UFbX2APJHtrMQvVzzLyAPlTKR4w== 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=7iRy9GuGFLyRtl5I3ssxtVqxdTgRXM3rmBhXql49R5s=; b=MoMjLFeu0eSqLBEE5jsaJGwqw91VgXzhDyNKaJCkxDk/dzuuoIxd2v2QsB+stqx+XE36pk9vYnBAIHm2PB7f2zfLWwemRZnTuv/J67xWMAyHOmLMGwwM3vJc+Ud0b71hjleeZzC2IiN3qTiwbuepmHARZ2RLp/0hrEKiseTLJFrh/JV2NnFrcG9+bYJDyXQ5MORivKUbs7vyD4NwsgU8P36kNp2NCQg4K1U5KL3Hr2ndm3M+0SjSpYfko/wt9qSWQpgt4SZKf0ftH5Iuj5/oiiGzlK2IjO8V/UWBOxDLSBDE/rBlxn5MzrWlVzcjGL8EChGyETiIOro/cy6CTcCMFw== 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=7iRy9GuGFLyRtl5I3ssxtVqxdTgRXM3rmBhXql49R5s=; b=TdtqAeIsDqDormoIW/dyYdtKqYId6j57wKMHCf4NxDyE2qIAJD3SWWP6CMUmEt/AuBNL/wCwpPhiSIHHfOi9nhJkw77tpNWAgyom23YV+3fG/2RxFI1BrI9DjYxLCPNYfqxRMpBeMeO2IFSAqsir3A8XsKIsFpsHS/PUbJOzfac= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Jan Beulich Subject: [PATCH v2 05/21] libs/guest: introduce helper to fetch a domain cpu policy Date: Tue, 13 Apr 2021 16:01:23 +0200 Message-ID: <20210413140140.73690-6-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0022.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:1::34) 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: 2b192e6b-f1bf-4f4a-8614-08d8fe84c39b X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:612; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SwGd5gfYa7rwXBI15R6ZI7yv2qgTgGP5EgzHyQKonLf0/2PSmXFKh13n+JrjHhrjR+LwOE8mSlVR3DfdEGe7yj1nw9GXGD0M+odwFa0sKvJu0XTf4fc3u6dl7lKYhj+kiY/MFMBewLv9bquhk3gOwZBOvkELzSV2nJILiLh7IIYhDyMGKpF44P1WvCX7AO/VwnORwpfEoX9ET93GWiy5iTshH3tvoutdCwckoEc4ZlgX3GFHoPK2to8XBtm+d52/JcxC0s0u/wghy8A1bAm+g4JsZIYfrX4u9ggyNAoxow9a0FzDo+BVFvOt+8MG1YJpcMJQQW3tghomPWmvrM3myonIQiCNytuzCS9nNOFuQiNyYXieqQMQIajD5xPojLwOpEsVmb8dxXG5Aj9Oq41nddF11Ue0+TTYcaKmE0wZ0DggyGOnldx02hDfT4qKP0OW7fXe0Hj1WmjFluldwREtEMWJwPh22fXkLEmRl25Gec1NXMexXLeTvp0uoMtki0uVn3+JXYiXAQqmSeSNRb1RFtgnAMGjZh/MG+CsJM8zBCFnY+DpbgO9F8gSPBe1hZv7JV0EHRCE4n6GkNSgZZXfFRB4b+KX4MOfKAEFEB8DL4U= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(1076003)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?OvCIHjCo2jVm2mC8lGWYY+xNf4O7ux?= =?utf-8?q?XYy3virQWNWCq8aPUCHIBRtzAV2UPF2fB8oAaLB7kChcBPyFDQ3XmrU07WszPXRtt?= =?utf-8?q?1FZmhzL8B63hQw6zaGFagGhqEODjJdV8stHGaaGDi9FWQGYQ5xAOGL56dZaEs7XAm?= =?utf-8?q?jrqHn8CaIvlF5nOwiTEygO4M94kAbJigw6mzpqVM9y9VhlvG7fFmIzTs3OCMqxi9l?= =?utf-8?q?Dnc8/Q6gwrquqGnjTiYAbAgypOzlghyojlRE/z1mLuoVBjCmnlB9aH/htP//o/Vdv?= =?utf-8?q?Obl/DbBIvwCzYRwzVQkSiV83yPvCk7hKqgdTzUYyytVfw4/a77qI02S94dJzqfG4T?= =?utf-8?q?QJdg/axz7vLMnuMxWSzzQ9drBEQ1whgn6Jl/lMstN5yMB4mcUzN90SznZIZONPP5O?= =?utf-8?q?u6p6c0tRsiuFcmT0yuq8zXyy95HzCxmckSlZxJSTovD94xLTt9CrjsdkMetYf4xmq?= =?utf-8?q?BY5KYvM6yXM/dvCAJCC26egTNSAZtXhJdWNHOvcWaIENnRJ8WRdMPGqHiFIS1keEw?= =?utf-8?q?izUTfrQuLbO4UlacEMrb25bieOGja/hHz9cCoDdnOHUvlCSkgNX3Ixjnx4znluhDP?= =?utf-8?q?Z0Urv+K8ctr1SCbL3BhgBgyGkxmG9DdfTcjuTYacRDYOB+cI5i9T4eBkkYtT+8KpP?= =?utf-8?q?UR0ojBgHoVAOIjfn4CD30IrNzU3WI9e3pvuzDzDw/SwhX4jQYni0tZwXJYCEfQmHa?= =?utf-8?q?ZHzkWCiwGPs+eupNwYyZJgUztxxkSFnxbSX2GS9ihV8Znjpis09qqV9kc8isN+19R?= =?utf-8?q?tg+EKIJUkuKzy1W9sVtATM31sg+aSZvWIkAcocmEIN0JBGsuJ82aokKbtnoyxEtRi?= =?utf-8?q?NUSbz7wRJ9LF5DIwKsHoayODI0tkF0Djxy89laetDIZLiJ3TpJWe73rsGx6nganjc?= =?utf-8?q?HGOZNGeXV92Gx1lE/JJzyXyJ5THTFTNzHVP8jIL7Br/esdqx9M5wRuX30YQqTibUP?= =?utf-8?q?7rjjy/MhmuV0HulQtImIKK5wmsLOJO71gGAJYswcRgLyscwsGAa4uFpQSsDYmPhzL?= =?utf-8?q?anSmUbLZCb5pLhVmGCxwcZtNmWesecgmXJCd29hjsHLLVE4gBed8RVaOT/kYfgA2n?= =?utf-8?q?/fWuILKEXtQJ8sFDcJGazNVjJvRxLHCUDFF2ndEOtTdzj2+ub3J5CBgzl2dYyPaMW?= =?utf-8?q?+G3I3Y4ihpC8tLLmXCmE3ar7ooqTpFzsCVaiQn8yvnldYhf9gFXXCflWrSG+azlQ7?= =?utf-8?q?c1AkJTtDK25Jqjz7EKO8hDa22KZ+SutnTFrFicQJT7HdEA7WY9haC7uC5Y7j5ms9m?= =?utf-8?q?LSWWUVLR+O3Iuq?= X-MS-Exchange-CrossTenant-Network-Message-Id: 2b192e6b-f1bf-4f4a-8614-08d8fe84c39b X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:24.5948 (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: aBztJWLHqpR0WkZC30vqVhX+ZwEm99zFiE9cQZnhjmnxrLjEFXVDICUyOYhbmssHyuI/WFc63KNucr4pAp9O1g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Such helper is based on the existing functions to fetch a CPUID and MSR policies, but uses the xc_cpu_policy_t type to return the data to the caller. No user of the interface introduced on the patch. Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- Changes since v1: - Uniformly return -1 on error from xc_cpu_policy_get_domain. --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 187df5c5d2d..34d979d11da 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2599,6 +2599,8 @@ 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_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 78fbc7db9d3..1394e503f3d 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -732,3 +732,28 @@ int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, return rc; } + +int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, + xc_cpu_policy_t policy) +{ + unsigned int nr_leaves = ARRAY_SIZE(policy->leaves); + unsigned int nr_entries = ARRAY_SIZE(policy->entries); + int rc; + + rc = xc_get_domain_cpu_policy(xch, domid, &nr_leaves, policy->leaves, + &nr_entries, policy->entries); + if ( rc ) + { + PERROR("Failed to obtain domain %u policy", domid); + return rc; + } + + rc = deserialize_policy(xch, policy, nr_leaves, nr_entries); + if ( rc ) + { + errno = -rc; + rc = -1; + } + + return rc; +} From patchwork Tue Apr 13 14:01:24 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: 12200627 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.7 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,URIBL_BLOCKED, 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 5CB58C433B4 for ; Tue, 13 Apr 2021 14:02:49 +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 05B1E61206 for ; Tue, 13 Apr 2021 14:02:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05B1E61206 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.109777.209565 (Exim 4.92) (envelope-from ) id 1lWJci-0005EH-6o; Tue, 13 Apr 2021 14:02:36 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109777.209565; Tue, 13 Apr 2021 14:02:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJci-0005E8-34; Tue, 13 Apr 2021 14:02:36 +0000 Received: by outflank-mailman (input) for mailman id 109777; Tue, 13 Apr 2021 14:02:34 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcg-0005DI-Om for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:34 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 65ef5357-2709-4ae1-a310-e4e06467e70e; Tue, 13 Apr 2021 14:02:34 +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: 65ef5357-2709-4ae1-a310-e4e06467e70e DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322553; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=6EB34yxtREKRpQgddSh15DRCHEJ1cQ8hc+zSM5cFzGo=; b=ep/PBnF/ttdYAjbyppsd1tzVkqIPg4GGJgbRgQ4yaWjSFg6fQ2Nz29ZV uz82ukvkRoGk2jKJvWH+38GGFt+rBhkW31ow0fOsOhVhAn8y7yveMGMPy 9FdnOaz25TmcPjgGnOang6kxg994uVTRp2STTdBeUsAlwD2ouSh4KPOFi c=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: Sj/Xa0h65LTdNTab4d1DHs0sDv20l4Se/NuzOXOEUPv86hEb+/+HxMH9JU5lvU/TiR9FRg3NIq ArJRa34fNTxQDGBWBmG6AXmK11Uk+ZyJH3SCKJDNZFAT4/9tx+/x787SUDTSCM8McvLQMck6L8 st6Uq2bsa12otf0vA6FXePoNU7kGHi+XSMQjEw/DiqxQ3ewnZzEM5+AKopFiweZcxX42hT129L yvxfyZ5qH3BhY/2uBrKt6h4lXYAedggDTeiQCoV8ox4CGE3t5l3FmTNY0I6FCXNK9LKp+/39Xr ZH4= X-SBRS: 5.2 X-MesageID: 41483804 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:LH1h+aGQWsRdwelIpLqFMpHXdLJzesId70hD6mlYVQFVfsuEl8 qngfQc0lvOhCwMXWw78OrsBICrR3TA+ZlppbQAJLvKZniChEKEDqFHqbHjzTrpBjHk+odmv5 tIXqBiBLTLYmRSot395GCDfeoI5Pmi3OSWifzFz3FrJDsaCZ1IywtiEA6UHglXaWB9ZaYRL5 aX6spZqzfIQx1+AviTPXUZQ/PF4+TCiZOOW3U7LiQ64wqDhy7A0s+YLzGk2H4lMg9n8PMZ3k Xu1yf44aiitP/T8G6n60bjq654tfGk5t9KBMmngtUYJDP2mm+TFflccozHhh8ZiqWC70srjc ntrn4bTrhOwkKURE6Zi1/M3BTtyzkn4XOK8y7mvVLT5fbXaRh/Lugpv/M8TjLpr3AOkfs57Y dwm0WejJZTBQOoplWE2/H4EytEu2DxnWAvioco/htieLpbUpB9h6oF8nhYFZ8RdRiKk7wPIa 1VAMbQ6O0+SyL9U1np+m1mwNmbVn8uBBuxQk8bpsyP0zRN9UoJtncl+A== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41483804" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=joEvALicDJ1p3S8vig9ZE65tnZQWRau/K/sqzSa/PSfs2X8bZbID+cgsA7JmnmBGuTXZWVyDmIzNO0iOCrEkAlTBU5zcFYrM1uOgo1IphCbcttEs9u4jdywXTTXv6i3TDAC1SDKIgQ55gllklStD8bltYuegYe+y5i560hoLEIEJ2fMWk/N3Eer2HNcC8EkJ/Ua+z2ZwZA0zTqQGFJq/7saRo7d0w0rpfHL9vUT+BGa0A7ktTYV0GC56Lmf7vR/CnzGF8d0fcRsizZrbERTBVDONa9CSttoL8cZFdqai+oq3lEoHks0ybULoh+npVU87tZkp+vURG9hR+RA0asMuqg== 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=+C8NC1XmcgG+hR7rhDwEzRtSVqk3ZTRRhzEbmJGLd68=; b=e8x7s+BD5l63z9wD4u/e6dU5iwqd+JTcJXbfwRlsBd8vpsoctt56hjyA/clY4v18IdXT9+a8+BBD+ethVwo/XHFKadtLvk+01CCNaHo7/PUT3xXgP7oe3BcUq/NaIKT4+fLxES+grOYOITm9NHSa5lMkPpV64Zh4t1wTBU4+P4OW9cWVBDO64JEryhZ0VLUmDukQp00nfQcFCTRBJdjuhq6hO9RaVuOPJJHgpB2Dfb1bYYuYaV2kMVXCg5PlW6JaHyJNxa/LGXa+TFubFEADrD/80TxHc5zhcwD7/o3kFfOgxm8B3oYkpamrx2USo/OQhp9hLm3c8MYBlYkaP5jZ8w== 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=+C8NC1XmcgG+hR7rhDwEzRtSVqk3ZTRRhzEbmJGLd68=; b=pcRnrc531tj1Jbw7PBgmrV7/ez477ezNYVjyKGNYOAegRqGJjaEGmVZMnCFPNs3RziCciAqR6LauDKJ8FYwuVBJj0649rYRP75daVlv3fhwf2WTJ6BZ8okN/FPvufXN2gHrP+Hksz4DSwapKeaZnUOD3xaCz0VjqKr6AKhouBYI= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 06/21] libs/guest: introduce helper to serialize a cpu policy Date: Tue, 13 Apr 2021 16:01:24 +0200 Message-ID: <20210413140140.73690-7-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0099.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::15) 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: 480a7cde-3a81-40d6-6add-08d8fe84c719 X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: reCXnJjfy3n9vvTSfczOqbg4xaZvu9ikC2veci6I5QGYvjZds11ijWnwh75PR8bvI8oef+jjDd6KwiI4ejQeAjePp2z9rGNHR/xc8C13BiBD+ZDjZ+Vf4LoM48se8ajwyPzH2iPo7Tv/zmOQ8kiveBh9wrOz80mC0v4pzOhQIimbr02sMFyVNm5pMhOWPzQs5TN8CuSR0H+Su5kAP7vseBjprLwRXC5+xMjJ4XuVrFNULx+z5F/YBE25WKbgHG/Q/YpS7vBzyCaSoc6hAFcOsQ56y+J546xGbBTrXMnKwgj4SBMFFJ9P65X1q2WZ4NrYihFdXY3t1v6oyk+7UeR9bLvekAxK0kd9ub2vXLhDw1qZoa1ffdpKwm/+2F9F8vAwf1Lzh/07Y8ptV6+53UlATwF/qndy7Yf3PG3xyx4/pW6UuF7xIGamE0xvcOVaTVhtoe0zuUI7XTrdnVLKmpcU3diG2IL3qFsakjbZS2TbpzLYs1EREkjJjYmWU9h4v0FUn2ErddJ0mBByuVfr775nBhVBx1RJCrX9KR7q4KBHffaDl9+pU2tRJAKOuQJKgOFIBAqPL1v+rc+/GFset5fHTy8hncx99Ts8LthnQ3NXnwI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(83380400001)(1076003)(6666004)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?ZaqsXAWInLmfT2QMs2Wlm+o6LGCwtu?= =?utf-8?q?MJSHt3qIK6ZqYaJStVHWshhgRevF/QuQWSNLC0gTb8GP94+JGJCgYJadtGxJi00ki?= =?utf-8?q?Lw4V9sPcUongb3zyJCyt3szd1aSkXmPAgOY7YFxl76nEot/NCiPBU5SH5gUykTxx6?= =?utf-8?q?cKXWF27zdN7JZTxus+u+o8eKCDbk8wAuiVfPAPsO4Ab4kg6uFSjCDxtws1Z44f/11?= =?utf-8?q?VY6HmD7QnR/rsQQEpOfjtvftfTP3pn/BuYPDzYj1aZSAz8dHczT1rxCjRcxUBhXpn?= =?utf-8?q?8QWas/K606aD0mzA0oMxDiSt4vP7ltiTnCQGD/Bo1ga1Bvag5tXwKiFvP8tUnLbzb?= =?utf-8?q?aYdo83SicbVctou5ZzdNBzEvjZN34MOYAdEZiP5c1oxMBHSMC9lUa+54P0WnkpnBh?= =?utf-8?q?bCdFOaorB9hLH62+u46FVunNCQFPNF2q+Ioo/AZLfn2J5hgiZJEKeEgD7vnyGSpXu?= =?utf-8?q?iDi/Q38WK2AjxDWkwQatTLqqWdikrguHJD97x7J9j23gnIQqcG0tIwU43W9uVHisM?= =?utf-8?q?0wN62gHUp0/Bxs0IlOipbrjQGJVc5VOHcERVTp7gNpLMi6/6kHYhesXfVUybM66uA?= =?utf-8?q?PJne4ZJL070OXr4ACIJdW+Ni4SacqPzHSzo88JidBT0t6PVoE0665qQdfrJfuVzHN?= =?utf-8?q?mLlHuMenLb9QQmyMHBPKTYEj8FH1ZDRz3ElpHZMLR/+cL5idcL3O+gE08oBWBjaGi?= =?utf-8?q?tFwwL1wjJp2fUdPZ2rLur2ne3uZWEfVTkh0I4c3Fsg4M+FlrsvM3Jd9XEo1mQenhE?= =?utf-8?q?hW2sT2H10KUMHkOIwsUMm3yxsEgsGvTTwEZ+ZwN1DtTdd3Hzjuv+F4Iv/Bgw9zday?= =?utf-8?q?Pwl4VY9PLi41DgNdfm1+wsPI+HuxpgyH4y06VahIUz29lBTQwlskyRoP4TrNwkQCO?= =?utf-8?q?R1vZ55P1UD6FDkDKjOUL5rHL+PlVgQxO+wJw1HZpiZmcnQlqdRpEnKPccs6ua6h7t?= =?utf-8?q?/dCMqUW0/7mygDCx9T/M13DzKD3/tqaLM+PP26csOEPgFiCZRpeykZI3c+gAWFJnU?= =?utf-8?q?qbQ/rtuYQ+BT5Bjz0k1n493olHz9Zx50DIfxAXJYjnaNSsgNeRkjrpJbcH5hYh/Ps?= =?utf-8?q?K4kJZS7YciE5URhH2oa8sM88fS96mbRPk03QuYYGoMgmQPii146Wm6xW5P4K137E4?= =?utf-8?q?ck4zTmFHWrLpoHdj+n6W7HTlavPDeRvhYyGzQ0TTWyRtUwoNKI+/k7P7R/IYEsk7M?= =?utf-8?q?T9KMeKwVW/8Ve9yzwJjjvnt42Kw2IvHadki46M0Qp5AfPE1Fgp6EIYkSVX1zjnaAY?= =?utf-8?q?qfqIW9jWro6wNJ?= X-MS-Exchange-CrossTenant-Network-Message-Id: 480a7cde-3a81-40d6-6add-08d8fe84c719 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:30.4565 (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: r69qJRuwc4bRB7kPxMRibOxmsJjOlInj41lHBDKVeD15e6tsxwImr56PK8imNcH5x4tEo/cvWc/3cWDXlIssJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Such helper allow converting a cpu policy into an array of xen_cpuid_leaf_t and xen_msr_entry_t elements, which matches the current interface of the CPUID/MSR functions. This is required in order for the user to be able to parse the CPUID/MSR data. No user of the interface introduced in this patch. Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 5 +++++ tools/libs/guest/xg_cpuid_x86.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 34d979d11da..a4827b1ae6a 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2602,6 +2602,11 @@ int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, int xc_cpu_policy_get_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_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_x86.c index 1394e503f3d..918591a128c 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -757,3 +757,35 @@ int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, return rc; } + +int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t p, + xen_cpuid_leaf_t *leaves, uint32_t *nr_leaves, + xen_msr_entry_t *msrs, uint32_t *nr_msrs) +{ + int rc; + + if ( leaves ) + { + rc = x86_cpuid_copy_to_buffer(&p->cpuid, leaves, nr_leaves); + if ( rc ) + { + ERROR("Failed to serialize CPUID policy"); + errno = -rc; + return -1; + } + } + + if ( msrs ) + { + rc = x86_msr_copy_to_buffer(&p->msr, msrs, nr_msrs); + if ( rc ) + { + ERROR("Failed to serialize MSR policy"); + errno = -rc; + return -1; + } + } + + errno = 0; + return 0; +} From patchwork Tue Apr 13 14:01:25 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: 12200629 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.7 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,URIBL_BLOCKED, 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 80465C43461 for ; Tue, 13 Apr 2021 14:02:51 +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 26A5A61206 for ; Tue, 13 Apr 2021 14:02:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 26A5A61206 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.109781.209577 (Exim 4.92) (envelope-from ) id 1lWJco-0005Jq-Hp; Tue, 13 Apr 2021 14:02:42 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109781.209577; Tue, 13 Apr 2021 14:02: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 1lWJco-0005Jh-Cn; Tue, 13 Apr 2021 14:02:42 +0000 Received: by outflank-mailman (input) for mailman id 109781; Tue, 13 Apr 2021 14:02:41 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcm-0005DI-TH for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:40 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 443fcc63-a9ef-4fcc-b101-606f42864a7c; Tue, 13 Apr 2021 14:02:39 +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: 443fcc63-a9ef-4fcc-b101-606f42864a7c DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322559; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=xAaavw8tLgCKI5yDj7+ij6kDHsh9Urpoi2CfeTGi1ww=; b=PKxcJ8EgeIPpGDg5nI2ew8th5zs/t7FGpPRsdz/S1aVKC6SzXJq+BDbS Wi5+3f35QKNDbK/BOZ42k45QsHnbQx8KBazypUDOQpzzKb3YKvEhUHgLH Opek2BCBfU/yqyDjhW4rJmT8A835NITmNwxsQqOpZb/rObEe5BUgziBII w=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: mjzN2C9ug2pI8YZWOnJ8vtQRdzvPYsSriq45UkfvX5jS6Bn7WOPsCzVgA4LQ7MhbJuOGcjkUbW NOiGenB59l7jkEiRA4HhsYNJjc8E1pjLif6piuHmoLi6v4uXHgJ0udxlOD3XmSWJf6pT/8pJ1g Jl9z6ehzC8BuUChRUuZpRZuB4G21oxcOChY/9j5zQCnUC2DM5t0jmLrgR4DvlBjarGGgLFOHsK JByYgolWBgERtU2plNw2G18Kxozz/xKcOQfkuhx9+3cMdcMh0hBHfEu/wy/ryUxd4su9i6BQ2J oE0= X-SBRS: 5.2 X-MesageID: 41476465 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:7fDn3K6Z/UHCc27tDQPXwU2EI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoexzh3LZPy800Ma25VAfr/FGpIoZr8Jf4z1TbdxHW3tV2kZ 1te60WMrDNJHBnkMf35xS5Gd48wN+BtJuln/va0m0Fd2BXQotLhj0JbjqzOEtwWQVAGN4FD5 Ka/MVKvH6Nfn4QY8S9CBA+LpT+jvfMk4/rZgNDOg4/5GC1/E6VwZPZMzzd5BcRVDtT3awvmF KqryXV7riu2svLrCP0+HTU6/1t6bnc4/tFQPeBk80Ebgjr4zzYH7hJf52nkHQLrPq06FAs+e O80ysIG8ho8XveciWUjHLWqnDd+Q0j4XPj1lOU6EGLyaeSJENYerh8rLlUfRfD500rsMsU6t Mw40uju4dKFhSFpSzh5rHzJmBXv3Cpqnkvm/N7tQ05baIibtZq3Oki1XIQOpIBECXm0ZsgAe ljAerNjcwmD2+yXjT3uHJiz8erWWl2NhCaQlIassjQ6DROmmtlpnFoiPA3rzMlztYQWpNE7+ PLPuBBk6xPdNYfaeZYCP0aScW6J2TRSXv3QS2vCGWiMJtCF2PGqpbx7rlwzvqtYoY0wJw7n4 mEeE9EtEYpEnieSfGm7dluyFTgUW+9VTPixoV1/J5ioIDxQ7LtLGmqVE0uqc29uP8Sa/erGs qbCdZzObvOPGHuEYFG00nVQJ9JM0QTV8UTp5IVQFSLjsXXKpD7l+DSffrJTYCdUwoMayfaOD 8uTTLzLMJP4gSAQXnjmiXcXHvrZwje8PtLYe3n1tlW7LJIGpxHswATh1j8zNqMMyd+vqs/e1 Y7BLvml6i8tFSn5Gqg1RQsBjNtSmJupJnwWXJDogEHd2nud6wYhtmZcWdOmFyKOwF4VMGTNA JEvVx49eaWIvWrtG4fIuPiFljfo2oYpXqMQZtZsLaE/93ZdpQxCYtjfrdwGwXNHxlcgh1rt2 9HVQ8BSibkZ3DToJTgqKZRKPDUdtF6jgvuC9VTs2jjuUKVotxqemEWRAe0UcmcgR8nQh1dgl EZyd5ZvJOw3RKUbUcviuUxN1NBLECaGqhPAgi+aIJIobzzYw1rQWCWhTuVtgErdgPRhjYvr1 2kCRfRVeDAA1JbtHwd6Krs/V9uXki2fk57aBlBwMZAPFWDnkw2/f6AZ6K13WfUV0ALxfsFNi rZJREIJBl1+tyx3BmJuTqLGHk83K8yNujFALlLScCU5lqdbKmz0Y0WFf5d+5hocO30uugQSO SFZku7Kij7B+5B4X3iml8VfA1P7F8qnvPj1Ee7sCyW3HsjDeHTJ1ojbbcBON2Y53XlQfHN8J gRt6NAgcKAdkHKLviBwuXrShQGDDX5i2u/VfspppBZprhajso6I7DrFR/zkEha1xA/JvrunE wQQK5H8KnMU7UfCvA6SmZ8xB4Vj9yBI0sgjxzuDsI/dV8riWXHP9nh2cu+lZMfRmmIpA79Ij CkglVg1saAeyuIzrgBDa0sZUxQdUgn8XxnldnyPbH4OUGPd+tZ+kC9PWL4WLhBSLKdEbFVih ph+dmHk6u2cCX/sTqg8AdTE+Zr82y9R9m1Dx/JMelU88aiMVDJu5CU2qeI/X7KYAr+TV8Zi4 1DfVERacoGqgBKtvxJ7gGCDortokwklFNC5ypAjVCF4Pn+3Fvm X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41476465" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c+kWog2isXEbBsHil1Z7u11+uQFk/XcEz3JV90a+R6mao9tVCos8sWvDvYnMtj6uh2AC08JrTLicFgdF+co0FYmgzp8moOdZ+bOr3vVROxoCfDon7s2T5Wl9ISX29KS3cj2XuEULCLdbcldHruywJb4Y6V0Y52p1ZWMjZBK92KHHofGn+gjKHShuWqRc5CqF2nmIqwJOJykoB6lQ2/If9iqYo8IhRkPDQ1/ZkubYLwejZiaJNFOfP3D1QS4HabCK0i3Apms6v4Cc2ckJZliPfYOR/1AhLqmyji2BjeHYkqbqJj5ncJd3EVmy44ApZJy5NLy6RdcW5nmQcu2xdDI+2g== 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=ts6808t8I7OOkQ2S6zJoNr6HGxOEnfocXKMyqX7zdFk=; b=Yn2Oy3fq2h1KILOwZ5/dyDq5MrbsDfbvucfuL0vFD+7Zcd7W7Kp0LIsaJjUWo4qyAnnJQWWLOPAF6zNlq/enYxKjkJ6/r2RNwsbSvlbYLpUcXmSjMhFk1RVEn5SLDkbGte9gDmEwqIf++vMtXm31L7haS3BnemKyrKLUl9zRTH2cWe/kL8zKkg2HWairAUiXAzg1FQ8x2lj46z9uu3eOXabMF1FrkUH8WDVhCvjlD+9Chucep8AUtpt7q7+6tH7L1p7AR74El3oZ/qoLlJ+mK6GwpGyWpXdSDOOvOX6P1L7bHEmSRm37jcUD5PBCEAKBxga1HX91NtLbWg6Ppqg5cw== 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=ts6808t8I7OOkQ2S6zJoNr6HGxOEnfocXKMyqX7zdFk=; b=neSQTFRItJsIKQNC7TcC8QEtw0WagpoZ4nSkQ79aphkQkyxq99ZAvGlKiUx6LP15q+sZMCr7gH6NM8d21KtRc0l6AQNA8gTJBmNAun3ZfJ+N6hHpn0eSaL1kfa6bsLhxDMc8uAWOv83bPZj6JZrN47UPlliBqNyh83fYfalSqg4= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Jan Beulich Subject: [PATCH v2 07/21] tools: switch existing users of xc_get_{system,domain}_cpu_policy Date: Tue, 13 Apr 2021 16:01:25 +0200 Message-ID: <20210413140140.73690-8-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0110.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::26) 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: 3a2014e0-48e7-4c92-b709-08d8fe84caea X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:76; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ltBqwAM+hGtRwnLp2PrwYzeLKzIMQgAtdgSrRE8pc3A0qPa6ZWl/fYCMgpbQI38rd6HJFc+It8c1wrlUWiSPyoChVtR5rskUaVAycK8kmp7pGXZ/MGphRwrTpqtrmUWXda+y6MFOnQU/PSoaZ1gb11tWxCIvDVU40p6gXewOG7pJbTi4aa2k8UA/VML1uJkd7qRpTxO1qAmpYJpd7JKEz6B/Zq2JcMyLFGsbn6hTfXbM9WLhBwGE/czv7qJODSXkUyxYQIcFfJedI66/keWTdQxBSnaiD7yU82/RwyxcsJfAYl41kRf1qBpYxyuXBe/zOAo7o0suSIK+5FHaxDmjdkRozCWLUpnOMNuTkjI0bugsBWYAPRu75YqlO5nndoptbnK8tfsmk9wFr9cj3fZzxN4EMULn6BIl8smvVSml6KOlKsHLXAJwJu9NPswCQCt1+k6xRGyg8aheSbXQtqaIDMyPgu9VkWp11I8hkpms7cOMhEnz9bU4XRIUGJkyYzQpVH3anG0m/7FTT9sK8FI/ubzH3rTR3dbjhMtUS6knk9I79WU0csMGTe9SeR3+6BX/Fz90tpc9m8umDsMRSr4aPxxtqmnUSztgZJ760MiZcsE= 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(83380400001)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?zHjEpSjnnwDQ9uWCBR8QsQtgkwDGAF?= =?utf-8?q?/Rx3e3AJWQzpTg1ZG2CdFlF+KavxX9CWuOfc1KS9tDsBUjc0pxpShYjxMFMpOlGjR?= =?utf-8?q?4ynlPcuw/4Nwfd1pMl+kuK4/jg2f/Lg20C9bOhxvXy3EX3ef5Mw/1sOxqr1SM6hbw?= =?utf-8?q?xhs5MHfZwqPKgLxiXXvYXdw9VEOfl4iMqAfJZ3WLAvXHKuEpNWGVeDFnzAk/k/r5m?= =?utf-8?q?p17cT9jDjpYlsQVAGYesppTf9UWol9KUPiN1/9BZDGTxaitv9gldHfrQyXMx8vquA?= =?utf-8?q?8Eu8Om2U8kzq/boC2W48Sq4m7V4NdeYLrkjHdL2TLvh1nTUqt+xeUENJyxkLZh28V?= =?utf-8?q?Q8ahaOLYBJyXiOlhBNQEL/iW2cOWqy9qtwwN+e/QiRBZwE5/m3GxOsok7dSxTCFxD?= =?utf-8?q?yvPIHtJ9AoQZdvNBcDDIvaNu5v0NxMhP+DU7hRfXwUHhzsYtTEiQ+HC9iofiQouGV?= =?utf-8?q?NMHSusCwP7MYjn81FA9dHiqp/j3GIPR+7zreuP8YW7djtoUJdEmmcpM/4AK7luO05?= =?utf-8?q?3KIXtv8UtqrC6wQSvH3LiogQlloBqrBZnuBNZySCLwgMm/1avwyzUSJZCzK/4yH3h?= =?utf-8?q?Aobm+uPQJSHkyxiMhzlDSxGsi7HplPzyMrh+rgV5CiHyW4bPvtvP4X8+kfBJ5V8mZ?= =?utf-8?q?nUi1O7wbnVAxn4DTWx1y+xgDH9IrRInq2bLSueM2dyzS7hiSfO0xVOUv+NsgtEfmj?= =?utf-8?q?kFG2o06Vdeg+FgX8PKUE2VzGzFlm9QAVXfoqq8wZEUZa15kX7Ti0fnI8WLT8IRSvI?= =?utf-8?q?TAvPrWEBySkJL7+QbMrN0xoswoG1h4QOT9mTCiGA/EBtFBpvIcKBJL3pKetMS+1xt?= =?utf-8?q?zLb1mb92Odh6hq3T5QCT2qpkn0X5P5w0f1P5Y/OGRB8cX6hWHLFWbjK7MxmKj+DmR?= =?utf-8?q?Fq4yqXD7Qll1c+tRuxUh0BYvIVRZc6EnEyZvbkNdQmrSgBllYwgc1vWCPpKEA66Mf?= =?utf-8?q?OyfZTiHJIegB2KQF/i7Nx455NFyz4VtEeLcAk3h6d1+OWC+MdxV/3BrPWyAavdr7L?= =?utf-8?q?CgH6V4InHh49cYoHQn6hMrDDmqh4SCB9NjqX+vkJU5ABQvZFG8w3YV9/By4p+3XPB?= =?utf-8?q?mvki4QWE4tC/sWanPGW5EytI2x0W506fbH4v60O6BZx3USXxD9DQHz3YsiAXyAR0C?= =?utf-8?q?l2mbsAmK+JLYR2uMOynM3htezixOK4Y7royp/uuSXrpZ9qrj5KjN+gjRhx+MN0jRW?= =?utf-8?q?eHHns9+drhCNXhjUfc0GgZBzEvIo5rcE/iRCNXChTxrAmphWfN1N/1NpaNY9POEJG?= =?utf-8?q?YdiW1dytAUvkQf?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3a2014e0-48e7-4c92-b709-08d8fe84caea X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:36.7508 (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: TbxUlADcVmrjuv+lRwyJVr7d73HXfTPFtW7kHp1Zl5SmCsG+1qIP4TiYgep92qCEXHJnCatlds1KXzxbNia1uQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com With the introduction of xc_cpu_policy_get_{system,domain} and xc_cpu_policy_serialise the current users of xc_get_{system,domain}_cpu_policy can be switched to the new interface. Note that xc_get_{system,domain}_cpu_policy is removed from the public interface and the functions are made static, since there are still internal consumers in xg_cpuid_x86.c Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 6 ----- tools/libs/guest/xg_cpuid_x86.c | 39 ++++++++++++++--------------- tools/libs/guest/xg_sr_common_x86.c | 15 ++++++++--- tools/misc/xen-cpuid.c | 21 ++++++++++------ 4 files changed, 45 insertions(+), 36 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index a4827b1ae6a..e9a86d63bad 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2613,12 +2613,6 @@ int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, uint32_t *nr_msrs); -int xc_get_system_cpu_policy(xc_interface *xch, uint32_t index, - uint32_t *nr_leaves, xen_cpuid_leaf_t *leaves, - uint32_t *nr_msrs, xen_msr_entry_t *msrs); -int xc_get_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); 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, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 918591a128c..208a247bb6e 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -135,9 +135,9 @@ int xc_cpu_policy_get_size(xc_interface *xch, uint32_t *nr_leaves, return ret; } -int xc_get_system_cpu_policy(xc_interface *xch, uint32_t index, - uint32_t *nr_leaves, xen_cpuid_leaf_t *leaves, - uint32_t *nr_msrs, xen_msr_entry_t *msrs) +static int get_system_cpu_policy(xc_interface *xch, uint32_t index, + uint32_t *nr_leaves, xen_cpuid_leaf_t *leaves, + uint32_t *nr_msrs, xen_msr_entry_t *msrs) { struct xen_sysctl sysctl = {}; DECLARE_HYPERCALL_BOUNCE(leaves, @@ -173,9 +173,9 @@ int xc_get_system_cpu_policy(xc_interface *xch, uint32_t index, return ret; } -int xc_get_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) +static int get_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) { DECLARE_DOMCTL; DECLARE_HYPERCALL_BOUNCE(leaves, @@ -329,7 +329,7 @@ static int xc_cpuid_xend_policy( /* Get the domain's current policy. */ nr_msrs = 0; nr_cur = nr_leaves; - rc = xc_get_domain_cpu_policy(xch, domid, &nr_cur, cur, &nr_msrs, NULL); + rc = get_domain_cpu_policy(xch, domid, &nr_cur, cur, &nr_msrs, NULL); if ( rc ) { PERROR("Failed to obtain d%d current policy", domid); @@ -340,10 +340,9 @@ static int xc_cpuid_xend_policy( /* Get the domain type's default policy. */ nr_msrs = 0; nr_def = nr_leaves; - rc = xc_get_system_cpu_policy(xch, - di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default - : XEN_SYSCTL_cpu_policy_pv_default, - &nr_def, def, &nr_msrs, NULL); + rc = get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default + : XEN_SYSCTL_cpu_policy_pv_default, + &nr_def, def, &nr_msrs, NULL); if ( rc ) { PERROR("Failed to obtain %s def policy", di.hvm ? "hvm" : "pv"); @@ -354,8 +353,8 @@ static int xc_cpuid_xend_policy( /* Get the host policy. */ nr_msrs = 0; nr_host = nr_leaves; - rc = xc_get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, - &nr_host, host, &nr_msrs, NULL); + rc = get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, + &nr_host, host, &nr_msrs, NULL); if ( rc ) { PERROR("Failed to obtain host policy"); @@ -486,9 +485,9 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, /* Get the domain's default policy. */ nr_msrs = 0; - rc = xc_get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default - : XEN_SYSCTL_cpu_policy_pv_default, - &nr_leaves, leaves, &nr_msrs, NULL); + rc = get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default + : XEN_SYSCTL_cpu_policy_pv_default, + &nr_leaves, leaves, &nr_msrs, NULL); if ( rc ) { PERROR("Failed to obtain %s default policy", di.hvm ? "hvm" : "pv"); @@ -715,8 +714,8 @@ int xc_cpu_policy_get_system(xc_interface *xch, unsigned int policy_idx, unsigned int nr_entries = ARRAY_SIZE(policy->entries); int rc; - rc = xc_get_system_cpu_policy(xch, policy_idx, &nr_leaves, policy->leaves, - &nr_entries, policy->entries); + rc = get_system_cpu_policy(xch, policy_idx, &nr_leaves, policy->leaves, + &nr_entries, policy->entries); if ( rc ) { PERROR("Failed to obtain %u policy", policy_idx); @@ -740,8 +739,8 @@ int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, unsigned int nr_entries = ARRAY_SIZE(policy->entries); int rc; - rc = xc_get_domain_cpu_policy(xch, domid, &nr_leaves, policy->leaves, - &nr_entries, policy->entries); + rc = get_domain_cpu_policy(xch, domid, &nr_leaves, policy->leaves, + &nr_entries, policy->entries); if ( rc ) { PERROR("Failed to obtain domain %u policy", domid); diff --git a/tools/libs/guest/xg_sr_common_x86.c b/tools/libs/guest/xg_sr_common_x86.c index 4982519e055..15265e7a331 100644 --- a/tools/libs/guest/xg_sr_common_x86.c +++ b/tools/libs/guest/xg_sr_common_x86.c @@ -48,6 +48,7 @@ int write_x86_cpu_policy_records(struct xc_sr_context *ctx) struct xc_sr_record cpuid = { .type = REC_TYPE_X86_CPUID_POLICY, }; struct xc_sr_record msrs = { .type = REC_TYPE_X86_MSR_POLICY, }; uint32_t nr_leaves = 0, nr_msrs = 0; + xc_cpu_policy_t policy = NULL; int rc; if ( xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs) < 0 ) @@ -58,20 +59,27 @@ int write_x86_cpu_policy_records(struct xc_sr_context *ctx) cpuid.data = malloc(nr_leaves * sizeof(xen_cpuid_leaf_t)); msrs.data = malloc(nr_msrs * sizeof(xen_msr_entry_t)); - if ( !cpuid.data || !msrs.data ) + policy = xc_cpu_policy_init(); + if ( !cpuid.data || !msrs.data || !policy ) { ERROR("Cannot allocate memory for CPU Policy"); rc = -1; goto out; } - if ( xc_get_domain_cpu_policy(xch, ctx->domid, &nr_leaves, cpuid.data, - &nr_msrs, msrs.data) ) + if ( xc_cpu_policy_get_domain(xch, ctx->domid, policy) ) { PERROR("Unable to get d%d CPU Policy", ctx->domid); rc = -1; goto out; } + if ( xc_cpu_policy_serialise(xch, policy, cpuid.data, &nr_leaves, + msrs.data, &nr_msrs) ) + { + PERROR("Unable to serialize d%d CPU Policy", ctx->domid); + rc = -1; + goto out; + } cpuid.length = nr_leaves * sizeof(xen_cpuid_leaf_t); if ( cpuid.length ) @@ -94,6 +102,7 @@ int write_x86_cpu_policy_records(struct xc_sr_context *ctx) out: free(cpuid.data); free(msrs.data); + xc_cpu_policy_destroy(policy); return rc; } diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c index 52596c08c90..8ac25581d68 100644 --- a/tools/misc/xen-cpuid.c +++ b/tools/misc/xen-cpuid.c @@ -458,9 +458,12 @@ int main(int argc, char **argv) uint32_t i, max_leaves, max_msrs; xc_interface *xch = xc_interface_open(0, 0, 0); + xc_cpu_policy_t policy = xc_cpu_policy_init(); if ( !xch ) err(1, "xc_interface_open"); + if ( !policy ) + err(1, "xc_cpu_policy_init"); if ( xc_cpu_policy_get_size(xch, &max_leaves, &max_msrs) ) err(1, "xc_get_cpu_policy_size(...)"); @@ -481,10 +484,11 @@ int main(int argc, char **argv) uint32_t nr_leaves = max_leaves; uint32_t nr_msrs = max_msrs; - if ( xc_get_domain_cpu_policy(xch, domid, &nr_leaves, leaves, - &nr_msrs, msrs) ) - err(1, "xc_get_domain_cpu_policy(, %d, %d,, %d,)", - domid, nr_leaves, nr_msrs); + if ( xc_cpu_policy_get_domain(xch, domid, policy) ) + err(1, "xc_cpu_policy_get_domain(, %d, )", domid); + if ( xc_cpu_policy_serialise(xch, policy, leaves, &nr_leaves, + msrs, &nr_msrs) ) + err(1, "xc_cpu_policy_serialise"); snprintf(name, sizeof(name), "Domain %d", domid); print_policy(name, leaves, nr_leaves, msrs, nr_msrs); @@ -497,8 +501,7 @@ int main(int argc, char **argv) uint32_t nr_leaves = max_leaves; uint32_t nr_msrs = max_msrs; - if ( xc_get_system_cpu_policy(xch, i, &nr_leaves, leaves, - &nr_msrs, msrs) ) + if ( xc_cpu_policy_get_system(xch, i, policy) ) { if ( errno == EOPNOTSUPP ) { @@ -507,14 +510,18 @@ int main(int argc, char **argv) continue; } - err(1, "xc_get_system_cpu_policy(, %s,,)", sys_policies[i]); + err(1, "xc_cpu_policy_get_system(, %s, )", sys_policies[i]); } + if ( xc_cpu_policy_serialise(xch, policy, leaves, &nr_leaves, + msrs, &nr_msrs) ) + err(1, "xc_cpu_policy_serialise"); print_policy(sys_policies[i], leaves, nr_leaves, msrs, nr_msrs); } } + xc_cpu_policy_destroy(policy); free(leaves); free(msrs); xc_interface_close(xch); From patchwork Tue Apr 13 14:01:26 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: 12200631 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.7 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,URIBL_BLOCKED, 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 08C7CC433ED for ; Tue, 13 Apr 2021 14:02:55 +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 ABCCC611CE for ; Tue, 13 Apr 2021 14:02:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ABCCC611CE 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.109784.209589 (Exim 4.92) (envelope-from ) id 1lWJcs-0005OY-23; Tue, 13 Apr 2021 14:02:46 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109784.209589; Tue, 13 Apr 2021 14:02:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcr-0005OQ-T8; Tue, 13 Apr 2021 14:02:45 +0000 Received: by outflank-mailman (input) for mailman id 109784; Tue, 13 Apr 2021 14:02:45 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcq-0005IR-W3 for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:45 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 9de22b63-6d0a-48a1-aa5b-b42364ee1380; Tue, 13 Apr 2021 14:02:44 +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: 9de22b63-6d0a-48a1-aa5b-b42364ee1380 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322563; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=+ccNt1NnUZB51wrF9lVtU6rnw0ezqCu7LtS/VwdmaXE=; b=ZFZ3EEM+dzJrqwI8IzwbWGCAy7wNqP4KCmaMMuU3cVA59mNQbN9dw3rK NTJxmJe5IDRfi1lkdTgLgabELnMaBHKXWRisGJi8HPq1icWb3jK7wR6QZ snfUxhLiu4kY1wKhyFgQTdSH0mIiWYo4S+0CLxo7mzR8BxML42oXA/3sN 4=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 2NbV4rYqUDXgZ5UCmNABXCVnZ+KDdBd0ryP1I98GHYD1xaS79HzB4oY0jKiKqAkYMWROmm5tjr AtOhrPe8tde13VxDQo38sXg1sjULyNvM16ef19LppKCMQyJktyyQ8VkVe3lUtiNsTJHYfc5sjh iQ0oivb2GVlsQw3MNM/LMTD6tsN5lUAZxY5qe+2Sha2fdh+wFbaSRrnJ/KkkTK+we+XgzI5kzn wx3o3BkqnTAUmjF1XU9THVDApuIoC3G3jebACxyIKk8Oln3hYAzyU753UxlkgMpG4fzKPwp2zN wB4= X-SBRS: 5.2 X-MesageID: 41322176 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:ohTAla1Jdk1/K7i/S073TwqjBWhyeYIsi2QD101hICF9WtCEls yogfQQ3QL1jjFUY307hdWcIsC7LE/035hz/IUXIPOeTBDr0VHYSb1KwKnD53nbGyP4/vNAzq sIScJDIfD5EFQSt6nHySaiFdJI+re62YSJocub8Ht3VwFtbMhbnmVEIyKWCFd/SgUDJbdRLv qhz/FKrTahZngbB/7TbhU4dtPOusHRk9beaQMGbiRN1CC1kTiq5LTmeiLovSs2bjUn+9Yf2F mAqSPVzOGJs/a3yhjTvlWjlah+qZ/a5fZoQOCJgsgRAD3whgivf5QJYcz+gBkF5NuBxXxvvN 7QowoxH8kb0QKsQkiF5SHD9iOl8DEy52TswVWV6EGT3vDRdXYBJOdqwad6GyGpj3YIjZVH/4 9gm1+9jd5xCyjNmSzsjuK4Ly1Cpw6PjlcJ1dIIg2c3a/p4VJZh6bYx0WlyC5k6ECfz+OkcYZ JTJfCZ3vpQfF+ABkqp2FVH8ZipVnQ3KB+MXlIPjMyTyyRXh3B01SIjtbUioks= X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41322176" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ImeAnWUtT4HOIU1JcRi3DPv2dJlJVz26OK+V1BeChRMqR+Y/vglIbxDTXpU+Oos1lGhWSlmoKFPJhY/jjOxNFEoWxPrLpz/vybS/9wN/8M3TGwN2cAl+9akTy+kkYaRVNDVgwpVDvYqmQD6PQlymPKZ0rL+r7F8kqu5EbmWNqQANjGj9I2JdmuI3XNA/TiFMQWPWsg7MY0A+Y4eYok3fWciYRDITrA3AcA4zxjNvcEezV65j1M7eG+4lHuNuOJp6u+u77BnlhrHEEhVoqegotqM39PiPs4G3dWtBbEdpdRUC1xaIz22JBddNQMVcQH+SQqELnxmzvJOzht0uCwpSFQ== 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=Ace5hGQHWZBVqrsl47aMLF18dvATzg1Wl0vS5Bxau5Y=; b=HNaOC0qzi5Cr+RUbJP1PcqV8zbsoxoyItSsm0qSQlcfX7oK80ZTY0zAGSJDUeZie8YiYzYzSMFlMq/qfEJhIQqCadVyJsX2UexC57CKBoFQRaODp04bJmCk1TU+anPDTRdw0nkqjtmtDGK3mIQMkal55l/YzeX0vaY3QCQP+zCdhcug3RfSmYzOig0xzut00JhZbIhCzlstY8VbkHM9ip6KZ+87R9wafqrtYDL3j35KWr0t/lUDOR18eJFfH4lUscpr7L6VHdhU3O8BoWma4nLavYIS/13VV2u3j09c0g32WjnToIsVH8L73EIXGi8uwiKiXMIiW8yvXOakc24dwYg== 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=Ace5hGQHWZBVqrsl47aMLF18dvATzg1Wl0vS5Bxau5Y=; b=nrSfj9EBW0fo0eS6hqr5Jw8o8mwkuA2WEZuotzLMM1/hLzr+GExpU/SXoHTlaFZLM7L+pqhXwghhgGZ9jDazwMiUAXlsZw2tsXUBR0KcqPjkGfXkmIO1KopAs99OpLs/sZRCPj0AR77dr0AZJJvckv3JHJeBn7/W4m2rkCE3Muw= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 08/21] libs/guest: introduce a helper to apply a cpu policy to a domain Date: Tue, 13 Apr 2021 16:01:26 +0200 Message-ID: <20210413140140.73690-9-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0103.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::19) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c3f6c4db-9226-4c75-9e5a-08d8fe84cd99 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4941; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QbaJTcdYwbS4Hftkmgy4BuKsisuCKehgtSzsiAqcrNddh4rGwloRznuiO+iyHaVQBEh1cXgSt98XjEFltXMs4jBuxWrdvb+3sgg4zpxdWPY36zqvJNFOBYgMVcnJz/PvM+WpZwNNdQRQTzKaPomCMVGJWeIHZo9LS+0gHIhZLFaCROMs2pmf9Fp1tG57lM/U2ZDcenHwCHg7IpOYW9sMpFlvBUf0K0mdeCQvi45POhDajb8vRnF+33jEIcJx4iRElxPe5nICCoqVw3in+UkQOhno8BV6ISxANgxFU7iGG+ZeOVEkZ7B2ps9HIFt6n8VzTd/lrRzVyD0d+b+Ak4msaPZ9N2DbBpmjPbnejRrTzFlvA6u61j/Sq7rLDFBc2tW0fJ17wSNS84vVIq5uyWRsyAJkjtZ+2Xsoe536D06JVVKHCmsDLUFRngVVX/oiWLTH+WuC3BZSYD/cgP9aRZc9F4s5s2GHfM7kYbGeWUHi/0sxRYTQa9fJgjSu6Xb1zJeS0x2lq4o3cvYH/I9dnD3yEy+f3dVDxoZYsUaX2q5kC1/hvqMiakAswUHVGipB+XOJuOsWR1GYke57E8XE5fdPW1D6nrjDKN7SdKVBUqQ3Z0I= 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?jS6FgxPGGWh03dnmIeuM/Nc78lIZNV?= =?utf-8?q?FIyGVuTCsELpA7e36fznuVSJV0Hz8KKG7d/a9xtjWdYhDdHMXOrkZ/q9zSaj5hPuU?= =?utf-8?q?tbYndjXliIFIs9kvvsUvVeh85GoWvhYLl1nRmTHtDWghoVKgA6rrGztIzvCQCBQ9O?= =?utf-8?q?/R9QPmX2kCUH+ASPYohaP8PQWF0Nvu/qVSXb0MH16xkq4olmbpj9uT1QQoEQuOaTY?= =?utf-8?q?nKIUkQK50PHa+F9+7DNjAQEsHj8mr6RR+9Twqvb2GyHFHwga7gSSi/sorbKPGQrYI?= =?utf-8?q?A8r9zYEB+wiNyzE7XxMtzKpLGbaixN+3GujXULrm6NXWqKgJpV2Iw/TKny0lLHCrA?= =?utf-8?q?ZehAMxLDAMJZn/9gzmr88aEve1RkO2PLtIKgzeJ4vPqV1POPZP38FBSUSmSkdlL9I?= =?utf-8?q?vNcgt4WTJd/qsIH5xjCV3Iba+dtE7P2aIcrGk6CBYmi4YipU4UK5gAnx2ZrAu9X0O?= =?utf-8?q?l2g2GZTHrEpwQt6Blg8hO6EkVIlSIYLPYluOk8JV21JE+zfPxTwxwFDis/b8BIPzP?= =?utf-8?q?0fqX2NAMMOhBvWgHHc08muE5q6wpcSDPLMn4xxbU+/JITQjo090pa8PwUtQbcrMrk?= =?utf-8?q?eMx7+HWfqP+YM+XYd/xiu37FLlxm/1NQTv4kiX/T3IxQ9w8YpWsq7CvC8TtwEIrMU?= =?utf-8?q?AO+M6Q2oN9POgw3gaYA3amVqiPC1tpucd/+OqVmGpNysE41Tpo0tRxPXi3d8hALEI?= =?utf-8?q?FRqpstg0zD9w/os3c64AGcQ97Gi+u/PWq3TCUXxWLLAayMwqd2BAcQtVbC317E0NG?= =?utf-8?q?Blq6cJCMJE5dwao+Q7TnmHPFFDj4uC+q+l4rRAMUBT0NrRdyxPgxoY+D3UTFfD956?= =?utf-8?q?7yEdgx1GCspHUteLuHBZ5E4m1w7yLUzExpu5Dp4rPA3n00qZgSAUaalmUUf06w2va?= =?utf-8?q?c/8BsFXkKtw+Qy7p8t0HaAczrpZO320z51ebFB4SZxg8nandqxz6t8HFVhRdZHJ2B?= =?utf-8?q?zOGslACY60Jh4TE/XdCEqaFzhZINyB0x5DnAXyprvjdjdsahb10vZprUPXqastsSa?= =?utf-8?q?Qrg626QEb9UlN18PE1h1P1QHa4qKasnMGhKuNf8vex7pW3gt8OmVDHl/UxUqvHKKb?= =?utf-8?q?RkjbzFWx6PVclCavdylyl5eda4xtguzP4NX5fmwGyITaBp4tJFSBQ0VtJWwn6+Qcs?= =?utf-8?q?pkiLwm3PzA5nBrbf9jk4TvpXKCBvJ8RA5HilPCzLlZ+jUuApel0vNSk1XlwyfFJ6U?= =?utf-8?q?63AjPGFY/iEDec6Jn019VbqzeunKz/W+Kww3X3SOWzowiovRUwib3f637tAo6YTVJ?= =?utf-8?q?i0UvUVnlTDAlW6?= X-MS-Exchange-CrossTenant-Network-Message-Id: c3f6c4db-9226-4c75-9e5a-08d8fe84cd99 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:41.2839 (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: x0AO5Pq5+kolurdDtasd6/dgSgBN99V8Oh/C43+OSRqVuYZNeNbOg1RaXlAzQ9eFMoUxQUfjf3GoMyCvdsZZHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Such helper is very similar to the existing xc_set_domain_cpu_policy interface, but takes an opaque xc_cpu_policy_t instead of arrays of CPUID leaves and MSRs. No callers of the interface introduced in this patch. Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index e9a86d63bad..27cec1b93ff 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2601,6 +2601,8 @@ 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, + const 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, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 208a247bb6e..8b48c51a8ee 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -757,6 +757,35 @@ int xc_cpu_policy_get_domain(xc_interface *xch, uint32_t domid, return rc; } +int xc_cpu_policy_set_domain(xc_interface *xch, uint32_t domid, + const xc_cpu_policy_t policy) +{ + uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; + unsigned int nr_leaves = ARRAY_SIZE(policy->leaves); + unsigned int nr_entries = ARRAY_SIZE(policy->entries); + int rc; + + rc = xc_cpu_policy_serialise(xch, policy, policy->leaves, &nr_leaves, + policy->entries, &nr_entries); + if ( rc ) + return rc; + + rc = xc_set_domain_cpu_policy(xch, domid, nr_leaves, policy->leaves, + nr_entries, policy->entries, + &err_leaf, &err_subleaf, &err_msr); + if ( rc ) + { + ERROR("Failed to set domain %u policy (%d = %s)", domid, -rc, + strerror(-rc)); + if ( err_leaf != -1 ) + ERROR("CPUID leaf %u subleaf %u", err_leaf, err_subleaf); + if ( err_msr != -1 ) + ERROR("MSR index %#x\n", err_msr); + } + + return rc; +} + int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t p, xen_cpuid_leaf_t *leaves, uint32_t *nr_leaves, xen_msr_entry_t *msrs, uint32_t *nr_msrs) From patchwork Tue Apr 13 14:01:27 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: 12200633 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.7 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,URIBL_BLOCKED, 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 DFA5BC433ED for ; Tue, 13 Apr 2021 14:03:04 +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 8E6B361206 for ; Tue, 13 Apr 2021 14:03:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E6B361206 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.109791.209600 (Exim 4.92) (envelope-from ) id 1lWJcz-0005WY-A1; Tue, 13 Apr 2021 14:02:53 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109791.209600; Tue, 13 Apr 2021 14:02: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 1lWJcz-0005WO-6r; Tue, 13 Apr 2021 14:02:53 +0000 Received: by outflank-mailman (input) for mailman id 109791; Tue, 13 Apr 2021 14:02:52 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJcy-0005VP-88 for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:52 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 4c4f8e8f-c4e2-46cc-88fb-18f4bbd2e007; Tue, 13 Apr 2021 14:02:51 +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: 4c4f8e8f-c4e2-46cc-88fb-18f4bbd2e007 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322571; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=LlfT1DWe4NTaP55AtYF0ZPiSw7w08SLaktbWPptC3lk=; b=ReSNqZ82stdFrOIXSPvUnQk/Lm8rW2FEszCM1Z2M4ahUasIBASaDwzAy UppZHgK3t0hqLdJWPVJe9GKLOzIBWtAr/v0fSM/oCUF3QKaRp+3nksfoD vudgZiEZ2l3EcMlXaZdzE4VeQPlgXOnW+voEZ4n7UmM+0zICBe7YldIsl Q=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 1jvGi0w09W/ulosaOf2u+LuUA9Un+Hj3/H7riKjtwACkTx69RrnJRy8JGt2HBoBDZw5B4zm8yi cndbThvbg3PmfINl05LA+y1Eb9tNiYDqYDS4f5fui1IdQEjRALmEOOJiNXtIglc53tG+ehiHU5 CdTurR+xADd2YE2LeWFUh/cxCzqTm3n03n7rCYpWe7Ll8SA527NQRebCf/tIseZOM8nE6RRlJb Uc01aP4Xa64Y5JsN3We79LrznI/Su2XMVYN2MYOrp6q3mZaDznfL0CEMV61MHrE3DVuIWxyPHR 2Wo= X-SBRS: 5.2 X-MesageID: 41476493 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:HljoC6qrjcCs8YOYIWVgQ9UaV5vxL9V00zAX/kB9WHVpW+SFis Gjm+ka3xfoiDAXHEotg8yEJbPoex7h3LRy5pQcOqrnYRn+tAKTXeRfxKbB4xmlIS3x8eZByb xtGpIVNPTcBUV35PyU3CCWCNAlqePozImNpcPzi0hgVhtrbaYI1XYaNi++HldtTAdLQboVfa D92uN9qzCteWsaY62AbxFoY8H5q8DWj5WjWBYaBnccgzWmty+i67LxDnGjr3Qjeg5IqI1CzU H11zbXy4/mmPG9xx/a2Qbonu5rseqk8PRvLoihjsAULx/llwqnYp9wMofywQwdkaWUx3sB1P XKvhc8L+R/gkmhAl2dkF/W9CTLlBYo9nP4xleTjRLY0LPEbQN/MeVtr8Z9UHLimi4dleA56o 1n9SalkqASKhX6kCH097HzJmlXv3vxm1UOu6oulXBFOLFuD4N5nMgk025+NowPJy7+4JBPKp gUMOjsoMxbdl6XdBnizw9S6e3pWnwyGyGPSVQZtvqU1CBLnGt4w1Fw/r1noks9 X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41476493" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jc/rg7PTxVuMryOpNfOnTx6MKW5xHEACJNAVjF7sUjJaKMViygvNw6LTsl/q+OFX0xFJ9CWl+2dvSI7PPI4sfblY8fUuSQZVKhddNs0mwyexDL1iM6tnHCtYTTfx1XaEApEppKFATeICGQearybm7VMma+yNqrsUaVqDnh3lwiz0fci0zhhN4A6bLAWiCaDh1YW38GZ4ylZoG0X+0GBNZZ8BP6n8zWADjMWq0O2m4jSJFx8A8AOc5DIVvzFUF+6TjfM4VabLLX4wiDYb6y3zDTsWCGCYi8JkaX91+3bYC/Is3S/v8jTrBTysy6r5f9hV4+Q2mNvMmyqt4bME0yXXZw== 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=i3gNWM7lFDWsx1HrL86tq3Osjyogq5McpScOb4qDlhk=; b=fr7mU9a7uC95iKDbvQjRtR/mP95CAIUjOP2ULWOF9cx2rn5h/mF3vqSvtZpFU4qzmYBFN7e7somKfkJwM66F0jTgVh35eHQryV0vt5Hy5jIn8pL5IB30Ro4TIzEbadkQGbXSfoIqoUefQZX7Sl5BWWvNkl48GEzPR1fqQm+DZsUK7kZ2bXymTbeBBSy1ivmYjAT2unLYdc/uMmFH0cc9ITZlzW+b7r3aYctxtQn2Qsy0Wpv+nkWcS+cmJ4G3NiQ8SmO6BqLdZnEHkBweaIRGKf1joLU3LsppzIvaVziZHf9hdlhZdlqxJdjEi3cUwCtkeQEHjlyGxPpIpdcupUo9wA== 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=i3gNWM7lFDWsx1HrL86tq3Osjyogq5McpScOb4qDlhk=; b=ajx0fmlhrLENhLz3hLRHQAHuvTX7t5N2/8xz7FJWr0ORxd273ujV1RWmRn9uqfdIYjVQwzm9jXPE29H8mRq/iiOzQNsTZMetsjOOKfV7JgnhvP/eB5w+wDGYcxn7Ywzk/u8v1DG7DvQeF6/gmiWhjxA+6nh/qufHcnZ3Mia9HgY= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 09/21] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Date: Tue, 13 Apr 2021 16:01:27 +0200 Message-ID: <20210413140140.73690-10-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0117.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::33) 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: 3d2b021c-64b8-4464-8754-08d8fe84d0d3 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eUH13AqT7QdOPGOu+ebdMZelBXnIr19GCdgIiy8xEPia6uGTpuG43d01pFF3L2o4UauhteEqou+ETAuTZ3rZQS5WXgAF+ovKM/H1QqFqueCjcpw6yHr25Xcu/nSu+nazPHO7DfaPJHtadsgFo/xHxw4wWO/UZSLAJylgh3vnKyNG8ZAa9ucoDrnKphQ5RbkqQcSiwLOse5l9c8xORgvjNwfn+NAQ8CGxe26t8k/fw2VmXPJZUSJEaUAelCNPDpOEVIeY52JYaRpnilKh4OMCDeAZgJJelubwSvbqCil0dXyOHDE4y3d+5lyvrKmbD37UcT6+qZwnsCNvHbTHMQSf3BdPKi6KxqYLsuXt0AezRwqvMh1TpZ4lhLN0JO9lvKK9CkfZSRoBRT8nB76suM2R4jHyrgLjeXr6r3V4qRpIWHIDni4kLqDaJcnCf28M0Y+dLEievCnYhoINDbE7zCT4TxBMbWlSIyyo30/IUOFq5D8BrQubDYOdPlUWvuxzEnCxIwxUNMVohnV+AS2SHvftNbsVSyrWKOAPFcTVOp1gpYelalG8scwxh00I+rKsjJB0qPZRz+fpA7kskE8sPBhPNA== 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(83380400001)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?NqsAQiIx7/yGQIQrgdyt2IQE7lF9q4?= =?utf-8?q?JXMXJoP4Wk2e+9GSgNUJGVunkFmCB2TSmCnOMvrlbVdRJSMKj5HyTyRbH0I9nPigP?= =?utf-8?q?XTZG7uZdhyKHwTJmwhp/kg/aCM8tfmNct7e9hOYV972R2Mxr9pjXr3JrEFHbnKr82?= =?utf-8?q?NiIfqDV8Y1yENcBGEfkzlU8a/4mOFdKngzAglWnjraOEy+xoVauEK9vwcHsrwiM5s?= =?utf-8?q?TYwejHTcVuiOLczfjBYgD7DdwZkEt3K7I4mlindOfjOIeFo0H9Y7JJX/VTrsHAYRp?= =?utf-8?q?I43deKCyYqVmmxwlpAUJLcPV1z9Iyh4j4Iq+JmMYAWaS6WOiK8HJ2ndODus5DDDSB?= =?utf-8?q?ojl93k3new5W/oa1hkspkPoDRxVdhpb3uablTPnvq+gXoypzKXXmn4Zam/y33EnZu?= =?utf-8?q?Jw7utAxKp+j5PMKCoO/JjmGmzU7F644zWf25gXi0qpE5xBNgCy1eW2ygziFcG2L42?= =?utf-8?q?KGW/jyQYrLr4wjZ32DAH0apwtd8XBiw8fMe2XqWXWD4KNRdQ3lQ2vhLb1NPdqQtfP?= =?utf-8?q?mvN/yCXArNXAfv+NJPKtRZXj0UoSm+Kh04vDRgd39EC6emr5FLNIkzDTiusbE6iKf?= =?utf-8?q?bcW/iK1AXir0sDiGIQyiFwILvKsmgwCnwoanAyit6DUloHZeQQB10Db0pCJBSHPKE?= =?utf-8?q?K4Lh8q0DQTYiBz42WzGebzf+Bk9pFrsC0ZMnvSSSzTzIb4sV4/BUJjSqk44XftYK4?= =?utf-8?q?2zo9OIIr2Iqn6wziKe7zs5gSgpTbGjh0X2sGUty9zhUWv+2RKpazCHOVtDtImeTIS?= =?utf-8?q?u4GT6bLjmK2p97C7Mm6qnbhSRz2YWRoV378bmUwOJ7ERrPPP/BHOPyzi9i1NWy4Qb?= =?utf-8?q?tjJohaHUM1PTYy/CfjzjSHIDcnJy4PqUbOX5cpZY0ZWaI5bVaZACc5zpV0nc+MVCw?= =?utf-8?q?aAELSLgvDIdA4NVhllUHVCjSEOiAKtn58rw4ukWbO0SUliJNR/K1tTM4IehjCmREt?= =?utf-8?q?C/8Um9o+LmWHdKUIuk/0U8xR1OoY9joS/qPz5zztdU0nL37HUHpFoBGR7zLDj4i0Z?= =?utf-8?q?rm1dsU+EZqfOTECumZ+RCQ2LOtVkfh+hZjhzo/aq9UwTon9hOp0y1nWXonXCWrR4l?= =?utf-8?q?v+UjAj+taF1uxYTVTxOq0N+9MRIx9pYXQctrFKXGffTiSnuxcobi8MUqhCuvJutoZ?= =?utf-8?q?rVwinuC9oQ/FJLsspti4fgLDiiFLBkAQQISQ4td6ekdDrZVD36CKbH0qvu6ibg/Vj?= =?utf-8?q?5GNPkEP5eRN+zHb/EGKen+lEQbKbuDScIesN4hiqAqyvNGZR8sp4qYp4n/nvnXFMN?= =?utf-8?q?4MO+XP2zon8V+b?= X-MS-Exchange-CrossTenant-Network-Message-Id: 3d2b021c-64b8-4464-8754-08d8fe84d0d3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:46.7732 (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: 1osmuPCmby5rrRI2DCxLFzboJ1+tLtDJfUTGOjHYNXo0FM3GBvPsp1JClQZir5IxPJJp9PP59r3vy3D2xPXaKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Introduce an interface that returns a specific leaf/subleaf from a cpu policy in xen_cpuid_leaf_t format. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Note that callers of find_leaf need to be slightly adjusted to use the new helper parameters. Signed-off-by: Roger Pau Monné --- Changes since v1: - Use find leaf. --- tools/include/xenctrl.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 38 ++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 27cec1b93ff..cbca7209e34 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2608,6 +2608,9 @@ int xc_cpu_policy_set_domain(xc_interface *xch, uint32_t domid, 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_get_cpuid(xc_interface *xch, const xc_cpu_policy_t policy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out); int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 8b48c51a8ee..d146c5bbc99 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -280,9 +280,9 @@ static int compare_leaves(const void *l, const void *r) static xen_cpuid_leaf_t *find_leaf( xen_cpuid_leaf_t *leaves, unsigned int nr_leaves, - const struct xc_xend_cpuid *xend) + unsigned int leaf, unsigned int subleaf) { - const xen_cpuid_leaf_t key = { xend->leaf, xend->subleaf }; + const xen_cpuid_leaf_t key = { leaf, subleaf }; return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leaves); } @@ -365,9 +365,12 @@ static int xc_cpuid_xend_policy( rc = -EINVAL; for ( ; xend->leaf != XEN_CPUID_INPUT_UNUSED; ++xend ) { - xen_cpuid_leaf_t *cur_leaf = find_leaf(cur, nr_cur, xend); - const xen_cpuid_leaf_t *def_leaf = find_leaf(def, nr_def, xend); - const xen_cpuid_leaf_t *host_leaf = find_leaf(host, nr_host, xend); + xen_cpuid_leaf_t *cur_leaf = find_leaf(cur, nr_cur, + xend->leaf, xend->subleaf); + const xen_cpuid_leaf_t *def_leaf = find_leaf(def, nr_def, + xend->leaf, xend->subleaf); + const xen_cpuid_leaf_t *host_leaf = find_leaf(host, nr_host, xend->leaf, + xend->subleaf); if ( cur_leaf == NULL || def_leaf == NULL || host_leaf == NULL ) { @@ -817,3 +820,28 @@ int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t p, errno = 0; return 0; } + +int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t policy, + uint32_t leaf, uint32_t subleaf, + xen_cpuid_leaf_t *out) +{ + unsigned int nr_leaves = ARRAY_SIZE(policy->leaves); + xen_cpuid_leaf_t *tmp; + int rc; + + rc = xc_cpu_policy_serialise(xch, policy, policy->leaves, &nr_leaves, + NULL, 0); + if ( rc ) + return rc; + + tmp = find_leaf(policy->leaves, nr_leaves, leaf, subleaf); + if ( !tmp ) + { + /* Unable to find a matching leaf. */ + errno = ENOENT; + return -1; + } + + *out = *tmp; + return 0; +} From patchwork Tue Apr 13 14:01:28 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: 12200635 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.7 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,URIBL_BLOCKED, 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 A8DC9C433B4 for ; Tue, 13 Apr 2021 14:03:09 +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 5BD9B61206 for ; Tue, 13 Apr 2021 14:03:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5BD9B61206 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.109794.209613 (Exim 4.92) (envelope-from ) id 1lWJd3-0005av-MC; Tue, 13 Apr 2021 14:02:57 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109794.209613; Tue, 13 Apr 2021 14:02: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 1lWJd3-0005am-IC; Tue, 13 Apr 2021 14:02:57 +0000 Received: by outflank-mailman (input) for mailman id 109794; Tue, 13 Apr 2021 14:02:55 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJd1-0005VP-Lw for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:02:55 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e7aa8d1c-a197-4003-8b03-da7179619109; Tue, 13 Apr 2021 14:02:54 +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: e7aa8d1c-a197-4003-8b03-da7179619109 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322574; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=WrgzclkoEzTDmdIEIC5OF4WYt487TOXaBKzV0255Ehc=; b=cW1DwgZ2EH4UaWnCeb5YmY0ma/ucANYMiazLQj9leA1o7wQJIhnxp340 XFLudQOYx9/IbZ54jg6GJfv2jlSY53wCsbM8DiaTnPghqRGYDPirdGeja tfWETNdq3p62MkCZSnzNg6uMt7QIRBkXxCiEHxMoSUAnvyYHUo+BdHUAZ w=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 9xL1XWWUHkQE602k0AFIqXPVi8BFPmApmrtre0or53xCSVo4VK9l4NvIEvvUpAmP94oQ1q5YVd 3pAyPRn22vQf8wQh15DiL8tST94jxiW0X9pUxfnFqtinaWyVkhXgarB1FlMOji7lVqp5wHXGyl 5dfDtbOmoSPsdxvcUxf+SMt4r9y9g5S5bHSQ+3QHL1mcPSJWaRXQMPmF0/d6P1H0n8t71yV+1s jO7vxeKYFD6Pjm1+Heb2SOdB/a9IwzYcZiamajbIz2lh/XcXI3KCUzOYOmWhA5lHsoFZhndlwF Oo8= X-SBRS: 5.2 X-MesageID: 41476507 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:nS7wcq4XsyIXVmxItQPXwU2EI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoexzh3LZPy800Ma25VAfr/FGpIoZr8Jf4z1TbdxHW3tV2kZ 1te60WMrDNJHBnkMf35xS5Gd48wN+BtJuln/va0m0Fd2BXQotLhj0JbjqzOEtwWQVAGN4FD5 Ka/MVKvH6Nfn4QY8S9CBA+LpT+jvfMk4/rZgNDOg4/5GC1/E6VwZPZMzzd5BcRVDtT3awvmF KqryXV7riu2svLrCP0+HTU6/1t6bnc4/tFQPeBk80Ebgjr4zzYH7hJf52nkHQLrPq06FAs+e O80ysIG8ho8XveciWUjHLWqnDd+Q0j4XPj1lOU6EGLyaeSJENYerh8rLlUfRfD500rsMsU6t Mw40uju4dKFhSFpSzh5rHzJmBXv3Cpqnkvm/N7tQ05baIibtZq3Oki1XIQOpIBECXm0ZsgAe ljAerNjcwmD2+yXjT3uHJiz8erWWl2NhCaQlIassjQ6DROmmtlpnFoiPA3rzMlztYQWpNE7+ PLPuBBk6xPdNYfaeZYCP0aScW6J2TRSXv3QS2vCGWiMJtCF2PGqpbx7rlwzvqtYoY0wJw7n4 mEeE9EtEYpEnieSfGm7dluyFTgUW+9VTPixoV1/J5ioIDxQ7LtLGmqVE0uqc29uP8Sa/erGs qbCdZzObvOPGHuEYFG00nVQJ9JM0QTV8UTp5IVQFSLjsXXKpD7l+DSffrJTYCdUwoMayfaOD 8uTTLzLMJP4gSAQXnjmiXcXHvrZwje8PtLYe3n1tlW7LJIGpxHswATh1j8zNqMMyd+vqs/e1 Y7BLvml6i8tFSn5Gqg1RQsBjNtSmJupJnwWXJDogEHd2nud6wYhtmZcWdOmFyKOwF4VMGTNA JEvVx49eaWIvWrtG4fIuPiFljfo2oYpXqMQZtZsLaE/93ZdpQxCYtjfrdwGwXNHxlcgh1rt2 9HVQ8BSibkZ3DToJTgqKZRKPDUdtF6jgvuC9VTs2jjuUKVotxqemEWRAe0UcmcgR8nQh1dgl EZyd5ZvJOw3RKUbUcviuUxN1NBLECaGqhPAgi+aIJIobzzYw1rQWCWhTuVtgErdgPRhjYvr1 2kCRfRVeDAA1JbtHwd6Krs/V9uXki2fk57aBlBwMZAPFWDnkw2/f6AZ6K13WfUV0ALxfsFNi rZJREIJBl1+tyx3BmJuTqLGHk83K8yNujFALlLScCU5lqdbKmz0Y0WFf5d+5hocO30uugQSO SFZku7Kij7B+5B4X3iml8VfA1P7F8qnvPj1Ee7sCyW3HsjDeHTJ1ojbbcBON2Y53XlQfHN8J gRt6NAgcKAdkHKLviBwuXrShQGDDX5i2u/VfspppBZprhajso6I7DrFR/zkEha1xA/JvrunE wQQK5H8KnMU7UfCvA6SmZ8xB4Vj9yBI0sgjxzuDsI/dV8riWXHP9nh2cu+lZMfRmmIpA79Ij CkglVg1saAeyuIzrgBDa0sZUxQdUgn8XxnldnyPbH4OUGPd+tZ+kC9PWL4WLhBSLKdEbFVih ph+dmHk6u2cCX/sTqg8AdTE+Zr82y9R9m1Dx/JMelU88aiMVDJu5CU2qeI/X7KYAr+TV8Zi4 1DfVERacoGqgBKtvxJ7gGCDortokwklFNC5ypAjVCF4Pn+3Fvm X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41476507" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LhusGuN/wA9Tg9JPTTttwO4yzdLd7ohDdhBwi6H2xR0DtA2q6lspK3C7RgcAfN95f3PM35XUBaHdYb2swDfzcButSV61nJQwjNKnSSDztIWaNpGOBnMv70KQeSqyl0Af0eX4E6149+V8TDC0CZ16t/QSj4csESHaSQ820g18qnVzm08Vga0Oro7hSI3r6yQlPSLJ37ADB3c/saCTwr5WTjecA7kZVaqYB8bnXZzwagAJ1AZT4OqOEAnmFCh/egOH48hXGe5ACH3ICKTbSGtavUNjVnEnpxzjIY/FHE2XUwHJhdMRe8jFlQO5wcEgldfAI76TqJSla6Ms3Q5tN1ZB6w== 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=QdjL53sxfL72OocLfvFBEO6t+rw9rfdKFRBd12scbro=; b=RzoL7xPis1aErWqhZMWfzxp0MhJGbRSVrXuX86GizC9zdFuKK5PrD4FW7oHCXQau+C6uQuOVvZH4brCz+uEb7+YKP8Pot+gOnl37hIRIja77ahoKD2fgjjZM0kD6nsTq7AespkDZxs7/b8O+fPwHhnfV3XztLiBomGtKguOsFJ3Iw6+vQDzEHqKHQVqKW1EtVGPp8mXg9QyXHoGBoJdzRu9xOgsLpXkudQQ+MwBrM1nF2hUH6BViTX3AwhV4r5kMxuOHY++sfnZ4zz3StiIDY7vS46ovsITJ4x7sfjqRd3CvgkkZWuMqklwGp76vOlFM8mz8XHDGy9pZ6ofWtlIdPQ== 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=QdjL53sxfL72OocLfvFBEO6t+rw9rfdKFRBd12scbro=; b=d5ZVAc8StDCLtYrb/sD8RTJpFjsT+PxBY/sqXVPPRX5ZE68VmABGglQRVQnqX4n9gW7BXO8tMDYRw0kF0YuGZpXLTcG6TLViEjy0mNyQXqD7HFNpEEP8U6fis/xsvqXFOeTuSHvtWBx/NBFZ7L13nK662I1Spt/g8ZQuzkug1BA= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Jan Beulich , Wei Liu , Ian Jackson Subject: [PATCH v2 10/21] tests/cpu-policy: add sorted MSR test Date: Tue, 13 Apr 2021 16:01:28 +0200 Message-ID: <20210413140140.73690-11-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0114.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::30) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5d3d20d3-3ccb-41f1-7c39-08d8fe84d3f1 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2276; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 48VIJXz3jh4b7mENzd/m/UVziWlbcSQy302XrYpX4/Nn51JaBAokO5ic5orHVyC/xAggYHIQJN/ufOaZJjPGe6kP/R1+vdmMtNLYwiNSmRwjR//0t0N3gVOs2asPfnazkKyNhFpsW7GhmtsR8nsHA2vcNNQ2tlMFeBgktQMyhAR04wTbbEpPp+YiSnk/DmWhLy2RLRjgU+1+A1tGqx5zAs8KtktPsMS0WOMmjmv9t5pHSGUZnYCcefj7sNnOFiL7OMWE40M0OwXqaYfqlRmMFQSQI9HUmZLGXpXg3lD6p0z8oFKhGLQzc1z8qeY0Rxl+ZQG0WWhgRWUtV1os0CaKk/YCSH+Hv1ISqrvUfs3pQ6tXrjRw4zkEeSETnzcxT4kf8RtbwyHKn3TSQwNjY4t4naPVVt6bX5M+AcA8CXJ2jOcyxK8wPXnkxs3eP9RxG5781ycloM1tzE0Fa6gfq8UKeGVJBinftOSMN3HCDXfka4IIGAJKN5rzVVTyGPOc3hKc7O3mMInGLiz0CJ2IWfSKexeEv5DVfnajMkniHIBOSe8X9WuQennAzCArsa5Ar+/w5MLBmKOrM7tQGayJSDWTFA== 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?1GEFkMZmXtjmboY1W9a0DL+6BKgbLv?= =?utf-8?q?ROAdwZcNZK+iK7p9lQvY3Hu/nv6N+HmNR7gSlQy1UUu5hiiSRxXxdtxhGYfUcgIyq?= =?utf-8?q?mz1qiXzM8mGuZK1QEjbZumpeTZ/uSyJcbbVht7qKCCmlrvcy570L/QCodpKPI7J/I?= =?utf-8?q?1rrJ8khDcXDQaJAriLO/UbUEoRed7rK2/sVjodP/CCoxiGYysfZLK/PxyPI5caD3+?= =?utf-8?q?O8CYKCQmAf3ZJk/GibNGjVlyDcZ0EBTGjTMg2DDIPxGrpiJFu6atKWQdVcWPlDiwZ?= =?utf-8?q?0SUufT7BOh3d/RyYJRTDDJL9ewyfqR8otQpOX+e59IKxgegotoDsF5ATCpLbazppr?= =?utf-8?q?/D9bQK2iYXusaL4eTniWgpZ1bbN42x0CJDesRnFgIjG1Ot1kpGG5yIm4XbN9N0eQy?= =?utf-8?q?c0wiwHluqb2qFW1bd1PQBfqDj7MluikCh7vZZFbVBOpNr2uogYeu9/UO+zS32KuZf?= =?utf-8?q?roQlQwOscrTUukqeosEQUV3EnAXfv5/Ud50UO7iUbbMbn5AJ1OUSujUoqtMLEOz75?= =?utf-8?q?etxrDaCpRlV3AqwDA2TaqupKFR1XcMQ6uLr5pw+AQ53fzE9kstJ0CYbTK8wOSUmao?= =?utf-8?q?vGbue/BYDvZu5KcNh+RQq3JqHUG5XrkhsjcBUDVMVIqPw7DmK9sMeOgd6wUaBgRNh?= =?utf-8?q?duw74O4jYINb1Jr52k2MG0f6A7pyWq6OlhOPxJdU7+9Xf+ii0erINvihQFm1WjHNo?= =?utf-8?q?ydOQeQxhMpmH9pKUmsvh0AP3POrlsoxYKegHvgrzsDqVZJJSnd40Sqs3fM9mKZ4x2?= =?utf-8?q?Bn1rCE7RJUy4x4rtNgLO8WNle4bQvnrpUzDHbOx2rbLVMIAwh3sGJfvSwJJZzhf0d?= =?utf-8?q?twwW572bhoIFqM0vWbF6CEM+KC2mVQ+9D5EAqGLQI3Q1/cgurZG43ekD2ZCORkyv5?= =?utf-8?q?QJuLNTqwT4hBFA9gr6ZjCSgniLKnQO3303MZS4HyBFAQvWQQ3zL5LWN+Hhc9kNEUi?= =?utf-8?q?mShNIfCDUZUJhjqc0VIRHwCeb2tzWY3hTgAGWAxtyGEMGzM7rLaLJIEYwZyyCZwPm?= =?utf-8?q?sY/O9KTpYlWEjLsxXSTG4l9RzECHPhwaA0W9v6WhyWzfnz8p5YvRpdmljRQ51xztq?= =?utf-8?q?1XS9M9y8JQwHFx4IyGOaOOFWGPVBaoJy7dTAo9eC9YSHiWKS3/HVtdH9Zr/u13/6d?= =?utf-8?q?g6C4/uZc9vXWGWIpu6JdV73ExkO8h7BMfnd46x2dlhz3aIFFezrNoc4HE6DfLZz2k?= =?utf-8?q?I5BIULOpAC1olUG5D1dbpYpy0JUJNkYgfnBQSW+rs6wBiBMLYwp7ActEBa2GZQadL?= =?utf-8?q?oH01iOmX+e4ELx?= X-MS-Exchange-CrossTenant-Network-Message-Id: 5d3d20d3-3ccb-41f1-7c39-08d8fe84d3f1 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:51.9863 (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: EmfiLvtKDedysUSzzvY4Jc2J7Ns8idIQXjQhlnoWFgXkGRrh2y1DJFMS0Qv2yCBzZ2gYqJYwgLmCYXqMvwYEfg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Further changes will rely on MSR entries being sorted, so add a test to assert it. Signed-off-by: Roger Pau Monné --- Changes since v1: - New in this version. --- tools/tests/cpu-policy/test-cpu-policy.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c index 0fa209f1ea7..ed450a09970 100644 --- a/tools/tests/cpu-policy/test-cpu-policy.c +++ b/tools/tests/cpu-policy/test-cpu-policy.c @@ -86,6 +86,16 @@ static bool leaves_are_sorted(const xen_cpuid_leaf_t *leaves, unsigned int nr) return true; } +static bool msrs_are_sorted(const xen_msr_entry_t *entries, unsigned int nr) +{ + for ( unsigned int i = 1; i < nr; ++i ) + /* MSR index went backwards => not sorted. */ + if ( entries[i - 1].idx > entries[i].idx ) + return false; + + return true; +} + static void test_cpuid_current(void) { struct cpuid_policy p; @@ -270,6 +280,13 @@ static void test_msr_serialise_success(void) goto test_done; } + if ( !msrs_are_sorted(msrs, nr) ) + { + fail(" Test %s, MSR entries not sorted\n", + t->name); + goto test_done; + } + test_done: free(msrs); } From patchwork Tue Apr 13 14:01:29 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: 12200637 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.7 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,URIBL_BLOCKED, 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 1161FC433ED for ; Tue, 13 Apr 2021 14:03:12 +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 B670D61242 for ; Tue, 13 Apr 2021 14:03:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B670D61242 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.109798.209625 (Exim 4.92) (envelope-from ) id 1lWJd8-0005h1-4R; Tue, 13 Apr 2021 14:03:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109798.209625; Tue, 13 Apr 2021 14:03: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 1lWJd8-0005gt-1A; Tue, 13 Apr 2021 14:03:02 +0000 Received: by outflank-mailman (input) for mailman id 109798; Tue, 13 Apr 2021 14:03:01 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJd7-0005gB-BP for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:01 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d74273ce-9fab-49c4-b216-cdc065d6f58d; Tue, 13 Apr 2021 14:03:00 +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: d74273ce-9fab-49c4-b216-cdc065d6f58d DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322580; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=JackXKtu3s4tq3Ai8UONDkNKZ36QopXBh8RsfgQrQMM=; b=bvkEMSWIpf+eqAWHvyk7yRy+AfkHksIf8ycrfqGLYoMSg71QlOjvgycx MRgq1hluWdnUly+Pj17QowuwiEqdy99x/UU8dgTauO3Xt1vrYR/B16I12 qAmO+oGIZ5YjtVcesd7DU+rH+cijJK8PjMupxi/kpJedZXoLn0sHJxDMe o=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: LD/cCgzU20nEzbpxCDgNVbICS5WNqeiSyyqTo6PDtO4Z9Bwbk9Z3s5R1EU0QsipCkVHlLndAv1 5XbpOlpILuTnalg0XQ7a+cgvjX0+OvjQ2YA2E0WdrojmwBMzby3vmHSAE9JG8LQSIvT/jBUdp7 lxhhDl6DmoIPkEhrb/brB/3bsvlOPCz3zH1pyoPVHx58AZyFm/HkU21yre+2ouxEdpewNlJnCC Mh9M+7lcodjEk8p9sZgJ1odEwSEtNCbQqOfpjr9OtD/rnqb/5o0iGbC6U48X6ucK78O8Ax0A59 +8M= X-SBRS: 5.2 X-MesageID: 42956030 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:T0IZcKhMHAzHEeHXjV0CZE9l83BQX19w3DAbvn1ZSRFFG/Gwv/ uF2NwGyB75jysQUnk8mdaGfJKNW2/Y6IQd2+YsFJ+Ydk3DtHGzJI9vqbHjzTrpBjHk+odmuZ tIW5NVTOf9BV0St6vHySGlDtctx8SG+qi0heHYi0xgVx1udrsI1WZEIyywe3cGIDVuL5w/CZ aa+457vDKmY3sadYCWAXMCUujFqbTw5e7bSDQBAAMq7xTLsCOw5NfBYmWl9zo9cxcK+7ct9m DZjxf0j5/Mj9iXwgLRvlWjiah+t8DmzrJ4da6xo+gTbg7hkwO5ILlmMofyxwwdhMGKxBIUnM LXoxEmVv4Dm0/5Wm2uuxPi103B/V8Vmgbf4GSVi3fivsD1LQhSY6Eq5fM7A2nkwnEts91m3K VA03jxjessMTr6kDng/N+Nbhl2lyOP0AsfuNQOhH9SW5Z2Us43kaUj+ipuYfI9NRO/woUmHO 5yNdrb9fZbfHiLBkqpwFVH8ZiCWG8+EQyBRVVHksuJ0yJOlHQ89EcAwtcD901wuK4Vet1h3a DpI65onLZBQos/ar98Pv4IRY+SBnbWSRzBHWqOKT3cZe46EkOIj6SyzKQ+5emsdpBN5oA1go 79XFRRsnN3U17yCOWVtac7sizlcSGYZ3DA28te7592tvnXX7zwKxCOT1gojo+Jv+gfOMvGQP y+UagmQsPLHC/LI8Jkzgf+U55dJT01S8sOoOs2XFqIv4blMYvvmuvHcOvCBbbkHDo+M1mPQE crbXzWHoFt/0qrUnj3jFz6QHX2YHHy+pp2Dez78oEouc0wH7wJljJQpUWy58mNJzEHmLcxZl FCLLTulb7+gWG3+G3P/lh4IxY1NDcQ3JzQF1dx4SMaOUL9drgO//+Ff3pJ4XeBLhhjC+TbDR BYvFYy3a6sNZSfyWQDBrucQyynpkpWgEjPY4YXm6WF68ugUIg/FIwaVKt4EhiOMQd0lwZsoG JqcxQFWUfbKzPrhcye/d8pLdCaU+M5rBagIMZSp36an16bv9sTSnwSWCPrbdSamj80Rz1fhk R49ogWhLboo0fpFUIPxMADdHFcYmWeB7xLSCCIfp9dlLzQdAZsdmuSnjCBhxYvem3lylUKig XaXF6pUMCOJmAYlmFT067s/l8xTGmbck5qQl1RsIF2Fw39yz1O+N7OQpD2/3qaa1MEzO1YDS rMZiEKJBhyg/qt0gSOpTqEHXI655knM+DHFo4/e7XL1n7FEvzPqYg2W9tvuLp1PtHnteEGFd +FcwiONTXiFqcH3ReWqntNAlgDlFAU1dfTnDvr42iz0CRhXb78IFF6S6oaJN/ZxW7+XPqM2I h4i9VwnebYCBSEVve2jYXsKxhEIVfvhETzaccCg5Vdp7gzu7t+BIOza0qB6Fh3mDEFaP7pn0 YfSplh6L/POoVTb9UfEhgpi2YBpZCqFg8XqQT4De81QEE1g1LaN92P5aDUqbBHODz3mCLAfX 2W8yhQ5J7+LlO+/I9fL6I7OmJNbkcgrFxk4eOZboXVYT/aPd1rzR6fMnWndqVaR7XAMbIMrg xi69XNu+OMbSL31ETxujR8S5g+vlqPcIeXAAiWH/RP/MH/EVOQgrGy6Mr2tQzJc1KAGg0lrL wAU1cRYMRFgiQji4Ny8hHacN2JnmsV131E4T9mkVbx3JOB+2mzJzAeDTHk X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="42956030" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ndQWx12gb9xkL2GKqeL3NpeARs48k7hLbpNcwk5sEAnOrAH/6CNEiqgHWJ2JKBwrocnNULp4An71EFLVvdDE2xFfUejnZfjfT5qFbZXySOZ3ib+nWehsDf8dVnE4Dk8oHoBKF8gel+IyXcdhfus9rvpnV9Q41JySXvKU9+BJ4B+Ij8lch92rcsmRwaQVaklCLdiKUfV0GJzE2q7Thx8fT+ZvZhNYGKwPEv7TTAMBLoPuhyRpFWAo1D+M4q8MZGDPb0kh2c5CR4ThcDRdWYjrnKGMzZgrSvckBc6398bwhsnh17RffNCRo5host+px5DDiiwVpPQVehTi8vYiq409NQ== 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=hKIl+cZikbO/4WJIAGz+bxYAoaTNWAIK2jf+mYY0UCM=; b=OWJQpY6jCTciNieYCrLfl7LWvYD+ngeTTrArie6Jhj1UY5e9i0pskFgwDE4ZFJ9UCdvXYTzTYNWPBexneu78R6WGo6jUqktex5TZnRrSEwcSEluwMNqJuzDU6cNv79zu63IJW6eM56NpXJDZaVJKSm64WdUkn5peZNwYn91fHpYgc2LuQPOz/BBcn43rxYUBVYo6Sm/qkijnXsYVV6bCiGnjASC2XCTIPlrov2RGsdH1vGVetxGBRN8tXkCx6AZVK/ko+sko6eoJRmkWulnFVQuidhCKcSB3r9z0NnYhr8/BfXJ9xn7+IbWtdAz56whI/hxZ+b7bMNe2d3vOLFogvA== 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=hKIl+cZikbO/4WJIAGz+bxYAoaTNWAIK2jf+mYY0UCM=; b=iJfSfWWvXa8cTWHaS2XtydeYO1kTKtb5TZZNJPvMtZYU76hxq+38pBa3YBcJ5F5oa7+Ez8IkspvJA1b+vSGa7vCqQEWqEpgeQ+rDRAt4pELOYqjjrrs7YL33jzBpv5OJrg4YtRDfqcnwE3iQ5fMAnokF5jNjaVwwIq5CLEMGbcc= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 11/21] libs/guest: allow fetching a specific MSR entry from a cpu policy Date: Tue, 13 Apr 2021 16:01:29 +0200 Message-ID: <20210413140140.73690-12-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0097.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:33::13) 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: 11df82a2-ed1d-4bc8-161a-08d8fe84d707 X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QfpM/52ErScc9XWldGLD/ep+j1i1s8B6dJCe6IWKUmFBuMBT9OC15imF/TTXe8rQGOXNtfyRdJGzIK8atK4MKateV5BieaSsODa2T/0nqXQklFDwFW6cslTGsJArA7lYvj0v9jDrbiJ7hFa4aE5yGKAGRHxcLcVfKxiBjmOXXp2S8xS3SggbGgHi7KnUdtrOrBgvt/JZavkuDhm725VuAxubvpogyGK57WvuRooBDj6lPmOS4OzJ3mOyifDsUavzqhHkggE9A8HlgSpz2bAIqLZJZf6K61SiPEBj87WJXXri3IijLEs82Nve33+gBiqXtp92PE7mt7DSMOKzUocEcoqzGCH1i8QK4sJnE9mfAe/3bZ4cdbk63KC8TOwyN1jEnekD9vGLiQKrubXRyOl47ydpZrsWnipVIs+VHiXIlgqyvUBy6fBe9D1HFAp7gsBEoVzh5/TwzHn1DU8nCJ9yzgwEXxbhoUBkez5B6fLNxFvwLZiSxcQvL7q2iJDyU1EzwaDxKsnvK2DRr7sdC4dC9KJr0S9E4p9iiA1ckz0X2I3j5U/A4RqperxUVp3FSShv6Nl7XlAV5h3wBPNuYVPF/w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(1076003)(6666004)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?Ita64cX8B9jE0sWwPYa/tKrFYAlCEb?= =?utf-8?q?lpA0KSGi2zxVB/Q2uy6HhHHykoI5nQu61fO7dlih2gnsuXTZxnmG+grJAA3qcEvGI?= =?utf-8?q?t7rZu0sZiZsugGjofMtGpY1WjPh3BzCnbD1EKL7I5dimjNmCsyoC4n+eJPREJ7ptJ?= =?utf-8?q?GTuGuRzoh7oe6nSDA7Gz4P0L4/vzRBttQc7Nme6LiKt1LBkOl37bjJ5TTiA/9NFwA?= =?utf-8?q?jfe5ZKtmP4Ng1+U11XbfHkR4Kq9L9aDdQ+7Bli7YUqlnud7NndLjMfS+CnoU8Hlc8?= =?utf-8?q?Al7Cb/dyeivpsY/76RgJTaB/ywWHuOzobWfZtSBwEelS/j7RBBfALVuq2Te15kGL8?= =?utf-8?q?/q18mxGLQjUyYcpogF42W9lnL6VCUEJtCtrGGzfEbOUTsrBRJ5ivMgt7ly24pXlq8?= =?utf-8?q?1Rl2U1pHMB9kPVdmiHXc6W5IBACIabWst843PHgF4ItZ4jP1uGfhMo1fAaVe04IE7?= =?utf-8?q?X4sMMfi+qWAYYgciC5Vro6zDMGx/JMeOxwh3eqsq98rlrFV0LOFNdgfoPoVCvcwlh?= =?utf-8?q?n0UV67ah+o+P9XI/fkmopfwh/6+lB1zxrY8oSnqrlwXjOTs5PDFCOBwjoCKR81Lpn?= =?utf-8?q?Wb9V2lfGDF40kMloFwtFsMHBUC6JUmkhKwcF7fbuGE9wlewTJzfR2unvurKLGY5AZ?= =?utf-8?q?ci0r0nI/1Yk2RXSTw5WeDLdjqllCm92e5l8rwqCqE6mgsZMsWmUaRzrEiEwcl5PKB?= =?utf-8?q?DX4zfxga87wFie/ECQ+xtD1Dogn7DKbvuQuEwrlvE0o4LrCyeC1HdV2Cqgrrmndpp?= =?utf-8?q?CglWHrB+rwWA+zoiEmMXjSeHFnH/MdjoKj0etNmYavBWj/bxGGS5S2VlsAjgEN5vc?= =?utf-8?q?IXoBVveVVq5+CJV78NcJVgWuqsaL93V5TUwKFe/euBXlhCLmF4t3lNDomtgn0N/f6?= =?utf-8?q?X0i0iyUIKa28vZOa4J/1EW8Ma9Ty6kLZqkrtm/GOjLzEOUSOHioFipoHJcRiwaqf6?= =?utf-8?q?Ep3l9CqOKkAFjMQYNQBrvD9sJjl5TPgZKN+tHCIYs/7cygUbUCXyw0a26J9wvZgSi?= =?utf-8?q?fsdUhbroA4pREBJmxQeFaHeFvRVv/IxDiQCtILTbgElqbIKRKQ87b+/HS1QL6ysLP?= =?utf-8?q?cOSdgRAx40H5ZidtcorytiQYVmtt9eObR7RivofyTDskM28Hl1x17gNB3vbKFpStG?= =?utf-8?q?/hbDVHKLp55fQjbqT0z+jAuBDsaSN/V8MBX7qE2AOD/8X2n/Zuc9fa6LZAHVqv0zT?= =?utf-8?q?73zCzY5tV5nUDNd+a8O3DdGuJdKGAMfddygIYS8v40r+TJXI9ScOmF6d/PXWr+Tu6?= =?utf-8?q?pHgBYG/tgNUNkY?= X-MS-Exchange-CrossTenant-Network-Message-Id: 11df82a2-ed1d-4bc8-161a-08d8fe84d707 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:02:57.1685 (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: GikvOeyyGXHpjAnq1J/cbYN1eHXKBeFMbZBMxwCnnXEdfQhc1+eEH8y89ekphtv8v5SQ0OG968DIbSG+OnluxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Introduce an interface that returns a specific MSR entry from a cpu policy in xen_msr_entry_t format. Provide a helper to perform a binary search against an array of MSR entries. This is useful to callers can peek data from the opaque xc_cpu_policy_t type. No caller of the interface introduced on this patch. Signed-off-by: Roger Pau Monné --- Changes since v1: - Introduce a helper to perform a binary search of the MSR entries array. --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index cbca7209e34..605c632cf30 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2611,6 +2611,8 @@ int xc_cpu_policy_serialise(xc_interface *xch, const xc_cpu_policy_t policy, int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t policy, 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); int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index d146c5bbc99..a4307d50ddb 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -845,3 +845,45 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t policy, *out = *tmp; return 0; } + +static int compare_entries(const void *l, const void *r) +{ + const xen_msr_entry_t *lhs = l; + const xen_msr_entry_t *rhs = r; + + if ( lhs->idx == rhs->idx ) + return 0; + return lhs->idx < rhs->idx ? -1 : 1; +} + +static xen_msr_entry_t *find_entry(xen_msr_entry_t *entries, + unsigned int nr_entries, unsigned int index) +{ + const xen_msr_entry_t key = { index }; + + return bsearch(&key, entries, nr_entries, sizeof(*entries), compare_entries); +} + +int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t policy, + uint32_t msr, xen_msr_entry_t *out) +{ + unsigned int nr_entries = ARRAY_SIZE(policy->entries); + xen_msr_entry_t *tmp; + int rc; + + rc = xc_cpu_policy_serialise(xch, policy, NULL, 0, + policy->entries, &nr_entries); + if ( rc ) + return rc; + + tmp = find_entry(policy->entries, nr_entries, msr); + if ( !tmp ) + { + /* Unable to find a matching MSR. */ + errno = ENOENT; + return -1; + } + + *out = *tmp; + return 0; +} From patchwork Tue Apr 13 14:01:30 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: 12200639 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.7 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,URIBL_BLOCKED, 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 8689CC433ED for ; Tue, 13 Apr 2021 14:03:18 +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 38DAB61242 for ; Tue, 13 Apr 2021 14:03:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 38DAB61242 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.109805.209637 (Exim 4.92) (envelope-from ) id 1lWJdF-0005oO-H8; Tue, 13 Apr 2021 14:03:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109805.209637; Tue, 13 Apr 2021 14:03:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdF-0005oB-Bk; Tue, 13 Apr 2021 14:03:09 +0000 Received: by outflank-mailman (input) for mailman id 109805; Tue, 13 Apr 2021 14:03:07 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdD-0005mn-J4 for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:07 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id f7f60cad-cb01-4026-bd7d-e567c16b40d3; Tue, 13 Apr 2021 14:03:06 +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: f7f60cad-cb01-4026-bd7d-e567c16b40d3 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322586; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=v1Ot1zwenjTIlLCkVwXbZOBCpx4o6Tu0RqBs8/jb2LM=; b=A2AJXdgsVdUB4SMGrBjvDYrKN3V0PC4OGZxOAHLsl0ml6v45jxIizgO1 ck1FCJg2s/fnGPnpvq+JrYuRTJmxVHxabP5loVuBsOa9fe6KCWwOwKu6q VM8c+Kozdh8HorjeOhkPXRA37544gtaELZ0yG8yyC/C53UZlEJXTpfGdd U=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: pads+fZocMdfPralEkVdCc7+eesbHaD5+4FC2xyB8mMd1S6CbO6VG6cN1myxqGjknYh9iMTHl8 Gwuw8Nzte7JcZezhsJwQ7iYj56iwLMJeF68nTXwooOJjZROUJbq4ORbUbb2W/BXLM7SUFhwv3W D8v/KZh8t14m6aCj6H55sbf9iIsMSDBqKO6rc4v1x8RezKC1QHuvap8jJqgcN2MDiM/aLKlMRi VkdWq7ECKJzzAm9wQz+uqWtdP8AjM1M8Ws4N/J867cl3IVpC80+qNh5Ceo+TUA2F9m+p5jrASd pDE= X-SBRS: 5.2 X-MesageID: 41476537 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:HGH8daGPqsBE/THqpLqFbZTXdLJzesId70hD6mlYcjYQWtCEls yogfQQ3QL1jjFUY307hdWcIsC7Lk/03aVepa0cJ62rUgWjgmunK4l+8ZDvqgeNJwTXzcQY76 tpdsFFZeHYJURmjMr8/QmzG8shxt7Cy6yzmeLC1R5WLD1CQYsI1XYcNi+wFEpqSA5aQacjHJ 2H6cZd4xamc3IbbsO0b0N1I9TrjdvNiZ7gfFo6FwcqgTP+8A+AxZzbN1yj3hkYWy5S2rtKyw b4uiHw+6nLiYDc9jbyzGnWhq4m+ufJ6twGP8CUj9hQFzOEsHfSWK1Ee5mv+A84u/uu7lFCqq i9nz4FM95o433cOkGZyCGdojXI6zol53/8xVLwuxKKyqaYNVFKefZpvo5XfgDU7EAtprhHod h29lmUqoZNClf4lDn9juK4Ji1CrFa+onYpjIco/htieLYZAYUhyLA3zQd+FZcNGz/C84Y3EO ViJ9G03ocpTXqqK1/epWVh29qqQzAaGQqHWFELvoiv3yFRh20R9TpV+OUv2lM7sL4tQZhN4O rJdoxuibF1V8cTKYZwHv0IT8ebAnHEKCi8f166EBDCLuUqKnjNo5n47PEe/+exYqEFy5M0hd DoTE5YnXRaQTOvNeS+mLlwtjzdSmS0WjrgjutE4YJih7H6TL33dQWeVVEVlde6qfl3OLybZ9 +DfLZtR9PzJ2rnHohEmyfkXYNJFHUYWMoJ/vkhXVajpd/KN53KuuTXfO27HsuuLR8UHkfERl cTVjn6I8tNqmqxXGXjvRTXU3TxPmzzlKgAVZTyzqw28swgJ4dMug8ahRCS/ceQMwBPtaQwYQ 9bKLPjmaWrmHmu8Q/zniFUEysYKnwQzKTrUntMqwNPGVjza6w/t9KWfn0X+3ebOBllTYfzHB REr1p6vYK7RqbgixwKOpaCCCa3nnETrHWFQ9M3gauY//rofZs+E9IBQ6x+FQLCEjRvggZ0oG J/aAsJL3WvVQ/GuOGAttg5Fevff95zjEOAOshPs0/Ssk2auIUSXHcBZiWvVsSWmA4qYDJRij RKgugiqYvFvQzqBXo0gew+PlEJTGiMGrpJAD6IY5hulqnxdBt9SnqLgjKmmwg+E1CahHk6ty jEF2m5aPvLCl1StjRj3qHm/EhdW0+dc0hzA0oK+rFVJCDjgDJewOWLbq283y+tcVME2PgaKy yASyAVOBlSy9e+0wO1lD6OGW49/IgnOvXQAd0YAvfu80LoDLfNubANHvdS8pogCcvntfUTV/ mDPyCSNzH1BooSqnqoj0dgHBMxjnYqkfnlgkK4qEe52WMyGvrULhBNQaoBL9SV8mjjQLKp3f xC/KYIlNr1Fl+0TNiMjZzzRXpkDDj4pGatVeEmqZxOp8sJxfNONqiedQGN7W1N2RU1Edz9m0 wfSplq+bypAP4bQ+UiPwZiumcznNuBLEEXohX7L+83c1YqlWLaNbqyks31gItqJkWAoQfqUG PvixF1zrPgXyGZ06QdBL91CWNKaFIk4HAKxpLJS6TgTCGrffpE5ly0LzuUd6JcUrGMHfE1og xh69+F28+ReCyQ4nGcgRJLZoZP+X2gW8W8HUalHvNJ6cWzPRC0uZSRifTDxQvfeH+ccEQXhY pMaEwWYIBis1AZ/fIK+xn3bLf2rEIjm0ZZ+hd9mDfWq9Gb3Fs= X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41476537" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D4E/0ncLbEbIkLHSD2QqM3yIsfsOLhM2+qSp4qUzcDBcRSaBBN+39IkVqlCDJlHtPmReY0NKy3oJ9YK7QijKfbwp7PeilRzPoDeolol/pMS30g5SRqfNan86l1MCkSamCCFwa6dVjQf7B7lh7NDAnaA6q4/8/a+AjoayjwFgZacF68G2iwBRgbO9yJFgBGaQQf31j5H6QfcgWZwridCa8FvMFu+URaRks6S26Nocaag3MRx45Nd2uECC3qYa8UmDpCucMr3PiSXkEe6Z0GjgWKcO5X3V6DUPD3Bbs2uVP62vdm5OrXpf9l2HgaxHWY+zUL1jS6bsZqruoEA93SbdJA== 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=V/ovcTNSHVs4ALtpeQdtZQbZnv807eSa9HwEL/5Y5Kk=; b=OIk8/JXv6dyo6+B4mwtv7mTTqqw/42zqXsvv6d1gJcF2QEnddLBbJLSgAxQDfzgo99Q7r9FjRo7y+5NQOTrJBBGjx3d6+/nB5S1gf1DwW1c8EYziis9owBVzhJXZB0yumXUvEbikYbUROu+qxfPyPJusMv4pMA+y+SQQLZXH/9bSm3OMLJtIANbH/tNzx74wVKZw/b0kBfI5KWZgjG+e+mut/9Qq6kE92GeF/XgGj5eNMIBn0ZVPamgZuDqAH9j9B8pZoP2HiedjIf6JccYZpBEikWFTMlNtuHunOIJmNLcU4HtNOf+9UDgOi9jyv9sTiT+uqC5Q4teJi3ayi2BhXw== 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=V/ovcTNSHVs4ALtpeQdtZQbZnv807eSa9HwEL/5Y5Kk=; b=HVDA1IQxW6jHGPa//4AWPRGfXRH4r5Q+Z0itqPBux3aiGYGsu2+dFmf6SFP3cX+yyZkbdGC0FYqAPPlf0yMGzL8+iS1PA9VM7FAzSzHjHqYIFyGJUutIQQWv2o5lKstyK/pyTOXg9nqBOy0xQmw4j3rQHOsK0gmVoU4CnUOl+kY= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 12/21] libs/guest: allow updating a cpu policy CPUID data Date: Tue, 13 Apr 2021 16:01:30 +0200 Message-ID: <20210413140140.73690-13-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR1P264CA0027.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::14) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 56670b14-1ee3-446d-7d76-08d8fe84da9f X-MS-TrafficTypeDiagnostic: DS7PR03MB5542: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /A+yBMfMTlSkgIzffQiwtQ+cno9/ymEUVjzpGxbYCpXtNmZTOhSxrtWpNh2FR5rFidfeQ17WcnFvxbZth4JgRh6dEkz3XecfuJcel41s3qBmjPxy+SvXqsJx5mCvNaoUvgfhauvJ7fBxdJVWV+jfPOSYjvnKjR0j0VdIb5nj40gDE9NbS0xzxdK6yr7TFf9IooSKtZvUgb6sYgHYth6ktPVZLsXGRY5cBBjV0FFo2KIUmNPk2uCclJ2vNqu2Rk5aLpBvbh0zyDLTVjmTgmUH7GBfkA1bS6miEjDy6qiT1YbBSpWXAjLNuuK1Fru9L1BkRs4uzlON5CjMqwMWy8qdOwIA2x9zMhYQFcd+L0AiZ4VnG3r7dJa7gCRyEOpInDKWrnPj/8eVXUh+JD10eXHmecqsPo9xaoxPB+bL5H6pXEBbmUFS0xXH5MB0LMOsbysobnAWtSrUM+LIu1uqnPHeZEmbIgQnUqYXQ+X6qTR0ml8VGuPTh/w+F0vAWAMAyampHqihb5576dDOi6zy+Aeyt12aGVlRWC0YG2XLSkfkAS512hS3S66xxk2BQkEft3KUFVuLCk+8tKGhUSyjlF9fnQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39850400004)(346002)(376002)(2906002)(6916009)(6486002)(36756003)(66946007)(54906003)(83380400001)(1076003)(6666004)(5660300002)(66476007)(316002)(66556008)(8936002)(478600001)(186003)(2616005)(16526019)(86362001)(6496006)(26005)(38100700002)(8676002)(956004)(4326008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?cse5X0EwM42AAiiYMCHj8cbB1GYeeC?= =?utf-8?q?+VmB4+/Io8WV0+qyxdAjWNBZsFRdTl+/3CadMLTlIgV0scrWTbpW2KMWZujORenBL?= =?utf-8?q?nWs5E2sV7s7b+FQQ92a/dw1mfre4qxX3XvsIsHgV3Hc5S5MftaxPz4tJxcexDvUIH?= =?utf-8?q?I9X6p/bhu89GVRSvdob3VDGIF1hWMZUCsXRTb7OejsZA4LmbWlc692aaYZYVxMYSy?= =?utf-8?q?qHfM36gf99Qv40qvFX9qkbOB0i+8+E2CZNRRLmow+4SO/3LSRS/6K/C/lU0cepAR3?= =?utf-8?q?YbIoH7cEDWOWOD3RvRdl+WTc3N/9P5OwoWIWQQpxHrFo1O9MiUeEVaVh0JxjvwulB?= =?utf-8?q?NMnaSnnDn1IC6MtHqdEjpNlVKfo9K/VI2APebwaBOct2XQrIPJBET4rDHl3z5OKQR?= =?utf-8?q?8tZtXMuVRY70DCHFP7hLnbndvomcYe87jydkEi2SI9+kV2UkO+4wQBmcgU+LkTJoW?= =?utf-8?q?XIvwXcGo4WfXZPS4arnE9rrP6uJTDJq9KK1JWczdPVbtzw6gzi9klZIdkwpIcgkin?= =?utf-8?q?qpjXNThXddZCBM4XsR3elY6QfDa+ii/M87OIHXWPUvN41omIzf0ijVopTYD6Kvt1a?= =?utf-8?q?ehPHGTqG/OoePTZ4ApgqLbuRZL23VGS7QZikQ5cPz7WtlVlk/gnP0BjGtkHqqBx7J?= =?utf-8?q?QEDh19jD2O//w6Fpt5RydWQYvmGsru8/YIXdLXn4WKsIzySWY4B/boMWVfaH5yU6S?= =?utf-8?q?kLrCHSFsoBmpdfrUNyAIV5/3CsllDcTRntJ+UmOqfb1AY8DtTwPdKhK77s0Slswkj?= =?utf-8?q?QR25sriN+p4y/SOJFolnW+DGHnl01ZkUwrXVHkXDmZcRNbdlQcC5oK7NzJS08ajCc?= =?utf-8?q?hmR6NdEHGCVUxkfoBs5zevL3gN+koT9la5Jd9TTDXkA40CnYQtCKXSJmMh47sX6X0?= =?utf-8?q?zQshs40FUV42crU8bfz0//GiYOcWGhwJ3w/sSnnBqTvAbY3icQQB7bX87kIRS8Qdy?= =?utf-8?q?/+n13SC/C4KOzm3XHjBm9gd3ah9jUot5mwzF7Q1814rWSiKMfVNzZBUyH/jIXLZtm?= =?utf-8?q?IVMf4Dncj2OzoOGz6fpjXK9/rvmM0kqBHnAc1E2cynAVUrmiMZML6r5E5EYUyM3TS?= =?utf-8?q?gVSIkeNwTKFzZC5HWFE32H/oDad4srFHI2whWDuvv+sLogSlMUvkvZ64R0iD1vPNC?= =?utf-8?q?jF1SLKunytFCrJhYe6pqblIgt236YP3xzMPf7444EFfHv80N5zks0FHSX997XpW8X?= =?utf-8?q?vrEChfYmOpSHBW72AvdCrulqcy8Z0lVs6LuHAqhoHaQBj24WK2vAG0cF3zTPbxa0O?= =?utf-8?q?6uSXJ+AUpyvoVk?= X-MS-Exchange-CrossTenant-Network-Message-Id: 56670b14-1ee3-446d-7d76-08d8fe84da9f X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:03.1964 (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: 1jCtZfcposT+YiT2kwGKWYqN47kFkSdwv5TqDKGHQOsL0OJsZe52Zqi+PXu3HCL4fSL0gswaG/S/fIZDW6FdYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5542 X-OriginatorOrg: citrix.com Introduce a helper to update the CPUID policy using an array of xen_cpuid_leaf_t entries. Note the leaves present in the input xen_cpuid_leaf_t array will replace any existing leaves on the policy. No user of the interface introduced on this patch. Signed-off-by: Roger Pau Monné --- Changes since v1: - Don't use memcpy. - Drop logic to update the leaf manually - x86_cpuid_copy_from_buffer already does it. - Only print a failure message if err_leaf != -1. --- tools/include/xenctrl.h | 3 +++ tools/libs/guest/xg_cpuid_x86.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 605c632cf30..49f919f16a7 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2613,6 +2613,9 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t policy, xen_cpuid_leaf_t *out); int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t policy, uint32_t msr, xen_msr_entry_t *out); +int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const xen_cpuid_leaf_t *leaves, + uint32_t nr); int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index a4307d50ddb..00595e14cc3 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -887,3 +887,23 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t policy, *out = *tmp; return 0; } + +int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const xen_cpuid_leaf_t *leaves, + uint32_t nr) +{ + unsigned int err_leaf = -1, err_subleaf = -1; + int rc = x86_cpuid_copy_from_buffer(&policy->cpuid, leaves, nr, + &err_leaf, &err_subleaf); + + if ( rc ) + { + if ( err_leaf != -1 ) + ERROR("Failed to update CPUID (err leaf %#x, subleaf %#x) (%d = %s)", + err_leaf, err_subleaf, -rc, strerror(-rc)); + errno = -rc; + rc = -1; + } + + return rc; +} From patchwork Tue Apr 13 14:01:31 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: 12200641 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.7 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,URIBL_BLOCKED, 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 CB2E9C433B4 for ; Tue, 13 Apr 2021 14:03:23 +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 61BFD61206 for ; Tue, 13 Apr 2021 14:03:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 61BFD61206 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.109807.209648 (Exim 4.92) (envelope-from ) id 1lWJdK-0005uF-RA; Tue, 13 Apr 2021 14:03:14 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109807.209648; Tue, 13 Apr 2021 14:03:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdK-0005u2-Ma; Tue, 13 Apr 2021 14:03:14 +0000 Received: by outflank-mailman (input) for mailman id 109807; Tue, 13 Apr 2021 14:03:13 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdJ-0005sc-3M for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:13 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 1fb40aef-70d4-467a-8144-dd57e73ae0be; Tue, 13 Apr 2021 14:03:12 +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: 1fb40aef-70d4-467a-8144-dd57e73ae0be DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322592; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=uEN8vdruq4R26ejVTvoHnlj4zKLnkKaq8by+dBWlaWM=; b=X6QvBQVW6wgWmjPObBJpU3D3kSFDPDzGW8iarWPjLcJbbcM9c9Cvr1ZW p+Uvlr6/OobVTJLlj/oiu0X7OwDrvYmRXgNRIvBCG+F+qUCAiZXUW2FCE v+stWOC2GjGE/lGVd+Nt4SsSUsQfcsES4L59OTn+/1ZbEvyetkASSOBcI M=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: UvUOwl0n7404jnOeNInaf0XiQm+TDLJgyj1L8gyDMXm7gqmpkGJXB1DFE8eEr/Ow33Vzk131SN UEuZMtb8lMHd+2Hhy1Mhy4Q6F2ChXyZsHTq6Zy2chFtMWAWrpr5PS9IoiV+1udualNRPrfHjH4 6Z1t6052sy0bl3lRJQUoRlylWW/vQYcw33FRaiafF5x2xko1PsHBJDD30ySSVHtm/KNYNRTC9/ gUfsloqv/NLx0z0qJm1iXaAgNkuYzjg6szm2WAqwe+GZLkbm7N0iE4H8ieCJL7XvDyF6vcZAcv kqE= X-SBRS: 5.2 X-MesageID: 41613953 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:muOtX6sSYC+vRwxdcLCfb3YS7skCrIMji2hD6mlwRA09T+Wxi9 2ukPMH1RX9lTYWXzUalcqdPbSbKEmwybde544NMbC+GDT3oWfAFvAG0aLO4R3FXxf/+OlUyL t6f8FFYuHYIFBmga/BjzWQPM0nxLC8npyAocf74zNTQRpxa6dmhj0JaDqzNkFtXgFJCd4YOf OnhvZvnDardXQJYsnTPBBsM9TrnNHXiIngJScPGh9P0mKzpAm14733GQXw5GZ8bxpzx94ZkF TtokjCyYiI99q6zRLd0GG71eUtpPLRjuFtKebJpswcKjDHghulaoJ7S9S5zU0IidDq0nkGup 3hpAohItRS5hrqDx2IiCqo4SbM+nIP7GLv0lCRi3eLm72HeBsKT/BvqKgcVzmx0TtFgPhMlJ hl8kjcir9sSTTHpyj578igbWATqmOE5UAMvMRWs2ZSSuIlGdhshL1axmx5OrEaEhn37Yg2ed Med/301bJtfVSWY2uxhBgI/PWcGnA6HhKxSkMfoMCi0z9PgHBjz0cDrfZv50s9yA== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41613953" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZwVANm0qhv5f/T6gaMK7OXEZyxJVMIQrbyFB3AFurCCogxs0xoGNxk65NVG5I2jDuKckeGKJYwl9rwTAN4xT0xjSrswH6ncNjWYGJ6e4bgL/0K92oNlTvxOoxWiZQCQh1+MZQ5uwhpc5gTVDzOzoDMBmp2Q9K+XjwVj8hqRAqJ+B8UkWbTm0zIQVg0kSm3WN83w63Lvqozpn8WEraruWwzJl5AYHi83wdbKE+dhdAsTlH5BHiYyAcjGBU4OYhGltaGNSed9DOIJXF95o39dQ2wLFMaDccFwOUSf6qP0RXKgEPu/K+fZPWMhxIjv1XpFE8gqLkgMKbwJyLmxV9WKOkQ== 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=4zjRbsyq+DaWv6wnjrp/39MtyMLtRSSqzlhDBppNwHA=; b=dVwroCq1zzWGRtUBiZ+QSTsOACxThy4KsBpY5gobjrF5kOuf+n2c0JerA0+HwBQibTF0c3BifHaZUM2pdv8qdjIRrOVRwrVjRgvVwk0I4Ie1LGyckuE/8Dx3eMLWVG4q2QeESg/PZYHMR89hF5KUqznM8UIBRPgUJJsxbck2Y3ckjkvy2cU4NPaszXMqMqCC6k5cT0rxI1D1/rpXGs4k8nwzFt98VgYAOL6+RZE7qvhTBt/MRtN+sRRAbIxKMlVFsekx7bpY4hDHDE4ZyNEIGlH1dzTP4vP6+x8zRAkyS0EXXNu1oNRmBTs6HOUoa+5/goyvytiDWEoobMBxALWjnQ== 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=4zjRbsyq+DaWv6wnjrp/39MtyMLtRSSqzlhDBppNwHA=; b=ay8pvTHaaoefeJzIGKHYTPuWm1BkIiEYI+AqI9O6zbWlhSLBwgFqwFtX6HxnSOHX/Lfh4HmAUhGxzRi9DFjb9vuhM6qiKk1H+OauL/BDmW+ehZuk8PpAi6plAH7ZOXA+cI+SqyTFvmCmSF3qZg6arQPa45X7cD6Gh6RnlWH4nuw= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 13/21] libs/guest: allow updating a cpu policy MSR data Date: Tue, 13 Apr 2021 16:01:31 +0200 Message-ID: <20210413140140.73690-14-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0157.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:1::20) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7c5831c7-9221-454a-6ee7-08d8fe84de13 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iP48MwPvjkxfeHds+UhOHvvY78axBKbnoz9h6a9+hPhXTvp+Q1JtDhCFSEbbWOwlakS6tSOTVrVxSPc07piAhAcwZobLde6d74fDc5wtrWJc8fKU3dzfFiBoAIIZe97pbDFLT9k7XcFAXGPr0PUUWBXqsCGgxkRqk2sV5uhebrYYB2C/oOPoanD2ygl8gQL+VQygC+WSOs7S27oPoN5UvJI2DtqUT9uofrTlD1lhG5EGFuffRAUpkJyKjqAEF8BYvHNWSfSwQAh2X1QPDmcgpWsuj0u0IxqawOT95tzJR28zgtzOlVsSnfhB71e5T382eRLFxUKHaq1Q9ruMPvE2ntiT8DzttY44HBYCVvTQRHdseOJEM5TGUAU+N8R1NyrzHhNj5yPABDEIBdXocjWNNQttUvZAp5BY9bPTN629mLRyrN9JB83/eA+25t2j13YRls3IcR8FzE8p+A+V/XlAmES6EN+v8mLJhQ4nCUwJQzWad0FXR8+CZZda/1sxJ7eDMFQ7XUPIsJG1X1t9yB/wcgSfKE71j6HdC10CgSeR/Ifn36SaoSThXz5o8Hx7aH+5VLUwWiJL2BnVfifw/PzEGA== 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(83380400001)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?g6ujbK6nV9smMa0KTeaPvsvgV15LAD?= =?utf-8?q?FtY1REfVmKr4gdac60lmh0C8Y0/BKY7L/Bm10fMHN0rI9hrt2R7ly5vNeH0QT/VY3?= =?utf-8?q?mzoPGzPbN7Sa3Pwvot/9H/b57t9v3VFuzbdP81X93IEywEDKqkbx7UCTp5uzEcAuh?= =?utf-8?q?oYvpZ5m6o3UslkAXaqLnk4NqHsu7tgsKV5AqOUQQdPnqr9PXAQlE21C2vD9JzvmpP?= =?utf-8?q?OBZ0G8S1VxDQZACFMG+FJrAXmho9v3hRa2o1wM0M8k6qkCXbQKfZ/r8v93HYi2Vfc?= =?utf-8?q?7MbG+o5wwMRur/ftf2TDsPSoTGvN2D5ZxiYreMftE8d9kQLA4yezJtKFy6G/2ApCX?= =?utf-8?q?trh7CPxtlWTnfevpKpX4+RLPEyHg3YOV3+ZGW+CfW9hiCAtvvWV/fvay9b8vBbzW3?= =?utf-8?q?XfoD7u7AflmbwjvLoxMhabg40Lyeh25YJzQBr4yodUJZBdR0c59vniqLZYOB7SVSD?= =?utf-8?q?cWvIwH6pPZyszF+OpsPTXZ3XPTm7/t/WO7HtMbgySiGviW8gBCScK70VNk3xBq5/w?= =?utf-8?q?Vqgg7UM/zaxm3Nsqj03E3GVjTJ9Miv3SZcYsHjqsHHQQhXS9eRPJahkxskAOELwfi?= =?utf-8?q?o+seIPq0tHzVWMZkVwsqkG+EBukK+D0q4Qoc/+cL993uBy8CSXZJt/Kj6OPbby2UI?= =?utf-8?q?N35O6QL4UTAXHAHDao5HWDOE0WLYst3vaHQFFWhl5mS7foct/vFnHMPIJOAG15AD4?= =?utf-8?q?OFlvaGOGVdG2nRE9tHFCqRenFvDFTTQVU0mljHi9H7IHZZ03QsdZcm0PbPdLIS/5z?= =?utf-8?q?vJHF13d5YDBdTi/prmjFtKkj+6e5rAhhyLnSBKKEb2tL2OfFo15OWHUq/+VXqxZoy?= =?utf-8?q?w6uKQQgJktNYeZ6CgqcjSX+uaJRYtEfrPATOxi59Ck3DbZrk4Xur6hbSXotpt8bbA?= =?utf-8?q?EvQbp4WPZ1bACjlHZA1eleb3NVaFMGTST9Jfjey7fh6L8sxv3N0PWAEPbNm5Hdryn?= =?utf-8?q?uhpaw1Q7cjC68JHlYThW+hGZX4syLeVn2Iwivj2igGTk8mglbEWAa4JnrGHvGQc7g?= =?utf-8?q?nnps+ykGXvryhaOwqelATLZ2V/E0IaT783FSUH+97g0FOHKPAbjndnnxuvkG358+Z?= =?utf-8?q?MbvqJpWaBl6OyK7jl6YyacToTqTSvDPv3jjs9VCu3t8d3C1P3XJXDJCy810D+co8l?= =?utf-8?q?MU86LiO6WeU0OI/rJjg7xmd1fQ09VDqWWLxaKKxM/zRNZI4PCgw3krwgbcmTYX42X?= =?utf-8?q?Z9MbxfkdMMzTz9NFC+LUi3pWT2a29OWOr6krTlQKaAC6uRzvg2AwpXR1XAMD1CDSZ?= =?utf-8?q?kjQuYZPk3OyiUD?= X-MS-Exchange-CrossTenant-Network-Message-Id: 7c5831c7-9221-454a-6ee7-08d8fe84de13 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:09.1632 (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: pcWNFVqJ3mA7hl6vYTgE/RKSAyjN7eXZUXHdVq/x2mkJxmbhNov/vu/6x29R2IEGf2GCP7lcZgd5c/gtBY0QLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Introduce a helper to update the MSR policy using an array of xen_msr_entry_t entries. Note the MSRs present in the input xen_msr_entry_t array will replace any existing entries on the policy. No user of the interface introduced on this patch. Signed-off-by: Roger Pau Monné --- Changes since v1: - Drop logic to update entries manually. - Only print failure message if err_msr != -1. --- tools/include/xenctrl.h | 2 ++ tools/libs/guest/xg_cpuid_x86.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 49f919f16a7..9a6d1b126d8 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2616,6 +2616,8 @@ int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t policy, int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, const xen_cpuid_leaf_t *leaves, uint32_t nr); +int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, + const xen_msr_entry_t *msrs, uint32_t nr); int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 00595e14cc3..26b09322dfa 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -907,3 +907,21 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, return rc; } + +int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, + const xen_msr_entry_t *msrs, uint32_t nr) +{ + unsigned int err_msr = -1; + int rc = x86_msr_copy_from_buffer(&policy->msr, msrs, nr, &err_msr); + + if ( rc ) + { + if ( err_msr != -1 ) + ERROR("Failed to deserialise MSRS (err index %#x) (%d = %s)", + err_msr, -rc, strerror(-rc)); + errno = -rc; + rc = -1; + } + + return rc; +} From patchwork Tue Apr 13 14:01:32 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: 12200643 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.7 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,URIBL_BLOCKED, 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 7CA14C433ED for ; Tue, 13 Apr 2021 14:03:32 +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 27BF461206 for ; Tue, 13 Apr 2021 14:03:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 27BF461206 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.109813.209661 (Exim 4.92) (envelope-from ) id 1lWJdT-00063X-DX; Tue, 13 Apr 2021 14:03:23 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109813.209661; Tue, 13 Apr 2021 14:03:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdT-00063O-91; Tue, 13 Apr 2021 14:03:23 +0000 Received: by outflank-mailman (input) for mailman id 109813; Tue, 13 Apr 2021 14:03:22 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdS-0005sc-8T for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:22 +0000 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 51725715-d4ea-43f4-8528-1a696ba6d6ea; Tue, 13 Apr 2021 14:03:18 +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: 51725715-d4ea-43f4-8528-1a696ba6d6ea DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322597; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=XX1SugVBrNifC3XmPT1UGL6ovBU2ay/gnB824DeP1Ik=; b=Cc39JWoKjqLiS8RspJv8a4hSpqHiTdGaoxgC9B3Do/IKBfPwydKX8hj3 QmRZcxy31VqLsv1tNL77eiF2t12i/DavLPIkq8W8d9sU6zLqo+yc1542w Z7W5AxKSNBMFGx2tPeYqP8B6ieYi7YI2Q+2dgTo5K5VWmq85X8n+eLWYi w=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 3nWJMVmsW6HjXl3TYRVxnjG9n3P6b5QN3X9n711F0k7EzNNIPs08FxI4yGd+Vq4ZEdd9tEYyS9 tx7/zvVk8ozmKcYOx1Bo2K4mTquEYaIhq/lKcH1rqdDuRZzzr5FlVozYvOT95t8tFyQ9R05hwM SdD0Tu5oRSMePyhFjsUAnR4QX9mSQIdXwzl0Wveo8nc8RyrY5cStaEFioHL54nd4BE4DhduNnD gsdY420euYuCh8652VYSRShBm6eBkURjJScd/RfYAXUZLmGEiTEUOFgNnjI3gDgSauuMF/AS1R r8U= X-SBRS: 5.2 X-MesageID: 41476562 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:3XEvuqnR0tnhCZODHbm0AmYu1cbpDfOpj2dD5ilNYBxZY6Wkvu iUtrAyyQL0hDENWHsphNCHP+26TWnB8INuiLN/AZ6LZyOjnGezNolt4c/ZwzPmEzDj7eI178 tdWoBEIpnLAVB+5PyW3CCRD8sgzN6b8KqhmOfZyDNXQRt3brx7hj0ZNi+wOCRNNW17LLA+E4 eR4dcCmiGpfm4ZYt/+Kn4OWeXCoNOjruObXTctARk75A6SyQ658bKSKWnk4j4ycRNqhY0j/2 /MjhDj6syY3c2T5xfA2wbonvJrsfT7zN8rPr3vtuE0LXHWhh+sdMBdXdS5zUsIicWOzHpvr9 XWuRcnOK1ImgPsV0W4uwHk1QWl8BtG0Q6a9XaijXHuodP0SVsBYqIr7+IpEWqq12MasN5xy6 5N1W6C3qAndy/opyjh+8POEyhji0vcmwtSrccok3ddXYECAYUhyrA3wUU9KuZkIAvKrKojEO VoEfjG4udXfV6wfxnizxdS6e3pcXIpEhicRE8e/uSTzjhNhXh8i3AV3coFgx47hd4AYqgBw9 6BHrVjlblIQMNTRaVhBN0ZSc/yLmDWWxrDPE+bPFyPLtBJB1v977rMpJkl7uCjf5IFiLEono 7abV9evWkuP2rzFMynxvRwg1DwaVT4eQ6o5tBV5pB/tLG5bqHsKze/RFcnlNbli+kDA/fcR+ 24NPttcr7eBFqrPbwM8xz1WpFUJ3VbetYSoMwHV1WHpd+OBZbtssDdbfbPNJvgGTspQQrEcz k+dQm2AP8FwlGgW3f+jhSUcWjqYFbD8ZV5F7Wf3+V78vlJCqR89iwuzXip7MCCLjNP9oYsel FlHb/hmqSn4U2//WPC6XRVKgNQZ3wlpInIYjdvn0snIkn0ebEMt5G0YmZJxkaKIRd5UofwHB NAoU90vYa6NYaZyyxnK9/PCBPVs1Ij4FaxC7sMkKyK4snoPrkiCIw9ZaB3HQLXUzpvmQhrr2 9HQBQeRlDWEw7vjanNtu1WOMjvM/1HxCu7K89drnzS8W+Go9s0e3cdVzmyFfKMjR0WXDpSjF 1p+6o5iL6N8AzfblcXsaAdChlheW6XCLVJAECgaJ9Pkr7mQg12UFyHnCeXkR01Z2rs+XgDn2 CJF1zmRdj7Rn5m/lxI2Kfj9115Ml+QeE99cVhWm4xwH2augAc57ca7Io6Il0eBYFoLxe8QdA zfaTwJOwV02pSczxiOgguPEn0g27QjNuHQF64YbrnWw3+hQbf4050uLrtxxtJIJdruuugEXa ajYAeTNir/EP5s9AqPpHopURME3kUMoLfN4lnC42e51nJkXqaXD1RiWr0BI9aTq0LjXO2F1Z 1ljdQz+cu8W1+BHuKu+OXyVXpkLBiWnEudC8cPgrpQtbgptLRyE4LAOAG4nE1v7VEbFoPMiE gaQK5H+7jPNY9kQtwKd0tijy8UveXKCHFujxf/DeA/d2w8lnP3P9uG5LzTtLoka3fx0zfYCB 26+y1Z8+ytZVr66ZcqT4YxK39Rck4y9TBL+/6DbZTZDGyRBqt+1Wv/Fn+2a7lGTqeZXZ0Wsx Zh+tmN28uabTDx1gyVnTx1JMt1giuaaPL3JAKHAuhT9dOmfXyKn6ux+ca2yA7NdgHTUTVQua R1MWoKbspCjTE+jIo4lgiKI5aH3X4Noh95+jFollnkx468xnzUdHs2aDHkvg== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41476562" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PP3ZwZ0VgTXT92mijYjp5LG19kcwVniCezFwajGVbGphd3PlLSP4v3MuRfIFaV8ySYIyYQxldv5U3iV9eU3rhJcLGFCgls4s4GcYN2EUp54/F6Qa4zqIRh1JXppB/cLGOY0P5kVNrzubtrQ2uvk8vBH1YSvm5H/F/DobhDbtnOE1ob+X3vz1RsfmSn0EUvhR9g3ncseqQgBpzAz7S6Vwh8R00+kj0v/VSPYIYpEuflnf0j9J9IehHiQeKGeRfsLifNPtyEBa1beX9GCnO7ptchp2w+XJHoykaOOTIBGWMpLTJUgumHpK9Y6up54RSTCEwLZKR2MStrjPuBaQfNdSpQ== 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=qDZhAJDB/rsUQo+Z4e8pQdhxsoyKmVpWA1PSI58wKuU=; b=h19POVAQunWfkCqXZGZn3OCtC00PQCc1Em8SuDn2A4Xia5cNNovmHEY9oebZFPEHTqBXyHewwOEeLeZNlAUALfgQBmJ45Mw/HtZCPeeOfgA1dvuquBgMZfagNpp2jTBUVbcr78l/8NNxV0/OiHoh/g4w+B8kBF4g5TdVKxMSkyJRfo2Mp/VtlmTh1/eKdIZm8VwXsjJrYnyuXcHh+sTwzGJRhsRDHDAMqp+9ZC+kHNfSTG2ycg+xLtJtMCq8+mtYpI0IAQKdjhs1wK4nk5XExJeYduuJOAHkGW8HJrGtWgP44R58G3kVun6++bZs4pPx/iNf86+JkyoSga4tvXk5Jg== 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=qDZhAJDB/rsUQo+Z4e8pQdhxsoyKmVpWA1PSI58wKuU=; b=cFxUb1fIRubkaC1putWAOfaK/NMLjcrZg3d5UyZ0wcVTgE+Sk7cUjf2xSOFmimilNkJAeOO9IeqAqbbq4KdDYtT/2IMN7bxUdzDdUq8KTG6SKOCA+wOa9pWI8W9peOSbB5h167Hs/H1rjlzQjjshwpe3o9W8+Xp0GeoavMlFHQ8= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 14/21] libs/guest: introduce helper to check cpu policy compatibility Date: Tue, 13 Apr 2021 16:01:32 +0200 Message-ID: <20210413140140.73690-15-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR1P264CA0022.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::9) 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: efdc4159-a63a-4dcf-9dda-08d8fe84e186 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a2oAP/yFTX6/8n6x/Hh76oJ9N2vaZXSPu44dvv1a+w8su5/0bzthNQFWZZkSLzQAXlHDDY/v2QPrB/eXP9uRaHROKHaFpQR7HDTLKx3lKAlPDIyk0xls8jmXa7I3hyXD5vhykpl/hjfbSeoGMLqlfinQC1XfIEsbhtiyi8FEGUq9NGyYq6X8oFUALNpOwC1VmZFtWO/f8x6EjxEoqoPBT2l2TcTk37kscKcf65b5rwamIjEZ55jhaXowySkvuBkvqgZTOkL04jrSNjMvGVBhG1p2ddMZVbZM6GmWt067TqcXiK3O9gQGED0Vypa35hd79bcRn4+vE5l5Fo1ayQFu/fT/hnSKUcEOGJkANifB5cBMCcVcJMywv4pELPcHgo9YETOIEAbuw2ADLL2zp7vWiMIXcjXj6Lc9EYO5Qu+RYensgsJBJJbaG3TcUnvY3jPpn8XDKe50WS+Fdl8aMv8+n4+Tia992VqkIb4/iei6Dtelo0V2iaImx2aX9fNoUJsPMuma9nRTCQPpZGXapKszCBuI6ZGIdmAGABA0InkYx/R2m/2UggD+mfCJfwtoIMgWe2dHBjgVMV41qa+P2z8LzgvDkZfIUG8o7TVwZbJXAKI= 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(83380400001)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?vdiXsItdvTFtuwKmdQtb0QfUCJZZUb?= =?utf-8?q?cv5e1NdlPYSe3DtQdsbe5GGRtcUWl5P5Oychf7Uk0rKmLRB0IM2UUda7dHs2ZhMZx?= =?utf-8?q?z8CqgZHRuveBQ3lHU55CTBpVUMcIGAGBcgXWAsQcQaqfvh/P6OYzYb4wIoN5VRHpg?= =?utf-8?q?fkXGoS412WGMjEdwGQ+lziyWE+kjdZAPQ2HDkOc9N7SAmzF4POVVrZRtk0qBMPFGm?= =?utf-8?q?+nXqd+ojgLZJTUO9x9FH6mW6AUEUAfZ5p2hpeORfNu8P9Pgnxrbf7PNjLQb3tIAj7?= =?utf-8?q?bJWWojQSQwozoRBsGU57e63bP/W17ccXepxEtcpRIyWnk39qz6Zzq8nleaVvqYfne?= =?utf-8?q?oo78sPaJOwsQBYGFWSl0vycEBf8NZDaBHhUwOJtzvx/Ds4SWr5x/EvIRLBMan/H0q?= =?utf-8?q?2vIl5ottxA3BIn9MCG5zw5QXyxxpoklTbv3apdEFlHX2IWE45Eom9evOehj4CBl5P?= =?utf-8?q?87zyXRtpUcS+NqB4Xsze2J198LWQXI/E2C7Jz6O/SkfAZX8HLuDWW1tm87y60MBT9?= =?utf-8?q?gd92/+FGm7Q0Ztd3nzY4UcFcMjjk75pZMWGkDGBIsZ8qyjlhVhN5QS2j9mMcxcCzb?= =?utf-8?q?Kw0AtMlFhFI0c+YkpKjIQ3kLJ2MeydsDtjkMtPflrALUWXwmlhX0Ab9XcgfZqcV7N?= =?utf-8?q?S769Hk3CHfXmJJVNFoMe/kqlvXu13fM343L81wpv3S5g00+qirG8CXubLLsIrj6ks?= =?utf-8?q?YthHJqq/U1cP68sOq9zcR9ha9ZOof7QqzmRf3TMHl5BhDV7s0aqKKOVvms+4saEEp?= =?utf-8?q?3Sewk+ZhWihQCbigqY9RFbP6h0IBJRKohteaXHQDvoAXVrow1Fib/SztzwYTuiqDw?= =?utf-8?q?45qLe7A6ZoEXmqFd0FNFMIXBrDKoW2peCGz7Lq3tmqyFCWMqSKcnEjld5ge8+mLZy?= =?utf-8?q?J0Q1h31Y3osvcix5kk4FFB9k4kw42PsYgGw6v5oOQjWrnoEUAMufsiwGi7TV1o4Ad?= =?utf-8?q?fNuYF67XeV38c+lbtGxPSjwg5avpZ+8/JK0rgR3dxu0MnstNCVpI+UAunBwW/vw6h?= =?utf-8?q?VZRX1xBuS6nP21cn85eZUT9vghb5Ie2XIssJykLuP7TnQYhkJgQmEfIXKXE0EJ89m?= =?utf-8?q?BLQeMTOqeL9YwNc5mEEczDWax4ZxyQsScoV3ejeMeyjD097n9iX8QLf2/ZcXENq9b?= =?utf-8?q?5IFju2eOFrTauAMy47xTO0JYH5y65g/w1LrW2poH9weVlvwWVQkoIUM6Pz22XPTpr?= =?utf-8?q?mbKR02DcAMFc9xECRt8Cqw1nTteR4djOivxCSeuKbP6KInMj/McpyWCo6huqyllhx?= =?utf-8?q?u1rNm0+oljgXCg?= X-MS-Exchange-CrossTenant-Network-Message-Id: efdc4159-a63a-4dcf-9dda-08d8fe84e186 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:14.7785 (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: 7hIOav2WbjNwSbrWFaROLkZYL4jnSDbZCBwqwAACZYCosVX65fF9DEWOdExlwvzzGtOYZ6MJPGK+1zWGwZmYbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Such helpers is just a wrapper to the existing x86_cpu_policies_are_compatible function. This requires building policy.c from libx86 on user land also. No user of the interface introduced. Signed-off-by: Roger Pau Monné --- Changes since v1: - Initialize err. - Explicitly name parameters as host and guest. --- tools/include/xenctrl.h | 4 ++++ tools/libs/guest/Makefile | 2 +- tools/libs/guest/xg_cpuid_x86.c | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 9a6d1b126d8..5f699c09509 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2619,6 +2619,10 @@ int xc_cpu_policy_update_cpuid(xc_interface *xch, xc_cpu_policy_t policy, int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, const xen_msr_entry_t *msrs, uint32_t nr); +/* Compatibility calculations. */ +bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t host, + const xc_cpu_policy_t guest); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/Makefile b/tools/libs/guest/Makefile index 604e1695d6a..6d2a1d5bbc0 100644 --- a/tools/libs/guest/Makefile +++ b/tools/libs/guest/Makefile @@ -40,7 +40,7 @@ $(patsubst %.c,%.opic,$(ELF_SRCS-y)): CFLAGS += -Wno-pointer-sign ifeq ($(CONFIG_X86),y) # Add libx86 to the build vpath %.c ../../../xen/lib/x86 -SRCS-y += cpuid.c msr.c +SRCS-y += cpuid.c msr.c policy.c endif # new domain builder diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 26b09322dfa..bd2f31dd87f 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -925,3 +925,22 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, return rc; } + +bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t host, + const xc_cpu_policy_t guest) +{ + struct cpu_policy_errors err = INIT_CPU_POLICY_ERRORS; + struct cpu_policy h = { &host->cpuid, &host->msr }; + struct cpu_policy g = { &guest->cpuid, &guest->msr }; + int rc = x86_cpu_policies_are_compatible(&h, &g, &err); + + if ( !rc ) + return true; + + if ( err.leaf != -1 ) + ERROR("Leaf %#x subleaf %#x is not compatible", err.leaf, err.subleaf); + if ( err.msr != -1 ) + ERROR("MSR index %#x is not compatible", err.msr); + + return false; +} From patchwork Tue Apr 13 14:01:33 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: 12200645 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.7 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,URIBL_BLOCKED, 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 AF69FC433B4 for ; Tue, 13 Apr 2021 14:03:35 +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 2B82A61206 for ; Tue, 13 Apr 2021 14:03:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2B82A61206 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.109815.209672 (Exim 4.92) (envelope-from ) id 1lWJdW-000682-PQ; Tue, 13 Apr 2021 14:03:26 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109815.209672; Tue, 13 Apr 2021 14:03:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdW-00067r-Ko; Tue, 13 Apr 2021 14:03:26 +0000 Received: by outflank-mailman (input) for mailman id 109815; Tue, 13 Apr 2021 14:03:25 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdU-00061C-ON for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:24 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 345d3bb5-816f-421f-9baf-99c1469d0a13; Tue, 13 Apr 2021 14:03:22 +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: 345d3bb5-816f-421f-9baf-99c1469d0a13 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322602; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=P7vZegBKQVl+IyYesoWXa6XMSoDS3GTeMrPPYL+vXSg=; b=NYTw2J3LXRIZgUv/X+cBV//HyHSuuqZxjKm+WumfmB2GeGypxKT711j0 AKzGYzqh7GVpXFT3MCzkXLVvi9DAq1yeXkKj8PvSvdaXoP03F6KSh0ZWu ZSzILfMEYhr7WWicmcRpTcxvH/VlpBAjcXjsL6tbQu/uUggvgJq1vwgG+ I=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: ReybT6KogXa0ELTILVm6G9a/Bu3uI0d3wWk4nXoA8A2cATtw0F9x3mOa/1VsVKZhl/gBI73nty 8HoGnVC/MZDz5vZ4IiviSZ87My8OcMveOk7G217r/9ToWVkjRYKnN9K6DIfpFYD/j1gNVPHe9Z 8jgH7gx6op+vAQ+vwf30NXc9+pq4IHAzNB74PUoH2atceXRWpCEh9Zk6qt4ulssXyk+j503UjK kJgixf5l3Jc8l1kI+b1JaAdA5T/R99l+5lHlZmKc9QMqWgMF8FKN+irXTQN6dw1iOtHxPcc4me oCw= X-SBRS: 5.2 X-MesageID: 41613969 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:mdrh16o70XB3PVlHx5JIu4AaV5uuKtV00zAX/kB9WHVpW+SivY SHgOkb2RjoiDwYRXEnnpS6NLOdRG7HnKQb3aA4Bp3neAX9omOnIMVZ7YXkyyD9ACGWzIJg/I 9aWexFBNX0ZGIWse/T/BS4H9E8wNOO7aCvgqPkw21wSBxxApsA0y5SIG+gYylLbSNBAoc0E4 fZ29FOoCCudW9SQsOwAHQEWOarnay2qLvNZxkaCxk7rDSflD/A0s+GLzG0/Dc7FwlOz7Ar7H Tfn2XCiJmLnvmnxnbnpgnuxrtMnt+J8KogOOWtjYwvJizomkKUYu1aKsa/lRQUhM3q11owit nLpH4bTrROwlfcZHu8rxeo+ySI6kdW11bYxVWVgWTurKXCLVpQYaox5vMqTjLj50Utp9162q 5QtljpzaZ/Nh/cgD/7o+HBShACrDvEnVMZjeURg3ZDOLFuD4N5kIp3xjIxLL4wWAj+6IwhDd B0CtDd6Pt8YTqhHg7kl1gq79q2UnspGBCaBmAEp8yOyjBT2Et01k0C2aUk7zs93aN4b6MBy/ XPM6xumr0LZsgKbZhlDONEZcesEGTCTT/FLWr6GyWpKIg3f1b277Ln6rQ84++nPLYSyoEppZ jHWFRE8UYvZkPHE6S1rd122yGIZF/4cSXmy8lY6ZQ8kKb7XqDXPSqKT01ru9e8os8YHtbQV5 +ISdNrKs6mCVGrNZdC3gX4VZUXA2IZStcpttEyXE/LjdnMLqHsq+zHYNfeLLfgCl8fKyHCK0 pGeAK2CNRL70itVHO9qgPWQWnRdkv2+o81MKWyxZlX9KE9cql39iQFg1Ww4c+GbRdYtLYtQU d4KLT71oeypWy8+3f0/3xkUyAtSnp90fHFaTdntAUKO0T7ffIooNOEY11f23OBO1tZQ97JFh Vc43B647i+IZDV5S1KMaPoDkuqy18o4F6aRZYVnaOOoe3/fIkjM5ogUKttUSPRFxJ0ng5ugH xZaBANQ3LeEj+Gs9TnsLUkQMXkM/VsigaiJsBZ7VjFs1+HmM0pTnwHGwK1XdWvmgYoTTpMjl hX+6sS6YDw3gqHGC8auqAVIVdMYGOYDPZjAB6ebItZoLztZTp9VHyHnzCclhE1dFf77kl6vB 2TEQSkPdXwRnZNsHFR1ajntGl5cWiQZGpcQHF3u48VLxWMhl9DlcuwIoaj2WqYbVUPhtwHOD beeD0IP0dF3NasziOYnz6ECFQrzpgjJfbmEbwmar3fs0ndbrGgpOUjJbt57ZxlPNfhvqs3Su qZYRaSNy69JOUz2QCZz0xVThVcmT0Bq7fP1xLk5mTjgyJ6LvrWPVh8R7YUZ/ub9HPpQv6U0J N/yfI51NHARlnZW5qj8+XwaTUGFzb45UiRZMssoYpPva0zuKBodqOrGQfg5TVi5lEGMMzwlE kiW6x177DKB593c6UpCldk12tssO7KEVAivQP3CNIvZF0Bj3fUONWS/rrDwIBfdXGplU/VMV mb/zY1xYa8YwKzkZobAbk3O2JYdQwV72lj5vqLc+TreU+XXtAG2FqxKXmmdrBBDICDBLULtx 5/p/WFhfWeeSa9+Afeu1JAU+9z2lfiZcO5GwSXH+FUt/S8JFSXm6OvpPeJsw2fc0rzV20owa tfdUIRacxfij4tyK0PuxLCNZDfkwYCiFtR4TZui1j3/JOpiV2rRH17DQ== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41613969" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eo2nELJLnbLtqD6I6ancgn3nd7+YlTZZVTaddpd9oxnERrmbPHy0ExxA/HImm8Csz3rwtzzi2lHHHDzHVn6MB+JdDOqylm5ioR/7J4O8++Lb6CiKgzG4mwyZmoM2Ou+mC+ga1VY5EgQYHHT/YiuZp0xgWWdQH5b/VgAroQErdN9maZ1XIs4WYKKVDpCYQSd9TLv3I0w46hh+h/0lFwEu6I+ZccWrpoNTHd3HGbopdoPEkv/3bnuKcKVcuJjWpQGbwMmseqSicMFQm/bFA6OKe3wIXtDKc/0c64uIfN2X17eRtMAfXruAvzrHWQBA8fyarOb5B6L3VCJYvdS6HnODeQ== 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=Dc+lsGkoLxXeZ9V8GLxDMIl6AZXl0djGMA3EPzv8W5U=; b=aXrjwAYxCXP8eATPEZNKVBZykfxtVTaeZW9mbzlElmpoX8YKrQKILNF6d00/nepdgSCoE4Beye1kmn0IxGMDPSrpvZWEOXgsi3JgAJkV9xRi++c1Py63/R5w83d9gWYSCzBRglvEQld+GHBtR+cZ0sBwnNPahge0XV3gwbDBfO6sTiHlyM6ssrULKhHq6+JaCM1tF424QQ4N6iZpinQ0F/UXaY9tzinC+61O8QfDe3hDN6h5pTPacFFl2/FSs3spP5FSMHpDpKk2RqmRHT4ReV43lCR8GEgxwPq3Q9uX4mR1AXFCakQu3pLpmCZhDiS/2c7mC4C1MwRlt/QrYK0NGA== 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=Dc+lsGkoLxXeZ9V8GLxDMIl6AZXl0djGMA3EPzv8W5U=; b=VB/wgPdfL35wxlNKEjcNSClsN1dgRQbUZRyt/tvktA/sEeFL0PPf4TS7INl6N/NWCCyslkC9Ur0FbebfStqn8kgGm8vCpF303O3PPARg1PmRqSOesB+Wsu5TTrdgQcex0DzCmh0hVZXHQFEL/vBjqsiF9biR4Kw+NFQ6Zxc5gE8= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v2 15/21] libs/guest: obtain a compatible cpu policy from two input ones Date: Tue, 13 Apr 2021 16:01:33 +0200 Message-ID: <20210413140140.73690-16-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0093.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:32::33) 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: 958eb659-fce2-4b33-c0b1-08d8fe84e4b4 X-MS-TrafficTypeDiagnostic: DM5PR03MB2553: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m+h8U+VU8zche7Jo+QHnYzhr1DKC3fH17YRgR/a2cnbWyucCKyYA9V3eQP/cZ8Xe+arhUU8Nvkl5EpD0DHDBjMy24gVRMiYQItntB8lThU5AvkBZME5l7APPjbcevpgZIkGsB/NsLbH4E60Xf1sGLC6e0K/82fuvrMUyWoGJMSZ1rAgA9AE1mjv3hGoCng3uI6k/JNOO+FNIbWdhHMgWbMPLapwL4YZ4GM5e1aRaZac00mN7J9OJ7lRBi0v4b2dvEUYr7wTrGicS763/EyKr7dHrdetlNy/EUEuRnInDgx1uirqzmF+wlK4+34RSWPQm5bLg3Sys+bt7TDF7ApTgkWmwKoCoWMQsgU4NU3QxT6mdxQjrd49gWBaA3kuzeWLx/XEVC+ust/4/tgxalIDMDR0bwoU9MvT6eqvY9pwmBqV5VLMQceXBrmETufNBZViEs/S05s29eF7HPxSQc1xyuUmvrCS/+SQ+czoPhPV10XzA4QfxW4qlTIGHeCi0TL93XJ5LPiWUntxOyVFoK4G667F7tf3tSBHqNYOt12kzkj4/bp9HHJ1QFkG4CF4iFfXPBULYBVHPM9ufhZu6MlFTNjlYLVgWHObKbLwQIMRV03A= 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)(376002)(136003)(396003)(346002)(39850400004)(8936002)(6496006)(186003)(83380400001)(107886003)(38100700002)(2906002)(66476007)(86362001)(956004)(2616005)(8676002)(478600001)(66556008)(66946007)(6666004)(6486002)(16526019)(316002)(6916009)(36756003)(54906003)(1076003)(5660300002)(4326008)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?Ii2Wm4j47gpXKDDIaVlf3yJTsEpdXN?= =?utf-8?q?BttMg0j3vF3fCsHa2s3FgWpWgvTexLdkeO7+9j3BlVH/yOaoDwDIUSiP8mx6BC6RW?= =?utf-8?q?a830S+ClNhodgEN2gRImLvFWJW8S8n9xcpraiCTUAqkOlSDJvlIMnZTyeyWrWTGnV?= =?utf-8?q?OgxxZb3/UhNKQ8PeVsVh1jJSd2lUsUjGYQ/Ypoi5zeioYCVF8rsqlpv99EQLPznDH?= =?utf-8?q?8In9nbZjKOIi+2YWnpCXSpsA5just0Gbc663G0Tqb8jsQgq6kud8Xi0bgFXNWvpge?= =?utf-8?q?P4zI3PSkFkQ54syGAmFORZm+pK+u8GizadbqLuGAQ8ezK2LZtYasCsI23jmeekx13?= =?utf-8?q?+D/l9SU7dE9eqwY2nGIOSMGk5lMyzG3ABLsFssajppyN9TuJsS4ePRaxHa9v9zkXO?= =?utf-8?q?cHjt5jbspt7q8yXAvenMt/JwzwFdhC41OKgUgPFA4gNEJEExYS/QNQ01OyB8TeKe6?= =?utf-8?q?sI6wHM8s57tSFGeovxpA0DSVaj1WDMJuCxIZAm2IXM2Tv1G//yTuRGIrN53ymWs7v?= =?utf-8?q?JE90olAWXvYSKv7YcYFplnIgvCmCFpGHp1B8JRHWOZRGTAfLqrcvuQA6R0SuxGLoj?= =?utf-8?q?ookimg05S/3VZ/+AiGAsp0tnUkLGbmJG/UkeECPRejI43eUQanZNhtFFhCmAFcP/G?= =?utf-8?q?lVZGUy4msiiSj2wx5F1HpyjzshKJ+gihQb8m2mcvqc7EYjr3SsbUuqKqFiplQXwb3?= =?utf-8?q?rPHKYEaAJepoZOtaJVLi9223vkrcmC1OtONkl0AJxtiN9DVzJQygSppRh67EtlbBs?= =?utf-8?q?idhRGNc0FAeAx+DcvqRvfEMW4XDlYqGtXCVPa/kQ9PAd8AuplCaUc6WyUOuHDv8J1?= =?utf-8?q?qe7YRjawZgshV2xKMInnqo8fM0QvMXKcH2LnbdiB4BrCT4heq2XAlZDVYrGTV08+d?= =?utf-8?q?u3MZ9E3rgMdr/bW5jp81BZWBPmG5P0a1S9PeYVAnZgDjl8XetG2+1OTrCyKd17DgO?= =?utf-8?q?DlOyZzKqOOOelA2+hIV5R0JAyCNXezjEUgi95Krs9gE/6mNUIIsQUPnXgNccyNUPY?= =?utf-8?q?MTPAaz6+B9JhGpriIH48MQt2q8ji+Zd9i0Z/7NYSOORzJc/Cy8MhQqWhMHRPrGWNl?= =?utf-8?q?fL5L79c6yuvPvj63pdpsC+gQowAoz3PfJmfBcx0fPBZoDtDlYemRvf1RG+sLD2ctE?= =?utf-8?q?bMoJSsGG79wfLEPVSH2nsEAsFRdw5TKgiiH2W+3a1fYUOoOF+C9WeiT0LiYiLZy4W?= =?utf-8?q?o8Si05MUEhuFt3MEb/3ElpbyQ2fkjP21TAPN0VaaL8/XkFzxGzS0YAsUtiARm8oL/?= =?utf-8?q?WAtasqor+yCJLw?= X-MS-Exchange-CrossTenant-Network-Message-Id: 958eb659-fce2-4b33-c0b1-08d8fe84e4b4 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:20.0448 (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: r03MpPPP20qqMRWRm0h/hzzMKozKy009boBr8Z4xv4OLfHsYAI/INAM4ItL2CsXTnvJwIcPsHrT4W/9qDTCbxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2553 X-OriginatorOrg: citrix.com Introduce a helper to obtain a compatible cpu policy based on two input cpu policies. Currently this is done by and'ing all CPUID leaves and MSR entries, except for MSR_ARCH_CAPABILITIES which has the RSBA bit or'ed. The _AC macro is pulled from libxl_internal.h into xen-tools/libs.h since it's required in order to use the msr-index.h header. Note there's no need to place this helper in libx86, since the calculation of a compatible policy shouldn't be done from the hypervisor. No callers of the interface introduced. Signed-off-by: Roger Pau Monné --- Changes since v1: - Only AND the feature parts of cpuid. - Use a binary search to find the matching leaves and msr entries. - Remove default case from MSR level function. --- tools/include/xen-tools/libs.h | 5 ++ tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 128 ++++++++++++++++++++++++++++++ tools/libs/light/libxl_internal.h | 2 - 4 files changed, 137 insertions(+), 2 deletions(-) diff --git a/tools/include/xen-tools/libs.h b/tools/include/xen-tools/libs.h index a16e0c38070..b9e89f9a711 100644 --- a/tools/include/xen-tools/libs.h +++ b/tools/include/xen-tools/libs.h @@ -63,4 +63,9 @@ #define ROUNDUP(_x,_w) (((unsigned long)(_x)+(1UL<<(_w))-1) & ~((1UL<<(_w))-1)) #endif +#ifndef _AC +#define __AC(X,Y) (X##Y) +#define _AC(X,Y) __AC(X,Y) +#endif + #endif /* __XEN_TOOLS_LIBS__ */ diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 5f699c09509..c41d794683c 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2622,6 +2622,10 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t policy, /* Compatibility calculations. */ bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t host, const xc_cpu_policy_t guest); +int xc_cpu_policy_calc_compatible(xc_interface *xch, + const xc_cpu_policy_t p1, + const xc_cpu_policy_t p2, + xc_cpu_policy_t out); int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index bd2f31dd87f..6cfa4cb39d1 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -32,6 +32,7 @@ enum { #include }; +#include #include #include @@ -944,3 +945,130 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, const xc_cpu_policy_t host, return false; } + +static uint64_t level_msr(unsigned int index, uint64_t val1, uint64_t val2) +{ + uint64_t val = val1 & val2;; + + switch ( index ) + { + case MSR_ARCH_CAPABILITIES: + /* + * Set RSBA if present on any of the input values to notice the guest + * might run on vulnerable hardware at some point. + */ + val |= (val1 | val2) & ARCH_CAPS_RSBA; + break; + } + + return val; +} + +static bool level_leaf(xen_cpuid_leaf_t *l1, xen_cpuid_leaf_t *l2, + xen_cpuid_leaf_t *out) +{ + *out = (xen_cpuid_leaf_t){ }; + + switch ( l1->leaf ) + { + case 0x1: + case 0x80000001: + out->c = l1->c & l2->c; + out->d = l1->d & l2->d; + return true; + + case 0xd: + if ( l1->subleaf != 1 ) + break; + out->a = l1->a & l2->a; + return true; + + case 0x7: + switch ( l1->subleaf ) + { + case 0: + out->b = l1->b & l2->b; + out->c = l1->c & l2->c; + out->d = l1->d & l2->d; + return true; + + case 1: + out->a = l1->a & l2->a; + return true; + } + break; + + case 0x80000007: + out->d = l1->d & l2->d; + return true; + + case 0x80000008: + out->b = l1->b & l2->b; + return true; + } + + return false; +} + +int xc_cpu_policy_calc_compatible(xc_interface *xch, + const xc_cpu_policy_t p1, + const xc_cpu_policy_t p2, + xc_cpu_policy_t out) +{ + unsigned int nr_leaves, nr_msrs, i, index; + unsigned int p1_nr_leaves, p2_nr_leaves; + unsigned int p1_nr_entries, p2_nr_entries; + int rc; + + p1_nr_leaves = p2_nr_leaves = ARRAY_SIZE(p1->leaves); + p1_nr_entries = p2_nr_entries = ARRAY_SIZE(p1->entries); + + rc = xc_cpu_policy_serialise(xch, p1, p1->leaves, &p1_nr_leaves, + p1->entries, &p1_nr_entries); + if ( rc ) + return rc; + rc = xc_cpu_policy_serialise(xch, p2, p2->leaves, &p2_nr_leaves, + p2->entries, &p2_nr_entries); + if ( rc ) + return rc; + + index = 0; + for ( i = 0; i < p1_nr_leaves; i++ ) + { + xen_cpuid_leaf_t *l1 = &p1->leaves[i]; + xen_cpuid_leaf_t *l2 = find_leaf(p2->leaves, p2_nr_leaves, + l1->leaf, l1->subleaf); + + if ( l2 && level_leaf(&out->leaves[index], l1, l2) ) + { + out->leaves[index].leaf = l1->leaf; + out->leaves[index].subleaf = l1->subleaf; + index++; + } + } + nr_leaves = index; + + index = 0; + for ( i = 0; i < p1_nr_entries; i++ ) + { + xen_msr_entry_t *l1 = &p1->entries[i]; + xen_msr_entry_t *l2 = find_entry(p2->entries, p2_nr_entries, l1->idx); + + if ( !l2 ) + continue; + + out->entries[index].idx = l1->idx; + out->entries[index].val = level_msr(l1->idx, l1->val, l2->val); + index++; + } + nr_msrs = index; + + rc = deserialize_policy(xch, out, nr_leaves, nr_msrs); + if ( rc ) + { + errno = -rc; + rc = -1; + } + + return rc; +} diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h index 44a2f3c8fe3..5709bcb93fa 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -126,8 +126,6 @@ #define PVSHIM_CMDLINE "pv-shim console=xen,pv" /* Size macros. */ -#define __AC(X,Y) (X##Y) -#define _AC(X,Y) __AC(X,Y) #define MB(_mb) (_AC(_mb, ULL) << 20) #define GB(_gb) (_AC(_gb, ULL) << 30) From patchwork Tue Apr 13 14:01:34 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: 12200647 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.7 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,URIBL_BLOCKED, 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 CB419C433B4 for ; Tue, 13 Apr 2021 14:03:39 +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 79FF2611CE for ; Tue, 13 Apr 2021 14:03:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 79FF2611CE 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.109821.209685 (Exim 4.92) (envelope-from ) id 1lWJdb-0006E2-BH; Tue, 13 Apr 2021 14:03:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109821.209685; Tue, 13 Apr 2021 14:03:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdb-0006Ds-6R; Tue, 13 Apr 2021 14:03:31 +0000 Received: by outflank-mailman (input) for mailman id 109821; Tue, 13 Apr 2021 14:03:29 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdZ-00061C-RK for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:29 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id e785078d-3c3f-4fef-b0cd-cc4fe7c3f96c; Tue, 13 Apr 2021 14:03:29 +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: e785078d-3c3f-4fef-b0cd-cc4fe7c3f96c DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322608; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=oXBqzDHS0FunQwg8diVLE6ArqyB8CJV5O3X62tjR+BM=; b=iNxJA4V3XzV47Qztg7qCwdzt0ppQXQY8JGq2h9eul3Xr9GKm/MMI1V2N gmWiFDSRDYtTqCN7JGceW0Hq1JA3rmEmaiaEleBS2O7GDe055osG0Qdzp OokhVV5rN3IW6vtcvY/FQc0sn0OBqN3IuQSMiVlGVPyaMIi6NVpD04M1x 8=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: tfvxbq07lTg5oX2Z8AnOsJ5SekT4D10PZgd6qOPbJpRoOMS7CtAUfxzHKSeIPGRaPeSp/yB/yb RCWbSxMP7feK7HZIHOvjFwRGC954dK6KPyGfHhMdXT79WAzgXbQyhjAEu1kOtolVe+c4v9qBIb PQxtFOWG59rN+1L4gficCZ2VDpIlTYifIPXPzC1/oHnZLYxAHTmvn79N9BlyVEHkMreeaUz3vp cL1PySPC0eQDfRA/wULxMQj2VsWUjQkVBXc/jpFW+YkrDKqZ28bHe7xHTpDNnMlnURMMm3oDZP JBk= X-SBRS: 5.2 X-MesageID: 41483950 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:LAhmla9j00Fi2w7nWtVuk+FdcL1zdoIgy1knxilNYDRvWIixi9 2ukPMH1RX9lTYWXzUalcqdPbSbKEmyybdc2qNUGbu5RgHptC+TLI9k5Zb/2DGIIUHD38Zn/+ Nbf6B6YeecMXFTkdv67A6kE9wp3dmA9+SSif3Dymp2JDsKV4hLxW5Ce2KmO2dxQxRLAod8KY GV4dBJqyHlVXMcaMm6AXdtZZm+m/TgkpX6bRkaQyM28QXmt0LU1JfWMTi9mi0fXTRG3Ks4/Q H+/TDRy62/v5iAu3nh/kDJ6ZA+oqqC9vJiA4i2htEROnHQjG+TFf9ccpmjmBxwn+218lYtl7 D30mcdFuB+8WnYcG3wgTaF4XiY7B8U53XvyUCVjBLYyKSTLlJKaLsyuatjfhTU8EYmtt1nuZ g7pV6xjJZLEQjG2B30+tmgbWAaqmOPvXEgneQP5kYvNrc2Vbk5l/17wGplVL0EHC789bk9Fv hvAMz29J9tAC2nRkGckW91zNO2WHMvWj+AX0gZo8SQlwNbhXZj0iIjtYAit0ZF0Kh4Z4hP5u zCPKgtvLZSTvUOZaY4IOsaW8O4BkHEXBqkChPcHX3XUIU8f17doZ/+57s4oMuwfoYT8Zc0kJ PdFHtFqG8bYSvVeI2z9awO1iqIbHS2XDzrxM0bzYN+oKfASL3iNjDGYEwykvGnv+4UDqTgKr eOEaMTJ8WmAXrlGI5P0QG7cYJVM2MiXMocvct+dEmJpu7NN432ps3WePveP9PWYHQZc1K6Jk FGcCn4Jc1G4EzucGT/mgLtV3TkfVG63Z8YKtmew8EjjKw2cqFcuAkcjlq0ouuRLydZj6AwdE xiZJfukqaxo3iK7X/Fhl8ZfiZ1PwJw2vHNQnlKrQgFPwffarAYoeiSfmhUwT+hKgJgSdjVVC pSvU5+967yD5H4/1FtN/uXdkahy1cDrnODSJkR3oeZ493+R58+BpE6HIprFQvKEBRxsR1wqH hKbTIFQkO3LEKstYyVyLgvQM3Pfdh1hwmmZeROr2jEiEmarcYzAkcAUyWWSs6RiwY2Tz9yjl l8mpVvx4aoqHKKEy8Ske44OFpDZCCyDKhdBAqIXolSh4vmYRp9V2uMmDychSwiY2aCzTRguk XRaQmvPd3bCFtUvX5Vlpzn9155bU2xVUN9YHISi/w3KU32/lJIlcObbKu61GWcLmYYyuYGKT fffH85OQV13e260xaThRePHXgr3Y8VI+TYFbgvGoujnE+FGcmtr+UrDvVU9JFqOJTSqecNS/ uYYBLQAzXiCe8lsjbl0EoNCW1Rkj0Dnvzp0hG+szT98347HPbIIFNpA5scOMqR6mD4R/COlL V15OhFydeYAyHUUJqhz6qSUhtobjX0ikSyR/szqZ9Vsbkp3YEDV6XzYH/t7jV/wB46LM3Ij0 sQT6Rw3aDZNuZUDrkvUhMc2mBsqc+GI0QquDHnG+MSfVkiiHnAItOCioC43oYHMwmkrAv0NU L3yVwkw971Gw+C36UdEaQ+PCB/b1U98m1r+Iq5BsftITTvU+FI51yhNHChNJdbVaieAL0V6j J3+cuBkePSVy323mnrzHZGC5ML12asWsWpBg2QXcZO7tyhIFyJxpKQ3/Tbtka/dRKLL2IChY NEckQMbsNMzhka5bdHrRSae+jQuUIqk1xX/Dd9sEXis7LWuVvmIQ== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41483950" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mw0oyHNjje/jnNrlW7IMhNEK4DNIa4Yl9gekwZ9Cku/CH7rGF13Sxiiv+iLnr8yeak/MoMoJdIgtxlnRLz42mAKTheROdtwu4HT/Ts14eOHOVxa2e+FAAFMHUpLGKyGvdMDRX1x0UpZwx0KK5yLwS9UFrgPQQtFyWJwy3hOhs8DQhMO3BBRIdwQdYaIUJWA2GZZB/MhpsuRFuRGpFe9unOo5X/LVgvXYR76NBsxrtP/sMQ14aeU8xJAjdNAVFEnB8dYlAjRgHDKGcDAOq92Di/41MNWl4IiGpyhlV9WTTHDD3D+eSoaeA6o1uz6E+Thlj6JZ7OVGfDaKBN0M0TObuQ== 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=2r1voEZpGxTx5Po9C2mMe1JKE7C2WQQb65ZrKzQeT0o=; b=glV+DgQuKchOE+Owvs8ukMAyWyGLm60a8z+fT8BVcBIfKBLDnMIYfPgBga0WGQV9PknHj/g6fQJWhrJVbUmIoXXdvZAQf3Bt+toxW2UKJjv3OKH6XaHTQLc3NP8zWrhvV+dBJs1Cujs+B3wcjf3UWRvRi7CoNmPhc1+w4yxtF6PXlaiy0n7QEdvAWY9yfZ+TboC0aAUI6doz3wAIl9bEdt5tdlpWRpkHSsplbJXmZhJjRMhrNnyjDBAk3ATxEZn0IsfkKDtcI2vVEkJWF6Oxniktuk/Ltdg7W/fJv4j0JuDneu0pP3bwhFvNMCoeJRavmtkvs0M7g3yNwr9B+PXV+A== 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=2r1voEZpGxTx5Po9C2mMe1JKE7C2WQQb65ZrKzQeT0o=; b=Gf83JbncVahbefDOWWuoD/977ZIKlbJJEVs8bgq1pFs7FoJRBbPR4j/7Xrbd25GZ1awus5wNRVWmsJhhydsZFEoxKVSijKXmiqh5rgYavzMn4hGxyLVByBdErgWcLA3kFFt8LO/7kXcI7tmPC7mpl6iye3Mhva3O9xtTW82PIe4= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 16/21] libs/guest: make a cpu policy compatible with older Xen versions Date: Tue, 13 Apr 2021 16:01:34 +0200 Message-ID: <20210413140140.73690-17-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0065.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::29) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4ef1e11a-8ce4-4995-71ab-08d8fe84e7d5 X-MS-TrafficTypeDiagnostic: DM5PR03MB2969: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NXVVVVErsVWXsrbZaV65auWhAu/+4nK+lxu9j00UhkQKRj6xxT5fZvpkmgbLZoSd/KBG16FXC2iFfpZtPJtHpCjNRRRcBklbClHVOu7PBMPPRE9FhX8TkhsYuRruYp+39PbadphbL+8Qp+9cD80iTPheI4evKdpZa3UkPlnXiU9Mp1z2llYDfh78w4ZEF50Q1Zj+l5Utb2IQ/W/S7IKqsg4VHoQW2a7CaJ5jhANQJRm0z/Fl0eUl8HfBlUzv2I76weq/no6MynAeD2lFyT5EW0N6iqbJSCN7XbaD4dYC0rT2+BeaZE2dw51FOERs7qEwPHD8RtDm3GjIGoU+6/xHFBmDEl8jPt16FqV/sMMa6cRnpvGvUW0SU+Ha14R7hG+bKxLMum3eLCN0G9TrOg/c+iCwyJuq6roYOc3B1ooMsf4hI7pVJfNZm58bPajFTGoRmNaVpjDk1dkO25eSh5+H8Ad0MDa4BMCaXUV2bL4AOQQNP28wsLxRP80GSg0hieEjORF9kjtRToAGb/a8bCNqpCrsFhydrhbLAkavvIVX0QkFUYMczZjZP2RqdrHzFWD/0QZkdKcvGInGSNQZi461RZbX+GclnJBD9zSkqsWmFrc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(136003)(39850400004)(366004)(83380400001)(186003)(6496006)(316002)(2906002)(4326008)(36756003)(54906003)(6916009)(2616005)(6666004)(16526019)(26005)(478600001)(6486002)(1076003)(8676002)(8936002)(5660300002)(66556008)(66946007)(86362001)(66476007)(38100700002)(956004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?muck51VsuAh5uedSwQ3RGykKC6nIq0?= =?utf-8?q?v9go6YMzi2pHyy8VS8BWQ5bNTc/RoZdKQLdaakkFQ+ceL2nqNDXCJNAu/39jKsmZk?= =?utf-8?q?ywU4rFmzZKBmd8zfTQkw+9Q0dm278tMtwYhWA/lsUOnC0d6iBE8pdLtFaRdEAIdkF?= =?utf-8?q?9PipGetrHXSVG1clKNTf93cwhEt5NOP6bw27mzEm4x4lXIweILtQfCAhMxmXidMdF?= =?utf-8?q?ZGjdJgco82uGdRXTU2+AYm2bIIl6BDrmag1dGWbyNSFgg45OHaNDk3/iVaYbnmaPZ?= =?utf-8?q?HHg1LNmkxUa4AFXmmgoyMN3Pp+AzfOoQ2Hh+cF5+Z/qqDbMew3XnZXlcWTfSw8Cpq?= =?utf-8?q?Na0J0SgaamTq99P2rvYkxpRMocMEMhVuEAtapxvY0Yk3NxwOSWE/r19gJCkRYdq40?= =?utf-8?q?lPMJ8Ruy4vbQzEUWpYPWG8VOmyEocP4ubEp/cloS1uMGUWr70ND9g6qTUQKXQCGnX?= =?utf-8?q?tjHiJjxG3L8qG4eyKGqzwh0VTB7iUfLGy+49ctZCwhhMqL0XPuqcLWFCrG9C6iJkX?= =?utf-8?q?5luektAPIoAPOyNvZiWoLA/SCtPMlVeL0SiaVq3G97nTAoeOwVJV5ZmMt6Pzr51aM?= =?utf-8?q?nx7bE/ulHIcFkp84jl1GivO0++hwaJFlUU+wn1/G7RXLOorpsZ0iGe9Ymhc/qpcBx?= =?utf-8?q?zgmPxoyPCzGb9dhshJ3y4ltjztTHOzKK4Czd4pd+d0OfioXTb0bWZdx0OkE5a4CPz?= =?utf-8?q?d/VmVAQzsd+X75xznuUNyiCDiLTDn49fUWq2QnvxurnmlpBs0qRGspQEOcAOF9jjn?= =?utf-8?q?OlN9YiR6q4lSiKK3QlO2c0GDLVq6idM5uJcSt8RvYk67abaOglg73rXD/4j7zjdyb?= =?utf-8?q?gHyjmmSdK8A18uSqXFvd9RmkWBXJ9cLIbWoTZhmbvNWNj8fWsTkqPHfCPTrPNfOUo?= =?utf-8?q?Y4mghHwcrOkdOX+vjLJf6DgFP8Q5w0lTtWX2ikzY6d36SFXSGK9TJox3tibcQkBkx?= =?utf-8?q?o5V8GdRuMRVTqOPssdneWiqolA4vMMmIw8xlQv36qn8GL8AG3NpuxzmsQ7+UBu7Ak?= =?utf-8?q?yCWtePGMRGpuAJ4NQNSGddd1mjWWOEdxbGe/9TNCfjlyXS23yebC1qCTmHYbBWkns?= =?utf-8?q?OWAKjq3p6xpAkO0Ai6wkoMKM97oP2xK3zZ41fUn9dmORdC+crLOrYykvExpdjabpt?= =?utf-8?q?N4Rb4hLzU3oueg6Z4tQ1vmdC8QsGvJaO33UAhAt4bpbOKwDB86uQNc03Fev2IdtLg?= =?utf-8?q?hQGZ0ebrLjqDmMyKxkQ/TZQ03uw30BSuacr/LZvXHvpk8DYwEpgQmA3YMoJQg68Tu?= =?utf-8?q?nYnBdWgvnO2kB3?= X-MS-Exchange-CrossTenant-Network-Message-Id: 4ef1e11a-8ce4-4995-71ab-08d8fe84e7d5 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:25.3773 (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: GhYTjPzilf0yuDTc/veKg6EmyHVexle5bJPzaBYVzAYPqTQ/ZdHKZ8uy5iy13NiEghJVY2od/Jod51IkZXPsnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2969 X-OriginatorOrg: citrix.com Older Xen versions used to expose some CPUID bits which are no longer exposed by default. In order to keep a compatible behavior with guests migrated from versions of Xen that don't encode the CPUID data on the migration stream introduce a function that sets the same bits as older Xen versions. This is pulled out from xc_cpuid_apply_policy which already has this logic present. No functional change intended. Signed-off-by: Roger Pau Monné --- Changes since v1: - Move comments and explicitly mention pre-4.14 Xen. --- tools/include/xenctrl.h | 4 +++ tools/libs/guest/xg_cpuid_x86.c | 46 ++++++++++++++++++++++++++++----- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index c41d794683c..89a73fd6823 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2627,6 +2627,10 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, const xc_cpu_policy_t p2, xc_cpu_policy_t out); +/* Make a policy compatible with pre-4.14 Xen versions. */ +int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, + 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_x86.c index 6cfa4cb39d1..6486ac4c673 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -446,6 +446,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, unsigned int i, nr_leaves, nr_msrs; xen_cpuid_leaf_t *leaves = NULL; struct cpuid_policy *p = NULL; + struct xc_cpu_policy policy = { }; uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; uint32_t host_featureset[FEATURESET_NR_ENTRIES] = {}; uint32_t len = ARRAY_SIZE(host_featureset); @@ -509,17 +510,14 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, } /* - * Account for feature which have been disabled by default since Xen 4.13, + * Account for features which have been disabled by default since Xen 4.13, * so migrated-in VM's don't risk seeing features disappearing. */ if ( restore ) { - p->basic.rdrand = test_bit(X86_FEATURE_RDRAND, host_featureset); - - if ( di.hvm ) - { - p->feat.mpx = test_bit(X86_FEATURE_MPX, host_featureset); - } + policy.cpuid = *p; + xc_cpu_policy_make_compatible(xch, &policy, di.hvm); + *p = policy.cpuid; } if ( featureset ) @@ -1072,3 +1070,37 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, return rc; } + +int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, + bool hvm) +{ + xc_cpu_policy_t host; + int rc; + + host = xc_cpu_policy_init(); + if ( !host ) + { + errno = ENOMEM; + return -1; + } + + rc = xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); + if ( rc ) + { + ERROR("Failed to get host policy"); + goto out; + } + + /* + * Account for features which have been disabled by default since Xen 4.13, + * so migrated-in VM's don't risk seeing features disappearing. + */ + policy->cpuid.basic.rdrand = host->cpuid.basic.rdrand; + + if ( hvm ) + policy->cpuid.feat.mpx = host->cpuid.feat.mpx; + + out: + xc_cpu_policy_destroy(host); + return rc; +} From patchwork Tue Apr 13 14:01:35 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: 12200649 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.7 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,URIBL_BLOCKED, 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 C35B5C433B4 for ; Tue, 13 Apr 2021 14:03:46 +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 583DD611CE for ; Tue, 13 Apr 2021 14:03:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 583DD611CE 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.109825.209697 (Exim 4.92) (envelope-from ) id 1lWJdh-0006Lz-MA; Tue, 13 Apr 2021 14:03:37 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109825.209697; Tue, 13 Apr 2021 14:03:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdh-0006Lp-IJ; Tue, 13 Apr 2021 14:03:37 +0000 Received: by outflank-mailman (input) for mailman id 109825; Tue, 13 Apr 2021 14:03:36 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdg-0006KX-BV for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:36 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 2658cdd3-a2f5-4515-ae80-ce5a6f63e98b; Tue, 13 Apr 2021 14:03:35 +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: 2658cdd3-a2f5-4515-ae80-ce5a6f63e98b DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322614; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=SvFuPv+ayBPXc00cwLumU7gxLcmcG3dejOnRxECnnd8=; b=eELQFL8YO/zKB/kODPpXxzwoEtff2uTpzXZIEN6BSjnsiB4rlgKbjnIs DtNCRwXA1rE1luQV8Jfj6RG6F68phkpf6e+R8ZQjC/QEtTb7PdaEHruJJ aY3H0iqeE/i07Dv1CYUJhxZ5VWi9Fev2HKRXYxWpIltxK7I+KO1QNWvkz A=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: D26REcR3/iU4c4pPJrBtRS3QJvmZQWYNmYmIAb2sHOES7gYATs6AznOgGsoutsYk4gQLcrGPSB AqbRuQMZaomyVYjywhOagrDEIsySkG4I+ZprMVbrfynCSuYUIXCo+u9a8L1NE0zOZbzIllPK8Z WI61Z5kNb7ZyGxpB8TaBOEiaDaoWL/IcCRV7g9HVcZs4dxxqL+RWh7EEIWkDiLD6FbwJicgB7g XFz0VGfnYu7rk7khPFBV/Izq5+gmBo8JaQOcv+x4KUSu4b4av0paKaSGad8m2FSuPGUaFzrbS6 iYE= X-SBRS: 5.2 X-MesageID: 41322379 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:lYZCGaobPwu9yePZCT5QHF0aV5uuKtV00zAX/kB9WHVpW+SivY SHgOkb2RjoiDwYRXEnnpS6NLOdRG7HnKQb3aA4Bp3neAX9omOnIMVZ7YXkyyD9ACGWzIJg/I 9aWexFBNX0ZGIWse/T/BS4H9E8wNOO7aCvgqPkw21wSBxxApsA0y5SIG+gYylLbSNBAoc0E4 fZ29FOoCCudW9SQsOwAHQEWOarnay2qLvNZxkaCxk7rDSflD/A0s+GLzG0/Dc7FwlOz7Ar7H Tfn2XCiJmLnvmnxnbnpgnuxrtMnt+J8KogOOWtjYwvJizomkKUYu1aKsa/lRQUhM3q11owit nLpH4bTrROwlfcZHu8rxeo+ySI6kdW11bYxVWVgWTurKXCLVpQYaox5vMqTjLj50Utp9162q 5QtljpzaZ/Nh/cgD/7o+HBShACrDvEnVMZjeURg3ZDOLFuD4N5kIp3xjIxLL4wWAj+6IwhDd B0CtDd6Pt8YTqhHg7kl1gq79q2UnspGBCaBmAEp8yOyjBT2Et01k0C2aUk7zs93aN4b6MBy/ XPM6xumr0LZsgKbZhlDONEZcesEGTCTT/FLWr6GyWpKIg3f1b277Ln6rQ84++nPLYSyoEppZ jHWFRE8UYvZkPHE6S1rd122yGIZF/4cSXmy8lY6ZQ8kKb7XqDXPSqKT01ru9e8os8YHtbQV5 +ISdNrKs6mCVGrNZdC3gX4VZUXA2IZStcpttEyXE/LjdnMLqHsq+zHYNfeLLfgCl8fKyHCK0 pGeAK2CNRL70itVHO9qgPWQWnRdkv2+o81MKWyxZlX9KE9cql39iQFg1Ww4c+GbRdYtLYtQU d4KLT71oeypWy8+3f0/3xkUyAtSnp90fHFaTdntAUKO0T7ffIooNOEY11f23OBO1tZQ97JFh Vc43B647i+IZDV5S1KMaPoDkuqy18o4F6aRZYVnaOOoe3/fIkjM5ogUKttUSPRFxJ0ng5ugH xZaBANQ3LeEj+Gs9TnsLUkQMXkM/VsigaiJsBZ7VjFs1+HmM0pTnwHGwK1XdWvmgYoTTpMjl hX+6sS6YDw3gqHGC8auqAVIVdMYGOYDPZjAB6ebItZoLztZTp9VHyHnzCclhE1dFf77kl6vB 2TEQSkPdXwRnZNsHFR1ajntGl5cWiQZGpcQHF3u48VLxWMhl9DlcuwIoaj2WqYbVUPhtwHOD beeD0IP0dF3NasziOYnz6ECFQrzpgjJfbmEbwmar3fs0ndbrGgpOUjJbt57ZxlPNfhvqs3Su qZYRaSNy69JOUz2QCZz0xVThVcmT0Bq7fP1xLk5mTjgyJ6LvrWPVh8R7YUZ/ub9HPpQv6U0J N/yfI51NHARlnZW5qj8+XwaTUGFzb45UiRZMssoYpPva0zuKBodqOrGQfg5TVi5lEGMMzwlE kiW6x177DKB593c6UpCldk12tssO7KEVAivQP3CNIvZF0Bj3fUONWS/rrDwIBfdXGplU/VMV mb/zY1xYa8YwKzkZobAbk3O2JYdQwV72lj5vqLc+TreU+XXtAG2FqxKXmmdrBBDICDBLULtx 5/p/WFhfWeeSa9+Afeu1JAU+9z2lfiZcO5GwSXH+FUt/S8JFSXm6OvpPeJsw2fc0rzV20owa tfdUIRacxfij4tyK0PuxLCNZDfkwYCiFtR4TZui1j3/JOpiV2rRH17DQ== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41322379" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aR8cZTscSsAQVIPiB/sMjmQCwS3wI2SJjQyWIS6OyzvOtsvO3KW9mj903n7dQIPLRmVGJh8pkyQPz8oXuFAjasI0O/fu/Sg19jXrJjD7SqrhK47hjfYGuxy0699P4bisbCo94rcL/h1zkvo8XBXzlVb6c7PCO5GMlI8zNqzmr00hmvhGVUOKnhG5treZKvxeJO0ETN2IZdAr4xzGPWIeo5DWEVXwVzCSmWUsIHy2EDqrx83RPRYcZZ/zEG9fOnT+d0BVGHudDsi2KP3b/MpZOLN6UqmSnyUDToCkhvXPHyxC2qXrXTMe3e156naDeJUGBfYtekSe9HRLqFjr5KBlUA== 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=Ke3HLuqORzOFlUKMPs/d/zUjkzAyI5FfHtUyvohI96I=; b=U6y2YQ+WHjT3fKwWcLLKEvyYbEOjUsbBzDDz3C8qH/oLX+rN8AaeJZHoxByBqnacsNFAsVqhI37QhmD9A0UnJ4moSyCYBjuyRcj4tn58wc7OasqTtmSbx+ZksbIM66n80y83GgW2/GbU+b4snxEqunN6uVC0UvGadReLiuL9WtQlb8F/P5RDoxJgoVJPVg9Mg2BpHmBbOHQTo/O8cor4Zev68YephgANveVViNaHxed69dTGK5RHFBjvf47rgsJzkpTuEJmwiSFy2TIDNu6VFW7C9R8bYJsyU/TIGOuF3iaF2/f3aTWxNhqAXuEhsYdDk3QE/+WBqrRVgFOqJ+rvPg== 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=Ke3HLuqORzOFlUKMPs/d/zUjkzAyI5FfHtUyvohI96I=; b=GpYuKG/rdsVEI9/Wx71EDXV49WnbYWONniy0wvG2eOpVQWFS2f+rUNfcoz+V0+KFcqRF1aIvRswmFBKFeA5MbOvcIrJpPye+PP2xOhYkJyIhPC4QG033WvGPvg16RHYOvueA6pMrx9ci8gDLMLPGA6oHhWPsnC20EXONVOrw/Dg= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 17/21] libs/guest: introduce helper set cpu topology in cpu policy Date: Tue, 13 Apr 2021 16:01:35 +0200 Message-ID: <20210413140140.73690-18-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0168.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:1::31) 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: 8d39fafd-e6f1-409b-7c42-08d8fe84eb90 X-MS-TrafficTypeDiagnostic: DM5PR03MB2969: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1169; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MVfyxhuEeeB1mL0HxJycAj3tyHOTCi85pXBevdaddypQCDwZt21xEzEt18HBF6+6Ii5twBFOMFMlvKvgE2ZSxbUwaCCtWDcVDG28T4XSM+bb1JMKRE8ll95IcgatU3gL/LxUJqtEJOZQPpnCeR9sbWhpA8+2NiYoNFjMYxUJf+7JVMUo3/HZW+6khVOBIRsu0SycAcod2e0ze+VGpTm5ZUA5RX32U8yltuCtrD1Cm6F8o2ZJZKhiy5IkHOJE7fC/hBiDC7/L230v17h9yz5ky9Tr3CJcDsnEXWAI91GpRT5lSJCg9iwMKu2ta6QHKuk06wcuvb2K4EdI8PO4sjhCfSkg6Odkrk1QF5u+z5fiyYP32OmsTQF5ZvKaNNj8VniMGu/8fhcfUL89LtVIRPrwncRDkvu8kWsjkFw5j7ZAAjGjg1f17h5DGiurG132SxLzDRfHJVrPMb8naZlKrLz3gUMdKpPBhl4uz5FiCALDuxF9/GavZ/nIc5lrhWUcACNmxCwE0bqCTrJgGXuwlWLvDqtdgnHdFt1dBnBqxXWWXTB4MwAnJQBxSIO3ALbHpTGgOtgkGI0+9w5s5fLQz3NI2CxCso3vkFLzbF/oSD92Jr0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(136003)(39850400004)(366004)(83380400001)(186003)(6496006)(316002)(2906002)(4326008)(36756003)(54906003)(6916009)(2616005)(16526019)(26005)(478600001)(6486002)(1076003)(8676002)(8936002)(5660300002)(66556008)(66946007)(86362001)(66476007)(38100700002)(956004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?+rqwXP+lCmJ+DmQJIdp+2/EDZc90DT?= =?utf-8?q?a80hEwEor/zOLE6WlIj+xvPVQYpaKsKUEEzEGZEaCdOBTvSWBI+08D+iHm8STfaV8?= =?utf-8?q?dlvcbm+5YxwNXlnC+0peezG7Te2nObzmnq0eY1q3pu0/JKG38jrPwHvp3scUDBe+F?= =?utf-8?q?wVorA26/vG79Ov5K3He6FN5PkKu8FmBYRuPq0/s/QdKpa4PlShqiMw05v94a2sZYp?= =?utf-8?q?KIOISujhttoYbUHJho/ullwIEv1QDyv2kQ32X0Ayz344jch6TLN/hMPJD9HdNsS8Q?= =?utf-8?q?kScNDamGssJ+a/NgjWPuoG5krKhMyVoCiCV3mvFbKy+WfQcGLOWUp5i+FQuF1sDsc?= =?utf-8?q?EACYsKWePJm0cPfBq+jrys27sNq8XX/6Lo2mnlsDtWJ2uzQtw0dPB3ZQFX9R7L7BZ?= =?utf-8?q?Dan7IucD8PV46RjPt3phUDkRqyk1yo0radSpU5fp41Gm4gnFlbh0SMwj9kjx9eI4q?= =?utf-8?q?5Z+ggVAFqLt1+TSdjzzR39py5A7LplxMiPaIFmraUdetYioih4ftM+PF80w2RERdM?= =?utf-8?q?DhH8Py6GzmvQXaCsv7Ql6Jsiao0r8P/G+wqodJbg50vfWCG0Wujq8pFysuRBTk/Tq?= =?utf-8?q?3QXEkPorf0ZS05ZouMHoU6QIuSNMFFUrXAXhDxpzcmnyEfuXovPqDMFBfmkuqnoMd?= =?utf-8?q?Qda9DyAbDjEoH6sGpAlNp1zJMXnSuF4BL7jQmJI+oGboZVN2YBCRiH0TvHAT6MR9+?= =?utf-8?q?1O8ZXeRFvEt0oVWx7evbm9yE2YxUDUMk/5xeVc8L9YM6m5xF394ILirBHExQU1rw+?= =?utf-8?q?ra/FceCRcvpSUjChnHSDy7jyy7JbFGv02WYq/q0w0U2EaZfTvZno3izLbih1PX75m?= =?utf-8?q?9Sjt9Wbrcp2HcLnSz8drPCW0kBaL5fOe1GfWJjGDomz4Rk9e0WAmgwovKTHOphNnr?= =?utf-8?q?8WX4Z+5okIKv5h1L+VAd6pZWuhozkMLcRrxu2zHQo3JctkYlU37hkAfoP8kFkGprI?= =?utf-8?q?yK/oIQ2a/U7nv7xpsIF+kgq7nvBYTfBdz9o1q2MYtpkQ1FjeYf/azVw1EYennavSj?= =?utf-8?q?YQctX4cCDulFX/bZDecoPC2A3RmsLJwKluyYyoILwvMLrcEy8oKmSV4xKm2zlUvj7?= =?utf-8?q?jbpisn9oAa/e0Ck4wOu63lMjHN04jSB6RnPYWpMt19KBiW8UMndCi8bhe5bQQY4v7?= =?utf-8?q?VU++ctfPwWrR3zOrZb8cEQJp2z+X6v0pLXqNr8HT3HYQnVGvPQ3aBGomBGN3qj8n5?= =?utf-8?q?4nbJCTaqlyxsMZzdznQ1KLVY6UnLO/s9TgPwDLyciomVmlZokOvA7LAWiUQeKI/qE?= =?utf-8?q?ltKBcgR4ZKEux+?= X-MS-Exchange-CrossTenant-Network-Message-Id: 8d39fafd-e6f1-409b-7c42-08d8fe84eb90 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:31.5547 (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: TYvGGoYpb5NRfQVkIoItik3NkEJdt9azkHYAC2GFH7BhXmt0dCfW0yPot7SGlg0Cbhd8w0W/ighPtN1AvxUb0g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2969 X-OriginatorOrg: citrix.com This logic is pulled out from xc_cpuid_apply_policy and placed into a separate helper. Note the legacy part of the introduced function, as long term Xen will require a proper topology setter function capable of expressing a more diverse set of topologies. No functional change intended. Signed-off-by: Roger Pau Monné --- - s/xc_cpu_policy_topology/xc_cpu_policy_legacy_topology/ --- tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 182 +++++++++++++++++--------------- 2 files changed, 103 insertions(+), 83 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 89a73fd6823..ec184bccd3f 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2631,6 +2631,10 @@ int xc_cpu_policy_calc_compatible(xc_interface *xch, int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, bool hvm); +/* Setup the legacy policy topology. */ +int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, + 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_x86.c index 6486ac4c673..83cd71148f7 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -443,13 +443,11 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, { int rc; xc_dominfo_t di; - unsigned int i, nr_leaves, nr_msrs; + unsigned int nr_leaves, nr_msrs; xen_cpuid_leaf_t *leaves = NULL; struct cpuid_policy *p = NULL; struct xc_cpu_policy policy = { }; uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; - uint32_t host_featureset[FEATURESET_NR_ENTRIES] = {}; - uint32_t len = ARRAY_SIZE(host_featureset); if ( xc_domain_getinfo(xch, domid, 1, &di) != 1 || di.domid != domid ) @@ -472,22 +470,6 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, (p = calloc(1, sizeof(*p))) == NULL ) goto out; - /* Get the host policy. */ - rc = xc_get_cpu_featureset(xch, XEN_SYSCTL_cpu_featureset_host, - &len, host_featureset); - if ( rc ) - { - /* Tolerate "buffer too small", as we've got the bits we need. */ - if ( errno == ENOBUFS ) - rc = 0; - else - { - PERROR("Failed to obtain host featureset"); - rc = -errno; - goto out; - } - } - /* Get the domain's default policy. */ nr_msrs = 0; rc = get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default @@ -575,70 +557,11 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, } } - 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 = test_bit(X86_FEATURE_HTT, host_featureset); - p->extd.cmp_legacy = test_bit(X86_FEATURE_CMP_LEGACY, host_featureset); - } - else - { - /* - * Topology for HVM guests is entirely controlled by Xen. For now, we - * hardcode APIC_ID = vcpu_id * 2 to give the illusion of no SMT. - */ - p->basic.htt = true; - p->extd.cmp_legacy = false; - - /* - * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package. - * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to avoid - * overflow. - */ - if ( !(p->basic.lppp & 0x80) ) - p->basic.lppp *= 2; - - switch ( p->x86_vendor ) - { - case X86_VENDOR_INTEL: - for ( i = 0; (p->cache.subleaf[i].type && - i < ARRAY_SIZE(p->cache.raw)); ++i ) - { - p->cache.subleaf[i].cores_per_package = - (p->cache.subleaf[i].cores_per_package << 1) | 1; - p->cache.subleaf[i].threads_per_cache = 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 = 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 != 0 && p->extd.apic_id_size < 0x7 ) - p->extd.apic_id_size++; - - p->extd.nc = (p->extd.nc << 1) | 1; - } - break; - } - } + policy.cpuid = *p; + rc = xc_cpu_policy_legacy_topology(xch, &policy, di.hvm); + if ( rc ) + goto out; + *p = policy.cpuid; rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) @@ -1104,3 +1027,96 @@ int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, xc_cpu_policy_destroy(host); return rc; } + +int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, + bool hvm) +{ + if ( !hvm ) + { + xc_cpu_policy_t host; + int rc; + + host = xc_cpu_policy_init(); + if ( !host ) + { + errno = ENOMEM; + return -1; + } + + rc = xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); + if ( rc ) + { + ERROR("Failed to get host policy"); + xc_cpu_policy_destroy(host); + return rc; + } + + + /* + * On hardware without CPUID Faulting, PV guests see real topology. + * As a consequence, they also need to see the host htt/cmp fields. + */ + policy->cpuid.basic.htt = host->cpuid.basic.htt; + policy->cpuid.extd.cmp_legacy = host->cpuid.extd.cmp_legacy; + } + else + { + unsigned int i; + + /* + * Topology for HVM guests is entirely controlled by Xen. For now, we + * hardcode APIC_ID = vcpu_id * 2 to give the illusion of no SMT. + */ + policy->cpuid.basic.htt = true; + policy->cpuid.extd.cmp_legacy = false; + + /* + * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package. + * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to avoid + * overflow. + */ + if ( !(policy->cpuid.basic.lppp & 0x80) ) + policy->cpuid.basic.lppp *= 2; + + switch ( policy->cpuid.x86_vendor ) + { + case X86_VENDOR_INTEL: + for ( i = 0; (policy->cpuid.cache.subleaf[i].type && + i < ARRAY_SIZE(policy->cpuid.cache.raw)); ++i ) + { + policy->cpuid.cache.subleaf[i].cores_per_package = + (policy->cpuid.cache.subleaf[i].cores_per_package << 1) | 1; + policy->cpuid.cache.subleaf[i].threads_per_cache = 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 = vCPU_ID * 2. But avoid + * - overflow, + * - going out of sync with leaf 1 EBX[23:16], + * - incrementing ApicIdCoreSize when it's zero (which changes the + * meaning of bits 7:0). + * + * UPDATE: I addition to avoiding overflow, some + * proprietary operating systems have trouble with + * apic_id_size values greater than 7. Limit the value to + * 7 for now. + */ + if ( policy->cpuid.extd.nc < 0x7f ) + { + if ( policy->cpuid.extd.apic_id_size != 0 && + policy->cpuid.extd.apic_id_size < 0x7 ) + policy->cpuid.extd.apic_id_size++; + + policy->cpuid.extd.nc = (policy->cpuid.extd.nc << 1) | 1; + } + break; + } + } + + return 0; +} From patchwork Tue Apr 13 14:01:36 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: 12200651 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.7 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,URIBL_BLOCKED, 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 76917C433ED for ; Tue, 13 Apr 2021 14:03:54 +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 0D22961206 for ; Tue, 13 Apr 2021 14:03:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D22961206 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.109829.209709 (Exim 4.92) (envelope-from ) id 1lWJdm-0006Rv-60; Tue, 13 Apr 2021 14:03:42 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109829.209709; Tue, 13 Apr 2021 14:03: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 1lWJdm-0006Rm-29; Tue, 13 Apr 2021 14:03:42 +0000 Received: by outflank-mailman (input) for mailman id 109829; Tue, 13 Apr 2021 14:03: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 1lWJdl-0006KX-5I for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:41 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 02147ad1-c3de-48ca-8106-a6755cb7693f; Tue, 13 Apr 2021 14:03:39 +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: 02147ad1-c3de-48ca-8106-a6755cb7693f DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322619; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=y5+wq5v92xJaRWVBJA3GfnjlX1XmtbKxgDkEMUjd/7g=; b=ZBzbBoLw7qUwCwwxaYsH/pxKvPxjI6LrwoMrf7O3IS0cqh2qRI9dp7Cy 6vQ8R5XA9qYvmDz6lmWGbyu97nDP3/G0z43+uy+pk9DgaHqhOMs8M1jkM 0Cfrdu1v+HkZIfPP5waf1tKMXkoQAPoC+L1mLqqz2VuoIGZ3Y+H0lg9wt 0=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: CxjGfYuM1jq6+8dncgah+SBVUc8hssM40RcThgFGL8K0u1z9MCHjKpvKpa8gS8XtKdklvjEkwm /F9PQY4IDbmaglIRpMR3eg7Uw0ByVs1iS92vLl+o3tX8rbXfLaoSN7PZPd2pB63i5LSORav+bu KPuMMGPMeNTtk4uH4TIRCOXQDWimWqg+8SwSoHvYWpX+fhK7k7jI3lKgFkB7snrASnWG2piv01 ON+wAId+VKAr28GKI32dgw2D6oo/zzZnNuWRv0e6VgI0n5Xbzqkqut9xnl/TJrhlNSAFZIZFbB Z8w= X-SBRS: 5.2 X-MesageID: 41322412 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:elh6cqj7ZxQ6f4HiewMU9HpWmHBQX19w3DAbvn1ZSRFFG/Gwv/ uF2NwGyB75jysQUnk8mdaGfJKNW2/Y6IQd2+YsFJ+Ydk3DtHGzJI9vqbHjzTrpBjHk+odmuZ tIW5NVTOf9BV0St6vHySGlDtctx8SG+qi0heHYi0xgVx1udrsI1WZEIyywe3cGIDVuL5w/CZ aa+457vDKmY3sadYCWAXMCUujFqbTw5e7bSDQBAAMq7xTLsCOw5NfBYmWl9zo9cxcK+7ct9m DZjxf0j5/Mj9iXwgLRvlWjiah+t8DmzrJ4da6xo+gTbg7hkwO5ILlmMofyxwwdhMGKxBIUnM LXoxEmVv4Dm0/5Wm2uuxPi103B/V8Vmgbf4GSVi3fivsD1LQhSY6Eq5fM7A2nkwnEts91m3K VA03jxjessMTr6kDng/N+Nbhl2lyOP0AsfuNQOhH9SW5Z2Us43kaUj+ipuYfI9NRO/woUmHO 5yNdrb9fZbfHiLBkqpwFVH8ZiCWG8+EQyBRVVHksuJ0yJOlHQ89EcAwtcD901wuK4Vet1h3a DpI65onLZBQos/ar98Pv4IRY+SBnbWSRzBHWqOKT3cZe46EkOIj6SyzKQ+5emsdpBN5oA1go 79XFRRsnN3U17yCOWVtac7sizlcSGYZ3DA28te7592tvnXX7zwKxCOT1gojo+Jv+gfOMvGQP y+UagmQsPLHC/LI8Jkzgf+U55dJT01S8sOoOs2XFqIv4blMYvvmuvHcOvCBbbkHDo+M1mPQE crbXzWHoFt/0qrUnj3jFz6QHX2YHHy+pp2Dez78oEouc0wH7wJljJQpUWy58mNJzEHmLcxZl FCLLTulb7+gWG3+G3P/lh4IxY1NDcQ3JzQF1dx4SMaOUL9drgO//+Ff3pJ4XeBLhhjC+TbDR BYvFYy3a6sNZSfyWQDBrucQyynpkpWgEjPY4YXm6WF68ugUIg/FIwaVKt4EhiOMQd0lwZsoG JqcxQFWUfbKzPrhcye/d8pLdCaU+M5rBagIMZSp36an16bv9sTSnwSWCPrbdSamj80Rz1fhk R49ogWhLboo0fpFUIPxMADdHFcYmWeB7xLSCCIfp9dlLzQdAZsdmuSnjCBhxYvem3lylUKig XaXF6pUMCOJmAYlmFT067s/l8xTGmbck5qQl1RsIF2Fw39yz1O+N7OQpD2/3qaa1MEzO1YDS rMZiEKJBhyg/qt0gSOpTqEHXI655knM+DHFo4/e7XL1n7FEvzPqYg2W9tvuLp1PtHnteEGFd +FcwiONTXiFqcH3ReWqntNAlgDlFAU1dfTnDvr42iz0CRhXb78IFF6S6oaJN/ZxW7+XPqM2I h4i9VwnebYCBSEVve2jYXsKxhEIVfvhETzaccCg5Vdp7gzu7t+BIOza0qB6Fh3mDEFaP7pn0 YfSplh6L/POoVTb9UfEhgpi2YBpZCqFg8XqQT4De81QEE1g1LaN92P5aDUqbBHODz3mCLAfX 2W8yhQ5J7+LlO+/I9fL6I7OmJNbkcgrFxk4eOZboXVYT/aPd1rzR6fMnWndqVaR7XAMbIMrg xi69XNu+OMbSL31ETxujR8S5g+vlqPcIeXAAiWH/RP/MH/EVOQgrGy6Mr2tQzJc1KAGg0lrL wAU1cRYMRFgiQji4Ny8hHacN2JnmsV131E4T9mkVbx3JOB+2mzJzAeDTHk X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41322412" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D2JvE0+ooWjkoP4e95ADW87M15OBVrGy6sw408MBCeoy3tNmm7tKOjfqw3pS356UDXjpB9PMPmTytxZ5TonYzgO4A/TlXdqWQlGXue9hz6nLFrngPFg55Vr7D+Qk4o/e1CDThaoUhF18iGyD3Qt82tFlnM+5oUPT5aC5d73u/ePscoZKEXFFeBP/bFfQ1PwYp6RQiLkq4jmZ7fVHjR+tRRh3h5cFw3hwjB8LVAV6yhM53L1oW/uoFHU5dQ/eQMXDMI8pAteGyzkSz8iaedZ2g71cJeFabVAI42c8kf9FPPkvTDR3pLgwUYx8bWPsMwvbKnQuzFrl8x719TFGk61N3A== 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=dhDbUZkOllUWicuxg47GICno5ICsaetEMRtEl5iO2+0=; b=BKgnFeQa8/RVaVfkH6gEuL7rPWsNxtvv9MI2UlNgwQZRF6ofbv7SVAYNdc20vHlAjT71OhhGb4fLcTlRk3OjyJRSN65LNGkYNZbKNarhq9YsrroE/X51K+GVsIHT+YklYFrwU1h0HTcG6Y9xWLtiNvaTh7AjCxYZ+0h2kOPyMIeEYzMrZNT4vAZGGX28GEuxESlcFFijlxneiKQLIq48OkAOshxzhunmc0tBc7LdC91DDJNMZi7zbK2b3pluxDOLQhXN3h/VZboYHOuFF5DFow56jo+bltexGDLPzJeAT5Ez1AMBa+KxvUxQiO6yli5aV+aDbcIjY060DqY8BNrAAw== 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=dhDbUZkOllUWicuxg47GICno5ICsaetEMRtEl5iO2+0=; b=IFTJdP5kdWdvX1DO/Yw2nJIuP9le24n1HeV/+CaxNUp8Wxrea9N6DvUJsYTprC4xJC/DBXb9LC0kGsCbz3pIJxlG6TQICybF9/joiEKK8GZf+9hGYSQ+VRn0vh+FfKm6FM5sWW4bWLyMLyCi5J8VWmhk5O/MaAoAsX0+LgT1rEo= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 18/21] libs/guest: rework xc_cpuid_xend_policy Date: Tue, 13 Apr 2021 16:01:36 +0200 Message-ID: <20210413140140.73690-19-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0163.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:1::26) 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: ebbfea3f-dcd6-4205-08a4-08d8fe84eef3 X-MS-TrafficTypeDiagnostic: DM5PR03MB2969: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:65; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BNb3tyYF9AEA2J87W+GYK1OEjjC7FUwqNAjYvUC66HxgD76ltkDWvU53LETwA0G0JQTpfHykJaMZjsFR9OUawuSs9cC6bV5A5UliuRcZoYOAx68z/LMif2p1tIonFfU3goXmPLmLUEJy0q0SIPKFEAZafmVtIJ90/z6PJGx2v0MlJJxDFEvtekkYi2aoJSgrFE0kFBRSXsoD6Z1vm9DTOzPTgcj0A334sQKC1nGGfxpSlbkDV9/5FiN8VXlZUyCrz15OaXe0CAM2gls2XxqoYKTR8gEbTUVYiselUu0uXedYzsyq2r6jXutv3JQKUnrEwuMJgvkIoUMhR5nbGdmiLw3/2hs5Fux4DdfMkZdwFXa4cEp+NqxsntuDfNJ1s/L94nRvn6hIBAWyocwpSVhCMRHfE3yyPtCbhjA+0ctdgAs5vPcyZ98KZb0Yfts0Wt7LsOuZr9u6rXX7oV/ivvZvVMjUIFa8Rh/pGP3CVcazfXkqBeL343q3DdyVTP+0/FgIPdeh4+6e7Q5R8XBPCHgk1+Z+pRlXZIiIr4oYC2H3D3BeJHV1xyqKZs3e2c01qGZqtWMO6B6xawJPTlIP/GY2+YBFPRVN3gmP/fmqRgZ82dM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(136003)(39850400004)(366004)(83380400001)(186003)(6496006)(316002)(2906002)(4326008)(36756003)(54906003)(6916009)(2616005)(16526019)(26005)(478600001)(6486002)(1076003)(8676002)(8936002)(5660300002)(66556008)(66946007)(86362001)(66476007)(38100700002)(956004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?sD7DKTj8KYKhaiIgsI5nTz5YYKaO15?= =?utf-8?q?Si2yoAvxLSZHydLseL4mjKtcacovTqqs7v8ig8vM39SStjDQC2o/ARsSAKc8/78ED?= =?utf-8?q?9Hlmrz523Y9Kq2JLJxmcWhEWeZFQ+t+NtgbBjGBwkCKnhs/XAfc/HqfGK86YzvKIs?= =?utf-8?q?uDzufn5EIC6+FcDHMpKurcRvT4YjIc9zNpVHiccKftolnDfEkrZx5fR5cTG1nZPM3?= =?utf-8?q?VWpCThjnc5+xE3vc4aiseW4nvM1o3/ekBJtEJVG8CoI0iuesmEPIjYMXJEV3iIiZf?= =?utf-8?q?lXD0fnlRtvYtzTuexBy0JVdNSBErpFNfC2c0LW4ZpsTRizMz6elKUEefFu0zz5eSr?= =?utf-8?q?/pJgkUzebZzUSxe9we9vtggV7ZlN8j7zCGDL2wJ9sDdWNSPT2o2wimLXMpc0jwd9f?= =?utf-8?q?GbP2U2g10tsDCUJEXla+Hmy6R4LxG134He/5Yt7KeSRlx7qUXm2lwBJ7Rd5b2zWiy?= =?utf-8?q?GifuXLji7JDCSu07Bhmk5WixtzuiWdZA28I5PRLH1VhKXF9vPyai7NHhs5hYl4hKL?= =?utf-8?q?dZh4LY0aoDClb1q21e83dzvkuCaG1ggYMo/8k2daK1KhMlat312OsmT/VKj7UmNLH?= =?utf-8?q?uL/qv+EasuJwvkzRRfrLZOgmcRx7LO1QNd9eHVcNucRPE6DBM7qRbnXWyPb8vNL5D?= =?utf-8?q?xzHRN4G1Ic5yw/FPSShhFLpX/LWHqXJs5ARFJMqhcMXu1siW3OJrQKQqmGV3kaZLk?= =?utf-8?q?Hj1eKl+5+7kuE5iBDYsSnFIq6GqyvzF7QhE4cjXuNL/f8Pf2dM9gTNhl19ndwBw1s?= =?utf-8?q?cbJ26mgnqtdrijcfDiBv+pPu9gIq38ekHlgKifZMIPT8r7H7CN/3+vnaWIqyAxx88?= =?utf-8?q?tOZsS2ESmVAUh88c+4oRhxVVD3KOE+Sp0X3GiIXZ/31qUpjD3wsAMYE5IQhYfcgLC?= =?utf-8?q?TJmbQvtAgb9ygwtwuCYmNfF8pzZMMOXit0hLoGi4fHcDYnOFdRYwUXr0rUMTBblD/?= =?utf-8?q?soQjx3YQWqV27fTQP1p66gUtcteczsmFYsVONcWHWds7qEx2oF+mg5LoHoQ2tEY2x?= =?utf-8?q?0VtOsEpXWcvyG9ZkdvDJhCuLed7SsADNs1ls2JmTiGCf8Qc/T8pjzwLWV08Ll+4jK?= =?utf-8?q?H9wd/hlx7gnaQKmv1KeAztG28BOIOuTCPvlRs02OJHSsjj6xuQWZORVM8pI1FBgEM?= =?utf-8?q?VGz9dF0RppgKfjz6g4EPIgAfmFOqjPnMTJsPcz4idGMoztSQZuJhT8qWULVOT+DfA?= =?utf-8?q?6Ja9AEaitiGyVWC22Kf1C+w8EcGJbD+DxlivFw9/UetrT9WXuQGW6wsjn1FL9uUpt?= =?utf-8?q?LrtfdCtp7PJHmL?= X-MS-Exchange-CrossTenant-Network-Message-Id: ebbfea3f-dcd6-4205-08a4-08d8fe84eef3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:37.2237 (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: vdQI8/0ShcO5vCUU8yRqMfMDVCB3C5aTDBNgAFguYRDA+o331dnaqHZgS6i1LUPfPHU8/nqZfhgN4a+ZBLXy5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2969 X-OriginatorOrg: citrix.com Rename xc_cpuid_xend_policy to xc_cpu_policy_apply_cpuid and make it public. Modify the function internally to use the new xc_cpu_policy_* set of functions. Also don't apply the passed policy to a domain directly, and instead modify the provided xc_cpu_policy_t. The caller will be responsible of applying the modified cpu policy to the domain. Note that further patches will end up removing this function, as the callers should have the necessary helpers to modify an xc_cpu_policy_t themselves. No functional change intended. Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 4 + tools/libs/guest/xg_cpuid_x86.c | 182 ++++++++++++++------------------ 2 files changed, 84 insertions(+), 102 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index ec184bccd3f..ce0785f7654 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2635,6 +2635,10 @@ int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, bool hvm); +/* Apply an xc_xend_cpuid object to the policy. */ +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const struct xc_xend_cpuid *cpuid, bool hvm); + int xc_get_cpu_levelling_caps(xc_interface *xch, uint32_t *caps); int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, uint32_t *nr_features, uint32_t *featureset); diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 83cd71148f7..06e3e8131d7 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -288,124 +288,107 @@ static xen_cpuid_leaf_t *find_leaf( return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leaves); } -static int xc_cpuid_xend_policy( - xc_interface *xch, uint32_t domid, const struct xc_xend_cpuid *xend) +int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, + const struct xc_xend_cpuid *cpuid, bool hvm) { int rc; - xc_dominfo_t di; - unsigned int nr_leaves, nr_msrs; - uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; - /* - * Three full policies. The host, default for the domain type, - * and domain current. - */ - xen_cpuid_leaf_t *host = NULL, *def = NULL, *cur = NULL; - unsigned int nr_host, nr_def, nr_cur; - - if ( xc_domain_getinfo(xch, domid, 1, &di) != 1 || - di.domid != domid ) - { - ERROR("Failed to obtain d%d info", domid); - rc = -ESRCH; - goto fail; - } - - rc = xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs); - if ( rc ) - { - PERROR("Failed to obtain policy info size"); - rc = -errno; - goto fail; - } + xc_cpu_policy_t host = NULL, def = NULL; - rc = -ENOMEM; - if ( (host = calloc(nr_leaves, sizeof(*host))) == NULL || - (def = calloc(nr_leaves, sizeof(*def))) == NULL || - (cur = calloc(nr_leaves, sizeof(*cur))) == NULL ) - { - ERROR("Unable to allocate memory for %u CPUID leaves", nr_leaves); - goto fail; - } - - /* Get the domain's current policy. */ - nr_msrs = 0; - nr_cur = nr_leaves; - rc = get_domain_cpu_policy(xch, domid, &nr_cur, cur, &nr_msrs, NULL); - if ( rc ) + host = xc_cpu_policy_init(); + def = xc_cpu_policy_init(); + if ( !host || !def ) { - PERROR("Failed to obtain d%d current policy", domid); - rc = -errno; - goto fail; + PERROR("Failed to init policies"); + rc = -ENOMEM; + goto out; } /* Get the domain type's default policy. */ - nr_msrs = 0; - nr_def = nr_leaves; - rc = get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default + rc = xc_cpu_policy_get_system(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_default : XEN_SYSCTL_cpu_policy_pv_default, - &nr_def, def, &nr_msrs, NULL); + def); if ( rc ) { - PERROR("Failed to obtain %s def policy", di.hvm ? "hvm" : "pv"); - rc = -errno; - goto fail; + PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); + goto out; } /* Get the host policy. */ - nr_msrs = 0; - nr_host = nr_leaves; - rc = get_system_cpu_policy(xch, XEN_SYSCTL_cpu_policy_host, - &nr_host, host, &nr_msrs, NULL); + rc = xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); if ( rc ) { PERROR("Failed to obtain host policy"); - rc = -errno; - goto fail; + goto out; } rc = -EINVAL; - for ( ; xend->leaf != XEN_CPUID_INPUT_UNUSED; ++xend ) + for ( ; cpuid->leaf != XEN_CPUID_INPUT_UNUSED; ++cpuid ) { - xen_cpuid_leaf_t *cur_leaf = find_leaf(cur, nr_cur, - xend->leaf, xend->subleaf); - const xen_cpuid_leaf_t *def_leaf = find_leaf(def, nr_def, - xend->leaf, xend->subleaf); - const xen_cpuid_leaf_t *host_leaf = find_leaf(host, nr_host, xend->leaf, - xend->subleaf); - - if ( cur_leaf == NULL || def_leaf == NULL || host_leaf == NULL ) + xen_cpuid_leaf_t cur_leaf; + xen_cpuid_leaf_t def_leaf; + xen_cpuid_leaf_t host_leaf; + + rc = xc_cpu_policy_get_cpuid(xch, policy, cpuid->leaf, cpuid->subleaf, + &cur_leaf); + if ( rc ) { - ERROR("Missing leaf %#x, subleaf %#x", xend->leaf, xend->subleaf); - goto fail; + ERROR("Failed to get current policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + goto out; + } + rc = xc_cpu_policy_get_cpuid(xch, def, cpuid->leaf, cpuid->subleaf, + &def_leaf); + if ( rc ) + { + ERROR("Failed to get def policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + goto out; + } + rc = xc_cpu_policy_get_cpuid(xch, host, cpuid->leaf, cpuid->subleaf, + &host_leaf); + if ( rc ) + { + ERROR("Failed to get host policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + goto out; } - for ( unsigned int i = 0; i < ARRAY_SIZE(xend->policy); i++ ) + for ( unsigned int i = 0; i < ARRAY_SIZE(cpuid->policy); i++ ) { - uint32_t *cur_reg = &cur_leaf->a + i; - const uint32_t *def_reg = &def_leaf->a + i; - const uint32_t *host_reg = &host_leaf->a + i; + uint32_t *cur_reg = &cur_leaf.a + i; + const uint32_t *def_reg = &def_leaf.a + i; + const uint32_t *host_reg = &host_leaf.a + i; - if ( xend->policy[i] == NULL ) + if ( cpuid->policy[i] == NULL ) continue; for ( unsigned int j = 0; j < 32; j++ ) { bool val; - if ( xend->policy[i][j] == '1' ) + switch ( cpuid->policy[i][j] ) + { + case '1': val = true; - else if ( xend->policy[i][j] == '0' ) + break; + + case '0': val = false; - else if ( xend->policy[i][j] == 'x' ) + break; + + case 'x': val = test_bit(31 - j, def_reg); - else if ( xend->policy[i][j] == 'k' || - xend->policy[i][j] == 's' ) + break; + + case 'k': + case 's': val = 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; } clear_bit(31 - j, cur_reg); @@ -413,25 +396,19 @@ static int xc_cpuid_xend_policy( set_bit(31 - j, cur_reg); } } - } - /* Feed the transformed currrent policy back up to Xen. */ - rc = 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 = -errno; - goto fail; + rc = 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; + } } - /* Success! */ - - fail: - free(cur); - free(def); - free(host); + out: + xc_cpu_policy_destroy(def); + xc_cpu_policy_destroy(host); return rc; } @@ -439,7 +416,7 @@ static int xc_cpuid_xend_policy( int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, const uint32_t *featureset, unsigned int nr_features, 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; @@ -563,6 +540,10 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, goto out; *p = policy.cpuid; + rc = xc_cpu_policy_apply_cpuid(xch, &policy, cpuid, di.hvm); + if ( rc ) + goto out; + rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); if ( rc ) { @@ -580,9 +561,6 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, goto out; } - if ( xend && (rc = xc_cpuid_xend_policy(xch, domid, xend)) ) - goto out; - rc = 0; out: From patchwork Tue Apr 13 14:01:37 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: 12200653 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.7 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,URIBL_BLOCKED, 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 63CA9C433B4 for ; Tue, 13 Apr 2021 14:03:57 +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 01632613B2 for ; Tue, 13 Apr 2021 14:03:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 01632613B2 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.109836.209721 (Exim 4.92) (envelope-from ) id 1lWJds-0006a5-Fu; Tue, 13 Apr 2021 14:03:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109836.209721; Tue, 13 Apr 2021 14:03:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJds-0006Zx-Bt; Tue, 13 Apr 2021 14:03:48 +0000 Received: by outflank-mailman (input) for mailman id 109836; Tue, 13 Apr 2021 14:03:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJdr-0006KX-Bn for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:47 +0000 Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c487b8b6-adbe-429a-bc33-38996c013ab6; Tue, 13 Apr 2021 14:03:46 +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: c487b8b6-adbe-429a-bc33-38996c013ab6 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322626; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=cq7WRx5BpsCYjEAJzUUXhgmQH5KGs74ng/5qh4MPnF4=; b=PY3XZBHfGoA7tdRr7tO2ZPJZrJSPmiDv+j2Ok28y8tm3YR1Uw7oDSG8j Jyc+AwqAB25N8PteJeU2YUpM2f90me5ZIRXaJMGFQ0gAGrARvpYBoGd3C g3dR0JfhZJcq+FOQBm2UL31coOoCemSiWNL84ukdCD5Ffl3xfWisU3wYq A=; Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: xzoOk2dYXHI5sGJAd5bxzv5J5AgygmBVfQ1pUdlD+YkSHSsmqN3o7qAhg0mXGknDp3LqvPVAY3 apgABNg3iyOhdj5uaJV0o9wBANuGLFM7WqM40QmgJRfC9IHA7RgcsZMR1IBiUvoq382qYt/UNR T4QEWK79eLxQqlW+QSUBtGkr5rQxQP7jW4I+Ik3rKV5cADXzDgqnTV44ncku254aojtPfGq1fw mvf2ltJG0N5kzhpj1bzKetMjxMFEFFi4H0PQxRGKc+exPmuWCkbe6FEr8p7K4FdSq7b3+nxSHw xW0= X-SBRS: 5.2 X-MesageID: 41614008 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:PoNK06HcFfkz5oBxpLqFbZTXdLJzesId70hD6mlYcjYQWtCEls yogfQQ3QL1jjFUY307hdWcIsC7Lk/03aVepa0cJ62rUgWjgmunK4l+8ZDvqgeNJwTXzcQY76 tpdsFFZeHYJURmjMr8/QmzG8shxt7Cy6yzmeLC1R5WLD1CQYsI1XYcNi+wFEpqSA5aQacjHJ 2H6cZd4xamc3IbbsO0b0N1I9TrjdvNiZ7gfFo6FwcqgTP+8A+AxZzbN1yj3hkYWy5S2rtKyw b4uiHw+6nLiYDc9jbyzGnWhq4m+ufJ6twGP8CUj9hQFzOEsHfSWK1Ee5mv+A84u/uu7lFCqq i9nz4FM95o433cOkGZyCGdojXI6zol53/8xVLwuxKKyqaYNVFKefZpvo5XfgDU7EAtprhHod h29lmUqoZNClf4lDn9juK4Ji1CrFa+onYpjIco/htieLYZAYUhyLA3zQd+FZcNGz/C84Y3EO ViJ9G03ocpTXqqK1/epWVh29qqQzAaGQqHWFELvoiv3yFRh20R9TpV+OUv2lM7sL4tQZhN4O rJdoxuibF1V8cTKYZwHv0IT8ebAnHEKCi8f166EBDCLuUqKnjNo5n47PEe/+exYqEFy5M0hd DoTE5YnXRaQTOvNeS+mLlwtjzdSmS0WjrgjutE4YJih7H6TL33dQWeVVEVlde6qfl3OLybZ9 +DfLZtR9PzJ2rnHohEmyfkXYNJFHUYWMoJ/vkhXVajpd/KN53KuuTXfO27HsuuLR8UHkfERl cTVjn6I8tNqmqxXGXjvRTXU3TxPmzzlKgAVZTyzqw28swgJ4dMug8ahRCS/ceQMwBPtaQwYQ 9bKLPjmaWrmHmu8Q/zniFUEysYKnwQzKTrUntMqwNPGVjza6w/t9KWfn0X+3ebOBllTYfzHB REr1p6vYK7RqbgixwKOpaCCCa3nnETrHWFQ9M3gauY//rofZs+E9IBQ6x+FQLCEjRvggZ0oG J/aAsJL3WvVQ/GuOGAttg5Fevff95zjEOAOshPs0/Ssk2auIUSXHcBZiWvVsSWmA4qYDJRij RKgugiqYvFvQzqBXo0gew+PlEJTGiMGrpJAD6IY5hulqnxdBt9SnqLgjKmmwg+E1CahHk6ty jEF2m5aPvLCl1StjRj3qHm/EhdW0+dc0hzA0oK+rFVJCDjgDJewOWLbq283y+tcVME2PgaKy yASyAVOBlSy9e+0wO1lD6OGW49/IgnOvXQAd0YAvfu80LoDLfNubANHvdS8pogCcvntfUTV/ mDPyCSNzH1BooSqnqoj0dgHBMxjnYqkfnlgkK4qEe52WMyGvrULhBNQaoBL9SV8mjjQLKp3f xC/KYIlNr1Fl+0TNiMjZzzRXpkDDj4pGatVeEmqZxOp8sJxfNONqiedQGN7W1N2RU1Edz9m0 wfSplq+bypAP4bQ+UiPwZiumcznNuBLEEXohX7L+83c1YqlWLaNbqyks31gItqJkWAoQfqUG PvixF1zrPgXyGZ06QdBL91CWNKaFIk4HAKxpLJS6TgTCGrffpE5ly0LzuUd6JcUrGMHfE1og xh69+F28+ReCyQ4nGcgRJLZoZP+X2gW8W8HUalHvNJ6cWzPRC0uZSRifTDxQvfeH+ccEQXhY pMaEwWYIBis1AZ/fIK+xn3bLf2rEIjm0ZZ+hd9mDfWq9Gb3Fs= X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41614008" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZOSJ6fs7Jda5qlJKKj1FRQheVCHhY02lQwEPzFZi5y7bl4SG4kqgvi+1VgkPDpWVhCCRCL56tZGsACXtYD3hF9tU9u4rMaokYpaqV0JweymuyUeWahY+HCEgKSVAgYPzCvPRQ2XyXSxWmIlHyRf2kLXfJoe11wZzGjQHMGiXncM30pRLEsiqs2ndE8LtcRilV/IE3dunNzlHmZV/TOEXrDmSDSdvfGOAqoEDXMnmryVSdxm0tz+Nv4Q8KDutGuPGmOeiS0BFPZGx4Y0QrCE+Ija8BY44QCjBhBfoIPHedFNUC/+9G1YvBex9F8k9mve4MZhV0ftLCzpswzDmt+1bag== 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=yfg3EpqS4Xb7uB8bCvTSbNySuLEELrQoy2D2h5/WPGY=; b=bKxJukOyvWIKNlL6ThxCezHRGUu0aASvCJN9Wwlsm4mhJ1NCyN3Kb6CoK1lM5loHO+Rz3+ly4+kA6A8zVVTV7aj7SqMQCMTDw14sESRTbhNx+tm40tH+hosKlRsKTaWyA1kDXesIQ1BeaCNJkNJVs67JOUET/uPfy0pZ4B6S4Itw00bWIIoqbpmoMadoNmT3xFqVeYWS311dtyrZzNiJsUDgtiLJXnVELNXLDiHTUlIkous3s/KT+XM/zn70MVz3exCA8VXJVj12odTUwi1nT6D/TNS957grtDiBduU8DBAlcEeOYjB/uLLPxK9lnLoWFMsncUismloYDF57oMYPlw== 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=yfg3EpqS4Xb7uB8bCvTSbNySuLEELrQoy2D2h5/WPGY=; b=r2MA396HPbEKem0DYIL8tw+PEzo8w/8mWissdUQtIsS3unLfMorYieXtP4TPro/72MA/wUddLZWvUR4dqhhm1dt01dH8M37DAH+ASd6+qMh49sfMqh7hJMiXwm7pIJfpajpghzoiRuaXHOrsHRrroNqLY3Iayzx+WP3xeFCRkZI= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu Subject: [PATCH v2 19/21] libs/guest: apply a featureset into a cpu policy Date: Tue, 13 Apr 2021 16:01:37 +0200 Message-ID: <20210413140140.73690-20-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0054.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::18) 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: 4c20a9d9-7e3b-4209-de21-08d8fe84f22c X-MS-TrafficTypeDiagnostic: DM5PR03MB2969: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eulKJr/ewBlWyflw6ePV2lqjWX3P+cnD3YBhymmCKOGwQs8NJW0D/Z/Zq8qgkvz2PNpxsa1aEgyYkootf71QKGwMbiqKlN5Bn/725TD3LKOGSVmSLDUMuwlVEqrrqbXiyBlWUo4+giD+EahfhgFLkEOQjA6mxH0qm/nYrC/9focEvHo9WSeq4q8hRFzr65+Gm/blsVKTC4xruyfGzN88QfuXTqY2CHpk5hkrB+tqTnTrK+9KPR9KfF6nqPcl6c2EvX3E+oJkZBCu8XIkDltBxmPRPknMe71puheHgQY4Ay/KYnXo7aVmjN/soH0JldcgM0AzJHUA2VrpTC4PKDTlbX8iiHelFnsB8M66BLXTMLCiyVhy6E6VlbgrHu5ktFsI1PkrFHjdT7zB/llJEtAxdxZ4I4FDyujSs6SX+ZPI5E43tuGkaoEeBUzNl/TK99CO9GrI+ZQ0835MzcZ6PcChJicsfbesOZ7/EtllGOrtpWgkYnt5zciGu0LUIbb0QtHmyGBEZpS7W3IvWBG916SvLyagJAfrBBirqo+9kejLSXw+Ea4buboCqU8+uN3jlPcoOsDVWh3rwKc8LEbfyAcxaUBLXjlgGHHx6cCzuWChjhc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(136003)(39850400004)(366004)(83380400001)(186003)(6496006)(316002)(2906002)(4326008)(36756003)(54906003)(6916009)(2616005)(6666004)(16526019)(26005)(478600001)(6486002)(1076003)(8676002)(8936002)(5660300002)(66556008)(66946007)(86362001)(66476007)(38100700002)(956004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?rC2jrjHk+P2WW9LF8lUVwIsUZKITri?= =?utf-8?q?mvF9O9mjyhk6nS48ngVkPDeDRaB4xtTbWDu+dYHrfR9qnENuz+QyUtk+mXZaSGTt+?= =?utf-8?q?RrVrzq7Ih2aOQjT+mXj2MrPLzgSV+hW6jMDUk7b83JIvTseeyzrXq6uThD88PNGyP?= =?utf-8?q?ouqnlYafIxYwEtt3VJiTp4cyCOH9eQVRpdYVtQ4NhabMBpBTwk9vB9edTcUV1OtfK?= =?utf-8?q?iS6qxr0rWkraLIUPDb5knRbRWkAkDfOecp8bVWVos44VPjnTRX+BNNcxETbshxMqZ?= =?utf-8?q?vubwDK+vtSz7S3r3dTUBCaxIt9jxYzWa1SByZ5qIOF2HMCfirRjgF8FecFBzYlP2Z?= =?utf-8?q?uzlRW0BncUxXjLD46EL5dQh3t/NRvg3uBh5gD55h2tBU5srllbLEJtB9z3voVA4W+?= =?utf-8?q?pviGGzUP+fb9A1NmceA7coOuVbD/sqRd0QyRZzRgp5LYFQZpre6/CkCvd7cTAIbXk?= =?utf-8?q?FiVErR/fExlVas51a6VfaJOuhZMJuiJl7rsVFezuFfeJ7QKr05YUK0KFSzepXWGki?= =?utf-8?q?F/br0PbmSvpNdrQfHGx7hON5WJPjRe+BsZvLWLz0VPwWelVLQueQOR6GNc2DEPkRb?= =?utf-8?q?soAVw4hUF0UNwwZfy4P+M1wS2UK3fbwI+9nf0dWYWZ3KfyDMkEfqP2mWT++S8YF8e?= =?utf-8?q?9SUCfJfDBAszGZH/n9cCOWHAsuKzJI3Pr8CMpzYwNGhBqLnTr/ERgd5EEWp8jU8k2?= =?utf-8?q?OnnmWTTLm3XhuQ7BsTZyybwVR3axG9TKQPuHcY4fuTs8iTHC9IcN4X39KC9hENbw3?= =?utf-8?q?mgAzx8JZrbDBIOhbrs0lJoMzeZCDLm4uqdbZYfMV+kSMbT0ilSwMCykRsNOagSayW?= =?utf-8?q?NWSq2R76RxcaZxeU6ZNHnMkcCi1bgx5U0evMeCzK1M31WmFyCgWCxRlkOglXdNycD?= =?utf-8?q?JH8TdbOWKEjex48J9jmcEAnTHVvvWj1bV84uyoVYb2PsxgYf0AJYR9QW356kRpwim?= =?utf-8?q?75BaMGaYxFQ0L7rWfQtkRRzj5GCKLw3RjbbovbjFHWgALALO2zAf4pzFKLRein7B0?= =?utf-8?q?3qJQ4GSqPZKfiFyL09GLRBJmZxf5wy3DAR0QmGR3cCyMqab0ogsQHvmd3pxCvJqTr?= =?utf-8?q?kF0HUqY/A/T5RwjCGGlVT+xpeCDY8XR+8FFLnRPstLKvM6lDrUAeugp3XaSZeoFJa?= =?utf-8?q?J8V+CJfFpcLuhI3LS1NqBIIRcy+2BomZ6d9psEiAmxpW9/7o/dPcHQE9RhY/lOGjS?= =?utf-8?q?GJsnL6e7Z0L1BYjfHsRbL6xPJvOzDxB/+OxMi7t9jeBg3vTqYvYUSoP94Qvd0iBF7?= =?utf-8?q?SDYpCd3cZsmd4z?= X-MS-Exchange-CrossTenant-Network-Message-Id: 4c20a9d9-7e3b-4209-de21-08d8fe84f22c X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:42.6608 (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: MGU0y1qrO/qX0kBv+NqlI6W64RCq9WKxlhAbOxFCYCU0d/e11g+HRSiRedo/mO39ayuhwYbksOS3bBvmeA3ZAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2969 X-OriginatorOrg: citrix.com Pull out the code from xc_cpuid_apply_policy that applies a featureset to a cpu policy and place it on it's own standalone function that's part of the public interface. No functional change intended. Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 5 ++ tools/libs/guest/xg_cpuid_x86.c | 95 ++++++++++++++++++++------------- 2 files changed, 62 insertions(+), 38 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index ce0785f7654..3fef954d1d1 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -2639,6 +2639,11 @@ int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, const struct xc_xend_cpuid *cpuid, bool hvm); +/* Apply a featureset to the policy. */ +int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t policy, + 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_x86.c index 06e3e8131d7..b0690d9799d 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -481,46 +481,15 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore, if ( featureset ) { - uint32_t disabled_features[FEATURESET_NR_ENTRIES], - feat[FEATURESET_NR_ENTRIES] = {}; - static const uint32_t deep_features[] = 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 = min(FEATURESET_NR_ENTRIES + 0u, nr_features); - - /* Check for truncated set bits. */ - rc = -EOPNOTSUPP; - for ( i = user_len; i < nr_features; ++i ) - if ( featureset[i] != 0 ) - goto out; - - memcpy(feat, featureset, sizeof(*featureset) * user_len); - - /* Disable deep dependencies of disabled features. */ - for ( i = 0; i < ARRAY_SIZE(disabled_features); ++i ) - disabled_features[i] = ~feat[i] & deep_features[i]; - - for ( b = 0; b < sizeof(disabled_features) * CHAR_BIT; ++b ) + policy.cpuid = *p; + rc = xc_cpu_policy_apply_featureset(xch, &policy, featureset, + nr_features); + if ( rc ) { - const uint32_t *dfs; - - if ( !test_bit(b, disabled_features) || - !(dfs = x86_cpuid_lookup_deep_deps(b)) ) - continue; - - for ( i = 0; i < ARRAY_SIZE(disabled_features); ++i ) - { - feat[i] &= ~dfs[i]; - disabled_features[i] &= ~dfs[i]; - } + ERROR("Failed to apply featureset to policy"); + goto out; } - - cpuid_featureset_to_policy(feat, p); + *p = policy.cpuid; } else { @@ -1098,3 +1067,53 @@ int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, return 0; } + +int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t policy, + const uint32_t *featureset, + unsigned int nr_features) +{ + uint32_t disabled_features[FEATURESET_NR_ENTRIES], + feat[FEATURESET_NR_ENTRIES] = {}; + static const uint32_t deep_features[] = 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 = min(FEATURESET_NR_ENTRIES + 0u, nr_features); + + /* Check for truncated set bits. */ + for ( i = user_len; i < nr_features; ++i ) + if ( featureset[i] != 0 ) + { + errno = EOPNOTSUPP; + return -1; + } + + memcpy(feat, featureset, sizeof(*featureset) * user_len); + + /* Disable deep dependencies of disabled features. */ + for ( i = 0; i < ARRAY_SIZE(disabled_features); ++i ) + disabled_features[i] = ~feat[i] & deep_features[i]; + + for ( b = 0; b < sizeof(disabled_features) * CHAR_BIT; ++b ) + { + const uint32_t *dfs; + + if ( !test_bit(b, disabled_features) || + !(dfs = x86_cpuid_lookup_deep_deps(b)) ) + continue; + + for ( i = 0; i < ARRAY_SIZE(disabled_features); ++i ) + { + feat[i] &= ~dfs[i]; + disabled_features[i] &= ~dfs[i]; + } + } + + cpuid_featureset_to_policy(feat, &policy->cpuid); + + return 0; +} From patchwork Tue Apr 13 14:01:38 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: 12200655 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.7 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,URIBL_BLOCKED, 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 BBF10C433B4 for ; Tue, 13 Apr 2021 14:04:08 +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 5E686611CE for ; Tue, 13 Apr 2021 14:04:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5E686611CE 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.109844.209733 (Exim 4.92) (envelope-from ) id 1lWJe3-0006m0-2G; Tue, 13 Apr 2021 14:03:59 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109844.209733; Tue, 13 Apr 2021 14:03: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 1lWJe2-0006ll-St; Tue, 13 Apr 2021 14:03:58 +0000 Received: by outflank-mailman (input) for mailman id 109844; Tue, 13 Apr 2021 14:03:57 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJe1-0006KX-9G for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:03:57 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b22a6313-700b-47c6-8043-5dbf28a6fce9; Tue, 13 Apr 2021 14:03:52 +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: b22a6313-700b-47c6-8043-5dbf28a6fce9 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322632; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=1ZGNdKBhjvThEnMln1+LkfE1eKjpN3KTfKSH625bhak=; b=PbnrFhLkr94vYr4zBfwP9MkXVN3fqcVMRWuxDLEqc6rWGX8h4X74vlkL xd3KUqJEOLZdaSY2lXX0cnBA5OdlH3vKWpRM2VG5x8GA8O+PvpbiXV0db czbMlKGCz3/lc94QKGo0PUu6KvzJQok7tPQBajpe5ED5pqWbbU5Dcbke+ A=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 8gAufaKXGEGoDCe6F/F1z2FkpMfLa8gBEpX6ofA5UnhAwguadMcmbXbU/WFfe/EWUGwjieJXvv x2coIsckgwrbUJFpXsdOO4TurK1+uWGhMbzquwTDI6c+UoVFq9tvoAF4PqCXy08y4WW9bfoFRY 9XVNkLBpGh+REAWLo02V99sOp/9og9GnpUqpwqCaXTslNp2tQQg+IwUe1vVWXV1sUKaPOV/wsl zjf/AZAZbl7zQlDKFqKO5tpOEzOach1AGPqw1/KbLcmf044A5xsMlW8btlCzNcYSQdzRDXxdHN C1w= X-SBRS: 5.2 X-MesageID: 42956165 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:SDdhiq4TPknhxP4onAPXwU2EI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoexzh3LZPy800Ma25VAfr/FGpIoZr8Jf4z1TbdxHW3tV2kZ 1te60WMrDNJHBnkMf35xS5Gd48wN+BtJuln/va0m0Fd2BXQotLhj0JbjqzOEtwWQVAGN4FD5 Ka/MVKvH6Nfn4QY8S9CBA+LpT+jvfMk4/rZgNDOg4/5GC1/E6VwZPZMzzd5BcRVDtT3awvmF KqryXV7riu2svLrCP0+HTU6/1t6bnc4/tFQPeBk80Ebgjr4zzYH7hJf52nkHQLrPq06FAs+e O80ysIG8ho8XveciWUjHLWqnDd+Q0j4XPj1lOU6EGLyaeSJENYerh8rLlUfRfD500rsMsU6t Mw40uju4dKFhSFpSzh5rHzJmBXv3Cpqnkvm/N7tQ05baIibtZq3Oki1XIQOpIBECXm0ZsgAe ljAerNjcwmD2+yXjT3uHJiz8erWWl2NhCaQlIassjQ6DROmmtlpnFoiPA3rzMlztYQWpNE7+ PLPuBBk6xPdNYfaeZYCP0aScW6J2TRSXv3QS2vCGWiMJtCF2PGqpbx7rlwzvqtYoY0wJw7n4 mEeE9EtEYpEnieSfGm7dluyFTgUW+9VTPixoV1/J5ioIDxQ7LtLGmqVE0uqc29uP8Sa/erGs qbCdZzObvOPGHuEYFG00nVQJ9JM0QTV8UTp5IVQFSLjsXXKpD7l+DSffrJTYCdUwoMayfaOD 8uTTLzLMJP4gSAQXnjmiXcXHvrZwje8PtLYe3n1tlW7LJIGpxHswATh1j8zNqMMyd+vqs/e1 Y7BLvml6i8tFSn5Gqg1RQsBjNtSmJupJnwWXJDogEHd2nud6wYhtmZcWdOmFyKOwF4VMGTNA JEvVx49eaWIvWrtG4fIuPiFljfo2oYpXqMQZtZsLaE/93ZdpQxCYtjfrdwGwXNHxlcgh1rt2 9HVQ8BSibkZ3DToJTgqKZRKPDUdtF6jgvuC9VTs2jjuUKVotxqemEWRAe0UcmcgR8nQh1dgl EZyd5ZvJOw3RKUbUcviuUxN1NBLECaGqhPAgi+aIJIobzzYw1rQWCWhTuVtgErdgPRhjYvr1 2kCRfRVeDAA1JbtHwd6Krs/V9uXki2fk57aBlBwMZAPFWDnkw2/f6AZ6K13WfUV0ALxfsFNi rZJREIJBl1+tyx3BmJuTqLGHk83K8yNujFALlLScCU5lqdbKmz0Y0WFf5d+5hocO30uugQSO SFZku7Kij7B+5B4X3iml8VfA1P7F8qnvPj1Ee7sCyW3HsjDeHTJ1ojbbcBON2Y53XlQfHN8J gRt6NAgcKAdkHKLviBwuXrShQGDDX5i2u/VfspppBZprhajso6I7DrFR/zkEha1xA/JvrunE wQQK5H8KnMU7UfCvA6SmZ8xB4Vj9yBI0sgjxzuDsI/dV8riWXHP9nh2cu+lZMfRmmIpA79Ij CkglVg1saAeyuIzrgBDa0sZUxQdUgn8XxnldnyPbH4OUGPd+tZ+kC9PWL4WLhBSLKdEbFVih ph+dmHk6u2cCX/sTqg8AdTE+Zr82y9R9m1Dx/JMelU88aiMVDJu5CU2qeI/X7KYAr+TV8Zi4 1DfVERacoGqgBKtvxJ7gGCDortokwklFNC5ypAjVCF4Pn+3Fvm X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="42956165" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k5BqyPvZiwpyD6PI1ufOTnddjTPosRJJEyWJ0egR42CDlnUs8beoy93a0rjgv42Jm5zzKOOfRa/OWAi2c4E8v8eEGaJuZN761EnV6rozJRD8VdTxIX9ezqroAwKSK1V/5GpTQ4UBOU2cJA1+K7xo6Tua0JcL389dNoTxGk1M9qcKH037zCxNQ99DL108v0gzGmvd9hgzTTZY1VNrjv0A5IXj8KQEFFmldq+CRMpNVKa6gaHHIxGp12eYtCwlqexRjvzjYHrEYlyN77g1Rrcz1lWiK7bPDnJBLfMpNSalCcebjn0GiXSvVNXyxMWli7Yj2l7vxPQUC9OolG1Xst6oJg== 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=ESxMv/ykLpGDWIhuuWTbo4Xni3atEDtt5kOgmKjenh0=; b=f72CMt1U9wmMlKLtcEZ8XsBxvyff6nCTjhS2PDPuhGebhJypXrh+L8aM2Q0PgqgULFcxv7L2yWYSq2k/juElJBmzQ8VLmwHalSEFLdNBdU+ytkOqamU3Vd7E4ZW1EfLGH23ADcbgJK6w/ZO/XAYyHVqiyO65ykSDVR22mLqM6ObknCwPsbV0mWhpCC81x+0Ecc0X2L1GWW4w1NOWy9Q1mmskomeEx7BIjHO94MEcxoZ4FVhmUkS/a2qHG+dz4WtKyh69CX+58lgSw9bch1YjtE88M/gfNI812osd5kwV8EvaN2JsIjDSE8hjb40GS5auDKFYlCuFXgQTUIe8nhNsNQ== 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=ESxMv/ykLpGDWIhuuWTbo4Xni3atEDtt5kOgmKjenh0=; b=MwHAdH5SouZ5jbYseZvDQB0wZplWETdAgm448rW+Yg/fE15VRD9aaq/XD+rqw4vzeF22Mi9Qi79TbJh8pqiG7xDm1EurKkP40/3vsIGIvkTon2RDEIE4+9JNAmsP65vb5z7LxhDrarkIJ5eRrmDIA5Fkhfdl6vTwK9moNkKetLw= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v2 20/21] libs/{light,guest}: implement xc_cpuid_apply_policy in libxl Date: Tue, 13 Apr 2021 16:01:38 +0200 Message-ID: <20210413140140.73690-21-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0066.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::30) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ed5d0484-8858-4498-f588-08d8fe84f5e3 X-MS-TrafficTypeDiagnostic: DM5PR03MB2969: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:153; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TwJ9A6UkPp042MAhw2pkMO0Q81Ql8aqmNaoBnPRHv+LRlGAildlwJXfL9byXCFY0B1b6M6IFJujjhwNPFSlWaWWF6s7xBS73V1sxMqZSLNVQ7HyQRIHDrIl1Tv6drohRrygFF4WWTUZd+vKeJgYGqddH60bZuw9B3JyqGRROI3sJpIpaCwqfcxS0UB0qCzpnWJgn8m9YigRA+NYRosyW8u4bfZPARkuf8TyZzPP8+ZVHZ6IFu4TXMETp3mtwvfhecxraaI7Ks8XN33758Fbvxbc1VGER9ODiDWVQ2V0xc0DcRzpBCQnfnDnR98w6zbCp05x99P4hBu1XvUjg0fWU/oGR48BOvCiRsE9kES2y/DMHN0Gzv3FLRWDAoHvwkVOS/azFbnxd6pzB0bCDVBJgm5sJgbKz/tFaLm2qKxOwmNR7vxrlidMGN1uE99YaQd+e9tc+YYZeiDaiwABFvG8RP98xNA73vDmwAhnZrS2UAXIEa9gGo90lDKS3ZNAAOghagEyC8RY2lUpoR2N2IoPCNL66LL5I/UbzF5NLeBwOLOstjKU3vj1HFcX7bG+wPqehSFaNP0OSB4723lli1W2Dg4VNPsmoaaDxVlEXHqYD6aE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5608.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(376002)(346002)(136003)(39850400004)(366004)(83380400001)(186003)(6496006)(316002)(2906002)(4326008)(36756003)(54906003)(6916009)(2616005)(6666004)(107886003)(16526019)(26005)(478600001)(6486002)(1076003)(8676002)(8936002)(5660300002)(66556008)(66946007)(86362001)(66476007)(38100700002)(956004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?i9uKdECbwNaHbKPYt+/WYy9YfFHNLe?= =?utf-8?q?I0U2mjZfRKoz5NNf5dIxRnHyr/ljQhvJCSQHVFqLx1YC7lZLXEA1j/CCFkjRvTxbO?= =?utf-8?q?JrseUtHBMcyuxKIqPme1wrY0Stpuj1q73PfSlowXp7AdGwRYN3PzrPhMFwtxtt5yZ?= =?utf-8?q?v4UELaxPfECiAUGVZ8pfrAN8neABL0Dc38Ms2M/5hUwAmR8LdOzjODsHfKR/5cbC4?= =?utf-8?q?J3McAcqmokTlruUYsUDhgUXU8CBsqbrvsdtwiEf+ugNrU5C26BeXQr3hLkXy5zebG?= =?utf-8?q?KneJkyCTvEgvzd37Wlz6yr40PLvpQ2yAJv6wjNqZ7fFMzCGRL2B207E21UfC8frwM?= =?utf-8?q?LiA3s/rb8JEl9MYVcIDy8YNbAFi1UPtfZx8lKAqBHpkRsLSjP0W0ZDR6UrarQVekZ?= =?utf-8?q?sMYYqdAl7G2H2NoBDhulMqp+jonbZPXYKTvf8++b2QETuz0HY08/GVsqEOf6jstc1?= =?utf-8?q?Nt0JGaI/7HbNoFrSi7nPi/YgbIJXgfh++rXjF9IBcdTWaWkfmt5mwLQIwPkdm8yv7?= =?utf-8?q?d+B42yzOwwvDZZIDkjRUr/8dMoSHUa34+wDzDv/J6xRgSbjAc7M4XShu3oGKxATLA?= =?utf-8?q?ATBC31MKT7OW6VPnduUvsCjDZmsoOKrGHFr+XWCOX33RkieYFUuntVxyD6P5yAlWm?= =?utf-8?q?yvwCPEYkKY18ePPRx9k0f0DZoXvofPjLugEFyCoPc0LTevunX37Huxz5C4urH4Fis?= =?utf-8?q?SQWxjDlJd2y1iE8GQT5YAilSAVjgcU1/OOcu+LDqUqWQVp7jekZ9V54orp0Mc1Fxn?= =?utf-8?q?s/bKYbPPEudovJCfXvRptiHp7enYctNqK+qtUf4rQEt/qfCLCcTqXaFXcVpuYyt8C?= =?utf-8?q?Ghdx4h8EjB0MWYfVcpocf0wUylOH+boyZ85ntnE87YVYzFfEmDOF6eH51nWjvE6Lo?= =?utf-8?q?u5y1S/gIfS1DAo2M6CGvhFLcAbKnZEcQMexK+Hude5Wqi48rk/Ena/jidxm5b+AXA?= =?utf-8?q?DCkWj8sqdW2QFZ+xwfNcVVVUmZl+MR24N1kCmcF1cGR250RdWSnH99FdNPZS6CPEI?= =?utf-8?q?Sb2fl6PAsCHo+0zB1rp3doRWm0wymyfj80yJ2brdVhYPzTA+fatysGscgWeixtYeR?= =?utf-8?q?HqjIqh3JU+efXlsCByVC5qUT3NOtC5MEvDYgxWY5rSYhav2kHG5U6egd6WW2iHMQq?= =?utf-8?q?y0f4pEL6EN/UWHzfipdBfbjgKScnP4ksxSt9yVDCw2fdrBOzaKeHDbCWVNP3esgj5?= =?utf-8?q?D0O58CWkG/E5jwHnAHpsDKQ2JXXHAgfIQkaIlyPTpiqqdVyTc1+gyy2aV2doEFZrk?= =?utf-8?q?0ytAO6KNRv91zr?= X-MS-Exchange-CrossTenant-Network-Message-Id: ed5d0484-8858-4498-f588-08d8fe84f5e3 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:48.8545 (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: ysKlc21lzfBBltJB+NthR0nry4CGKnA2jQxmMmQx5D6yOyy8CP7dsvTDeQEBRv5yBn/Vm17NVrlGrlvt+mgDjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2969 X-OriginatorOrg: citrix.com With the addition of the xc_cpu_policy_* now libxl can have better control over the cpu policy, this allows removing the xc_cpuid_apply_policy function and instead coding the required bits by libxl in libxl__cpuid_legacy directly. Remove xc_cpuid_apply_policy. Signed-off-by: Roger Pau Monné --- tools/include/xenctrl.h | 18 ----- tools/libs/guest/xg_cpuid_x86.c | 126 -------------------------------- tools/libs/light/libxl_cpuid.c | 87 +++++++++++++++++++++- 3 files changed, 83 insertions(+), 148 deletions(-) diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index 3fef954d1d1..c6ee1142e8e 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1890,24 +1890,6 @@ struct xc_xend_cpuid { char *policy[4]; }; -/* - * 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 individual - * 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 *xend); 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_x86.c index b0690d9799d..70ca4939392 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -413,132 +413,6 @@ int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, return rc; } -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 *cpuid) -{ - int rc; - xc_dominfo_t di; - unsigned int nr_leaves, nr_msrs; - xen_cpuid_leaf_t *leaves = NULL; - struct cpuid_policy *p = NULL; - struct xc_cpu_policy policy = { }; - uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1; - - if ( xc_domain_getinfo(xch, domid, 1, &di) != 1 || - di.domid != domid ) - { - ERROR("Failed to obtain d%d info", domid); - rc = -ESRCH; - goto out; - } - - rc = xc_cpu_policy_get_size(xch, &nr_leaves, &nr_msrs); - if ( rc ) - { - PERROR("Failed to obtain policy info size"); - rc = -errno; - goto out; - } - - rc = -ENOMEM; - if ( (leaves = calloc(nr_leaves, sizeof(*leaves))) == NULL || - (p = calloc(1, sizeof(*p))) == NULL ) - goto out; - - /* Get the domain's default policy. */ - nr_msrs = 0; - rc = get_system_cpu_policy(xch, di.hvm ? XEN_SYSCTL_cpu_policy_hvm_default - : XEN_SYSCTL_cpu_policy_pv_default, - &nr_leaves, leaves, &nr_msrs, NULL); - if ( rc ) - { - PERROR("Failed to obtain %s default policy", di.hvm ? "hvm" : "pv"); - rc = -errno; - goto out; - } - - rc = 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 = %s)", - err_leaf, err_subleaf, -rc, strerror(-rc)); - goto out; - } - - /* - * Account for features which have been disabled by default since Xen 4.13, - * so migrated-in VM's don't risk seeing features disappearing. - */ - if ( restore ) - { - policy.cpuid = *p; - xc_cpu_policy_make_compatible(xch, &policy, di.hvm); - *p = policy.cpuid; - } - - if ( featureset ) - { - policy.cpuid = *p; - rc = xc_cpu_policy_apply_featureset(xch, &policy, featureset, - nr_features); - if ( rc ) - { - ERROR("Failed to apply featureset to policy"); - goto out; - } - *p = policy.cpuid; - } - else - { - p->extd.itsc = itsc; - - if ( di.hvm ) - { - p->basic.pae = pae; - p->basic.vmx = nested_virt; - p->extd.svm = nested_virt; - } - } - - policy.cpuid = *p; - rc = xc_cpu_policy_legacy_topology(xch, &policy, di.hvm); - if ( rc ) - goto out; - *p = policy.cpuid; - - rc = xc_cpu_policy_apply_cpuid(xch, &policy, cpuid, di.hvm); - if ( rc ) - goto out; - - rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves); - if ( rc ) - { - ERROR("Failed to serialise CPUID (%d = %s)", -rc, strerror(-rc)); - goto out; - } - - rc = 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 = -errno; - goto out; - } - - rc = 0; - -out: - free(p); - free(leaves); - - return rc; -} - xc_cpu_policy_t xc_cpu_policy_init(void) { return calloc(1, sizeof(struct xc_cpu_policy)); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index 539fc4869e6..cadc8b2a05e 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -423,6 +423,8 @@ 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 = NULL; + bool hvm = info->type == LIBXL_DOMAIN_TYPE_HVM; bool pae = true; bool itsc; int rc; @@ -436,6 +438,42 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, */ bool nested_virt = info->nested_hvm.val > 0; + policy = xc_cpu_policy_init(); + if (!policy) { + LOGE(ERROR, "Failed to init CPU policy"); + rc = ERROR_FAIL; + goto out; + } + + rc = xc_cpu_policy_get_domain(ctx->xch, domid, policy); + if (rc) { + LOGE(ERROR, "Failed to fetch domain %u CPU policy", domid); + rc = ERROR_FAIL; + goto out; + } + + /* + * Account for feature which have been disabled by default since Xen 4.13, + * so migrated-in VM's don't risk seeing features disappearing. + */ + if (restore) { + rc = xc_cpu_policy_make_compatible(ctx->xch, policy, hvm); + if (rc) { + LOGE(ERROR, "Failed to setup compatible CPU policy for domain %u", + domid); + rc = ERROR_FAIL; + goto out; + } + } + + rc = xc_cpu_policy_legacy_topology(ctx->xch, policy, hvm); + if (rc) { + LOGE(ERROR, "Failed to setup CPU policy topology for domain %u", + domid); + rc = ERROR_FAIL; + goto out; + } + /* * For PV guests, PAE is Xen-controlled (it is the 'p' that differentiates * the xen-3.0-x86_32 and xen-3.0-x86_32p ABIs). It is mandatory as Xen @@ -446,8 +484,15 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, * * HVM guests get a top-level choice of whether PAE is available. */ - if (info->type == LIBXL_DOMAIN_TYPE_HVM) + if (hvm) pae = libxl_defbool_val(info->u.hvm.pae); + rc = libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("pae=%d", pae)); + if (rc) { + LOG(ERROR, "Unable to set PAE CPUID flag: %d", rc); + rc = ERROR_FAIL; + goto out; + } + /* * Advertising Invariant TSC to a guest means that the TSC frequency won't @@ -463,12 +508,46 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, */ itsc = (libxl_defbool_val(info->disable_migrate) || info->tsc_mode == LIBXL_TSC_MODE_ALWAYS_EMULATE); + rc = libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("invtsc=%d", itsc)); + if (rc) { + LOG(ERROR, "Unable to set Invariant TSC CPUID flag: %d", rc); + rc = ERROR_FAIL; + goto out; + } + + /* Set Nested virt CPUID bits for HVM. */ + if (hvm) { + rc = libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("vmx=%d", + nested_virt)); + if (rc) { + LOG(ERROR, "Unable to set VMX CPUID flag: %d", rc); + rc = ERROR_FAIL; + goto out; + } + + rc = libxl_cpuid_parse_config(&info->cpuid, GCSPRINTF("svm=%d", + nested_virt)); + if (rc) { + LOG(ERROR, "Unable to set SVM CPUID flag: %d", rc); + rc = ERROR_FAIL; + goto out; + } + } + + /* Apply the bits from info->cpuid if any. */ + rc = xc_cpu_policy_apply_cpuid(ctx->xch, policy, info->cpuid, hvm); + if (rc) { + LOGE(ERROR, "Failed to apply CPUID changes"); + rc = ERROR_FAIL; + goto out; + } - rc = xc_cpuid_apply_policy(ctx->xch, domid, restore, NULL, 0, - pae, itsc, nested_virt, info->cpuid); + rc = xc_cpu_policy_set_domain(ctx->xch, domid, policy); if (rc) - LOGE(ERROR, "Failed to apply CPUID policy"); + LOGE(ERROR, "Failed to set domain %u CPUID policy", domid); + out: + xc_cpu_policy_destroy(policy); GC_FREE; return rc ? ERROR_FAIL : 0; } From patchwork Tue Apr 13 14:01:39 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: 12200657 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.7 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,URIBL_BLOCKED, 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 E96CEC433B4 for ; Tue, 13 Apr 2021 14:04:11 +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 80364611CE for ; Tue, 13 Apr 2021 14:04:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 80364611CE 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.109846.209745 (Exim 4.92) (envelope-from ) id 1lWJe6-0006r0-DV; Tue, 13 Apr 2021 14:04:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 109846.209745; Tue, 13 Apr 2021 14:04: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 1lWJe6-0006qs-8V; Tue, 13 Apr 2021 14:04:02 +0000 Received: by outflank-mailman (input) for mailman id 109846; Tue, 13 Apr 2021 14:04:00 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lWJe4-0006oj-KM for xen-devel@lists.xenproject.org; Tue, 13 Apr 2021 14:04:00 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id a1dd7163-05d5-4bdb-a40b-534c9a1db758; Tue, 13 Apr 2021 14:03:59 +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: a1dd7163-05d5-4bdb-a40b-534c9a1db758 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1618322639; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=QzwwOkwqoS7FecsC8ab+hi6QGGGojhwL/w3/xIfFNS0=; b=d4ngdGa3rC9mqAEwYFODP5VHYeWvi6oNDwuzdKdXDK7xpOl0DgYxl0yv vknCFL5mf5Q40GDBjds9DMIN2MYr95cT+fv/TK2J+2omyO8NAWOcmkS95 clLfyYGqt9uKOqlfu5TOQFtSCHI94GNw4SOSYnh9MqyG734N9AbFoRLIh o=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com IronPort-SDR: 801o5y8ArO4H+IwmsY+XelcXNY+C/snEXWlqK4dzbAL5TtOhFEToh7BTJWgcYlzYB5Blf+PVdl zTR4KnyAPF06hlJxfdB6XMQrDTr/dKZ3loG/Xtr1Bb0mdAlbYc7hntdUeX4PyE/ODRSq7LZu24 IO1NTq17J3res4E6F6jI2KQLvMT+pwCMMDltUAQRaGHhS3OuFJ/1zZcA1Jh4ACMok0HGwgiVR/ g+aKfggyIcfHarlLqNyWihJAov6dVmIxz/TOclOqBrWA/Ycze8VjZyfkEkdgM7na3AaLQqShV+ jNY= X-SBRS: 5.2 X-MesageID: 41322512 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.83 X-Policy: $RELAYED IronPort-HdrOrdr: A9a23:2x3PWa4k8s2QDmvRuQPXwTqFI+orLtY04lQ7vn1ZYSd+NuSFis Gjm+ka3xfoiDAXHEotg8yEJbPoewK+ybdc2qNUGbu5RgHptC+TLI9k5Zb/2DGIIU3D38Zn/+ Nbf6B6YeeQMXFTh8z3+RT9Nt4mzsWO/qzAv5au815GZ2hRGthdxi1+DRuWFVAzYQFAC4YwGp b03Ls2mxOLf3MLYsOnQkQURuSrnayKqLvKQz4jQyQm5g6HkC+y5NfBYnql9zoXTj8n+8ZezU HriAr8j5/T1M2T6hiZ7GPL6oQTpd2J8Ko8OOWpquw4bgrhkRypYoMJYczAgBkQrPu04Fgn1P ngyi1QQ/hb0H/acmGrrRaF4WCJu1pAhQ6GuDulqEDursDjSDUxB9Apv/MnTjLi90EisNtguZ g7p16xiptNARvM2AT76tTYPisa7HacnHs4neYfy0FYSIsVAYUh1rA3wUU9KuZnIAvKrKwXOs xHLOXx37JzXBexSVf3nkcH+q3xYl0DWjO9BmQSsM2c1DZb2FpjyVED+cAZlnAcsLogVpht/Y 3/Q+ZVvYALavVTQbN2Be8HT8fyIHfKWwjwPGWbJkmiPL0bOkjKt4X87NwOlaSXUa1N6KF3tI XKUVteu2J3UVnpE9ey0JpC9Q2IZ2mhQzL3yIV764JisrPxAJrnWBfzDGwGoo+FmbEyE8fbU/ G8NNZ9GPn4N1bjHo5PwknwQJ9XJX4CUNAEu9oyVl6Uy/i7bLHCh6j+SrL+NbDtGTErVifUGX 0YRgX+I81G8wSqVxbD8UHsckKoXna60YN7EaDc8eRW4pMKLJdwvg8cjkn84smKLDZFo7EnZU cWGsK+roqL4U2NuUrY5WRgPRRQSmxP5q/7bn9MrQgWd0XucbgCvN2bcXtI3GSOIwJ+S8++Kn 8Zm31HvYaMa7CAzyErDNyqdkiAiWEImX6MR5AA3rGY6dz9YZM+BJY+UKl3HQHGfiYFwjpCmS NmUkspV0XfHjThheGZl5QSHvjYbMQ5qhysO9RopXXWsli8qckjSmAAZSOnVdeajG8VNmBpr2 w015VaobKb3R6zNGM0gY0DQS5xQVXSJIgDMSOoS8F/nKvxdAR5UGGQ7Abq+S0bSy7N7EUdhm voMCuOX+rEa2At50xw4+LW1BddTCGwRHgYUAEkjaRNUVnj/lt+1O+VarH26WuebVMe3voQWQ u1Mwc6E0dS45SS/D6x3A2vP1kH+bkCetH8KJhLSdvu80LoFanNsYknOrtpwLZJXeqCjsY7Fd +6UzW4aBfxFukp1wGvhltNAlgllFAU1c7N8CfIqFO1xmI7HJPpUQVbboBeHvW11UShePqSyp V+irsOzLWNG1S0V/qv842SXhBuDTn3h1KaJttY+qx8tb4utbd1ApnQWSbJ0nYCxxklMMLoji olMdFGyaGENYl1c8MIfSVFulIvidSUNUMu9hf7G+kkYDgW/jDmFsLM57rDsrw0BEKd4AP2JF mE6iVYls21EherxPofC6gqJ35RZ1V54HN+/Pmaf4mVDAmxbelM8B67NXC6GYUtBJStCPEVrh xg5cuPkPLSfy3k2BrItT8+O7lQ6Q+cMIuPKRPJHfQN/82xOFyKjKfv6MmvjC3vQT/+b0gDn4 VKeUEZc8wrsEhtsKQnliypDqDnqEMslFVTpStqkVPgwYCq6mbWF0MuC3ySvrxGGT1IdnSYh8 XM9uaVkGnn6D9ewJ/ZCQNeeMpNF9V4dPm3Ew5+bcwL+Lim8Kokjn4dPFMgD2sghCv82O0j17 Gjw/nWU/DjD3CtOV9pw08yOqdk2igw7WdHeIyi6Jj4ZAMdHOsBGeE+6YBbiygBkCm503QMKx F28hU13YTMJEH9N3tyFaLyjZL76SJo05Sq+hlrvjFMgVuph1GXpkjtk8u0s3QyqXfBrgUPk9 TVeBIhxCBDtgBmxqR9Mn2CFW70KEn1RG/K8A== X-IronPort-AV: E=Sophos;i="5.82,219,1613451600"; d="scan'208";a="41322512" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aWdJ2DwP8uIgdlJmVhozPuTRRWQ8SLY3fdwVH14LYUa3vN2apBJKg9mFOpF3gBZhnIfa5dMXsnT+iMyRKtV4wbZMyrZdNlXxs67dqAOS3ToK4RBzC1ohQfYWAdE6gLNpLxG3Rtq7sLYRH02XUDagwubqfmL40cOTUoLFo+GEIzGfdXcS627/y+HBSEhcW8/EYiynhIHE+pc7C6966cV8phEyqnkjpHdjNxlXf9WFixJJph12Ad94TwUI1laOlTJuwaDsoKNdl/BVEJ1QgXxHrA/+PIPGEMblE+9uJuPUTNxx7jAe+yF0KTF7XJLSxcolOLTa/IPlVpW7CEPZK2ZgvA== 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=4Zx32cQTy4/2mKyZxLklN9EMm3hZTZZ5DreDlJpjcSA=; b=OK99UAP8k8ah3pMc43IR3IzuExZwFtzCS/pWH4MKblK0Tos+WiYzXn7PbXfXwcSa6lyxiDuyP2hNIrTHaoh25Wo8yj3DTAFZKU0WBvoRqXg+C3bXnrKbFMrxlLgL8AqnhTSvkq310BvDBVA7ReV62hgcANuXfVzLmqHNROzCUP9BX5UqblYOAMOfa7kUmQmX0Au2YlN4dBwHjmk2txZH3DBOPyYO/et0tDAzea2pND5qFbtDhpiXp27isSLlj4djRkapEeVIexaBKaZgJ5wGXWe7xmFM7YOJdzdei2kVVC+MmftUv3YvfHjOJAV2XI4fTwdKvXoBSDgmvSFM8cZHsA== 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=4Zx32cQTy4/2mKyZxLklN9EMm3hZTZZ5DreDlJpjcSA=; b=LcfVD4gILPZz5yOqcvX5q3DuG5XTuoG9alF6oGgxlfZjyLYuFPgv5fRlc3TE7PfPSouwqRVDzG3AKUheE5kV2LILKDJekXRp9EyqXOpeP/6t56KxTLOSP5PZZX/7j9nEbWfG2xS+Y0l+SGbU4hcK8HnYHXw10WijR3L4NaKtFT4= From: Roger Pau Monne To: CC: Andrew Cooper , Roger Pau Monne , Ian Jackson , Wei Liu , Anthony PERARD Subject: [PATCH v2 21/21] libs/guest: (re)move xc_cpu_policy_apply_cpuid Date: Tue, 13 Apr 2021 16:01:39 +0200 Message-ID: <20210413140140.73690-22-roger.pau@citrix.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210413140140.73690-1-roger.pau@citrix.com> References: <20210413140140.73690-1-roger.pau@citrix.com> X-ClientProxiedBy: MR2P264CA0063.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::27) To DS7PR03MB5608.namprd03.prod.outlook.com (2603:10b6:5:2c9::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 27ab9fdf-274d-4f2e-da52-08d8fe84f961 X-MS-TrafficTypeDiagnostic: DS7PR03MB5605: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:272; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LlUfZdAJqmO4QlEL5nF4y6iBRXrNLZMAxE5c9mSijVrh1fiRnD04KQabjZY6RAAKyS4wdZ32gifPJZ7+9zG2fzxx4LhPjAyWd+3DwI/CRLOowPCB5EOOLCKzuikWAXgYK8BhyD6jWlbq1yT24qYbHFcSjjFETX+rm2RCRaA/Poe7XTMHDFjIxuG4WSUMD2QlugJfaXiTEqdLxppf8R7j5UcKB/cLFNM++sO8EO70QgAy0VUPh+4GNZCaGRaQ/ulV6wdsBRbKGq8+A3jUU6yqw8in4PjMmjFVqreUlWdqxyn/spSskD3NPv1qWadWQJZ7s5SPEH7VC1sEdIcR/oNo3iFfFnClLV8QUGQDZGOj50HOySXaqKNv6kPKArfj5zmOrKKyi+0pMzgroNadPGguZ0w1T2E+QpDNLL5Hqh80Ci/mlQ2CYnv3Tnda7hXvUYIMmsjwW9xqUio6s7seJm+v/lpaN3bpmEc2LQEWPml8iDGb58/0Q9axdD7xSIEx1d614RIWUgBZAoaToXleoacqz/oTUxnqCeDcVLdMtKChfH51rJW85SEcxgtVioXDUTgVAQYCxMNn+16v+Z6KxNbt5g== 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)(39850400004)(136003)(346002)(396003)(376002)(366004)(1076003)(6916009)(38100700002)(86362001)(478600001)(6496006)(6666004)(107886003)(2906002)(30864003)(83380400001)(956004)(26005)(66946007)(66556008)(66476007)(2616005)(16526019)(54906003)(36756003)(4326008)(8676002)(6486002)(8936002)(5660300002)(186003)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?LnDwPm+Bwo6GpKRG8gxsblbgHuVmc9?= =?utf-8?q?krjCG8tINd52i/uD8PCw1dlxIGyb8s++PnU5rF8vCDEqf/86GgnKA5ZiDqWWlhBKJ?= =?utf-8?q?qZOAoQ9yBc9aptSZtt/ciyvMNp/SPgUl7+Ugfs3ed59eGTUYRdgtyqqpu8NR4VvnS?= =?utf-8?q?9AN2zWULOBU/yNZ4qEOvxFzTrYk2jlo9LFUIHdcFLm7OngciUOjROAkd9uQHVzwOR?= =?utf-8?q?0QVB2UZxnanRCP/UE2XoyoLtBDmzdkHzm96Fxt8/FNP0fS92yIg0B9/1IGhygKaEL?= =?utf-8?q?g/WLkGwFv5poR2T9Pcg/4g17PaqLc5E1MMuDQax3lWJSVZXEx00+OYsT09R8VhcI8?= =?utf-8?q?GHhWaP5mr9Bk3WL6rBKA6LXQaUuxIQyhANof5t/fBZ+OCd+LQgeB1YTCghEjYAkOu?= =?utf-8?q?VTEopqr5+z3MSnkwkW0ZO8Rbr59yLxphB9xatHsN1n7jAXMOwBm/sJdxEfc+rA31S?= =?utf-8?q?pM2KN9hZkq+douC7mmUWQzzeFLeaMSZGZVIsFeADrscxJV4H3LvTBGgE4Vh/qztam?= =?utf-8?q?1uUdqr/TZpxmnTek/Ec+B3iJsIV7kEcn6CTAnmodNReW/K2BW4LWqXsidgndOkqhu?= =?utf-8?q?6TyytPSVW8jrUGGgIgow40XiMscg7ATgU7rbHIn0hTU5AAkEYaDqBSKZsJTZ8mzsg?= =?utf-8?q?5HJm+2esi6Dxcik31RfDxYZCTWTc0wYknYxsRN179OndlKFRtZn3GzRooDU6h0/MC?= =?utf-8?q?zHJ/4m5NqDL5cY/WlOKC1FQS3uNeI3Hp/yjc4rE2Rx9rpeHn73weeJ72TQpGhrgdu?= =?utf-8?q?dS2HTXW1maXvchHzCfSN0/ZCvRl9wypR1mW2Zzgoh3KMgHRnYiQc5A1CLm3WbviIA?= =?utf-8?q?qJqFcWo9XsvQJiiRzinEghYmWEr32xUNrSPl8R6T9lC05Fi+o/I8DBFqFxV2AAZPf?= =?utf-8?q?QEDwGLZA+xibulTzK6jr17vqf9LlNeDV3yMLKGj/0/VoZEbeyWrN1daZ8uQGE3Gj5?= =?utf-8?q?0MqGqt2rTqutGhdEXHIIvcZO1i0fJc3u6RabW5AqXlsEipx+03jHHJwudRlzBpO6f?= =?utf-8?q?/eOS4g5+IANKWCEYK79W4vuFaoUMG2YROshZe2AajiGr2X5fWYJc67FDSzZs0B/A+?= =?utf-8?q?AbhKCudbGu6mLFY5qTPlQhsN3Y3bkM1nfgt5RYkK52IbfSNGPigJgUtsAqRlCA/K0?= =?utf-8?q?nG9R5te+gTylYXPGBDAdw7SWbIKpUlV0RYqbI8IzxKEX1rByTwP/BWEeYix0h7UOj?= =?utf-8?q?6MbTVnuRgoLMR/UJ2UMRZcVg6axJAkca/dKZYFjk9lj6bpj/xlsbYpjXvDrR/d+wy?= =?utf-8?q?40Y5PBDFWmnKpe?= X-MS-Exchange-CrossTenant-Network-Message-Id: 27ab9fdf-274d-4f2e-da52-08d8fe84f961 X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5608.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 14:03:54.8063 (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: e0HOU1kVmtq6C/VQbTVYNrLsmqp9zGHyBmtdOfyme1Z2C8YFCZpWvdjAk8OdV/3+cOrkfeHcTs3eVRxg33V0Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5605 X-OriginatorOrg: citrix.com Move the logic from xc_cpu_policy_apply_cpuid into libxl, now that the xc_cpu_policy_* helpers allow modifying a cpu policy. By moving such parsing into libxl directly we can get rid of xc_xend_cpuid, as libxl will now implement it's own private type for storing CPUID information, which currently matches xc_xend_cpuid. Note the function logic is moved as-is, but requires adapting to the libxl coding style. No functional change intended. Signed-off-by: Roger Pau Monné --- tools/include/libxl.h | 6 +- tools/include/xenctrl.h | 30 ------- tools/libs/guest/xg_cpuid_x86.c | 125 --------------------------- tools/libs/light/libxl_cpuid.c | 136 +++++++++++++++++++++++++++++- tools/libs/light/libxl_internal.h | 26 ++++++ 5 files changed, 162 insertions(+), 161 deletions(-) diff --git a/tools/include/libxl.h b/tools/include/libxl.h index ae7fe27c1f2..150b7ba85ac 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -1375,10 +1375,10 @@ void libxl_bitmap_init(libxl_bitmap *map); void libxl_bitmap_dispose(libxl_bitmap *map); /* - * 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 make + * assumptions about libxl__cpuid_policy. */ -typedef struct xc_xend_cpuid libxl_cpuid_policy; +typedef struct libxl__cpuid_policy libxl_cpuid_policy; typedef libxl_cpuid_policy * libxl_cpuid_policy_list; void libxl_cpuid_dispose(libxl_cpuid_policy_list *cpuid_list); int libxl_cpuid_policy_list_length(const libxl_cpuid_policy_list *l); diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h index c6ee1142e8e..044d05321a3 100644 --- a/tools/include/xenctrl.h +++ b/tools/include/xenctrl.h @@ -1864,32 +1864,6 @@ int xc_domain_debug_control(xc_interface *xch, #if defined(__i386__) || defined(__x86_64__) -/* - * CPUID policy data, expressed in the legacy XEND format. - * - * Policy is an array of strings, 32 chars long: - * policy[0] = eax - * policy[1] = ebx - * policy[2] = ecx - * policy[3] = edx - * - * The format of the string is the following: - * '1' -> force to 1 - * '0' -> force to 0 - * 'x' -> we don't care (use default) - * 'k' -> pass through host value - * 's' -> legacy alias for 'k' - */ -struct xc_xend_cpuid { - union { - struct { - uint32_t leaf, subleaf; - }; - uint32_t input[2]; - }; - char *policy[4]; -}; - int xc_mca_op(xc_interface *xch, struct xen_mc *mc); int xc_mca_op_inject_v2(xc_interface *xch, unsigned int flags, xc_cpumap_t cpumap, unsigned int nr_cpus); @@ -2617,10 +2591,6 @@ int xc_cpu_policy_make_compatible(xc_interface *xch, xc_cpu_policy_t policy, int xc_cpu_policy_legacy_topology(xc_interface *xch, xc_cpu_policy_t policy, bool hvm); -/* Apply an xc_xend_cpuid object to the policy. */ -int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, - const struct xc_xend_cpuid *cpuid, bool hvm); - /* Apply a featureset to the policy. */ int xc_cpu_policy_apply_featureset(xc_interface *xch, xc_cpu_policy_t policy, const uint32_t *featureset, diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c index 70ca4939392..5144b186028 100644 --- a/tools/libs/guest/xg_cpuid_x86.c +++ b/tools/libs/guest/xg_cpuid_x86.c @@ -288,131 +288,6 @@ static xen_cpuid_leaf_t *find_leaf( return bsearch(&key, leaves, nr_leaves, sizeof(*leaves), compare_leaves); } -int xc_cpu_policy_apply_cpuid(xc_interface *xch, xc_cpu_policy_t policy, - const struct xc_xend_cpuid *cpuid, bool hvm) -{ - int rc; - xc_cpu_policy_t host = NULL, def = NULL; - - host = xc_cpu_policy_init(); - def = xc_cpu_policy_init(); - if ( !host || !def ) - { - PERROR("Failed to init policies"); - rc = -ENOMEM; - goto out; - } - - /* Get the domain type's default policy. */ - rc = xc_cpu_policy_get_system(xch, hvm ? XEN_SYSCTL_cpu_policy_hvm_default - : XEN_SYSCTL_cpu_policy_pv_default, - def); - if ( rc ) - { - PERROR("Failed to obtain %s def policy", hvm ? "hvm" : "pv"); - goto out; - } - - /* Get the host policy. */ - rc = xc_cpu_policy_get_system(xch, XEN_SYSCTL_cpu_policy_host, host); - if ( rc ) - { - PERROR("Failed to obtain host policy"); - goto out; - } - - rc = -EINVAL; - for ( ; cpuid->leaf != XEN_CPUID_INPUT_UNUSED; ++cpuid ) - { - xen_cpuid_leaf_t cur_leaf; - xen_cpuid_leaf_t def_leaf; - xen_cpuid_leaf_t host_leaf; - - rc = xc_cpu_policy_get_cpuid(xch, policy, cpuid->leaf, cpuid->subleaf, - &cur_leaf); - if ( rc ) - { - ERROR("Failed to get current policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - rc = xc_cpu_policy_get_cpuid(xch, def, cpuid->leaf, cpuid->subleaf, - &def_leaf); - if ( rc ) - { - ERROR("Failed to get def policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - rc = xc_cpu_policy_get_cpuid(xch, host, cpuid->leaf, cpuid->subleaf, - &host_leaf); - if ( rc ) - { - ERROR("Failed to get host policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - - for ( unsigned int i = 0; i < ARRAY_SIZE(cpuid->policy); i++ ) - { - uint32_t *cur_reg = &cur_leaf.a + i; - const uint32_t *def_reg = &def_leaf.a + i; - const uint32_t *host_reg = &host_leaf.a + i; - - if ( cpuid->policy[i] == NULL ) - continue; - - for ( unsigned int j = 0; j < 32; j++ ) - { - bool val; - - switch ( cpuid->policy[i][j] ) - { - case '1': - val = true; - break; - - case '0': - val = false; - break; - - case 'x': - val = test_bit(31 - j, def_reg); - break; - - case 'k': - case 's': - val = 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 = xc_cpu_policy_update_cpuid(xch, policy, &cur_leaf, 1); - if ( rc ) - { - PERROR("Failed to set policy leaf %#x subleaf %#x", - cpuid->leaf, cpuid->subleaf); - goto out; - } - } - - out: - xc_cpu_policy_destroy(def); - xc_cpu_policy_destroy(host); - - return rc; -} - xc_cpu_policy_t xc_cpu_policy_init(void) { return calloc(1, sizeof(struct xc_cpu_policy)); diff --git a/tools/libs/light/libxl_cpuid.c b/tools/libs/light/libxl_cpuid.c index cadc8b2a05e..6be2d773d1d 100644 --- a/tools/libs/light/libxl_cpuid.c +++ b/tools/libs/light/libxl_cpuid.c @@ -291,7 +291,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, 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; @@ -369,7 +369,7 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *cpuid, char *endptr; unsigned long value; uint32_t leaf, subleaf = XEN_CPUID_INPUT_UNUSED; - struct xc_xend_cpuid *entry; + struct libxl__cpuid_policy *entry; /* parse the leaf number */ value = strtoul(str, &endptr, 0); @@ -419,6 +419,136 @@ int libxl_cpuid_parse_config_xend(libxl_cpuid_policy_list *cpuid, return 0; } +static int apply_cpuid(libxl_ctx *ctx, xc_cpu_policy_t policy, + libxl_cpuid_policy_list cpuid, bool hvm) +{ + GC_INIT(ctx); + int rc; + xc_cpu_policy_t host = NULL, def = NULL; + + host = xc_cpu_policy_init(); + def = xc_cpu_policy_init(); + if (!host || !def) { + LOG(ERROR, "Failed to init policies"); + rc = ERROR_FAIL; + goto out; + } + + /* Get the domain type's default policy. */ + rc = xc_cpu_policy_get_system(ctx->xch, + hvm ? XEN_SYSCTL_cpu_policy_hvm_default + : XEN_SYSCTL_cpu_policy_pv_default, + def); + if (rc) { + LOGE(ERROR, "Failed to obtain %s def policy", hvm ? "hvm" : "pv"); + rc = ERROR_FAIL; + goto out; + } + + /* Get the host policy. */ + rc = xc_cpu_policy_get_system(ctx->xch, XEN_SYSCTL_cpu_policy_host, host); + if (rc) { + LOGE(ERROR, "Failed to obtain host policy"); + rc = ERROR_FAIL; + goto out; + } + + for (; cpuid->leaf != XEN_CPUID_INPUT_UNUSED; ++cpuid) { + xen_cpuid_leaf_t cur_leaf; + xen_cpuid_leaf_t def_leaf; + xen_cpuid_leaf_t host_leaf; + + rc = xc_cpu_policy_get_cpuid(ctx->xch, policy, cpuid->leaf, + cpuid->subleaf, &cur_leaf); + if (rc) { + LOGE(ERROR, "Failed to get current policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc = ERROR_FAIL; + goto out; + } + rc = xc_cpu_policy_get_cpuid(ctx->xch, def, cpuid->leaf, cpuid->subleaf, + &def_leaf); + if (rc) { + LOGE(ERROR, "Failed to get def policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc = ERROR_FAIL; + goto out; + } + rc = xc_cpu_policy_get_cpuid(ctx->xch, host, cpuid->leaf, + cpuid->subleaf, &host_leaf); + if (rc) { + LOGE(ERROR,"Failed to get host policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc = ERROR_FAIL; + goto out; + } + + for (unsigned int i = 0; i < ARRAY_SIZE(cpuid->policy); i++) + { + uint32_t *cur_reg = &cur_leaf.a + i; + const uint32_t *def_reg = &def_leaf.a + i; + const uint32_t *host_reg = &host_leaf.a + i; + + if (cpuid->policy[i] == NULL) + continue; + +#define test_bit(i, r) !!(*(r) & (1u << (i))) +#define set_bit(i, r) (*(r) |= (1u << (i))) +#define clear_bit(i, r) (*(r) &= ~(1u << (i))) + for (unsigned int j = 0; j < 32; j++) { + bool val; + + switch (cpuid->policy[i][j]) { + case '1': + val = true; + break; + + case '0': + val = false; + break; + + case 'x': + val = test_bit(31 - j, def_reg); + break; + + case 'k': + case 's': + val = test_bit(31 - j, host_reg); + break; + + default: + LOG(ERROR,"Bad character '%c' in policy[%d] string '%s'", + cpuid->policy[i][j], i, cpuid->policy[i]); + rc = 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 + } + + rc = xc_cpu_policy_update_cpuid(ctx->xch, policy, &cur_leaf, 1); + if ( rc ) + { + LOGE(ERROR,"Failed to set policy leaf %#x subleaf %#x", + cpuid->leaf, cpuid->subleaf); + rc = ERROR_FAIL; + goto out; + } + } + + out: + xc_cpu_policy_destroy(def); + xc_cpu_policy_destroy(host); + GC_FREE; + return rc; +} + int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, libxl_domain_build_info *info) { @@ -535,7 +665,7 @@ int libxl__cpuid_legacy(libxl_ctx *ctx, uint32_t domid, bool restore, } /* Apply the bits from info->cpuid if any. */ - rc = xc_cpu_policy_apply_cpuid(ctx->xch, policy, info->cpuid, hvm); + rc = apply_cpuid(ctx, policy, info->cpuid, hvm); if (rc) { LOGE(ERROR, "Failed to apply CPUID changes"); rc = ERROR_FAIL; diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h index 5709bcb93fa..d130c073ac4 100644 --- a/tools/libs/light/libxl_internal.h +++ b/tools/libs/light/libxl_internal.h @@ -2050,6 +2050,32 @@ typedef yajl_gen_status (*libxl__gen_json_callback)(yajl_gen hand, void *); _hidden char *libxl__object_to_json(libxl_ctx *ctx, const char *type, libxl__gen_json_callback gen, void *p); +/* + * CPUID policy data, expressed in the internal libxl format. + * + * Policy is an array of strings, 32 chars long: + * policy[0] = eax + * policy[1] = ebx + * policy[2] = ecx + * policy[3] = 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 retore, libxl_domain_build_info *info);