Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp129827ybm; Tue, 26 May 2020 12:31:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzpTMSNj5j7IDJx6OicDoDXxD/HT3lVC5vD5Vy3dB0eJLnUrAYfRr3dwdYYA6AqXY8cHfMJ X-Received: by 2002:a17:906:ae52:: with SMTP id lf18mr2584264ejb.324.1590521461905; Tue, 26 May 2020 12:31:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590521461; cv=none; d=google.com; s=arc-20160816; b=am50V5hYpLqFf3rHVbEstxb2HQ18ASscEV68ff6TvpJ6XM33bDEBCYrVxFMVWqVoqp oyeYkft64JI5j67CqGtu9uLIAx/GM8zy1/8t20go9lm1mei4Su3sZnUyTqBqDlell3mP pxPrYeG+gmckyg59UfETo1QWZ4WbeUpsKfarLBoWgWR9OMgF9cWS7Ast4ZYIN/SWMIpM yGK7A/UVx/FwT/OTJcQrLvnXmM9T+0gbeMd5SYyYkl948iPmrLwPIJFHmWFOJh28U53Y sb5BLTZUGTNDW7YJ1cYB3Ic0A7To1arWGYoJ7wEjHDfANyFqtARj10FiA1MdMCcI5lpg NruQ== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Od83IP4UoQqB893dzaAJlOaPiUs3piFQkLIWaAQtLJw=; b=rVA/HGUgJ4+a0ew2vS4KIi4bPGNhfJi+ar2Igz2mUcGzlJXvlA+cNvagL6aIJYuOcJ B3nlssS01Y3UG2SxHPFw2wrYkVZUIqMZow329EVbBxHLA9vqIwFeColgPWWR3Fd9gnwe ffBzKKGFEIzTznLdUdt6zywRp499p0fZe3EkBdqdlnEGf8zoVwOQGN36fj6rI6jUFB2z o1sVCDpsIj9u219JiagzXXHmB4BZJKHV6Ismd5kYfqsR1efGtUV6onIpzLpfgfpSHnEt KBrA1qLS6ZJCfNeWHCk07MXcxf6NRXEhwRQ9A9+MWkMaeIZQXFlnkIgk9/XGOiw2MXv+ MesA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="2Sr/SuJq"; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bi3si515292edb.332.2020.05.26.12.30.37; Tue, 26 May 2020 12:31:01 -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=pass header.i=@kernel.org header.s=default header.b="2Sr/SuJq"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391230AbgEZTDf (ORCPT + 99 others); Tue, 26 May 2020 15:03:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:58846 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389596AbgEZTDd (ORCPT ); Tue, 26 May 2020 15:03:33 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 34D472086A; Tue, 26 May 2020 19:03:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1590519812; bh=eRiha6VrvmJXBItURwfvP/4InVhWTc5gqjPh/aj1GdE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2Sr/SuJqusrLYlF4Qm4ja46MtPzQudZmIVop+sxXXfEXOGmXQbOJwbVGmiyI1BC5x 0oIgqBq7jB/z2CxHisq3t5E4Yd3MzgQ9Ljp7KY4B0xzDnM+t0Y574ebCX1EYKDkGzA KwNSfbrZpedjiXlTeVk8t1ny2oUCjdxiUPEnSTEI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Leon Romanovsky , Thomas Gleixner , Sasha Levin Subject: [PATCH 4.19 27/81] x86/apic: Move TSC deadline timer debug printk Date: Tue, 26 May 2020 20:53:02 +0200 Message-Id: <20200526183930.437543884@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526183923.108515292@linuxfoundation.org> References: <20200526183923.108515292@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thomas Gleixner [ Upstream commit c84cb3735fd53c91101ccdb191f2e3331a9262cb ] Leon reported that the printk_once() in __setup_APIC_LVTT() triggers a lockdep splat due to a lock order violation between hrtimer_base::lock and console_sem, when the 'once' condition is reset via /sys/kernel/debug/clear_warn_once after boot. The initial printk cannot trigger this because that happens during boot when the local APIC timer is set up on the boot CPU. Prevent it by moving the printk to a place which is guaranteed to be only called once during boot. Mark the deadline timer check related functions and data __init while at it. Reported-by: Leon Romanovsky Signed-off-by: Thomas Gleixner Link: https://lkml.kernel.org/r/87y2qhoshi.fsf@nanos.tec.linutronix.de Signed-off-by: Sasha Levin --- arch/x86/kernel/apic/apic.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 1ca76ca944ba..53dc8492f02f 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -345,8 +345,6 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen) * According to Intel, MFENCE can do the serialization here. */ asm volatile("mfence" : : : "memory"); - - printk_once(KERN_DEBUG "TSC deadline timer enabled\n"); return; } @@ -545,7 +543,7 @@ static DEFINE_PER_CPU(struct clock_event_device, lapic_events); #define DEADLINE_MODEL_MATCH_REV(model, rev) \ { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)rev } -static u32 hsx_deadline_rev(void) +static __init u32 hsx_deadline_rev(void) { switch (boot_cpu_data.x86_stepping) { case 0x02: return 0x3a; /* EP */ @@ -555,7 +553,7 @@ static u32 hsx_deadline_rev(void) return ~0U; } -static u32 bdx_deadline_rev(void) +static __init u32 bdx_deadline_rev(void) { switch (boot_cpu_data.x86_stepping) { case 0x02: return 0x00000011; @@ -567,7 +565,7 @@ static u32 bdx_deadline_rev(void) return ~0U; } -static u32 skx_deadline_rev(void) +static __init u32 skx_deadline_rev(void) { switch (boot_cpu_data.x86_stepping) { case 0x03: return 0x01000136; @@ -580,7 +578,7 @@ static u32 skx_deadline_rev(void) return ~0U; } -static const struct x86_cpu_id deadline_match[] = { +static const struct x86_cpu_id deadline_match[] __initconst = { DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_HASWELL_X, hsx_deadline_rev), DEADLINE_MODEL_MATCH_REV ( INTEL_FAM6_BROADWELL_X, 0x0b000020), DEADLINE_MODEL_MATCH_FUNC( INTEL_FAM6_BROADWELL_XEON_D, bdx_deadline_rev), @@ -602,18 +600,19 @@ static const struct x86_cpu_id deadline_match[] = { {}, }; -static void apic_check_deadline_errata(void) +static __init bool apic_validate_deadline_timer(void) { const struct x86_cpu_id *m; u32 rev; - if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER) || - boot_cpu_has(X86_FEATURE_HYPERVISOR)) - return; + if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER)) + return false; + if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) + return true; m = x86_match_cpu(deadline_match); if (!m) - return; + return true; /* * Function pointers will have the MSB set due to address layout, @@ -625,11 +624,12 @@ static void apic_check_deadline_errata(void) rev = (u32)m->driver_data; if (boot_cpu_data.microcode >= rev) - return; + return true; setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); pr_err(FW_BUG "TSC_DEADLINE disabled due to Errata; " "please update microcode to version: 0x%x (or later)\n", rev); + return false; } /* @@ -2023,7 +2023,8 @@ void __init init_apic_mappings(void) { unsigned int new_apicid; - apic_check_deadline_errata(); + if (apic_validate_deadline_timer()) + pr_debug("TSC deadline timer available\n"); if (x2apic_mode) { boot_cpu_physical_apicid = read_apic_id(); -- 2.25.1