summaryrefslogtreecommitdiff
path: root/drivers/scsi/sata_mv.c
AgeCommit message (Collapse)AuthorFilesLines
2006-06-11Merge branch 'upstream-fixes' into upstreamJeff Garzik1-0/+3
Conflicts: drivers/scsi/sata_sil24.c
2006-06-11[PATCH] sata_mv: grab host lock inside eng_timeoutMark Lord1-0/+3
Bug fix: mv_eng_timeout() calls mv_err_intr() without first grabbing the host lock, which can lead to all sorts of interesting scenarios. This whole error-handling portion of sata_mv is nasty (and will get fixed for the new EH stuff), but for now this patch will help keep it on life-support. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-31[PATCH] libata-hp: hook warmplugTejun Heo1-0/+1
Hook transportt->user_scan() and hostt->slave_destroy(). Signed-off-by: Tejun Heo <htejun@gmail.com>
2006-05-24[PATCH] sata_mv: endian annotationsMark Lord1-18/+18
Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-24[PATCH] PATCH: libata. Add ->data_xfer methodAlan Cox1-0/+2
We need to pass the device in order to do per device checks such as 32bit I/O enables. With the changes to include dev->ap we now don't have to add parameters however just clean them up. Also add data_xfer methods to the existing drivers except ata_piix (which is in the other block of patches). If you reject the piix one just add a data_xfer to it... Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-24[libata] libata-scsi, sata_mv: trim trailing whitespaceJeff Garzik1-1/+1
2006-05-24[PATCH] libata: minor fix for irq-pio mergeAlbert Lee1-1/+1
Minor fix to put the ATA_FLAG_NO_ATAPI flag back. Signed-off-by: Albert Lee <albertcc@tw.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20Merge branch 'upstream-fixes' into upstreamJeff Garzik1-57/+77
Conflicts: drivers/scsi/libata-core.c
2006-05-20[PATCH] sata_mv: version bumpMark Lord1-1/+1
Increment the version number inside sata_mv.c. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: endian fixMark Lord1-1/+2
This fixes a byte-swap issue on PPC, found by Zang Roy-r61911 on the powerpc platform. His original patch also had some other platform-specific changes in #ifdef's, but I'm not sure yet how to incorporate them. Look for another patch for those (soon). Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: remove local copy of queue indexesMark Lord1-43/+33
The driver currently keeps local copies of the hardware request/response queue indexes. But it expends significant effort ensuring consistency between the two views, and still gets it wrong after an error or reset occurs. This patch removes the local copies, in favour of just accessing the hardware whenever we need them. Eventually this may need to be tweaked again for NCQ, but for now this works and solves problems some users were seeing. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: spurious interrupt workaroundMark Lord1-3/+8
The 60xx chips, and possibly others, incorrectly assert DEV_IRQ interrupts on a regular basis. The cause of this is under investigation (by me and in theory by Marvell also), but regardless we do need to deal with these events. This patch tidies up some interrupt handler code, and ensures that we ignore DEV_IRQ interrupts when the drive still has ATA_BUSY asserted. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: chip initialization fixesMark Lord1-2/+5
The interface control register of the 60xx (and later) Marvell chip requires certain bits to always be set when writing to it. These bits incorrectly read-back as zeros, so the pattern must be ORed in with each write of the register. Also, bit 12 should NOT be set (note that Marvell's own driver also had bit-12 wrong here). While we're at it, we also now do pci_set_master() in the init code. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: deal with interrupt coalescing interruptsMark Lord1-0/+18
In some systems, it is possible that the BIOS may have enabled interrupt coalescing for the Marvell controllers which support it. This patch adds code to detect/ack interrupts from the chip's coalescing (combing) logic. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-20[PATCH] sata_mv: prevent unnecessary double-resetsMark Lord1-7/+10
The mv_err_intr() function is invoked from the driver's interrupt handler, as well as from the timeout function. This patch prevents it from triggering a one-after-the-other double reset of the controller when invoked from the timeout function. This also adds a check for a timeout race condition that has been observed to occur with this driver in earlier kernels. This should not be needed, in theory, but in practice it has caught bugs. Maybe nuke it at a later date. Signed-off-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-05-15Merge branch 'irq-pio'Tejun Heo1-3/+3
Conflicts: drivers/scsi/libata-core.c include/linux/libata.h
2006-05-15[PATCH] libata: use ATA printk helpersTejun Heo1-4/+4
Use ATA printk helpers. Signed-off-by: Tejun Heo <htejun@gmail.com>
2006-05-15[PATCH] libata: use new SCR and on/offline functionsTejun Heo1-7/+9
Use new SCR and on/offline functions. Note that for LLDD which know it implements SCR callbacks, SCR functions are guaranteed to succeed and ata_port_online() == !ata_port_offline(). Signed-off-by: Tejun Heo <htejun@gmail.com>
2006-04-18Merge branch 'upstream'Jeff Garzik1-1/+1
2006-04-18Merge branch 'master'Jeff Garzik1-1/+1
2006-04-12[PATCH] sata_mv: properly print HC registersDan Aloni1-1/+1
Currently it crashes when trying to dump the registers. This is an obvious one-liner fix I suppose. Signed-off-by: Dan Aloni <da-x@monatomic.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-12Merge branch 'upstream'Jeff Garzik1-1/+0
2006-04-11Merge branch 'master'Jeff Garzik1-1/+0
Conflicts: drivers/scsi/libata-scsi.c include/linux/libata.h
2006-04-10[libata] sata_mv: fix can_queue line accidentally removed in scsi-eh patchJeff Garzik1-0/+1
2006-04-10[PATCH] move ->eh_strategy_handler to the transport classChristoph Hellwig1-2/+0
Overriding the whole EH code is a per-transport, not per-host thing. Move ->eh_strategy_handler to the transport class, same as ->eh_timed_out. Downside is that scsi_host_alloc can't check for the total lack of EH anymore, but the transition period from old EH where we needed it is long gone already. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-02Merge branch 'upstream'Jeff Garzik1-1/+1
Conflicts: drivers/scsi/libata-core.c drivers/scsi/pdc_adma.c drivers/scsi/sata_mv.c drivers/scsi/sata_nv.c drivers/scsi/sata_promise.c drivers/scsi/sata_qstor.c drivers/scsi/sata_sx4.c drivers/scsi/sata_vsc.c include/linux/libata.h
2006-04-02[PATCH] libata: rename ATA_FLAG_PORT_DISABLED to ATA_FLAG_DISABLEDTejun Heo1-1/+1
Rename ATA_FLAG_PORT_DISABLED to ATA_FLAG_DISABLED for consistency. (ATA_FLAG_* are always about ports). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-04-01Merge branch 'upstream'Jeff Garzik1-1/+1
2006-04-01[PATCH] libata: implement ata_dev_enabled and disabled()Tejun Heo1-1/+1
This patch renames ata_dev_present() to ata_dev_enabled() and adds ata_dev_disabled(). This is to discern the state where a device is present but disabled from not-present state. This disctinction is necessary when configuring transfer mode because device selection timing must not be violated even if a device fails to configure. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-29Merge branch 'upstream'Jeff Garzik1-16/+23
Conflicts: drivers/scsi/sata_mv.c
2006-03-29Merge branch 'mv-merge'Jeff Garzik1-18/+24
Conflicts: drivers/scsi/sata_mv.c
2006-03-29[PATCH] sata_mv: three bug fixesMark Lord1-18/+23
(1) A DMA transfer size of 0x10000 was not being written as 0x0000 in the PRDs. Fixed. (1) The DEV_IRQ interrupt cause bit happens spuriously during EDMA operation, and was not being ignored by the driver. This led to various "drive busy" errors being reported, with associated unpredictable behaviour. Fixed. (2) If a SATA or PCI interrupt was received with no outstanding command, the interrupt handler still attempted to invoke ata_qc_complete(), triggering assert()/BUG_ON() behaviour elsewhere in libata. Fixed. The driver still has issues with confusion after error-recovery, but should now be reliable in the absence of drive errors. I will be looking more into the error-handling bugs next. Signed-Off-By: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-24Merge branch 'upstream'Jeff Garzik1-3/+5
Conflicts: drivers/scsi/sata_vsc.c
2006-03-22Merge branch 'master'Jeff Garzik1-1/+0
2006-03-21[libata] sata_mv: off-by-1 fixMark Lord1-1/+4
This patch addresses a number of weird behaviours observed for the sata_mv driver, by fixing an "off by one" bug in processing of the EDMA response queue. Basically, sata_mv was looking in the wrong place for command results, and this produced a lot of unpredictable behaviour. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-03-21[SCSI] libata: implement minimal transport template for ->eh_timed_outTejun Heo1-1/+0
SCSI midlayer has moved hostt->eh_timed_out to transport template. As libata doesn't need full-blown transport support yet, implement minimal transport for libata. No transport class or whatsoever, just empty transport template with ->eh_timed_out hook. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
2006-03-20[libata] sata_mv: fix irq port status usageJeff Garzik1-1/+1
Interrupt handler did not properly initialize a variable on a per-port basis, leading to incorrect behavior on ports other than port 0. Bug caught and fixed by Mark Lord. Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-02-20Merge branch 'upstream'Jeff Garzik1-0/+1
2006-02-20Merge branch 'master'Jeff Garzik1-0/+1
2006-02-17[PATCH] Add missing FUA write to sata_mv dma command listJens Axboe1-0/+1
Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-13Merge branch 'upstream'Jeff Garzik1-1/+0
2006-02-12[PATCH] libata: kill sht->max_sectorsTejun Heo1-1/+0
The previous dev->max_sectors patch made sht->max_sectors meaningless. Kill all initializations of sht->max_sectors. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-11Merge branch 'upstream'Jeff Garzik1-25/+25
2006-02-11[PATCH] libata: convert assert(xxx)'s in low-level drivers to WARN_ON(!xxx)'sTejun Heo1-25/+25
This patch converts all assert(xxx)'s in low-level drivers to WARN_ON(!xxx)'s. After this patch, there is no in-kernel user of the libata assert() macro. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-10Merge branch 'upstream'Jeff Garzik1-7/+3
2006-02-10[PATCH] libata: kill NULL qc handling from ->eng_timeout callbacksTejun Heo1-7/+2
->eng_timeout cannot be invoked with NULL qc anymore. Add an assertion in ata_scsi_error() and kill NULL qc handling from all ->eng_timeout callbacks. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-10[PATCH] libata: use ata_scsi_timed_out()Tejun Heo1-0/+1
Make all libata low level drivers use ata_scsi_timed_out(). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2006-02-09Merge branch 'upstream'Jeff Garzik1-13/+210
2006-02-02Merge branch 'upstream-fixes'Jeff Garzik1-1/+10
2006-02-02[libata sata_mv] do not enable PCI MSI by defaultJeff Garzik1-1/+10
Several bug reports have come in, noting that disabling CONFIG_PCI_MSI has fixed their problems with this driver. This may be generic system issues, but there is also the probability of unimplemented hardware errata workarounds. Until this ream of bug reports is sorted out, we can get them going in non-MSI interrupt mode. As such, this change adds an 'msi' module option, which defaults to off.