Re: [PATCH 1/15] ali14xx: fix deadlock on error handling

2007-10-02 Thread Sergei Shtylyov

Bartlomiej Zolnierkiewicz wrote:


Stop abusing ide_lock lock by switching to a private locking.



Fixes same issue as fixed by Alan Cox in atiixp host driver with


   Has been also fixed in the piix driver.


commit 6c5f8cc33eb2e10b6ab788bbe259fc142a068627.


   Heh, I've looked hard at the code trying to understand how this can 
happen, and was unable to figure out. Probably was not hard enough...



Signed-off-by: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED]


Acked-by: Sergei Shtylyov [EMAIL PROTECTED]

MBR, Sergei
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/15] ali14xx: fix deadlock on error handling

2007-10-02 Thread Alan Cox
On Tue, 02 Oct 2007 16:46:28 +0400
Sergei Shtylyov [EMAIL PROTECTED] wrote:

 Bartlomiej Zolnierkiewicz wrote:
 
  Stop abusing ide_lock lock by switching to a private locking.
 
  Fixes same issue as fixed by Alan Cox in atiixp host driver with
 
 Has been also fixed in the piix driver.
 
  commit 6c5f8cc33eb2e10b6ab788bbe259fc142a068627.
 
 Heh, I've looked hard at the code trying to understand how this can 
 happen, and was unable to figure out. Probably was not hard enough...

The old IDE code timer, error handling and interrupt paths all race each
other. Anything can happen including this.

The proper fix is to rewrite the error handling but it was easier to port
the drivers to working error handling instead - hence libata PATA

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


[PATCH 1/15] ali14xx: fix deadlock on error handling

2007-10-01 Thread Bartlomiej Zolnierkiewicz

Stop abusing ide_lock lock by switching to a private locking.

Fixes same issue as fixed by Alan Cox in atiixp host driver with
commit 6c5f8cc33eb2e10b6ab788bbe259fc142a068627.

Signed-off-by: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED]
---
 drivers/ide/legacy/ali14xx.c |6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

Index: b/drivers/ide/legacy/ali14xx.c
===
--- a/drivers/ide/legacy/ali14xx.c
+++ b/drivers/ide/legacy/ali14xx.c
@@ -102,6 +102,8 @@ static void outReg (u8 data, u8 reg)
outb_p(data, dataPort);
 }
 
+static DEFINE_SPINLOCK(ali14xx_lock);
+
 /*
  * Set PIO mode for the specified drive.
  * This function computes timing parameters
@@ -129,14 +131,14 @@ static void ali14xx_set_pio_mode(ide_dri
 
/* stuff timing parameters into controller registers */
driveNum = (HWIF(drive)-index  1) + drive-select.b.unit;
-   spin_lock_irqsave(ide_lock, flags);
+   spin_lock_irqsave(ali14xx_lock, flags);
outb_p(regOn, basePort);
outReg(param1, regTab[driveNum].reg1);
outReg(param2, regTab[driveNum].reg2);
outReg(param3, regTab[driveNum].reg3);
outReg(param4, regTab[driveNum].reg4);
outb_p(regOff, basePort);
-   spin_unlock_irqrestore(ide_lock, flags);
+   spin_unlock_irqrestore(ali14xx_lock, flags);
 }
 
 /*
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html