Skip to content
Snippets Groups Projects
  1. Jan 02, 2021
  2. Dec 18, 2020
  3. Dec 13, 2020
  4. Dec 10, 2020
    • Markus Armbruster's avatar
      Clean up includes · 4bd802b2
      Markus Armbruster authored
      
      Clean up includes so that osdep.h is included first and headers
      which it implies are not included manually.
      
      This commit was created with scripts/clean-includes, with the changes
      to the following files manually reverted:
      
          contrib/libvhost-user/libvhost-user-glib.h
          contrib/libvhost-user/libvhost-user.c
          contrib/libvhost-user/libvhost-user.h
          contrib/plugins/hotblocks.c
          contrib/plugins/hotpages.c
          contrib/plugins/howvec.c
          contrib/plugins/lockstep.c
          linux-user/mips64/cpu_loop.c
          linux-user/mips64/signal.c
          linux-user/sparc64/cpu_loop.c
          linux-user/sparc64/signal.c
          linux-user/x86_64/cpu_loop.c
          linux-user/x86_64/signal.c
          target/s390x/gen-features.c
          tests/fp/platform.h
          tests/migration/s390x/a-b-bios.c
          tests/plugin/bb.c
          tests/plugin/empty.c
          tests/plugin/insn.c
          tests/plugin/mem.c
          tests/test-rcu-simpleq.c
          tests/test-rcu-slist.c
          tests/test-rcu-tailq.c
          tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c
      
      contrib/plugins/, tests/plugin/, and tests/test-rcu-slist.c appear not
      to include osdep.h intentionally.  The remaining reverts are the same
      as in commit bbfff196.
      
      Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Message-Id: <20201113061216.2483385-1-armbru@redhat.com>
      Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Acked-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
      Tested-by: default avatarThomas Huth <thuth@redhat.com>
      Acked-by: default avatarCornelia Huck <cohuck@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Acked-by: default avatarAlexander Bulekov <alxndr@bu.edu>
      4bd802b2
  5. Dec 09, 2020
  6. Dec 08, 2020
  7. Nov 17, 2020
  8. Nov 16, 2020
  9. Nov 12, 2020
    • Stefan Hajnoczi's avatar
      vhost-user: fix VHOST_USER_ADD/REM_MEM_REG truncation · 3009edff
      Stefan Hajnoczi authored
      
      QEMU currently truncates the mmap_offset field when sending
      VHOST_USER_ADD_MEM_REG and VHOST_USER_REM_MEM_REG messages. The struct
      layout looks like this:
      
        typedef struct VhostUserMemoryRegion {
            uint64_t guest_phys_addr;
            uint64_t memory_size;
            uint64_t userspace_addr;
            uint64_t mmap_offset;
        } VhostUserMemoryRegion;
      
        typedef struct VhostUserMemRegMsg {
            uint32_t padding;
            /* WARNING: there is a 32-bit hole here! */
            VhostUserMemoryRegion region;
        } VhostUserMemRegMsg;
      
      The payload size is calculated as follows when sending the message in
      hw/virtio/vhost-user.c:
      
        msg->hdr.size = sizeof(msg->payload.mem_reg.padding) +
            sizeof(VhostUserMemoryRegion);
      
      This calculation produces an incorrect result of only 36 bytes.
      sizeof(VhostUserMemRegMsg) is actually 40 bytes.
      
      The consequence of this is that the final field, mmap_offset, is
      truncated. This breaks x86_64 TCG guests on s390 hosts. Other guest/host
      combinations may get lucky if either of the following holds:
      1. The guest memory layout does not need mmap_offset != 0.
      2. The host is little-endian and mmap_offset <= 0xffffffff so the
         truncation has no effect.
      
      Fix this by extending the existing 32-bit padding field to 64-bit. Now
      the padding reflects the actual compiler padding. This can be verified
      using pahole(1).
      
      Also document the layout properly in the vhost-user specification.  The
      vhost-user spec did not document the exact layout. It would be
      impossible to implement the spec without looking at the QEMU source
      code.
      
      Existing vhost-user frontends and device backends continue to work after
      this fix has been applied. The only change in the wire protocol is that
      QEMU now sets hdr.size to 40 instead of 36. If a vhost-user
      implementation has a hardcoded size check for 36 bytes, then it will
      fail with new QEMUs. Both QEMU and DPDK/SPDK don't check the exact
      payload size, so they continue to work.
      
      Fixes: f1aeb14b ("Transmit vhost-user memory regions individually")
      Cc: Raphael Norwitz <raphael.norwitz@nutanix.com>
      Cc: Cornelia Huck <cohuck@redhat.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20201109174355.1069147-1-stefanha@redhat.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Fixes: f1aeb14b ("Transmit vhost-user memory regions individually")
      Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
      Reviewed-by: default avatarRaphael Norwitz <raphael.norwitz@nutanix.com>
      3009edff
  10. Nov 03, 2020
  11. Oct 27, 2020
  12. Oct 26, 2020
  13. Oct 23, 2020
  14. Oct 09, 2020
Loading