Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp1725841ybi; Thu, 20 Jun 2019 02:42:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqyeAQAkOUsVOqsYC8R2chtWtZXGbMpF86h+uHi4PGPxtOnnapWSxdAVyl1JeDj62pwxZYyX X-Received: by 2002:a63:5207:: with SMTP id g7mr6942446pgb.284.1561023764316; Thu, 20 Jun 2019 02:42:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561023764; cv=none; d=google.com; s=arc-20160816; b=lafPp/QAytz9p4kMZa+P16WP7sDlNf2IdPi7D9xlz5JRnOZpMxLEQMmqmyxwJW/GLc ZKmZunNUfzNsjif4XiRfwMHZ5lLRSMugd9un7UmpTIfGxlVvJmzHYbVR1XoxVKO64/UR Y3dtuJfOyaPdk/VcPbq2GtqyP4GMXmbld0JGRX+Ouv91i4bEtWjOQtd2FEEvJrA2lD8K 7jpojtJDqbDnz6Sp+w2n5iYiFHz3slzV+3ROe3FKrcf9biesadptvOjnma9P/Fh923QE qn6LwACUY5Jnvqx37mwWGAkME6kP7NJw4hi+vtxJyusse/j6tc04L+HMB0LswYcdLptr VAcQ== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:autocrypt:openpgp:from:references:cc:to :subject; bh=PnrcXo/iNw0dFe4vmeQOcDwXrqOqnqDlcpSYwMdleuo=; b=J9+vKPN1980Nc2PzKAS0p0gTNuBbL39GnjfyI/7QtInoL3cbKxXBBpHt8m82Ibla4g u/xXO+r4KRLKnCl0+joJaLyYPjFst1arutX0dg6WMCCE6lvSETvoY2rCRmdc3cr5B4fH 56cwCENFKGaosdOVm44GY8QHjE4+H8yhp14jtlMRA6ySnvl3pcfRExb+pbimmsT9LsNX bXHf3XrZu0bDeLcN/dTxMOiCB0FqnpYsGfeGHykbq83Xsv8fd1GOo+PW3JsCm3gSRbNT s/mZKHMdpEiWDr/XoB12LQeIS2+cfTjwQ1NX0V+G9yEZbymZMsWMsdpHEXDZdPCKm4/G 5poA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g11si4926000pgs.201.2019.06.20.02.42.28; Thu, 20 Jun 2019 02:42:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730196AbfFTJko (ORCPT + 99 others); Thu, 20 Jun 2019 05:40:44 -0400 Received: from foss.arm.com ([217.140.110.172]:56426 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725925AbfFTJko (ORCPT ); Thu, 20 Jun 2019 05:40:44 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 73A51360; Thu, 20 Jun 2019 02:40:43 -0700 (PDT) Received: from [10.1.197.61] (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 331A83F246; Thu, 20 Jun 2019 02:40:42 -0700 (PDT) Subject: Re: [PATCH] genirq: Remove warning on preemptible in prepare_percpu_nmi() To: Lecopzer Chen , linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Julien Thierry , YJ Chiang References: <20190620091233.22731-1-lecopzer.chen@mediatek.com> From: Marc Zyngier Openpgp: preference=signencrypt Autocrypt: addr=marc.zyngier@arm.com; prefer-encrypt=mutual; keydata= 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 Z46HaNmN2hZS/oJ69c1DI5Rcww== Organization: ARM Ltd Message-ID: <7aebef0d-5795-0464-5dc8-6a2eb05fcc4e@arm.com> Date: Thu, 20 Jun 2019 10:40:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <20190620091233.22731-1-lecopzer.chen@mediatek.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Lecopzer, On 20/06/2019 10:12, Lecopzer Chen wrote: > prepare_percpu_nmi() acquires lock first by irq_get_desc_lock(), > no matter whether preempt enabled or not, acquiring lock forces preempt off. > > This simplifies the usage of prepare_percpu_nmi() and we don't need to > acquire extra lock or explicitly call preempt_[disable,enable](). I strongly disagree. If you're calling these functions *from* a preemptible context, you've already lost, and that's what these WARN_ON() calls are warning you about. These functions can only be called from a context that is naturally preemption free, such as a hotplug notifier. Otherwise, you have no idea which CPU you're configuring the NMI on, and I cannot see that as a good thing. Thanks, M. > > Signed-off-by: Lecopzer Chen > Cc: Thomas Gleixner > Cc: Peter Zijlstra > Cc: Ingo Molnar > Cc: Marc Zyngier > Cc: Julien Thierry > Cc: YJ Chiang > Cc: Lecopzer Chen > --- > kernel/irq/manage.c | 10 ---------- > 1 file changed, 10 deletions(-) > > diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c > index 78f3ddeb7fe4..aa03640cd7fb 100644 > --- a/kernel/irq/manage.c > +++ b/kernel/irq/manage.c > @@ -2509,9 +2509,6 @@ int request_percpu_nmi(unsigned int irq, irq_handler_t handler, > * This call prepares an interrupt line to deliver NMI on the current CPU, > * before that interrupt line gets enabled with enable_percpu_nmi(). > * > - * As a CPU local operation, this should be called from non-preemptible > - * context. > - * > * If the interrupt line cannot be used to deliver NMIs, function > * will fail returning a negative value. > */ > @@ -2521,8 +2518,6 @@ int prepare_percpu_nmi(unsigned int irq) > struct irq_desc *desc; > int ret = 0; > > - WARN_ON(preemptible()); > - > desc = irq_get_desc_lock(irq, &flags, > IRQ_GET_DESC_CHECK_PERCPU); > if (!desc) > @@ -2554,17 +2549,12 @@ int prepare_percpu_nmi(unsigned int irq) > * This call undoes the setup done by prepare_percpu_nmi(). > * > * IRQ line should not be enabled for the current CPU. > - * > - * As a CPU local operation, this should be called from non-preemptible > - * context. > */ > void teardown_percpu_nmi(unsigned int irq) > { > unsigned long flags; > struct irq_desc *desc; > > - WARN_ON(preemptible()); > - > desc = irq_get_desc_lock(irq, &flags, > IRQ_GET_DESC_CHECK_PERCPU); > if (!desc) > -- Jazz is not dead. It just smells funny...