[igt-dev] [Intel-gfx] [PATCH i-g-t] tests/core_hotunplug: Show device PCI bus address on errors

Bernatowicz, Marcin marcin.bernatowicz at linux.intel.com
Fri Nov 26 08:00:06 UTC 2021



On 11/18/2021 9:41 AM, Janusz Krzysztofik wrote:
> Strange -ENODEV responses from the kernel to i915 driver rebind attempts
> have been sporadically observed.  After successfully unbinding the driver
> from a device by writing a string representing its PCI bus address to
> /sys/bus/pci/driver/i915/unbind, the test then fails while writing the
> same device PCI bus address string to /sys/bus/pci/drivers/i915/bind.  It
> is unlikely that the device disappears from the bus when this happens --
> the test would attempt to rescan the bus in such cases while it doesn't.
> 
> To shed more light on what may be going on, extend error messages emitted
> by the test with the device PCI bus address string it uses also printed.
> 
> Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> ---
>   tests/core_hotunplug.c | 12 ++++++------
>   1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c
> index b36616688..2f2fb7ac1 100644
> --- a/tests/core_hotunplug.c
> +++ b/tests/core_hotunplug.c
> @@ -174,11 +174,11 @@ static void driver_unbind(struct hotunplug *priv, const char *prefix,
>   	igt_set_timeout(timeout, "Driver unbind timeout!");
>   	igt_assert_f(igt_sysfs_set(priv->fd.sysfs_drv, "unbind",
>   				   priv->dev_bus_addr),
> -		     "Driver unbind failure!\n");
> +		     "Driver unbind failure (%s)!\n", priv->dev_bus_addr);
>   	igt_reset_timeout();
>   
>   	igt_assert_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr, F_OK, 0),
> -		     "Unbound device still present\n");
> +		     "Unbound device still present (%s)\n", priv->dev_bus_addr);
>   }
>   
>   /* Re-bind the driver to the device */
> @@ -190,12 +190,12 @@ static void driver_bind(struct hotunplug *priv, int timeout)
>   	igt_set_timeout(timeout, "Driver re-bind timeout!");
>   	igt_assert_f(igt_sysfs_set(priv->fd.sysfs_drv, "bind",
>   				   priv->dev_bus_addr),
> -		     "Driver re-bind failure\n!");
> +		     "Driver re-bind failure (%s)!\n", priv->dev_bus_addr);
>   	igt_reset_timeout();
>   
>   	igt_fail_on_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr,
>   				F_OK, 0),
> -		      "Rebound device not present!\n");
> +		      "Rebound device not present (%s)!\n", priv->dev_bus_addr);
>   
>   	if (priv->snd_unload)
>   		igt_kmod_load("snd_hda_intel", NULL);
> @@ -223,7 +223,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix,
>   	igt_assert_eq(priv->fd.sysfs_dev, -1);
>   
>   	igt_assert_f(faccessat(priv->fd.sysfs_bus, priv->dev_bus_addr, F_OK, 0),
> -		     "Unplugged device still present\n");
> +		     "Unplugged device still present (%s)\n", priv->dev_bus_addr);
>   }
>   
>   /* Re-discover the device by rescanning its bus */
> @@ -239,7 +239,7 @@ static void bus_rescan(struct hotunplug *priv, int timeout)
>   
>   	igt_fail_on_f(faccessat(priv->fd.sysfs_bus, priv->dev_bus_addr,
>   				F_OK, 0),
> -		      "Fakely unplugged device not rediscovered!\n");
> +		      "Fakely unplugged device not rediscovered (%s)!\n", priv->dev_bus_addr);
>   }
>   
>   static void cleanup(struct hotunplug *priv)
> 
LGTM,
Reviewed-by: Marcin Bernatowicz <marcin.bernatowicz at linux.intel.com>


More information about the igt-dev mailing list