Skip to content
  • Kevin Wolf's avatar
    31009d13
    docs/vhost-user: Clarifications for VHOST_USER_ADD/REM_MEM_REG · 31009d13
    Kevin Wolf authored
    
    
    The specification for VHOST_USER_ADD/REM_MEM_REG messages is unclear
    in several points, which has led to clients having incompatible
    implementations. This changes the specification to be more explicit
    about them:
    
    * VHOST_USER_ADD_MEM_REG is not specified as receiving a file
      descriptor, though it obviously does need to do so. All
      implementations agree on this one, fix the specification.
    
    * VHOST_USER_REM_MEM_REG is not specified as receiving a file
      descriptor either, and it also has no reason to do so. rust-vmm does
      not send file descriptors for removing a memory region (in agreement
      with the specification), libvhost-user and QEMU do (which is a bug),
      though libvhost-user doesn't actually make any use of it.
    
      Change the specification so that for compatibility QEMU's behaviour
      becomes legal, even if discouraged, but rust-vmm's behaviour becomes
      the explicitly recommended mode of operation.
    
    * VHOST_USER_ADD_MEM_REG doesn't have a documented return value, which
      is the desired behaviour in the non-postcopy case. It also implemented
      like this in QEMU and rust-vmm, though libvhost-user is buggy and
      sometimes sends an unexpected reply. This will be fixed in a separate
      patch.
    
      However, in postcopy mode it does reply like VHOST_USER_SET_MEM_TABLE.
      This behaviour is shared between libvhost-user and QEMU; rust-vmm
      doesn't implement postcopy mode yet. Mention it explicitly in the
      spec.
    
    * The specification doesn't mention how VHOST_USER_REM_MEM_REG
      identifies the memory region to be removed. Change it to describe the
      existing behaviour of libvhost-user (guest address, user address and
      size must match).
    
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20220407133657.155281-2-kwolf@redhat.com>
    Reviewed-by: default avatarRaphael Norwitz <raphael.norwitz@nutanix.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    31009d13
    docs/vhost-user: Clarifications for VHOST_USER_ADD/REM_MEM_REG
    Kevin Wolf authored
    
    
    The specification for VHOST_USER_ADD/REM_MEM_REG messages is unclear
    in several points, which has led to clients having incompatible
    implementations. This changes the specification to be more explicit
    about them:
    
    * VHOST_USER_ADD_MEM_REG is not specified as receiving a file
      descriptor, though it obviously does need to do so. All
      implementations agree on this one, fix the specification.
    
    * VHOST_USER_REM_MEM_REG is not specified as receiving a file
      descriptor either, and it also has no reason to do so. rust-vmm does
      not send file descriptors for removing a memory region (in agreement
      with the specification), libvhost-user and QEMU do (which is a bug),
      though libvhost-user doesn't actually make any use of it.
    
      Change the specification so that for compatibility QEMU's behaviour
      becomes legal, even if discouraged, but rust-vmm's behaviour becomes
      the explicitly recommended mode of operation.
    
    * VHOST_USER_ADD_MEM_REG doesn't have a documented return value, which
      is the desired behaviour in the non-postcopy case. It also implemented
      like this in QEMU and rust-vmm, though libvhost-user is buggy and
      sometimes sends an unexpected reply. This will be fixed in a separate
      patch.
    
      However, in postcopy mode it does reply like VHOST_USER_SET_MEM_TABLE.
      This behaviour is shared between libvhost-user and QEMU; rust-vmm
      doesn't implement postcopy mode yet. Mention it explicitly in the
      spec.
    
    * The specification doesn't mention how VHOST_USER_REM_MEM_REG
      identifies the memory region to be removed. Change it to describe the
      existing behaviour of libvhost-user (guest address, user address and
      size must match).
    
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    Message-Id: <20220407133657.155281-2-kwolf@redhat.com>
    Reviewed-by: default avatarRaphael Norwitz <raphael.norwitz@nutanix.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Loading