On Tue, Jul 09, 2013 at 04:15:13PM +0200, Michal Simek wrote: > 4. spi_master_release() > 5. devres_release() with irq
> If interrupt happends between 4 and 5 than it can be the problem. > Do I understand you correctly? Yes. > If this is problematic case we can disable local and global interrupts > and add it between 2 and 3 or 3-4. > /* Disable all the interrupts just in case */ > xspi->write_fn(0, regs_base + XIPIF_V123B_IIER_OFFSET); > /* Disable the global IPIF interrupt */ > xspi->write_fn(0, regs_base + XIPIF_V123B_DGIER_OFFSET); > What do you think about this solution? That's fine, though if just manually freeing the IRQ works that's also OK... > I have also tried to run one thing with and without this patch > and the results are below. > When I add this irq disable function between 1 and 2 then > module removing stucks. You'll need to wait until the device is quiesced at least if it's relying on the interrupt to complete operations.
signature.asc
Description: Digital signature