]> Git Repo - linux.git/commitdiff
Merge branch 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
authorLinus Torvalds <[email protected]>
Fri, 12 Dec 2014 02:52:37 +0000 (18:52 -0800)
committerLinus Torvalds <[email protected]>
Fri, 12 Dec 2014 02:52:37 +0000 (18:52 -0800)
Pull libata changes from Tejun Heo:
 "The only interesting piece is the support for shingled drives.  The
  changes in libata layer are minimal.  All it does is identifying the
  new class of device and report upwards accordingly"

* 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  libata: Remove FIXME comment in atapi_request_sense()
  sata_rcar: Document deprecated "renesas,rcar-sata"
  sata_rcar: Add clocks to sata_rcar bindings
  ahci_sunxi: Make AHCI_HFLAG_NO_PMP flag configurable with a module option
  libata-scsi: Update SATL for ZAC drives
  libata: Implement ATA_DEV_ZAC
  libsas: use ata_dev_classify()

1  2 
drivers/ata/libata-scsi.c
drivers/scsi/aic94xx/aic94xx_task.c
drivers/scsi/libsas/sas_ata.c
drivers/scsi/mvsas/mv_sas.c
include/linux/libata.h
include/scsi/libsas.h

index dd45c6a03e5d3d0acb6c8e33d97230c2707167ed,6a5fcf14dbc3acdee603c38c9775db43caf01293..e364e86e84d75b7d4ec8f18bba0eb4fc2b21a43c
@@@ -235,7 -235,8 +235,8 @@@ static ssize_t ata_scsi_park_store(stru
                rc = -ENODEV;
                goto unlock;
        }
-       if (dev->class != ATA_DEV_ATA) {
+       if (dev->class != ATA_DEV_ATA &&
+           dev->class != ATA_DEV_ZAC) {
                rc = -EOPNOTSUPP;
                goto unlock;
        }
@@@ -1164,7 -1165,7 +1165,7 @@@ static int ata_scsi_dev_config(struct s
  
                depth = min(sdev->host->can_queue, ata_id_queue_depth(dev->id));
                depth = min(ATA_MAX_QUEUE - 1, depth);
 -              scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, depth);
 +              scsi_change_queue_depth(sdev, depth);
        }
  
        blk_queue_flush_queueable(q, false);
@@@ -1243,17 -1244,21 +1244,17 @@@ void ata_scsi_slave_destroy(struct scsi
   *    @ap: ATA port to which the device change the queue depth
   *    @sdev: SCSI device to configure queue depth for
   *    @queue_depth: new queue depth
 - *    @reason: calling context
   *
   *    libsas and libata have different approaches for associating a sdev to
   *    its ata_port.
   *
   */
  int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
 -                           int queue_depth, int reason)
 +                           int queue_depth)
  {
        struct ata_device *dev;
        unsigned long flags;
  
 -      if (reason != SCSI_QDEPTH_DEFAULT)
 -              return -EOPNOTSUPP;
 -
        if (queue_depth < 1 || queue_depth == sdev->queue_depth)
                return sdev->queue_depth;
  
        if (sdev->queue_depth == queue_depth)
                return -EINVAL;
  
 -      scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, queue_depth);
 -      return queue_depth;
 +      return scsi_change_queue_depth(sdev, queue_depth);
  }
  
  /**
   *    ata_scsi_change_queue_depth - SCSI callback for queue depth config
   *    @sdev: SCSI device to configure queue depth for
   *    @queue_depth: new queue depth
 - *    @reason: calling context
   *
   *    This is libata standard hostt->change_queue_depth callback.
   *    SCSI will call into this callback when user tries to set queue
   *    RETURNS:
   *    Newly configured queue depth.
   */
 -int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth,
 -                              int reason)
 +int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth)
  {
        struct ata_port *ap = ata_shost_to_port(sdev->host);
  
 -      return __ata_change_queue_depth(ap, sdev, queue_depth, reason);
 +      return __ata_change_queue_depth(ap, sdev, queue_depth);
  }
  
  /**
@@@ -1961,6 -1969,7 +1962,7 @@@ static void ata_scsi_rbuf_fill(struct a
  static unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf)
  {
        const u8 versions[] = {
+               0x00,
                0x60,   /* SAM-3 (no version claimed) */
  
                0x03,
                0x02,
                0x60    /* SPC-3 (no version claimed) */
        };
+       const u8 versions_zbc[] = {
+               0x00,
+               0xA0,   /* SAM-5 (no version claimed) */
+               0x04,
+               0xC0,   /* SBC-3 (no version claimed) */
+               0x04,
+               0x60,   /* SPC-4 (no version claimed) */
+               0x60,
+               0x20,   /* ZBC (no version claimed) */
+       };
        u8 hdr[] = {
                TYPE_DISK,
                0,
        if (ata_id_removeable(args->id))
                hdr[1] |= (1 << 7);
  
+       if (args->dev->class == ATA_DEV_ZAC) {
+               hdr[0] = TYPE_ZBC;
+               hdr[2] = 0x6; /* ZBC is defined in SPC-4 */
+       }
        memcpy(rbuf, hdr, sizeof(hdr));
        memcpy(&rbuf[8], "ATA     ", 8);
        ata_id_string(args->id, &rbuf[16], ATA_ID_PROD, 16);
        if (rbuf[32] == 0 || rbuf[32] == ' ')
                memcpy(&rbuf[32], "n/a ", 4);
  
-       memcpy(rbuf + 59, versions, sizeof(versions));
+       if (args->dev->class == ATA_DEV_ZAC)
+               memcpy(rbuf + 58, versions_zbc, sizeof(versions_zbc));
+       else
+               memcpy(rbuf + 58, versions, sizeof(versions));
  
        return 0;
  }
@@@ -2564,7 -2595,6 +2588,6 @@@ static void atapi_request_sense(struct 
  
        DPRINTK("ATAPI request sense\n");
  
-       /* FIXME: is this needed? */
        memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
  
  #ifdef CONFIG_ATA_SFF
@@@ -3405,7 -3435,7 +3428,7 @@@ static inline int __ata_scsi_queuecmd(s
        ata_xlat_func_t xlat_func;
        int rc = 0;
  
-       if (dev->class == ATA_DEV_ATA) {
+       if (dev->class == ATA_DEV_ATA || dev->class == ATA_DEV_ZAC) {
                if (unlikely(!scmd->cmd_len || scmd->cmd_len > dev->cdb_len))
                        goto bad_cdb_len;
  
@@@ -3563,7 -3593,7 +3586,7 @@@ void ata_scsi_simulate(struct ata_devic
                ata_scsi_rbuf_fill(&args, ata_scsiop_read_cap);
                break;
  
 -      case SERVICE_ACTION_IN:
 +      case SERVICE_ACTION_IN_16:
                if ((scsicmd[1] & 0x1f) == SAI_READ_CAPACITY_16)
                        ata_scsi_rbuf_fill(&args, ata_scsiop_read_cap);
                else
index 5ff1ce7ba1f438a102cdd187c57c8ac8073caddb,7abbe42e862e0ae3762d88f40ba829acc83fddd9..cdd4ab683be980d4af077129434137b9910c7bbd
@@@ -373,10 -373,10 +373,10 @@@ static int asd_build_ata_ascb(struct as
  
        if (unlikely(task->ata_task.device_control_reg_update))
                scb->header.opcode = CONTROL_ATA_DEV;
-       else if (dev->sata_dev.command_set == ATA_COMMAND_SET)
-               scb->header.opcode = INITIATE_ATA_TASK;
-       else
+       else if (dev->sata_dev.class == ATA_DEV_ATAPI)
                scb->header.opcode = INITIATE_ATAPI_TASK;
+       else
+               scb->header.opcode = INITIATE_ATA_TASK;
  
        scb->ata_task.proto_conn_rate = (1 << 5); /* STP */
        if (dev->port->oob_mode == SAS_OOB_MODE)
        if (likely(!task->ata_task.device_control_reg_update))
                scb->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */
        scb->ata_task.fis.flags &= 0xF0; /* PM_PORT field shall be 0 */
-       if (dev->sata_dev.command_set == ATAPI_COMMAND_SET)
+       if (dev->sata_dev.class == ATA_DEV_ATAPI)
                memcpy(scb->ata_task.atapi_packet, task->ata_task.atapi_packet,
                       16);
        scb->ata_task.sister_scb = cpu_to_le16(0xFFFF);
                if (task->ata_task.dma_xfer)
                        flags |= DATA_XFER_MODE_DMA;
                if (task->ata_task.use_ncq &&
-                   dev->sata_dev.command_set != ATAPI_COMMAND_SET)
+                   dev->sata_dev.class != ATA_DEV_ATAPI)
                        flags |= ATA_Q_TYPE_NCQ;
                flags |= data_dir_flags[task->data_dir];
                scb->ata_task.ata_flags = flags;
@@@ -543,7 -543,8 +543,7 @@@ static int asd_can_queue(struct asd_ha_
        return res;
  }
  
 -int asd_execute_task(struct sas_task *task, const int num,
 -                   gfp_t gfp_flags)
 +int asd_execute_task(struct sas_task *task, gfp_t gfp_flags)
  {
        int res = 0;
        LIST_HEAD(alist);
        struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha;
        unsigned long flags;
  
 -      res = asd_can_queue(asd_ha, num);
 +      res = asd_can_queue(asd_ha, 1);
        if (res)
                return res;
  
 -      res = num;
 +      res = 1;
        ascb = asd_ascb_alloc_list(asd_ha, &res, gfp_flags);
        if (res) {
                res = -ENOMEM;
        list_for_each_entry(a, &alist, list) {
                a->uldd_task = t;
                t->lldd_task = a;
 -              t = list_entry(t->list.next, struct sas_task, list);
 +              break;
        }
        list_for_each_entry(a, &alist, list) {
                t = a->uldd_task;
        }
        list_del_init(&alist);
  
 -      res = asd_post_ascb_list(asd_ha, ascb, num);
 +      res = asd_post_ascb_list(asd_ha, ascb, 1);
        if (unlikely(res)) {
                a = NULL;
                __list_add(&alist, ascb->list.prev, &ascb->list);
@@@ -638,6 -639,6 +638,6 @@@ out_err_unmap
  out_err:
        if (ascb)
                asd_ascb_free_list(ascb);
 -      asd_can_dequeue(asd_ha, num);
 +      asd_can_dequeue(asd_ha, 1);
        return res;
  }
index 577770fdee8673aadb3ce1d62b308d52018e87f7,9f68db7ed5f198593a4b1b510655bf9ecf62b429..932d9cc98d2fc807c4ef0e7715fe922803bbc29c
@@@ -138,7 -138,7 +138,7 @@@ static void sas_ata_task_done(struct sa
  
        if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD ||
            ((stat->stat == SAM_STAT_CHECK_CONDITION &&
-             dev->sata_dev.command_set == ATAPI_COMMAND_SET))) {
+             dev->sata_dev.class == ATA_DEV_ATAPI))) {
                memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE);
  
                if (!link->sactive) {
        spin_unlock_irqrestore(ap->lock, flags);
  
  qc_already_gone:
 -      list_del_init(&task->list);
        sas_free_task(task);
  }
  
@@@ -243,7 -244,12 +243,7 @@@ static unsigned int sas_ata_qc_issue(st
        if (qc->scsicmd)
                ASSIGN_SAS_TASK(qc->scsicmd, task);
  
 -      if (sas_ha->lldd_max_execute_num < 2)
 -              ret = i->dft->lldd_execute_task(task, 1, GFP_ATOMIC);
 -      else
 -              ret = sas_queue_up(task);
 -
 -      /* Examine */
 +      ret = i->dft->lldd_execute_task(task, GFP_ATOMIC);
        if (ret) {
                SAS_DPRINTK("lldd_execute_task returned: %d\n", ret);
  
@@@ -272,7 -278,7 +272,7 @@@ static struct sas_internal *dev_to_sas_
        return to_sas_internal(dev->port->ha->core.shost->transportt);
  }
  
- static void sas_get_ata_command_set(struct domain_device *dev);
+ static int sas_get_ata_command_set(struct domain_device *dev);
  
  int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
  {
                }
                memcpy(dev->frame_rcvd, &dev->sata_dev.rps_resp.rps.fis,
                       sizeof(struct dev_to_host_fis));
-               /* TODO switch to ata_dev_classify() */
-               sas_get_ata_command_set(dev);
+               dev->sata_dev.class = sas_get_ata_command_set(dev);
        }
        return 0;
  }
@@@ -419,18 -424,7 +418,7 @@@ static int sas_ata_hard_reset(struct at
        if (ret && ret != -EAGAIN)
                sas_ata_printk(KERN_ERR, dev, "reset failed (errno=%d)\n", ret);
  
-       /* XXX: if the class changes during the reset the upper layer
-        * should be informed, if the device has gone away we assume
-        * libsas will eventually delete it
-        */
-       switch (dev->sata_dev.command_set) {
-       case ATA_COMMAND_SET:
-               *class = ATA_DEV_ATA;
-               break;
-       case ATAPI_COMMAND_SET:
-               *class = ATA_DEV_ATAPI;
-               break;
-       }
+       *class = dev->sata_dev.class;
  
        ap->cbl = ATA_CBL_SATA;
        return ret;
@@@ -479,6 -473,7 +467,6 @@@ static void sas_ata_internal_abort(stru
  
        return;
   out:
 -      list_del_init(&task->list);
        sas_free_task(task);
  }
  
@@@ -619,50 -614,18 +607,18 @@@ void sas_ata_task_abort(struct sas_tas
        complete(waiting);
  }
  
- static void sas_get_ata_command_set(struct domain_device *dev)
+ static int sas_get_ata_command_set(struct domain_device *dev)
  {
        struct dev_to_host_fis *fis =
                (struct dev_to_host_fis *) dev->frame_rcvd;
+       struct ata_taskfile tf;
  
        if (dev->dev_type == SAS_SATA_PENDING)
-               return;
+               return ATA_DEV_UNKNOWN;
+       ata_tf_from_fis((const u8 *)fis, &tf);
  
-       if ((fis->sector_count == 1 && /* ATA */
-            fis->lbal         == 1 &&
-            fis->lbam         == 0 &&
-            fis->lbah         == 0 &&
-            fis->device       == 0)
-           ||
-           (fis->sector_count == 0 && /* CE-ATA (mATA) */
-            fis->lbal         == 0 &&
-            fis->lbam         == 0xCE &&
-            fis->lbah         == 0xAA &&
-            (fis->device & ~0x10) == 0))
-               dev->sata_dev.command_set = ATA_COMMAND_SET;
-       else if ((fis->interrupt_reason == 1 && /* ATAPI */
-                 fis->lbal             == 1 &&
-                 fis->byte_count_low   == 0x14 &&
-                 fis->byte_count_high  == 0xEB &&
-                 (fis->device & ~0x10) == 0))
-               dev->sata_dev.command_set = ATAPI_COMMAND_SET;
-       else if ((fis->sector_count == 1 && /* SEMB */
-                 fis->lbal         == 1 &&
-                 fis->lbam         == 0x3C &&
-                 fis->lbah         == 0xC3 &&
-                 fis->device       == 0)
-               ||
-                (fis->interrupt_reason == 1 && /* SATA PM */
-                 fis->lbal             == 1 &&
-                 fis->byte_count_low   == 0x69 &&
-                 fis->byte_count_high  == 0x96 &&
-                 (fis->device & ~0x10) == 0))
-               /* Treat it as a superset? */
-               dev->sata_dev.command_set = ATAPI_COMMAND_SET;
+       return ata_dev_classify(&tf);
  }
  
  void sas_probe_sata(struct asd_sas_port *port)
@@@ -768,7 -731,7 +724,7 @@@ int sas_discover_sata(struct domain_dev
        if (dev->dev_type == SAS_SATA_PM)
                return -ENODEV;
  
-       sas_get_ata_command_set(dev);
+       dev->sata_dev.class = sas_get_ata_command_set(dev);
        sas_fill_in_rphy(dev, dev->rphy);
  
        res = sas_notify_lldd_dev_found(dev);
index 85d86a5cdb60ecf708e49169f19bde250c7cba0b,48a493cd285ab79147bef18e451599baa792e507..2d5ab6d969ec945898f81202bd6fef83ef1d8ba9
@@@ -479,7 -479,7 +479,7 @@@ static int mvs_task_prep_ata(struct mvs
  
        if (task->ata_task.use_ncq)
                flags |= MCH_FPDMA;
-       if (dev->sata_dev.command_set == ATAPI_COMMAND_SET) {
+       if (dev->sata_dev.class == ATA_DEV_ATAPI) {
                if (task->ata_task.fis.command != ATA_CMD_ID_ATAPI)
                        flags |= MCH_ATAPI;
        }
                task->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */
        /* fill in command FIS and ATAPI CDB */
        memcpy(buf_cmd, &task->ata_task.fis, sizeof(struct host_to_dev_fis));
-       if (dev->sata_dev.command_set == ATAPI_COMMAND_SET)
+       if (dev->sata_dev.class == ATA_DEV_ATAPI)
                memcpy(buf_cmd + STP_ATAPI_CMD,
                        task->ata_task.atapi_packet, 16);
  
@@@ -852,7 -852,43 +852,7 @@@ prep_out
        return rc;
  }
  
 -static struct mvs_task_list *mvs_task_alloc_list(int *num, gfp_t gfp_flags)
 -{
 -      struct mvs_task_list *first = NULL;
 -
 -      for (; *num > 0; --*num) {
 -              struct mvs_task_list *mvs_list = kmem_cache_zalloc(mvs_task_list_cache, gfp_flags);
 -
 -              if (!mvs_list)
 -                      break;
 -
 -              INIT_LIST_HEAD(&mvs_list->list);
 -              if (!first)
 -                      first = mvs_list;
 -              else
 -                      list_add_tail(&mvs_list->list, &first->list);
 -
 -      }
 -
 -      return first;
 -}
 -
 -static inline void mvs_task_free_list(struct mvs_task_list *mvs_list)
 -{
 -      LIST_HEAD(list);
 -      struct list_head *pos, *a;
 -      struct mvs_task_list *mlist = NULL;
 -
 -      __list_add(&list, mvs_list->list.prev, &mvs_list->list);
 -
 -      list_for_each_safe(pos, a, &list) {
 -              list_del_init(pos);
 -              mlist = list_entry(pos, struct mvs_task_list, list);
 -              kmem_cache_free(mvs_task_list_cache, mlist);
 -      }
 -}
 -
 -static int mvs_task_exec(struct sas_task *task, const int num, gfp_t gfp_flags,
 +static int mvs_task_exec(struct sas_task *task, gfp_t gfp_flags,
                                struct completion *completion, int is_tmf,
                                struct mvs_tmf_task *tmf)
  {
        return rc;
  }
  
 -static int mvs_collector_task_exec(struct sas_task *task, const int num, gfp_t gfp_flags,
 -                              struct completion *completion, int is_tmf,
 -                              struct mvs_tmf_task *tmf)
 -{
 -      struct domain_device *dev = task->dev;
 -      struct mvs_prv_info *mpi = dev->port->ha->lldd_ha;
 -      struct mvs_info *mvi = NULL;
 -      struct sas_task *t = task;
 -      struct mvs_task_list *mvs_list = NULL, *a;
 -      LIST_HEAD(q);
 -      int pass[2] = {0};
 -      u32 rc = 0;
 -      u32 n = num;
 -      unsigned long flags = 0;
 -
 -      mvs_list = mvs_task_alloc_list(&n, gfp_flags);
 -      if (n) {
 -              printk(KERN_ERR "%s: mvs alloc list failed.\n", __func__);
 -              rc = -ENOMEM;
 -              goto free_list;
 -      }
 -
 -      __list_add(&q, mvs_list->list.prev, &mvs_list->list);
 -
 -      list_for_each_entry(a, &q, list) {
 -              a->task = t;
 -              t = list_entry(t->list.next, struct sas_task, list);
 -      }
 -
 -      list_for_each_entry(a, &q , list) {
 -
 -              t = a->task;
 -              mvi = ((struct mvs_device *)t->dev->lldd_dev)->mvi_info;
 -
 -              spin_lock_irqsave(&mvi->lock, flags);
 -              rc = mvs_task_prep(t, mvi, is_tmf, tmf, &pass[mvi->id]);
 -              if (rc)
 -                      dev_printk(KERN_ERR, mvi->dev, "mvsas exec failed[%d]!\n", rc);
 -              spin_unlock_irqrestore(&mvi->lock, flags);
 -      }
 -
 -      if (likely(pass[0]))
 -                      MVS_CHIP_DISP->start_delivery(mpi->mvi[0],
 -                              (mpi->mvi[0]->tx_prod - 1) & (MVS_CHIP_SLOT_SZ - 1));
 -
 -      if (likely(pass[1]))
 -                      MVS_CHIP_DISP->start_delivery(mpi->mvi[1],
 -                              (mpi->mvi[1]->tx_prod - 1) & (MVS_CHIP_SLOT_SZ - 1));
 -
 -      list_del_init(&q);
 -
 -free_list:
 -      if (mvs_list)
 -              mvs_task_free_list(mvs_list);
 -
 -      return rc;
 -}
 -
 -int mvs_queue_command(struct sas_task *task, const int num,
 -                      gfp_t gfp_flags)
 +int mvs_queue_command(struct sas_task *task, gfp_t gfp_flags)
  {
 -      struct mvs_device *mvi_dev = task->dev->lldd_dev;
 -      struct sas_ha_struct *sas = mvi_dev->mvi_info->sas;
 -
 -      if (sas->lldd_max_execute_num < 2)
 -              return mvs_task_exec(task, num, gfp_flags, NULL, 0, NULL);
 -      else
 -              return mvs_collector_task_exec(task, num, gfp_flags, NULL, 0, NULL);
 +      return mvs_task_exec(task, gfp_flags, NULL, 0, NULL);
  }
  
  static void mvs_slot_free(struct mvs_info *mvi, u32 rx_desc)
@@@ -1310,7 -1411,7 +1310,7 @@@ static int mvs_exec_internal_tmf_task(s
                task->slow_task->timer.expires = jiffies + MVS_TASK_TIMEOUT*HZ;
                add_timer(&task->slow_task->timer);
  
 -              res = mvs_task_exec(task, 1, GFP_KERNEL, NULL, 1, tmf);
 +              res = mvs_task_exec(task, GFP_KERNEL, NULL, 1, tmf);
  
                if (res) {
                        del_timer(&task->slow_task->timer);
diff --combined include/linux/libata.h
index bfbc817c34eee29be2749f2b7ab39f8b0d657ca8,a26daea7f5ebd42f816d1533e7b08676725b6fcf..2d182413b1db5bbf3b9afa2c15dd674d2b817b4e
@@@ -191,7 -191,8 +191,8 @@@ enum 
        ATA_DEV_PMP_UNSUP       = 6,    /* SATA port multiplier (unsupported) */
        ATA_DEV_SEMB            = 7,    /* SEMB */
        ATA_DEV_SEMB_UNSUP      = 8,    /* SEMB (unsupported) */
-       ATA_DEV_NONE            = 9,    /* no device */
+       ATA_DEV_ZAC             = 9,    /* ZAC device */
+       ATA_DEV_NONE            = 10,   /* no device */
  
        /* struct ata_link flags */
        ATA_LFLAG_NO_HRST       = (1 << 1), /* avoid hardreset */
@@@ -1191,9 -1192,9 +1192,9 @@@ extern void ata_scsi_unlock_native_capa
  extern int ata_scsi_slave_config(struct scsi_device *sdev);
  extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
  extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
 -                                     int queue_depth, int reason);
 +                                     int queue_depth);
  extern int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
 -                                  int queue_depth, int reason);
 +                                  int queue_depth);
  extern struct ata_device *ata_dev_pair(struct ata_device *adev);
  extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
  extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
@@@ -1491,7 -1492,8 +1492,8 @@@ static inline unsigned int ata_tag_inte
  static inline unsigned int ata_class_enabled(unsigned int class)
  {
        return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI ||
-               class == ATA_DEV_PMP || class == ATA_DEV_SEMB;
+               class == ATA_DEV_PMP || class == ATA_DEV_SEMB ||
+               class == ATA_DEV_ZAC;
  }
  
  static inline unsigned int ata_class_disabled(unsigned int class)
diff --combined include/scsi/libsas.h
index 832dcc9f86ec9d7e2eef96a42de942a6d30cc679,8528a09a00c46674deb289e21922fa14f85d8b8d..9d87a37aecad20f1a2aeaaa9cddb929a589d3440
@@@ -161,17 -161,12 +161,12 @@@ struct expander_device 
  };
  
  /* ---------- SATA device ---------- */
- enum ata_command_set {
-         ATA_COMMAND_SET   = 0,
-         ATAPI_COMMAND_SET = 1,
- };
  #define ATA_RESP_FIS_SIZE 24
  
  struct sata_device {
-         enum   ata_command_set command_set;
-         struct smp_resp        rps_resp; /* report_phy_sata_resp */
-         u8     port_no;        /* port number, if this is a PM (Port) */
+       unsigned int class;
+       struct smp_resp        rps_resp; /* report_phy_sata_resp */
+       u8     port_no;        /* port number, if this is a PM (Port) */
  
        struct ata_port *ap;
        struct ata_host ata_host;
@@@ -365,6 -360,12 +360,6 @@@ struct asd_sas_phy 
  struct scsi_core {
        struct Scsi_Host *shost;
  
 -      struct mutex      task_queue_flush;
 -      spinlock_t        task_queue_lock;
 -      struct list_head  task_queue;
 -      int               task_queue_size;
 -
 -      struct task_struct *queue_thread;
  };
  
  struct sas_ha_event {
@@@ -416,6 -417,9 +411,6 @@@ struct sas_ha_struct 
        struct asd_sas_port **sas_port; /* array of valid pointers, must be set */
        int             num_phys; /* must be set, gt 0, static */
  
 -      /* The class calls this to send a task for execution. */
 -      int lldd_max_execute_num;
 -      int lldd_queue_size;
        int strict_wide_ports; /* both sas_addr and attached_sas_addr must match
                                * their siblings when forming wide ports */
  
@@@ -603,6 -607,7 +598,6 @@@ struct sas_ssp_task 
  
  struct sas_task {
        struct domain_device *dev;
 -      struct list_head      list;
  
        spinlock_t   task_state_lock;
        unsigned     task_state_flags;
@@@ -655,7 -660,8 +650,7 @@@ struct sas_domain_function_template 
        int  (*lldd_dev_found)(struct domain_device *);
        void (*lldd_dev_gone)(struct domain_device *);
  
 -      int (*lldd_execute_task)(struct sas_task *, int num,
 -                               gfp_t gfp_flags);
 +      int (*lldd_execute_task)(struct sas_task *, gfp_t gfp_flags);
  
        /* Task Management Functions. Must be called from process context. */
        int (*lldd_abort_task)(struct sas_task *);
@@@ -689,10 -695,12 +684,10 @@@ extern void sas_suspend_ha(struct sas_h
  int sas_set_phy_speed(struct sas_phy *phy,
                      struct sas_phy_linkrates *rates);
  int sas_phy_reset(struct sas_phy *phy, int hard_reset);
 -int sas_queue_up(struct sas_task *task);
  extern int sas_queuecommand(struct Scsi_Host * ,struct scsi_cmnd *);
  extern int sas_target_alloc(struct scsi_target *);
  extern int sas_slave_configure(struct scsi_device *);
 -extern int sas_change_queue_depth(struct scsi_device *, int new_depth,
 -                                int reason);
 +extern int sas_change_queue_depth(struct scsi_device *, int new_depth);
  extern int sas_change_queue_type(struct scsi_device *, int qt);
  extern int sas_bios_param(struct scsi_device *,
                          struct block_device *,
This page took 0.17662 seconds and 4 git commands to generate.