mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-25 16:56:35 +00:00
kms_flip: Restore rings to running state in unhang_gpu()
If things go bad, make sure the rings aren't left in the stopped state. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
This commit is contained in:
parent
30c21ffe7f
commit
48ba2cdf96
@ -658,11 +658,12 @@ static void set_y_tiling(struct test_output *o, int fb_idx)
|
|||||||
drmFree(r);
|
drmFree(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stop_rings(void)
|
static void stop_rings(bool stop)
|
||||||
{
|
{
|
||||||
static const char dfs_base[] = "/sys/kernel/debug/dri";
|
static const char dfs_base[] = "/sys/kernel/debug/dri";
|
||||||
static const char dfs_entry[] = "i915_ring_stop";
|
static const char dfs_entry[] = "i915_ring_stop";
|
||||||
static const char data[] = "0xf";
|
static const char stop_data[] = "0xf";
|
||||||
|
static const char run_data[] = "0x0";
|
||||||
char fname[FILENAME_MAX];
|
char fname[FILENAME_MAX];
|
||||||
int card_index = drm_get_card();
|
int card_index = drm_get_card();
|
||||||
int fd;
|
int fd;
|
||||||
@ -673,7 +674,10 @@ static void stop_rings(void)
|
|||||||
fd = open(fname, O_WRONLY);
|
fd = open(fname, O_WRONLY);
|
||||||
igt_assert(fd >= 0);
|
igt_assert(fd >= 0);
|
||||||
|
|
||||||
igt_assert(write(fd, data, sizeof(data)) == sizeof(data));
|
if (stop)
|
||||||
|
igt_assert(write(fd, stop_data, sizeof(stop_data)) == sizeof(stop_data));
|
||||||
|
else
|
||||||
|
igt_assert(write(fd, run_data, sizeof(run_data)) == sizeof(run_data));
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
@ -722,6 +726,7 @@ static void unhang_gpu(int fd, uint32_t handle)
|
|||||||
gem_sync(drm_fd, handle);
|
gem_sync(drm_fd, handle);
|
||||||
gem_close(drm_fd, handle);
|
gem_close(drm_fd, handle);
|
||||||
eat_error_state();
|
eat_error_state();
|
||||||
|
stop_rings(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t hang_gpu(int fd)
|
static uint32_t hang_gpu(int fd)
|
||||||
@ -730,7 +735,7 @@ static uint32_t hang_gpu(int fd)
|
|||||||
struct drm_i915_gem_exec_object2 gem_exec;
|
struct drm_i915_gem_exec_object2 gem_exec;
|
||||||
uint32_t b[2] = {MI_BATCH_BUFFER_END};
|
uint32_t b[2] = {MI_BATCH_BUFFER_END};
|
||||||
|
|
||||||
stop_rings();
|
stop_rings(true);
|
||||||
|
|
||||||
memset(&gem_exec, 0, sizeof(gem_exec));
|
memset(&gem_exec, 0, sizeof(gem_exec));
|
||||||
gem_exec.handle = gem_create(fd, 4096);
|
gem_exec.handle = gem_create(fd, 4096);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user