diff options
| author | Martin Dalecki <dalecki@evision-ventures.com> | 2002-05-17 09:47:35 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-05-17 09:47:35 -0700 |
| commit | 5ff49f70e3e9d78b213bd773c4298626fea22ffd (patch) | |
| tree | 585c09d794032f2fbc3ce384294c94761e1f9f72 /include | |
| parent | 938f5b7250c5dcba9610b0936d50b2d5bb968d72 (diff) | |
[PATCH] 2.5.15 IDE 62a
- Streamline device detection reporting to always use ->slot_name.
- Apply 64 bit sector size fixes to the overall code.
- Push ->handler down to the struct ata_channel.
- Introduce channel group based locking instead of a single global lock for all
operations. There are still some places where we have preserved the ide_lock.
We can't lock for queues during device probe and we protect global data
structures during device registration and unregistration in ide.c with it.
- Start replacement of serialized access to the registers of
channels which share them with proper host chip driver specific locking.
This affects the following host chip drivers:
cmd640.c, rz1000, ... ?
Seems some are setting the serialize flag just in case. So better let's do it
gradually over time.
Well, I still have to think whatever we really need to put channels sharing
an IRQ line in the same locking group.
From now on the sick concept of a hw group is gone now. We have full blown
per channel request queues! Hopefully I will be able soon to get my hands on
a dual Athlon machine to check how this all behaves on a multi SMP machine.
- Move the whole SUPPORT_VLB_SYNC stuff to the only place where it is used: the
pdc4030 host chip driver. Eliminate it from the global driver part.
- Eliminate pseudo portability macros from pdc4030. This is a host chip firmly
based on VLB.
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-cris/ide.h | 3 | ||||
| -rw-r--r-- | include/asm-m68k/ide.h | 3 | ||||
| -rw-r--r-- | include/asm-mips/ide.h | 3 | ||||
| -rw-r--r-- | include/asm-ppc/ide.h | 2 | ||||
| -rw-r--r-- | include/asm-sparc/ide.h | 3 | ||||
| -rw-r--r-- | include/asm-sparc64/ide.h | 3 | ||||
| -rw-r--r-- | include/linux/ide.h | 25 |
7 files changed, 7 insertions, 35 deletions
diff --git a/include/asm-cris/ide.h b/include/asm-cris/ide.h index ac8dc923acc2..a2bada17408b 100644 --- a/include/asm-cris/ide.h +++ b/include/asm-cris/ide.h @@ -90,9 +90,6 @@ static __inline__ void ide_init_default_hwifs(void) /* some configuration options we don't need */ -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 - #undef SUPPORT_SLOW_DATA_PORTS #define SUPPORT_SLOW_DATA_PORTS 0 diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h index 07da86fbd6be..28c7e66668ea 100644 --- a/include/asm-m68k/ide.h +++ b/include/asm-m68k/ide.h @@ -83,9 +83,6 @@ static __inline__ void ide_init_default_hwifs(void) #undef SUPPORT_SLOW_DATA_PORTS #define SUPPORT_SLOW_DATA_PORTS 0 -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 - /* this definition is used only on startup .. */ #undef HD_DATA #define HD_DATA NULL diff --git a/include/asm-mips/ide.h b/include/asm-mips/ide.h index 4ad64b0cca63..aca543ae9d55 100644 --- a/include/asm-mips/ide.h +++ b/include/asm-mips/ide.h @@ -65,9 +65,6 @@ static __inline__ void ide_init_default_hwifs(void) #endif } -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 - #endif /* __KERNEL__ */ #endif /* __ASM_IDE_H */ diff --git a/include/asm-ppc/ide.h b/include/asm-ppc/ide.h index 616d7b87994e..be611cb54aaf 100644 --- a/include/asm-ppc/ide.h +++ b/include/asm-ppc/ide.h @@ -43,8 +43,6 @@ extern struct ide_machdep_calls ppc_ide_md; #undef SUPPORT_SLOW_DATA_PORTS #define SUPPORT_SLOW_DATA_PORTS 0 -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 #define ide__sti() __sti() diff --git a/include/asm-sparc/ide.h b/include/asm-sparc/ide.h index 54a01e5ea900..224ec3b3e085 100644 --- a/include/asm-sparc/ide.h +++ b/include/asm-sparc/ide.h @@ -76,9 +76,6 @@ static __inline__ void ide_init_default_hwifs(void) #undef SUPPORT_SLOW_DATA_PORTS #define SUPPORT_SLOW_DATA_PORTS 0 -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 - #undef HD_DATA #define HD_DATA ((ide_ioreg_t)0) diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h index 4ec8fb624505..7de4db535651 100644 --- a/include/asm-sparc64/ide.h +++ b/include/asm-sparc64/ide.h @@ -72,9 +72,6 @@ static __inline__ void ide_init_default_hwifs(void) #undef SUPPORT_SLOW_DATA_PORTS #define SUPPORT_SLOW_DATA_PORTS 0 -#undef SUPPORT_VLB_SYNC -#define SUPPORT_VLB_SYNC 0 - #undef HD_DATA #define HD_DATA ((ide_ioreg_t)0) diff --git a/include/linux/ide.h b/include/linux/ide.h index be467744a615..a449573d7b55 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -40,9 +40,6 @@ /* Right now this is only needed by a promise controlled. */ -#ifndef SUPPORT_VLB_SYNC /* 1 to support weird 32-bit chips */ -# define SUPPORT_VLB_SYNC 1 /* 0 to reduce kernel size */ -#endif #ifndef DISK_RECOVERY_TIME /* off=0; on=access_delay_time */ # define DISK_RECOVERY_TIME 0 /* for hardware that needs it */ #endif @@ -74,8 +71,6 @@ typedef unsigned char byte; /* used everywhere */ */ #define DMA_PIO_RETRY 1 /* retrying in PIO */ -#define HWGROUP(drive) (drive->channel->hwgroup) - /* * Definitions for accessing IDE controller registers */ @@ -444,18 +439,16 @@ enum { IDE_DMA /* DMA in progress */ }; -typedef struct hwgroup_s { - /* FIXME: We should look for busy request queues instead of looking at - * the !NULL state of this field. - */ - ide_startstop_t (*handler)(struct ata_device *, struct request *); /* irq handler, if active */ -} ide_hwgroup_t; - struct ata_channel { struct device dev; /* device handle */ int unit; /* channel number */ - struct hwgroup_s *hwgroup; /* actually (ide_hwgroup_t *) */ + /* This lock is used to serialize requests on the same device queue or + * between differen queues sharing the same irq line. + */ + spinlock_t *lock; + + ide_startstop_t (*handler)(struct ata_device *, struct request *); /* irq handler, if active */ struct timer_list timer; /* failsafe timer */ int (*expiry)(struct ata_device *, struct request *); /* irq handler, if active */ unsigned long poll_timeout; /* timeout value during polled operations */ @@ -777,11 +770,7 @@ extern int set_transfer(struct ata_device *, struct ata_taskfile *); extern int system_bus_speed; -/* - * ide_stall_queue() can be used by a drive to give excess bandwidth back - * to the hwgroup by sleeping for timeout jiffies. - */ -void ide_stall_queue(struct ata_device *, unsigned long); +extern void ide_stall_queue(struct ata_device *, unsigned long); /* * CompactFlash cards and their brethern pretend to be removable hard disks, |
