Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1293394imu; Thu, 20 Dec 2018 13:39:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/XlcDgxJUs9uVqtEbpOdc2IPcJRfkbfNUnct+tyJ5Ec6q1NyyldukgdXjCaKc2pa5KYSc9U X-Received: by 2002:a63:6a05:: with SMTP id f5mr24130010pgc.72.1545341993961; Thu, 20 Dec 2018 13:39:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545341993; cv=none; d=google.com; s=arc-20160816; b=sWoCXaTzCqyK4AC9igvueTfkuniqaqqVhlHjILg+mOs7jQabtRcrTR48MCxBEMUpbD rsemZzvebFozKmDUckNuw9kaYA3kPwMVnEBbG8s1IalcJvJ86L2bT8i50RnCQ1Z6W7Cv GhMzFkFmy4KHbI1qhh9IuhCwdbqjkwjAc15joR1WciN3p8foq5qTIc88X7pD8/j/FluV SDXC+kUejp0CowSJVHAJFlQ/p2NdV0AzrPb2B9AnwU+65XpVf4DP6KA6m8dEQgCgkU51 b0PV2vrWViKoRyybopv2frH7g9zz5dUPP+U63uMPi/qzKGdwfWwskaeICmJnJlJ8Y23x vV4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=dhL8U6YzJbW9zeMeF+DGkHC3QDeGYKCpHgjxnDZXm/c=; b=mUaeI4LQeyN0LGoscI11Weie2Zsp/2BMMHY04jyeRQ/SI8VspwowQtaJiNrlDrJIiX y/b1esX41kzJFiUt7b8wrTkpsqEDgPnsMnMITGFI5gA+8evipWNryotzFmH6fJIe+Xne Cn1lz8P1D0E8Ohd1yjAGFTKIVXkON8+q4GsEV6g8GhNBLZJ7q3NrLlBfx/xLpX2OIvZz xpiZpo62Ug7y+4wDwo9JMT0BtxrRftu/lu3ts0YRsRQo4SqSDqyAO7uibyc5RFfGJ6Ko PC/n5ERUKdolZlV+0VP5dQpswv1tIX65aT+WPqGd6TESKQ6oSQJolGO8uGwDft3+y69p PH4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=PxPYNOM2; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=alien8.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v5si19375980pfe.52.2018.12.20.13.39.38; Thu, 20 Dec 2018 13:39:53 -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; dkim=pass header.i=@alien8.de header.s=dkim header.b=PxPYNOM2; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=alien8.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732619AbeLTQR2 (ORCPT + 99 others); Thu, 20 Dec 2018 11:17:28 -0500 Received: from mail.skyhub.de ([5.9.137.197]:45922 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730483AbeLTQR2 (ORCPT ); Thu, 20 Dec 2018 11:17:28 -0500 Received: from zn.tnic (p200300EC2BCCE3000CA99317B30BD475.dip0.t-ipconnect.de [IPv6:2003:ec:2bcc:e300:ca9:9317:b30b:d475]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id CCB721EC0913; Thu, 20 Dec 2018 17:17:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1545322647; 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:in-reply-to:in-reply-to: references:references; bh=dhL8U6YzJbW9zeMeF+DGkHC3QDeGYKCpHgjxnDZXm/c=; b=PxPYNOM2HRoobC1YQZ7NIeC2DnHWbhbpM/n4tsZM/BvEOE6fTdQfMxI9Unu5Tn+aStGTjl ITWAesMXFTH1gpJ6XX0e0h4SOg0aUYtQK14AZBYjqKKk3rhjqLHl8JD6xYBnBcXyW+aBIB mLRBgr+UToPX/pufbXMD/8Xu2oPW4K0= Date: Thu, 20 Dec 2018 17:17:22 +0100 From: Borislav Petkov To: Vitaly Kuznetsov , Reinette Chatre , Babu Moger Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Fenghua Yu , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Jan H =?utf-8?B?LiBTY2jDtm5oZXJy?= , David Duncan Subject: Re: [PATCH] x86/intel_rdt: use rdmsr_safe() to workaround AWS host issue Message-ID: <20181220161722.GD31403@zn.tnic> References: <20181220134046.7916-1-vkuznets@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20181220134046.7916-1-vkuznets@redhat.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Dec 20, 2018 at 02:40:46PM +0100, Vitaly Kuznetsov wrote: > It was found that AWS x1 instances (Xen-based) lack xen.git commit > 1f1d183d4900 (x86/HVM: don't give the wrong impression of WRMSR succeeding) > and because of that the wrmsr_safe() check in cache_alloc_hsw_probe() > doesn't help: the consequent rdmsr() blows up with > > unchecked MSR access error: RDMSR from 0xc90 at rIP: > 0xffffffff88c5bba3 (native_read_msr+0x3/0x30) > > The issue should definitely get fixed on AWS side. We can, however, simply > workaround this in Linux and live happily after. > > Signed-off-by: Vitaly Kuznetsov > --- > arch/x86/kernel/cpu/intel_rdt.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/intel_rdt.c b/arch/x86/kernel/cpu/intel_rdt.c > index 44272b7107ad..0acee6cd07a8 100644 > --- a/arch/x86/kernel/cpu/intel_rdt.c > +++ b/arch/x86/kernel/cpu/intel_rdt.c > @@ -213,7 +213,8 @@ static inline void cache_alloc_hsw_probe(void) > > if (wrmsr_safe(IA32_L3_CBM_BASE, max_cbm, 0)) > return; > - rdmsr(IA32_L3_CBM_BASE, l, h); > + if (rdmsr_safe(IA32_L3_CBM_BASE, &l, &h)) > + return; > > /* If all the bits were set in MSR, return success */ > if (l != max_cbm) > -- Does the below hunk work too? Reinette, Babu: is there any reason for rdt_init_res_defs() and check_quirks() to run before get_rdt_resources() which looks at CPUID bits? If not, we need to do something like below, for guests. Thx. --- diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c index c3a9dc63edf2..64cb0fb31862 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -969,17 +969,13 @@ static int __init resctrl_late_init(void) struct rdt_resource *r; int state, ret; - /* - * Initialize functions(or definitions) that are different - * between vendors here. - */ + if (!get_rdt_resources()) + return -ENODEV; + rdt_init_res_defs(); check_quirks(); - if (!get_rdt_resources()) - return -ENODEV; - rdt_init_padding(); state = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.