Merge tag 'defconfig-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / drivers / ata / libata-core.c
index f285a2b..b8459c5 100644 (file)
@@ -2026,13 +2026,15 @@ retry:
        err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
                                     buf, sectors * ATA_SECT_SIZE, 0);
 
-       if (err_mask && dma) {
-               dev->horkage |= ATA_HORKAGE_NO_DMA_LOG;
-               ata_dev_warn(dev, "READ LOG DMA EXT failed, trying PIO\n");
-               goto retry;
+       if (err_mask) {
+               if (dma) {
+                       dev->horkage |= ATA_HORKAGE_NO_DMA_LOG;
+                       goto retry;
+               }
+               ata_dev_err(dev, "Read log page 0x%02x failed, Emask 0x%x\n",
+                           (unsigned int)page, err_mask);
        }
 
-       DPRINTK("EXIT, err_mask=%x\n", err_mask);
        return err_mask;
 }
 
@@ -2061,12 +2063,8 @@ static bool ata_identify_page_supported(struct ata_device *dev, u8 page)
         */
        err = ata_read_log_page(dev, ATA_LOG_IDENTIFY_DEVICE, 0, ap->sector_buf,
                                1);
-       if (err) {
-               ata_dev_info(dev,
-                            "failed to get Device Identify Log Emask 0x%x\n",
-                            err);
+       if (err)
                return false;
-       }
 
        for (i = 0; i < ap->sector_buf[8]; i++) {
                if (ap->sector_buf[9 + i] == page)
@@ -2130,11 +2128,7 @@ static void ata_dev_config_ncq_send_recv(struct ata_device *dev)
        }
        err_mask = ata_read_log_page(dev, ATA_LOG_NCQ_SEND_RECV,
                                     0, ap->sector_buf, 1);
-       if (err_mask) {
-               ata_dev_dbg(dev,
-                           "failed to get NCQ Send/Recv Log Emask 0x%x\n",
-                           err_mask);
-       } else {
+       if (!err_mask) {
                u8 *cmds = dev->ncq_send_recv_cmds;
 
                dev->flags |= ATA_DFLAG_NCQ_SEND_RECV;
@@ -2160,11 +2154,7 @@ static void ata_dev_config_ncq_non_data(struct ata_device *dev)
        }
        err_mask = ata_read_log_page(dev, ATA_LOG_NCQ_NON_DATA,
                                     0, ap->sector_buf, 1);
-       if (err_mask) {
-               ata_dev_dbg(dev,
-                           "failed to get NCQ Non-Data Log Emask 0x%x\n",
-                           err_mask);
-       } else {
+       if (!err_mask) {
                u8 *cmds = dev->ncq_non_data_cmds;
 
                memcpy(cmds, ap->sector_buf, ATA_LOG_NCQ_NON_DATA_SIZE);
@@ -2181,12 +2171,8 @@ static void ata_dev_config_ncq_prio(struct ata_device *dev)
                                     ATA_LOG_SATA_SETTINGS,
                                     ap->sector_buf,
                                     1);
-       if (err_mask) {
-               ata_dev_dbg(dev,
-                           "failed to get SATA settings log, Emask 0x%x\n",
-                           err_mask);
+       if (err_mask)
                goto not_supported;
-       }
 
        if (!(ap->sector_buf[ATA_LOG_NCQ_PRIO_OFFSET] & BIT(3)))
                goto not_supported;
@@ -2347,11 +2333,8 @@ static void ata_dev_config_trusted(struct ata_device *dev)
 
        err = ata_read_log_page(dev, ATA_LOG_IDENTIFY_DEVICE, ATA_LOG_SECURITY,
                        ap->sector_buf, 1);
-       if (err) {
-               ata_dev_dbg(dev,
-                           "failed to read Security Log, Emask 0x%x\n", err);
+       if (err)
                return;
-       }
 
        trusted_cap = get_unaligned_le64(&ap->sector_buf[40]);
        if (!(trusted_cap & (1ULL << 63))) {
@@ -2440,12 +2423,8 @@ static void ata_dev_config_devslp(struct ata_device *dev)
                                     ATA_LOG_IDENTIFY_DEVICE,
                                     ATA_LOG_SATA_SETTINGS,
                                     sata_setting, 1);
-       if (err_mask) {
-               ata_dev_dbg(dev,
-                           "failed to get SATA Settings Log, Emask 0x%x\n",
-                           err_mask);
+       if (err_mask)
                return;
-       }
 
        dev->flags |= ATA_DFLAG_DEVSLP;
        for (i = 0; i < ATA_LOG_DEVSLP_SIZE; i++) {
@@ -2454,6 +2433,20 @@ static void ata_dev_config_devslp(struct ata_device *dev)
        }
 }
 
+static void ata_dev_print_features(struct ata_device *dev)
+{
+       if (!(dev->flags & ATA_DFLAG_FEATURES_MASK))
+               return;
+
+       ata_dev_info(dev,
+                    "Features:%s%s%s%s%s\n",
+                    dev->flags & ATA_DFLAG_TRUSTED ? " Trust" : "",
+                    dev->flags & ATA_DFLAG_DA ? " Dev-Attention" : "",
+                    dev->flags & ATA_DFLAG_DEVSLP ? " Dev-Sleep" : "",
+                    dev->flags & ATA_DFLAG_NCQ_SEND_RECV ? " NCQ-sndrcv" : "",
+                    dev->flags & ATA_DFLAG_NCQ_PRIO ? " NCQ-prio" : "");
+}
+
 /**
  *     ata_dev_configure - Configure the specified ATA/ATAPI device
  *     @dev: Target device to configure
@@ -2616,6 +2609,9 @@ int ata_dev_configure(struct ata_device *dev)
                ata_dev_config_zac(dev);
                ata_dev_config_trusted(dev);
                dev->cdb_len = 32;
+
+               if (ata_msg_drv(ap) && print_info)
+                       ata_dev_print_features(dev);
        }
 
        /* ATAPI-specific feature tests */