exec: always use MADV_DONTFORK
authorAndrea Arcangeli <aarcange@redhat.com>
Thu, 25 Jul 2013 10:11:15 +0000 (12:11 +0200)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Thu, 7 Nov 2013 04:48:35 +0000 (13:48 +0900)
commit67b1a7b960118a18c2a96815c0c77f05dc59d4d2
tree85c0aeda6352a8bdf40242e31a0ec3265eec4e80
parentb193e5f00c4eb4dc8aef9785537d3d459e6095b1
exec: always use MADV_DONTFORK

MADV_DONTFORK prevents fork to fail with -ENOMEM if the default
overcommit heuristics decides there's too much anonymous virtual
memory allocated. If the KVM secondary MMU is synchronized with MMU
notifiers or not, doesn't make a difference in that regard.

Secondly it's always more efficient to avoid copying the guest
physical address space in the fork child (so we avoid to mark all the
guest memory readonly in the parent and so we skip the establishment
and teardown of lots of pagetables in the child).

In the common case we can ignore the error if MADV_DONTFORK is not
available. Leave a second invocation that errors out in the KVM path
if MMU notifiers are missing and KVM is enabled, to abort in such
case.

Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Tested-By: Benoit Canet <benoit@irqsave.net>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
(cherry picked from commit 3e469dbfe413c25d48321c3a19ddfae0727dc6e5)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
exec.c