• Adam Litke's avatar
    virtio: Fix scheduling while atomic in virtio_balloon stats · 1f34c71a
    Adam Litke authored
    This is a fix for my earlier patch: "virtio: Add memory statistics reporting to
    the balloon driver (V4)".
    
    I discovered that all_vm_events() can sleep and therefore stats collection
    cannot be done in interrupt context.  One solution is to handle the interrupt
    by noting that stats need to be collected and waking the existing vballoon
    kthread which will complete the work via stats_handle_request().  Rusty, is
    this a saner way of doing business?
    
    There is one issue that I would like a broader opinion on.  In stats_request, I
    update vb->need_stats_update and then wake up the kthread.  The kthread uses
    vb->need_stats_update as a condition variable.  Do I need a memory barrier
    between the update and wake_up to ensure that my kthread sees the correct
    value?  My testing suggests that it is not needed but I would like some
    confirmation from the experts.
    Signed-off-by: default avatarAdam Litke <agl@us.ibm.com>
    To: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Anthony Liguori <aliguori@linux.vnet.ibm.com>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    1f34c71a
virtio_balloon.c 9.78 KB