Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp628314ybt; Wed, 1 Jul 2020 06:34:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwHmTu1WVUVTP7nGHo4lw7+jsm2jD5tEcylqeEaR/665QeSb7gaC1uDQwtujRuoCN7YidXC X-Received: by 2002:aa7:d5cd:: with SMTP id d13mr4174712eds.370.1593610467498; Wed, 01 Jul 2020 06:34:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593610467; cv=none; d=google.com; s=arc-20160816; b=cHGIq1nRP9kA3v9PXRt1530MWhFszGDCXrEzfu/0XwQCv/FNjqrrmF8byxNDmrwPSu SZ/ikMKN8rAsyzn8UrRwuOzz4padfSPX0LpTwqMaOiBoJqkU/hWt6ZzUIOLu0xnsQQxV 6gaRUzWCfudckhpK9GzgPHUQ6Q6TFRHRFHiz9hvx92XkkVZ5QEFNGCQ87jIALkqAng2n L11qSDKwtatxDKGt7rrLXsgj2n4APcxlOwmlRBUrGAQyVyr5dhUO+au0yqif+GiPoO5A 810FPJfJpySm1TiByyxCZRBdAC8Xc7jqugNHsClsXzj2Sb9UGbTDV0lhLLGuD+k2qx9+ kIIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:dkim-signature :dkim-signature:date; bh=yYp0fsYwx46bcChLn02U2uuM+hLz6G0PqagZOiJL7Vs=; b=VmCNeGLaQxue5sMEBE6hoHxtu47IglO5OIcZ5b/7DjD7cqk20btRy/C2J4V32myLEQ yU2fJozo7WKLP0NHbK9BaRh+UkW51dQUne3nRcL9DgNGG86JzwU1MdWCvxiIIQo1snS4 YBZHvSoJCqJvgolnYfkiNj75BDw/69M9mEj6qSQPHX/cg+xBrI+CSc2MfJZo4W0QEd5m knGEIAYbkwGauLm3/mrXuYP28r5Dtm4jGVRaHFN6AP28o2FHJSsHxKcGsJrw36c58xZV ijwiWGU7+rSzPRGJRLKq3zdyNU4foG1TliTw8wIpRPhuhWyG7T9FWOVkwUFGMGtarBl7 oIrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linutronix.de header.s=2020 header.b=rPWSSTXQ; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b30si3999292edj.204.2020.07.01.06.34.04; Wed, 01 Jul 2020 06:34:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@linutronix.de header.s=2020 header.b=rPWSSTXQ; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731095AbgGANdX (ORCPT + 99 others); Wed, 1 Jul 2020 09:33:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730771AbgGANdU (ORCPT ); Wed, 1 Jul 2020 09:33:20 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A880C08C5DC; Wed, 1 Jul 2020 06:33:18 -0700 (PDT) Date: Wed, 01 Jul 2020 13:33:15 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1593610395; h=from:from:sender:sender:reply-to: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=yYp0fsYwx46bcChLn02U2uuM+hLz6G0PqagZOiJL7Vs=; b=rPWSSTXQcMLR+EeUu6ltNt96ItLDtLcuS22nzXuGPA2Tmgq06Vaqt7rLTS8StUpCx6kf1R gknZf1RHwwrCyIXu7bGjbvKy7qmJEgKsg3BYV26/IOYRPACW3w1G436Gj9tqMvAXqCHq/W DUs2dBesGppMb8uyUdT3PiLcIpprW6Key1Et5Qk4bvbvChSTRj49aB1DtJ7fURLRZDSrh3 Pvzcb6CiKHRhW/s47k24/urK3Kwvk06uMw+XQLm/0I6hpkppcmmK1AhI+eqd3X0pjYdC9N JVffgCykrc9b8oBy8BtkARTtlTOrWq63UxzqQUu93mJnybp5xhAxb/hP4YCGvA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1593610395; h=from:from:sender:sender:reply-to: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=yYp0fsYwx46bcChLn02U2uuM+hLz6G0PqagZOiJL7Vs=; b=7ui2A5+Jbqz/+0IXeFMWQ7aAuMTbV2a/NJQtRcnVSzBPoFsm+/u1Dj+C9p6w2cOfMlLNxq 5YB9B4fdyQjWkQDA== From: "tip-bot2 for Andy Lutomirski" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: x86/fsgsbase] x86/fsgsbase: Fix Xen PV support Cc: Andy Lutomirski , Thomas Gleixner , x86 , LKML In-Reply-To: References: MIME-Version: 1.0 Message-ID: <159361039503.4006.17824211510339513520.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the x86/fsgsbase branch of tip: Commit-ID: d029bff60aa6c7eab281d52602b6a7a971615324 Gitweb: https://git.kernel.org/tip/d029bff60aa6c7eab281d52602b6a7a971615324 Author: Andy Lutomirski AuthorDate: Fri, 26 Jun 2020 10:24:30 -07:00 Committer: Thomas Gleixner CommitterDate: Wed, 01 Jul 2020 15:27:20 +02:00 x86/fsgsbase: Fix Xen PV support On Xen PV, SWAPGS doesn't work. Teach __rdfsbase_inactive() and __wrgsbase_inactive() to use rdmsrl()/wrmsrl() on Xen PV. The Xen pvop code will understand this and issue the correct hypercalls. Signed-off-by: Andy Lutomirski Signed-off-by: Thomas Gleixner Link: https://lkml.kernel.org/r/f07c08f178fe9711915862b656722a207cd52c28.1593192140.git.luto@kernel.org --- arch/x86/kernel/process_64.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index cb8e37d..e14476f 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -163,9 +163,15 @@ static noinstr unsigned long __rdgsbase_inactive(void) lockdep_assert_irqs_disabled(); - native_swapgs(); - gsbase = rdgsbase(); - native_swapgs(); + if (!static_cpu_has(X86_FEATURE_XENPV)) { + native_swapgs(); + gsbase = rdgsbase(); + native_swapgs(); + } else { + instrumentation_begin(); + rdmsrl(MSR_KERNEL_GS_BASE, gsbase); + instrumentation_end(); + } return gsbase; } @@ -182,9 +188,15 @@ static noinstr void __wrgsbase_inactive(unsigned long gsbase) { lockdep_assert_irqs_disabled(); - native_swapgs(); - wrgsbase(gsbase); - native_swapgs(); + if (!static_cpu_has(X86_FEATURE_XENPV)) { + native_swapgs(); + wrgsbase(gsbase); + native_swapgs(); + } else { + instrumentation_begin(); + wrmsrl(MSR_KERNEL_GS_BASE, gsbase); + instrumentation_end(); + } } /*