From: Frederic Weisbecker <frederic@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Tony Luck <tony.luck@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Vasily Gorbik <gor@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Fenghua Yu <fenghua.yu@intel.com>,
Heiko Carstens <hca@linux.ibm.com>
Subject: [RFC PATCH 0/4] irq: Reorder time handling against HARDIRQ_OFFSET on IRQ entry
Date: Wed, 25 Nov 2020 03:15:38 +0100 [thread overview]
Message-ID: <20201125021542.30237-1-frederic@kernel.org> (raw)
There are two issues with the current layout of tick_irq_enter() as
it's called before HARDIRQ_OFFSET is incremented:
1) It's not correctly handled by lockdep which doesn't consider it as
hardirq context. And jiffies/timekeeping update take a few interesting
locks.
2) Softirqs need to be explicitly disabled around it to prevent ksoftirqd
from being spuriously woken up.
The current call dependency prevents tick_irq_enter() from being moved
after HARDIRQ_OFFSET: account_irq_enter_time() needs to be called before
HARDIRQ_OFFSET incrementation due to cputime index dispatch and it must
be called after tick_irq_enter() which updates the clocks that may be
necessary for cputime accounting.
Here is a proposal to fix this layout.
(The EXPORT_SYMBOL_GPL() in vtime will likely disappear in the next take
as they don't seem to be necessary anymore, but I'll need to check
that thoroughly).
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
irq/core
HEAD: 9502ee20aed8bb847176e1d7d83ccd0625430744
Frederic Weisbecker (4):
sched/vtime: Consolidate IRQ time accounting
s390/vtime: Convert to consolidated IRQ time accounting
irqtime: Move irqtime entry accounting after irq offset incrementation
irq: Call tick_irq_enter() inside HARDIRQ_OFFSET
arch/ia64/kernel/time.c | 22 +++++++---
arch/powerpc/kernel/time.c | 60 ++++++++++++++++++++--------
arch/s390/include/asm/vtime.h | 1 -
arch/s390/kernel/vtime.c | 60 ++++++++++++++++++----------
include/linux/hardirq.h | 4 +-
include/linux/vtime.h | 18 ++++-----
kernel/sched/cputime.c | 75 +++++++++++++++++++++++++++--------
kernel/softirq.c | 16 +++-----
8 files changed, 176 insertions(+), 80 deletions(-)
--
2.25.1
next reply other threads:[~2020-11-25 2:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-25 2:15 Frederic Weisbecker [this message]
2020-11-25 2:15 ` [RFC PATCH 1/4] sched/vtime: Consolidate IRQ time accounting Frederic Weisbecker
2020-11-25 2:15 ` [RFC PATCH 2/4] s390/vtime: Convert to consolidated " Frederic Weisbecker
2020-11-25 2:15 ` [RFC PATCH 3/4] sched/irqtime: Move irqtime entry accounting after irq offset incrementation Frederic Weisbecker
2020-11-25 2:15 ` [RFC PATCH 4/4] irq: Call tick_irq_enter() inside HARDIRQ_OFFSET Frederic Weisbecker
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=20201125021542.30237-1-frederic@kernel.org \
--to=frederic@kernel.org \
--cc=benh@kernel.crashing.org \
--cc=borntraeger@de.ibm.com \
--cc=fenghua.yu@intel.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
/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.