Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp1740577pxb; Mon, 12 Apr 2021 05:47:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxIX7sNdxfo+WWc/5ooTP3A6jEdDZlNqra6mApu/rcDqjEVFRN3lgzlo1p0X23FJOkhVE8A X-Received: by 2002:a17:906:7fd3:: with SMTP id r19mr1670186ejs.286.1618231653402; Mon, 12 Apr 2021 05:47:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618231653; cv=none; d=google.com; s=arc-20160816; b=QBdiGXWRxtRjDEViLW9JIfNszag0Qm5jYyY5UOcXs9/5OvfMDssLcgUvSyFf3PshmA kVOsvJ4OSIxqqaI+ogWierj7Jd9Vc/XIUZyfZpD6whbrw/OkSUa/d142cY2WbZU4iNq0 pZvm3KDLysYz0A59SCwWcDuFJBKCPZgmBMERhInvsreCN6pekiQJX97xh1HT4+BOZA+7 h7v9KiZy2OH2NRwXrs//Dn5JlyM2nFb7eLMKic7NrUpbRtvp6PCMg50ah8QMjM5HRIWL DTiNKk3gVg/LmXJi670okZXbaafib8a3uiJvD4KfgPHM3tHML69kngoESID080wMiSFc vHbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:references:in-reply-to:subject:cc:to:dkim-signature :dkim-signature:from; bh=9RuZZ4YV+l/Us1m/Gl2I6gMNQ53ylhCIs4MIYcNu8BU=; b=aKXkl6GTO4N7ZeovEk1ymX9eSgEwwDWd9EeXVEptREV0QE4PITuUaG+5u0IE/ICe0f GkPl7n2LvTZ8egzZNqe3OsXD/8zDphV/is5gSzrISaH104UZUEaMYueCeD8EJf/zhroi cPNzvwuk27KLgejR86Bi9ATHpNJIeIL7+7cYifKx6I3AM7Eb0ncE/GwPKswifgt4Vtoc AAStG58ky1pJiYaE2u4TmrafypNCjfZcCuarsvl9XjJR89k1/t1+Wh3Sh3uKn5w12RUI AidZdY86xm50SVAYPH+iMaIRREYd4V5l+/f3sKV2OdrCO71KgiesJPzCK2sGvZXRE9oG /p1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=MruXWSjJ; dkim=neutral (no key) header.i=@linutronix.de; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dy26si7279985edb.174.2021.04.12.05.47.10; Mon, 12 Apr 2021 05:47:33 -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=@linutronix.de header.s=2020 header.b=MruXWSjJ; dkim=neutral (no key) header.i=@linutronix.de; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241240AbhDLMoJ (ORCPT + 99 others); Mon, 12 Apr 2021 08:44:09 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:38844 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241239AbhDLMoE (ORCPT ); Mon, 12 Apr 2021 08:44:04 -0400 From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1618231425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9RuZZ4YV+l/Us1m/Gl2I6gMNQ53ylhCIs4MIYcNu8BU=; b=MruXWSjJepNb9KkoQUa+lcI+0juAUt8HZ2X957HwSkNGAm/DN3lU1Y5cizzDlj2UFmARy8 tSZAFvJIUMlazms/oMivAw0j2SBVBBcMOOqF25CWVJ9qaBa7uMNqhOrBNkq1okxAZrePCt QBpF//hntSRN6FXDIqGjqjmdzBaKRMZrkTRoCAU+jkBkG06TZ79WxRxjQkdLRgKTtzqId/ rB5tybsxlr8fcp8IZKYLd681qVpsh0e95eOKSMvFldeusmf4GgeRjyUxMPuAmRK1ASfFDt ZsxSOXR+xKRQSQOCjtYtMQK3pMc/M91iXUnkCc3LmEBgAraBu2Ch4qLxM1rYSg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1618231425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9RuZZ4YV+l/Us1m/Gl2I6gMNQ53ylhCIs4MIYcNu8BU=; b=yZc/jQ5gj6CXcOugItpqnX2WdyhWZIkock/eHfAL8/F0oScfCQJMBcbvI18/HD7fhTVD2V PBpovqvVcH+A2yAQ== To: =?utf-8?Q?C=C3=A9dric?= Le Goater , Nicholas Piggin Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH] genirq: reduce irqdebug bouncing cachelines In-Reply-To: <2dae4501-6f01-1b32-4b69-1dfc94c93425@kaod.org> References: <20210402132037.574661-1-npiggin@gmail.com> <87im4u2vxx.ffs@nanos.tec.linutronix.de> <2dae4501-6f01-1b32-4b69-1dfc94c93425@kaod.org> Date: Mon, 12 Apr 2021 14:43:45 +0200 Message-ID: <87wnt71xmm.ffs@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org C=C3=A9dric, On Mon, Apr 12 2021 at 11:06, C=C3=A9dric Le Goater wrote: > On 4/10/21 1:58 PM, Thomas Gleixner wrote: >> --- a/kernel/irq/spurious.c >> +++ b/kernel/irq/spurious.c >> @@ -274,7 +274,7 @@ void note_interrupt(struct irq_desc *des >> unsigned int irq; >>=20=20 >> if (desc->istate & IRQS_POLL_INPROGRESS || >> - irq_settings_is_polled(desc)) >> + irq_settings_is_polled(desc) | irq_settings_no_debug(desc)) > > Shouldn't it be '||' instead ? It could. But that's intentionally '|'. Why? Because that lets the compiler merge the bit checks into one and therefore spares one conditional branch. >> return; >>=20=20 >> if (bad_action_ret(action_ret)) { >>=20 > > We could test irq_settings_no_debug() directly under handle_nested_irq()= =20 > and handle_irq_event_percpu() to avoid calling note_interrupt(), just=20 > like we do for noirqdebug. We can do that, but then we should not just make it: if (!irqnodebug && !irq_settings_no_debug(desc)) note_interrupt(...); Instead have only one condition: if (!irq_settings_no_debug(desc)) note_interrupt(...); See the uncompiled delta patch below. Thanks, tglx --- --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1690,6 +1690,9 @@ static int irq_settings_set_no_debug(desc); } =20 + if (noirqdebug) + irq_settings_set_no_debug(desc); + if (new->flags & IRQF_ONESHOT) desc->istate |=3D IRQS_ONESHOT; =20 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c @@ -274,7 +274,7 @@ void note_interrupt(struct irq_desc *des unsigned int irq; =20 if (desc->istate & IRQS_POLL_INPROGRESS || - irq_settings_is_polled(desc) | irq_settings_no_debug(desc)) + irq_settings_is_polled(desc)) return; =20 if (bad_action_ret(action_ret)) { --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -481,7 +481,7 @@ void handle_nested_irq(unsigned int irq) for_each_action_of_desc(desc, action) action_ret |=3D action->thread_fn(action->irq, action->dev_id); =20 - if (!noirqdebug) + if (!irq_settings_no_debug(desc)) note_interrupt(desc, action_ret); =20 raw_spin_lock_irq(&desc->lock); --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -197,7 +197,7 @@ irqreturn_t handle_irq_event_percpu(stru =20 add_interrupt_randomness(desc->irq_data.irq, flags); =20 - if (!noirqdebug) + if (!irq_settings_no_debug(desc)) note_interrupt(desc, retval); return retval; }