lkml.org 
[lkml]   [2007]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] Remove libsas PCI dependencies
    From
    Date
    On Thu, 2007-07-26 at 05:21 -0400, Jeff Garzik wrote:
    > Meelis Roos wrote:
    > > Tried to compile everythin SCSI on my SBus-only sparc64, including SAS
    > > supoort. Seems that libsas seems to depend on PCI - does it need to?
    > >
    > > MODPOST 446 modules
    > > ERROR: "pci_iommu_ops" [drivers/scsi/libsas/libsas.ko] undefined!
    >
    >
    > Does the attached patch fix things? 2.6.23-rc1 material, methinks.
    >
    > libsas should -not- require PCI, even though aic94xx does.

    Realistically, even for parisc, I can't see anyone producing a non-PCI
    SAS device (even though I'd like one).

    > Signed-off-by: Jeff Garzik <jeff@garzik.org>
    >
    > plain text document attachment (patch)
    > diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
    > index ab00aec..63bcde2 100644
    > --- a/drivers/scsi/aic94xx/aic94xx_init.c
    > +++ b/drivers/scsi/aic94xx/aic94xx_init.c
    > @@ -586,7 +586,7 @@ static int __devinit asd_pci_probe(struct pci_dev *dev,
    > goto Err;
    > }
    > asd_ha->pcidev = dev;
    > - asd_ha->sas_ha.pcidev = asd_ha->pcidev;
    > + asd_ha->sas_ha.dev = &asd_ha->pcidev->dev;
    > asd_ha->sas_ha.lldd_ha = asd_ha;
    >
    > asd_ha->name = asd_dev->name;
    > @@ -605,8 +605,6 @@ static int __devinit asd_pci_probe(struct pci_dev *dev,
    > goto Err_free;
    > }
    >
    > -
    > -
    > err = asd_dev->setup(asd_ha);
    > if (err)
    > goto Err_free;
    > diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
    > index ced2de3..77c4668 100644
    > --- a/drivers/scsi/libsas/sas_ata.c
    > +++ b/drivers/scsi/libsas/sas_ata.c
    > @@ -382,7 +382,7 @@ int sas_ata_init_host_and_port(struct domain_device *found_dev,
    > struct ata_port *ap;
    >
    > ata_host_init(&found_dev->sata_dev.ata_host,
    > - &ha->pcidev->dev,
    > + ha->dev,
    > sata_port_info.flags,
    > &sas_sata_ops);
    > ap = ata_sas_port_alloc(&found_dev->sata_dev.ata_host,
    > @@ -448,10 +448,10 @@ static void sas_disc_task_done(struct sas_task *task)
    > * @task: the task to be executed
    > * @buffer: pointer to buffer to do I/O
    > * @size: size of @buffer
    > - * @pci_dma_dir: PCI_DMA_...
    > + * @dma_dir: DMA direction. DMA_xxx
    > */
    > static int sas_execute_task(struct sas_task *task, void *buffer, int size,
    > - int pci_dma_dir)
    > + int dma_dir)
    > {
    > int res = 0;
    > struct scatterlist *scatter = NULL;
    > @@ -461,7 +461,7 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
    > struct sas_internal *i =
    > to_sas_internal(task->dev->port->ha->core.shost->transportt);
    >
    > - if (pci_dma_dir != PCI_DMA_NONE) {
    > + if (dma_dir != DMA_NONE) {
    > scatter = kzalloc(sizeof(*scatter), GFP_KERNEL);
    > if (!scatter)
    > goto out;
    > @@ -474,11 +474,11 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
    > task->scatter = scatter;
    > task->num_scatter = num_scatter;
    > task->total_xfer_len = size;
    > - task->data_dir = pci_dma_dir;
    > + task->data_dir = dma_dir;
    > task->task_done = sas_disc_task_done;
    > - if (pci_dma_dir != PCI_DMA_NONE &&
    > + if (dma_dir != DMA_NONE &&
    > sas_protocol_ata(task->task_proto)) {
    > - task->num_scatter = pci_map_sg(task->dev->port->ha->pcidev,
    > + task->num_scatter = dma_map_sg(task->dev->port->ha->dev,
    > task->scatter,
    > task->num_scatter,
    > task->data_dir);
    > @@ -565,9 +565,9 @@ static int sas_execute_task(struct sas_task *task, void *buffer, int size,
    > }
    > }
    > ex_err:
    > - if (pci_dma_dir != PCI_DMA_NONE) {
    > + if (dma_dir != DMA_NONE) {
    > if (sas_protocol_ata(task->task_proto))
    > - pci_unmap_sg(task->dev->port->ha->pcidev,
    > + dma_unmap_sg(task->dev->port->ha->dev,
    > task->scatter, task->num_scatter,
    > task->data_dir);
    > kfree(scatter);
    > @@ -628,11 +628,11 @@ static void sas_get_ata_command_set(struct domain_device *dev)
    > * @features: the features register
    > * @buffer: pointer to buffer to do I/O
    > * @size: size of @buffer
    > - * @pci_dma_dir: PCI_DMA_...
    > + * @dma_dir: DMA direction. DMA_xxx
    > */
    > static int sas_issue_ata_cmd(struct domain_device *dev, u8 command,
    > u8 features, void *buffer, int size,
    > - int pci_dma_dir)
    > + int dma_dir)

    This should become enum dma_data_direction if we're going to go the
    generic route.

    Otherwise, everything else looks fine.

    James


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-07-26 14:49    [W:0.044 / U:88.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site