• Parth Y Shah's avatar
    dmaengine: bam_dma: fix return of bam_dma_irq() · 4421fe53
    Parth Y Shah authored
    While performing suspend/resume, we were getting below kernel crash.
    
    [   54.541672] [FTS][Info]gesture suspend...
    [   54.605256] [FTS][Error][GESTURE]Enter into gesture(suspend) failed!
    [   54.605256]
    [   58.345850] irq event 10: bogus return value fffffff3
    ......
    
    [   58.345966] [<ffff0000080830f0>] el1_irq+0xb0/0x124
    [   58.345971] [<ffff000008085360>] arch_cpu_idle+0x10/0x18
    [   58.345975] [<ffff0000081077f4>] do_idle+0x1ac/0x1e0
    [   58.345979] [<ffff0000081079c8>] cpu_startup_entry+0x20/0x28
    [   58.345983] [<ffff000008a80ed0>] rest_init+0xd0/0xdc
    [   58.345988] [<ffff0000091c0b48>] start_kernel+0x390/0x3a4
    [   58.345990] handlers:
    [   58.345994] [<ffff0000085120d0>] bam_dma_irq
    
    The reason for the crash we found is, bam_dma_irq() was returning
    negative value when the device resumes in some conditions.
    
    In addition, the irq handler should have one of the below return values.
    
    IRQ_NONE            interrupt was not from this device or was not handled
    IRQ_HANDLED         interrupt was handled by this device
    IRQ_WAKE_THREAD     handler requests to wake the handler thread
    
    Therefore, to resolve this crash, we have changed the return value to
    IRQ_NONE.
    Signed-off-by: default avatarParth Y Shah <sparth1292@gmail.com>
    Link: https://lore.kernel.org/r/1607322820-7450-1-git-send-email-sparth1292@gmail.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    4421fe53
bam_dma.c 39.3 KB