From: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> To: igt-dev@lists.freedesktop.org Cc: "Michał Winiarski" <michal.winiarski@intel.com>, intel-gfx@lists.freedesktop.org Subject: [Intel-gfx] [PATCH i-g-t v6 08/24] tests/core_hotunplug: Handle device close errors Date: Fri, 11 Sep 2020 12:30:23 +0200 [thread overview] Message-ID: <20200911103039.4574-9-janusz.krzysztofik@linux.intel.com> (raw) In-Reply-To: <20200911103039.4574-1-janusz.krzysztofik@linux.intel.com> The test now ignores device close errors. Those errors are believed to have no influence on device health so there is no need to process them the same way as we mostly do on errors, i.e., notify CI about a problem via igt_abort. However, those errors may indicate issues with the test itself. Moreover, impact of those errors on operations performed by subtests, like driver unbind or device remove, should be perceived as undefined. Then, we should fail as soon as a device or device sysfs node close error occurs in a subtest and also skip subsequent subtests. However, once a driver unbind or device unplug operation has been attempted by a subtest, we would still like to check the device health. When in a subtest, store results of device close operations for future reference. Reuse file descriptor fields of the hotunplug structure for that. Unless in between of a driver remove or device unplug operation and a successful device health check completion, fail current test section right after a device close error occurs, warn otherwise. If still running, examine device file descriptor fields in subsequent igt_fixture sections and skip on errors. v2: Fix a typo in post_healthcheck function name. v3: Don't fail on close error after successful health check, warn only, - move duplicated device close error messages to helpers. v4: Assert device file descriptors closed cleanly on start of each subtest. v5: Update device status on open for health check if not yet dirty, - move device close debug messages to helper. Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com> # v1 --- tests/core_hotunplug.c | 76 ++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 5c9c4d8bf..51de942ba 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -43,7 +43,7 @@ struct hotunplug { int sysfs_dev; int sysfs_bus; int sysfs_drv; - } fd; + } fd; /* >= 0: valid fd, == -1: closed, < -1: close failed */ const char *dev_bus_addr; const char *failure; }; @@ -67,6 +67,26 @@ static int local_drm_open_driver(const char *when, const char *why) return fd_drm; } +static int local_close(int fd, const char *warning) +{ + errno = 0; + if (igt_warn_on_f(close(fd), "%s\n", warning)) + return -errno; /* (never -1) */ + + return -1; /* success - return 'closed' */ +} + +static int close_device(int fd_drm, const char *when, const char *which) +{ + igt_debug("%sclosing %sdevice instance\n", when, which); + return local_close(fd_drm, "Device close failed"); +} + +static int close_sysfs(int fd_sysfs_dev) +{ + return local_close(fd_sysfs_dev, "Device sysfs node close failed"); +} + static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) { int len; @@ -83,11 +103,16 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) igt_assert(priv->dev_bus_addr++); /* sysfs_dev no longer needed */ - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); + igt_assert_eq(priv->fd.sysfs_dev, -1); } static void prepare(struct hotunplug *priv, char *buf, int buflen) { + /* assert device file descriptors closed cleanly on subtest start */ + igt_assert_eq(priv->fd.drm, -1); + igt_assert_eq(priv->fd.sysfs_dev, -1); + priv->fd.drm = local_drm_open_driver("", " for subtest"); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); @@ -142,7 +167,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_reset_timeout(); priv->failure = NULL; - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); } /* Re-discover the device by rescanning its bus */ @@ -161,6 +186,8 @@ static void bus_rescan(struct hotunplug *priv) static void healthcheck(struct hotunplug *priv) { + /* preserve potentially dirty device status stored in priv->fd.drm */ + bool closed = priv->fd.drm == -1; int fd_drm; /* device name may have changed, rebuild IGT device list */ @@ -168,6 +195,8 @@ static void healthcheck(struct hotunplug *priv) priv->failure = "Device reopen failure!"; fd_drm = local_drm_open_driver("re", " for health check"); + if (closed) /* store fd for post_healthcheck if not dirty */ + priv->fd.drm = fd_drm; priv->failure = NULL; if (is_i915_device(fd_drm)) { @@ -176,7 +205,17 @@ static void healthcheck(struct hotunplug *priv) priv->failure = NULL; } - close(fd_drm); + fd_drm = close_device(fd_drm, "", "health checked "); + if (closed || fd_drm < -1) /* update status for post_healthcheck */ + priv->fd.drm = fd_drm; +} + +static void post_healthcheck(struct hotunplug *priv) +{ + igt_abort_on_f(priv->failure, "%s\n", priv->failure); + + igt_require(priv->fd.drm == -1); + igt_require(priv->fd.sysfs_dev == -1); } static void set_filter_from_device(int fd) @@ -202,8 +241,8 @@ static void unbind_rebind(struct hotunplug *priv) prepare(priv, buf, sizeof(buf)); - igt_debug("closing the device\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "", "exercised "); + igt_assert_eq(priv->fd.drm, -1); driver_unbind(priv, ""); @@ -216,8 +255,8 @@ static void unplug_rescan(struct hotunplug *priv) { prepare(priv, NULL, 0); - igt_debug("closing the device\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "", "exercised "); + igt_assert_eq(priv->fd.drm, -1); device_unplug(priv, ""); @@ -236,8 +275,7 @@ static void hotunbind_lateclose(struct hotunplug *priv) driver_bind(priv); - igt_debug("late closing the unbound device instance\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "late ", "unbound "); healthcheck(priv); } @@ -250,8 +288,7 @@ static void hotunplug_lateclose(struct hotunplug *priv) bus_rescan(priv); - igt_debug("late closing the removed device instance\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "late ", "removed "); healthcheck(priv); } @@ -260,7 +297,10 @@ static void hotunplug_lateclose(struct hotunplug *priv) igt_main { - struct hotunplug priv = { .failure = NULL, }; + struct hotunplug priv = { + .fd = { .drm = -1, .sysfs_dev = -1, }, + .failure = NULL, + }; igt_fixture { int fd_drm; @@ -276,7 +316,7 @@ igt_main /* Make sure subtests always reopen the same device */ set_filter_from_device(fd_drm); - close(fd_drm); + igt_assert_eq(close_device(fd_drm, "", "selected "), -1); } igt_describe("Check if the driver can be cleanly unbound from a device believed to be closed"); @@ -284,26 +324,26 @@ igt_main unbind_rebind(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if a device believed to be closed can be cleanly unplugged"); igt_subtest("unplug-rescan") unplug_rescan(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if the driver can be cleanly unbound from a still open device, then released"); igt_subtest("hotunbind-lateclose") hotunbind_lateclose(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if a still open device can be cleanly unplugged, then released"); igt_subtest("hotunplug-lateclose") hotunplug_lateclose(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); } -- 2.21.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> To: igt-dev@lists.freedesktop.org Cc: "Michał Winiarski" <michal.winiarski@intel.com>, "Petri Latvala" <petri.latvala@intel.com>, intel-gfx@lists.freedesktop.org, "Tvrtko Ursulin" <tvrtko.ursulin@intel.com> Subject: [igt-dev] [PATCH i-g-t v6 08/24] tests/core_hotunplug: Handle device close errors Date: Fri, 11 Sep 2020 12:30:23 +0200 [thread overview] Message-ID: <20200911103039.4574-9-janusz.krzysztofik@linux.intel.com> (raw) In-Reply-To: <20200911103039.4574-1-janusz.krzysztofik@linux.intel.com> The test now ignores device close errors. Those errors are believed to have no influence on device health so there is no need to process them the same way as we mostly do on errors, i.e., notify CI about a problem via igt_abort. However, those errors may indicate issues with the test itself. Moreover, impact of those errors on operations performed by subtests, like driver unbind or device remove, should be perceived as undefined. Then, we should fail as soon as a device or device sysfs node close error occurs in a subtest and also skip subsequent subtests. However, once a driver unbind or device unplug operation has been attempted by a subtest, we would still like to check the device health. When in a subtest, store results of device close operations for future reference. Reuse file descriptor fields of the hotunplug structure for that. Unless in between of a driver remove or device unplug operation and a successful device health check completion, fail current test section right after a device close error occurs, warn otherwise. If still running, examine device file descriptor fields in subsequent igt_fixture sections and skip on errors. v2: Fix a typo in post_healthcheck function name. v3: Don't fail on close error after successful health check, warn only, - move duplicated device close error messages to helpers. v4: Assert device file descriptors closed cleanly on start of each subtest. v5: Update device status on open for health check if not yet dirty, - move device close debug messages to helper. Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com> # v1 --- tests/core_hotunplug.c | 76 ++++++++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 5c9c4d8bf..51de942ba 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -43,7 +43,7 @@ struct hotunplug { int sysfs_dev; int sysfs_bus; int sysfs_drv; - } fd; + } fd; /* >= 0: valid fd, == -1: closed, < -1: close failed */ const char *dev_bus_addr; const char *failure; }; @@ -67,6 +67,26 @@ static int local_drm_open_driver(const char *when, const char *why) return fd_drm; } +static int local_close(int fd, const char *warning) +{ + errno = 0; + if (igt_warn_on_f(close(fd), "%s\n", warning)) + return -errno; /* (never -1) */ + + return -1; /* success - return 'closed' */ +} + +static int close_device(int fd_drm, const char *when, const char *which) +{ + igt_debug("%sclosing %sdevice instance\n", when, which); + return local_close(fd_drm, "Device close failed"); +} + +static int close_sysfs(int fd_sysfs_dev) +{ + return local_close(fd_sysfs_dev, "Device sysfs node close failed"); +} + static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) { int len; @@ -83,11 +103,16 @@ static void prepare_for_unbind(struct hotunplug *priv, char *buf, int buflen) igt_assert(priv->dev_bus_addr++); /* sysfs_dev no longer needed */ - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); + igt_assert_eq(priv->fd.sysfs_dev, -1); } static void prepare(struct hotunplug *priv, char *buf, int buflen) { + /* assert device file descriptors closed cleanly on subtest start */ + igt_assert_eq(priv->fd.drm, -1); + igt_assert_eq(priv->fd.sysfs_dev, -1); + priv->fd.drm = local_drm_open_driver("", " for subtest"); priv->fd.sysfs_dev = igt_sysfs_open(priv->fd.drm); @@ -142,7 +167,7 @@ static void device_unplug(struct hotunplug *priv, const char *prefix) igt_reset_timeout(); priv->failure = NULL; - close(priv->fd.sysfs_dev); + priv->fd.sysfs_dev = close_sysfs(priv->fd.sysfs_dev); } /* Re-discover the device by rescanning its bus */ @@ -161,6 +186,8 @@ static void bus_rescan(struct hotunplug *priv) static void healthcheck(struct hotunplug *priv) { + /* preserve potentially dirty device status stored in priv->fd.drm */ + bool closed = priv->fd.drm == -1; int fd_drm; /* device name may have changed, rebuild IGT device list */ @@ -168,6 +195,8 @@ static void healthcheck(struct hotunplug *priv) priv->failure = "Device reopen failure!"; fd_drm = local_drm_open_driver("re", " for health check"); + if (closed) /* store fd for post_healthcheck if not dirty */ + priv->fd.drm = fd_drm; priv->failure = NULL; if (is_i915_device(fd_drm)) { @@ -176,7 +205,17 @@ static void healthcheck(struct hotunplug *priv) priv->failure = NULL; } - close(fd_drm); + fd_drm = close_device(fd_drm, "", "health checked "); + if (closed || fd_drm < -1) /* update status for post_healthcheck */ + priv->fd.drm = fd_drm; +} + +static void post_healthcheck(struct hotunplug *priv) +{ + igt_abort_on_f(priv->failure, "%s\n", priv->failure); + + igt_require(priv->fd.drm == -1); + igt_require(priv->fd.sysfs_dev == -1); } static void set_filter_from_device(int fd) @@ -202,8 +241,8 @@ static void unbind_rebind(struct hotunplug *priv) prepare(priv, buf, sizeof(buf)); - igt_debug("closing the device\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "", "exercised "); + igt_assert_eq(priv->fd.drm, -1); driver_unbind(priv, ""); @@ -216,8 +255,8 @@ static void unplug_rescan(struct hotunplug *priv) { prepare(priv, NULL, 0); - igt_debug("closing the device\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "", "exercised "); + igt_assert_eq(priv->fd.drm, -1); device_unplug(priv, ""); @@ -236,8 +275,7 @@ static void hotunbind_lateclose(struct hotunplug *priv) driver_bind(priv); - igt_debug("late closing the unbound device instance\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "late ", "unbound "); healthcheck(priv); } @@ -250,8 +288,7 @@ static void hotunplug_lateclose(struct hotunplug *priv) bus_rescan(priv); - igt_debug("late closing the removed device instance\n"); - close(priv->fd.drm); + priv->fd.drm = close_device(priv->fd.drm, "late ", "removed "); healthcheck(priv); } @@ -260,7 +297,10 @@ static void hotunplug_lateclose(struct hotunplug *priv) igt_main { - struct hotunplug priv = { .failure = NULL, }; + struct hotunplug priv = { + .fd = { .drm = -1, .sysfs_dev = -1, }, + .failure = NULL, + }; igt_fixture { int fd_drm; @@ -276,7 +316,7 @@ igt_main /* Make sure subtests always reopen the same device */ set_filter_from_device(fd_drm); - close(fd_drm); + igt_assert_eq(close_device(fd_drm, "", "selected "), -1); } igt_describe("Check if the driver can be cleanly unbound from a device believed to be closed"); @@ -284,26 +324,26 @@ igt_main unbind_rebind(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if a device believed to be closed can be cleanly unplugged"); igt_subtest("unplug-rescan") unplug_rescan(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if the driver can be cleanly unbound from a still open device, then released"); igt_subtest("hotunbind-lateclose") hotunbind_lateclose(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); igt_describe("Check if a still open device can be cleanly unplugged, then released"); igt_subtest("hotunplug-lateclose") hotunplug_lateclose(&priv); igt_fixture - igt_abort_on_f(priv.failure, "%s\n", priv.failure); + post_healthcheck(&priv); } -- 2.21.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2020-09-11 10:31 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-11 10:30 [Intel-gfx] [PATCH i-g-t v6 00/24] tests/core_hotunplug: Fixes and enhancements Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 01/24] tests/core_hotunplug: Use igt_assert_fd() Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 02/24] tests/core_hotunplug: Constify dev_bus_addr string Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 03/24] tests/core_hotunplug: Clean up device open error handling Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 04/24] tests/core_hotunplug: Consolidate duplicated debug messages Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 05/24] tests/core_hotunplug: Assert successful device filter application Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 06/24] tests/core_hotunplug: Maintain a single data structure instance Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 07/24] tests/core_hotunplug: Pass errors via a data structure field Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` Janusz Krzysztofik [this message] 2020-09-11 10:30 ` [igt-dev] [PATCH i-g-t v6 08/24] tests/core_hotunplug: Handle device close errors Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 09/24] tests/core_hotunplug: Prepare invariant data once per test run Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 10/24] tests/core_hotunplug: Skip selectively on sysfs close errors Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 11/24] tests/core_hotunplug: Recover from subtest failures Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 12/24] tests/core_hotunplug: Fail subtests on device close errors Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 13/24] tests/core_hotunplug: Let the driver time out essential sysfs operations Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 14/24] tests/core_hotunplug: Process return values of " Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 15/24] tests/core_hotunplug: Assert expected device presence/absence Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 16/24] tests/core_hotunplug: Explicitly ignore unused return values Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 17/24] tests/core_hotunplug: Also check health of render device node Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 18/24] tests/core_hotunplug: More thorough i915 healthcheck and recovery Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 19/24] tests/core_hotunplug: Add 'lateclose before restore' variants Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 20/24] tests/core_hotunplug: Check health both before and after late close Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 21/24] tests/core_hotunplug: HSW/BDW audio issue workaround Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 12:22 ` [Intel-gfx] " Petri Latvala 2020-09-11 12:22 ` [igt-dev] " Petri Latvala 2020-09-11 13:15 ` [Intel-gfx] " Janusz Krzysztofik 2020-09-11 13:15 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 14:17 ` [Intel-gfx] " Petri Latvala 2020-09-11 14:17 ` [igt-dev] " Petri Latvala 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 22/24] tests/core_hotunplug: Duplicate debug messages in dmesg Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 23/24] tests/core_hotunplug: Un-blocklist *bind* subtests Janusz Krzysztofik 2020-09-11 11:51 ` Petri Latvala 2020-09-11 11:51 ` [igt-dev] " Petri Latvala 2020-09-11 12:00 ` [Intel-gfx] " Janusz Krzysztofik 2020-09-11 12:00 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 14:20 ` [Intel-gfx] " Petri Latvala 2020-09-11 14:20 ` [igt-dev] " Petri Latvala 2020-09-11 10:30 ` [Intel-gfx] [PATCH i-g-t v6 24/24] tests/core_hotunplug: Add unbind-rebind subtest to BAT scope Janusz Krzysztofik 2020-09-11 10:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 11:52 ` [Intel-gfx] " Petri Latvala 2020-09-11 11:52 ` [igt-dev] " Petri Latvala 2020-09-11 12:01 ` [Intel-gfx] " Janusz Krzysztofik 2020-09-11 12:01 ` [igt-dev] " Janusz Krzysztofik 2020-09-11 11:24 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/core_hotunplug: Fixes and enhancements (rev6) Patchwork 2020-09-11 14:18 ` Petri Latvala 2020-09-11 14:15 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork 2020-09-14 18:18 ` [Intel-gfx] [PATCH i-g-t v6 00/24] tests/core_hotunplug: Fixes and enhancements Michał Winiarski 2020-09-14 18:18 ` [igt-dev] " Michał Winiarski 2020-09-14 19:30 ` Janusz Krzysztofik 2020-09-14 19:30 ` [igt-dev] " Janusz Krzysztofik 2020-09-14 20:43 ` Vudum, Lakshminarayana 2020-09-14 20:43 ` [igt-dev] " Vudum, Lakshminarayana 2020-09-15 7:47 ` Janusz Krzysztofik 2020-09-15 7:47 ` [igt-dev] " Janusz Krzysztofik 2020-09-15 15:39 ` Vudum, Lakshminarayana 2020-09-15 15:39 ` [igt-dev] " Vudum, Lakshminarayana 2020-09-16 7:59 ` Janusz Krzysztofik 2020-09-16 7:59 ` [igt-dev] " Janusz Krzysztofik
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200911103039.4574-9-janusz.krzysztofik@linux.intel.com \ --to=janusz.krzysztofik@linux.intel.com \ --cc=igt-dev@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=michal.winiarski@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.