floppy: tolerate DMA channel unavailability
The floppy driver is already written to be able to operate in virtual DMA mode. Thus it can easily be adjusted to tolerate failure from fd_request_dma() as long as virtual DMA mode is not disallowed. Signed-off-by: Jan Beulich <jbeulich@novell.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e98c320291
commit
2e9c47cd4d
|
@ -4388,11 +4388,15 @@ static int floppy_grab_irq_and_dma(void)
|
||||||
if (fd_request_dma()) {
|
if (fd_request_dma()) {
|
||||||
DPRINT("Unable to grab DMA%d for the floppy driver\n",
|
DPRINT("Unable to grab DMA%d for the floppy driver\n",
|
||||||
FLOPPY_DMA);
|
FLOPPY_DMA);
|
||||||
fd_free_irq();
|
if (can_use_virtual_dma & 2)
|
||||||
spin_lock_irqsave(&floppy_usage_lock, flags);
|
use_virtual_dma = can_use_virtual_dma = 1;
|
||||||
usage_count--;
|
if (!(can_use_virtual_dma & 1)) {
|
||||||
spin_unlock_irqrestore(&floppy_usage_lock, flags);
|
fd_free_irq();
|
||||||
return -1;
|
spin_lock_irqsave(&floppy_usage_lock, flags);
|
||||||
|
usage_count--;
|
||||||
|
spin_unlock_irqrestore(&floppy_usage_lock, flags);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (fdc = 0; fdc < N_FDC; fdc++) {
|
for (fdc = 0; fdc < N_FDC; fdc++) {
|
||||||
|
|
Loading…
Reference in New Issue