kernel: update 3.18 to 3.18.16
[openwrt.git] / target / linux / oxnas / patches-3.18 / 999-libata-hacks.patch
index 39d9e51..702a336 100644 (file)
@@ -1,14 +1,12 @@
-Index: linux-3.18-rc7/drivers/ata/libata-core.c
-===================================================================
---- linux-3.18-rc7.orig/drivers/ata/libata-core.c
-+++ linux-3.18-rc7/drivers/ata/libata-core.c
-@@ -1568,6 +1568,14 @@ unsigned ata_exec_internal_sg(struct ata
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -1581,6 +1581,14 @@ unsigned ata_exec_internal_sg(struct ata
                return AC_ERR_SYSTEM;
        }
  
-+      if (ap->ops->acquire_hw && !ap->ops->acquire_hw(ap->port_no, 0, 0)) {
++      if (ap->ops->acquire_hw && !ap->ops->acquire_hw(ap, 0, 0)) {
 +              spin_unlock_irqrestore(ap->lock, flags);
-+              if (!ap->ops->acquire_hw(ap->port_no, 1, (2*HZ))) {
++              if (!ap->ops->acquire_hw(ap, 1, (2*HZ))) {
 +                      return AC_ERR_TIMEOUT;
 +              }
 +              spin_lock_irqsave(ap->lock, flags);
@@ -17,7 +15,7 @@ Index: linux-3.18-rc7/drivers/ata/libata-core.c
        /* initialize internal qc */
  
        /* XXX: Tag 0 is used for drivers with legacy EH as some
-@@ -4739,6 +4747,9 @@ static struct ata_queued_cmd *ata_qc_new
+@@ -4752,6 +4760,9 @@ static struct ata_queued_cmd *ata_qc_new
        if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
                return NULL;
  
@@ -25,9 +23,9 @@ Index: linux-3.18-rc7/drivers/ata/libata-core.c
 +              return NULL;
 +
        for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
-               tag = tag < max_queue ? tag : 0;
-@@ -4805,6 +4816,8 @@ void ata_qc_free(struct ata_queued_cmd *
+               if (ap->flags & ATA_FLAG_LOWTAG)
+                       tag = i;
+@@ -4824,6 +4835,8 @@ void ata_qc_free(struct ata_queued_cmd *
        if (likely(ata_tag_valid(tag))) {
                qc->tag = ATA_TAG_POISON;
                clear_bit(tag, &ap->qc_allocated);
@@ -36,11 +34,9 @@ Index: linux-3.18-rc7/drivers/ata/libata-core.c
        }
  }
  
-Index: linux-3.18-rc7/include/linux/libata.h
-===================================================================
---- linux-3.18-rc7.orig/include/linux/libata.h
-+++ linux-3.18-rc7/include/linux/libata.h
-@@ -884,6 +884,8 @@ struct ata_port_operations {
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -900,6 +900,8 @@ struct ata_port_operations {
        void (*qc_prep)(struct ata_queued_cmd *qc);
        unsigned int (*qc_issue)(struct ata_queued_cmd *qc);
        bool (*qc_fill_rtf)(struct ata_queued_cmd *qc);
@@ -49,11 +45,12 @@ Index: linux-3.18-rc7/include/linux/libata.h
  
        /*
         * Configuration and exception handling
-@@ -974,6 +976,8 @@ struct ata_port_operations {
+@@ -990,6 +992,9 @@ struct ata_port_operations {
        void (*phy_reset)(struct ata_port *ap);
        void (*eng_timeout)(struct ata_port *ap);
  
-+      int (*acquire_hw)(int port_no, int may_sleep, int timeout_jiffies);
++      int (*acquire_hw)(struct ata_port *ap, int may_sleep,
++                        int timeout_jiffies);
 +
        /*
         * ->inherits must be the last field and all the preceding