From: Ingo Molnar <mingo@elte.hu>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>,
linux-kernel@vger.kernel.org, mingo@redhat.com, hpa@zytor.com,
paulus@samba.org, acme@redhat.com, efault@gmx.de,
npiggin@suse.de, tglx@linutronix.de,
linux-tip-commits@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [tip:perfcounters/core] x86: Add NMI types for kmap_atomic
Date: Tue, 16 Jun 2009 10:13:48 +0200 [thread overview]
Message-ID: <20090616081348.GC16229@elte.hu> (raw)
In-Reply-To: <1245092433.6741.201.camel@laptop>
* Peter Zijlstra <peterz@infradead.org> wrote:
> On Mon, 2009-06-15 at 20:52 +0200, Ingo Molnar wrote:
> > * Peter Zijlstra <peterz@infradead.org> wrote:
> >
> > > On Mon, 2009-06-15 at 20:42 +0200, Ingo Molnar wrote:
> > > > * Peter Zijlstra <peterz@infradead.org> wrote:
> > > >
> > > > > On Mon, 2009-06-15 at 20:25 +0200, Ingo Molnar wrote:
> > > > > > * Peter Zijlstra <peterz@infradead.org> wrote:
> > > > >
> > > > > > but ... look at the APIs i propose above. We dont need _any_
> > > > > > 'types'.
> > > > > >
> > > > > > That type enumeration is basically an open-coded allocator. If we do
> > > > > > a _real_ allocator (a balanced stack of atomic kmaps) we dont need
> > > > > > any of those indices, and all the potential for mismatch goes away
> > > > > > as well - a stack nests trivially with IRQ and NMI and arbitrary
> > > > > > other contexts.
> > > > >
> > > > > You want types because:
> > > > > - they encode the intent, and can be verified
> > > > > - they help keep track of the max nesting depth
> > > > >
> > > > > In the proposed implementation all type code basically falls away
> > > > > no ! CONFIG_DEBUG_VM, but is kept around for robustness.
> > > >
> > > > But much of the fragility of the types (and their clumsiness - for
> > > > example in highpte ops we have to know at which level of the
> > > > pagetables we are, and use the right kind of index) is _precisely_
> > > > because we have the types ...
> > >
> > > How will you manage the max depth?
> >
> > if (++depth == MAX_DEPTH) {
> > print_all_entries_and_nasty_warning();
> > /* hope we'll live long enough for the syslog to touch disk */
> > depth = 0;
> > }
>
> That will only trigger if we hit it, which will be _very_ rare.
>
> > unbalanced kmap is a bad bug - the easier we make it to catch,
> > the better. The system wouldnt survive anyway.
>
> My proposed patch validates strict balance of types. But I can
> easily add the above as well.
>
> By removing the types it becomes very difficult to verify the max
> depth. I really don't like removing them.
The fact that it implies an atomic section pretty much limits its
depth in practice, doesnt it?
All we need to track in the debug code is
max-{syscall,softirq,hardirq,nmi}. The sum of these 4 counts must be
smaller than the max - even if (as you are right to point out) we
dont hit that magic combo that truly maximizes the depth.
And note that in practice many of the current types are exclusive to
each other - so using the stack would _reduce_ the amount of
kmap-atomic space we need.
Ingo
next prev parent reply other threads:[~2009-06-16 8:14 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <tip-3ff0141aa3a03ca3388b40b36167d0a37919f3fd@git.kernel.org>
2009-06-15 14:46 ` [tip:perfcounters/core] x86: Add NMI types for kmap_atomic Peter Zijlstra
2009-06-15 15:30 ` Hugh Dickins
2009-06-15 15:41 ` Peter Zijlstra
2009-06-15 15:52 ` Ingo Molnar
2009-06-15 16:02 ` Hugh Dickins
2009-06-15 18:04 ` Peter Zijlstra
2009-06-15 18:15 ` Ingo Molnar
2009-06-15 18:19 ` Peter Zijlstra
2009-06-15 18:25 ` Ingo Molnar
2009-06-15 18:30 ` Peter Zijlstra
2009-06-15 18:42 ` Ingo Molnar
2009-06-15 18:47 ` Peter Zijlstra
2009-06-15 18:52 ` Ingo Molnar
2009-06-15 19:00 ` Peter Zijlstra
2009-06-16 8:13 ` Ingo Molnar [this message]
2009-06-16 12:38 ` Hugh Dickins
2009-06-17 7:58 ` Peter Zijlstra
2009-06-17 8:43 ` Tejun Heo
2009-06-17 9:05 ` Peter Zijlstra
2009-06-17 7:44 ` Peter Zijlstra
2009-06-17 12:28 ` Ingo Molnar
2009-06-15 18:42 ` Andrew Morton
2009-06-15 18:45 ` Peter Zijlstra
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=20090616081348.GC16229@elte.hu \
--to=mingo@elte.hu \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=efault@gmx.de \
--cc=hpa@zytor.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=npiggin@suse.de \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox