Received: by 2002:a05:7412:f690:b0:e2:908c:2ebd with SMTP id ej16csp217739rdb; Thu, 19 Oct 2023 02:16:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE4pykbp7EQDB4lgRh2yZ/PL/oWWzRScXLOYlpCoNc4lHoxCYCrUfv7N58vJUREDmLJz6mG X-Received: by 2002:a17:903:2304:b0:1b8:a67f:1c15 with SMTP id d4-20020a170903230400b001b8a67f1c15mr1569225plh.25.1697706967545; Thu, 19 Oct 2023 02:16:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697706967; cv=none; d=google.com; s=arc-20160816; b=luESwV621250rxtz7oQVbIhcGoYinFIfHc3bWy2xp8cd+7H167df9QArujC0033UmG 7+tFNg/W4Ha0TCLkkrzJUb4ZcF6T6jMf2YxP+6PnvLODrgIgQmWUk+v8U3JxNNTjZoD0 2pSV42BC7uR6NavphuQhslbmcX/HddesGFFwY1471W+9gPrpildmzAKEHyAEByy6GtQM H96Ng/TeomG188ixaM/CrDhnALQMgTq3TAAsAT6dReLxLoa5lxixH4IRposkwzcn5KYT y9XlDxHg0bINZ+maQkN+ztYRinO1VikwaIPg7gX2OVL5OkcRYoFJpurLN7NbNqRljwOc 7YmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=E3yro6bOZUqvaCMDNWEbvLZF+xxJcY0szaQQ5wMVbyY=; fh=69ERR2JGu6HwpvDweAGhMBWKjW9vTZ/OQbycZiYqWpk=; b=fzTYyDoB2ccP6sXm7Bu3DnwEAN1xEU6KBzzNEVQOHHpC/5IFCvPCw3n4XqQQZJwhnb bSzEc/SMHV6Y77IUuzoJjWwzI3L057yoGQgT/LCFb4zwUaxLHzyP1MzkijppTS88693B UFhdMLH8YM4ggXLvL3WfwnQ8q59m76/zKFDuD5ZbDXqSoQJp4xEhKjbAx5VJ1TgCtDxA TjtlDCainSyvHiUjsmGvNQeSJEf9rxKO3UfIC1t6pD3foiacLIFc/VVVzbWqhExtaeCm fmxFzHGzqR7dukdAisfgAtCmfbQxxuJ5NXHTAA2bUSuMqKEugVE7jXcY1aEGT8S7BR/V j/Fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b="uzf8nm/k"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id f22-20020a633816000000b005af21fd2c7dsi4133663pga.412.2023.10.19.02.16.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 02:16:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b="uzf8nm/k"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id AE45B8135D44; Thu, 19 Oct 2023 02:16:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345053AbjJSJPa (ORCPT + 99 others); Thu, 19 Oct 2023 05:15:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345039AbjJSJP0 (ORCPT ); Thu, 19 Oct 2023 05:15:26 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CA78AFE; Thu, 19 Oct 2023 02:15:24 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 613971FD8C; Thu, 19 Oct 2023 09:15:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1697706923; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=E3yro6bOZUqvaCMDNWEbvLZF+xxJcY0szaQQ5wMVbyY=; b=uzf8nm/kDJ+Ijp17n13oFoIE7j/nvomj+PI1AhcOSTPUbSVZB89yeloWUG9gW0czwezlEX Rmd8qHGjSKbfyJKkmfywo27aazWr0Ly2hKZGaUp6TKwLU8xPn/2nSVgclz2877RCOeXbFE RcaJPPTgbJXdypAZiks/+uDe5klZpeo= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id D2359139C2; Thu, 19 Oct 2023 09:15:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id fnsqMarzMGWwVAAAMHmgww (envelope-from ); Thu, 19 Oct 2023 09:15:22 +0000 From: Juergen Gross To: linux-kernel@vger.kernel.org, x86@kernel.org, virtualization@lists.linux-foundation.org, kvm@vger.kernel.org Cc: Juergen Gross , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Ajay Kaher , Alexey Makhalov , VMware PV-Drivers Reviewers , Paolo Bonzini , Wanpeng Li , Vitaly Kuznetsov , Boris Ostrovsky , xen-devel@lists.xenproject.org Subject: [PATCH v3 0/5] x86/paravirt: Get rid of paravirt patching Date: Thu, 19 Oct 2023 11:15:15 +0200 Message-Id: <20231019091520.14540-1-jgross@suse.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Authentication-Results: smtp-out2.suse.de; none X-Spam-Level: X-Spam-Score: -2.10 X-Spamd-Result: default: False [-2.10 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-3.00)[-1.000]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCPT_COUNT_TWELVE(0.00)[18]; MID_CONTAINS_FROM(1.00)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 19 Oct 2023 02:16:04 -0700 (PDT) This is a small series getting rid of paravirt patching by switching completely to alternative patching for the same functionality. The basic idea is to add the capability to switch from indirect to direct calls via a special alternative patching option. This removes _some_ of the paravirt macro maze, but most of it needs to stay due to the need of hiding the call instructions from the compiler in order to avoid needless register save/restore. What is going away is the nasty stacking of alternative and paravirt patching and (of course) the special .parainstructions linker section. I have tested the series on bare metal and as Xen PV domain to still work. Note that objtool might need some changes to cope with the new indirect call patching mechanism. Additionally some paravirt handling can probably be removed from it. Changes in V3: - split v2 patch 3 into 2 patches as requested by Peter and Ingo Changes in V2: - split last patch into 2 - rebase of patch 2 as suggested by Peter - addressed Peter's comments for patch 3 Juergen Gross (5): x86/paravirt: move some functions and defines to alternative x86/alternative: add indirect call patching x86/paravirt: introduce ALT_NOT_XEN x86/paravirt: switch mixed paravirt/alternative calls to alternative_2 x86/paravirt: remove no longer needed paravirt patching code arch/x86/include/asm/alternative.h | 26 ++++- arch/x86/include/asm/paravirt.h | 79 +++++---------- arch/x86/include/asm/paravirt_types.h | 73 +++----------- arch/x86/include/asm/qspinlock_paravirt.h | 4 +- arch/x86/include/asm/text-patching.h | 12 --- arch/x86/kernel/alternative.c | 116 ++++++++++------------ arch/x86/kernel/callthunks.c | 17 ++-- arch/x86/kernel/kvm.c | 4 +- arch/x86/kernel/module.c | 20 +--- arch/x86/kernel/paravirt.c | 54 ++-------- arch/x86/kernel/vmlinux.lds.S | 13 --- arch/x86/tools/relocs.c | 2 +- arch/x86/xen/irq.c | 2 +- 13 files changed, 137 insertions(+), 285 deletions(-) -- 2.35.3