From nobody Sat Apr 20 00:03:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1637136054; cv=pass; d=zohomail.com; s=zohoarc; b=LE7ZW0zbEBV7JZreJbDHuJVbo7QWDzNb//iAIo1dGBWYYdvSJd2qp6uS4VZeFQ1691GoX0lziFYPNaANTNPK16hVRNkAdNAzvN4hxIV86doyXW1zk5fHEHJyRRMwmXI1UaNZqcEc822tu56b0nEPD1+5+F8UeoAMmMPqX1bnzj0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637136054; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=egGunBE+GPge17GANLEtrNdHh0RZzXAuLg9AKb3sSwg=; b=nM8MTp/8udIz0bwdzoTpaod92cvPNIcRislND4vSPU8HWn2iAScxNfPUApqpvEXHAG1LD6r0K5OqmuGRqkocyW7G+9xEvGtkPWe97QBdNDln5T22/Oq8J719by0rrf8Lb5tuyRc9kfiI9U3bHQ8uz52D+4kxHQDlseQ7vYTYoNE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 163713605440370.4375907815188; Wed, 17 Nov 2021 00:00:54 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.226624.391662 (Exim 4.92) (envelope-from ) id 1mnFrc-0003v1-Pn; Wed, 17 Nov 2021 08:00:16 +0000 Received: by outflank-mailman (output) from mailman id 226624.391662; Wed, 17 Nov 2021 08:00:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mnFrc-0003uT-MJ; Wed, 17 Nov 2021 08:00:16 +0000 Received: by outflank-mailman (input) for mailman id 226624; Wed, 17 Nov 2021 08:00:15 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mnFrb-0003td-Dm for xen-devel@lists.xenproject.org; Wed, 17 Nov 2021 08:00:15 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 64d74844-477c-11ec-a9d2-d9f7a1cc8784; Wed, 17 Nov 2021 09:00:13 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2053.outbound.protection.outlook.com [104.47.12.53]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-26-Nl4j7U-OMdaGj_HUUWaVvA-1; Wed, 17 Nov 2021 09:00:12 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VE1PR04MB6480.eurprd04.prod.outlook.com (2603:10a6:803:11d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26; Wed, 17 Nov 2021 08:00:09 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4713.019; Wed, 17 Nov 2021 08:00:09 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR0P281CA0059.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.5 via Frontend Transport; Wed, 17 Nov 2021 08:00:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 64d74844-477c-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1637136013; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=egGunBE+GPge17GANLEtrNdHh0RZzXAuLg9AKb3sSwg=; b=QptCJqQwi4fCZmEVv0Ar7pj3jD9sQVUTx8qonJtmFsvhA0r9lsQZFRWWxrPgafXPff5t7A aYHq0Ym5B5cFzSGxqiQTg9hgPsn2eAWFqw4qvMUDj4re4urTOgxvKYXWRunDl2O9AuXBVn M9Z/3aUb5dfnwHXPDJ9KAmtwkAvHg0U= X-MC-Unique: Nl4j7U-OMdaGj_HUUWaVvA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d7EWNcGoHEQrp4Zsv5JlQFVm3urGlgwEPTtvSnq9aRkUEQPSXsWDiM821tRgJlt9sWg8mii7BdULnCnKKY1h0qGxNs8qMD6GWpfwyeWR0efzaSWWwWPpUKYfsMqpTyaux3v/+F1hhM84VvMJ3h8IS3XF7xhyKWAxKFqf1ajVz0pZOXYIM4DkHsNCf3pm1ZJF8UTvgp0HRQ432gatVYxZq7NjCfPoDkBvC6ruJ+RqDuFVDjWjginp7onth+VzeRh6rZzhvCXqGj8m8h1XOsw/WMy93OnVX9B3MLTdABEzymqyl/TmvaGDSmYSs1GGII1s9Unwm/88hbDJp0ivgNWmng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=egGunBE+GPge17GANLEtrNdHh0RZzXAuLg9AKb3sSwg=; b=lyVqQYynqrDmVIWdVikE/ex1gvfkwiniMP/3H2CE5EkoUSDnECmDV5OuiuDZIevOhzgaDMA8CWqgzoxc4jwhvK3wQDrNsn9K+aZfVLEegydItRLAEO8SDr/OrVb0R9XVW45dGYwROlqkM4B20uQEduoFdNkdIcd41BLv7ZPGnSEdfgFunGyYc8JmgXcop0ixIUlXjzH3s3OnIsIlpC8UZPTLbJ1bDOuYtq+7LGtWv8vEOe6FnxBn7VLDXr6a1eOkut60ADbtisJV+ZX7ESIe7o9swr9vMzOH0Rffyh56/ntu16uIv4biP8vZTP+g2KHmtDcOmY1ayBSSX1S6mSpwKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <38597a0e-5409-15c0-44e8-7160ca06d160@suse.com> Date: Wed, 17 Nov 2021 09:00:08 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH RFC 1/2] x86/alternatives: allow replacement code snippets to be merged Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <8ef681e6-0274-7b84-494d-29d2c3b3870b@suse.com> In-Reply-To: <8ef681e6-0274-7b84-494d-29d2c3b3870b@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0059.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::7) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 141ae865-e0f4-4c48-45f1-08d9a9a0468f X-MS-TrafficTypeDiagnostic: VE1PR04MB6480: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bixORuYiX4cl+buuVbK1pnvZyQuV9xvRwdCNwlE2k1Nt/dGDneuKtYfXPQomgzsWi2MvnRuAMqwvkxaYByuHNrjKE8QF1xcI5WlnvdHIU+93qDciTSPkPS3D0L6rUyzu/65rOI/DL4tn2Ex7ncuVCi4c1qVOk5P3YOIv4PfjcFmlqNbWkA7x2qP9M0MwRbE/WFQRJQ4kCQ0VqJsv2zI89zQAj3s96WDeSyQpxzKv6/PWtODIEv+KOyG730cPjsKhhBGgp1Zm55+lT9cIfXgn/VhH5WDtiKC8AaGv1Io9huPK3f8iHVX6SOUjGTEDgtlxKXuJYfIyGAW01H5qlJUW4556eYqp+cXEwAz37I/gQKiv09e6QKCRPlnqZZTVn+3MAjy1a4JgdK6qzfp6C8Xse1PW7J1AIvGXb6JssZ+MTuTXRthbFU/JpsDkp2/+mCtYbWi5dLsvbnq5wycfKo6J1p3YAxLbx1g5BTgpLLzr8Sd9PcNVswpHpO7nwf5nerEiI/1peL0zmIiljII79o2gqpN/yZAhV1L2i+cl55HC8vxu8+3ishrbAOQp9jSwHsnK9UUNNbhfW9e+2pKEb1HSg6iT8p9Wk/pA4ntsEOU6W5mYDZY85vdhpFowbPSewiWpj/VK3TionkAek4aZ5o+/DmPdGghwTu1QaHTY/016E1rL3xFQgmoJlZlNi+gHGu7SvNua/GNbREetl9cAy7wqtTVsU5Fs3F5wDt5dqu3FEwcjvwEZmF1JHvfkHMvl0Lw+ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(4326008)(86362001)(36756003)(5660300002)(31686004)(2906002)(6486002)(54906003)(6916009)(316002)(16576012)(38100700002)(2616005)(8936002)(508600001)(956004)(66556008)(186003)(66476007)(30864003)(26005)(31696002)(8676002)(66946007)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NVEwelNJL1lNbDFkZ3ZvN1FHTEd3NUVvZzNYZnFCYWtlY0xjY1hjcFUvN1N0?= =?utf-8?B?SFA5cHhQTDFWUDRpYVpta1FuTkplMmE2SXBTV2Z4LzBvbkd6N2FreG5uTXRn?= =?utf-8?B?aTY5NXh3UEJqaTZ1QTBHZlFZN1N1aDJtU3k2RzdLcVNnZEpwNHJKQWlOMmRu?= =?utf-8?B?cTJLUkFRTE0rNzBnbmhIVWhRMGNFeEhva21BaVV3clRldFpESEpLcDFId2pH?= =?utf-8?B?aDJ2UU4rbHRRT21ZUXdRSmF3ZTRnZDZ5eGRCU29wOEhnQmVVV1dlNVNndzgz?= =?utf-8?B?aVl3LzU2a29JVVUvb2tSTzRFSHZ4c2l1bDJNNzJ6RlpWWkg1UzJCKzVGWFFH?= =?utf-8?B?RzI5NU94SldaSnBoRitrb2hDM2FodVh1QUFVVmdGaWIxbHU3NHRpK2QzdXU0?= =?utf-8?B?THZQQmJDNlJwOE9jbXhIbDNkSkVtUHB4aGZwTnNIRm8wVk9kRDd1MWt3ajU1?= =?utf-8?B?dDBQMTgwTDN6dXV5d0Q0d3RUdEJqREpxTTdWVHZ6LzNrTGxqWGhpYi9qbGJ6?= =?utf-8?B?U0lwQm1uWU5ZNlBVVS9ZanJhczY1M0ErTGZHYStmdDNwOGFIc2dmUGVBODV0?= =?utf-8?B?bEJjT1kzSy82bUJXRDVadUUvQkoyTnBuR1o4eE9xYWhWVmt0ZXdEWGFOUHkx?= =?utf-8?B?LzNnZDdDQ2hRM2RXMEhGaG5uTkNxanpaWklDM1VoTlk2K3p4aDRSNEY4UkJq?= =?utf-8?B?dlRRaVk3L0ozckUvamZGcERNY1FLMlc0SkZXTlJDQmhLbHB0N2JlWnhPWndh?= =?utf-8?B?aDlRMGNxaktJVlhYaTZHUEg1R09qQ25LVkJwa0phODF5alplNzBKdFF4Szhx?= =?utf-8?B?QVF6SUJXUGZxTWdWNTFhdEtRL0FBdUNqaFRrZExIUzAxK08rcnBTOThIUUh3?= =?utf-8?B?NnNjWGc0VmYwNHN5OU1NNS9vbVpHcEhocmNaaEEyc0NDV01wOEFmeGhmMFhr?= =?utf-8?B?TEZUbXd6Q2luU1lsM1Q3dlFlVlROVWZlZFNtS2h6OTJ4NW12cjFtTEdpWDVa?= =?utf-8?B?OXRVeE9SaitqcC9lZ3NRN2x2UVFxRTZtMFhIUmtxY2tuUVMwbUZrV2dialJG?= =?utf-8?B?WG1vWnZIZ29zT3FQeWtGMUNmQmRjYWYwSFR2TVdVYUNtcjFaZ1dudlo2YjZL?= =?utf-8?B?SWtiaDM0VmtqRHhDTTlHdXlEbjMvQ0ZrVmhuVUI5Qk9WTitNSUZ5ZFhZdWxF?= =?utf-8?B?RGw3YWZINUpyeVRXYmVlSUV3dnZ0aVhTZlZrTDY4bVpCQjRiKzE0MUtpTUdM?= =?utf-8?B?ZC9iTHBWVXFCK2djbnoxNDFxcW1JT2FRQ0c5RU9DL0ZvMFEyRDRkY0poa3Va?= =?utf-8?B?NGVSamJxZG83ZGpUK1FXeFRwRTlPREhYbnUxTEE5eElYS05Rakp5Mm5ZU09s?= =?utf-8?B?WEZ0a0xXMS9Oa3oxRlRMQ051M0IvWU4zZjQ3SktYZHJNRkRWcVFvVEhBUXhN?= =?utf-8?B?MkthL05ZaHZUVDhlNzhpUU5CVmdhY3RSaUF0L1J2NjdKclJBZXZuL2JPYW9z?= =?utf-8?B?SC95UEJ3azN5TS85OERUbGlFNmRsbks1QjJsVWc0Ly9weVM0UU5rZk91UEhJ?= =?utf-8?B?b0JDVmpmVXkxZVpOUXpWenlrN29nZjdSbWcrVnFXRzk4RmNJSHNPQUIzV2Z1?= =?utf-8?B?NjZ5VUhad1ovNmJHLzVwOUN4VDdpN3ZybWlwUDFLRlRsSThKOGZBSEN5YVFC?= =?utf-8?B?Q3BhZDNHQUN6dTNEZ0RRc2NVUUtmczlnUXNydHZEMExUTms1L1JmbHQ1dXFR?= =?utf-8?B?YzhBbURkbnkrMndOd2szZGxGN2hTRmNSQUNaam4vMmR0bUJUbTNEcTdZZEkr?= =?utf-8?B?SWpUbG1CNDNCR3RBN0RlYWQ3RVo1ZzNWNm11enVkcllZUGFva05BTVo0NnND?= =?utf-8?B?alpkNmZSRFo5aDluUm9iUXNEVkFnYU82NmRLd2JCM1dNazRTU0hXWk9zRVln?= =?utf-8?B?Wm51ekpYQkpsakNFcVFkUkE0SXNvNTRPWTZQR3NVVi9ZMXhaK29idGpSUjlB?= =?utf-8?B?Qmx6RHp0Sys1SjNmdjUzbDRvaVFpNE02U0pUZGJVU283aEtWbk1aS05BU0Nh?= =?utf-8?B?UjhZbTY2OFprZXRkeTNTL3NtTmxKbENEK1AwdEhrWHlhczNlK3FqMHRZM3Rt?= =?utf-8?B?UmxBWmZ4TmR2UFNNK2RNeVZ1NWlad1Y0bGZ5T2FjQlJDZEZ0NnB0b2wveDRl?= =?utf-8?Q?YzDuw5E60Fp+iU04FrRv8f0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 141ae865-e0f4-4c48-45f1-08d9a9a0468f X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2021 08:00:09.4571 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QxbkQsRBAEp2m/ZAYLrgWWelux+412wxfWHvAH1GyU/cJEybIIkn06bYnXHq8xrpFqvfwcKTDuwtxU+n88F5BQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6480 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1637136056174100001 Content-Type: text/plain; charset="utf-8" Prior to b11380f6cd58 ("x86/spec-ctrl: Build with BRANCH_HARDEN lfences by default") LFENCE was the dominant entry. But even without it there's still quite a bit of redundancy, much of which can be eliminated by marking the sections as mergable. This of course also requires splitting them by "element" size. Note that due to gas restrictions replacement code containing Jcc or PC-relative JMP cannot be made subject to merging. Hence the original assembly macros can't be altered, but replacement ones need to be introduced (and then used selectively). Note that CR4_PV32_RESTORE could in principle also benefit from getting changed, but right now at least GNU ld doesn't merge sections with relocations. Since this is a per-section decision, not an element based one, marking the items for merging could thus get in the way of merging other same-sized entries originating from the same source files. The sorting in the linker script additions is merely for cosmetic reasons, easing manual inspection of the resulting binary. Signed-off-by: Jan Beulich --- Obviously the new assembler macros could be merged with the existing ones, reducing redundancy. But I didn't want to do so right away, i.e. before knowing whether the basic approach is deemed viable (and worthwhile, considering it requires a relatively new gas). For the same reason there are no C macro variants just yet (which overall would provide larger savings: in particular all altcalls can have their replacement insns folded). --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -35,6 +35,11 @@ $(call as-option-add,CFLAGS,CC,\ $(call as-option-add,CFLAGS,CC,\ ".L1: .L2: .nops (.L2 - .L1)$$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE) =20 +# Check to see whether the assembler supports insn emission to the absolute +# section (via the .struct directive), to size them into an absolute symbo= l. +$(call as-option-add,CFLAGS,CC,\ + ".pushsection .text; .struct; lfence; .L0:; .if .L0 !=3D 3; .error; .e= ndif; .popsection",-DHAVE_AS_INSN_SIZE) + CFLAGS +=3D -mno-red-zone -fpic =20 # Xen doesn't use SSE interally. If the compiler supports it, also skip t= he --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -12,7 +12,7 @@ #include =20 ENTRY(entry_int82) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP pushq $0 movl $HYPERCALL_VECTOR, 4(%rsp) SAVE_ALL compat=3D1 /* DPL1 gate, restricted to 32bit PV guests on= ly. */ @@ -248,7 +248,7 @@ ENTRY(compat_int80_direct_trap) compat_create_bounce_frame: ASSERT_INTERRUPTS_ENABLED mov %fs,%edi - ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP testb $2,UREGS_cs+8(%rsp) jz 1f /* Push new frame at registered guest-OS stack base. */ @@ -295,7 +295,7 @@ compat_create_bounce_frame: movl TRAPBOUNCE_error_code(%rdx),%eax .Lft8: movl %eax,%fs:(%rsi) # ERROR CODE 1: - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP /* Rewrite our stack frame and return to guest-OS mode. */ /* IA32 Ref. Vol. 3: TF, VM, RF and NT flags are cleared on trap. = */ andl $~(X86_EFLAGS_VM|X86_EFLAGS_RF|\ @@ -341,7 +341,7 @@ compat_crash_page_fault_4: addl $4,%esi compat_crash_page_fault: .Lft14: mov %edi,%fs - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP movl %esi,%edi call show_page_walk jmp dom_crash_sync_extable --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -249,7 +249,7 @@ iret_exit_to_guest: */ ENTRY(lstar_enter) #ifdef CONFIG_XEN_SHSTK - ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK + MERGE_ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif /* sti could live here when we don't switch page tables below. */ movq 8(%rsp),%rax /* Restore %rax. */ @@ -286,7 +286,7 @@ ENTRY(lstar_enter) /* See lstar_enter for entry register state. */ ENTRY(cstar_enter) #ifdef CONFIG_XEN_SHSTK - ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK + MERGE_ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif /* sti could live here when we don't switch page tables below. */ CR4_PV32_RESTORE @@ -324,14 +324,14 @@ ENTRY(cstar_enter) =20 ENTRY(sysenter_entry) #ifdef CONFIG_XEN_SHSTK - ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK + MERGE_ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK #endif /* sti could live here when we don't switch page tables below. */ pushq $FLAT_USER_SS pushq $0 pushfq GLOBAL(sysenter_eflags_saved) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP pushq $3 /* ring 3 null cs */ pushq $0 /* null rip */ pushq $0 @@ -386,7 +386,7 @@ UNLIKELY_END(sysenter_gpf) jmp .Lbounce_exception =20 ENTRY(int80_direct_trap) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP pushq $0 movl $0x80, 4(%rsp) SAVE_ALL @@ -514,7 +514,7 @@ __UNLIKELY_END(create_bounce_frame_bad_s =20 subq $7*8,%rsi movq UREGS_ss+8(%rsp),%rax - ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP movq VCPU_domain(%rbx),%rdi STORE_GUEST_STACK(rax,6) # SS movq UREGS_rsp+8(%rsp),%rax @@ -552,7 +552,7 @@ __UNLIKELY_END(create_bounce_frame_bad_s STORE_GUEST_STACK(rax,1) # R11 movq UREGS_rcx+8(%rsp),%rax STORE_GUEST_STACK(rax,0) # RCX - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP =20 #undef STORE_GUEST_STACK =20 @@ -594,11 +594,11 @@ domain_crash_page_fault_2x8: domain_crash_page_fault_1x8: addq $8,%rsi domain_crash_page_fault_0x8: - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP movq %rsi,%rdi call show_page_walk ENTRY(dom_crash_sync_extable) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP # Get out of the guest-save area of the stack. GET_STACK_END(ax) leaq STACK_CPUINFO_FIELD(guest_cpu_user_regs)(%rax),%rsp @@ -667,7 +667,7 @@ UNLIKELY_END(exit_cr3) iretq =20 ENTRY(common_interrupt) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP SAVE_ALL =20 GET_STACK_END(14) @@ -700,7 +700,7 @@ ENTRY(page_fault) movl $TRAP_page_fault,4(%rsp) /* No special register assumptions. */ GLOBAL(handle_exception) - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP SAVE_ALL =20 GET_STACK_END(14) @@ -728,7 +728,7 @@ handle_exception_saved: jz exception_with_ints_disabled =20 #if defined(CONFIG_PV32) - ALTERNATIVE_2 "jmp .Lcr4_pv32_done", \ + MERGE_ALTERNATIVE_2 "jmp .Lcr4_pv32_done", \ __stringify(mov VCPU_domain(%rbx), %rax), X86_FEATURE_XEN_SMEP= , \ __stringify(mov VCPU_domain(%rbx), %rax), X86_FEATURE_XEN_SMAP =20 @@ -908,7 +908,7 @@ ENTRY(entry_CP) ENTRY(double_fault) movl $TRAP_double_fault,4(%rsp) /* Set AC to reduce chance of further SMAP faults */ - ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP SAVE_ALL =20 GET_STACK_END(14) @@ -942,7 +942,7 @@ ENTRY(nmi) pushq $0 movl $TRAP_nmi,4(%rsp) handle_ist_exception: - ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP + MERGE_ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP SAVE_ALL =20 GET_STACK_END(14) --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -192,6 +192,8 @@ SECTIONS * the address and the length of them to patch the kernel safely. */ *(.altinstr_replacement) + *(SORT(.altinstr_replacement.?)) + *(SORT(.altinstr_replacement.*)) =20 #ifdef EFI /* EFI wants to merge all of .init.* ELF doesn't. */ . =3D ALIGN(SMP_CACHE_BYTES); --- a/xen/include/asm-x86/alternative-asm.h +++ b/xen/include/asm-x86/alternative-asm.h @@ -55,6 +55,7 @@ decl_orig(\oldinstr, repl_len(1) - orig_len) =20 .pushsection .altinstructions, "a", @progbits + altinstruction_entry .L\@_orig_s, .L\@_repl_s1, \feature, \ orig_len, repl_len(1), pad_len =20 @@ -102,6 +103,88 @@ .popsection .endm =20 +#ifdef HAVE_AS_INSN_SIZE + +.macro SECTION esz + .section .altinstr_replacement.\esz, "axM", @progbits, \esz +.endm + +.macro MERGE_ALTERNATIVE oldinstr, newinstr, feature + decl_orig(\oldinstr, repl_len(1) - orig_len) + + .pushsection .altinstructions, "a", @progbits + + altinstruction_entry .L\@_orig_s, .L\@_repl_s1, \feature, \ + orig_len, repl_len(1), pad_len + + .struct + \newinstr +.L\@_repl_l\(1): + + .section .discard, "a", @progbits + /* + * Assembler-time checks: + * - total_len <=3D 255 + * - \newinstr <=3D total_len + */ + .byte total_len + .byte 0xff + .L\@_repl_l\(1) - total_len + + .altmacro + SECTION %.L\@_repl_l\(1) + .noaltmacro + + decl_repl(\newinstr, 1) + + .popsection +.endm + +.macro MERGE_ALTERNATIVE_2 oldinstr, newinstr1, feature1, newinstr2, featu= re2 + decl_orig(\oldinstr, as_max(repl_len(1), repl_len(2)) - orig_len) + + .pushsection .altinstructions, "a", @progbits + + altinstruction_entry .L\@_orig_s, .L\@_repl_s1, \feature1, \ + orig_len, repl_len(1), pad_len + altinstruction_entry .L\@_orig_s, .L\@_repl_s2, \feature2, \ + orig_len, repl_len(2), pad_len + + .struct + \newinstr1 +.L\@_repl_l\(1): + + .struct + \newinstr2 +.L\@_repl_l\(2): + + .section .discard, "a", @progbits + /* + * Assembler-time checks: + * - total_len <=3D 255 + * - \newinstr* <=3D total_len + */ + .byte total_len + .byte 0xff + .L\@_repl_l\(1) - total_len + .byte 0xff + .L\@_repl_l\(2) - total_len + + .altmacro + SECTION %.L\@_repl_l\(1) + .noaltmacro + decl_repl(\newinstr1, 1) + + .altmacro + SECTION %.L\@_repl_l\(2) + .noaltmacro + decl_repl(\newinstr2, 2) + + .popsection +.endm + +#else /* !HAVE_AS_INSN_SIZE */ +# define MERGE_ALTERNATIVE ALTERNATIVE +# define MERGE_ALTERNATIVE_2 ALTERNATIVE_2 +#endif /* HAVE_AS_INSN_SIZE */ + #undef as_max #undef repl_len #undef decl_repl --- a/xen/include/asm-x86/spec_ctrl_asm.h +++ b/xen/include/asm-x86/spec_ctrl_asm.h @@ -228,19 +228,19 @@ /* Use after a VMEXIT from an HVM guest. */ #define SPEC_CTRL_ENTRY_FROM_HVM \ ALTERNATIVE "", DO_OVERWRITE_RSB, X86_FEATURE_SC_RSB_HVM; \ - ALTERNATIVE "", DO_SPEC_CTRL_ENTRY_FROM_HVM, \ + MERGE_ALTERNATIVE "", DO_SPEC_CTRL_ENTRY_FROM_HVM, \ X86_FEATURE_SC_MSR_HVM =20 /* Use after an entry from PV context (syscall/sysenter/int80/int82/etc). = */ #define SPEC_CTRL_ENTRY_FROM_PV \ ALTERNATIVE "", DO_OVERWRITE_RSB, X86_FEATURE_SC_RSB_PV; \ - ALTERNATIVE "", __stringify(DO_SPEC_CTRL_ENTRY maybexen=3D0), \ + MERGE_ALTERNATIVE "", __stringify(DO_SPEC_CTRL_ENTRY maybexen=3D0), \ X86_FEATURE_SC_MSR_PV =20 /* Use in interrupt/exception context. May interrupt Xen or PV context. */ #define SPEC_CTRL_ENTRY_FROM_INTR \ ALTERNATIVE "", DO_OVERWRITE_RSB, X86_FEATURE_SC_RSB_PV; \ - ALTERNATIVE "", __stringify(DO_SPEC_CTRL_ENTRY maybexen=3D1), \ + MERGE_ALTERNATIVE "", __stringify(DO_SPEC_CTRL_ENTRY maybexen=3D1), \ X86_FEATURE_SC_MSR_PV =20 /* Use when exiting to Xen context. */ @@ -250,16 +250,16 @@ =20 /* Use when exiting to PV guest context. */ #define SPEC_CTRL_EXIT_TO_PV \ - ALTERNATIVE "", \ + MERGE_ALTERNATIVE "", \ DO_SPEC_CTRL_EXIT_TO_GUEST, X86_FEATURE_SC_MSR_PV; \ - ALTERNATIVE "", __stringify(verw CPUINFO_verw_sel(%rsp)), \ + MERGE_ALTERNATIVE "", __stringify(verw CPUINFO_verw_sel(%rsp)), \ X86_FEATURE_SC_VERW_PV =20 /* Use when exiting to HVM guest context. */ #define SPEC_CTRL_EXIT_TO_HVM \ - ALTERNATIVE "", \ + MERGE_ALTERNATIVE "", \ DO_SPEC_CTRL_EXIT_TO_GUEST, X86_FEATURE_SC_MSR_HVM; \ - ALTERNATIVE "", __stringify(verw CPUINFO_verw_sel(%rsp)), \ + MERGE_ALTERNATIVE "", __stringify(verw CPUINFO_verw_sel(%rsp)), \ X86_FEATURE_SC_VERW_HVM =20 /* From nobody Sat Apr 20 00:03:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1637136091; cv=pass; d=zohomail.com; s=zohoarc; b=FXTDD3b3MhKfiF9VwzwJXG7+QC77aPU/nAYPknqYEhmYmYMXv4hGiCcF3GGQRWL0FYVqHrIiOPEvBErGLOdYgHBhXQne4unJPk1638axuxTWDow3rXGvYDh4bdtCT+pplBcJj0zp6Xt+vqJgiDkxhlMPC2UX6/yBThI4kf5p+nk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637136091; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=v97bW+vQJx1D0j8h3u6Qf9S2JVDKpRDR1gplq3wrWHU=; b=YgY4X1qZ4HQaNUq5CsaKfZVxdfe+BjPVLSJgTt9ukjzqJdH55iQ+YAE0yirHvMcM8aKgtQo8qApsyN3APJk2sWVT96t4OCGRMgI32pJYnR/4hkbBD/pvvYlZOkAMyxm1ESmjC+0gkDImd3JRz7Ddh9hI2oZZd24h2xDslQBMsvs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1637136091544720.970640942629; Wed, 17 Nov 2021 00:01:31 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.226627.391673 (Exim 4.92) (envelope-from ) id 1mnFsC-0004Xm-2c; Wed, 17 Nov 2021 08:00:52 +0000 Received: by outflank-mailman (output) from mailman id 226627.391673; Wed, 17 Nov 2021 08:00:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mnFsB-0004Xf-VL; Wed, 17 Nov 2021 08:00:51 +0000 Received: by outflank-mailman (input) for mailman id 226627; Wed, 17 Nov 2021 08:00:50 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mnFsA-0004Ww-QJ for xen-devel@lists.xenproject.org; Wed, 17 Nov 2021 08:00:50 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 7a939fff-477c-11ec-a9d2-d9f7a1cc8784; Wed, 17 Nov 2021 09:00:50 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2054.outbound.protection.outlook.com [104.47.12.54]) (Using TLS) by relay.mimecast.com with ESMTP id de-mta-5-YkO-zEWiOFO4iSk9FEkqKw-1; Wed, 17 Nov 2021 09:00:48 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by VE1PR04MB6480.eurprd04.prod.outlook.com (2603:10a6:803:11d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26; Wed, 17 Nov 2021 08:00:47 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::8062:d7cb:ca45:1898%3]) with mapi id 15.20.4713.019; Wed, 17 Nov 2021 08:00:47 +0000 Received: from [10.156.60.236] (37.24.206.209) by FR0P281CA0058.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.8 via Frontend Transport; Wed, 17 Nov 2021 08:00:47 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7a939fff-477c-11ec-a9d2-d9f7a1cc8784 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1637136049; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v97bW+vQJx1D0j8h3u6Qf9S2JVDKpRDR1gplq3wrWHU=; b=E7TGCuYGSgDvbKO0NbgjDWSlPH2nrdJuGOk63Zo7ukM4+bsvkh0/WCUnzEoRnHIYBOnpmD RP/Q9Or/Ve2zmj3sLZbeRHESny6s0UeX0+LNN9x+FIFwpYOOLdTO3NNe5KLyBCiua5DMfn 7zjnkGk9F9Dl62IBZxIyWwRCe6uceo8= X-MC-Unique: YkO-zEWiOFO4iSk9FEkqKw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DFQ0x6sWZeLU76k14tJMqo3PvBkrd2Ylxu4Lc2vIi06D8zVvFq/aWXxCfwEYwvjbPACtv50hWwLOqGvEVc7JZkMbtKsCZ24DFUiFmKJm58FTJBv53ismmv7oL1VCToj+SczWdKifwPIGEXmLdFR+XQC+IimvX/CAw6m3v7+1hiAuGZNGFm2atghgbNCgZFbO/LJ+TpVX7ydcXPm7DAHz3ZiC9qouoSgNF2nysLMusBK6efZ+5gYj8YsTHc+yTxqqRzk1pbHuAs3Lx/2MpTs20maRsrtUAkb1VfwBqnDknuZW6PjK7ZzjEWQruWW04o7jw5Qfh5CG56Bn4W2RLVU1aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=v97bW+vQJx1D0j8h3u6Qf9S2JVDKpRDR1gplq3wrWHU=; b=g4+NnDZHpgRC5MqiadkDctY9jPQifMVMPRIz/XxcXc1KBJYpCVttcTHA/K555wppdG7+MSQbjTM9p0CpiL4I2VXa/9SRQZlCkBuQ9peQ+WSgfiZgDnk0MJnaou6H3/bYQrjNNVH0C+nhjsAO4yNFpKiN+WdeRfPp4AuK5zV1lJ2YfSnX2fI8UeqrQDzUnb+uuYul5NXeeMYkTiwly9Tani+4UlLbRFtdHdd3pRsoMT4QsYorY6QL7Ak0kwksseFxx1QTVbmbRv7z4Yyfn1O2eA10l0xT/SPxhIQMtCc3wfsc+xGQbZrxOIsQEysFzuNdGx7H7xYrCq/lbo4s6dld4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <9b6620ae-308b-c1c9-939f-74e24c647e5b@suse.com> Date: Wed, 17 Nov 2021 09:00:46 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: [PATCH 2/2] x86/alternatives: adjust alternative_vcall0() Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: <8ef681e6-0274-7b84-494d-29d2c3b3870b@suse.com> In-Reply-To: <8ef681e6-0274-7b84-494d-29d2c3b3870b@suse.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR0P281CA0058.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::19) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a76ae1c3-db01-4dcb-de3c-08d9a9a05d55 X-MS-TrafficTypeDiagnostic: VE1PR04MB6480: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1227; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ObZn8YUzsp3ssTMozwfX6U7aSyH/ZJpd4XO/gIHrigh8Kwer32POpArQC+gurmVsEdrp6iz4GDMOOzGdkg6fGyQfgHSRQFYqkmzTHut9AIOYZV1t3+P7o7JJwdn2Wxyc5yVfiwKp+VKzcM7gcAE/fzCQvG9ElXdFFEg47heNQgtLyidCxfXiCohGuJOY05BnGHvuZxEMXTSIKKUb/2n+JKDlmvbOkah2Z5MtdswD94AAqo1DJHeGrPvO15iOPq7AanEUc7zoPZXzkQBW1EaUUBSFgMNSThSkrzCOt8qrqyh9AHddrXQlg6nnJYMkxqRjl72snSTumCER+OWVm7PMZ/kLUrMZcrEogHdeqtuubE3Mjj0XmrK222/WWQtH5cyt1dyqpqlMR343s0xPutXWsH65GIXXHSSl1CVv92uOQPSKjFqeWhIAWv5ayDBWokVea7Qas4Z4bkFV9ZTNfq21eSu/x3mgvRRCFjcZ5HpFUpcyXPLx5w8lXpemX/kRTbAPNy1WEfxJjgHSu+sJsKlx1v63/ULkO9s7Qs2XwBE5dmNluw+BIgdjXvWj5PEXg+ZzV67jjndonm9DTahiK07aE+LsyVyB1bM5j6STy9gvU11cv0PBoClYXmCEe/qYS6E0+TZ3qek9iWQRihdPZYRQSdZ7ukBIc9y4ZVC8SBndmT0hQhohHh5IUyoaREOn/dZXyFM4QFFjNJpo6vv6UpKyxPxbFZYf0w8/wUm0+Ku8rLhslYyMYdd1tV7uul/lKHjr X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(4326008)(86362001)(36756003)(5660300002)(31686004)(2906002)(6486002)(54906003)(6916009)(316002)(16576012)(38100700002)(2616005)(8936002)(508600001)(956004)(66556008)(186003)(66476007)(26005)(4744005)(31696002)(8676002)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M1R4cVBqdmhBczh6OUV4ZFlmMjZTTWZJakJ0bEE4bVZvYzdpbXE5UktoZXM1?= =?utf-8?B?RXhEdWdWNExOZlBsLzBMN0YxSG1kYXB5VWtER0Zwc01JYTF5NzBaQXF6aFcz?= =?utf-8?B?WjEybjJUVFcrWWE4eGMrd0hLSHNqWFh2cHBBbDIra1lQa3RKc2xCTnFSQVIv?= =?utf-8?B?YXBhTEQ5MlFqRGZybzdDTWdSaUhIb2EwdXBFdWJxWVBGM0RVeGdlWENjdlRH?= =?utf-8?B?bnYrSEh6cUNLUnRWSDZYaThjbU02anRtenJxUnlRRVFxUW9WWmYrallxdEVX?= =?utf-8?B?RnVuMFo4LytLaC9PU3pQK3RlcFhSOFlLVmdpRjFKKzNMRmp0NnI5RllqWEVO?= =?utf-8?B?Yml5T0cybkorU01rY3B3V1o3UUQ0UGtvRkpkT09FdzJlS2lYTU1vZlgxdDZ5?= =?utf-8?B?RFZ1TUFzMG52U3p5MnVXZ2hRMDM0RVU3emRJUnM5VzJxamttM2dUMDdDVmlq?= =?utf-8?B?OGtCZ0lNVmp5SkZhanBOTGRvcDlmeGdpamNXZXRRNTlWV2RJTkNjNjJTT0dh?= =?utf-8?B?M1V4djhjL0ZQWW91b1RKM2twZlN0aXNtWlBMV2ZXVUZLNDJWRTlzNytDSENF?= =?utf-8?B?QmFJcGpuRkdOYzlQczBmRG5wOTlvQWVEcXJjZ1hRNlVjS1M2cE9BM05rM3N1?= =?utf-8?B?MFVzQ2V5QXVsNmlwbmY2ZDhIczZ3TmVCVk41TlRXQllFK2pxcmdTcGw0RXc1?= =?utf-8?B?OXJCVi9ySFhRdi9wMTFmeDJQN0JxbmRLMDJUM1gwaWE5NEtNWk51ZEdicklx?= =?utf-8?B?QkFQMDdtKzQzMXVadmx0blIxUGVlSG5aeldOMS9jS2RmUFpON0xxWkFoTklE?= =?utf-8?B?Vkl0bktmY3FLTlpWSGVUQVdXQUVTMExPYnZsci92ZVpjbkNwOXpUd1NjMjhw?= =?utf-8?B?QVFuOUNPZDVCT21jMU8vT1pTK3M2RURNdHpyZDJaNXBlUkZ2NUpGNE9hYzlm?= =?utf-8?B?ZjVVYVowdzBKaEdkUHJOcjFFTkQ3Ui9Sem9QR2pZRms2aDhpRFNtaTQ0cTdz?= =?utf-8?B?SVpyWGE3MGk0Vmt2bFR0YjIvV1l6dzdIR3RQcFJGRjk2NFQ3R05ZSFdjM0p3?= =?utf-8?B?d1hZTDhYOUpVTmgxeXRjUXFNRms5Tkg5ZkZOazlKQmYzcG43UXVYbG1RSUF0?= =?utf-8?B?c3JLaTUyTWpBdC9pbWZqRDliR2kzeDl1S0xpYncxTllJaERJd3NrbTFCazJu?= =?utf-8?B?ZmQrcGordVVqZ3JFWDhuUEVDbXlxUGl2N0lMWmIzRXYwazRjWFpCNEUvV3I3?= =?utf-8?B?MGl4MW1qek9COG1qY0dFaGhnbjNLNTV3NVNxUFNQVU1WVlpERlFpcXFvMnA1?= =?utf-8?B?YkdBLzRXVWZ2WmRNem13SFZ1aVhBOEU1U1BYTzBKM1JZeGZIWlE2WXAxS1pX?= =?utf-8?B?TVBwRnZtWjk1clB4M1pWbzJ3ODhJWUtMdVNoN2tDOGhBN0I0MjYwNmliU2hj?= =?utf-8?B?ZUJ3VElsQmdHUS9HV0Z5UTNGTUhCRkxqamp5K2hkcjdQUWNkdEFrS0JIbGs2?= =?utf-8?B?bEY0a1VCNWI4eWtnV3Q5eDlyTjdnazUyL1RTUWZCTEt4L0RlVUJDRVYxRUtp?= =?utf-8?B?YjluN2MzV0h2ckE5RE9Zb1VyQnhkUU9ybktQMk44cytwYVU2Vm1Db2x6OXBG?= =?utf-8?B?dVpFenl3T3lORWxoSEVTMFBsSlV0QnJqUDBGZ1RCVENGbncxd3dvMUozd3da?= =?utf-8?B?WmxXWi9UUzhhT1FXZFRTRmJWbmMrMHV2UytNMURLcHlrMWFGMGJaWTh5ZzVO?= =?utf-8?B?N0grQjJuRlBzTzc5ODg3Wi9Bb1pXLzFNRDVQcUpYYS9WMjRuWDd5K1dpaURF?= =?utf-8?B?K2VaaE96dnNqdjZTUml3WEU2cURHZ3ZCRGlUelFJaGkwRmJlQVBpNkVFcDdC?= =?utf-8?B?MkdYL3ZkazRxWkhQcGF6cUV3dHYzZ3JoKzgxTDRGazFvMTR0M1NOejJrd1Iw?= =?utf-8?B?dmFTSzVDOTBRSktuVkFMeUMzdkRHZVVDY2dNWm90TjB3NUlneVRHelUwQVlq?= =?utf-8?B?UFptbC9kSDBOa2tORGVhQXBRWDlyN0duNmxVSnVtMU9IMXRIbGloemZVSk9C?= =?utf-8?B?WUxjcDZNSGt2c043TDV2dEpGbVJab1BwL2s1UXg2T1AxY3JEVzkvcU1YQU9P?= =?utf-8?B?ZEgvUEttT0JKdEtJcFZ5NTVqVDlTN0xMTmRPYmx3d3Rva2ZReEtlQkNXNGl6?= =?utf-8?Q?65MZcXTzRnoxPdq17jgCMAM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a76ae1c3-db01-4dcb-de3c-08d9a9a05d55 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2021 08:00:47.6425 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UaVqxcKY3TPCbci4o64p3RqRhv2T/kgJbJQbQiEHUKxPYxS4y2rcxY9EfkgjxalgZtWkNO9utMLdSXvcL2tqHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6480 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1637136092207100001 Content-Type: text/plain; charset="utf-8" I'm puzzled about two inconsistencies with other alternative_vcall() here: There's a check missing that the supplied function pointer is actually pointing to a function taking no args. And there's a pointless pair of parentheses. Correct both. Fixes: 67d01cdb5518 ("x86: infrastructure to allow converting certain indir= ect calls to direct ones") Signed-off-by: Jan Beulich Reviewed-by: Wei Chen --- a/xen/include/asm-x86/alternative.h +++ b/xen/include/asm-x86/alternative.h @@ -218,7 +218,8 @@ extern void alternative_branches(void); =20 #define alternative_vcall0(func) ({ \ ALT_CALL_NO_ARG1; \ - ((void)alternative_callN(0, int, func)); \ + (void)sizeof(func()); \ + (void)alternative_callN(0, int, func); \ }) =20 #define alternative_call0(func) ({ \