This series updates the generic code so that either "low" memory or the f-segment can be used for storing drive mapping information. It also updates the virtio code to use "low" memory for its allocations. I think there is a good chance this series will, in practice, avoid running out of memory when a large number of virtio drives are available.
There are other ways to tackle this problem (eg, more of the virtio storage could be moved into "high" memory), but I think this approach has the benefit of avoiding a "big bang" patch series.
Comments welcome.
-Kevin
Kevin O'Connor (4): boot: Rename drive_g to drive disk: Don't require the 'struct drive_s' to be in the f-segment block: Rename disk_op_s->drive_gf to drive_fl virtio: Allocate drive_s storage in low memory
src/block.c | 36 ++++----- src/block.h | 2 +- src/boot.c | 16 ++-- src/cdrom.c | 6 +- src/disk.c | 218 +++++++++++++++++++++++++-------------------------- src/hw/ahci.c | 4 +- src/hw/ata.c | 26 +++--- src/hw/blockcmd.c | 10 +-- src/hw/esp-scsi.c | 2 +- src/hw/floppy.c | 20 ++--- src/hw/lsi-scsi.c | 2 +- src/hw/megasas.c | 2 +- src/hw/mpt-scsi.c | 2 +- src/hw/nvme.c | 2 +- src/hw/pvscsi.c | 2 +- src/hw/ramdisk.c | 2 +- src/hw/sdcard.c | 2 +- src/hw/usb-msc.c | 4 +- src/hw/usb-uas.c | 2 +- src/hw/virtio-blk.c | 14 ++-- src/hw/virtio-ring.c | 1 - src/hw/virtio-scsi.c | 5 +- 22 files changed, 189 insertions(+), 191 deletions(-)