diff mbox

[0/2] two ide fixes for -rc4

Message ID 200910070246.05283.bzolnier@gmail.com
State Accepted
Delegated to: David Miller
Headers show

Commit Message

Bartlomiej Zolnierkiewicz Oct. 7, 2009, 12:46 a.m. UTC
On Wednesday 07 October 2009 00:35:24 Linus Torvalds wrote:
> 
> David, can you test these on the sis5513 system that had problems with the 
> original pio0 mode setting?
> 
> 	Thanks,
> 		Linus
> 
> On Wed, 7 Oct 2009, Bartlomiej Zolnierkiewicz wrote:
> > 
> > patch #1 fixes old bug in sis5513 (uncovered by 2.6.30 device probing
> > changes but it could be also triggered in earlier kernels on warm-plug
> > operation)

patch #1 contained a stupid mistake preventing it from working (thanks to
David Fries for letting me know quickly), I guess that is what one gets for
the late night hacking..

The corrected version below, David please try it instead:

From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH take 2] sis5513: fix PIO setup for ATAPI devices

Clear prefetch setting before potentially (re-)enabling it in
config_drive_art_rwp() so the transition of the device type on
the port from ATA to ATAPI (i.e. during warm-plug operation)
is handled correctly.

This is a really old bug (it probably goes back to very early
days of the driver) but it was only affecting warm-plug operation
until the recent "ide: try to use PIO Mode 0 during probe if
possible" change (commit 6029336426a2b43e4bc6f4a84be8789a047d139e).

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Joao Ramos <joao.ramos@inov.pt>
Cc: David Fries <david@fries.net>
Cc: d.stussy@yahoo.com
Cc: stable@kernel.org
---
 drivers/ide/sis5513.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Fries Oct. 7, 2009, 3:30 a.m. UTC | #1
On Wed, Oct 07, 2009 at 02:46:05AM +0200, Bartlomiej Zolnierkiewicz wrote:
> On Wednesday 07 October 2009 00:35:24 Linus Torvalds wrote:
> > 
> > David, can you test these on the sis5513 system that had problems with the 
> > original pio0 mode setting?
> > 
> > 	Thanks,
> > 		Linus
> > 
> > On Wed, 7 Oct 2009, Bartlomiej Zolnierkiewicz wrote:
> > > 
> > > patch #1 fixes old bug in sis5513 (uncovered by 2.6.30 device probing
> > > changes but it could be also triggered in earlier kernels on warm-plug
> > > operation)
> 
> patch #1 contained a stupid mistake preventing it from working (thanks to
> David Fries for letting me know quickly), I guess that is what one gets for
> the late night hacking..
> 
> The corrected version below, David please try it instead:
> 
> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> Subject: [PATCH take 2] sis5513: fix PIO setup for ATAPI devices

2.6.31 plus this patch fixed the hang on IDE initialization with the
SIS5513.

That's with my testing mode, I'm rebuilding a kernel and will try some
benchmarks tomorrow.  I've been testing by hibernating to disk,
booting the test kernel with a bad root and resume partition (so if it
worked it wouldn't modify the suspended image), then rebooting to
resume from disk with the good kernel.  That let me more quickly
bisect and test kernels, I just haven't ran this kernel much past the
initialization is all.
David Miller Oct. 7, 2009, 11:06 a.m. UTC | #2
From: David Fries <david@fries.net>
Date: Tue, 6 Oct 2009 22:30:06 -0500

> On Wed, Oct 07, 2009 at 02:46:05AM +0200, Bartlomiej Zolnierkiewicz wrote:
>> The corrected version below, David please try it instead:
>> 
>> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
>> Subject: [PATCH take 2] sis5513: fix PIO setup for ATAPI devices
> 
> 2.6.31 plus this patch fixed the hang on IDE initialization with the
> SIS5513.
> 
> That's with my testing mode, I'm rebuilding a kernel and will try some
> benchmarks tomorrow.  I've been testing by hibernating to disk,
> booting the test kernel with a bad root and resume partition (so if it
> worked it wouldn't modify the suspended image), then rebooting to
> resume from disk with the good kernel.  That let me more quickly
> bisect and test kernels, I just haven't ran this kernel much past the
> initialization is all.

All applied, thanks everyone.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
- Oct. 10, 2009, 5:54 p.m. UTC | #3
This latest patch (modifying only the SIS 5513 driver) WORKS FOR ME.  :-)
   - D. Stussy.

--- On Tue, 10/6/09, Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> wrote:
> ...
> --- a/drivers/ide/sis5513.c
> +++ b/drivers/ide/sis5513.c
> @@ -281,11 +281,13 @@ static void config_drive_art_rwp(ide_dri
>  
>      pci_read_config_byte(dev, 0x4b, &reg4bh);
>  
> +    rw_prefetch = reg4bh & ~(0x11 << drive->dn);
> +
>      if (drive->media == ide_disk)
> -        rw_prefetch = 0x11 << drive->dn;
> +        rw_prefetch |= 0x11 << drive->dn;
>  
> -    if ((reg4bh & (0x11 << drive->dn)) != rw_prefetch)
> -        pci_write_config_byte(dev, 0x4b, reg4bh|rw_prefetch);
> +    if (reg4bh != rw_prefetch)
> +        pci_write_config_byte(dev, 0x4b, rw_prefetch);
>  }
>  
>  static void sis_set_pio_mode(ide_drive_t *drive, const u8 pio)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: b/drivers/ide/sis5513.c
===================================================================
--- a/drivers/ide/sis5513.c
+++ b/drivers/ide/sis5513.c
@@ -2,7 +2,7 @@ 
  * Copyright (C) 1999-2000	Andre Hedrick <andre@linux-ide.org>
  * Copyright (C) 2002		Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer
  * Copyright (C) 2003		Vojtech Pavlik <vojtech@suse.cz>
- * Copyright (C) 2007		Bartlomiej Zolnierkiewicz
+ * Copyright (C) 2007-2009	Bartlomiej Zolnierkiewicz
  *
  * May be copied or modified under the terms of the GNU General Public License
  *
@@ -281,11 +281,13 @@  static void config_drive_art_rwp(ide_dri
 
 	pci_read_config_byte(dev, 0x4b, &reg4bh);
 
+	rw_prefetch = reg4bh & ~(0x11 << drive->dn);
+
 	if (drive->media == ide_disk)
-		rw_prefetch = 0x11 << drive->dn;
+		rw_prefetch |= 0x11 << drive->dn;
 
-	if ((reg4bh & (0x11 << drive->dn)) != rw_prefetch)
-		pci_write_config_byte(dev, 0x4b, reg4bh|rw_prefetch);
+	if (reg4bh != rw_prefetch)
+		pci_write_config_byte(dev, 0x4b, rw_prefetch);
 }
 
 static void sis_set_pio_mode(ide_drive_t *drive, const u8 pio)