[igt-dev] [PATCH i-g-t] tests/device_reset: Work around for driver unbind issue with audio
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Mon Sep 14 19:19:29 UTC 2020
On Mon, 2020-09-14 at 19:06 +0530, Uma Shankar wrote:
> Unbinding the i915 driver on some Haswell and Broadwell platforms with
> Azalia audio results in a kernel WARNING on "i915 raw-wakerefs=1
> wakelocks=1 on cleanup". The issue can be worked around by manually
> enabling runtime power management for the conflicting audio adapter.
> Use that method but also display a warning to preserve visibility of
> the issue. Also tag the workaround with a FIXME comment.
>
> Suggested-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> Signed-off-by: Uma Shankar <uma.shankar at intel.com>
> Reviewed-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
Pushed.
@Lakshmi, since kernel WARN has been replaced with an IGT warning but
the issue remains the same, please update the filter of the bug.
Thanks,
Janusz
> ---
> tests/device_reset.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/tests/device_reset.c b/tests/device_reset.c
> index b1181b3b..9cb59ee4 100644
> --- a/tests/device_reset.c
> +++ b/tests/device_reset.c
> @@ -232,9 +232,20 @@ static void set_device_filter(const char* dev_path)
>
> static void unbind_reset_rebind(struct device_fds *dev)
> {
> + uint32_t devid = intel_get_drm_devid(dev->fds.dev);
> igt_debug("close the device\n");
> close_if_opened(&dev->fds.dev);
>
> + /**
> + * FIXME: Unbinding the i915 driver on some platforms with Azalia audio
> + * results in a kernel WARN on "i915 raw-wakerefs=1 wakelocks=1 on cleanup".
> + * The below CI friendly user level workaround prevents the warning from
> + * appearing. Drop this hack as soon as this is fixed in the kernel.
> + */
> + if (igt_warn_on_f((bool) IS_HASWELL(devid) || IS_BROADWELL(devid),
> + "Manually enabling audio PM to work around a kernel WARN\n"))
> + igt_pm_enable_audio_runtime_pm();
> +
> driver_unbind(dev);
>
> initiate_device_reset(dev);
More information about the igt-dev
mailing list