• Pierre-Louis Bossart's avatar
    ASoC: SOF: debug: conditionally bump runtime_pm counter on exceptions · 3de97586
    Pierre-Louis Bossart authored
    When a firmware IPC error happens during a pm_runtime suspend, we
    ignore the error and suspend anyways. However, the code
    unconditionally increases the runtime_pm counter. This results in a
    confusing configuration where the code will suspend, resume but never
    suspend again due to the use of pm_runtime_get_noresume().
    
    The intent of the counter increase was to prevent entry in D3, but if
    that transition to D3 is already started it cannot be stopped. In
    addition, there's no point in that case in trying to prevent anything,
    the firmware error is handled and the next resume will re-initialize
    the firmware completely.
    
    This patch changes the logic to prevent suspend when the device is
    pm_runtime active and has a use_count > 0.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
    Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com
    Link: https://lore.kernel.org/r/20230512103315.8921-2-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org
    3de97586
debug.c 11.8 KB