>so it is possible that both card raise intr quicker than isr run, then >both isr will do mmio and go ahead, but then what is > >device 1 raise intr >device 2 isr run and not belong to it, so quit, but before it clear intr >and quit >device 2 raise intr >device 1 isr run and handle device 1, then clear intr and quit. > >then device 2 intr lost? As these are level sensitive interrupt requests, they can't be lost. As long as Device 2 is requesting service, the shared IRQ is raised and at some point Linux will call Device 2's interrupt handler. Either the first level IRQ handler will keep calling all the interrupt handlers that service that IRQ until the IRQ subsides, or it will unmask the IRQ, causing an immediate new interrupt and the first level interrupt handler runs again and calls all the device drivers again. The raised IRQ says, "Device 1 or Device 2 needs service." The device drivers clear the service request of the individual device; as long as either device requests service, the IRQ is raised. -- Bryan Henderson IBM Almaden Research Center San Jose CA Filesystems - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html