From patchwork Fri May 22 14:55:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Thompson X-Patchwork-Id: 187154 Delivered-To: patches@linaro.org Received: by 2002:a92:5b0a:0:0:0:0:0 with SMTP id p10csp2579581ilb; Fri, 22 May 2020 07:55:15 -0700 (PDT) X-Received: by 2002:a1c:46c2:: with SMTP id t185mr12832021wma.99.1590159314884; Fri, 22 May 2020 07:55:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590159314; cv=none; d=google.com; s=arc-20160816; b=C9GpjhIDkCPyqwJvPdL1wlgNpr1ckJfqHPVxOzO6UiacuBRwZX0JUl21+AUl7mSSqY 5xnA0ScgS9o7xZ8koC+jW4FpTJ9XY8f2qCdaLY0MWTukqxyXxZPLOlDlE2AXHzBqjSBL Rna2d6Y5m3Kc7UcKKuWzl8V3W+c4jeYu34FgztMdJJ93qCy+NGGpb1p5QhDuhesBcj5i 7u4mzJDZp5VG83EBPwGuNiOz18ypaRqNBEtE2lj5VxMZsGiShIPOiya5Ga1D/Im1U5rr D7tDtuBeSWpWqRf+f7gxk/5oTm12FBbF5P0XHxt8K4fHZgLqAK9b45Rem8vCKHsrR+Ov GrJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=lgzE6vmodHXJVgkKRydSUcePpApP1sHs6gyeaxLAapY=; b=vAGqgVZ+hiIKDQQemSL2WPYwYCof3lDvCeMrMiCAq1gqJj9gLkXFg+cYtFlXOOCzq8 vlpqjfFQbLJeS3/ojhk+YVT3DkwjnYgWvcMfklztKp2ItW96SRtdBzPThf6+svrxNUca giFBwRPhtXSpRhjWqztxhqCtra1yLftQZqHgqMT8SbZCSbR4RLGtO2zgjhcXjZpMq/h1 m2Rs5Ke1AOvkDvl41lnxq1a/LXcgXVr485C+qK9oHQlrmPTqHl+AYeWCCTkC9wZNIOKB tSwspKjZ13OfECw+uTay5edfaIpzTeg6BWf631UT+sbMwpcUsl/IrMgn0paZkAvKyBRY GSzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nlECE+b5; spf=pass (google.com: domain of daniel.thompson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=daniel.thompson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id s13sor5658496wme.27.2020.05.22.07.55.14 for (Google Transport Security); Fri, 22 May 2020 07:55:14 -0700 (PDT) Received-SPF: pass (google.com: domain of daniel.thompson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=nlECE+b5; spf=pass (google.com: domain of daniel.thompson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=daniel.thompson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lgzE6vmodHXJVgkKRydSUcePpApP1sHs6gyeaxLAapY=; b=nlECE+b5yqlKJA6jFTmww2E3QJ5WbURdCUstW1I6PIZDCOg7WHcBF8kQGWXownwX8q cx47KBJ7D3Kpgz7C/7gSay4yxudmJQeS0U6UpnN8yikGE80+hrwjyvSeR1qtaT3ZgFKE ieRGgX9H7LAdv95xfmKHwW8jV2ZRnxqpjjBf4NZx4nvPLuUu/BJTHWw7eqV6Koa9/qkr JB0fkVDznqDDtD+xlGCIU0gIk7VJ0Xuww0a46q46q0i/o3SnK7lYEd4BfRs87OX6KBp/ Ym+angsnPVjD1w6IrheE1cC8TpDgg2vBCMdQt6/wtp8Cdjk+KOybz62XMS/vl1SaHje7 ZRuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lgzE6vmodHXJVgkKRydSUcePpApP1sHs6gyeaxLAapY=; b=R8ku/ZrBstcMC4gv61zgIHROyJBCfTNq50F/iIHuG+uhjm1yLhC9Yrjo9OelJpmar9 7OdFUiFRw43JPZ7YXBIxRZmewVGihaNaW3H4mr0inlU8E9nxlAKqDPcM1LhOl1HaVZWc IkBHmVCyy/B2IkqAw2sP2N/lIlB7MDgbJd08TKhkRItOhZkIkXvQwONNnoY2JtwclF2I nRlDZBS7/8zSI2gq1Wn7FQDwcuX2y5M7WIqXwUmIQVq+NM3RuzwkANLzs4i+Yakr48D4 S3X717JEQoFPBJtyaD33t5F1CjPhj+59ARqExVPTjsJt8rLlBc5uLOCvucl8RQmHCdjW JrGA== X-Gm-Message-State: AOAM531EWqaJIFXbrDEHt+2j2BYcEom1FeRaZe5pb9EDpZ3GmfoGQa1+ lTZRaFTL3S8kuUbhPOSb6kL2v6Pt X-Google-Smtp-Source: ABdhPJx3E/Vjh2T3jdWf3YQgn4TzMfj6PDDxH6vq8U6IEpR89l/Y7afo7n+52RmZLhGuPaW2lu7RlA== X-Received: by 2002:a1c:6583:: with SMTP id z125mr13863329wmb.102.1590159314476; Fri, 22 May 2020 07:55:14 -0700 (PDT) Return-Path: Received: from wychelm.lan (cpc141214-aztw34-2-0-cust773.18-1.cable.virginm.net. [86.9.19.6]) by smtp.gmail.com with ESMTPSA id i21sm9746911wml.5.2020.05.22.07.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2020 07:55:13 -0700 (PDT) From: Daniel Thompson To: sumit.garg@linaro.org, jason.wessel@windriver.com, dianders@chromium.org Cc: Daniel Thompson , kgdb-bugreport@lists.sourceforge.net, linux-kernel@vger.kernel.org, patches@linaro.org, pmladek@suse.com, sergey.senozhatsky@gmail.com, Peter Zijlstra , Ingo Molnar , Will Deacon Subject: [RFC PATCH 0/2] Introduce KGDB_DEBUG_SPINLOCKS Date: Fri, 22 May 2020 15:55:08 +0100 Message-Id: <20200522145510.2109799-1-daniel.thompson@linaro.org> X-Mailer: git-send-email 2.25.4 MIME-Version: 1.0 The execution context for kgdb/kdb is pretty much unique. We are running a debug trap handler with all CPUs parked in a holding loop and with interrupts disabled. At least one CPU is in an unknowable execution state (could be NMI, IRQ, irqs disabled, etc) and the others are either servicing an IRQ or NMI depending on architecture. Breakpoints (including some implicit breakpoints when serious errors are detected) can happen on more or less any context, including when we own important spin locks. As such spin lock waits should never happen whilst we are executing the kgdb trap handler used except, occasionally, via an explicit command from a (forewarned?) local operator. Currently kdb doesn't meet this criteria (although I think kgdb does) so I started thinking about what tooling we could employ to reinforce code review and bring problems to the surface. The result is a patch that extends DEBUG_SPINLOCKS and checks whether the execution context is safe. The "except via an explicit command" aspect (mentioned above) convinced me to make the checks conditional on KGDB_DEBUG_SPINLOCKS. Daniel Thompson (2): debug: Convert dbg_slave_lock to an atomic locking/spinlock/debug: Add checks for kgdb trap safety include/linux/kgdb.h | 16 ++++++++++++++++ kernel/debug/debug_core.c | 8 ++++---- kernel/locking/spinlock_debug.c | 4 ++++ lib/Kconfig.kgdb | 11 +++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) base-commit: 6a8b55ed4056ea5559ebe4f6a4b247f627870d4c -- 2.25.4