1. 25 Oct, 2018 6 commits
    • Bijan Mottahedeh's avatar
      vhost/scsi: Respond to control queue operations · 0d02dbd6
      Bijan Mottahedeh authored
      The vhost-scsi driver currently does not handle any control queue
      operations. In particular, vhost_scsi_ctl_handle_kick, merely prints out
      a debug message but does nothing else. This can cause guest VMs to hang.
      
      As part of SCSI recovery from an error, e.g., an I/O timeout, the SCSI
      midlayer attempts to abort the failed operation. The SCSI virtio driver
      translates the abort to a SCSI TMF request that gets put on the control
      queue (virtscsi_abort -> virtscsi_tmf). The SCSI virtio driver then
      waits indefinitely for this request to be completed, but it never will
      because vhost-scsi never responds to that request.
      
      To avoid a hang, always respond to control queue operations; explicitly
      reject TMF requests, and return a no-op response to event requests.
      Signed-off-by: default avatarBijan Mottahedeh <bijan.mottahedeh@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      0d02dbd6
    • Greg Edwards's avatar
      vhost/scsi: truncate T10 PI iov_iter to prot_bytes · 4542d623
      Greg Edwards authored
      Commands with protection information included were not truncating the
      protection iov_iter to the number of protection bytes in the command.
      This resulted in vhost_scsi mis-calculating the size of the protection
      SGL in vhost_scsi_calc_sgls(), and including both the protection and
      data SG entries in the protection SGL.
      
      Fixes: 09b13fa8 ("vhost/scsi: Add ANY_LAYOUT support in vhost_scsi_handle_vq")
      Signed-off-by: default avatarGreg Edwards <gedwards@ddn.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Fixes: 09b13fa8
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4542d623
    • Wei Wang's avatar
      virtio-balloon: VIRTIO_BALLOON_F_PAGE_POISON · 2e991629
      Wei Wang authored
      The VIRTIO_BALLOON_F_PAGE_POISON feature bit is used to indicate if the
      guest is using page poisoning. Guest writes to the poison_val config
      field to tell host about the page poisoning value that is in use.
      Suggested-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarWei Wang <wei.w.wang@intel.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      2e991629
    • Wei Wang's avatar
      mm/page_poison: expose page_poisoning_enabled to kernel modules · d95f58f4
      Wei Wang authored
      In some usages, e.g. virtio-balloon, a kernel module needs to know if
      page poisoning is in use. This patch exposes the page_poisoning_enabled
      function to kernel modules.
      Signed-off-by: default avatarWei Wang <wei.w.wang@intel.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Acked-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      d95f58f4
    • Wei Wang's avatar
      virtio-balloon: VIRTIO_BALLOON_F_FREE_PAGE_HINT · 86a55978
      Wei Wang authored
      Negotiation of the VIRTIO_BALLOON_F_FREE_PAGE_HINT feature indicates the
      support of reporting hints of guest free pages to host via virtio-balloon.
      Currenlty, only free page blocks of MAX_ORDER - 1 are reported. They are
      obtained one by one from the mm free list via the regular allocation
      function.
      
      Host requests the guest to report free page hints by sending a new cmd id
      to the guest via the free_page_report_cmd_id configuration register. When
      the guest starts to report, it first sends a start cmd to host via the
      free page vq, which acks to host the cmd id received. When the guest
      finishes reporting free pages, a stop cmd is sent to host via the vq.
      Host may also send a stop cmd id to the guest to stop the reporting.
      
      VIRTIO_BALLOON_CMD_ID_STOP: Host sends this cmd to stop the guest
      reporting.
      VIRTIO_BALLOON_CMD_ID_DONE: Host sends this cmd to tell the guest that
      the reported pages are ready to be freed.
      
      Why does the guest free the reported pages when host tells it is ready to
      free?
      This is because freeing pages appears to be expensive for live migration.
      free_pages() dirties memory very quickly and makes the live migraion not
      converge in some cases. So it is good to delay the free_page operation
      when the migration is done, and host sends a command to guest about that.
      
      Why do we need the new VIRTIO_BALLOON_CMD_ID_DONE, instead of reusing
      VIRTIO_BALLOON_CMD_ID_STOP?
      This is because live migration is usually done in several rounds. At the
      end of each round, host needs to send a VIRTIO_BALLOON_CMD_ID_STOP cmd to
      the guest to stop (or say pause) the reporting. The guest resumes the
      reporting when it receives a new command id at the beginning of the next
      round. So we need a new cmd id to distinguish between "stop reporting" and
      "ready to free the reported pages".
      
      TODO:
      - Add a batch page allocation API to amortize the allocation overhead.
      Signed-off-by: default avatarWei Wang <wei.w.wang@intel.com>
      Signed-off-by: default avatarLiang Li <liang.z.li@intel.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      86a55978
    • Lénaïc Huard's avatar
      kvm_config: add CONFIG_VIRTIO_MENU · d7b31359
      Lénaïc Huard authored
      Make sure that make kvmconfig enables all the virtio drivers even if it is
      preceded by a make allnoconfig.
      Signed-off-by: default avatarLénaïc Huard <lenaic@lhuard.fr>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      d7b31359
  2. 22 Oct, 2018 8 commits
  3. 21 Oct, 2018 3 commits
  4. 20 Oct, 2018 11 commits
  5. 19 Oct, 2018 12 commits