• David Hildenbrand's avatar
    powerpc/pseries/cmm: fix managed page counts when migrating pages between zones · e352f576
    David Hildenbrand authored
    Commit 63341ab0 (virtio-balloon: fix managed page counts when migrating
    pages between zones) fixed a long existing BUG in the virtio-balloon
    driver when pages would get migrated between zones.  I did not try to
    reproduce on powerpc, but looking at the code, the same should apply to
    powerpc/cmm ever since it started using the balloon compaction
    infrastructure (luckily just recently).
    
    In case we have to migrate a ballon page to a newpage of another zone, the
    managed page count of both zones is wrong. Paired with memory offlining
    (which will adjust the managed page count), we can trigger kernel crashes
    and all kinds of different symptoms.
    
    Fix it by properly adjusting the managed page count when migrating if
    the zone changed.
    
    We'll temporarily modify the totalram page count. If this ever becomes a
    problem, we can fine tune by providing helpers that don't touch
    the totalram pages (e.g., adjust_zone_managed_page_count()).
    
    Fixes: fe030c9b ("powerpc/pseries/cmm: Implement balloon compaction")
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191216103058.4958-1-david@redhat.com
    e352f576
cmm.c 17.2 KB