linux/drivers/virtio
Petr Mladek fad7b7b27b virtio_balloon: Use a workqueue instead of "vballoon" kthread
This patch moves the deferred work from the "vballoon" kthread into a
system freezable workqueue.

We do not need to maintain and run a dedicated kthread. Also the event
driven workqueues API makes the logic much easier. Especially, we do
not longer need an own wait queue, wait function, and freeze point.

The conversion is pretty straightforward. One cycle of the main loop
is put into a work. The work is queued instead of waking the kthread.

fill_balloon() and leak_balloon() have a limit for the amount of modified
pages. The work re-queues itself when necessary. For this, we make
fill_balloon() to return the number of really modified pages.
Note that leak_balloon() already did this.

virtballoon_restore() queues the work only when really needed.

The only complication is that we need to prevent queuing the work
when the balloon is being removed. It was easier before because the
kthread simply removed itself from the wait queue. We need an
extra boolean and spin lock now.

My initial idea was to use a dedicated workqueue. Michael S. Tsirkin
suggested using a system one. Tejun Heo confirmed that the system
workqueue has a pretty high concurrency level (256) by default.
Therefore we need not be afraid of too long blocking.

Signed-off-by: Petr Mladek <pmladek@suse.cz>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-03-11 01:40:13 +02:00
..
config.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
Kconfig virtio_ring: Support DMA APIs 2016-03-02 17:01:57 +02:00
Makefile Add virtio-input driver. 2015-03-29 12:13:52 +10:30
virtio_balloon.c virtio_balloon: Use a workqueue instead of "vballoon" kthread 2016-03-11 01:40:13 +02:00
virtio_input.c virtio: make find_vqs() checkpatch.pl-friendly 2016-01-12 20:47:06 +02:00
virtio_mmio.c virtio_mmio: Use the DMA API if enabled 2016-03-02 17:01:58 +02:00
virtio_pci_common.c virtio_pci: fix use after free on release 2016-01-26 10:18:28 +02:00
virtio_pci_common.h virtio_pci: Use the DMA API if enabled 2016-03-02 17:01:58 +02:00
virtio_pci_legacy.c virtio_pci: Use the DMA API if enabled 2016-03-02 17:01:58 +02:00
virtio_pci_modern.c virtio_pci: Use the DMA API if enabled 2016-03-02 17:01:58 +02:00
virtio_ring.c vring: Use the DMA API on Xen 2016-03-02 17:01:59 +02:00
virtio.c virtio: fix memory leak of virtio ida cache layers 2015-12-07 17:28:01 +02:00