mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
loop over remote link interrupt status to prevent race condition
This commit is contained in:
parent
0393ab4db4
commit
dd78dae68b
@ -4465,15 +4465,13 @@ static void gtl_irq_handler(unsigned long priv)
|
|||||||
struct ddb *dev = link->dev;
|
struct ddb *dev = link->dev;
|
||||||
u32 s, off = 32 * link->nr, tag = DDB_LINK_TAG(link->nr);
|
u32 s, off = 32 * link->nr, tag = DDB_LINK_TAG(link->nr);
|
||||||
|
|
||||||
s = ddbreadl(dev, tag | INTERRUPT_STATUS);
|
while ((s = ddbreadl(dev, tag | INTERRUPT_STATUS))) {
|
||||||
//printk("gtl_irq %08x = %08x\n", tag | INTERRUPT_STATUS, s);
|
ddbwritel(dev, s, tag | INTERRUPT_ACK);
|
||||||
if (!s)
|
LINK_IRQ_HANDLE(0);
|
||||||
return;
|
LINK_IRQ_HANDLE(1);
|
||||||
ddbwritel(dev, s, tag | INTERRUPT_ACK);
|
LINK_IRQ_HANDLE(2);
|
||||||
LINK_IRQ_HANDLE(0);
|
LINK_IRQ_HANDLE(3);
|
||||||
LINK_IRQ_HANDLE(1);
|
}
|
||||||
LINK_IRQ_HANDLE(2);
|
|
||||||
LINK_IRQ_HANDLE(3);
|
|
||||||
#else
|
#else
|
||||||
printk("gtlirq\n");
|
printk("gtlirq\n");
|
||||||
tasklet_schedule(&link->tasklet);
|
tasklet_schedule(&link->tasklet);
|
||||||
|
Loading…
Reference in New Issue
Block a user