Skip to content
Snippets Groups Projects
  • David Hildenbrand's avatar
    b430b513
    util/vfio-helpers.c: Use ram_block_discard_disable() in qemu_vfio_open_pci() · b430b513
    David Hildenbrand authored
    
    Currently, when using "nvme://" for a block device, like
        -drive file=nvme://0000:01:00.0/1,if=none,id=drive0 \
        -device virtio-blk,drive=drive0 \
    
    VFIO may pin all guest memory, and discarding of RAM no longer works as
    expected. I was able to reproduce this easily with my
        01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd
                NVMe SSD Controller SM981/PM981/PM983
    
    Similar to common VFIO, we have to disable it, making sure that:
    a) virtio-balloon won't discard any memory ("silently disabled")
    b) virtio-mem and nvme:// run mutually exclusive
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Wei Yang <richardw.yang@linux.intel.com>
    Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
    Cc: Peter Xu <peterx@redhat.com>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20201116105947.9194-1-david@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    b430b513
    History
    util/vfio-helpers.c: Use ram_block_discard_disable() in qemu_vfio_open_pci()
    David Hildenbrand authored
    
    Currently, when using "nvme://" for a block device, like
        -drive file=nvme://0000:01:00.0/1,if=none,id=drive0 \
        -device virtio-blk,drive=drive0 \
    
    VFIO may pin all guest memory, and discarding of RAM no longer works as
    expected. I was able to reproduce this easily with my
        01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd
                NVMe SSD Controller SM981/PM981/PM983
    
    Similar to common VFIO, we have to disable it, making sure that:
    a) virtio-balloon won't discard any memory ("silently disabled")
    b) virtio-mem and nvme:// run mutually exclusive
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Wei Yang <richardw.yang@linux.intel.com>
    Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
    Cc: Peter Xu <peterx@redhat.com>
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Message-Id: <20201116105947.9194-1-david@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>