[Oneiric, Natty, Maverick, Lucid] SRU: x86/paravirt flush lazy mmu mode in k(un)map_atomic
Stefan Bader
stefan.bader at canonical.com
Tue Oct 18 16:05:43 UTC 2011
SRU Justification:
Impact: An upstream change in 2.6.31 tried to simplify the conditions of
having the lazy mmu mode in paravirt disabled. With that in mind several
instances where the lazy mmu mode was disabled explicitly have been
removed. However it was found that from k(un)map_atomic there is a chance
to cause an oops.
Fix: The following patch has been sent upstream (currently it is only in
the -mm tree and linux-next). It has been tested to fix the problem on
2.6.38. The specific symptom seen, seems to have come up since 2.6.37,
however the lines of code that are re-introduced have been removed since
2.6.31. [Note, there has been some arguing about the summary line and
commit message of the patch, so the upstream change may differ there.
The code change was the same.]
Testcase: Trying to do forks under high load should trigger the issue (at
least on 2.6.37+ kernels)
Attached are patches for Oneiric and Natty, as well as for Maverick and
Lucid. For the former two this would should do the change which we expect
from upstream. The effect should be limited to Xen. At least I am not
aware of anything else that uses paravirt.
For Maverick and Lucid, there are no specific reports I am aware of.
It could be that k(un)map_atomic there has different paths and the
problem does not exist. Or it does exist but the symptoms are completly
different. From the sound of it, adding back two triggers to disable
the lazy mmu mode sounds like it should worst case reduce performance
a bit. The Xen maintainer was similarly unsure, so maybe we want to
hold back here. I am adding the patch mainly for reference.
-Stefan
More information about the kernel-team
mailing list