Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3372430pxb; Mon, 17 Jan 2022 18:55:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJxjy9sYYY82yUuKVmifZ9N6Yu2b6217rwr4wDIMqbUOUoJGKWwBRfMjmcw6+kVAcvv7SzJ4 X-Received: by 2002:a17:902:c242:b0:14a:a9a6:4cb0 with SMTP id 2-20020a170902c24200b0014aa9a64cb0mr11655405plg.36.1642474528548; Mon, 17 Jan 2022 18:55:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642474528; cv=none; d=google.com; s=arc-20160816; b=lICFxPwuT9ImL1c1vapAbB2IUzY3/2JMBX34ShTLZdB0ANnWlmsV/u97VzN434nRre onzSUHz8KoFJ8/P1ZvvPkVwZMFQAsos5unoDPs+dbjwGM2PJrr29LJ/7vsiFp+aXwAuK 37srLY3f9A/dktdlDRnwXm01/1GnIIsP2+qQ8H802JB3P0UPN9LAtBCPEXvy0aKsYEcN IgyRiIZ2QikPy0vuYLw59W55pkfVL4KRzG2vjwnI6NsjegLrHtF0kbMtiwoGrjD1Hc8Z 4Sk40sSKlAj1onTYGGPdvUH/dwJ8/cCogJaPDYVAE7ufG2V+KYZjxBfzmBNNz/btmXXn 2SKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=4/aNSkVjR8Um6vaRHzGuvONVebu5pqsF8zgeYGHQsgE=; b=V3cKzeG0YdM4eOBi87Qnfb2w6QpyW3yAxvzxyTnGbwtfhK/fIj1u0z8yvhpj2Z2xVE 6Dhj9xiI920mfFIg20oOMffAyH6cxESEgYgbPZ+9kvhddSsPDtFNPFsFrt4FC65rAPZU 5v//YaSicBdz+sWR4z8dsiMne+gIEGrF3gI01qa21hVg2GDHTOMJ1RW6bh/Td90V26jD 9b/ZFU5+OCvgCCP4ky3Nc7iQb/3tcwUsRV/pwB+/j7NBrX9vMTU5FbjVzLTYya3ElYgA jxgO8zTt0DZsJohogZ0HpN9vzMg4yi/vGOsjxCXlYNJ4TckdyI8TCh/gc/+Gz7KBpGS7 9YyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=J515P1x2; 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=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n35si15909674pgm.152.2022.01.17.18.55.15; Mon, 17 Jan 2022 18:55:28 -0800 (PST) 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=pass header.i=@alien8.de header.s=dkim header.b=J515P1x2; 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=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241337AbiAQRvf (ORCPT + 99 others); Mon, 17 Jan 2022 12:51:35 -0500 Received: from mail.skyhub.de ([5.9.137.197]:41448 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233337AbiAQRve (ORCPT ); Mon, 17 Jan 2022 12:51:34 -0500 Received: from zn.tnic (dslb-088-067-202-008.088.067.pools.vodafone-ip.de [88.67.202.8]) (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 2C7111EC0531; Mon, 17 Jan 2022 18:51:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1642441888; 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=4/aNSkVjR8Um6vaRHzGuvONVebu5pqsF8zgeYGHQsgE=; b=J515P1x2M/5Yg8o+APdqCN+4wDGB5V21OHHP15zx4VeV0gsfac9kPyLR+lnsnIDTqfxO3X NoV3lnyBe+hn/pmM1g9YGrePx9sIRDtfT+DRRPAeAFRBhUlyQiNVWi7ccsgaZH5BCzaLNi taOLVZhQxGbPT2l71cT5+IuZUQHWBHA= Date: Mon, 17 Jan 2022 18:51:30 +0100 From: Borislav Petkov To: "Chen, Rong A" , Peter Zijlstra Cc: kernel test robot , x86-ml , linux-kernel@vger.kernel.org Subject: [PATCH] x86/mce: Fix two more noinstr issues Message-ID: References: <61cba815.Her0ebRPVzS617KT%lkp@intel.com> <5925b071-0b4b-b8da-5cf2-5c66ec2ac08f@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org IOW, something like this ontop of: https://lore.kernel.org/r/20220113155357.4706-1-bp@alien8.de That did pass overnight build-tests so --- From: Borislav Petkov Date: Sun, 16 Jan 2022 19:23:26 +0100 Subject: [PATCH] x86/mce: Fix two more noinstr issues Always inline mca_msr_reg(): text data bss dec hex filename 16065240 128031326 36405368 180501934 ac23dae vmlinux.before 16065240 128031294 36405368 180501902 ac23d8e vmlinux.after and mce_no_way_out() as the latter one is used only once, to fix: vmlinux.o: warning: objtool: mce_read_aux()+0x53: call to mca_msr_reg() leaves .noinstr.text section vmlinux.o: warning: objtool: do_machine_check()+0xc9: call to mce_no_way_out() leaves .noinstr.text section Signed-off-by: Borislav Petkov --- arch/x86/kernel/cpu/mce/core.c | 25 ++----------------------- arch/x86/kernel/cpu/mce/internal.h | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 5818b837fd4d..0db5a232986a 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -173,27 +173,6 @@ void mce_unregister_decode_chain(struct notifier_block *nb) } EXPORT_SYMBOL_GPL(mce_unregister_decode_chain); -u32 mca_msr_reg(int bank, enum mca_msr reg) -{ - if (mce_flags.smca) { - switch (reg) { - case MCA_CTL: return MSR_AMD64_SMCA_MCx_CTL(bank); - case MCA_ADDR: return MSR_AMD64_SMCA_MCx_ADDR(bank); - case MCA_MISC: return MSR_AMD64_SMCA_MCx_MISC(bank); - case MCA_STATUS: return MSR_AMD64_SMCA_MCx_STATUS(bank); - } - } - - switch (reg) { - case MCA_CTL: return MSR_IA32_MCx_CTL(bank); - case MCA_ADDR: return MSR_IA32_MCx_ADDR(bank); - case MCA_MISC: return MSR_IA32_MCx_MISC(bank); - case MCA_STATUS: return MSR_IA32_MCx_STATUS(bank); - } - - return 0; -} - static void __print_mce(struct mce *m) { pr_emerg(HW_ERR "CPU %d: Machine Check%s: %Lx Bank %d: %016Lx\n", @@ -838,8 +817,8 @@ static void quirk_sandybridge_ifu(int bank, struct mce *m, struct pt_regs *regs) * Do a quick check if any of the events requires a panic. * This decides if we keep the events around or clear them. */ -static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp, - struct pt_regs *regs) +static __always_inline int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp, + struct pt_regs *regs) { char *tmp = *msg; int i; diff --git a/arch/x86/kernel/cpu/mce/internal.h b/arch/x86/kernel/cpu/mce/internal.h index 52c633950b38..a04b61e27827 100644 --- a/arch/x86/kernel/cpu/mce/internal.h +++ b/arch/x86/kernel/cpu/mce/internal.h @@ -182,8 +182,6 @@ enum mca_msr { MCA_MISC, }; -u32 mca_msr_reg(int bank, enum mca_msr reg); - /* Decide whether to add MCE record to MCE event pool or filter it out. */ extern bool filter_mce(struct mce *m); @@ -209,4 +207,25 @@ static inline void winchip_machine_check(struct pt_regs *regs) {} noinstr u64 mce_rdmsrl(u32 msr); +static __always_inline u32 mca_msr_reg(int bank, enum mca_msr reg) +{ + if (mce_flags.smca) { + switch (reg) { + case MCA_CTL: return MSR_AMD64_SMCA_MCx_CTL(bank); + case MCA_ADDR: return MSR_AMD64_SMCA_MCx_ADDR(bank); + case MCA_MISC: return MSR_AMD64_SMCA_MCx_MISC(bank); + case MCA_STATUS: return MSR_AMD64_SMCA_MCx_STATUS(bank); + } + } + + switch (reg) { + case MCA_CTL: return MSR_IA32_MCx_CTL(bank); + case MCA_ADDR: return MSR_IA32_MCx_ADDR(bank); + case MCA_MISC: return MSR_IA32_MCx_MISC(bank); + case MCA_STATUS: return MSR_IA32_MCx_STATUS(bank); + } + + return 0; +} + #endif /* __X86_MCE_INTERNAL_H__ */ -- 2.29.2 -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette