mm: loosen MADV_NOHUGEPAGE to enable Qemu postcopy on s390
MADV_NOHUGEPAGE processing is too restrictive. kvm already disables hugepage but hugepage_madvise() takes the error path when we ask to turn on the MADV_NOHUGEPAGE bit and the bit is already on. This causes Qemu's new postcopy migration feature to fail on s390 because its first action is to madvise the guest address space as NOHUGEPAGE. This patch modifies the code so that the operation succeeds without error now. For consistency reasons do the same for MADV_HUGEPAGE. Signed-off-by: Jason J. Herne <jjherne@linux.vnet.ibm.com> Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
7511c3ede7
Коммит
1a76361568
|
@ -2009,7 +2009,7 @@ int hugepage_madvise(struct vm_area_struct *vma,
|
|||
/*
|
||||
* Be somewhat over-protective like KSM for now!
|
||||
*/
|
||||
if (*vm_flags & (VM_HUGEPAGE | VM_NO_THP))
|
||||
if (*vm_flags & VM_NO_THP)
|
||||
return -EINVAL;
|
||||
*vm_flags &= ~VM_NOHUGEPAGE;
|
||||
*vm_flags |= VM_HUGEPAGE;
|
||||
|
@ -2025,7 +2025,7 @@ int hugepage_madvise(struct vm_area_struct *vma,
|
|||
/*
|
||||
* Be somewhat over-protective like KSM for now!
|
||||
*/
|
||||
if (*vm_flags & (VM_NOHUGEPAGE | VM_NO_THP))
|
||||
if (*vm_flags & VM_NO_THP)
|
||||
return -EINVAL;
|
||||
*vm_flags &= ~VM_HUGEPAGE;
|
||||
*vm_flags |= VM_NOHUGEPAGE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче