From: Puyou Lu <puyou.lu@gmail.com>
To: Marc Zyngier <maz@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Robert Richter <rrichter@cavium.com>,
Catalin Marinas <catalin.marinas@arm.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] irqchip/gic-v3: do runtime cpu cap check only when necessary
Date: Sun, 28 Aug 2022 15:56:23 +0800 [thread overview]
Message-ID: <20220828075610.GA30202@lu-N56VJ> (raw)
In-Reply-To: <87wnatra83.wl-maz@kernel.org>
On Sat, Aug 27, 2022 at 04:13:00PM +0100, Marc Zyngier wrote:
> On Sat, 27 Aug 2022 06:19:27 +0100,
> Puyou Lu <puyou.lu@gmail.com> wrote:
> >
> > Now cpu cap check is done every exception happens on every arm64 platform,
> > but this check is necessary on just few of then, so we can drop this
> > check at compile time on others. This can decrease exception handle time
> > on most cases.
> >
> > Fixes: 6d4e11c5e2e8 ("irqchip/gicv3: Workaround for Cavium ThunderX erratum 23154")
> > Signed-off-by: Puyou Lu <puyou.lu@gmail.com>
> > ---
> > drivers/irqchip/irq-gic-v3.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
> > index 262658fd5f9e..3f08c2ef1251 100644
> > --- a/drivers/irqchip/irq-gic-v3.c
> > +++ b/drivers/irqchip/irq-gic-v3.c
> > @@ -237,9 +237,11 @@ static void gic_redist_wait_for_rwp(void)
> >
> > static u64 __maybe_unused gic_read_iar(void)
> > {
> > +#ifdef CONFIG_CAVIUM_ERRATUM_23154
> > if (cpus_have_const_cap(ARM64_WORKAROUND_CAVIUM_23154))
> > return gic_read_iar_cavium_thunderx();
> > else
> > +#endif
> > return gic_read_iar_common();
> > }
> > #endif
>
> You realise that cpus_have_const_cap() results purely in a couple of
> branches once the caps have been finalised, right?
>
> Please provide data showing that it actually "can decrease exception
> handle time on most cases", because I'm pretty sure you cannot measure
> the difference in any meaningful way.
>
> M.
>
> --
> Without deviation from the norm, progress is not possible.
Hi Marc,
Thank you for the reply. Actually I did no test, just from the disassemble
code of vmlinux, I saw about 6 instruction generated by
cpus_have_const_cap, and about 36 by gic_read_iar_cavium_thunderx, which
is useless for most CPUs. I think this will waste some cpu cycles, as
exceptions can occur hunderds or thousands times per second. Also
(6+36)*4=168 bytes of icache is wasted, and icache misses increase
somewhere else.
If I got things wrong, please correct me.
next prev parent reply other threads:[~2022-08-28 7:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-27 5:19 [PATCH] irqchip/gic-v3: do runtime cpu cap check only when necessary Puyou Lu
2022-08-27 15:13 ` Marc Zyngier
2022-08-28 7:56 ` Puyou Lu [this message]
2022-08-28 17:11 ` Marc Zyngier
2022-08-29 3:52 ` Puyou Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220828075610.GA30202@lu-N56VJ \
--to=puyou.lu@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=rrichter@cavium.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.