Make vfio MSI interrupt be non-threaded.
[kvmfornfv.git] / kernel / drivers / ata / libata-transport.c
index 3227b7c..e2d9497 100644 (file)
@@ -560,6 +560,29 @@ show_ata_dev_gscr(struct device *dev,
 
 static DEVICE_ATTR(gscr, S_IRUGO, show_ata_dev_gscr, NULL);
 
+static ssize_t
+show_ata_dev_trim(struct device *dev,
+                 struct device_attribute *attr, char *buf)
+{
+       struct ata_device *ata_dev = transport_class_to_dev(dev);
+       unsigned char *mode;
+
+       if (!ata_id_has_trim(ata_dev->id))
+               mode = "unsupported";
+       else if (ata_dev->horkage & ATA_HORKAGE_NOTRIM)
+               mode = "forced_unsupported";
+       else if (ata_dev->horkage & ATA_HORKAGE_NO_NCQ_TRIM)
+                       mode = "forced_unqueued";
+       else if (ata_fpdma_dsm_supported(ata_dev))
+               mode = "queued";
+       else
+               mode = "unqueued";
+
+       return snprintf(buf, 20, "%s\n", mode);
+}
+
+static DEVICE_ATTR(trim, S_IRUGO, show_ata_dev_trim, NULL);
+
 static DECLARE_TRANSPORT_CLASS(ata_dev_class,
                               "ata_device", NULL, NULL, NULL);
 
@@ -733,6 +756,7 @@ struct scsi_transport_template *ata_attach_transport(void)
        SETUP_DEV_ATTRIBUTE(ering);
        SETUP_DEV_ATTRIBUTE(id);
        SETUP_DEV_ATTRIBUTE(gscr);
+       SETUP_DEV_ATTRIBUTE(trim);
        BUG_ON(count > ATA_DEV_ATTRS);
        i->dev_attrs[count] = NULL;