From patchwork Thu Sep 23 14:09:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 12513053 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A97CBC433F5 for ; Thu, 23 Sep 2021 14:11:59 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6899D60FDC for ; Thu, 23 Sep 2021 14:11:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6899D60FDC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=i8j4YoQTKkui4IKiGnf+ilZxJxReq//q52FgZsJxLxA=; b=TNMWPJTBEMhq9D nWPRB8GyGDauBNyM1r3bYaoL9oij7Td3kdlnxWXRp8uoEHflZtLMXjIitySv/igiQwCoj8G13tnow TQgS6YHuHNoybdZBpFVFb7g3cr56S0Z7TadqYeYMtRoqVHfvE4TagqXD9GCivDw9FYMVaBTrNUFD3 lJuIEJHQFLZx37cyfxtzUvRqIMdugc6voAYA0FCpnY0K31IBe7AWjqKXxHNAsgrGPHXyTyOTJ+V3y SQ8l4ds4jx2V/CLxJazXweKR7QqQBXBd00iOXJvevw26usQEJ9nkyBfAHgDHJxCCxsIaTjNbyyo0q O+zQTAzPpem1KBpxliDw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPQp-00BmDX-Fy; Thu, 23 Sep 2021 14:10:35 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPQe-00BmAy-Os for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 14:10:26 +0000 Received: by mail-pf1-x42f.google.com with SMTP id w19so5807509pfn.12 for ; Thu, 23 Sep 2021 07:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FS357D1JN+J32aJwqQjXs575AlGsgPXFPWkIjeHrV54=; b=CvZOIj/j0pFPrOj71e5xR8+3k4YaYDGBJetOHCEfBAhyqDELNxM4aIXSe7vsiPLtGS +5zBvFYxtIYZO2i74iyzj1Ec1LCK1RKmuNctpt/hKiGbN48T5b+HipGAaspMsM1NO9V9 SLQAfPoor4T5Y4thUv0U2W8w19Aqw6U7sw3o8PqdEm1yNti5qNVVcpL0DbH4JGew3Qzk 7HkmmshRsMFFZSqVxY1y33L7pyNAUceGVa2Xdb3BiQcDDQySeT+MfwqseyDB+tGK3sJB RsNFjsjxZakXZtgVEFSLiXEizUB/auKG2iVpUfm2Zt/uz3/4hs2hlsIlSRQBA2tCRuid k3zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FS357D1JN+J32aJwqQjXs575AlGsgPXFPWkIjeHrV54=; b=tw5NDMN6hDrLPYdK61BpVpaM1jyYOpw60nvxulBlAZj7yE7UvVaUiGOIHELIqGBKWb FGg4WUqgeET6oScN5SHBizblS2AW1LAXZQAE4EcxP37Wb4LOCQlMwl4D3OKmKLzcVsEv UuZVXzmx4tCJFiG4lSil2lZaxxvDXcTNAJE0yGneQpNHQXX4sTN+3h9jO/rK0Uxm93nZ rKh6EruD7JdrgiTwd/+UeF4c0ha2751hGihbyLkryfA41RqRP1nto0WzktYJqD+1pA3/ gHyalQANGU6v7PH4NO/7j8a/BPL8NYShJf2b0b9MiF0RY6usRNiq1G192MUh44r9j6oa Srvg== X-Gm-Message-State: AOAM533HcF8QXmzp6+6nRU3HsjmyNVPXN4HDYLUQSIgMtNKuqL6wpcQs kfr5IEH8+6Hphb8b5VgmrQ== X-Google-Smtp-Source: ABdhPJypXnfLVjr+Sgh6uT0qpa3411a/9d02yi2MrJaKQAsCyE8gR+ZgXjmu1ZhNk4ktfT41wtUykw== X-Received: by 2002:a65:47cd:: with SMTP id f13mr4378454pgs.439.1632406223667; Thu, 23 Sep 2021 07:10:23 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id j6sm5800766pfn.107.2021.09.23.07.10.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 07:10:22 -0700 (PDT) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Petr Mladek , Andrew Morton , Wang Qing , "Peter Zijlstra (Intel)" , Santosh Sivaraj , linux-arm-kernel@lists.infradead.org Subject: [PATCHv2 1/4] kernel/watchdog: trival cleanups Date: Thu, 23 Sep 2021 22:09:48 +0800 Message-Id: <20210923140951.35902-2-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210923140951.35902-1-kernelfans@gmail.com> References: <20210923140951.35902-1-kernelfans@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_071024_838273_28771499 X-CRM114-Status: GOOD ( 12.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org No reference to WATCHDOG_DEFAULT, remove it. And nobody cares about the return value of watchdog_nmi_enable(), changing its prototype to void. Signed-off-by: Pingfan Liu Cc: Petr Mladek Cc: Andrew Morton Cc: Wang Qing Cc: "Peter Zijlstra (Intel)" Cc: Santosh Sivaraj Cc: linux-arm-kernel@lists.infradead.org To: linux-kernel@vger.kernel.org --- include/linux/nmi.h | 2 +- kernel/watchdog.c | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/include/linux/nmi.h b/include/linux/nmi.h index 750c7f395ca9..b7bcd63c36b4 100644 --- a/include/linux/nmi.h +++ b/include/linux/nmi.h @@ -119,7 +119,7 @@ static inline int hardlockup_detector_perf_init(void) { return 0; } void watchdog_nmi_stop(void); void watchdog_nmi_start(void); int watchdog_nmi_probe(void); -int watchdog_nmi_enable(unsigned int cpu); +void watchdog_nmi_enable(unsigned int cpu); void watchdog_nmi_disable(unsigned int cpu); /** diff --git a/kernel/watchdog.c b/kernel/watchdog.c index ad912511a0c0..6e6dd5f0bc3e 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -30,10 +30,8 @@ static DEFINE_MUTEX(watchdog_mutex); #if defined(CONFIG_HARDLOCKUP_DETECTOR) || defined(CONFIG_HAVE_NMI_WATCHDOG) -# define WATCHDOG_DEFAULT (SOFT_WATCHDOG_ENABLED | NMI_WATCHDOG_ENABLED) # define NMI_WATCHDOG_DEFAULT 1 #else -# define WATCHDOG_DEFAULT (SOFT_WATCHDOG_ENABLED) # define NMI_WATCHDOG_DEFAULT 0 #endif @@ -95,10 +93,9 @@ __setup("nmi_watchdog=", hardlockup_panic_setup); * softlockup watchdog start and stop. The arch must select the * SOFTLOCKUP_DETECTOR Kconfig. */ -int __weak watchdog_nmi_enable(unsigned int cpu) +void __weak watchdog_nmi_enable(unsigned int cpu) { hardlockup_detector_perf_enable(); - return 0; } void __weak watchdog_nmi_disable(unsigned int cpu) From patchwork Thu Sep 23 14:09:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 12513055 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA8FFC433F5 for ; Thu, 23 Sep 2021 14:12:17 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9AFE160F48 for ; Thu, 23 Sep 2021 14:12:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 9AFE160F48 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pyJKqyesQ0csIyncm+p54w/reF9OBCtOY16dEZyUP38=; b=U6SsssNYlvZrMX H2jPcofvfd13eFkxpQBYRjIk7BKoNiOHx1GsoZ0C4p4GC6HxRxYBSzwt1TyN1OrUKfc+YQw+XFwyA Sy2v1RuNtsWHZuCsqMG0HO53LDy3DzupAnB8zmtrwIRDPLEa+rbpAjaMVeuQpVngnUnN/k90YG3Sd HF34SRGqAnkHZw7RNhPTNhewuTrMUdzVw9k4Z87idSbLTsyGlrGMr2ArxOHRQZfM0Kx8Y6rjGIntG AuAg605YJShgdeOG2FvNmubKZuhaTRRjkNMvbIzvM3JooS3lBDrFFDsFmyyi4F2RbApleql9kyPTz AFx4oov9pAq3hPa1f6MA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPR2-00BmIO-Ju; Thu, 23 Sep 2021 14:10:48 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPQj-00BmC8-0z for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 14:10:30 +0000 Received: by mail-pf1-x434.google.com with SMTP id s16so5917141pfk.0 for ; Thu, 23 Sep 2021 07:10:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lphzpTahG7LS2U3xUhfApocU7Cvv9rH+VCCr6o+2b8Y=; b=qcsYU/THvUOnuM29w7s91OlHkUBzEAzfkN0KtxkaHKDFjImyTzJqndOA1fNGd3Zzy2 V/zgScFiEUXVSE/K6Kgifv7rXgjkuXKiv12CKNXJX60Q49qn0ssI4aLluyHYEoYNzjzt k2+dUVPzDzViKMNh1gBxudyzkCFUDnPbPNU2yYlsmfzLeWuGKg9xFqpMCqvJjZBoAiKB e6H/epEhJvbb1LAX7GdLBYh99t82SmePrs1Gbxz+7KymQfFjVGjseXrcGrgNBlDJhTV4 fMpluhxmyV7tJ/GkUR4QBWKK7LlCRitECReP7XV4Dib+S/lUUxG3mep6MHltRmlvKgH5 DRkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lphzpTahG7LS2U3xUhfApocU7Cvv9rH+VCCr6o+2b8Y=; b=qB6YdgfDDziIy6m8naieBIRUN6jJH2Q1/Ns8zaS8QvOYDLSoToslbswQfsCFhxM61k ROE5jf8EP73NFhxmCQkfWYFMXdd/datJ8UpFnLcmCxDqQEn5YZ8UDFYc6ngRfbPHNhpB emXCmExRjvRnf5HilVkk/AU7G5buXuWpHmRNbNHXKpLW2TXBV/Gyb9ahYtt3lQN7PRgb 5Ox27idcqrlSeQaWC5DRSd1662DVAuDftDJtTt3cFr1yWxuADMKSBxsVa+mWmwxetByh gdyM9yDc//nGyJLRy1MxxFYQAZ034dAoD0sfmClwpB+2T6X+vCV2Ghfpd0V9vAcw7Kgr 00DQ== X-Gm-Message-State: AOAM5307bBWmQ3SdDIr171n3zKtcIjHT97UKw005WZqYBh72aRS0kic2 P8K4m+dL+t9lSnsQ1YS+ug== X-Google-Smtp-Source: ABdhPJxctOD36OToA6v4P61p+mmh1jpY/eX18Gj8H3Mjg2hsLtwZc/MUzJ7DwkGrLBFHW8DzNuvnSA== X-Received: by 2002:a62:7f87:0:b0:444:b077:51ef with SMTP id a129-20020a627f87000000b00444b07751efmr4653569pfd.61.1632406227945; Thu, 23 Sep 2021 07:10:27 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id j6sm5800766pfn.107.2021.09.23.07.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 07:10:27 -0700 (PDT) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Petr Mladek , Andrew Morton , Wang Qing , "Peter Zijlstra (Intel)" , Santosh Sivaraj , linux-arm-kernel@lists.infradead.org Subject: [PATCHv2 2/4] kernel/watchdog_hld: clarify the condition in hardlockup_detector_event_create() Date: Thu, 23 Sep 2021 22:09:49 +0800 Message-Id: <20210923140951.35902-3-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210923140951.35902-1-kernelfans@gmail.com> References: <20210923140951.35902-1-kernelfans@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_071029_098063_A9082099 X-CRM114-Status: GOOD ( 15.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org As for the context, there are two arguments to change debug_smp_processor_id() to is_percpu_thread(). -1. watchdog_ev is percpu, and migration will frustrate the attempt which try to bind a watchdog_ev to a cpu by protecting this func inside the pair of preempt_disable()/preempt_enable(). -2. hardlockup_detector_event_create() indirectly calls kmem_cache_alloc_node(), which is blockable. So here, spelling out the really planned context "is_percpu_thread()". Signed-off-by: Pingfan Liu Cc: Petr Mladek Cc: Andrew Morton Cc: Wang Qing Cc: "Peter Zijlstra (Intel)" Cc: Santosh Sivaraj Cc: linux-arm-kernel@lists.infradead.org To: linux-kernel@vger.kernel.org --- kernel/watchdog_hld.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c index 247bf0b1582c..df010df76576 100644 --- a/kernel/watchdog_hld.c +++ b/kernel/watchdog_hld.c @@ -165,10 +165,13 @@ static void watchdog_overflow_callback(struct perf_event *event, static int hardlockup_detector_event_create(void) { - unsigned int cpu = smp_processor_id(); + unsigned int cpu; struct perf_event_attr *wd_attr; struct perf_event *evt; + /* This function plans to execute in cpu bound kthread */ + WARN_ON(!is_percpu_thread()); + cpu = raw_smp_processor_id(); wd_attr = &wd_hw_attr; wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh); From patchwork Thu Sep 23 14:09:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 12513057 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50080C433EF for ; Thu, 23 Sep 2021 14:12:35 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1F30561019 for ; Thu, 23 Sep 2021 14:12:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 1F30561019 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sujlmqfs0YlIwWalTw9i5UcNp7ZftS3BQAGf0sX4r4Q=; b=Cx7TOXi7VWnjoR JamJVx4rJDH4CorRbNmTB0Ux8rw9kv6dn+Ag3sAyRv2v9LiKkezRnZh6X7E3fDv0B8EPfhrD5H2CY o5otjqfyUBD2uNLSXQ5puULeN1kqknt0ZycG2hsIU111dr69ffZZRFJjYYLWwW1Zh/T0ElacQ8uMu NU/Y3/fwwxOxOs/iiAAWORwsf75ZKoVv2kDMyfniN4ucTmj1Z/7CzQrxcFJ1TFqw9EH/XqHF3lkPh 7QcXtK0gTv3vaZjw2whNcqLcdUIHhvebVF9zk/LPWibfZMkBNNwOlWsFVao7lnWMTSKMKWqh7owaZ r5YVC6kL5QecY8upoUew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPRG-00BmNG-Cs; Thu, 23 Sep 2021 14:11:02 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPQq-00BmDs-8T for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 14:10:37 +0000 Received: by mail-pf1-x434.google.com with SMTP id w14so5866570pfu.2 for ; Thu, 23 Sep 2021 07:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4uC2eWg7aEhw9OQsJm+DyTckWnK1d1EQQKLFN4MrYQw=; b=nZcWLyFX6b4h1Cn/kDTSOUiZYJB63rCYafEeVclmX1skSVyMr5tul8uelIiYPoPQoE qAn6MslpW+m0PQ1NmIdZSCRnuLaIKwBzHQMRIGp89JF6vqOgVHWkvQRzWwx5mY3Z687F 1WAtFXZnSPgLjLUHuWOp8+xgBcfW9/XwQ6HMyoornzPYfjc25ncVI84+fJhrmVfa0CeM t2ZUZjFkkp+FJGLgb2rpJ0kGvHQ41li/JhuZSeeAOGrnTM5BxoSqVvT9Z9HasNoP0v4F iaZHqiSZmfjr649EPagTN1+sv7nEvyvzdG45Lb+7pampaxFx/wtw4atEMzDywhsNJLYO +zcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4uC2eWg7aEhw9OQsJm+DyTckWnK1d1EQQKLFN4MrYQw=; b=FvUj3oH75I/eJyTfxCkk8YabU8EhDtvOfBVUzSu+6VSKcQbb2fUIUYRN/7g5GxRP+v MGypj+jFhxW+APEhbdO5euNZQyVUVlktpVx5GW8zlRuFytRoafmrAf5R+8KtU/ZMUPxW Ld6349eQRYO2RnstPD+BJsH621jap5KINXEcTC/bU05DetH3V+EN5/RQmIKylAnHkwNG ktMPDBtPpzfDM2LhgNr4hZ18AfvdKhHU1HtGtxEMmZsujy1CDqtawGdqQ2WmiRuLNmVe ri59QO9gWKcK4XJgDgMB/p2jFa9qH36rI9wVCowTnFiBR0v6/24vyRCOFTRxbUnq2Tud 53wg== X-Gm-Message-State: AOAM532zNoIj+z9IfEoAjJiv40NSbNHC7eB8d/7Sj3kA3VFBimEb+STK Q8JTczo0d2c6ZWNTel1Uvw== X-Google-Smtp-Source: ABdhPJwmNSh05Gr/CtxmPWIkNtONd+/aOhaL6bSUzPs/gvjn+O8HsGhBu1NC2ey/m1AQaTZn2uSBCg== X-Received: by 2002:a62:1e43:0:b0:447:cb0b:4c6e with SMTP id e64-20020a621e43000000b00447cb0b4c6emr4535184pfe.1.1632406235819; Thu, 23 Sep 2021 07:10:35 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id j6sm5800766pfn.107.2021.09.23.07.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 07:10:34 -0700 (PDT) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Sumit Garg , Catalin Marinas , Will Deacon , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Marc Zyngier , Kees Cook , Masahiro Yamada , Sami Tolvanen , Petr Mladek , Andrew Morton , Wang Qing , "Peter Zijlstra (Intel)" , Santosh Sivaraj , linux-arm-kernel@lists.infradead.org Subject: [PATCHv2 3/4] kernel/watchdog: adapt the watchdog_hld interface for async model Date: Thu, 23 Sep 2021 22:09:50 +0800 Message-Id: <20210923140951.35902-4-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210923140951.35902-1-kernelfans@gmail.com> References: <20210923140951.35902-1-kernelfans@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_071036_397792_1CD9EE1E X-CRM114-Status: GOOD ( 19.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When lockup_detector_init()->watchdog_nmi_probe(), PMU may be not ready yet. E.g. on arm64, PMU is not ready until device_initcall(armv8_pmu_driver_init). And it is deeply integrated with the driver model and cpuhp. Hence it is hard to push this initialization before smp_init(). But it is easy to take an opposite approach by enabling watchdog_hld to get the capability of PMU async. The async model is achieved by expanding watchdog_nmi_probe() with -EBUSY, and a re-initializing work_struct which waits on a wait_queue_head. Signed-off-by: Pingfan Liu Cc: Sumit Garg Cc: Catalin Marinas Cc: Will Deacon Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo Cc: Mark Rutland Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Namhyung Kim Cc: Marc Zyngier Cc: Kees Cook Cc: Masahiro Yamada Cc: Sami Tolvanen Cc: Petr Mladek Cc: Andrew Morton Cc: Wang Qing Cc: "Peter Zijlstra (Intel)" Cc: Santosh Sivaraj Cc: linux-arm-kernel@lists.infradead.org To: linux-kernel@vger.kernel.org --- include/linux/nmi.h | 3 +++ kernel/watchdog.c | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/include/linux/nmi.h b/include/linux/nmi.h index b7bcd63c36b4..270d440fe4b7 100644 --- a/include/linux/nmi.h +++ b/include/linux/nmi.h @@ -118,6 +118,9 @@ static inline int hardlockup_detector_perf_init(void) { return 0; } void watchdog_nmi_stop(void); void watchdog_nmi_start(void); + +extern bool hld_detector_delay_initialized; +extern struct wait_queue_head hld_detector_wait; int watchdog_nmi_probe(void); void watchdog_nmi_enable(unsigned int cpu); void watchdog_nmi_disable(unsigned int cpu); diff --git a/kernel/watchdog.c b/kernel/watchdog.c index 6e6dd5f0bc3e..bd4ae1839b72 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -103,7 +103,10 @@ void __weak watchdog_nmi_disable(unsigned int cpu) hardlockup_detector_perf_disable(); } -/* Return 0, if a NMI watchdog is available. Error code otherwise */ +/* + * Return 0, if a NMI watchdog is available. -EBUSY if not ready. + * Other negative value if not support. + */ int __weak __init watchdog_nmi_probe(void) { return hardlockup_detector_perf_init(); @@ -739,15 +742,45 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write, } #endif /* CONFIG_SYSCTL */ +static void lockup_detector_delay_init(struct work_struct *work); +bool hld_detector_delay_initialized __initdata; + +struct wait_queue_head hld_detector_wait __initdata = + __WAIT_QUEUE_HEAD_INITIALIZER(hld_detector_wait); + +static struct work_struct detector_work __initdata = + __WORK_INITIALIZER(detector_work, lockup_detector_delay_init); + +static void __init lockup_detector_delay_init(struct work_struct *work) +{ + int ret; + + wait_event(hld_detector_wait, hld_detector_delay_initialized); + ret = watchdog_nmi_probe(); + if (!ret) { + nmi_watchdog_available = true; + lockup_detector_setup(); + } else { + WARN_ON(ret == -EBUSY); + pr_info("Perf NMI watchdog permanently disabled\n"); + } +} + void __init lockup_detector_init(void) { + int ret; + if (tick_nohz_full_enabled()) pr_info("Disabling watchdog on nohz_full cores by default\n"); cpumask_copy(&watchdog_cpumask, housekeeping_cpumask(HK_FLAG_TIMER)); - if (!watchdog_nmi_probe()) + ret = watchdog_nmi_probe(); + if (!ret) nmi_watchdog_available = true; + else if (ret == -EBUSY) + queue_work_on(smp_processor_id(), system_wq, &detector_work); + lockup_detector_setup(); } From patchwork Thu Sep 23 14:09:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 12513059 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D5C9C433F5 for ; Thu, 23 Sep 2021 14:12:49 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4EFDA61019 for ; Thu, 23 Sep 2021 14:12:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4EFDA61019 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=V/unEdHNUhKwayjmAL/10e0Yo7QXB1J9y+ldGTYBSdc=; b=x2nGyE3HqH4Fke 5w1H0pJFAkAFQv49J8MENDp2yvYZVPJpU005DnJqduoOnMKQjeRzjXDYrwKzsSPXpTDOZs4usmT3e lYEvH64XEuDxonrCHn8x4vjM0c3/euBSRenZF7KuIVmenKytqUk72oBKzA5uQF5AxUfitIzwjjQRL WhkVvXdZY/Lwbft59ODVaWpMiKx95SmYq2pBX/E6YZ6+FTaMW5A9O7TaFO8TmgAIO6VO9c/TT9coJ Maow/pz+y+tePd4OFrzwtMpxUyrqcDZbGZhGEoyayJwisW1q4lxkzr2upSFMiSxPiFiLcbejMojhh 60ssQkH+TdVBR87fsdQQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPRT-00BmTA-Ak; Thu, 23 Sep 2021 14:11:15 +0000 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTPQy-00BmGk-Hb for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 14:10:46 +0000 Received: by mail-pj1-x102b.google.com with SMTP id me1so4527220pjb.4 for ; Thu, 23 Sep 2021 07:10:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9ZysB6B1fylvRcmjz+YxzcufocnP0eHTmJAB2LpWg6Q=; b=Vi+vH7BW/f9VkQhaVR+mOMIWqOBrDWTonxYSwBG/fXNPufRSitagCVDzDz26pYzYtD b2IvZv6z0SFcV/PGMFaurJpxqlYyHFqyzqQNSQhMFw6j7XYSV8umsByWG0CJ7/zVtyOJ Tco/fohEUcE0FRCNeCKgMAyZoJUCyal0JCuMhc3wlXFaJpoTK2RCGlRVsSO7QWgJz/1i /pH1+nC3euSXAbTQjIRA2baOFApcIsGzZAoW2A7lT4eUW+vAoh4Pw7Gk+z/URz3RPYsB VRQhRPNe1TdCHH9KwHqLUAk6fZ0mmhAad9SLOx4YZ0hVbJIm3KRWq6wZjcI1onMkZxf6 I3hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9ZysB6B1fylvRcmjz+YxzcufocnP0eHTmJAB2LpWg6Q=; b=6nl0A4plamBYOlpr2Pir/Iqrh8pIk9KL0Th22JD03Qrt+VF7uXBuXxqgSph/sX7sj7 MXwhgjS2hHnEn13smw8G837K9dNHNxKyN8f8k4sZu4WvPri9rWfapfBKyvnmH8mEWyNd tsUU634hQSAieVaBnjK5Bn5Of43/3o0d85hfLGB4NddAAC7Jn+hNgZ0GT1zRWgdolAmT 7SNbKjKVeZYP31FJJPnrZxES/tVWw/aoJZhQXKT3ysG/dpieZeAImdfQYSA8z5FpXiHL iAyqYr1h4QpsAxv89UvAsT1tUDOCBlIWbrdx1VTPQUP26sLV4f41PkbNxJ4P8CwtYupU dhmA== X-Gm-Message-State: AOAM530WyZ0nefxnRTGsIk30IUpTrIPnRAvjZ5jj+JeyQjB+RdiXn03L hidYfOHFEdQGwny/wjgY7ryX3ov8FA== X-Google-Smtp-Source: ABdhPJzjrZs3XaHoleg1SXJxNrF68ViHeoZETQNt13Q41Kiwy9o56HgaZSsQ66w+fanThAzaApD9qA== X-Received: by 2002:a17:90a:f2cd:: with SMTP id gt13mr5597806pjb.153.1632406243141; Thu, 23 Sep 2021 07:10:43 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id j6sm5800766pfn.107.2021.09.23.07.10.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 07:10:42 -0700 (PDT) From: Pingfan Liu To: linux-arm-kernel@lists.infradead.org Cc: Sumit Garg , Pingfan Liu , Catalin Marinas , Will Deacon , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Marc Zyngier , Kees Cook , Masahiro Yamada , Sami Tolvanen , Petr Mladek , Andrew Morton , Wang Qing , "Peter Zijlstra (Intel)" , Santosh Sivaraj , linux-kernel@vger.kernel.org Subject: [PATCHv2 4/4] arm64: Enable perf events based hard lockup detector Date: Thu, 23 Sep 2021 22:09:51 +0800 Message-Id: <20210923140951.35902-5-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210923140951.35902-1-kernelfans@gmail.com> References: <20210923140951.35902-1-kernelfans@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_071044_618789_5599B1F1 X-CRM114-Status: GOOD ( 28.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Sumit Garg With the recent feature added to enable perf events to use pseudo NMIs as interrupts on platforms which support GICv3 or later, its now been possible to enable hard lockup detector (or NMI watchdog) on arm64 platforms. So enable corresponding support. One thing to note here is that normally lockup detector is initialized just after the early initcalls but PMU on arm64 comes up much later as device_initcall(). So we need to re-initialize lockup detection once PMU has been initialized. [1]: http://lore.kernel.org/linux-arm-kernel/1610712101-14929-1-git-send-email-sumit.garg@linaro.org Signed-off-by: Sumit Garg (Pingfan: adapt it to watchdog_hld async model based on [1]) Signed-off-by: Pingfan Liu Cc: Catalin Marinas Cc: Will Deacon Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo Cc: Mark Rutland Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Namhyung Kim Cc: Marc Zyngier Cc: Kees Cook Cc: Masahiro Yamada Cc: Sami Tolvanen Cc: Petr Mladek Cc: Andrew Morton Cc: Wang Qing Cc: "Peter Zijlstra (Intel)" Cc: Santosh Sivaraj Cc: linux-kernel@vger.kernel.org To: linux-arm-kernel@lists.infradead.org --- arch/arm64/Kconfig | 2 ++ arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/perf_event.c | 11 ++++++++-- arch/arm64/kernel/watchdog_hld.c | 36 ++++++++++++++++++++++++++++++++ drivers/perf/arm_pmu.c | 5 +++++ include/linux/perf/arm_pmu.h | 2 ++ 6 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 arch/arm64/kernel/watchdog_hld.c diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 5c7ae4c3954b..8287e9e1d28d 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -189,6 +189,8 @@ config ARM64 select HAVE_NMI select HAVE_PATA_PLATFORM select HAVE_PERF_EVENTS + select HAVE_PERF_EVENTS_NMI if ARM64_PSEUDO_NMI + select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP select HAVE_REGS_AND_STACK_ACCESS_API diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index 3f1490bfb938..789c2fe5bb90 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -46,6 +46,7 @@ obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o +obj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_hld.o obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o obj-$(CONFIG_CPU_PM) += sleep.o suspend.o obj-$(CONFIG_CPU_IDLE) += cpuidle.o diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c index b4044469527e..a34343d0f418 100644 --- a/arch/arm64/kernel/perf_event.c +++ b/arch/arm64/kernel/perf_event.c @@ -23,6 +23,7 @@ #include #include #include +#include /* ARMv8 Cortex-A53 specific event types. */ #define ARMV8_A53_PERFCTR_PREF_LINEFILL 0xC2 @@ -1284,10 +1285,16 @@ static struct platform_driver armv8_pmu_driver = { static int __init armv8_pmu_driver_init(void) { + int ret; + if (acpi_disabled) - return platform_driver_register(&armv8_pmu_driver); + ret = platform_driver_register(&armv8_pmu_driver); else - return arm_pmu_acpi_probe(armv8_pmuv3_init); + ret = arm_pmu_acpi_probe(armv8_pmuv3_init); + + hld_detector_delay_initialized = true; + wake_up(&hld_detector_wait); + return ret; } device_initcall(armv8_pmu_driver_init) diff --git a/arch/arm64/kernel/watchdog_hld.c b/arch/arm64/kernel/watchdog_hld.c new file mode 100644 index 000000000000..379743e0d001 --- /dev/null +++ b/arch/arm64/kernel/watchdog_hld.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include + +/* + * Safe maximum CPU frequency in case a particular platform doesn't implement + * cpufreq driver. Although, architecture doesn't put any restrictions on + * maximum frequency but 5 GHz seems to be safe maximum given the available + * Arm CPUs in the market which are clocked much less than 5 GHz. On the other + * hand, we can't make it much higher as it would lead to a large hard-lockup + * detection timeout on parts which are running slower (eg. 1GHz on + * Developerbox) and doesn't possess a cpufreq driver. + */ +#define SAFE_MAX_CPU_FREQ 5000000000UL // 5 GHz +u64 hw_nmi_get_sample_period(int watchdog_thresh) +{ + unsigned int cpu = smp_processor_id(); + unsigned long max_cpu_freq; + + max_cpu_freq = cpufreq_get_hw_max_freq(cpu) * 1000UL; + if (!max_cpu_freq) + max_cpu_freq = SAFE_MAX_CPU_FREQ; + + return (u64)max_cpu_freq * watchdog_thresh; +} + +int __init watchdog_nmi_probe(void) +{ + if (!hld_detector_delay_initialized) + return -EBUSY; + else if (!arm_pmu_irq_is_nmi()) + return -ENODEV; + + return hardlockup_detector_perf_init(); +} diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c index 3cbc3baf087f..2aecb0c34290 100644 --- a/drivers/perf/arm_pmu.c +++ b/drivers/perf/arm_pmu.c @@ -697,6 +697,11 @@ static int armpmu_get_cpu_irq(struct arm_pmu *pmu, int cpu) return per_cpu(hw_events->irq, cpu); } +bool arm_pmu_irq_is_nmi(void) +{ + return has_nmi; +} + /* * PMU hardware loses all context when a CPU goes offline. * When a CPU is hotplugged back in, since some hardware registers are diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h index 505480217cf1..bf7966776c55 100644 --- a/include/linux/perf/arm_pmu.h +++ b/include/linux/perf/arm_pmu.h @@ -163,6 +163,8 @@ int arm_pmu_acpi_probe(armpmu_init_fn init_fn); static inline int arm_pmu_acpi_probe(armpmu_init_fn init_fn) { return 0; } #endif +bool arm_pmu_irq_is_nmi(void); + /* Internal functions only for core arm_pmu code */ struct arm_pmu *armpmu_alloc(void); struct arm_pmu *armpmu_alloc_atomic(void);