lkml.org 
[lkml]   [2014]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: frequent lockups in 3.18rc4
Hello, Frederic.

On Fri, Nov 21, 2014 at 03:13:35PM +0100, Frederic Weisbecker wrote:
...
> So when the issue arised 4 years ago, it was a problem only for NMIs.
> Like Linus says: "what happens in NMI stays in NMI". Ok no that's not quite
> what he says :-) But NMIs happen to be a corner case for about everything
> and it's sometimes better to fix things from NMI itself, or have an NMI
> special case rather than grow the whole infrastructure in complexity to
> support this very corner case.

I'm not familiar with the innards of fault handling, so can you please
help me understand what may actually break? Here are what I currently
understand.

* Static percpu areas wouldn't trigger fault lazily. Note that this
is not necessarily because the first percpu chunk which contains the
static area is embedded inside the kernel linear mapping. Depending
on the memory layout and boot param, percpu allocator may choose to
map the first chunk in vmalloc space too; however, this still works
out fine because at that point there are no other page tables and
the PUD entries covering the first chunk is faulted in before other
pages tables are copied from the kernel one.

* NMI used to be a problem because vmalloc fault handler couldn't
safely nest inside NMI handler but this has been fixed since and it
should work fine from NMI handlers now.

* Function tracers are problematic because they may end up nesting
inside themselves through triggering a vmalloc fault while accessing
dynamic percpu memory area. This may lead to recursive locking and
other surprises.

Are there other cases where the lazy vmalloc faults can break things?

Thanks.

--
tejun


\
 
 \ /
  Last update: 2014-11-21 18:01    [W:0.327 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site