• David Hildenbrand's avatar
    hv_balloon: don't check for memhp_auto_online manually · bc58ebd5
    David Hildenbrand authored
    We get the MEM_ONLINE notifier call if memory is added right from the
    kernel via add_memory() or later from user space.
    
    Let's get rid of the "ha_waiting" flag - the wait event has an inbuilt
    mechanism (->done) for that.  Initialize the wait event only once and
    reinitialize before adding memory.  Unconditionally call complete() and
    wait_for_completion_timeout().
    
    If there are no waiters, complete() will only increment ->done - which
    will be reset by reinit_completion().  If complete() has already been
    called, wait_for_completion_timeout() will not wait.
    
    There is still the chance for a small race between concurrent
    reinit_completion() and complete().  If complete() wins, we would not wait
    - which is tolerable (and the race exists in current code as well).
    
    Note: We only wait for "some" memory to get onlined, which seems to be
          good enough for now.
    
    [akpm@linux-foundation.org: register_memory_notifier() after init_completion(), per David]
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: default avatarBaoquan He <bhe@redhat.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: Wei Liu <wei.liu@kernel.org>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Wei Yang <richard.weiyang@gmail.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Eduardo Habkost <ehabkost@redhat.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Yumei Huang <yuhuang@redhat.com>
    Link: http://lkml.kernel.org/r/20200317104942.11178-6-david@redhat.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    bc58ebd5
hv_balloon.c 44.9 KB