aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx
Commit message (Collapse)AuthorAgeFilesLines
* [SCSI] aic7xxx/aic79xx: fix module removal path not to panicJames Bottomley2005-10-025-10/+15
| | | | | | | | | | | | In these drivers, scsi_remove_host() is called too late, at the point it is called, the driver has already shut down too far to accept any I/O that the shutdown might generate. Any generated I/O actually triggers a panic. Fix this by calling scsi_remove_host() as early as possible and not calling scsi_host_put() until just before we kfree the ahc_softc. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: move to dma_get_required_mask() and correct 39 bit assumptionsJames Bottomley2005-09-133-14/+5
| | | | | | | | | | | | | | | This patch moves aic7xxx over to the dma_get_required_mask() API and dumps its open coded memory check. It also appears from this bug: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167049 That 39 bit addressing doesn't work on older cards. I surmise that the AHC_LARGE_SCBS flag is the one that marks cards capable of using 39 bit addressing, so I also folded that check into the code. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* Merge by hand (conflicts in sd.c)James Bottomley2005-09-066-165/+253
|\
| * [SCSI] aic7xxx: remove aiclib.cChristoph Hellwig2005-09-046-165/+253
| | | | | | | | | | | | | | | | #include of C files and macro tricks to rename symbols are evil and just cause trouble. Let's doublicate the two functions as they're going to go away soon enough anyway. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | Merge HEAD from ../scsi-misc-2.6-tmp James Bottomley2005-08-2822-6484/+1746
|\ \ | |/
| * [SCSI] aiclib remove deadChristoph Hellwig2005-08-152-2124/+0
| | | | | | | | | | | | | | | | remove lots of completely dead code from aiclib, there's not a lot left and even what's left is rather useless. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: sane pci probingChristoph Hellwig2005-08-157-291/+60
| | | | | | | | | | | | | | remove ahd_tailq and do sane pci probing. ported over from aic7xxx. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: remove some dead codeChristoph Hellwig2005-08-152-38/+0
| | | | | | | | | | | | | | remove some dead cruft, as done already in aic7xxx Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: lost multifunction flags handlingJames Bottomley2005-08-131-0/+29
| | | | | | | | | | | | | | | | | | From: Christoph Hellwig <hch@lst.de> Multi-function cards need to inherit the PCI flags from the master PCI device. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix warning in aic7770.cakpm@osdl.org2005-08-121-1/+0
| | | | | | | | | | | | | | | | | | | | From: "Martin J. Bligh" <mbligh@mbligh.org> drivers/scsi/aic7xxx/aic7770.c: In function `aic7770_config': drivers/scsi/aic7xxx/aic7770.c:129: warning: unused variable `l' Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: fix boot panic with no hardwareJames Bottomley2005-08-092-5/+1
| | | | | | | | | | | | | | | | There's a spurious (and illegal since it's marked __exit) call to ahc_linux_exit() in ahc_linux_init() which causes a double list deletion of the transport class; remove it. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: needs to select SPI_TRANSPORT_ATTRSakpm@osdl.org2005-08-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | without it you get this failure: drivers/built-in.o(.text+0xdcccd): In function `ahd_linux_slave_configure': drivers/scsi/aic7xxx/aic79xx_osm.c:636: undefined reference to `spi_dv_device' drivers/built-in.o(.text+0xdd7b1): In function `ahd_send_async': drivers/scsi/aic7xxx/aic79xx_osm.c:1652: undefined reference to `spi_display_xfer_agreement' drivers/built-in.o(.init.text+0x7b4d): In function `ahd_linux_init': drivers/scsi/aic7xxx/aic79xx_osm.c:2765: undefined reference to `spi_attach_transport' drivers/built-in.o(.init.text+0x7c94):drivers/scsi/aic7xxx/aic79xx_osm.c:2774: undefined reference to `spi_release_transport' drivers/built-in.o(.exit.text+0x72c): In function `ahd_linux_exit': drivers/scsi/aic7xxx/aic79xx_osm.c:2783: undefined reference to `spi_release_transport' Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx/79xx: fix another potential panic due to a non existent targetJames Bottomley2005-08-052-4/+4
| | | | | | | | | | | | I ran into this one sending bus resets across the hardware. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9James Bottomley2005-08-0410-512/+544
| | | | | | | | | | | | | | This patch upports all relevant code fixes and bumps the driver version to 7.0 to signify starting a new tree. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: fixup DT settingHannes Reinecke2005-08-041-2/+3
| | | | | | | | | | | | | | | | | | | | this patch is just a cross-port of the fixup for aic7xxx DT settings. As the same restrictions apply for aic79xx also (DT requires wide transfers) the dt setting routine should be modified equivalently. And an invalid period setting will be caught by ahd_find_syncrate() anyway. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: add hold_mcs to the transport parametersJames Bottomley2005-08-031-1/+37
| | | | | | | | | | | | since this card can support the setting, add it to the parameter list. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: fix up transport settingsJames Bottomley2005-08-032-32/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a slight problem in the way you've done the transport parameters; reading from the variables actually produces the current settings, not the ones you just set (and there's usually a lag because devices don't renegotiate until the next command goes over the bus). If you set the bit immediately, you get into the situation where the transport parameters report something as being set even if the drive cannot support it. I patched the driver to do it this way and also corrected a panic in the proc routines. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: DV parameter settingsHannes Reinecke2005-08-031-13/+218
| | | | | | | | | | | | | | | | This patch updates various scsi_transport_spi parameters with the actual parameters used by the driver internally. Domain Validation for all devices should now work properly. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: update to use scsi_transport_spiHannes Reinecke2005-08-033-2837/+799
| | | | | | | | | | | | | | | | | | This patch updates the aic79xx driver to take advantage of the scsi_transport_spi infrastructure. Patch is quite a mess as some procedures have been reshuffled to be closer to the aic7xxx driver. Rejections fixed and Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic79xx: Remove busyqHannes Reinecke2005-08-034-724/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | From: Jeff Garzik <jgarzik@pobox.com> This patch removes the busyq in aic79xx and uses the command-queue from the midlayer instead. Additionally some dead code is removed. Signed-off-by: Hannes Reinecke <hare@suse.de> Fixed rejections Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic byteorder fixes after recent cleanupOlaf Hering2005-07-302-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | aic doesnt work anymore after this change which appeared int 2.6.13-rc1: [SCSI] aic7xxx/aic79xx: remove useless byte order macro cruft 2 files did not include byteorder.h, aic died with panic "Unknown opcode encountered in seq program" This patch fixes it for me. Signed-off-by: Olaf Hering <olh@suse.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6Linus Torvalds2005-08-041-13/+11
|\ \
| * | [SCSI] fix aic7xxx performance issues since 2.6.12-rc2James Bottomley2005-08-041-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several people noticed we dropped quite a bit on benchmark figures. OK, it was my fault but unfortunately I discovered I ran out of brown paper bags a while ago and forgot to reorder them. The issue is that a construct introduced in the conversion of the driver to use the transport class keyed off whether the block request was tagged or not. However, the aic7xxx driver doesn't properly set up the block layer TCQ (it uses the wrong API), so the driver now things all requests are untagged and we keep it to a queue depth of a single element. Oops. The fix is to use the correct TCQ API. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * | [SCSI] aic7xxx: final fixes for DT handlingJames Bottomley2005-08-021-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | The aic7xxx can support Data Group transfers at periods > 12.5, so eliminate that restriction. Additionally wide is a requirement for DT so ensure wide is set if users request DT. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * | [SCSI] aic7xxx: fix bug in DT handingJames Bottomley2005-07-301-4/+6
| |/ | | | | | | | | | | | | | | | | | | | | Basically DT isn't reported or handled at all. The problem is that lines of code like this: spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ; don't do what you think they do when spi_dt is a single bit variable. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | [PATCH] aic byteorder fixes after recent cleanupOlaf Hering2005-08-022-5/+7
|/ | | | | | | | | | | | | | | | | Rebuild the aic7xxx firmware doesn't work anymore after this change which appeared int 2.6.13-rc1: [SCSI] aic7xxx/aic79xx: remove useless byte order macro cruft Two files did not include byteorder.h, resulting in aic dying with a panic "Unknown opcode encountered in seq program" This fixes it for me. Signed-off-by: Olaf Hering <olh@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] turn many #if $undefined_string into #ifdef $undefined_stringOlaf Hering2005-07-272-2/+2
| | | | | | | | | turn many #if $undefined_string into #ifdef $undefined_string to fix some warnings after -Wno-def was added to global CFLAGS Signed-off-by: Olaf Hering <olh@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [SCSI] aic7xxx: remove ahc_tailqChristoph Hellwig2005-07-117-261/+6
| | | | | | | | now that we do normal PCI probing there's no need to keep a list of all HBAs. Rejections fixed up and Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: sane pci probingChristoph Hellwig2005-07-114-60/+22
| | | | | | always probe in bus order, avoid any reordering Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic79xx: ahd_linux_dev_reset() cleanupAndrew Morton2005-07-111-2/+2
| | | | | | | | | | Use the macros consistently in ahd_linux_dev_reset(). If ahd_linux_dev_reset() really can be called with local interrupts disabled then yuk. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: fix boot hang with Fujitsu drivesJames Bottomley2005-07-031-0/+8
| | | | | | | | | | Apparently these are the only drives that try to negotiate IU and QAS at u160 speeds. The aic7xxx driver can't cope with this. The fix is to eliminate the IU and QAS setting routines. I've #if 0'd them out, just in case we ever get the sequencer documentation out of Adaptec, since we'd then be able to fix the driver. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: correct target valid check in aic7xxx_proc.cJames Bottomley2005-06-261-2/+2
| | | | | | | | From: Andy Whitcroft <apw@shadowen.org> Updated to remove the bogus translated target check. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* aic7xxx/aic79xx_osm: revert completely bogus ahd_linux_queue() patchJeff Garzik2005-06-191-4/+4
|
* merge by hand (fix up qla_os.c merge error)James Bottomley2005-06-179-702/+341
|\
| * [SCSI] allow sleeping in ->eh_bus_reset_handler()Jeff Garzik2005-06-172-2/+6
| | | | | | | | Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] allow sleeping in ->eh_device_reset_handler()Jeff Garzik2005-06-171-4/+4
| | | | | | | | Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] allow sleeping in ->eh_abort_handler()Jeff Garzik2005-06-172-4/+8
| | | | | | | | Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: fix the BIOS limits setting routinesJames Bottomley2005-06-131-10/+25
| | | | | | | | | | | | | | | | Following the go around over the SONY DVD that needs artificial limits, this should be the correct code for all cases (minus the debugging prints). Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: clean up eisa supportChristoph Hellwig2005-06-113-131/+63
| | | | | | | | | | | | | | | | | | | | - the eisa layer only probes when it's actually safe, no need for a driver option - store the id table directly in linux format instead of convering at runtime Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: remove some dead woodChristoph Hellwig2005-06-113-47/+3
| | | | | | | | | | | | | | especially the now dead scsi_cmnd overlay Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: remove ahc_find_softcChristoph Hellwig2005-06-115-63/+16
| | | | | | | | | | | | | | there's absolutely no reason not to trust the driver private data Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: do not check for duplicate pci idsChristoph Hellwig2005-06-111-16/+0
| | | | | | | | | | | | | | pci layer handles this just fine for us Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx/aic79xx: remove useless byte order macro cruftChristoph Hellwig2005-06-112-34/+0
| | | | | | | | | | Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] fix aic7xxx coupled parameter problemJames Bottomley2005-06-031-13/+13
| | | | | | | | | | | | | | For setting coupled parameters, we need to be comparing against the goal settings, not the current ones. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| * [SCSI] aic7xxx: remove separate target and device allocationsJames Bottomley2005-05-263-393/+218
| | | | | | | | | | | | | | | | | | | | Since the aic driver is now taught to speak in terms of the generic linux devices, we can now also dispense with the transport class get routines (since we update the parameters when the driver sees they change) and also plumb it into the spi transport transfer agreement reporting infrastructure. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* | [PATCH] swsusp: ahd_dv_0 can't be stoppedShaohua Li2005-05-281-1/+1
|/ | | | | | | | | This driver wants to set PF_NOFREEZE. Cc: James Bottomley <James.Bottomley@steeleye.com> Cc: Pavel Machek <pavel@ucw.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] aic7xxx_osm build fixAndrew Morton2005-05-241-2/+5
| | | | | | | | Fix a c99ism. Cc: James Bottomley <James.Bottomley@steeleye.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [SCSI] aic7xxx: fix U160 modeJames Bottomley2005-05-201-0/+11
| | | | | | | | | | The new period/dt setting routines don't get the coupling of these parameters correct. This means that Domain Validation never gets DT set, and thus the drive gets restricted to U80. Fix this by restoring the couplings in the set routines. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: add back lockingJames Bottomley2005-05-201-4/+11
| | | | | | | | Tampering with the settings has to be done under the host lock ... slave_alloc isn't called under any lock, so this has to be done explicitly. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
* [SCSI] aic7xxx: make correct use of slave_alloc/destroy and remove the per ↵James Bottomley2005-05-202-112/+79
| | | | | | | | | | | | | | | | | | | | | | | device timer The allocation of all of our components should be done in slave alloc. Currently it's rather fancifully refcounted in the queuecommand callback. This patch moves allocation and destroy to their correct places in slave_alloc/slave_destory. Now we can guarantee that everywhere a device is requested, it's actually been allocated, so don't check for this anymore. Additionally, the per device busy timer was the only source of potential use after free. It's been deleted because Linux does the correct thing with busy returns, so there's no need to implement a separate timer in the driver. Finally, implement code that forces all the device parameters to zero (i.e. async and narrow) in the slave alloc, inform the spi class of the bios recorded maximums and wait until slave configure before trying anything more adventurous. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>