Commit Graph

1416 Commits

Author SHA1 Message Date
Adrian Bunk
bf2d401bca [PATCH] ATA must depend on BLOCK
Fix the following compile error with CONFIG_ATA=y, CONFIG_BLOCK=n:

...
  CC      drivers/ata/libata-scsi.o
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c: In function ‘ata_scsi_dev_config’:
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:791: warning: implicit declaration of function ‘blk_queue_max_sectors’
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:799: error: ‘request_queue_t’ undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:799: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:799: error: for each function it appears in.)
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:799: error: ‘q’ undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:800: warning: implicit declaration of function ‘blk_queue_max_hw_segments’
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c: In function ‘ata_scsi_slave_config’:
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/ata/libata-scsi.c:831:
warning: implicit declaration of function ‘blk_queue_max_phys_segments’
make[3]: *** [drivers/ata/libata-scsi.o] Error 1

Bug report by Jesper Juhl.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-21 15:10:10 -04:00
Kristen Carlson Accardi
158f30c894 [PATCH] libata: use correct map_db values for ICH8
Use valid values for ICH8 map_db.  With the old values, when the
controller was in Native mode, and SCC was 1 (drives configured for
IDE), any drive plugged into a slave port was not recognized.  For
Combined Mode (and SCC is still 1), 2 is a value value for MAP.map_value,
and needs to be recognized.

Signed-off-by:  Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-21 15:10:10 -04:00
Jeff Garzik
701328a7b5 Merge branch 'master' into upstream-fixes 2006-10-11 04:59:46 -04:00
Peter Korsgaard
53e36ada37 [PATCH] pata-qdi: fix le32 in data_xfer
The following tiny patch fixes a typo in qdi_data_xfer (le32 instead
of le16).

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-11 04:48:52 -04:00
Jeff Garzik
a83068bbac [libata] sata_promise: add PCI ID
Noticed by Steve Brown <sbrown25@gmail.com>

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-11 04:46:52 -04:00
Eran Tromer
bbe1fe7ea3 [PATCH] libata: return sense data in HDIO_DRIVE_CMD ioctl
Make the HDIO_DRIVE_CMD ioctl in libata (ATA command pass through) return a
few ATA registers to userspace, following the same convention as the
drivers/ide implementation of the same ioctl.  This is needed to support ATA
commands like CHECK POWER MODE, which return information in nsectors.

This fixes "hdparm -C" on SATA drives.

Forcing the sense data read via the cc flag causes spurious check conditions,
so we filter these out (following the ATA command pass-through specification
T10/04-262r7).

Signed-off-by: Eran Tromer <eran@tromer.org>
Acked-by: Tejun Heo <htejun@gmail.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-11 04:18:07 -04:00
Al Viro
03dc550641 [PATCH] trivial iomem annotations: sata_promise
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-10 15:37:23 -07:00
Al Viro
04b1add1ab [PATCH] misc sata __iomem annotations
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-10 15:37:21 -07:00
Jeff Garzik
4ad99f15c6 Merge branch 'master' into upstream-fixes 2006-10-05 21:03:43 -04:00
David Howells
7d12e780e0 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
of passing regs around manually through all ~1800 interrupt handlers in the
Linux kernel.

The regs pointer is used in few places, but it potentially costs both stack
space and code to pass it around.  On the FRV arch, removing the regs parameter
from all the genirq function results in a 20% speed up of the IRQ exit path
(ie: from leaving timer_interrupt() to leaving do_IRQ()).

Where appropriate, an arch may override the generic storage facility and do
something different with the variable.  On FRV, for instance, the address is
maintained in GR28 at all times inside the kernel as part of general exception
handling.

Having looked over the code, it appears that the parameter may be handed down
through up to twenty or so layers of functions.  Consider a USB character
device attached to a USB hub, attached to a USB controller that posts its
interrupts through a cascaded auxiliary interrupt controller.  A character
device driver may want to pass regs to the sysrq handler through the input
layer which adds another few layers of parameter passing.

I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
main part of the code on FRV and i386, though I can't test most of the drivers.
I've also done partial conversion for powerpc and MIPS - these at least compile
with minimal configurations.

This will affect all archs.  Mostly the changes should be relatively easy.
Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

	struct pt_regs *old_regs = set_irq_regs(regs);

And put the old one back at the end:

	set_irq_regs(old_regs);

Don't pass regs through to generic_handle_irq() or __do_IRQ().

In timer_interrupt(), this sort of change will be necessary:

	-	update_process_times(user_mode(regs));
	-	profile_tick(CPU_PROFILING, regs);
	+	update_process_times(user_mode(get_irq_regs()));
	+	profile_tick(CPU_PROFILING);

I'd like to move update_process_times()'s use of get_irq_regs() into itself,
except that i386, alone of the archs, uses something other than user_mode().

Some notes on the interrupt handling in the drivers:

 (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
     the input_dev struct.

 (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
     something different depending on whether it's been supplied with a regs
     pointer or not.

 (*) Various IRQ handler function pointers have been moved to type
     irq_handler_t.

Signed-Off-By: David Howells <dhowells@redhat.com>
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-10-05 15:10:12 +01:00
Alan Cox
46767aeba5 [PATCH] libata: Don't believe bogus claims in the older PIO mode register
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-05 06:55:00 -04:00
Alan Cox
a0a00cbf8a [PATCH] pata: teach ali about rev C8, keep pcmcia driver in sync
This fixes support for rev c8 of the ALi/ULi PATA, and keeps pcmcia in
sync so ide_cs and pata_pcmcia are interchangable, both are only changes
to constants.

Right now rev 0xC8 and higher don't work with libata but 0xc8 is in the
field now.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-04 08:15:15 -07:00
Linus Torvalds
e30fdb1e02 Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  [libata] pata_artop: kill gcc warning
  [PATCH] libata: turn off NCQ if queue depth is adjusted to 1
  [PATCH] libata: cosmetic changes to constants
  [libata] DocBook minor updates, fixes
  [libata] PCI ID table cleanup in various drivers
  [libata] Print out Status register, if a BSY-sleep takes too long
  [libata] init probe_ent->private_data in a common location
  [libata] minor PCI IDE probe fixes and cleanups
  [libata] Use new PCI_VDEVICE() macro to dramatically shorten ID lists
  [PATCH] Fix reference of uninitialised memory in ata_device_add()
2006-10-04 08:06:16 -07:00
OGAWA Hirofumi
2c136efcf6 [PATCH] pata_hpt366: fix typo
switch(reg1 & 0x700) {
		case 5:
			info_hpt366.private_data = &hpt366_40;
			break;
		case 9:
			info_hpt366.private_data = &hpt366_25;
			break;
		default:
			info_hpt366.private_data = &hpt366_33;
			break;
	}

The above runs always default part. It should be "(reg1 & 0x700) >> 8".

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-03 08:04:06 -07:00
Jeff Garzik
15a7c3bbe3 [libata] pata_artop: kill gcc warning
gcc complains thusly:

drivers/ata/pata_artop.c: In function ‘artop_init_one’:
drivers/ata/pata_artop.c:429: warning: ‘info’ may be used uninitialized in this function

While this warning is indeed bogus, even with improved static analysis
and value range propagation, gcc will probably never be able to detect
this.

Add a BUG_ON() to trap invalid driver_data entries in the PCI table.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-01 10:38:22 -04:00
Tejun Heo
360f654e7c [PATCH] libata: turn off NCQ if queue depth is adjusted to 1
Turn off NCQ if queue depth is adjusted to 1.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-30 07:39:24 -04:00
Jeff Garzik
4f931374ec [libata] DocBook minor updates, fixes
Update copyright year, fix minor stuff 'make xmldocs' complains about.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-29 05:07:25 -04:00
Jeff Garzik
2d2744fc8b [libata] PCI ID table cleanup in various drivers
* Use PCI_VDEVICE() macro
* const-ify pci_device_id table
* standardize list terminator as "{ }"
* convert spaces to tab in pci_driver struct (Alan-ism)
* various minor whitespace cleanups

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-28 20:21:59 -04:00
Jeff Garzik
35aa7a436c [libata] Print out Status register, if a BSY-sleep takes too long
We have the info stored in an ata_busy_sleep() variable, so might as
well print it, and provide some additional diagnostic info.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-28 06:50:24 -04:00
Jeff Garzik
d639ca9418 [libata] init probe_ent->private_data in a common location
Don't write the same code twice, in two different functions, when they
both call the same initialization function, with the same private_data
pointer info.

Also, note a bug found with a FIXME.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-28 03:48:18 -04:00
Jeff Garzik
c791c30670 [libata] minor PCI IDE probe fixes and cleanups
* Replace needless 'n_ports > 2' check with a simple BUG_ON().
  No existing driver ever wants more than 2 ports.

* Delete ATA_FLAG_NO_LEGACY check.  No current driver uses
  ata_pci_init_one(), that sets this flag.

* Move PCI_CLASS_PROG register read below pci_enable_device()

* Handle ata_device_add() failure

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-28 03:40:11 -04:00
Jeff Garzik
54bb3a94b1 [libata] Use new PCI_VDEVICE() macro to dramatically shorten ID lists
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 22:20:11 -04:00
Dave Jones
c38778c3a9 [PATCH] Fix reference of uninitialised memory in ata_device_add()
ata_device_add fails, calls ata_host_remove with pointers to unitialized
memory.

Signed-off-by: Dave Jones <davej@redhat.com>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 18:05:40 -04:00
Jeff Garzik
bda3028813 [libata] Don't use old-EH ->eng_timeout() hook when not needed
The PATA driver set got converted to the new error handling setup, but
the old hooks were accidentally left in place.  Now, removed.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 05:41:13 -04:00
Jeff Garzik
ae1f19aeb7 [libata] sata_mv: fix oops by filling in missing hook
Only two of three ata_port_operations structs had a ->data_xfer member,
which led to, uh, a lack of data xfer.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-09-27 03:42:37 -04:00