Skip to content
  • Daniel Henrique Barboza's avatar
    29e560f0
    hw/scsi: support SCSI-2 passthrough without PI · 29e560f0
    Daniel Henrique Barboza authored
    
    
    QEMU SCSI code makes assumptions about how the PROTECT and BYTCHK
    works in the protocol, denying support for PI (Protection
    Information) in case the guest OS requests it. However, in SCSI versions 2
    and older, there is no PI concept in the protocol.
    
    This means that when dealing with such devices:
    
    - there is no PROTECT bit in byte 5 of the standard INQUIRY response. The
    whole byte is marked as "Reserved";
    
    - there is no RDPROTECT in byte 2 of READ. We have 'Logical Unit Number'
    in this field instead;
    
    - there is no VRPROTECT in byte 2 of VERIFY. We have 'Logical Unit Number'
    in this field instead. This also means that the BYTCHK bit in this case
    is not related to PI.
    
    Since QEMU does not consider these changes, a SCSI passthrough using
    a SCSI-2 device will not work. It will mistake these fields with
    PI information and return Illegal Request SCSI SENSE thinking
    that the driver is asking for PI support.
    
    This patch fixes it by adding a new attribute called 'scsi_version'
    that is read from the standard INQUIRY response of passthrough
    devices. This allows for a version verification before applying
    conditions related to PI that doesn't apply for older versions.
    
    Reported-by: default avatarDac Nguyen <dacng@us.ibm.com>
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
    Message-Id: <20180327211451.14647-1-danielhb@linux.vnet.ibm.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    29e560f0
    hw/scsi: support SCSI-2 passthrough without PI
    Daniel Henrique Barboza authored
    
    
    QEMU SCSI code makes assumptions about how the PROTECT and BYTCHK
    works in the protocol, denying support for PI (Protection
    Information) in case the guest OS requests it. However, in SCSI versions 2
    and older, there is no PI concept in the protocol.
    
    This means that when dealing with such devices:
    
    - there is no PROTECT bit in byte 5 of the standard INQUIRY response. The
    whole byte is marked as "Reserved";
    
    - there is no RDPROTECT in byte 2 of READ. We have 'Logical Unit Number'
    in this field instead;
    
    - there is no VRPROTECT in byte 2 of VERIFY. We have 'Logical Unit Number'
    in this field instead. This also means that the BYTCHK bit in this case
    is not related to PI.
    
    Since QEMU does not consider these changes, a SCSI passthrough using
    a SCSI-2 device will not work. It will mistake these fields with
    PI information and return Illegal Request SCSI SENSE thinking
    that the driver is asking for PI support.
    
    This patch fixes it by adding a new attribute called 'scsi_version'
    that is read from the standard INQUIRY response of passthrough
    devices. This allows for a version verification before applying
    conditions related to PI that doesn't apply for older versions.
    
    Reported-by: default avatarDac Nguyen <dacng@us.ibm.com>
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
    Message-Id: <20180327211451.14647-1-danielhb@linux.vnet.ibm.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading