diff options
Diffstat (limited to 'debian/patches/bugfix/m68k/falconide_intr_lock-reentrant.diff')
-rw-r--r-- | debian/patches/bugfix/m68k/falconide_intr_lock-reentrant.diff | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/debian/patches/bugfix/m68k/falconide_intr_lock-reentrant.diff b/debian/patches/bugfix/m68k/falconide_intr_lock-reentrant.diff new file mode 100644 index 000000000000..f632f831f7f5 --- /dev/null +++ b/debian/patches/bugfix/m68k/falconide_intr_lock-reentrant.diff @@ -0,0 +1,41 @@ +Subject: [PATCH] m68k: make Atari IDE lock reentrant + +From Roman Zippel <zippel@linux-m68k.org> + +Make the Atari IDE lock reentrant, as the new request is started in the +interrupt before the last one is completely released. + +Signed-off-by: Roman Zippel <zippel@linux-m68k.org> +Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> +--- + include/asm-m68k/ide.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- linux-m68k-2.6.21.orig/include/asm-m68k/ide.h ++++ linux-m68k-2.6.21/include/asm-m68k/ide.h +@@ -117,8 +117,8 @@ static __inline__ void ide_release_lock + printk("ide_release_lock: bug\n"); + return; + } +- falconide_intr_lock = 0; +- stdma_release(); ++ if (!--falconide_intr_lock) ++ stdma_release(); + } + } + +@@ -126,12 +126,12 @@ static __inline__ void + ide_get_lock(irq_handler_t handler, void *data) + { + if (MACH_IS_ATARI) { +- if (falconide_intr_lock == 0) { ++ if (!falconide_intr_lock) { + if (in_interrupt() > 0) + panic( "Falcon IDE hasn't ST-DMA lock in interrupt" ); + stdma_lock(handler, data); +- falconide_intr_lock = 1; + } ++ falconide_intr_lock++; + } + } + #endif /* CONFIG_BLK_DEV_FALCON_IDE */ |