• Mika Westerberg's avatar
    SCSI: Add Marvell Console to VPD blacklist · 82c43310
    Mika Westerberg authored
    I have a Marvell 88SE9230 SATA Controller that has some sort of
    integrated console SCSI device attached to one of the ports.
    
      ata14: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
      ata14.00: ATAPI: MARVELL VIRTUALL, 1.09, max UDMA/66
      ata14.00: configured for UDMA/66
      scsi 13:0:0:0: Processor         Marvell  Console 1.01 PQ: 0 ANSI: 5
    
    Sending it VPD INQUIRY command seem to always fail with following error:
    
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 2 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
      ata14: hard resetting link
    
    This has been minor annoyance (only error printed on dmesg) until commit
    09e2b0b1 ("scsi: rescan VPD attributes") added call to scsi_attach_vpd()
    in scsi_rescan_device(). The commit causes the system to splat out
    following errors continuously without ever reaching the UI:
    
      ata14.00: configured for UDMA/66
      ata14: EH complete
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 6 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
      ata14: hard resetting link
      ata14: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
      ata14.00: configured for UDMA/66
      ata14: EH complete
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 7 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
    
    Without in-depth understanding of SCSI layer and the Marvell controller,
    I suspect this happens because when the link goes down (because of an
    error) we schedule scsi_rescan_device() which again fails to read VPD
    data... ad infinitum.
    
    Since VPD data cannot be read from the device anyway we prevent the SCSI
    layer from even trying by blacklisting the device. This gets away the
    error and the system starts up normally.
    
    [mkp: Widened the match to all revisions of this device]
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Reported-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: default avatarAlexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    82c43310
scsi_devinfo.c 28.3 KB