summaryrefslogtreecommitdiffstats
path: root/drivers/ata
Commit message (Collapse)AuthorAgeFilesLines
* trivial: fix comment typo in drivers/ata/pata_hpt37x.cKrzysztof Halasa2009-09-211-1/+1
| | | | | | | A comment fix in drivers/ata/pata_hpt37x.c. Signed-off-by: Krzysztof Ha³asa <khc@pm.waw.pl> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* libata: Add pata_atp867x driver for Artop/Acard ATP867X controllersJohn(Jung-Ik) Lee2009-09-173-0/+558
| | | | | | | | | | | This is a new pata driver for ARTOP 867X 64bit 4-channel UDMA133 ATA ctrls. Based on the Atp867 data sheet rev 1.2, Acard, and in part on early ide codes from Eric Uhrhane <ericu@google.com>. Signed-off-by: John(Jung-Ik) Lee <jilee@google.com> Reviewed-by: Grant Grundler <grundler@google.com> Reviewed-by: Gwendal Gringo <gwendal@google.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_amd: do not filter out valid modes in nv_mode_filterRobert Hancock2009-09-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | On a Compaq Presario V3000 laptop (NVIDIA MCP51 chipset), pata_amd selects PIO0 mode for the PATA DVD-RAM drive instead of MWDMA2 which it supports: ata4.00: ATAPI: HL-DT-ST DVDRAM GSA-4084N, KQ09, max MWDMA2 ata4: nv_mode_filter: 0x39f&0x7001->0x1, BIOS=0x0 (0x0) ACPI=0x7001 (60:600:0x11) ata4.00: configured for PIO0 For some reason, the BIOS-set UDMA configuration returns 0 and the ACPI _GTM reports that UDMA2 and PIO0 are enabled. This causes nv_mode_filter to end up allowing only PIO0 and UDMA0-2. Since the drive doesn't support UDMA we end up using PIO0. Since the controllers should always support PIO4, MWDMA2 and UDMA2 regardless of what cable type is used, let's make sure we don't filter out these modes regardless of what wacky settings the BIOS is using. Signed-off-by: Robert Hancock <hancockrwd@gmail.com> Cc: stable@kernel.org Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_promise: update reset codeMikael Pettersson2009-09-171-1/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sata_promise's reset code has deviated quite a bit from the Promise reference driver's, and it has been observed to fail to recover from errors in some cases. This patch thus updates the reset code to more closely match the reference driver: - soft reset (pdc_reset_port): * wait for ATA engine to not be in packet command mode (2nd gen only) * write reset bit in PDC_CTLSTAT before the first read in the loop * for 2nd gen SATA follow up with FPDMA reset and clearing error status registers - hard reset (pdc_sata_hardreset): * wait for ATA engine to not be in packet command mode (2nd gen only) * reset ATA engine via the PCI control register * Tejun's change to use non-waiting hardreset + follow-up SRST I'm not changing the hotplug mask bits since they are taken care of by sata_promise's ->freeze() and ->thaw() operations. And I'm not writing the PMP port # because that's always zero (for now). Tested here on various controllers. In particular, one disk which used to timeout and fail to recover from certain hdparm and smartmonctl commands now works nicely. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_promise: disable hotplug on 1st gen chipsMikael Pettersson2009-09-171-17/+17
| | | | | | | | | | | | | | | | | 1st generation Promise SATA chips are prone to generating spurious hotplug events which can disrupt normal operation. This has been observed on 20376 and 20378 chips. This patch thus disables hotplug support on 1st gen chips while leaving it enabled for 2nd gen chips. The pdc_sata_hotplug_offset() function becomes redundant so it is removed. Tested on 1st gen 20376 and 20378 mainboard chips and on a 2nd gen SATA300 PCI card. Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Tested-by: Kurt Roeckx <kurt@roeckx.be> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: fix spurious WARN_ON_ONCE() on port freezeTejun Heo2009-09-171-2/+2
| | | | | | | | | | | | | Commit 54c38444fad6a99b4b19512f8f0055d69115e69e makes libata abort qcs after the port is frozen. This is necessary to guarantee that TF registers are accessed after the DMA engine is shutdown after an error. However, this triggers WARN_ON_ONCE() check in ata_qc_complete() spuriously. Move WARN_ON_ONCE() downwards such that failing commands while frozen doesn't trigger it. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: stable <stable@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: restore pci_intx() handlingTejun Heo2009-09-171-2/+2
| | | | | | | | | | | | | | | | | | | | Commit a5bfc4714b3f01365aef89a92673f2ceb1ccf246 dropped explicit pci_intx() manipulation from ahci because it seemed unnecessary and ahci doesn't seem to be the right place to be tweaking it if it were. This was largely okay but there are exceptions. There was one on an embedded platform which was fixed via firmware and now bko#14124 reports it on a HP DL320. http://bugzilla.kernel.org/show_bug.cgi?id=14124 I still think this isn't something libata drivers should be caring about (the only ones which are calling pci_intx() explicitly are libata ones and one other driver) but for now reverting the change seems to be the right thing to do. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Thomas Jarosch <thomas.jarosch@intra2net.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_rz1000: use printk_onceMarcin Slusarz2009-09-111-3/+1
| | | | | Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: kill @force_restart and refine CLO for ahci_kick_engine()Shane Huang2009-09-111-12/+10
| | | | | | | | | | | | | This patch refines ahci_kick_engine() after discussion with Tejun about FBS(FIS-based switching) support preparation: a. Kill @force_restart and always kick the engine. The only case where @force_restart is zero is when it's called from ahci_p5wdh_hardreset() Actually at that point, BSY is pretty much guaranteed to be set. b. If PMP is attached, ignore busy and always do CLO. (AHCI-1.3 9.2) Signed-off-by: Shane Huang <shane.huang@amd.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_cs5535: add pci id for AMD based CS5535 controllersOtavio Salvador2009-09-111-1/+2
| | | | | Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: Add AMD SB900 SATA/IDE controller device IDsShane Huang2009-09-112-0/+7
| | | | | | | Add AMD SB900 SATA/IDE controller device IDs. Signed-off-by: Shane Huang <shane.huang@amd.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* drivers/ata: use resource_sizeJulia Lawall2009-09-114-7/+7
| | | | | | | | | | | | | | | | | | | | | | Use the function resource_size, which reduces the chance of introducing off-by-one errors in calculating the resource size. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ struct resource *res; @@ - (res->end - res->start) + 1 + resource_size(res) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_fsl: Defer non-ncq commands when ncq commands activeAshish Kalra2009-09-081-0/+1
| | | | | | | | | Fix for non-ncq & ncq commands causing timeouts when both are issued simultaneously to the same device. Signed-off-by: Ashish Kalra <Ashish.Kalra@freescale.com> [fixed to be actual compileable C code -jg] Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: add SATA PMP revision information for spec 1.2Shane Huang2009-09-081-0/+2
| | | | | | | This small patch is just adding the information for PMP spec 1.2 Signed-off-by: Shane Huang <shane.huang@amd.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: fix off-by-one error in ata_tf_read_block()Tejun Heo2009-09-081-1/+7
| | | | | | | | | | | | | ata_tf_read_block() has off-by-one error when converting CHS address to LBA. The bug isn't very visible because ata_tf_read_block() is used only when generating sense data for a failed RW command and CHS addressing isn't used too often these days. This problem was spotted by Atsushi Nemoto. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: Gigabyte GA-MA69VM-S2 can't do 64bit DMATejun Heo2009-09-081-0/+16
| | | | | | | | | | | | | | Gigabyte GA-MA69VM-S2 can't do 64bit DMA either. It's yet unknown whether recent BIOS fixes the problem. Blacklist regardless of BIOS revisions for now. Sandor Bodo-Merle reported and provided the initial patch for this issue. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Sandor Bodo-Merle <sbodomerle@gmail.com> Cc: Shane Huang <shane.huang@amd.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: make ahci_asus_m2a_vm_32bit_only() quirk more genericTejun Heo2009-09-081-24/+29
| | | | | | | | | | | | | It turns out ASUS M2A-VM isn't the only one with the 32bit DMA problem. Make ahci_asus_m2a_vm_32bit_only() more generic using the new dmi_get_date() and rename it to ahci_sb600_32bit_only(). Cut off date is now pointed to by dmi_system_id->driver_data in "yyyymmdd" format and it's now also allowed to be omitted. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Sandor Bodo-Merle <sbodomerle@gmail.com> Cc: Shane Huang <shane.huang@amd.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* dmi: extend dmi_get_year() to dmi_get_date()Tejun Heo2009-09-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | There are cases where full date information is required instead of just the year. Add month and day parsing to dmi_get_year() and rename it to dmi_get_date(). As the original function only required '/' followed by any number of parseable characters at the end of the string, keep that behavior to avoid upsetting existing users. The new function takes dates of format [mm[/dd]]/yy[yy]. Year, month and date are checked to be in the ranges of [1-9999], [1-12] and [1-31] respectively and any invalid or out-of-range component is returned as zero. The dummy implementation is updated accordingly but the return value is updated to indicate field not found which is consistent with how other dummy functions behave. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: unbreak TPM filtering by reorganizing ata_scsi_pass_thru()Tejun Heo2009-09-081-53/+51
| | | | | | | | | | | | | | | | | | ata_scsi_pass_thru() was checking for input sanity and disallowed commands while initializaing qc from scmd. TPM filtering was added right after protocol check at which point tf wasn't initialized properly. This means that TPM filtering has never really worked. This patch fixes the bug by reorganizing ata_scsi_pass_thru() such that qc is fully initialized before checking for invalid conditions which is way less error prone. Discovered while Thilo-Alexander Ginkel was trying debug patches for bko#13416. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Thilo-Alexander Ginkel <thilo@ginkel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_sis: convert to slave_linkTejun Heo2009-09-081-50/+25
| | | | | | | | | | | | | | | | | | | During introduction of slave_link, sata_sis slipped through the crack and left with ad-hoc merged SCR access. As SCR status was shared for both the master and slave devices, when only one of the device is online, libata EH would think both are online but would only get valid device signature for the actually present one, which in turn trigger the probing safety net mechanism and make EH retry causing large delay during boot. This patch converts sata_sis to slave_link mechanism. This bug was reported by TAXI in bko#14075. http://bugzilla.kernel.org/show_bug.cgi?id=14075 Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: TAXI <taxi@a-city.de> Cc: Uwe Koziolek <uwe.koziolek@gmx.net> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_sil24: always set protocol override for non-ATAPI data commandsRobert Hancock2009-09-011-0/+11
| | | | | | | | | | | | | | | | | The sil24 hardware has a built-in list of commands and associated protocols that gets used by default to decide how to handle a given command. However, if the command is not known to the controller then it presumably assumes it to be a non-data command which then causes protocol mismatch errors if the device ends up requesting data transfer. The new DATA SET MANAGEMENT - Trim command causes this issue since it's a DMA data-out command. Since we should always know best what protocol the command should be using, let's just set the override flag to inform the controller what protocol to use for all non-ATAPI commands with data transfer. Signed-off-by: Robert Hancock <hancockrwd@gmail.com> Tested-by: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: Export AHCI capabilitiesMatthew Garrett2009-09-011-0/+44
| | | | | | | | | | AHCI exports various capability bits that may be of interest to userspace such as whether the BIOS claims a port is hotpluggable or eSATA. Providing these via sysfs along with the version of the AHCI spec implemented by the host allows userspace to make policy decisions for things like ALPM. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: Delegate nonrot flag setting to SCSIMartin K. Petersen2009-09-011-4/+0
| | | | | | | | Now that the SCSI disk driver correctly handles non-rotational devices we can move setting the queue flag to SCSI. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] Add pata_rdc driver for RDC ATA devicesAlan Cox2009-09-013-0/+411
| | | | | | | From: Alan Cox <alan@linux.intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* drivers/ata: Remove unnecessary semicolonsJoe Perches2009-09-012-2/+2
| | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: remove spindown skipping and warningTejun Heo2009-09-011-51/+0
| | | | | | | | | | This was a hack to give userland shutdown tools time to drop manual spindown. All popular distros updated quite some time ago and the due is well passed. Drop it. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jaswinder Singh Rajput <jaswinder@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: add command name parsing for error outputRobert Hancock2009-09-014-4/+143
| | | | | | | | | | | | | | | | | | | | | | | | | This patch improve libata's output for error/notification messages to allow easier comprehension and debugging: When ATAPI commands issued through the SCSI layer fail, use SCSI functions to print the CDB in human-readable form instead of just dumping out the CDB in hex. Print out the name of the failed command (as defined by the ATA specification) in error handling output along with the raw register contents. When reporting status of ACPI taskfile commands executed on resume, also output the names of the commands being executed (or not) in readable form. Since the extra data for printing command names increases kernel size slightly, a config option has been added to allow disabling command name output (as well as some of the error register parsing) for those highly sensitive to kernel text size. Signed-off-by: Robert Hancock <hancockrwd@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: clear eh_info on reset completionTejun Heo2009-09-011-3/+9
| | | | | | | | | | | | | | Resets are done with port frozen but some controllers still issue interrupts during reset and they may end up recording error conditions in ehi leading to unnecessary EH retrials. This patch makes ata_eh_reset() clear ehi on reset completion. As reset is the most severe recovery action, there's nothing to lose by clearing ehi on its completion. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Zdenek Kaspar <zkaspar82@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] add DMA setup FIS auto-activate featureShaohua Li2009-09-012-8/+30
| | | | | | | Hopefully results in fewer on-the-wire FIS's and no breakage. We'll see! Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] sata_sil: disable DMA engine in sil_freeze()Jeff Garzik2009-09-011-0/+13
| | | | | | We must disable the DMA engine before accessing taskfile registers. Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] EH: freeze port before aborting commandsJeff Garzik2009-09-011-2/+4
| | | | | | | | | Call the ->freeze() hook before aborting qc's, because some hardware requires special handling prior to accessing the taskfile registers (for diagnosis/analysis/reset). Most notably, hardware may wish to disable the DMA engine or interrupts in the ->freeze() hook. Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ata_piix: parallel scanning on PATA needs an extra lockingBartlomiej Zolnierkiewicz2009-08-311-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit log for commit 517d3cc15b36392e518abab6bacbb72089658313 ("[libata] ata_piix: Enable parallel scan") says: This patch turns on parallel scanning for the ata_piix driver. This driver is used on most netbooks (no AHCI for cheap storage it seems). The scan is the dominating time factor in the kernel boot for these devices; with this flag it gets cut in half for the device I used for testing (eeepc). Alan took a look at the driver source and concluded that it ought to be safe to do for this driver. Alan has also checked with the hardware team. and it is all true but once we put all things together additional constraints for PATA controllers show up (some hardware registers have per-host not per-port atomicity) and we risk misprogramming the controller. I used the following test to check whether the issue is real: @@ -736,8 +736,20 @@ static void piix_set_piomode(struct ata_ (timings[pio][1] << 8); } pci_write_config_word(dev, master_port, master_data); - if (is_slave) + if (is_slave) { + if (ap->port_no == 0) { + u8 tmp = slave_data; + + while (slave_data == tmp) { + pci_read_config_byte(dev, slave_port, &tmp); + msleep(50); + } + + dev_printk(KERN_ERR, &dev->dev, "PATA parallel scan " + "race detected\n"); + } pci_write_config_byte(dev, slave_port, slave_data); + } /* Ensure the UDMA bit is off - it will be turned back on if UDMA is selected */ and it indeed triggered the error message. Lets fix all such races by adding an extra locking to ->set_piomode and ->set_dmamode methods for PATA controllers. [ Alan: would be better to take the host lock in libata-core for these cases so that we fix all the adapters in one swoop. "Looks fine as a temproary quickfix tho" ] Cc: Arjan van de Ven <arjan@linux.intel.com> Acked-by: Alan Cox <alan@linux.intel.com> Cc: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* ahci: add workaround for on-board 5723s on some gigabyte boardsTejun Heo2009-08-121-4/+72
| | | | | | | | | | | | | | | | | | | | Some gigabytes have on-board SIMG5723s connected to JMB ahcis. These are used to implement hardware raid. Unfortunately some firmware revisions on these 5723s don't bring the link down when all the downstream ports are unoccupied while not responding to reset protocol which makes libata think that there's device attached to the port but is not responding and retry. This results in painfully wrong boot detection time for these ports when they're empty. This patch quirks those boards such that ahci gives up after the initial timeout. Combined with parallel probing, this gives quick enough probing and also is safe because SIMG5723 will respond to the first try if any of the downstream ports is occupied. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Marc Bowes <marcbowes@gmail.com> Reported-by: Nicolas Mailhot <Nicolas.Mailhot@LaPoste.net> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: Soften up the dmesg on SB600 PMP softreset failure recoveryShane Huang2009-08-121-1/+2
| | | | | | | | | | | | Too strong words led to spurious bug reports: Novell bugzilla #527748, RedHat bugzilla #468800. This patch is used to soften up the dmesg on SB600 PMP softreset failure recovery, so as to remove the scariness and concern from community. Reported-by: pgnet Dev <pgnet.dev@gmail.com> Signed-off-by: Shane Huang <shane.huang@amd.com> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_nv: MSI support, disabled by defaultTony Vroon2009-08-121-0/+8
| | | | | | | | | | | | At least the nVidia MCP55 controller quite happily supports MSI. This adds an option to use it. It is disabled by default. As per feedback by Robert Hancock, it will honour the user request as the kernel will not enable MSI where the controller or the specific system configuration do not support it. Signed-off-by: Tony Vroon <tony@linx.net> Cc: Robert Hancock <hancockrwd@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: OCZ Vertex can't do HPATejun Heo2009-08-121-0/+3
| | | | | | | | | | | | | | OCZ Vertex SSD can't do HPA and not in a usual way. It reports HPA, allows unlocking but then fails all IOs which fall in the unlocked area. Quirk it so that HPA unlocking is not used for the device. Reported by Daniel Perup in bnc#522414. https://bugzilla.novell.com/show_bug.cgi?id=522414 Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Daniel Perup <probe@spray.se> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_atiixp: fix second channel supportBartlomiej Zolnierkiewicz2009-08-121-9/+10
| | | | | | | | | | | | | | | | | | | | PIO and MWDMA timings are never programmed for the second channel because timing registers are treated as 16-bit long ones. The bug is an attixp -> pata_atiixp regression and goes back to: commit 669a5db411d85a14f86cd92bc16bf7ab5b8aa235 Author: Jeff Garzik <jeff@garzik.org> Date: Tue Aug 29 18:12:40 2006 -0400 [libata] Add a bunch of PATA drivers. Cc: Krystian Juskowiak <jusko@tlen.pl> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Borislav Petkov <bbpetkov@yahoo.de> Cc: Robert Hancock <hancockrwd@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_at91: fix resource releaseTejun Heo2009-08-121-13/+4
| | | | | | | | | | | | | Julias Lawall discovered that pata_at91 wasn't freeing a memory region allocated with kzalloc() on init failure paths. Upon review, pata_at91 also seems to be doing unnecessary explicit resource releases for managed resources too. Convert memory allocation to managed one and drop unnecessary explicit resource releases. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Julia Lawall <julia@diku.dk> Cc: Sergey Matyukevich <geomatsi@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: accept late unlocking of HPATejun Heo2009-07-281-7/+23
| | | | | | | | | | | | | | | | | | | | On certain configurations, HPA isn't or can't be unlocked during probing but it somehow ends up unlocked afterwards. In the following thread, the problem can be reliably reproduced after resuming from STR. The BIOS turns on HPA during boot but forgets to do it during resume. http://thread.gmane.org/gmane.linux.kernel/858310 This patch updates libata revalidation such that it considers native n_sectors. If the device size has increased to match native n_sectors, it's assumed that HPA has been unlocked involuntarily and the device is recognized as the same one. This should be fairly safe while nicely working around the problem. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Christof Warlich <christof@warlich.name> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: Updates and fixes for pata_at91 driverSergey Matyukevich2009-07-281-31/+36
| | | | | | | | | | | | | | | | | | Please consider the following updates and fixes for pata_at91 driver. * Removed extra headers Here we need only static memory controller properties, which are contained in generic header at91sam9_smc.h. No need to include any specific headers for at91sam9260 SoC. * No harsh BUG_ON for get_clk in set_smc_timing function get_clk is now performed in driver probing function, probing fails if master clock is not available * Fixed uint/ulong mess in calc_mck_cycles function Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ata_piix: Add new short cable IDSteve Conklin2009-07-281-0/+1
| | | | | | OriginalAuthor: Tony Espy <espy@canonical.com> Signed-off-by: Steve Conklin <sconklin@canonical.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ata_piix: Add new laptop short cable IDsSteve Conklin2009-07-281-0/+2
| | | | | | OriginalAuthor: Michael Frey <michael.frey@canonical.com> Signed-off-by: Steve Conklin <sconklin@canonical.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: add device IDs for Ibex Peak ahci controllersDavid Milburn2009-07-281-0/+4
| | | | | | | | Add device IDS for Ibex Peak SATA AHCI Controllers Signed-off-by: Jaroslav Kysela <jkysela@redhat.com> Signed-off-by: David Milburn <dmilburn@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: remove superfluous NULL pointer checksBartlomiej Zolnierkiewicz2009-07-283-3/+4
| | | | | | | | | | | | | | | | | | host->ports[] always contain pointers to valid port structures since a "dummy port" structure is used in case if there is no physical port. This patch takes care of two entries from Dan's list: drivers/ata/sata_sil.c +535 sil_interrupt(13) warning: variable derefenced before check 'ap' drivers/ata/sata_mv.c +2517 mv_unexpected_intr(6) warning: variable derefenced before check 'ap' and of another needless NULL pointer check in pata_octeon_cf.c. Reported-by: Dan Carpenter <error27@gmail.com> Cc: corbet@lwn.net Cc: eteo@redhat.com Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: add missing NULL pointer check to ata_eh_reset()Bartlomiej Zolnierkiewicz2009-07-281-1/+1
| | | | | | | | | | | | | | | | | | drivers/ata/libata-eh.c +2403 ata_eh_reset(80) warning: variable derefenced before check 'slave' Please note that this is _not_ a real bug at the moment since ata_eh_context structure is embedded into ata_list structure and the code alwas checks for 'slave' before accessing 'sehc'. Anyway lets add missing check and always have a valid 'sehc' pointer (which makes code easier to understand and prevents introducing some possible bugs in the future). Reported-by: Dan Carpenter <error27@gmail.com> Cc: corbet@lwn.net Cc: eteo@redhat.com Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* pata_pcmcia: add CNF-CDROM-IDWolfram Sang2009-07-281-0/+1
| | | | | | | | | Fixes this report: http://article.gmane.org/gmane.linux.kernel.pcmcia.devel/2228/ Reported-by: John McGrath <john@john-mcgrath.com> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ahci: add device ID for 82801JI sata controllerMark Goodwin2009-07-141-0/+1
| | | | | | | Add device ID for Intel 82801JI SATA AHCI controller. Signed-off-by: David Milburn <dmilburn@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* drivers/ata: Move a dereference below a NULL testJulia Lawall2009-07-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: implement and use HORKAGE_NOSETXFER, take#2Tejun Heo2009-07-141-2/+18
| | | | | | | | | | | | | | | | | | | | | PIONEER DVD-RW DVRTD08 times out SETXFER if no media is present. The device is SATA and simply skipping SETXFER works around the problem. Implement ATA_HORKAGE_NOSETXFER and apply it to the device. Reported by Moritz Rigler in the following thread. http://thread.gmane.org/gmane.linux.ide/36790 and by Lars in bko#9540. Updated to whine and ignore NOSETXFER if PATA component is detected as suggested by Alan Cox. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Moritz Rigler <linux-ide@momail.e4ward.com> Reported-by: Lars <lars21ce@gmx.de> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: fix follow-up SRST failure pathTejun Heo2009-07-141-0/+4
| | | | | | | | | | | ata_eh_reset() was missing error return handling after follow-up SRST allowing EH to continue the normal probing path after reset failure. This was discovered while testing new WD 2TB drives which take longer than 10 secs to spin up and cause the first follow-up SRST to time out. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>