summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-scsi.c
AgeCommit message (Collapse)Author
2005-10-30Merge branch 'upstream'Jeff Garzik
2005-10-30[libata] locking rewrite (== fix)Jeff Garzik
A lot of power packed into a little patch. This change eliminates the sharing between our controller-wide spinlock and the SCSI core's Scsi_Host lock. As the locking in libata was already highly compartmentalized, always referencing our own lock, and never scsi_host::host_lock. As a side effect, this change eliminates a deadlock from calling scsi_finish_command() while inside our spinlock.
2005-10-30Merge branch 'upstream'Jeff Garzik
2005-10-30[libata] change ata_qc_complete() to take error mask as second argJeff Garzik
The second argument to ata_qc_complete() was being used for two purposes: communicate the ATA Status register to the completion function, and indicate an error. On legacy PCI IDE hardware, the latter is often implicit in the former. On more modern hardware, the driver often completely emulated a Status register value, passing ATA_ERR as an indication that something went wrong. Now that previous code changes have eliminated the need to use drv_stat arg to communicate the ATA Status register value, we can convert it to a mask of possible error classes. This will lead to more flexible error handling in the future.
2005-10-28Merge branch 'upstream'Jeff Garzik
2005-10-28[libata scsi] MODE SELECT, strengthen mode senseDouglas Gilbert
- move default mode pages to the front of libata-scsi.c so various functions can access them - partial annotation of these pages, point out divergence from sat-r06 - replace various mode page magic numbers with defines - strengthen MODE SENSE command decoding: handle DBD bit in cdb, yield block descriptor (per sat-r06) and handle mode sub pages Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-28Merge branch 'master'Jeff Garzik
2005-10-28Merge branch 'master'Jeff Garzik
2005-10-22libata: const-ification bombing runJeff Garzik
Enforce access rules where appropriate. If the compiler is smart enough, this may buy us an optimization or two as a side effect.
2005-10-18Merge branch 'upstream'Jeff Garzik
2005-10-18Merge branch 'upstream'Jeff Garzik
2005-10-18[PATCH] libata CHS: calculate read/write commands and protocol on the fly ↵Albert Lee
(revise #6) - merge ata_prot_to_cmd() and ata_dev_set_protocol() as ata_rwcmd_protocol() - pave road for read/write multiple support - remove usage of pre-cached command and protocol values and call ata_rwcmd_protocol() instead Signed-off-by: Albert Lee <albertcc@tw.ibm.com> ============== Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-18[PATCH] libata CHS: move the initialization of taskfile LBA flags (revise #6)Albert Lee
move the initialization of taskfile LBA flags "ATA_TFLAG_LBA" and "ATA_TFLAG_LBA48 flags" to the SCSI translation functions Signed-off-by: Albert Lee <albertcc@tw.ibm.com> ============= Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-09Merge branch 'upstream'Jeff Garzik
2005-10-09[libata passthru] update ATAPI completion for new error handlingJeff Garzik
2005-10-09Merge branch 'upstream'Jeff Garzik
2005-10-09[libata scsi] improve scsi error handling with ata_scsi_set_sense()Douglas Gilbert
- change "xlat" and "fill" actors in libata-scsi so they are responsible for SCSI status and sense data when they return 1. This allows GOOD status or a specialized error to be set. - yield an error for mode sense requests for saved values [sat-r06] - remove static inlines for ata_bad_scsiop() and ata_bad_cdb() which are no longer used Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-09[libata scsi] add ata_scsi_set_sense helperDouglas Gilbert
- add extern ata_scsi_set_sense() to build SCSI fixed sense data and corresponding SCSI status Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2005-10-06[libata passthru] add (DRIVER_SENSE << 24) to all check-conditionsJeff Garzik
2005-10-05libata: minor cleanupsJeff Garzik
A few code shuffles, to make merging future code easier. Add (DRIVER_SENSE << 24) to certain result codes, as noted by Douglas Gilbert.
2005-10-05libata: move atapi_request_sense() to libata-scsi moduleJeff Garzik
No content changes, just moving code around.
2005-10-05libata: ATAPI command completion tweaks and notesJeff Garzik
1) note urgent bug, that completes command twice 2) only fix up INQUIRY data if the SCSI version is zero (typically indicates ATAPI MMC-ish device) 3) if there is a problem on the ATA bus, don't bother with REQUEST SENSE, just directly handle the error based on Status/Error registers.
2005-10-05libata: fix ATAPI DMA alignment issuesJeff Garzik
ATAPI needs to be padded to next 4 byte boundary, if misaligned. Original work by me, many fixes from Tejun Heo.
2005-10-04Merge branch 'scsi-scan'Jeff Garzik
2005-10-04[libata passthru] fix leak on errorJeff Raubitschek
2005-10-04[libata scsi] add CHS support to ata_scsi_start_stop_xlat()Albert Lee
2005-10-04[libata scsi] tidy up SCSI lba and xfer len calculationsAlbert Lee
move the redundant SCSI lba and transfer length calculation code from ata_scsi_verify_xlat() and ata_scsi_rw_xlat() to common functions.
2005-10-04libata: minor whitespace, comment, debug message updatesAlbert Lee
2005-10-03[libata] improve device scan even moreJeff Garzik
Since our max_lun is unconditionally set to 1, we might as well hardcode a LUN 0 probe, rather than a wildcard LUN scan. The ide-scsi driver sets max_lun to a value greater than under certain conditions: if ((drive->id->last_lun & 0x7) != 7) host->max_lun = (drive->id->last_lun & 0x7) + 1; else host->max_lun = 1; last_lun is Word 126 of IDENTIFY PACKET DEVICE, marked as obsolete and undocumented in non-ancient specs. We'll leave it out for now. Should the need arise to support multi-LUN ATAPI devices, we'll probably want to add the above code. Finally, there have been reports of REPORT LUNS commands locking up ATAPI drives. Eliminating the wildcard LUN scan could help reduce the trouble from problematic drives.
2005-10-03[libata] improve device scanJeff Garzik
Replace SCSI's legacy "bang at the door" method of probing with one directly controlled by the underlying ATA transport layer. We now only call scsi_scan_target() for devices we find, rather than probing every possible channel/id within a certain range.
2005-09-08Merge /spare/repo/linux-2.6/ Jeff Garzik
2005-09-08Merge /spare/repo/linux-2.6/ Jeff Garzik
2005-08-30[libata] fix ATAPI-enable typoJeff Garzik
Dumb typo spotted by Mark Lord.
2005-08-30[libata] allow ATAPI to be enabled with new atapi_enabled module optionJeff Garzik
ATAPI is getting close to being ready. To increase exposure, we enable the code in the upstream kernel, but default it to off (present behavior). Users must pass atapi_enabled=1 as a module option (if module) or on the kernel command line (if built in) to turn on discovery of their ATAPI devices.
2005-08-29Merge libata branch 'chs-support' to latest upstream kernel.Jeff Garzik
2005-08-29Merge upstream kernel into libata 'passthru' branchJeff Garzik
2005-08-29/spare/repo/libata-dev branch 'v2.6.13'Jeff Garzik
2005-08-29Merge /spare/repo/linux-2.6/Jeff Garzik
2005-08-28[libata] license change, other bitsJeff Garzik
- changes license of all code from OSL+GPL to plain ole GPL - except for NVIDIA, who hasn't yet responded about sata_nv - copyright holders were already contacted privately - adds info in each driver about where hardware/protocol docs may be obtained - where I have made major contributions, updated copyright dates
2005-08-27[libata scsi] fix read/write translation edge casesJeff Garzik
Fix bugs for unlikely edge cases noticed by Douglas Gilbert: - When READ(6)/WRITE(6) sector count == 0, treat it as 256 sectors - For other READ(x)/WRITE(x), when sector count == 0, error. We don't support successfully completing zero-length transfers at this time.
2005-08-11[libata scsi] add START STOP UNIT translationDouglas Gilbert
2005-08-10Merge /spare/repo/linux-2.6/Jeff Garzik
2005-08-10libata: fix EH-related lockup by properly cleaning EH command listTejun Heo
Yet another hack due to the fact that libata is the only user of SCSI's ->eh_strategy_handler() hook.
2005-06-27[PATCH] libata fix read capacity handling for more than 2TBPhilip Pokorny
This is a multi-part message in MIME format.
2005-06-22libata: Update 'passthru' branch for latest libataJeff Garzik
2005-06-22Merge /spare/repo/linux-2.6/Jeff Garzik
2005-06-22Merge upstream kernel changes into 'C/H/S support' branch of libata.Jeff Garzik
2005-05-30libata: doc updatesJeff Garzik
2005-05-26Automatic merge of ↵
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git branch HEAD
2005-05-15[PATCH] libata: stop setting sdev->host->max_sectors for lba48 drivesJohn W. Linville
Avoid changing sdev->host->max_sectors because it can prevent use of non-lba48 drives on other ports of the same adapter. Signed-off-by: Stuart Hayes <stuart_hayes@Dell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>