On 08/19/2015 06:01 PM, Stefan Fausser wrote: > Dear all, > > attached are two patches for the "isci" module (CONFIG_SCSI_ISCI). > > Both patches apply to the current Linux kernel, retrieved by GIT (4.2.0-rc7). > > The first patch (init.patch) is for reproducing the problem with the > "Intel(R) C600 SAS Controller" in INTx Mode, see below. The second patch > (host.patch) is for fixing this problem. > > The problem: > > By applying the first patch "init.patch", the "Intel(R) C600 SAS Controller" > (now abbreviated by SAS) generates level-triggered INTx Interrupts instead of > (edge-triggered) MSI-X Interrupts. > > In the ISR (isci_intx_isr), the controller determines if the interrupt is due > to a normal operation (normal interrrupt) or an error. In the case of a > normal interrupt, a tasklet is scheduled that should handle the normal > interrupt. However, in the ISR, the interrupts are left unmasked and the SAS > device may trigger the next interrupt after the ISR has left and before the > tasklet has been scheduled. > > Thus, with this patch "init.patch" and on my system (Intel C600 chipset > series), the SAS device repeatedly level-triggers the interrupt and the > tasklet to handle the interrupt never gets scheduled. This will result in a > soft-lockup on the executing core. > > In my investigations, the above described problem occurs in all Linux kernel > version starting from 3.5 and up to to-day. > > The fix: > > By applying the second patch "host.patch", the interrupts are masked in the > INTx ISR in case of a normal interrupt. Thus, the scheduler has enough time > to schedule the handling tasklet. In the tasklet (see > sci_controller_completion_handler), the interrupts are unmasked again. > > Please let me know if you need any other information. > > Kind Regards, > > Stefan >
Hi Stefan, I tried to reproduce this issue using just the init.patch and I had no soft lockups, but they started occuring after I added some delays in isci_intx_isr(). The host.patch fixed this and I think the solution is correct. Acked-by: Artur Paszkiewicz <artur.paszkiew...@intel.com> Thanks, Artur -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html