libata: quirk read log on no-name M.2 SSD
authorChristoph Hellwig <hch@lst.de>
Mon, 28 Aug 2017 06:28:08 +0000 (08:28 +0200)
committerTejun Heo <tj@kernel.org>
Mon, 28 Aug 2017 17:27:16 +0000 (10:27 -0700)
Ido reported that reading the log page on his systems fails,
so quirk it as it won't support ZBC or security protocols.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Ido Schimmel <idosch@mellanox.com>
Tested-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
drivers/ata/libata-core.c
include/linux/libata.h

index fa7dd4394c02b642c00119bd00a4b59b18921a0d..697f5f896b190cfacf771a71cf29311454db6175 100644 (file)
@@ -2079,6 +2079,8 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
         */
        if (ap_flags & ATA_FLAG_NO_LOG_PAGE)
                return AC_ERR_DEV;
+       if (dev->horkage & ATA_HORKAGE_NO_LOG_PAGE)
+               return AC_ERR_DEV;
 
 retry:
        ata_tf_init(dev, &tf);
@@ -4578,6 +4580,8 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
        { "WDC WD3000JD-*",             NULL,   ATA_HORKAGE_WD_BROKEN_LPM },
        { "WDC WD3200JD-*",             NULL,   ATA_HORKAGE_WD_BROKEN_LPM },
 
+
+       { "M.2 (S42) 3ME3",             NULL,   ATA_HORKAGE_NO_LOG_PAGE },
        /* End Marker */
        { }
 };
index 931c32f1f18d38835425eb21a4c952e1195e4f10..9e927ae7fceda8cdb6a6a77697c55da285d85746 100644 (file)
@@ -438,6 +438,7 @@ enum {
        ATA_HORKAGE_NO_DMA_LOG  = (1 << 23),    /* don't use DMA for log read */
        ATA_HORKAGE_NOTRIM      = (1 << 24),    /* don't use TRIM */
        ATA_HORKAGE_MAX_SEC_1024 = (1 << 25),   /* Limit max sects to 1024 */
+       ATA_HORKAGE_NO_LOG_PAGE = (1 << 26),    /* Doesn't like Get Log Page */
 
         /* DMA mask for user DMA control: User visible values; DO NOT
            renumber */