• Ravulapati Vishnu vardhan rao's avatar
    ASoC: amd: Replacing MSI with Legacy IRQ model · a523e153
    Ravulapati Vishnu vardhan rao authored
    When we try to play and capture simultaneously we see that
    interrupts are genrated but our handler is not being acknowledged,
    After investigating further more in detail on this issue we found
    that IRQ delivery via MSI from the ACP IP is unreliable and so sometimes
    interrupt generated will not be acknowledged so MSI model shouldn't be used
    and using legacy IRQs will resolve interrupt handling issue.
    
    This patch replaces MSI interrupt handling with legacy IRQ model.
    
    Issue can be reproduced easily by running below python script:
    
    import subprocess
    import time
    import threading
    
    def do2():
      cmd = 'aplay -f dat -D hw:2,1 /dev/zero -d 1'
        subprocess.call(cmd, stdin=subprocess.PIPE,
    			stderr=subprocess.PIPE, shell=True)
        print('Play Done')
    
    def run():
    	for i in range(1000):
    		do2()
    
    def do(i):
        cmd = 'arecord -f dat -D hw:2,2 /dev/null -d 1'
        subprocess.call(cmd, stdout=subprocess.PIPE,
    			stderr=subprocess.PIPE, shell=True)
        print(datetime.datetime.now(), i)
    
    t = threading.Thread(target=run)
    t.start()
    for i in range(1000):
    	do(i)
    
    t.join()
    
    After applying this patch issue is resolved.
    Signed-off-by: default avatarRavulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
    Link: https://lore.kernel.org/r/20201222115929.11222-1-Vishnuvardhanrao.Ravulapati@amd.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    a523e153
pci-acp3x.c 7.48 KB