linux/drivers/virtio
David Hildenbrand 98ff9f9411 virtio-mem: generalize handling when memory is getting onlined deferred
We don't want to add too much memory when it's not getting onlined
immediately, to avoid running OOM. Generalize the handling, to avoid
making use of memory block states. Use a threshold of 1 GiB for now.

Properly adjust the offline size when adding/removing memory. As we are
not always protected by a lock when touching the offline size, use an
atomic64_t. We don't care about races (e.g., someone offlining memory
while we are adding more), only about consistent values.

(1 GiB needs a memmap of ~16MiB - which sounds reasonable even for
 setups with little boot memory and (possibly) one virtio-mem device per
 node)

We don't want to retrigger when onlining is caused immediately by our
action (e.g., adding memory which immediately gets onlined), so use a
flag to indicate if the workqueue is active and use that as an
indicator whether to trigger a retry. This will also be especially relevant
for Big Block Mode (BBM), whereby we might re-online memory in case
offlining of another memory block failed.

Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Link: https://lore.kernel.org/r/20201112133815.13332-17-david@redhat.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2020-12-18 16:14:26 -05:00
..
Kconfig vhost,vdpa,virtio: cleanups, fixes 2020-10-23 11:00:57 -07:00
Makefile virtio: fix build for configs without dma-bufs 2020-08-19 06:43:28 +02:00
virtio_balloon.c virtio-balloon: Constify id_table 2020-10-21 10:34:08 -04:00
virtio_dma_buf.c virtio: fix build for configs without dma-bufs 2020-08-19 06:43:28 +02:00
virtio_input.c virtio_input: Constify id_table 2020-10-21 10:34:09 -04:00
virtio_mem.c virtio-mem: generalize handling when memory is getting onlined deferred 2020-12-18 16:14:26 -05:00
virtio_mmio.c virtio: Implement get_shm_region for MMIO transport 2020-09-10 10:05:58 +02:00
virtio_pci_common.c virtio-pci: check name when counting MSI-X vectors 2020-02-06 03:40:26 -05:00
virtio_pci_common.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 78 2019-05-24 17:37:51 +02:00
virtio_pci_legacy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 78 2019-05-24 17:37:51 +02:00
virtio_pci_modern.c virtio: Implement get_shm_region for PCI transport 2020-09-10 10:05:58 +02:00
virtio_ring.c virtio: fixes, features 2020-08-11 14:34:17 -07:00
virtio_vdpa.c virtio_vdpa: legacy features handling 2020-08-05 11:08:40 -04:00
virtio.c vhost,vdpa,virtio: cleanups, fixes 2020-10-23 11:00:57 -07:00