mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-29 16:44:03 +00:00
Workaround missing interrupts - dma_reset on them (when timeout occurse).
When you start tracker and produce some heavy disk activity, output interrupts becomes lost and I don't know how to solve it finally. Newly added code at least allows recovery after timeout.
This commit is contained in:
parent
19851e4b7f
commit
e4ff5c2aef
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=13474
@ -357,6 +357,7 @@ DMAbuf_getrdbuffer (int dev, char **buf, int *len, int dontblock)
|
|||||||
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
|
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
|
||||||
{
|
{
|
||||||
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
|
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
|
||||||
|
dma_reset (dev);
|
||||||
err = EIO;
|
err = EIO;
|
||||||
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
|
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
|
||||||
}
|
}
|
||||||
@ -607,6 +608,7 @@ DMAbuf_getwrbuffer (int dev, char **buf, int *size, int dontblock)
|
|||||||
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
|
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
|
||||||
{
|
{
|
||||||
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
|
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
|
||||||
|
dma_reset (dev);
|
||||||
err = EIO;
|
err = EIO;
|
||||||
abort = 1;
|
abort = 1;
|
||||||
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
|
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
|
||||||
|
Loading…
Reference in New Issue
Block a user