Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp13354ybz; Wed, 15 Apr 2020 03:29:51 -0700 (PDT) X-Google-Smtp-Source: APiQypKJ985sV0DW/XqmGAnceLNv5j5XoAwZw8dGH14QPhdiYu0Sx98hF9kUWGKTnHX1228DM1jv X-Received: by 2002:a05:6402:1587:: with SMTP id c7mr5314264edv.61.1586946591185; Wed, 15 Apr 2020 03:29:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586946591; cv=none; d=google.com; s=arc-20160816; b=d/h0u0lFBgA1T/eECw78nYZgran7nxj/vRwpykbjHKL9hxD8O1h6lGuK1HJqmPDJBl sYqXz6zWa6P8kcrjmsHHnbVG6G3JIQC2ExBAlyjGLSzUUo595JVK8OMJqkTnCU7aMnq9 Do7dtkPrT4qZWYabhdJa4MFXIcQD8CZKaeqrX2pMajEI6D8f6RhbzETarlR66077w7yV h29py7QhI+e8BS/h0et42Kzgj1lgFbUOGPllHnG7mwvcy7NyoEVWikhDOl0tZ1mFyHyF kxemgoZrITMeXE83+sDnUU/QmDXDCICfWiAcAu3jq7+Sqtcun7nrD8qEnfP+bDmz4iis N9dA== 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=5gDaraOXlkA/xtwCJ6iLXY9KaVrxo0YP5gI8pwlen5k=; b=qDSEcw5dvss+u3ZJR0UoBpGnSBRGI+TpRrCBzS2gFugIPj1x5qVc2xasyYvlHk/XyX NI8uzQ2IGnQye2DwO8I/1JG/C3P4TJoJZVOtXXQzf5TWb9fqZVbi2Q8b7pHYVNG2qFg9 h4Lxu0QPs6S5Gig9kCXwcrpNcwEceYNDr9s1v2hVfl8iClnFntkCoKz6yOq3S9OMla7L V3AKxROcy5QLuhbW+nDwsgOxbe4cYMMCwlsp2F0TYaPBM1jBJ7MgGetNUm1wJzypEJ54 9yWJpye2PmaX5L3+lHqfAPb3aVmQRKLUrCKUPByB1jvVVgQJmsjcnNT2gz/67tw67ORj tRTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=G8BjWQ+c; spf=pass (google.com: best guess record for 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c26si11181939eds.33.2020.04.15.03.29.28; Wed, 15 Apr 2020 03:29:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for 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=@gmail.com header.s=20161025 header.b=G8BjWQ+c; spf=pass (google.com: best guess record for 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405948AbgDNGZD (ORCPT + 99 others); Tue, 14 Apr 2020 02:25:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405926AbgDNGY6 (ORCPT ); Tue, 14 Apr 2020 02:24:58 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C912C0A3BDC for ; Mon, 13 Apr 2020 23:24:58 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id a81so12592643wmf.5 for ; Mon, 13 Apr 2020 23:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=5gDaraOXlkA/xtwCJ6iLXY9KaVrxo0YP5gI8pwlen5k=; b=G8BjWQ+cJ8vn1Bp/mkEQMl7jpOpfpB9g/sOzJ2nrFU7ekd68I1Yqf5QWPEkB0vEsZ1 BB/yGrhROD/VE0a5KhJI/wbWlUhvInuNpTaaU2yocuHJKLpWsp4V30TiBzmICuJBgjKP t92r5Q+67GBUzx1Y7nb8SnDEONddOkEmHYPpaM58yqTfMj5ExgW8TsEs3mO/YXZtkCmj OUC+oH3qnMr+eyTaq+f/KbYzxj0cIs2F4cbutKoS5kEB2go657hm5bBbkBEqcD2WMUVG LYBXe2usp3jwerxKq4Wk41XZEKvssRGIG+pGPiaQc3+vtUVPku9+510WW3FoQy44WRit iFQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=5gDaraOXlkA/xtwCJ6iLXY9KaVrxo0YP5gI8pwlen5k=; b=h0cksP7JygBu9nR10G/aX2aUCdMcDieZx4IZOrSFHRHGeMFV0lEe0Ap15ncp6GcB4n nur5u/9Q5XrpniYy8icEK/aod0QvcQjZMnhBJkhB4VFvxuk0l0qyyl5CCTFMCbCyRD73 nV0fz+hTfTqCOv1pgY8lztCYZmOnTtHZ8Xa8oHL2afitpikJD2P+MBU7mVnJ0fphaafy gCJQw93fqHY4ju+BpFM/aLxEz9+XRKPpiLySGoH5VYjXalDF2mcX1zEBckEB16cNZ5eQ BUJYsAbeJlG6SB3LI8XKlv/57TJ3oViSBTwu1pOJOPNRIhX5D7nKEyAhNIMjuBpbmhJv 21iQ== X-Gm-Message-State: AGi0PuaEwk4CUq3yaCJSCHGzwquUJBO8pGaEQZDNb6Rb/IakKnUGGHj/ IMYy6TEwNK1q2B0VIvhLiAM= X-Received: by 2002:a1c:2383:: with SMTP id j125mr21586371wmj.6.1586845496707; Mon, 13 Apr 2020 23:24:56 -0700 (PDT) Received: from gmail.com (54033286.catv.pool.telekom.hu. [84.3.50.134]) by smtp.gmail.com with ESMTPSA id y7sm18504602wmb.43.2020.04.13.23.24.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2020 23:24:55 -0700 (PDT) Date: Tue, 14 Apr 2020 08:24:54 +0200 From: Ingo Molnar To: Leon Romanovsky Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , x86 , Suresh Siddha , linux-kernel@vger.kernel.org Subject: Re: [PATCH] x86/apic: Fix circular locking dependency between console and hrtimer locks Message-ID: <20200414062454.GA84326@gmail.com> References: <20200407170925.1775019-1-leon@kernel.org> <20200414054836.GA956407@unreal> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200414054836.GA956407@unreal> 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 * Leon Romanovsky wrote: > Hi, > > Any feedback? > https://lore.kernel.org/lkml/20200407170925.1775019-1-leon@kernel.org/ The fix definitely looks legit, lockdep is right that we shouldn't take the console_sem.lock even under trylock. It's only a printk_once(), yet I'm wondering why in the last ~8 years this never triggered. Nobody ever ran lockdep and debug console level enabled on such hardware, or did something else change? One possibility would be that apic_check_deadline_errata() marked almost all Intel systems as broken and the TSC-deadline hardware never actually got activated. In that case you have triggered rarely tested code and might see other weirdnesses. Just saying. :-) Or a bootup with "debug" specified is much more rare in production systems, hence the 8 years old bug. > > It is far away from my main expertise and I'm not sure that the solution > > is correct, but it definitely fixed our regression. > > --- > > arch/x86/kernel/apic/apic.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > > index d254cebdd3c3..6706b2cd9aec 100644 > > --- a/arch/x86/kernel/apic/apic.c > > +++ b/arch/x86/kernel/apic/apic.c > > @@ -353,7 +353,7 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen) > > */ > > asm volatile("mfence" : : : "memory"); > > > > - printk_once(KERN_DEBUG "TSC deadline timer enabled\n"); > > + printk_deferred_once(KERN_DEBUG "TSC deadline timer enabled\n"); I think we should move this essentially initialization-time message much earlier during bootup, when we are not holding any hrtimer locks. One good place would be apic_check_deadline_errata(). This place: if (boot_cpu_data.microcode >= rev) return; 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); Could be something like: if (boot_cpu_data.microcode >= rev) { pr_debug("x86/apic: TSC deadline timer enabled.\n"); return; } setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); pr_err(FW_BUG "TSC_DEADLINE disabled due to CPU errata, please update microcode to version: 0x%x (or later)\n", rev); (Note the small fixes I did to the errata message - we should do that and also move all user-facing messages into a single line while at it.) Thanks, Ingo