Skip to contentSkip to conversation

IDE update

PATCH In review Bartlomiej Zolnierkiewicz 4 participants 8 messages May 9, 2007

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 IDE update

[ I've sent it to Linus a moment ago, here is a copy for linux-{ide,kernel} ]

Highlights of this update:

* the code for selecting and programming the best DMA transfer mode has been reworked to be cleaner, more generic and more libata-like, (> 500 LOCs gone and this change allows the change described below)

* more cable detection fixes, also be more user-friendly [+ developer friendly when it comes to debugging problems :) ] and inform user about limiting DMA speed to UDMA/33 if the 40-wire cable was detected instead of 80-wire one

* make /proc/ide interface optional (but enabled by default) as all important functionality should be now available through sysfs (+ ioctls), while at it do some cleanup/fixes of IDE procfs code

Please pull from:

master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git/

to receive the following updates:

 drivers/ide/Kconfig            |   14 ++
 drivers/ide/Makefile           |    2 +-
 drivers/ide/arm/bast-ide.c     |    2 +-
 drivers/ide/arm/icside.c       |    9 +-
 drivers/ide/arm/ide_arm.c      |    2 +-
 drivers/ide/arm/rapide.c       |    2 +-
 drivers/ide/cris/ide-cris.c    |    4 +-
 drivers/ide/h8300/ide-h8300.c  |    2 +-
 drivers/ide/ide-cd.c           |   20 +-
 drivers/ide/ide-disk.c         |  101 +++++++--
 drivers/ide/ide-dma.c          |   94 ++++++++
 drivers/ide/ide-floppy.c       |   30 ++--
 drivers/ide/ide-generic.c      |    2 -
 drivers/ide/ide-io.c           |   17 +-
 drivers/ide/ide-iops.c         |   55 +++---
 drivers/ide/ide-lib.c          |  132 ++---------
 drivers/ide/ide-pnp.c          |    2 +-
 drivers/ide/ide-probe.c        |    3 +
 drivers/ide/ide-proc.c         |  344 +++++++++++++++++++++++++++--
 drivers/ide/ide-tape.c         |   49 ++--
 drivers/ide/ide.c              |  470 ++++++++--------------------------------
 drivers/ide/legacy/ali14xx.c   |    3 +-
 drivers/ide/legacy/buddha.c    |    2 +-
 drivers/ide/legacy/dtc2278.c   |    3 +-
 drivers/ide/legacy/falconide.c |    2 +-
 drivers/ide/legacy/gayle.c     |    2 +-
 drivers/ide/legacy/ht6560b.c   |    3 +-
 drivers/ide/legacy/ide-cs.c    |    2 +-
 drivers/ide/legacy/macide.c    |    6 +-
 drivers/ide/legacy/q40ide.c    |    2 +-
 drivers/ide/legacy/qd65xx.c    |    7 +-
 drivers/ide/legacy/umc8672.c   |    3 +-
 drivers/ide/mips/au1xxx-ide.c  |    3 +
 drivers/ide/mips/swarm.c       |    3 +
 drivers/ide/pci/aec62xx.c      |   62 ++----
 drivers/ide/pci/alim15x3.c     |   97 +++------
 drivers/ide/pci/amd74xx.c      |    6 +-
 drivers/ide/pci/atiixp.c       |   40 +----
 drivers/ide/pci/cmd64x.c       |   90 +++------
 drivers/ide/pci/cs5520.c       |   20 ++-
 drivers/ide/pci/cs5535.c       |   33 +---
 drivers/ide/pci/delkin_cb.c    |    2 +-
 drivers/ide/pci/hpt34x.c       |   27 +--
 drivers/ide/pci/hpt366.c       |   85 +++-----
 drivers/ide/pci/it8213.c       |   39 +---
 drivers/ide/pci/it821x.c       |   20 +--
 drivers/ide/pci/jmicron.c      |   40 +----
 drivers/ide/pci/pdc202xx_new.c |   40 +---
 drivers/ide/pci/pdc202xx_old.c |   54 +----
 drivers/ide/pci/piix.c         |  163 +++-----------
 drivers/ide/pci/scc_pata.c     |   21 +--
 drivers/ide/pci/serverworks.c  |   31 ++-
 drivers/ide/pci/sgiioc4.c      |    2 +-
 drivers/ide/pci/siimage.c      |   45 ++--
 drivers/ide/pci/sis5513.c      |   44 +---
 drivers/ide/pci/slc90e66.c     |   24 +--
 drivers/ide/pci/tc86c001.c     |   20 +--
 drivers/ide/pci/triflex.c      |   15 +-
 drivers/ide/ppc/pmac.c         |    2 +
 drivers/ide/setup-pci.c        |   27 ++-
 drivers/macintosh/mediabay.c   |    2 +-
 drivers/scsi/ide-scsi.c        |   30 ++-
 include/linux/ide.h            |   93 +++++----
 63 files changed, 1107 insertions(+), 1464 deletions(-)

Bartlomiej Zolnierkiewicz (11):
ide: fix UDMA/MWDMA/SWDMA masks (v3)
ide: rework the code for selecting the best DMA transfer mode (v3)
ide: add ide_tune_dma() helper
ide: make /proc/ide/ optional
ide: split off ioctl handling from IDE settings (v2)
ide: move IDE settings handling to ide-proc.c
ide: cable detection fixes (take 2)
ide: add "initializing" argument to ide_register_hw()
ide: add ide_proc_register_port()
ide: legacy PCI bus order probing fixes
ide: fix PIO setup on resume for ATAPI devices

[ sorry but the patch is too big to be included ]

#1 lore raw
Quoted 14 lines · Bartlomiej Zolnierkiewicz

Bartlomiej Zolnierkiewicz (11):
ide: fix UDMA/MWDMA/SWDMA masks (v3)
ide: rework the code for selecting the best DMA transfer mode (v3)
ide: add ide_tune_dma() helper
ide: make /proc/ide/ optional
ide: split off ioctl handling from IDE settings (v2)
ide: move IDE settings handling to ide-proc.c
ide: cable detection fixes (take 2)
ide: add "initializing" argument to ide_register_hw()
ide: add ide_proc_register_port()
ide: legacy PCI bus order probing fixes
ide: fix PIO setup on resume for ATAPI devices

Quoted 1 line

[ sorry but the patch is too big to be included ]

The limit was raised to 400K IIRC.

Jeff

#5 lore raw
In reply to Bartlomiej Zolnierkiewicz
Quoted 6 lines · Bartlomiej Zolnierkiewicz

* the code for selecting and programming the best DMA transfer mode has been reworked to be cleaner, more generic and more libata-like, (> 500 LOCs gone and this change allows the change described below)

Bartlomiej Zolnierkiewicz (11):
ide: rework the code for selecting the best DMA transfer mode (v3)

Has this seen testing/exposure in -mm tree?

Jeff

#6 lore raw
Quoted 11 lines · On Wed, 09 May 2007 18:47:23 -0400 Jeff Garzik <[email protected]> wrote:
Quoted 6 lines · Bartlomiej Zolnierkiewicz

* the code for selecting and programming the best DMA transfer mode has been reworked to be cleaner, more generic and more libata-like, (> 500 LOCs gone and this change allows the change described below)

Bartlomiej Zolnierkiewicz (11):
ide: rework the code for selecting the best DMA transfer mode (v3)

Has this seen testing/exposure in -mm tree?

argh. If this was in a file called ide-rework-the-code-for-selecting-the-best-DMA-transfer-mode.patch then it would be so easy.

<logs into hera>

<greps>

ah, it's hidden in ide-max-dma-mode-v3.patch.

akpm:/usr/src/25> grep ide-max-dma-mode-v3 pc/*series pc/2.6.21-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc2-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc3-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc3-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc4-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc5-mm3-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc5-mm4-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc6-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc7-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc7-mm2-series:ide-ide-max-dma-mode-v3.patch

No probs.

#2 lore raw
In reply to Jeff Garzik
Quoted 15 lines · Jeff Garzik
Quoted 14 lines · Bartlomiej Zolnierkiewicz

Bartlomiej Zolnierkiewicz (11):
ide: fix UDMA/MWDMA/SWDMA masks (v3)
ide: rework the code for selecting the best DMA transfer mode (v3)
ide: add ide_tune_dma() helper
ide: make /proc/ide/ optional
ide: split off ioctl handling from IDE settings (v2)
ide: move IDE settings handling to ide-proc.c
ide: cable detection fixes (take 2)
ide: add "initializing" argument to ide_register_hw()
ide: add ide_proc_register_port()
ide: legacy PCI bus order probing fixes
ide: fix PIO setup on resume for ATAPI devices

Quoted 4 lines
Quoted 1 line

[ sorry but the patch is too big to be included ]

The limit was raised to 400K IIRC.

That's (good) news to me, here goes the actual 150K patch:

drivers/ide/Kconfig +14 -0
index 5bdf64b..1d06b41 100644
@@ -291,6 +291,17 @@ config IDE_TASK_IOCTL
 
 	  If you are unsure, say N here.
 
+config IDE_PROC_FS
+	bool "legacy /proc/ide/ support"
+	depends on IDE && PROC_FS
+	default y
+	help
+	  This option enables support for the various files in
+	  /proc/ide.  In Linux 2.6 this has been superseded by
+	  files in sysfs but many legacy applications rely on this.
+
+	  If unsure say Y.
+
 comment "IDE chipset support/bugfixes"
 
 config IDE_GENERIC
@@ -360,6 +371,9 @@ config IDEPCI_SHARE_IRQ
 	  It is safe to say Y to this question, in most cases.
 	  If unsure, say N.
 
+config IDEPCI_PCIBUS_ORDER
+	def_bool PCI && BLK_DEV_IDE=y && BLK_DEV_IDEPCI
+
 config BLK_DEV_OFFBOARD
 	bool "Boot off-board chipsets first support"
 	depends on PCI && BLK_DEV_IDEPCI
drivers/ide/Makefile +1 -1
index d9f029e..75dc696 100644
@@ -20,7 +20,7 @@ ide-core-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o
 # Core IDE code - must come before legacy
 ide-core-$(CONFIG_BLK_DEV_IDEPCI)	+= setup-pci.o
 ide-core-$(CONFIG_BLK_DEV_IDEDMA)	+= ide-dma.o
-ide-core-$(CONFIG_PROC_FS)		+= ide-proc.o
+ide-core-$(CONFIG_IDE_PROC_FS)		+= ide-proc.o
 ide-core-$(CONFIG_BLK_DEV_IDEPNP)	+= ide-pnp.o
 ide-core-$(CONFIG_BLK_DEV_IDEACPI)	+= ide-acpi.o
 
drivers/ide/arm/bast-ide.c +1 -1
index 9d474e5..f7449d0 100644
@@ -45,7 +45,7 @@ bastide_register(unsigned int base, unsigned int aux, int irq,
 	hw.io_ports[IDE_CONTROL_OFFSET] = aux + (6 * 0x20);
 	hw.irq = irq;
 
-	ide_register_hw(&hw, hwif);
+	ide_register_hw(&hw, 0, hwif);
 
 	return 0;
 }
drivers/ide/arm/icside.c +6 -3
index e2953fc..1fe0457 100644
@@ -342,7 +342,7 @@ static int icside_dma_check(ide_drive_t *drive)
 	 * Enable DMA on any drive that has multiword DMA
 	 */
 	if (id->field_valid & 2) {
-		xfer_mode = ide_dma_speed(drive, 0);
+		xfer_mode = ide_max_dma_mode(drive);
 		goto out;
 	}
 
@@ -591,7 +591,8 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
 	state->hwif[0] = hwif;
 
 	probe_hwif_init(hwif);
-	create_proc_ide_interfaces();
+
+	ide_proc_register_port(hwif);
 
 	return 0;
 }
@@ -679,7 +680,9 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
 
 	probe_hwif_init(hwif);
 	probe_hwif_init(mate);
-	create_proc_ide_interfaces();
+
+	ide_proc_register_port(hwif);
+	ide_proc_register_port(mate);
 
 	return 0;
 
drivers/ide/arm/ide_arm.c +1 -1
index 23488c4..a3d6744 100644
@@ -38,6 +38,6 @@ void __init ide_arm_init(void)
 		memset(&hw, 0, sizeof(hw));
 		ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
 		hw.irq = IDE_ARM_IRQ;
-		ide_register_hw(&hw, NULL);
+		ide_register_hw(&hw, 1, NULL);
 	}
 }
drivers/ide/arm/rapide.c +1 -1
index 9c6c49f..890ea3f 100644
@@ -76,7 +76,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)
 		hwif->gendev.parent = &ec->dev;
 		hwif->noprobe = 0;
 		probe_hwif_init(hwif);
-		create_proc_ide_interfaces();
+		ide_proc_register_port(hwif);
 		ecard_set_drvdata(ec, hwif);
 		goto out;
 	}
drivers/ide/cris/ide-cris.c +2 -2
index 5e8efc8..c04cb25 100644
@@ -796,7 +796,7 @@ init_e100_ide (void)
 		                ide_offsets,
 		                0, 0, cris_ide_ack_intr,
 		                ide_default_irq(0));
-		ide_register_hw(&hw, &hwif);
+		ide_register_hw(&hw, 1, &hwif);
 		hwif->mmio = 1;
 		hwif->chipset = ide_etrax100;
 		hwif->tuneproc = &tune_cris_ide;
@@ -1004,7 +1004,7 @@ static int cris_ide_build_dmatable (ide_drive_t *drive)
 
 static int cris_config_drive_for_dma (ide_drive_t *drive)
 {
-	u8 speed = ide_dma_speed(drive, 1);
+	u8 speed = ide_max_dma_mode(drive);
 
 	if (!speed)
 		return 0;
drivers/ide/h8300/ide-h8300.c +1 -1
index 88750a3..6d26ad7 100644
@@ -101,7 +101,7 @@ void __init h8300_ide_init(void)
 	hw_setup(&hw);
 
 	/* register if */
-	idx = ide_register_hw(&hw, &hwif);
+	idx = ide_register_hw(&hw, 1, &hwif);
 	if (idx == -1) {
 		printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
 		return;
drivers/ide/ide-cd.c +12 -8
index 638becd..252ab82 100644
@@ -3059,10 +3059,14 @@ int ide_cdrom_probe_capabilities (ide_drive_t *drive)
 	return nslots;
 }
 
+#ifdef CONFIG_IDE_PROC_FS
 static void ide_cdrom_add_settings(ide_drive_t *drive)
 {
-	ide_add_setting(drive,	"dsc_overlap",		SETTING_RW, -1, -1, TYPE_BYTE, 0, 1, 1,	1, &drive->dsc_overlap, NULL);
+	ide_add_setting(drive, "dsc_overlap", SETTING_RW, TYPE_BYTE, 0, 1, 1, 1, &drive->dsc_overlap, NULL);
 }
+#else
+static inline void ide_cdrom_add_settings(ide_drive_t *drive) { ; }
+#endif
 
 /*
  * standard prep_rq_fn that builds 10 byte cmds
@@ -3274,7 +3278,7 @@ int ide_cdrom_setup (ide_drive_t *drive)
 	return 0;
 }
 
-#ifdef CONFIG_PROC_FS
+#ifdef CONFIG_IDE_PROC_FS
 static
 sector_t ide_cdrom_capacity (ide_drive_t *drive)
 {
@@ -3291,7 +3295,7 @@ static void ide_cd_remove(ide_drive_t *drive)
 {
 	struct cdrom_info *info = drive->driver_data;
 
-	ide_unregister_subdriver(drive, info->driver);
+	ide_proc_unregister_driver(drive, info->driver);
 
 	del_gendisk(info->disk);
 
@@ -3321,7 +3325,7 @@ static void ide_cd_release(struct kref *kref)
 
 static int ide_cd_probe(ide_drive_t *);
 
-#ifdef CONFIG_PROC_FS
+#ifdef CONFIG_IDE_PROC_FS
 static int proc_idecd_read_capacity
 	(char *page, char **start, off_t off, int count, int *eof, void *data)
 {
@@ -3336,8 +3340,6 @@ static ide_proc_entry_t idecd_proc[] = {
 	{ "capacity", S_IFREG|S_IRUGO, proc_idecd_read_capacity, NULL },
 	{ NULL, 0, NULL, NULL }
 };
-#else
-# define idecd_proc	NULL
 #endif
 
 static ide_driver_t ide_cdrom_driver = {
@@ -3355,7 +3357,9 @@ static ide_driver_t ide_cdrom_driver = {
 	.end_request		= ide_end_request,
 	.error			= __ide_error,
 	.abort			= __ide_abort,
+#ifdef CONFIG_IDE_PROC_FS
 	.proc			= idecd_proc,
+#endif
 };
 
 static int idecd_open(struct inode * inode, struct file * file)
@@ -3517,7 +3521,7 @@ static int ide_cd_probe(ide_drive_t *drive)
 
 	ide_init_disk(g, drive);
 
-	ide_register_subdriver(drive, &ide_cdrom_driver);
+	ide_proc_register_driver(drive, &ide_cdrom_driver);
 
 	kref_init(&info->kref);
 
@@ -3534,7 +3538,7 @@ static int ide_cd_probe(ide_drive_t *drive)
 	g->flags = GENHD_FL_CD | GENHD_FL_REMOVABLE;
 	if (ide_cdrom_setup(drive)) {
 		struct cdrom_device_info *devinfo = &info->devinfo;
-		ide_unregister_subdriver(drive, &ide_cdrom_driver);
+		ide_proc_unregister_driver(drive, &ide_cdrom_driver);
 		kfree(info->buffer);
 		kfree(info->toc);
 		kfree(info->changer_info);
drivers/ide/ide-disk.c +78 -23

181 lines not on this page · raw message

drivers/ide/ide-dma.c +94 -0

100 lines not on this page · raw message

drivers/ide/ide-floppy.c +15 -15
index 57cd21c..f429be8 100644
@@ -1811,18 +1811,22 @@ static int idefloppy_identify_device (ide_drive_t *drive,struct hd_driveid *id)
 	return 0;
 }
 
+#ifdef CONFIG_IDE_PROC_FS
 static void idefloppy_add_settings(ide_drive_t *drive)
 {
 	idefloppy_floppy_t *floppy = drive->driver_data;
 
 /*
- *			drive	setting name	read/write	ioctl	ioctl		data type	min	max	mul_factor	div_factor	data pointer		set function
+ *			drive	setting name	read/write	data type	min	max	mul_factor	div_factor	data pointer		set function
  */
-	ide_add_setting(drive,	"bios_cyl",		SETTING_RW,					-1,			-1,			TYPE_INT,	0,	1023,				1,	1,	&drive->bios_cyl,		NULL);
-	ide_add_setting(drive,	"bios_head",		SETTING_RW,					-1,			-1,			TYPE_BYTE,	0,	255,				1,	1,	&drive->bios_head,		NULL);
-	ide_add_setting(drive,	"bios_sect",		SETTING_RW,					-1,			-1,			TYPE_BYTE,	0,	63,				1,	1,	&drive->bios_sect,		NULL);
-	ide_add_setting(drive,	"ticks",		SETTING_RW,					-1,			-1,			TYPE_BYTE,	0,	255,				1,	1,	&floppy->ticks,		NULL);
+	ide_add_setting(drive,	"bios_cyl",	SETTING_RW,	TYPE_INT,	0,	1023,		1,		1,	&drive->bios_cyl,	NULL);
+	ide_add_setting(drive,	"bios_head",	SETTING_RW,	TYPE_BYTE,	0,	255,		1,		1,	&drive->bios_head,	NULL);
+	ide_add_setting(drive,	"bios_sect",	SETTING_RW,	TYPE_BYTE,	0,	63,		1,		1,	&drive->bios_sect,	NULL);
+	ide_add_setting(drive,	"ticks",	SETTING_RW,	TYPE_BYTE,	0,	255,		1,		1,	&floppy->ticks,		NULL);
 }
+#else
+static inline void idefloppy_add_settings(ide_drive_t *drive) { ; }
+#endif
 
 /*
  *	Driver initialization.
@@ -1873,7 +1877,7 @@ static void ide_floppy_remove(ide_drive_t *drive)
 	idefloppy_floppy_t *floppy = drive->driver_data;
 	struct gendisk *g = floppy->disk;
 
-	ide_unregister_subdriver(drive, floppy->driver);
+	ide_proc_unregister_driver(drive, floppy->driver);
 
 	del_gendisk(g);
 
@@ -1892,8 +1896,7 @@ static void ide_floppy_release(struct kref *kref)
 	kfree(floppy);
 }
 
-#ifdef CONFIG_PROC_FS
-
+#ifdef CONFIG_IDE_PROC_FS
 static int proc_idefloppy_read_capacity
 	(char *page, char **start, off_t off, int count, int *eof, void *data)
 {
@@ -1909,12 +1912,7 @@ static ide_proc_entry_t idefloppy_proc[] = {
 	{ "geometry",	S_IFREG|S_IRUGO,	proc_ide_read_geometry,	NULL },
 	{ NULL, 0, NULL, NULL }
 };
-
-#else
-
-#define	idefloppy_proc	NULL
-
-#endif	/* CONFIG_PROC_FS */
+#endif	/* CONFIG_IDE_PROC_FS */
 
 static int ide_floppy_probe(ide_drive_t *);
 
@@ -1933,7 +1931,9 @@ static ide_driver_t idefloppy_driver = {
 	.end_request		= idefloppy_do_end_request,
 	.error			= __ide_error,
 	.abort			= __ide_abort,
+#ifdef CONFIG_IDE_PROC_FS
 	.proc			= idefloppy_proc,
+#endif
 };
 
 static int idefloppy_open(struct inode *inode, struct file *filp)
@@ -2159,7 +2159,7 @@ static int ide_floppy_probe(ide_drive_t *drive)
 
 	ide_init_disk(g, drive);
 
-	ide_register_subdriver(drive, &idefloppy_driver);
+	ide_proc_register_driver(drive, &idefloppy_driver);
 
 	kref_init(&floppy->kref);
 
drivers/ide/ide-generic.c +0 -2
index 99fd561..0f72b98 100644
@@ -22,8 +22,6 @@ static int __init ide_generic_init(void)
 	if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
 		ide_release_lock();	/* for atari only */
 
-	create_proc_ide_interfaces();
-
 	return 0;
 }
 
drivers/ide/ide-io.c +7 -10
index 8670112..8e56814 100644
@@ -172,15 +172,6 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
 
 	memset(args, 0, sizeof(*args));
 
-	if (drive->media != ide_disk) {
-		/*
-		 * skip idedisk_pm_restore_pio and idedisk_pm_idle for ATAPI
-		 * devices
-		 */
-		if (pm->pm_step == idedisk_pm_restore_pio)
-			pm->pm_step = ide_pm_restore_dma;
-	}
-
 	switch (pm->pm_step) {
 	case ide_pm_flush_cache:	/* Suspend step 1 (flush cache) */
 		if (drive->media != ide_disk)
@@ -207,7 +198,13 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
 	case idedisk_pm_restore_pio:	/* Resume step 1 (restore PIO) */
 		if (drive->hwif->tuneproc != NULL)
 			drive->hwif->tuneproc(drive, 255);
-		ide_complete_power_step(drive, rq, 0, 0);
+		/*
+		 * skip idedisk_pm_idle for ATAPI devices
+		 */
+		if (drive->media != ide_disk)
+			pm->pm_step = ide_pm_restore_dma;
+		else
+			ide_complete_power_step(drive, rq, 0, 0);
 		return ide_stopped;
 
 	case idedisk_pm_idle:		/* Resume step 2 (idle) */
drivers/ide/ide-iops.c +29 -26

80 lines not on this page · raw message

drivers/ide/ide-lib.c +25 -107

148 lines not on this page · raw message

drivers/ide/ide-pnp.c +1 -1
index 98410ca..2b8009c 100644
@@ -42,7 +42,7 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id
 	hw.irq = pnp_irq(dev, 0);
 	hw.dma = NO_DMA;
 
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 
 	if (index != -1) {
 	    	printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
drivers/ide/ide-probe.c +3 -0
index 8f15c23..3cebed7 100644
@@ -1427,6 +1427,9 @@ int ideprobe_init (void)
 				}
 		}
 	}
+	for (index = 0; index < MAX_HWIFS; ++index)
+		if (probe[index])
+			ide_proc_register_port(&ide_hwifs[index]);
 	return 0;
 }
 
drivers/ide/ide-proc.c +325 -19

407 lines not on this page · raw message

drivers/ide/ide-tape.c +25 -24

93 lines not on this page · raw message

drivers/ide/ide.c +90 -380

654 lines not on this page · raw message

drivers/ide/legacy/ali14xx.c +2 -1
index 91961aa..df17ed6 100644
@@ -223,7 +223,8 @@ static int __init ali14xx_probe(void)
 	probe_hwif_init(hwif);
 	probe_hwif_init(mate);
 
-	create_proc_ide_interfaces();
+	ide_proc_register_port(hwif);
+	ide_proc_register_port(mate);
 
 	return 0;
 }
drivers/ide/legacy/buddha.c +1 -1
index 1ed224a..101aee1 100644
@@ -213,7 +213,7 @@ fail_base2:
 						IRQ_AMIGA_PORTS);
 			}	
 			
-			index = ide_register_hw(&hw, &hwif);
+			index = ide_register_hw(&hw, 1, &hwif);
 			if (index != -1) {
 				hwif->mmio = 1;
 				printk("ide%d: ", index);
drivers/ide/legacy/dtc2278.c +2 -1
index 0219ffa..36a3f0a 100644
@@ -138,7 +138,8 @@ static int __init dtc2278_probe(void)
 	probe_hwif_init(hwif);
 	probe_hwif_init(mate);
 
-	create_proc_ide_interfaces();
+	ide_proc_register_port(hwif);
+	ide_proc_register_port(mate);
 
 	return 0;
 }
drivers/ide/legacy/falconide.c +1 -1
index a9f2cd5..e1e9d9d 100644
@@ -70,7 +70,7 @@ void __init falconide_init(void)
 			0, 0, NULL,
 //			falconide_iops,
 			IRQ_MFP_IDE);
-	index = ide_register_hw(&hw, NULL);
+	index = ide_register_hw(&hw, 1, NULL);
 
 	if (index != -1)
 	    printk("ide%d: Falcon IDE interface\n", index);
drivers/ide/legacy/gayle.c +1 -1
index dcfadbb..0830a02 100644
@@ -165,7 +165,7 @@ found:
 //			&gayle_iops,
 			IRQ_AMIGA_PORTS);
 
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 	if (index != -1) {
 	    hwif->mmio = 1;
 	    switch (i) {
drivers/ide/legacy/ht6560b.c +2 -1
index a283264..c8f353b 100644
@@ -357,7 +357,8 @@ int __init ht6560b_init(void)
 	probe_hwif_init(hwif);
 	probe_hwif_init(mate);
 
-	create_proc_ide_interfaces();
+	ide_proc_register_port(hwif);
+	ide_proc_register_port(mate);
 
 	return 0;
 
drivers/ide/legacy/ide-cs.c +1 -1
index c6522a6..2f3977f 100644
@@ -153,7 +153,7 @@ static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq
     hw.irq = irq;
     hw.chipset = ide_pci;
     hw.dev = &handle->dev;
-    return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave);
+    return ide_register_hw_with_fixup(&hw, 0, NULL, ide_undecoded_slave);
 }
 
 /*======================================================================
drivers/ide/legacy/macide.c +3 -3
index 4c0079a..c211fc7 100644
@@ -102,21 +102,21 @@ void macide_init(void)
 				0, 0, macide_ack_intr,
 //				quadra_ide_iops,
 				IRQ_NUBUS_F);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		break;
 	case MAC_IDE_PB:
 		ide_setup_ports(&hw, IDE_BASE, macide_offsets,
 				0, 0, macide_ack_intr,
 //				macide_pb_iops,
 				IRQ_NUBUS_C);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		break;
 	case MAC_IDE_BABOON:
 		ide_setup_ports(&hw, BABOON_BASE, macide_offsets,
 				0, 0, NULL,
 //				macide_baboon_iops,
 				IRQ_BABOON_1);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		if (index == -1) break;
 		if (macintosh_config->ident == MAC_MODEL_PB190) {
 
drivers/ide/legacy/q40ide.c +1 -1
index 74f0812..e628a98 100644
@@ -142,7 +142,7 @@ void q40ide_init(void)
 			0, NULL,
 //			m68kide_iops,
 			q40ide_default_irq(pcide_bases[i]));
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 	// **FIXME**
 	if (index != -1)
 		hwif->mmio = 1;
drivers/ide/legacy/qd65xx.c +4 -3
index 2fb8f50..d1414a7 100644
@@ -427,7 +427,7 @@ static int __init qd_probe(int base)
 		qd_setup(hwif, base, config, QD6500_DEF_DATA, QD6500_DEF_DATA,
 			 &qd6500_tune_drive);
 
-		create_proc_ide_interfaces();
+		ide_proc_register_port(hwif);
 
 		return 1;
 	}
@@ -459,7 +459,7 @@ static int __init qd_probe(int base)
 				 &qd6580_tune_drive);
 			qd_write_reg(QD_DEF_CONTR,QD_CONTROL_PORT);
 
-			create_proc_ide_interfaces();
+			ide_proc_register_port(hwif);
 
 			return 1;
 		} else {
@@ -479,7 +479,8 @@ static int __init qd_probe(int base)
 				 &qd6580_tune_drive);
 			qd_write_reg(QD_DEF_CONTR,QD_CONTROL_PORT);
 
-			create_proc_ide_interfaces();
+			ide_proc_register_port(hwif);
+			ide_proc_register_port(mate);
 
 			return 0; /* no other qd65xx possible */
 		}
drivers/ide/legacy/umc8672.c +2 -1
index ca79744..ddc403a 100644
@@ -160,7 +160,8 @@ static int __init umc8672_probe(void)
 	probe_hwif_init(hwif);
 	probe_hwif_init(mate);
 
-	create_proc_ide_interfaces();
+	ide_proc_register_port(hwif);
+	ide_proc_register_port(mate);
 
 	return 0;
 }
drivers/ide/mips/au1xxx-ide.c +3 -0
index d54d9fe..ca95e99 100644
@@ -760,6 +760,9 @@ static int au_ide_probe(struct device *dev)
 #endif
 
 	probe_hwif_init(hwif);
+
+	ide_proc_register_port(hwif);
+
 	dev_set_drvdata(dev, hwif);
 
 	printk(KERN_INFO "Au1xxx IDE(builtin) configured for %s\n", mode );
drivers/ide/mips/swarm.c +3 -0
index 81fa068..6e935d7 100644
@@ -129,6 +129,9 @@ static int __devinit swarm_ide_probe(struct device *dev)
 	hwif->irq = hwif->hw.irq;
 
 	probe_hwif_init(hwif);
+
+	ide_proc_register_port(hwif);
+
 	dev_set_drvdata(dev, hwif);
 
 	return 0;
drivers/ide/pci/aec62xx.c +20 -42

137 lines not on this page · raw message

drivers/ide/pci/alim15x3.c +32 -65

161 lines not on this page · raw message

drivers/ide/pci/amd74xx.c +3 -3
index 7989bdd..becb1a5 100644
@@ -92,7 +92,7 @@ static unsigned char amd_cyc2udma[] = { 6, 6, 5, 4, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3
  * AMD /proc entry.
  */
 
-#ifdef CONFIG_PROC_FS
+#ifdef CONFIG_IDE_PROC_FS
 
 #include <linux/stat.h>
 #include <linux/proc_fs.h>
@@ -402,14 +402,14 @@ static unsigned int __devinit init_chipset_amd74xx(struct pci_dev *dev, const ch
  * Register /proc/ide/amd74xx entry
  */
 
-#if defined(DISPLAY_AMD_TIMINGS) && defined(CONFIG_PROC_FS)
+#if defined(DISPLAY_AMD_TIMINGS) && defined(CONFIG_IDE_PROC_FS)
         if (!amd74xx_proc) {
                 amd_base = pci_resource_start(dev, 4);
                 bmide_dev = dev;
 		ide_pci_create_host_proc("amd74xx", amd74xx_get_info);
                 amd74xx_proc = 1;
         }
-#endif /* DISPLAY_AMD_TIMINGS && CONFIG_PROC_FS */
+#endif /* DISPLAY_AMD_TIMINGS && CONFIG_IDE_PROC_FS */
 
 	return dev->irq;
 }
drivers/ide/pci/atiixp.c +2 -38
index 2d48af3..0e52ad7 100644
@@ -49,22 +49,6 @@ static int save_mdma_mode[4];
 static DEFINE_SPINLOCK(atiixp_lock);
 
 /**
- *	atiixp_ratemask		-	compute rate mask for ATIIXP IDE
- *	@drive: IDE drive to compute for
- *
- *	Returns the available modes for the ATIIXP IDE controller.
- */
-
-static u8 atiixp_ratemask(ide_drive_t *drive)
-{
-	u8 mode = 3;
-
-	if (!eighty_ninty_three(drive))
-		mode = min(mode, (u8)1);
-	return mode;
-}
-
-/**
  *	atiixp_dma_2_pio		-	return the PIO mode matching DMA
  *	@xfer_rate: transfer speed
  *
@@ -189,7 +173,7 @@ static int atiixp_speedproc(ide_drive_t *drive, u8 xferspeed)
 	u16 tmp16;
 	u8 speed, pio;
 
-	speed = ide_rate_filter(atiixp_ratemask(drive), xferspeed);
+	speed = ide_rate_filter(drive, xferspeed);
 
 	spin_lock_irqsave(&atiixp_lock, flags);
 
@@ -223,26 +207,6 @@ static int atiixp_speedproc(ide_drive_t *drive, u8 xferspeed)
 }
 
 /**
- *	atiixp_config_drive_for_dma	-	configure drive for DMA
- *	@drive: IDE drive to configure
- *
- *	Set up a ATIIXP interface channel for the best available speed.
- *	We prefer UDMA if it is available and then MWDMA. If DMA is
- *	not available we switch to PIO and return 0.
- */
-
-static int atiixp_config_drive_for_dma(ide_drive_t *drive)
-{
-	u8 speed = ide_dma_speed(drive, atiixp_ratemask(drive));
-
-	if (!speed)
-		return 0;
-
-	(void) atiixp_speedproc(drive, speed);
-	return ide_dma_enable(drive);
-}
-
-/**
  *	atiixp_dma_check	-	set up an IDE device
  *	@drive: IDE drive to configure
  *
@@ -256,7 +220,7 @@ static int atiixp_dma_check(ide_drive_t *drive)
 
 	drive->init_speed = 0;
 
-	if (ide_use_dma(drive) && atiixp_config_drive_for_dma(drive))
+	if (ide_tune_dma(drive))
 		return 0;
 
 	if (ide_use_fast_pio(drive)) {
drivers/ide/pci/cmd64x.c +27 -63

163 lines not on this page · raw message

drivers/ide/pci/cs5520.c +16 -4
index 400859a..3b88a3a 100644
@@ -213,6 +213,7 @@ static ide_pci_device_t cyrix_chipsets[] __devinitdata = {
  
 static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
+	ide_hwif_t *hwif = NULL, *mate = NULL;
 	ata_index_t index;
 	ide_pci_device_t *d = &cyrix_chipsets[id->driver_data];
 
@@ -239,10 +240,21 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic
 
 	ide_pci_setup_ports(dev, d, 14, &index);
 
-	if((index.b.low & 0xf0) != 0xf0)
-		probe_hwif_init(&ide_hwifs[index.b.low]);
-	if((index.b.high & 0xf0) != 0xf0)
-		probe_hwif_init(&ide_hwifs[index.b.high]);
+	if ((index.b.low & 0xf0) != 0xf0)
+		hwif = &ide_hwifs[index.b.low];
+	if ((index.b.high & 0xf0) != 0xf0)
+		mate = &ide_hwifs[index.b.high];
+
+	if (hwif)
+		probe_hwif_init(hwif);
+	if (mate)
+		probe_hwif_init(mate);
+
+	if (hwif)
+		ide_proc_register_port(hwif);
+	if (mate)
+		ide_proc_register_port(mate);
+
 	return 0;
 }
 
drivers/ide/pci/cs5535.c +2 -31
index 45f43ef..41925c4 100644
@@ -127,20 +127,6 @@ static void cs5535_set_speed(ide_drive_t *drive, u8 speed)
 	}
 }
 
-static u8 cs5535_ratemask(ide_drive_t *drive)
-{
-	/* eighty93 will return 1 if it's 80core and capable of
-	exceeding udma2, 0 otherwise. we need ratemask to set
-	the max speed and if we can > udma2 then we return 2
-	which selects speed_max as udma4 which is the 5535's max
-	speed, and 1 selects udma2 which is the max for 40c */
-	if (!eighty_ninty_three(drive))
-		return 1;
-
-	return 2;
-}
-
-
 /****
  *	cs5535_set_drive         -     Configure the drive to the new speed
  *	@drive: Drive to set up
@@ -151,7 +137,7 @@ static u8 cs5535_ratemask(ide_drive_t *drive)
  */
 static int cs5535_set_drive(ide_drive_t *drive, u8 speed)
 {
-	speed = ide_rate_filter(cs5535_ratemask(drive), speed);
+	speed = ide_rate_filter(drive, speed);
 	ide_config_drive_speed(drive, speed);
 	cs5535_set_speed(drive, speed);
 
@@ -178,28 +164,13 @@ static void cs5535_tuneproc(ide_drive_t *drive, u8 xferspeed)
 	cs5535_set_speed(drive, xferspeed);
 }
 
-static int cs5535_config_drive_for_dma(ide_drive_t *drive)
-{
-	u8 speed;
-
-	speed = ide_dma_speed(drive, cs5535_ratemask(drive));
-
-	/* If no DMA speed was available then let dma_check hit pio */
-	if (!speed) {
-		return 0;
-	}
-
-	cs5535_set_drive(drive, speed);
-	return ide_dma_enable(drive);
-}
-
 static int cs5535_dma_check(ide_drive_t *drive)
 {
 	u8 speed;
 
 	drive->init_speed = 0;
 
-	if (ide_use_dma(drive) && cs5535_config_drive_for_dma(drive))
+	if (ide_tune_dma(drive))
 		return 0;
 
 	if (ide_use_fast_pio(drive)) {
drivers/ide/pci/delkin_cb.c +1 -1
index dd7ec37..46f4a88 100644
@@ -80,7 +80,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
 	hw.irq = dev->irq;
 	hw.chipset = ide_pci;		/* this enables IRQ sharing */
 
-	rc = ide_register_hw_with_fixup(&hw, &hwif, ide_undecoded_slave);
+	rc = ide_register_hw_with_fixup(&hw, 0, &hwif, ide_undecoded_slave);
 	if (rc < 0) {
 		printk(KERN_ERR "delkin_cb: ide_register_hw failed (%d)\n", rc);
 		pci_disable_device(dev);
drivers/ide/pci/hpt34x.c +2 -25
index 924eaa3..2c24c3d 100644
@@ -43,15 +43,10 @@
 
 #define HPT343_DEBUG_DRIVE_INFO		0
 
-static u8 hpt34x_ratemask (ide_drive_t *drive)
-{
-	return 1;
-}
-
 static int hpt34x_tune_chipset (ide_drive_t *drive, u8 xferspeed)
 {
 	struct pci_dev *dev	= HWIF(drive)->pci_dev;
-	u8 speed	= ide_rate_filter(hpt34x_ratemask(drive), xferspeed);
+	u8 speed = ide_rate_filter(drive, xferspeed);
 	u32 reg1= 0, tmp1 = 0, reg2 = 0, tmp2 = 0;
 	u8			hi_speed, lo_speed;
 
@@ -89,29 +84,11 @@ static void hpt34x_tune_drive (ide_drive_t *drive, u8 pio)
 	(void) hpt34x_tune_chipset(drive, (XFER_PIO_0 + pio));
 }
 
-/*
- * This allows the configuration of ide_pci chipset registers
- * for cards that learn about the drive's UDMA, DMA, PIO capabilities
- * after the drive is reported by the OS.  Initially for designed for
- * HPT343 UDMA chipset by HighPoint|Triones Technologies, Inc.
- */
-
-static int config_chipset_for_dma (ide_drive_t *drive)
-{
-	u8 speed = ide_dma_speed(drive, hpt34x_ratemask(drive));
-
-	if (!(speed))
-		return 0;
-
-	(void) hpt34x_tune_chipset(drive, speed);
-	return ide_dma_enable(drive);
-}
-
 static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive)
 {
 	drive->init_speed = 0;
 
-	if (ide_use_dma(drive) && config_chipset_for_dma(drive))
+	if (ide_tune_dma(drive))
 #ifndef CONFIG_HPT34X_AUTODMA
 		return -1;
 #else
drivers/ide/pci/hpt366.c +35 -50

162 lines not on this page · raw message

drivers/ide/pci/it8213.c +2 -37
index 424f00b..c04a026 100644
@@ -17,22 +17,6 @@
 
 #include <asm/io.h>
 
-/*
- *	it8213_ratemask	-	Compute available modes
- *	@drive: IDE drive
- *
- *	Compute the available speeds for the devices on the interface. This
- *	is all modes to ATA133 clipped by drive cable setup.
- */
-
-static u8 it8213_ratemask (ide_drive_t *drive)
-{
-	u8 mode	= 4;
-	if (!eighty_ninty_three(drive))
-		mode = min_t(u8, mode, 1);
-	return mode;
-}
-
 /**
  *	it8213_dma_2_pio		-	return the PIO mode matching DMA
  *	@xfer_rate: transfer speed
@@ -145,7 +129,7 @@ static int it8213_tune_chipset (ide_drive_t *drive, u8 xferspeed)
 	ide_hwif_t *hwif	= HWIF(drive);
 	struct pci_dev *dev	= hwif->pci_dev;
 	u8 maslave		= 0x40;
-	u8 speed		= ide_rate_filter(it8213_ratemask(drive), xferspeed);
+	u8 speed		= ide_rate_filter(drive, xferspeed);
 	int a_speed		= 3 << (drive->dn * 4);
 	int u_flag		= 1 << drive->dn;
 	int v_flag		= 0x01 << drive->dn;
@@ -213,25 +197,6 @@ static int it8213_tune_chipset (ide_drive_t *drive, u8 xferspeed)
 	return ide_config_drive_speed(drive, speed);
 }
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/ide/pci/it821x.c +2 -18
index 4e12548..442f658 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/jmicron.c +2 -38
index be4fc96..76ed251 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/pdc202xx_new.c +11 -29
index 2cdd629..65b1e12 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/pdc202xx_old.c +9 -45

54 lines not on this page · raw message

drivers/ide/pci/piix.c +33 -130

163 lines not on this page · raw message

drivers/ide/pci/scc_pata.c +2 -19
index f84bf79..cbf9363 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/serverworks.c +19 -12
index dbcd37a..2fa6d92 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/sgiioc4.c +1 -1
index fd09b29..d3185e2 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/siimage.c +21 -24

45 lines not on this page · raw message

drivers/ide/pci/sis5513.c +9 -35

44 lines not on this page · raw message

drivers/ide/pci/slc90e66.c +2 -22
index 852ccb3..c40f291 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/tc86c001.c +2 -18
index 0b6d81d..cee619b 100644

Lines of this file are not shown. View the raw message.

drivers/ide/pci/triflex.c +2 -13
index 5e06179..35e8c61 100644

Lines of this file are not shown. View the raw message.

drivers/ide/ppc/pmac.c +2 -0
index a49ebe4..45fc36f 100644

Lines of this file are not shown. View the raw message.

drivers/ide/setup-pci.c +23 -4
index 118fb32..67035ba 100644

Lines of this file are not shown. View the raw message.

drivers/macintosh/mediabay.c +1 -1
index 0acf2f7..c803d2b 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ide-scsi.c +17 -13
index 2b5b8a9..8263f75 100644

Lines of this file are not shown. View the raw message.

include/linux/ide.h +50 -43

93 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#7 lore raw
In reply to Andrew Morton
Quoted 27 lines · Andrew Morton
Quoted 2 lines · Jeff Garzik

Has this seen testing/exposure in -mm tree?

argh. If this was in a file called ide-rework-the-code-for-selecting-the-best-DMA-transfer-mode.patch then it would be so easy.

<logs into hera>

<greps>

ah, it's hidden in ide-max-dma-mode-v3.patch.

akpm:/usr/src/25> grep ide-max-dma-mode-v3 pc/*series pc/2.6.21-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc2-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc3-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc3-mm2-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc4-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc5-mm3-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc5-mm4-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc6-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc7-mm1-series:ide-ide-max-dma-mode-v3.patch pc/2.6.21-rc7-mm2-series:ide-ide-max-dma-mode-v3.patch

Quoted 1 line

No probs.

Cool beans. I'm happy then.

Jeff

#3 lore raw
In reply to Bartlomiej Zolnierkiewicz
Quoted 4 lines · Bartlomiej Zolnierkiewicz
Quoted 1 line · Jeff Garzik

The limit was raised to 400K IIRC.

That's (good) news to me, here goes the actual 150K patch:

Thanks. I did in fact receive copies from vger, so it went through.

Jeff

#4 lore raw
In reply to Jeff Garzik

From: Jeff Garzik <[email protected]>
Date: Wed, 09 May 2007 18:46:16 -0400

Quoted 15 lines
Quoted 14 lines · Bartlomiej Zolnierkiewicz

Bartlomiej Zolnierkiewicz (11):
ide: fix UDMA/MWDMA/SWDMA masks (v3)
ide: rework the code for selecting the best DMA transfer mode (v3)
ide: add ide_tune_dma() helper
ide: make /proc/ide/ optional
ide: split off ioctl handling from IDE settings (v2)
ide: move IDE settings handling to ide-proc.c
ide: cable detection fixes (take 2)
ide: add "initializing" argument to ide_register_hw()
ide: add ide_proc_register_port()
ide: legacy PCI bus order probing fixes
ide: fix PIO setup on resume for ATAPI devices

Quoted 4 lines
Quoted 1 line

[ sorry but the patch is too big to be included ]

The limit was raised to 400K IIRC.

On lkml but not linux-ide, I'll go and bump it up there too.

There, done...