two ide fixes for -rc4
cover two ide fixes for -rc4
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 #2 reverts the recent incorrect revert
David, can you test these on the sis5513 system that had problems with the original pio0 mode setting?
Thanks,
Linus
Quoted 7 lines · Bartlomiej Zolnierkiewicz
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 #2 reverts the recent incorrect revert
Quoted 12 lines · 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,
LinusQuoted 4 lines · Bartlomiej Zolnierkiewicz
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 <[email protected]>
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).
--- drivers/ide/sis5513.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/ide/sis5513.c +6 -4
@@ -2,7 +2,7 @@* Copyright (C) 1999-2000 Andre Hedrick <[email protected]> * Copyright (C) 2002 Lionel Bouton <[email protected]>, Maintainer * Copyright (C) 2003 Vojtech Pavlik <[email protected]> -* 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_dripci_read_config_byte (dev,0x4b , ®4bh); + 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)
Quoted 14 lines · Bartlomiej Zolnierkiewicz
Quoted 12 lines · 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,
LinusQuoted 4 lines · Bartlomiej Zolnierkiewicz
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)
Quoted 8 lines
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 <[email protected]>
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.
Signature · 2 lines
David Fries <[email protected]> http://fries.net/~david/ (PGP encryption key available)
From: David Fries <[email protected]>
Date: Tue, 6 Oct 2009 22:30:06 -0500
Quoted 9 lines · Bartlomiej Zolnierkiewicz
Quoted 4 lines
The corrected version below, David please try it instead:
From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH take 2] sis5513: fix PIO setup for ATAPI devices2.6.31 plus this patch fixed the hang on IDE initialization with the SIS5513.
Quoted 7 lines
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.
This latest patch (modifying only the SIS 5513 driver) WORKS FOR ME. :-)
- D. Stussy.
Quoted 21 lines · Bartlomiej Zolnierkiewicz
...
drivers/ide/sis5513.c +5
-3@@ -281,11 +281,13 @@ static void config_drive_art_rwp(ide_dri pci_read_config_byte(dev, 0x4b, ®4bh); + 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)