Received: by 10.223.176.46 with SMTP id f43csp2694383wra; Mon, 22 Jan 2018 01:45:04 -0800 (PST) X-Google-Smtp-Source: AH8x225rABFHIgNvJ6GKOid58dXXecB5aT0+9BbClzKD6FTWiHs/aUBx9OAY40iiUbOJoVAJy9Bz X-Received: by 2002:a17:902:6e8c:: with SMTP id v12-v6mr3195012plk.14.1516614304072; Mon, 22 Jan 2018 01:45:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516614304; cv=none; d=google.com; s=arc-20160816; b=iBZRYoaNWEs/ySgR9U/REYSy2dnx0KjTwXgKocZyY/1V5z+8Qsv8Pg2UwheompURK/ Gf3Q4qTCssx6PXFiwc15Az2Gi9urk7wgJQegidYc1WsdOym5xH+A0/Q6cis/tJQSKeoE bekElqTd7+GTUf/lZvHdVMPRgBusS0QGkZjNEVNa0F4okRNAWogY4FHVNYIAE26tdjUl 6IEQBFmS/VbkALJIxHdRZH9gQnBnlkuzPp2rLeNt5eJRr4xX06OZQGx2lhTcnhza9zvZ cvDz5CTYQM4MIcCSJ0EcVPxIhJHrKmDg6vZcUCSpSK0YkF8fTBFr2hdHU+uUSZgRJCIm zejw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=sgolgbK+41UX8UGqWVV1BLuKB1cjzDj1q3mT6jNpGwY=; b=Z/5kitQa4S+VQowF8iXSIKWZDp9en3bGZ3RKgvB8BxfyeEOMKH9gva4vDefwn3hLYz Q5eegFZ5zwzYtDrb/PmXfeA7nKLe4e8eAR+qj56Z6VJ0CNUhhLb8qPmI12Qv1vLzSR48 AyPw10SwPhrA77m2REMRUP2WNwVxZjyn+EafetKQsrIPm/M0KyF8pVz4M09GLdVNoQaN jac3rtJzrX5z1TvxMKJyyXbaHdRACOyXyYdGnOsszf0zxYCeKtcHObibA5dh7k7AlHrJ V4Fm1HbVqwPzrbVAQxAlWKx8fGG6xoLawLeh1ue8pDlpFKhUhT5tmoqqBsRzef9LUZml 94ZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n20-v6si3239805plp.538.2018.01.22.01.44.49; Mon, 22 Jan 2018 01:45:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751581AbeAVIly (ORCPT + 99 others); Mon, 22 Jan 2018 03:41:54 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:58668 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751093AbeAVIlw (ORCPT ); Mon, 22 Jan 2018 03:41:52 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 0FF2CEBD; Mon, 22 Jan 2018 08:41:51 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tom Lendacky , Thomas Gleixner , "Reviewed-by: Borislav Petkov" , Peter Zijlstra , Tim Chen , Dave Hansen , Borislav Petkov , Dan Williams , Linus Torvalds , David Woodhouse , Paul Turner , Razvan Ghitulete , Greg Kroah-Hartman Subject: [PATCH 4.4 03/53] x86/cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC Date: Mon, 22 Jan 2018 09:39:55 +0100 Message-Id: <20180122083910.450921033@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083910.299610926@linuxfoundation.org> References: <20180122083910.299610926@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Tom Lendacky commit 9c6a73c75864ad9fa49e5fa6513e4c4071c0e29f upstream. With LFENCE now a serializing instruction, use LFENCE_RDTSC in preference to MFENCE_RDTSC. However, since the kernel could be running under a hypervisor that does not support writing that MSR, read the MSR back and verify that the bit has been set successfully. If the MSR can be read and the bit is set, then set the LFENCE_RDTSC feature, otherwise set the MFENCE_RDTSC feature. Signed-off-by: Tom Lendacky Signed-off-by: Thomas Gleixner Reviewed-by: Reviewed-by: Borislav Petkov Cc: Peter Zijlstra Cc: Tim Chen Cc: Dave Hansen Cc: Borislav Petkov Cc: Dan Williams Cc: Linus Torvalds Cc: Greg Kroah-Hartman Cc: David Woodhouse Cc: Paul Turner Link: https://lkml.kernel.org/r/20180108220932.12580.52458.stgit@tlendack-t1.amdoffice.net Signed-off-by: Razvan Ghitulete Signed-off-by: Greg Kroah-Hartman --- arch/x86/include/asm/msr-index.h | 1 + arch/x86/kernel/cpu/amd.c | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -332,6 +332,7 @@ #define MSR_FAM10H_NODE_ID 0xc001100c #define MSR_F10H_DECFG 0xc0011029 #define MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT 1 +#define MSR_F10H_DECFG_LFENCE_SERIALIZE BIT_ULL(MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT) /* K8 MSRs */ #define MSR_K8_TOP_MEM1 0xc001001a --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -746,6 +746,9 @@ static void init_amd(struct cpuinfo_x86 set_cpu_cap(c, X86_FEATURE_K8); if (cpu_has_xmm2) { + unsigned long long val; + int ret; + /* * A serializing LFENCE has less overhead than MFENCE, so * use it for execution serialization. On families which @@ -756,8 +759,19 @@ static void init_amd(struct cpuinfo_x86 msr_set_bit(MSR_F10H_DECFG, MSR_F10H_DECFG_LFENCE_SERIALIZE_BIT); - /* MFENCE stops RDTSC speculation */ - set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC); + /* + * Verify that the MSR write was successful (could be running + * under a hypervisor) and only then assume that LFENCE is + * serializing. + */ + ret = rdmsrl_safe(MSR_F10H_DECFG, &val); + if (!ret && (val & MSR_F10H_DECFG_LFENCE_SERIALIZE)) { + /* A serializing LFENCE stops RDTSC speculation */ + set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); + } else { + /* MFENCE stops RDTSC speculation */ + set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC); + } } /*