All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device
@ 2023-05-16 16:50 Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
                   ` (23 more replies)
  0 siblings, 24 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Instead of caching the xe_device struct at subtest level, cache
just after opening the driver. And remove from the cache just
before closing the driver. So, this series introduces new helper
drm_close_driver() which helps to remove the xe_device & close
the drm fd. So that every user must call drm_close_driver()
instead of close().

V2: - Cleanup
    - Split the patches into multiple

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Bhanuprakash Modem (20):
  lib: Interface to close the drm fd
  lib: Cache xe_device at driver open/close level
  lib/xe/xe_query: Add xe_config() interface
  lib/igt_msm: Use drm_close_driver() to close the drm fd
  tests/amdgpu: Close the fd before exit
  tests/i915: Close the fd before exit
  tests/nouveau_crc: Close the fd before exit
  tests/xe/xe_gpgpu_fill: Close the fd before exit
  tests/amdgpu: Use drm_close_driver() to close the drm fd
  tests/i915/kms_mmap_write_crc: Avoid closing the closed fd
  tests/panfrost: Use drm_close_driver() to close the drm fd
  tests/v3d: Use drm_close_driver() to close the drm fd
  tests/vc4: Use drm_close_driver() to close the drm fd
  tests/vmwgfx: Use drm_close_driver() to close the drm fd
  tests/kms: Use drm_close_driver() to close the drm fd
  tests/xe: Use drm_close_driver() to close the drm fd
  tests/i915: Use drm_close_driver() to close the drm fd
  tests/xe/xe_debugfs: Use xe_config() helper to get the config
  tests: Drop xe_device get/put from test level
  Revert "lib/igt_kms: Cache xe_device info for kms tests"

 lib/drmtest.c                               | 44 ++++++++++++++-
 lib/drmtest.h                               |  1 +
 lib/igt_kms.c                               |  8 ---
 lib/igt_msm.c                               |  2 +-
 lib/igt_types.c                             |  6 ++
 lib/igt_vmwgfx.c                            |  2 +-
 lib/xe/xe_query.c                           |  8 +++
 lib/xe/xe_query.h                           |  1 +
 tests/amdgpu/amd_abm.c                      |  1 +
 tests/amdgpu/amd_assr.c                     |  1 +
 tests/amdgpu/amd_basic.c                    |  2 +-
 tests/amdgpu/amd_cs_nop.c                   |  2 +-
 tests/amdgpu/amd_deadlock.c                 |  2 +-
 tests/amdgpu/amd_freesync_video_mode.c      |  1 +
 tests/amdgpu/amd_info.c                     |  2 +-
 tests/amdgpu/amd_mem_leak.c                 |  1 +
 tests/amdgpu/amd_module_load.c              |  2 +-
 tests/amdgpu/amd_prime.c                    |  6 +-
 tests/amdgpu/amd_psr.c                      |  3 +-
 tests/amdgpu/amd_vrr_range.c                |  1 +
 tests/chamelium/kms_chamelium_audio.c       |  2 +-
 tests/chamelium/kms_chamelium_edid.c        |  2 +-
 tests/chamelium/kms_chamelium_frames.c      |  2 +-
 tests/chamelium/kms_chamelium_hpd.c         |  2 +-
 tests/core_auth.c                           | 10 ++--
 tests/core_getclient.c                      |  2 +-
 tests/core_getstats.c                       |  2 +-
 tests/core_getversion.c                     |  2 +-
 tests/core_setmaster.c                      |  6 +-
 tests/core_setmaster_vs_auth.c              |  6 +-
 tests/debugfs_test.c                        |  2 +-
 tests/dmabuf_sync_file.c                    |  3 +
 tests/drm_read.c                            |  3 +
 tests/dumb_buffer.c                         |  2 +-
 tests/eviction_common.c                     |  2 +-
 tests/fbdev.c                               |  2 +-
 tests/i915/api_intel_allocator.c            |  6 +-
 tests/i915/api_intel_bb.c                   |  2 +-
 tests/i915/drm_fdinfo.c                     |  2 +-
 tests/i915/gem_bad_reloc.c                  |  2 +-
 tests/i915/gem_barrier_race.c               |  5 +-
 tests/i915/gem_basic.c                      |  5 +-
 tests/i915/gem_blits.c                      |  2 +-
 tests/i915/gem_busy.c                       |  2 +-
 tests/i915/gem_caching.c                    |  2 +-
 tests/i915/gem_ccs.c                        |  2 +-
 tests/i915/gem_close_race.c                 | 14 ++---
 tests/i915/gem_concurrent_all.c             |  5 ++
 tests/i915/gem_cs_tlb.c                     |  2 +-
 tests/i915/gem_ctx_bad_destroy.c            |  2 +-
 tests/i915/gem_ctx_create.c                 |  4 +-
 tests/i915/gem_ctx_engines.c                |  4 +-
 tests/i915/gem_ctx_exec.c                   |  5 +-
 tests/i915/gem_ctx_freq.c                   |  3 +
 tests/i915/gem_ctx_param.c                  |  2 +-
 tests/i915/gem_ctx_persistence.c            |  6 +-
 tests/i915/gem_ctx_shared.c                 |  5 +-
 tests/i915/gem_ctx_sseu.c                   |  2 +-
 tests/i915/gem_ctx_switch.c                 |  2 +-
 tests/i915/gem_eio.c                        | 19 ++++---
 tests/i915/gem_evict_alignment.c            |  2 +-
 tests/i915/gem_evict_everything.c           |  2 +-
 tests/i915/gem_exec_alignment.c             |  5 +-
 tests/i915/gem_exec_async.c                 |  2 +-
 tests/i915/gem_exec_await.c                 |  2 +-
 tests/i915/gem_exec_balancer.c              |  3 +
 tests/i915/gem_exec_basic.c                 |  2 +-
 tests/i915/gem_exec_big.c                   |  2 +-
 tests/i915/gem_exec_capture.c               |  2 +-
 tests/i915/gem_exec_create.c                |  2 +-
 tests/i915/gem_exec_endless.c               |  3 +
 tests/i915/gem_exec_fair.c                  |  2 +-
 tests/i915/gem_exec_fence.c                 |  4 +-
 tests/i915/gem_exec_flush.c                 |  2 +-
 tests/i915/gem_exec_gttfill.c               |  4 +-
 tests/i915/gem_exec_latency.c               |  2 +-
 tests/i915/gem_exec_nop.c                   |  2 +-
 tests/i915/gem_exec_parallel.c              |  4 +-
 tests/i915/gem_exec_params.c                |  2 +-
 tests/i915/gem_exec_reloc.c                 |  2 +-
 tests/i915/gem_exec_schedule.c              |  2 +-
 tests/i915/gem_exec_store.c                 |  2 +-
 tests/i915/gem_exec_suspend.c               |  2 +-
 tests/i915/gem_exec_whisper.c               |  6 +-
 tests/i915/gem_exercise_blt.c               |  2 +-
 tests/i915/gem_fd_exhaustion.c              |  2 +-
 tests/i915/gem_fence_thrash.c               |  2 +-
 tests/i915/gem_fenced_exec_thrash.c         |  2 +-
 tests/i915/gem_flink_basic.c                |  7 ++-
 tests/i915/gem_flink_race.c                 |  6 +-
 tests/i915/gem_gtt_cpu_tlb.c                |  2 +-
 tests/i915/gem_gtt_hog.c                    |  2 +-
 tests/i915/gem_gtt_speed.c                  |  2 +-
 tests/i915/gem_huc_copy.c                   |  2 +-
 tests/i915/gem_lmem_evict.c                 |  4 +-
 tests/i915/gem_lmem_swapping.c              | 10 ++--
 tests/i915/gem_madvise.c                    | 12 ++--
 tests/i915/gem_media_fill.c                 |  2 +-
 tests/i915/gem_mmap.c                       |  2 +-
 tests/i915/gem_mmap_gtt.c                   |  6 +-
 tests/i915/gem_mmap_offset.c                |  8 +--
 tests/i915/gem_mmap_wc.c                    |  2 +-
 tests/i915/gem_partial_pwrite_pread.c       |  2 +-
 tests/i915/gem_pipe_control_store_loop.c    |  2 +-
 tests/i915/gem_ppgtt.c                      |  8 +--
 tests/i915/gem_pread.c                      |  2 +-
 tests/i915/gem_pread_after_blit.c           |  2 +-
 tests/i915/gem_pwrite.c                     |  2 +-
 tests/i915/gem_pwrite_snooped.c             |  2 +-
 tests/i915/gem_pxp.c                        |  2 +-
 tests/i915/gem_read_read_speed.c            |  2 +-
 tests/i915/gem_readwrite.c                  |  2 +-
 tests/i915/gem_reg_read.c                   |  2 +-
 tests/i915/gem_render_copy.c                |  2 +-
 tests/i915/gem_render_copy_redux.c          |  2 +-
 tests/i915/gem_reset_stats.c                | 32 +++++------
 tests/i915/gem_ringfill.c                   |  2 +-
 tests/i915/gem_set_tiling_vs_blt.c          |  2 +-
 tests/i915/gem_set_tiling_vs_gtt.c          |  2 +-
 tests/i915/gem_set_tiling_vs_pwrite.c       |  2 +-
 tests/i915/gem_shrink.c                     | 14 ++---
 tests/i915/gem_softpin.c                    |  4 +-
 tests/i915/gem_spin_batch.c                 |  2 +-
 tests/i915/gem_streaming_writes.c           |  2 +-
 tests/i915/gem_stress.c                     |  2 +-
 tests/i915/gem_sync.c                       |  2 +-
 tests/i915/gem_tiled_blits.c                |  2 +-
 tests/i915/gem_tiled_fence_blits.c          |  2 +-
 tests/i915/gem_tiled_partial_pwrite_pread.c |  2 +-
 tests/i915/gem_tiled_pread_basic.c          |  2 +-
 tests/i915/gem_tiled_pread_pwrite.c         |  2 +-
 tests/i915/gem_tiled_swapping.c             |  2 +-
 tests/i915/gem_tiled_wb.c                   |  2 +-
 tests/i915/gem_tiled_wc.c                   |  2 +-
 tests/i915/gem_tiling_max_stride.c          |  2 +-
 tests/i915/gem_unfence_active_buffers.c     |  2 +-
 tests/i915/gem_unref_active_buffers.c       |  2 +-
 tests/i915/gem_userptr_blits.c              |  9 ++-
 tests/i915/gem_vm_create.c                  |  4 +-
 tests/i915/gem_wait.c                       |  2 +-
 tests/i915/gem_watchdog.c                   |  2 +-
 tests/i915/gem_workarounds.c                |  5 +-
 tests/i915/gen7_exec_parse.c                |  4 +-
 tests/i915/gen9_exec_parse.c                |  2 +-
 tests/i915/i915_fb_tiling.c                 |  2 +-
 tests/i915/i915_getparams_basic.c           |  2 +-
 tests/i915/i915_hangman.c                   |  4 +-
 tests/i915/i915_hwmon.c                     |  2 +-
 tests/i915/i915_module_load.c               |  8 +--
 tests/i915/i915_pciid.c                     |  2 +-
 tests/i915/i915_pm_backlight.c              |  2 +-
 tests/i915/i915_pm_dc.c                     |  2 +-
 tests/i915/i915_pm_freq_api.c               |  2 +-
 tests/i915/i915_pm_freq_mult.c              |  2 +-
 tests/i915/i915_pm_lpsp.c                   |  2 +-
 tests/i915/i915_pm_rc6_residency.c          |  2 +-
 tests/i915/i915_pm_rps.c                    |  5 +-
 tests/i915/i915_pm_sseu.c                   |  2 +-
 tests/i915/i915_power.c                     |  2 +-
 tests/i915/i915_query.c                     |  2 +-
 tests/i915/i915_suspend.c                   |  6 +-
 tests/i915/kms_big_fb.c                     |  2 +-
 tests/i915/kms_big_joiner.c                 |  2 +-
 tests/i915/kms_busy.c                       |  2 +-
 tests/i915/kms_ccs.c                        |  2 +-
 tests/i915/kms_cdclk.c                      |  2 +-
 tests/i915/kms_draw_crc.c                   |  2 +-
 tests/i915/kms_dsc.c                        |  2 +-
 tests/i915/kms_fbcon_fbt.c                  |  2 +-
 tests/i915/kms_fence_pin_leak.c             |  2 +-
 tests/i915/kms_flip_scaled_crc.c            |  2 +-
 tests/i915/kms_flip_tiling.c                |  2 +-
 tests/i915/kms_frontbuffer_tracking.c       |  2 +-
 tests/i915/kms_legacy_colorkey.c            |  2 +-
 tests/i915/kms_mmap_write_crc.c             |  3 +-
 tests/i915/kms_pipe_b_c_ivb.c               |  2 +-
 tests/i915/kms_psr.c                        |  2 +-
 tests/i915/kms_psr2_sf.c                    |  2 +-
 tests/i915/kms_psr2_su.c                    |  2 +-
 tests/i915/kms_psr_stress_test.c            |  2 +-
 tests/i915/kms_pwrite_crc.c                 |  2 +-
 tests/i915/perf.c                           |  6 +-
 tests/i915/perf_pmu.c                       |  6 +-
 tests/i915/sysfs_defaults.c                 |  2 +-
 tests/i915/sysfs_heartbeat_interval.c       |  2 +-
 tests/i915/sysfs_preempt_timeout.c          |  2 +-
 tests/i915/sysfs_timeslice_duration.c       |  2 +-
 tests/kms_3d.c                              |  8 +--
 tests/kms_addfb_basic.c                     | 13 +----
 tests/kms_async_flips.c                     |  2 +-
 tests/kms_atomic.c                          |  2 +-
 tests/kms_atomic_interruptible.c            |  2 +-
 tests/kms_atomic_transition.c               |  2 +-
 tests/kms_color.c                           |  2 +-
 tests/kms_concurrent.c                      |  2 +-
 tests/kms_content_protection.c              |  2 +-
 tests/kms_cursor_crc.c                      |  2 +-
 tests/kms_cursor_edge_walk.c                |  2 +-
 tests/kms_cursor_legacy.c                   |  2 +-
 tests/kms_dither.c                          |  2 +-
 tests/kms_dp_aux_dev.c                      |  2 +-
 tests/kms_dp_tiled_display.c                |  2 +-
 tests/kms_flip.c                            | 11 +---
 tests/kms_flip_event_leak.c                 |  8 +--
 tests/kms_force_connector_basic.c           |  4 +-
 tests/kms_getfb.c                           | 19 +------
 tests/kms_hdmi_inject.c                     |  9 +--
 tests/kms_hdr.c                             |  2 +-
 tests/kms_invalid_mode.c                    |  2 +-
 tests/kms_lease.c                           |  4 +-
 tests/kms_panel_fitting.c                   |  2 +-
 tests/kms_pipe_crc_basic.c                  |  2 +-
 tests/kms_plane.c                           |  2 +-
 tests/kms_plane_alpha_blend.c               |  2 +-
 tests/kms_plane_cursor.c                    |  2 +-
 tests/kms_plane_lowres.c                    |  2 +-
 tests/kms_plane_multiple.c                  |  2 +-
 tests/kms_plane_scaling.c                   |  2 +-
 tests/kms_prime.c                           |  6 +-
 tests/kms_prop_blob.c                       |  8 +--
 tests/kms_properties.c                      |  2 +-
 tests/kms_rmfb.c                            |  4 +-
 tests/kms_rotation_crc.c                    |  2 +-
 tests/kms_scaling_modes.c                   |  2 +-
 tests/kms_sequence.c                        |  2 +-
 tests/kms_setmode.c                         |  9 +--
 tests/kms_tv_load_detect.c                  |  2 +-
 tests/kms_universal_plane.c                 |  2 +-
 tests/kms_vblank.c                          |  2 +-
 tests/kms_vrr.c                             |  1 +
 tests/kms_writeback.c                       |  1 +
 tests/nouveau_crc.c                         |  6 +-
 tests/panfrost_gem_new.c                    |  4 +-
 tests/panfrost_get_param.c                  |  2 +-
 tests/panfrost_prime.c                      |  4 +-
 tests/panfrost_submit.c                     |  6 +-
 tests/prime_busy.c                          |  2 +-
 tests/prime_mmap.c                          |  2 +-
 tests/prime_mmap_coherency.c                |  4 +-
 tests/prime_mmap_kms.c                      |  2 +-
 tests/prime_self_import.c                   | 26 ++++-----
 tests/prime_vgem.c                          |  4 +-
 tests/syncobj_basic.c                       |  2 +-
 tests/syncobj_timeline.c                    |  2 +-
 tests/syncobj_wait.c                        |  2 +-
 tests/template.c                            |  2 +-
 tests/testdisplay.c                         |  4 +-
 tests/v3d/v3d_create_bo.c                   |  4 +-
 tests/v3d/v3d_get_bo_offset.c               |  2 +-
 tests/v3d/v3d_get_param.c                   |  2 +-
 tests/v3d/v3d_job_submission.c              |  2 +-
 tests/v3d/v3d_mmap.c                        |  2 +-
 tests/v3d/v3d_perfmon.c                     |  2 +-
 tests/v3d/v3d_submit_cl.c                   |  2 +-
 tests/v3d/v3d_submit_csd.c                  |  2 +-
 tests/v3d/v3d_wait_bo.c                     |  2 +-
 tests/vc4/vc4_create_bo.c                   |  4 +-
 tests/vc4/vc4_dmabuf_poll.c                 |  2 +-
 tests/vc4/vc4_label_bo.c                    |  2 +-
 tests/vc4/vc4_lookup_fail.c                 |  2 +-
 tests/vc4/vc4_mmap.c                        |  2 +-
 tests/vc4/vc4_perfmon.c                     |  2 +-
 tests/vc4/vc4_purgeable_bo.c                |  2 +-
 tests/vc4/vc4_tiling.c                      |  2 +-
 tests/vc4/vc4_wait_bo.c                     |  2 +-
 tests/vc4/vc4_wait_seqno.c                  |  2 +-
 tests/vgem_basic.c                          |  6 +-
 tests/vgem_slow.c                           |  2 +-
 tests/vmwgfx/vmw_execution_buffer.c         |  2 +-
 tests/vmwgfx/vmw_ref_count.c                |  4 +-
 tests/vmwgfx/vmw_surface_copy.c             |  2 +-
 tests/xe/xe_compute.c                       | 10 +---
 tests/xe/xe_create.c                        | 11 +---
 tests/xe/xe_debugfs.c                       | 10 +---
 tests/xe/xe_dma_buf_sync.c                  | 15 ++---
 tests/xe/xe_evict.c                         | 11 +---
 tests/xe/xe_exec_balancer.c                 | 10 +---
 tests/xe/xe_exec_basic.c                    | 10 +---
 tests/xe/xe_exec_compute_mode.c             | 10 +---
 tests/xe/xe_exec_fault_mode.c               |  7 +--
 tests/xe/xe_exec_reset.c                    | 31 +++--------
 tests/xe/xe_exec_threads.c                  | 28 +++-------
 tests/xe/xe_gpgpu_fill.c                    |  4 +-
 tests/xe/xe_guc_pc.c                        |  4 +-
 tests/xe/xe_huc_copy.c                      | 10 +---
 tests/xe/xe_intel_bb.c                      |  4 +-
 tests/xe/xe_mmap.c                          | 10 +---
 tests/xe/xe_mmio.c                          | 10 +---
 tests/xe/xe_module_load.c                   |  2 +-
 tests/xe/xe_noexec_ping_pong.c              |  4 +-
 tests/xe/xe_pm.c                            |  5 +-
 tests/xe/xe_prime_self_import.c             | 61 ++++++---------------
 tests/xe/xe_query.c                         | 10 +---
 tests/xe/xe_vm.c                            |  7 +--
 tests/xe/xe_waitfence.c                     | 10 +---
 295 files changed, 583 insertions(+), 655 deletions(-)

--
2.40.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-18 18:51   ` Zbigniew Kempczyński
                     ` (2 more replies)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level Bhanuprakash Modem
                   ` (22 subsequent siblings)
  23 siblings, 3 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Add new helper drm_close_driver() to close the drm fd. Now
every user could call drm_close_driver() instead of close().

V2: - Fix commit message
    - Add debug prints

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/drmtest.c | 20 ++++++++++++++++++++
 lib/drmtest.h |  1 +
 2 files changed, 21 insertions(+)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 7630bb793..41ad2694c 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -605,6 +605,26 @@ int drm_open_driver(int chipset)
 	return fd;
 }
 
+/**
+ * __drm_close_driver:
+ * @fd: a drm file descriptor
+ *
+ * Close the drm file descriptor @fd.
+ *
+ * Returns: 0 on success or -1 on error.
+ */
+int drm_close_driver(int fd)
+{
+	/* Avoid closing standard file descriptors (0, 1, and 2). */
+	if (fd < 3) {
+		igt_debug("Don't attempt to close standard/invalid file "
+			  "descriptor: %d\n", fd);
+		return -1;
+	}
+
+	return close(fd);
+}
+
 /**
  * drm_open_driver_master:
  * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL
diff --git a/lib/drmtest.h b/lib/drmtest.h
index ae86ee19a..9c3ea5d14 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -105,6 +105,7 @@ int drm_open_driver_render(int chipset);
 int __drm_open_driver_another(int idx, int chipset);
 int __drm_open_driver(int chipset);
 int __drm_open_driver_render(int chipset);
+int drm_close_driver(int fd);
 
 int drm_reopen_driver(int fd);
 
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-18 18:46   ` Zbigniew Kempczyński
  2023-05-16 16:50 ` [igt-dev] [i-g-t 03/20] lib/xe/xe_query: Add xe_config() interface Bhanuprakash Modem
                   ` (21 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Instead of caching the xe_device struct at subtest level, cache
just after opening the driver. And remove from the cache just
before closing the driver.

V2: - Place the logic in correct helpers (Zbigniew)

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
---
 lib/drmtest.c   | 24 +++++++++++++++++++++---
 lib/igt_types.c |  6 ++++++
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 41ad2694c..cfcb630ed 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -64,6 +64,7 @@
 #include "intel_reg.h"
 #include "ioctl_wrappers.h"
 #include "igt_dummyload.h"
+#include "xe/xe_query.h"
 
 /**
  * SECTION:drmtest
@@ -465,9 +466,14 @@ int __drm_open_driver_another(int idx, int chipset)
 		fd = __open_driver("/dev/dri/card", 0, chipset, idx);
 	}
 
-	if (fd >= 0)
+	if (fd >= 0) {
 		_set_opened_fd(idx, fd);
 
+		/* Cache xe_device struct. */
+		if (is_xe_device(fd))
+			xe_device_get(fd);
+	}
+
 	return fd;
 }
 
@@ -491,6 +497,8 @@ int __drm_open_driver(int chipset)
 
 int __drm_open_driver_render(int chipset)
 {
+	int fd;
+
 	if (chipset != DRIVER_VGEM && igt_device_filter_count() > 0) {
 		struct igt_device_card card;
 		bool found;
@@ -500,10 +508,16 @@ int __drm_open_driver_render(int chipset)
 		if (!found || !strlen(card.render))
 			return -1;
 
-		return __open_driver_exact(card.render, chipset);
+		fd = __open_driver_exact(card.render, chipset);
+	} else {
+		fd = __open_driver("/dev/dri/renderD", 128, chipset, 0);
 	}
 
-	return __open_driver("/dev/dri/renderD", 128, chipset, 0);
+	/* Cache xe_device struct. */
+	if (fd >= 0 && is_xe_device(fd))
+		xe_device_get(fd);
+
+	return fd;
 }
 
 static int at_exit_drm_fd = -1;
@@ -622,6 +636,10 @@ int drm_close_driver(int fd)
 		return -1;
 	}
 
+	/* Remove xe_device from cache. */
+	if (is_xe_device(fd))
+		xe_device_put(fd);
+
 	return close(fd);
 }
 
diff --git a/lib/igt_types.c b/lib/igt_types.c
index 392f30fca..d5d444889 100644
--- a/lib/igt_types.c
+++ b/lib/igt_types.c
@@ -5,13 +5,19 @@
 
 #include <unistd.h>
 
+#include "drmtest.h"
 #include "igt_types.h"
+#include "xe/xe_query.h"
 
 void igt_cleanup_fd(volatile int *fd)
 {
 	if (!fd || *fd < 0)
 		return;
 
+	/* Remove xe_device from cache. */
+	if (is_xe_device(*fd))
+		xe_device_put(*fd);
+
 	close(*fd);
 	*fd = -1;
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 03/20] lib/xe/xe_query: Add xe_config() interface
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 04/20] lib/igt_msm: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Add support to get XE configuration from xe_device.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
---
 lib/xe/xe_query.c | 8 ++++++++
 lib/xe/xe_query.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/lib/xe/xe_query.c b/lib/xe/xe_query.c
index bd5eb1d18..d254a23cb 100644
--- a/lib/xe/xe_query.c
+++ b/lib/xe/xe_query.c
@@ -479,6 +479,14 @@ uint32_t xe_min_page_size(int fd, uint64_t region)
 	return xe_mem_region(fd, region)->min_page_size;
 }
 
+/**
+ * xe_config:
+ * @fd: xe device fd
+ *
+ * Returns xe configuration of xe device @fd.
+ */
+xe_dev_FN(xe_config, config, struct drm_xe_query_config *);
+
 /**
  * xe_number_hw_engine:
  * @fd: xe device fd
diff --git a/lib/xe/xe_query.h b/lib/xe/xe_query.h
index cc6e7cefd..63f32ca92 100644
--- a/lib/xe/xe_query.h
+++ b/lib/xe/xe_query.h
@@ -86,6 +86,7 @@ struct drm_xe_engine_class_instance *xe_hw_engine(int fd, int idx);
 struct drm_xe_query_mem_region *xe_mem_region(int fd, uint64_t region);
 const char *xe_region_name(uint64_t region);
 uint32_t xe_min_page_size(int fd, uint64_t region);
+struct drm_xe_query_config *xe_config(int fd);
 unsigned int xe_number_hw_engines(int fd);
 bool xe_has_vram(int fd);
 uint64_t xe_vram_size(int fd, int gt);
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 04/20] lib/igt_msm: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 03/20] lib/xe/xe_query: Add xe_config() interface Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit Bhanuprakash Modem
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar; +Cc: Rob Clark

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

cc: Rob Clark <robdclark@chromium.org>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/igt_msm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/igt_msm.c b/lib/igt_msm.c
index 8c0380f42..a236898b6 100644
--- a/lib/igt_msm.c
+++ b/lib/igt_msm.c
@@ -87,7 +87,7 @@ igt_msm_dev_close(struct msm_device *dev)
 {
 	if (!dev)
 		return;
-	close(dev->fd);
+	drm_close_driver(dev->fd);
 	free(dev);
 }
 
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (3 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 04/20] lib/igt_msm: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-06-14 12:39   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 06/20] tests/i915: " Bhanuprakash Modem
                   ` (18 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar; +Cc: David Zhang

Close the file descriptor before exiting the test.

Cc: David Zhang <dingchen.zhang@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/amdgpu/amd_abm.c                 | 1 +
 tests/amdgpu/amd_assr.c                | 1 +
 tests/amdgpu/amd_freesync_video_mode.c | 1 +
 tests/amdgpu/amd_mem_leak.c            | 1 +
 tests/amdgpu/amd_psr.c                 | 3 ++-
 tests/amdgpu/amd_vrr_range.c           | 1 +
 6 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
index 9400ed806..082da7ed6 100644
--- a/tests/amdgpu/amd_abm.c
+++ b/tests/amdgpu/amd_abm.c
@@ -378,5 +378,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
index 80cbbe8e9..fc2367f99 100644
--- a/tests/amdgpu/amd_assr.c
+++ b/tests/amdgpu/amd_assr.c
@@ -299,5 +299,6 @@ igt_main
 	igt_fixture
 	{
 		igt_display_fini(&data.display);
+		drm_close_driver(data.fd);
 	}
 }
diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
index 579d24436..62d42a06c 100644
--- a/tests/amdgpu/amd_freesync_video_mode.c
+++ b/tests/amdgpu/amd_freesync_video_mode.c
@@ -868,5 +868,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
index dee563cbe..e4a4b5c47 100644
--- a/tests/amdgpu/amd_mem_leak.c
+++ b/tests/amdgpu/amd_mem_leak.c
@@ -232,5 +232,6 @@ igt_main
 	igt_fixture
 	{
 		igt_display_fini(&data.display);
+		drm_close_driver(data.fd);
 	}
 }
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 966a0dccf..3932e143a 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
 	 * panning the primary plane at the top-left of screen
 	 * set alpha region in overlay plane and set alpha to 0.0 to show primary plane
 	 * set cursor plane and starting from position of (0, 0)
-	 */ 
+	 */
 	draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
 	igt_plane_set_fb(data->primary, &data->pm_fb[0]);
 	igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
@@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 		}
 		close(data.debugfs_fd);
 		igt_display_fini(&data.display);
+		drm_close_driver(data.fd);
 	}
 }
diff --git a/tests/amdgpu/amd_vrr_range.c b/tests/amdgpu/amd_vrr_range.c
index 2f27296dd..cacd668cd 100644
--- a/tests/amdgpu/amd_vrr_range.c
+++ b/tests/amdgpu/amd_vrr_range.c
@@ -338,5 +338,6 @@ igt_main
 	igt_fixture
 	{
 		igt_display_fini(&data.display);
+		drm_close_driver(data.fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (4 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-18 18:58   ` Zbigniew Kempczyński
  2023-05-16 16:50 ` [igt-dev] [i-g-t 07/20] tests/nouveau_crc: " Bhanuprakash Modem
                   ` (17 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Close the file descriptor before exiting the test.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/dmabuf_sync_file.c        | 3 +++
 tests/drm_read.c                | 3 +++
 tests/i915/gem_barrier_race.c   | 3 +++
 tests/i915/gem_basic.c          | 3 +++
 tests/i915/gem_concurrent_all.c | 5 +++++
 tests/i915/gem_ctx_engines.c    | 4 +++-
 tests/i915/gem_ctx_exec.c       | 3 +++
 tests/i915/gem_ctx_freq.c       | 3 +++
 tests/i915/gem_ctx_shared.c     | 3 +++
 tests/i915/gem_eio.c            | 3 +++
 tests/i915/gem_exec_alignment.c | 3 +++
 tests/i915/gem_exec_balancer.c  | 3 +++
 tests/i915/gem_exec_endless.c   | 3 +++
 tests/i915/gem_flink_basic.c    | 3 +++
 tests/i915/gem_userptr_blits.c  | 3 +++
 tests/i915/gem_workarounds.c    | 3 +++
 tests/i915/i915_pm_rps.c        | 3 +++
 17 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
index 25bb6ad75..cfa73117b 100644
--- a/tests/dmabuf_sync_file.c
+++ b/tests/dmabuf_sync_file.c
@@ -380,4 +380,7 @@ igt_main
 		     "operations.");
 	igt_subtest("import-multiple-read-write")
 		test_import_multiple(fd, true);
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/drm_read.c b/tests/drm_read.c
index 36dc623ed..e989e7bfb 100644
--- a/tests/drm_read.c
+++ b/tests/drm_read.c
@@ -311,4 +311,7 @@ igt_main
 
 	igt_subtest("short-buffer-wakeup")
 		test_short_buffer_wakeup(fd, pipe);
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
index faeec3617..46273ab55 100644
--- a/tests/i915/gem_barrier_race.c
+++ b/tests/i915/gem_barrier_race.c
@@ -153,4 +153,7 @@ igt_main
 			break;
 		}
 	}
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
index 3dd790c6c..4e063febd 100644
--- a/tests/i915/gem_basic.c
+++ b/tests/i915/gem_basic.c
@@ -117,4 +117,7 @@ igt_main
 	igt_describe("Verify that closing drm driver is possible with opened gem object.");
 	igt_subtest("create-fd-close")
 		test_create_fd_close(fd);
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
index fb3b5f5d8..0bf46c0a2 100644
--- a/tests/i915/gem_concurrent_all.c
+++ b/tests/i915/gem_concurrent_all.c
@@ -2015,4 +2015,9 @@ igt_main
 			}
 		}
 	}
+
+	igt_fixture {
+		drm_close_driver(fd);
+		drm_close_driver(vgem_drv);
+	}
 }
diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
index b87a21fa4..3daed16a0 100644
--- a/tests/i915/gem_ctx_engines.c
+++ b/tests/i915/gem_ctx_engines.c
@@ -633,6 +633,8 @@ igt_main
 			independent_all(i915, ctx);
 	}
 
-	igt_fixture
+	igt_fixture {
 		igt_stop_hang_detector();
+		drm_close_driver(i915);
+	}
 }
diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
index 20fa1159e..40a373ab6 100644
--- a/tests/i915/gem_ctx_exec.c
+++ b/tests/i915/gem_ctx_exec.c
@@ -546,4 +546,7 @@ igt_main
 		gem_context_destroy(fd, ctx_id);
 		put_ahnd(ahnd);
 	}
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
index 18e736c73..ce4c0ba55 100644
--- a/tests/i915/gem_ctx_freq.c
+++ b/tests/i915/gem_ctx_freq.c
@@ -213,4 +213,7 @@ igt_main
 
 	igt_subtest_f("sysfs")
 		sysfs_range(i915);
+
+	igt_fixture
+		drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
index 8629992e8..77a210d03 100644
--- a/tests/i915/gem_ctx_shared.c
+++ b/tests/i915/gem_ctx_shared.c
@@ -1088,4 +1088,7 @@ igt_main
 			igt_stop_hang_detector();
 		}
 	}
+
+	igt_fixture
+		drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
index 81e55e165..18eec0413 100644
--- a/tests/i915/gem_eio.c
+++ b/tests/i915/gem_eio.c
@@ -1126,4 +1126,7 @@ igt_main
 			intel_allocator_multiprocess_stop();
 		}
 	}
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
index 5059572f1..ddddad533 100644
--- a/tests/i915/gem_exec_alignment.c
+++ b/tests/i915/gem_exec_alignment.c
@@ -546,4 +546,7 @@ igt_main
 		prio_inversion(fd, SHARED);
 	igt_subtest("pi-isolated")
 		prio_inversion(fd, ISOLATED);
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
index 1c655e583..df16f8bec 100644
--- a/tests/i915/gem_exec_balancer.c
+++ b/tests/i915/gem_exec_balancer.c
@@ -3482,4 +3482,7 @@ igt_main
 		igt_subtest("nohangcheck")
 			nohangcheck(i915);
 	}
+
+	igt_fixture
+		drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
index 77719de83..f895c6783 100644
--- a/tests/i915/gem_exec_endless.c
+++ b/tests/i915/gem_exec_endless.c
@@ -367,4 +367,7 @@ igt_main
 			intel_register_access_fini(&mmio);
 		}
 	}
+
+	igt_fixture
+		drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
index 2620bc55d..e9b915082 100644
--- a/tests/i915/gem_flink_basic.c
+++ b/tests/i915/gem_flink_basic.c
@@ -188,4 +188,7 @@ igt_main
 	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
 	igt_subtest("flink-lifetime")
 		test_flink_lifetime(fd);
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
index baba7cf3c..056c7a7ac 100644
--- a/tests/i915/gem_userptr_blits.c
+++ b/tests/i915/gem_userptr_blits.c
@@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
 		igt_require(has_userptr_probe(fd));
 		test_probe(fd);
 	}
+
+	igt_fixture
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
index ae544adbc..7462dc600 100644
--- a/tests/i915/gem_workarounds.c
+++ b/tests/i915/gem_workarounds.c
@@ -339,4 +339,7 @@ igt_main
 			}
 		}
 	}
+
+	igt_fixture
+		drm_close_driver(device);
 }
diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
index d4ee2d58a..f2374aff0 100644
--- a/tests/i915/i915_pm_rps.c
+++ b/tests/i915/i915_pm_rps.c
@@ -959,4 +959,7 @@ igt_main
 		waitboost(drm_fd, true);
 		igt_disallow_hang(drm_fd, hang);
 	}
+
+	igt_fixture
+		drm_close_driver(drm_fd);
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 07/20] tests/nouveau_crc: Close the fd before exit
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (5 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 06/20] tests/i915: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 20:14   ` Lyude Paul
  2023-05-16 16:50 ` [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: " Bhanuprakash Modem
                   ` (16 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Close the file descriptor before exiting the test.

Cc: Lyude Paul <lyude@redhat.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/nouveau_crc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tests/nouveau_crc.c b/tests/nouveau_crc.c
index 785d39bde..d5aa0e650 100644
--- a/tests/nouveau_crc.c
+++ b/tests/nouveau_crc.c
@@ -409,7 +409,9 @@ igt_main
 			close(data.nv_crc_dir);
 		}
 	}
-	igt_fixture
-		igt_display_fini(&data.display);
 
+	igt_fixture {
+		igt_display_fini(&data.display);
+		drm_close_driver(data.drm_fd);
+	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: Close the fd before exit
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (6 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 07/20] tests/nouveau_crc: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-18 19:15   ` Kumar, Janga Rahul
  2023-05-16 16:50 ` [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
                   ` (15 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Close the file descriptor before exiting the test.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/xe/xe_gpgpu_fill.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/xe/xe_gpgpu_fill.c b/tests/xe/xe_gpgpu_fill.c
index 5bca19c87..28ad2382b 100644
--- a/tests/xe/xe_gpgpu_fill.c
+++ b/tests/xe/xe_gpgpu_fill.c
@@ -131,5 +131,6 @@ igt_main
 	igt_fixture {
 		xe_device_put(data.drm_fd);
 		buf_ops_destroy(data.bops);
+		drm_close_driver(data.drm_fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (7 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-06-14 12:38   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd Bhanuprakash Modem
                   ` (14 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/amdgpu/amd_basic.c       | 2 +-
 tests/amdgpu/amd_cs_nop.c      | 2 +-
 tests/amdgpu/amd_deadlock.c    | 2 +-
 tests/amdgpu/amd_info.c        | 2 +-
 tests/amdgpu/amd_module_load.c | 2 +-
 tests/amdgpu/amd_prime.c       | 6 +++---
 6 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/amdgpu/amd_basic.c b/tests/amdgpu/amd_basic.c
index 38525a85e..f7d7f036f 100644
--- a/tests/amdgpu/amd_basic.c
+++ b/tests/amdgpu/amd_basic.c
@@ -696,6 +696,6 @@ igt_main
 
 	igt_fixture {
 		amdgpu_device_deinitialize(device);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/amdgpu/amd_cs_nop.c b/tests/amdgpu/amd_cs_nop.c
index ea3f6aae8..323c1b16a 100644
--- a/tests/amdgpu/amd_cs_nop.c
+++ b/tests/amdgpu/amd_cs_nop.c
@@ -239,6 +239,6 @@ igt_main
 	igt_fixture {
 		amdgpu_cs_ctx_free(context);
 		amdgpu_device_deinitialize(device);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/amdgpu/amd_deadlock.c b/tests/amdgpu/amd_deadlock.c
index df650c921..d805b8d18 100644
--- a/tests/amdgpu/amd_deadlock.c
+++ b/tests/amdgpu/amd_deadlock.c
@@ -118,6 +118,6 @@ igt_main
 
 	igt_fixture {
 		amdgpu_device_deinitialize(device);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/amdgpu/amd_info.c b/tests/amdgpu/amd_info.c
index d6aea827b..c1137ab4d 100644
--- a/tests/amdgpu/amd_info.c
+++ b/tests/amdgpu/amd_info.c
@@ -154,6 +154,6 @@ igt_main
 
 	igt_fixture {
 		amdgpu_device_deinitialize(dev);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/amdgpu/amd_module_load.c b/tests/amdgpu/amd_module_load.c
index 77df96d50..cbc9106f6 100644
--- a/tests/amdgpu/amd_module_load.c
+++ b/tests/amdgpu/amd_module_load.c
@@ -54,7 +54,7 @@ static void sanity_check(void)
 		err = -errno;
 
 	igt_set_timeout(0, NULL);
-	close(fd);
+	drm_close_driver(fd);
 
 	igt_assert_eq(err, 0);
 }
diff --git a/tests/amdgpu/amd_prime.c b/tests/amdgpu/amd_prime.c
index 62924f15b..6916c3173 100644
--- a/tests/amdgpu/amd_prime.c
+++ b/tests/amdgpu/amd_prime.c
@@ -166,7 +166,7 @@ static void amd_plug(amdgpu_device_handle device, struct cork *c)
 static void unplug(struct cork *c)
 {
 	vgem_fence_signal(c->device, c->fence);
-	close(c->device);
+	drm_close_driver(c->device);
 }
 
 static void i915_to_amd(int i915, int amd, amdgpu_device_handle device)
@@ -461,7 +461,7 @@ igt_main
 
 	igt_fixture {
 		amdgpu_device_deinitialize(device);
-		close(amd);
-		close(i915);
+		drm_close_driver(amd);
+		drm_close_driver(i915);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (8 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  8:00   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 11/20] tests/panfrost: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
                   ` (13 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Avoid closing the closed fd.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_mmap_write_crc.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tests/i915/kms_mmap_write_crc.c b/tests/i915/kms_mmap_write_crc.c
index bc51975f6..2a2526417 100644
--- a/tests/i915/kms_mmap_write_crc.c
+++ b/tests/i915/kms_mmap_write_crc.c
@@ -306,6 +306,5 @@ igt_main_args("n", NULL, NULL, opt_handler, NULL)
 		close(data.drm_fd);
 
 		igt_stop_helper(&hog);
-		close(data.drm_fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 11/20] tests/panfrost: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (9 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 12/20] tests/v3d: " Bhanuprakash Modem
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Cc: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/panfrost_gem_new.c   | 4 ++--
 tests/panfrost_get_param.c | 2 +-
 tests/panfrost_prime.c     | 4 ++--
 tests/panfrost_submit.c    | 6 +++---
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/panfrost_gem_new.c b/tests/panfrost_gem_new.c
index 940525ff1..4f27e029d 100644
--- a/tests/panfrost_gem_new.c
+++ b/tests/panfrost_gem_new.c
@@ -82,9 +82,9 @@ igt_main
 		munmap(map, size);
 		igt_panfrost_free_bo(fd2, bo);
 
-		close(fd2);
+		drm_close_driver(fd2);
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/panfrost_get_param.c b/tests/panfrost_get_param.c
index 11c2632b8..7d1ebecb4 100644
--- a/tests/panfrost_get_param.c
+++ b/tests/panfrost_get_param.c
@@ -69,5 +69,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/panfrost_prime.c b/tests/panfrost_prime.c
index 40ba036b2..dbc1cb46b 100644
--- a/tests/panfrost_prime.c
+++ b/tests/panfrost_prime.c
@@ -96,7 +96,7 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
-		close(kms_fd);
+		drm_close_driver(fd);
+		drm_close_driver(kms_fd);
 	}
 }
diff --git a/tests/panfrost_submit.c b/tests/panfrost_submit.c
index 4747d2957..70af55e0b 100644
--- a/tests/panfrost_submit.c
+++ b/tests/panfrost_submit.c
@@ -154,7 +154,7 @@ igt_main
                 check_done(headers[2]);
                 igt_panfrost_free_job(fd, submit[0]);
                 igt_panfrost_free_job(tmpfd, submit[1]);
-                close(tmpfd);
+                drm_close_driver(tmpfd);
         }
 
         igt_subtest("pan-submit-and-close") {
@@ -165,7 +165,7 @@ igt_main
                 submit = igt_panfrost_job_loop(tmpfd);
                 do_ioctl(tmpfd, DRM_IOCTL_PANFROST_SUBMIT, submit->args);
                 igt_panfrost_free_job(tmpfd, submit);
-                close(tmpfd);
+                drm_close_driver(tmpfd);
         }
 
         igt_subtest("pan-unhandled-pagefault") {
@@ -197,6 +197,6 @@ igt_main
         }
 
         igt_fixture {
-                close(fd);
+                drm_close_driver(fd);
         }
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 12/20] tests/v3d: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (10 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 11/20] tests/panfrost: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 13/20] tests/vc4: " Bhanuprakash Modem
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Cc: Melissa Wen <mwen@igalia.com>
Cc: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/v3d/v3d_create_bo.c      | 4 ++--
 tests/v3d/v3d_get_bo_offset.c  | 2 +-
 tests/v3d/v3d_get_param.c      | 2 +-
 tests/v3d/v3d_job_submission.c | 2 +-
 tests/v3d/v3d_mmap.c           | 2 +-
 tests/v3d/v3d_perfmon.c        | 2 +-
 tests/v3d/v3d_submit_cl.c      | 2 +-
 tests/v3d/v3d_submit_csd.c     | 2 +-
 tests/v3d/v3d_wait_bo.c        | 2 +-
 9 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/tests/v3d/v3d_create_bo.c b/tests/v3d/v3d_create_bo.c
index 4142fb5f6..07d237e96 100644
--- a/tests/v3d/v3d_create_bo.c
+++ b/tests/v3d/v3d_create_bo.c
@@ -63,9 +63,9 @@ igt_main
 			igt_assert_eq_u32(((uint32_t *)bo->map)[i], 0x0);
 		igt_v3d_free_bo(fd2, bo);
 
-		close(fd2);
+		drm_close_driver(fd2);
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_get_bo_offset.c b/tests/v3d/v3d_get_bo_offset.c
index 5c208f940..533488420 100644
--- a/tests/v3d/v3d_get_bo_offset.c
+++ b/tests/v3d/v3d_get_bo_offset.c
@@ -67,5 +67,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_get_param.c b/tests/v3d/v3d_get_param.c
index 0ca330eb5..0d8fbf3d6 100644
--- a/tests/v3d/v3d_get_param.c
+++ b/tests/v3d/v3d_get_param.c
@@ -69,5 +69,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_job_submission.c b/tests/v3d/v3d_job_submission.c
index d6e415bb2..e4ca7e89d 100644
--- a/tests/v3d/v3d_job_submission.c
+++ b/tests/v3d/v3d_job_submission.c
@@ -219,5 +219,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_mmap.c b/tests/v3d/v3d_mmap.c
index 567940a80..642c55c65 100644
--- a/tests/v3d/v3d_mmap.c
+++ b/tests/v3d/v3d_mmap.c
@@ -75,5 +75,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_perfmon.c b/tests/v3d/v3d_perfmon.c
index 3f55ddb1d..4d6ea465f 100644
--- a/tests/v3d/v3d_perfmon.c
+++ b/tests/v3d/v3d_perfmon.c
@@ -142,5 +142,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_submit_cl.c b/tests/v3d/v3d_submit_cl.c
index 725bc1dff..293b146e2 100644
--- a/tests/v3d/v3d_submit_cl.c
+++ b/tests/v3d/v3d_submit_cl.c
@@ -376,5 +376,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_submit_csd.c b/tests/v3d/v3d_submit_csd.c
index 3ec0ee49f..0e19913c6 100644
--- a/tests/v3d/v3d_submit_csd.c
+++ b/tests/v3d/v3d_submit_csd.c
@@ -360,5 +360,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/v3d/v3d_wait_bo.c b/tests/v3d/v3d_wait_bo.c
index 9e51b6a05..6ed999426 100644
--- a/tests/v3d/v3d_wait_bo.c
+++ b/tests/v3d/v3d_wait_bo.c
@@ -122,6 +122,6 @@ igt_main
 
 	igt_fixture {
 		igt_v3d_free_bo(fd, bo);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 13/20] tests/vc4: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (11 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 12/20] tests/v3d: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-16 16:50 ` [igt-dev] [i-g-t 14/20] tests/vmwgfx: " Bhanuprakash Modem
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Cc: Melissa Wen <mwen@igalia.com>
Cc: Maíra Canal <mcanal@igalia.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/vc4/vc4_create_bo.c    | 4 ++--
 tests/vc4/vc4_dmabuf_poll.c  | 2 +-
 tests/vc4/vc4_label_bo.c     | 2 +-
 tests/vc4/vc4_lookup_fail.c  | 2 +-
 tests/vc4/vc4_mmap.c         | 2 +-
 tests/vc4/vc4_perfmon.c      | 2 +-
 tests/vc4/vc4_purgeable_bo.c | 2 +-
 tests/vc4/vc4_tiling.c       | 2 +-
 tests/vc4/vc4_wait_bo.c      | 2 +-
 tests/vc4/vc4_wait_seqno.c   | 2 +-
 10 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/tests/vc4/vc4_create_bo.c b/tests/vc4/vc4_create_bo.c
index c17f25b04..ba7db1985 100644
--- a/tests/vc4/vc4_create_bo.c
+++ b/tests/vc4/vc4_create_bo.c
@@ -72,9 +72,9 @@ igt_main
 		munmap(map, size);
 		gem_close(fd2, handle);
 
-		close(fd2);
+		drm_close_driver(fd2);
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_dmabuf_poll.c b/tests/vc4/vc4_dmabuf_poll.c
index c76d4950e..56f60b202 100644
--- a/tests/vc4/vc4_dmabuf_poll.c
+++ b/tests/vc4/vc4_dmabuf_poll.c
@@ -73,5 +73,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_label_bo.c b/tests/vc4/vc4_label_bo.c
index 252bd1ed8..5d626a92d 100644
--- a/tests/vc4/vc4_label_bo.c
+++ b/tests/vc4/vc4_label_bo.c
@@ -82,5 +82,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_lookup_fail.c b/tests/vc4/vc4_lookup_fail.c
index 5e709a7d3..9f179a3fd 100644
--- a/tests/vc4/vc4_lookup_fail.c
+++ b/tests/vc4/vc4_lookup_fail.c
@@ -67,5 +67,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_mmap.c b/tests/vc4/vc4_mmap.c
index 8094f4a2d..fef25f334 100644
--- a/tests/vc4/vc4_mmap.c
+++ b/tests/vc4/vc4_mmap.c
@@ -49,5 +49,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_perfmon.c b/tests/vc4/vc4_perfmon.c
index 664633a3f..b25e92096 100644
--- a/tests/vc4/vc4_perfmon.c
+++ b/tests/vc4/vc4_perfmon.c
@@ -135,5 +135,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_purgeable_bo.c b/tests/vc4/vc4_purgeable_bo.c
index 9d6a3b438..7e9ac1718 100644
--- a/tests/vc4/vc4_purgeable_bo.c
+++ b/tests/vc4/vc4_purgeable_bo.c
@@ -249,5 +249,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_tiling.c b/tests/vc4/vc4_tiling.c
index f5bf31f56..e9d3ebfb3 100644
--- a/tests/vc4/vc4_tiling.c
+++ b/tests/vc4/vc4_tiling.c
@@ -124,5 +124,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_wait_bo.c b/tests/vc4/vc4_wait_bo.c
index c88a4ac46..d309acc95 100644
--- a/tests/vc4/vc4_wait_bo.c
+++ b/tests/vc4/vc4_wait_bo.c
@@ -111,5 +111,5 @@ igt_main
 		test_used_bo(fd, ~0ull);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/vc4/vc4_wait_seqno.c b/tests/vc4/vc4_wait_seqno.c
index 78984fa32..e029a613e 100644
--- a/tests/vc4/vc4_wait_seqno.c
+++ b/tests/vc4/vc4_wait_seqno.c
@@ -55,5 +55,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 14/20] tests/vmwgfx: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (12 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 13/20] tests/vc4: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-17 19:55   ` "Maaz Mombasawala (VMware)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 15/20] tests/kms: " Bhanuprakash Modem
                   ` (9 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar
  Cc: Martin Krastev, Maaz Mombasawala

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Cc: Zack Rusin <zackr@vmware.com>
Cc: Maaz Mombasawala <mombasawalam@vmware.com>
Cc: Martin Krastev <krastevm@vmware.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/igt_vmwgfx.c                    | 2 +-
 tests/vmwgfx/vmw_execution_buffer.c | 2 +-
 tests/vmwgfx/vmw_ref_count.c        | 4 ++--
 tests/vmwgfx/vmw_surface_copy.c     | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/lib/igt_vmwgfx.c b/lib/igt_vmwgfx.c
index 8fb6e553c..12b07b4a8 100644
--- a/lib/igt_vmwgfx.c
+++ b/lib/igt_vmwgfx.c
@@ -135,7 +135,7 @@ void vmw_svga_device_fini(struct vmw_svga_device *device)
 	vmw_bitvector_free(device->rt_view_bv);
 	vmw_bitvector_free(device->ds_view_bv);
 	vmw_bitvector_free(device->shader_bv);
-	close(device->drm_fd);
+	drm_close_driver(device->drm_fd);
 }
 
 bool vmw_save_data_as_png(struct vmw_surface *surface, void *data,
diff --git a/tests/vmwgfx/vmw_execution_buffer.c b/tests/vmwgfx/vmw_execution_buffer.c
index 42322514e..b89770b30 100644
--- a/tests/vmwgfx/vmw_execution_buffer.c
+++ b/tests/vmwgfx/vmw_execution_buffer.c
@@ -308,6 +308,6 @@ igt_main_args("st:", long_options, NULL, parse_options, NULL)
 	igt_fixture
 	{
 		vmw_ioctl_context_destroy(fd, cid);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/vmwgfx/vmw_ref_count.c b/tests/vmwgfx/vmw_ref_count.c
index 013214ff0..da4b41f89 100644
--- a/tests/vmwgfx/vmw_ref_count.c
+++ b/tests/vmwgfx/vmw_ref_count.c
@@ -314,7 +314,7 @@ igt_main
 
 	igt_fixture
 	{
-		close(fd1);
-		close(fd2);
+		drm_close_driver(fd1);
+		drm_close_driver(fd2);
 	}
 }
diff --git a/tests/vmwgfx/vmw_surface_copy.c b/tests/vmwgfx/vmw_surface_copy.c
index d7c2711a8..57e90334f 100644
--- a/tests/vmwgfx/vmw_surface_copy.c
+++ b/tests/vmwgfx/vmw_surface_copy.c
@@ -336,6 +336,6 @@ igt_main
 	igt_fixture
 	{
 		vmw_ioctl_context_destroy(fd, cid);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 15/20] tests/kms: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (13 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 14/20] tests/vmwgfx: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  9:02   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 16/20] tests/xe: " Bhanuprakash Modem
                   ` (8 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/chamelium/kms_chamelium_audio.c  | 2 +-
 tests/chamelium/kms_chamelium_edid.c   | 2 +-
 tests/chamelium/kms_chamelium_frames.c | 2 +-
 tests/chamelium/kms_chamelium_hpd.c    | 2 +-
 tests/i915/kms_big_fb.c                | 2 +-
 tests/i915/kms_big_joiner.c            | 2 +-
 tests/i915/kms_busy.c                  | 2 +-
 tests/i915/kms_ccs.c                   | 2 +-
 tests/i915/kms_cdclk.c                 | 2 +-
 tests/i915/kms_draw_crc.c              | 2 +-
 tests/i915/kms_dsc.c                   | 2 +-
 tests/i915/kms_fbcon_fbt.c             | 2 +-
 tests/i915/kms_fence_pin_leak.c        | 2 +-
 tests/i915/kms_flip_scaled_crc.c       | 2 +-
 tests/i915/kms_flip_tiling.c           | 2 +-
 tests/i915/kms_frontbuffer_tracking.c  | 2 +-
 tests/i915/kms_legacy_colorkey.c       | 2 +-
 tests/i915/kms_mmap_write_crc.c        | 2 +-
 tests/i915/kms_pipe_b_c_ivb.c          | 2 +-
 tests/i915/kms_psr.c                   | 2 +-
 tests/i915/kms_psr2_sf.c               | 2 +-
 tests/i915/kms_psr2_su.c               | 2 +-
 tests/i915/kms_psr_stress_test.c       | 2 +-
 tests/i915/kms_pwrite_crc.c            | 2 +-
 tests/kms_3d.c                         | 2 +-
 tests/kms_addfb_basic.c                | 4 ++--
 tests/kms_async_flips.c                | 2 +-
 tests/kms_atomic.c                     | 2 +-
 tests/kms_atomic_interruptible.c       | 2 +-
 tests/kms_atomic_transition.c          | 2 +-
 tests/kms_color.c                      | 2 +-
 tests/kms_concurrent.c                 | 2 +-
 tests/kms_content_protection.c         | 2 +-
 tests/kms_cursor_crc.c                 | 2 +-
 tests/kms_cursor_edge_walk.c           | 2 +-
 tests/kms_cursor_legacy.c              | 2 +-
 tests/kms_dither.c                     | 2 +-
 tests/kms_dp_aux_dev.c                 | 2 +-
 tests/kms_dp_tiled_display.c           | 2 +-
 tests/kms_flip.c                       | 2 +-
 tests/kms_flip_event_leak.c            | 4 ++--
 tests/kms_force_connector_basic.c      | 4 ++--
 tests/kms_getfb.c                      | 4 ++--
 tests/kms_hdmi_inject.c                | 2 +-
 tests/kms_hdr.c                        | 2 +-
 tests/kms_invalid_mode.c               | 2 +-
 tests/kms_lease.c                      | 4 ++--
 tests/kms_panel_fitting.c              | 2 +-
 tests/kms_pipe_crc_basic.c             | 2 +-
 tests/kms_plane.c                      | 2 +-
 tests/kms_plane_alpha_blend.c          | 2 +-
 tests/kms_plane_cursor.c               | 2 +-
 tests/kms_plane_lowres.c               | 2 +-
 tests/kms_plane_multiple.c             | 2 +-
 tests/kms_plane_scaling.c              | 2 +-
 tests/kms_prime.c                      | 6 +++---
 tests/kms_prop_blob.c                  | 8 ++++----
 tests/kms_properties.c                 | 2 +-
 tests/kms_rmfb.c                       | 4 ++--
 tests/kms_rotation_crc.c               | 2 +-
 tests/kms_scaling_modes.c              | 2 +-
 tests/kms_sequence.c                   | 2 +-
 tests/kms_setmode.c                    | 2 +-
 tests/kms_tv_load_detect.c             | 2 +-
 tests/kms_universal_plane.c            | 2 +-
 tests/kms_vblank.c                     | 2 +-
 tests/kms_vrr.c                        | 1 +
 tests/kms_writeback.c                  | 1 +
 68 files changed, 79 insertions(+), 77 deletions(-)

diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
index 6c6177fc5..8fbc1f80e 100644
--- a/tests/chamelium/kms_chamelium_audio.c
+++ b/tests/chamelium/kms_chamelium_audio.c
@@ -870,6 +870,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
index 4a52e6922..446bbd204 100644
--- a/tests/chamelium/kms_chamelium_edid.c
+++ b/tests/chamelium/kms_chamelium_edid.c
@@ -585,6 +585,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
index 22a7ba936..a56afada4 100644
--- a/tests/chamelium/kms_chamelium_frames.c
+++ b/tests/chamelium/kms_chamelium_frames.c
@@ -1102,6 +1102,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
index efd40ba54..8b3189ca0 100644
--- a/tests/chamelium/kms_chamelium_hpd.c
+++ b/tests/chamelium/kms_chamelium_hpd.c
@@ -564,6 +564,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c
index a0d5ef730..d132f5b98 100644
--- a/tests/i915/kms_big_fb.c
+++ b/tests/i915/kms_big_fb.c
@@ -1010,6 +1010,6 @@ igt_main
 	igt_fixture {
 		igt_display_fini(&data.display);
 		buf_ops_destroy(data.bops);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
index b9dda58f6..2ff23398a 100644
--- a/tests/i915/kms_big_joiner.c
+++ b/tests/i915/kms_big_joiner.c
@@ -302,6 +302,6 @@ igt_main
 	igt_fixture {
 		igt_remove_fb(data.drm_fd, &data.fb);
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_busy.c b/tests/i915/kms_busy.c
index 20d3058fb..74af9229e 100644
--- a/tests/i915/kms_busy.c
+++ b/tests/i915/kms_busy.c
@@ -506,6 +506,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 	igt_fixture {
 		gpu_engines_restore_timeouts(fd, num_engines, saved_gpu_timeouts);
 		igt_display_fini(&display);
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_ccs.c b/tests/i915/kms_ccs.c
index 1b3462ea9..2661f661c 100644
--- a/tests/i915/kms_ccs.c
+++ b/tests/i915/kms_ccs.c
@@ -708,6 +708,6 @@ igt_main_args("cs:", NULL, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_cdclk.c b/tests/i915/kms_cdclk.c
index 0f9b8dc58..40eca24f0 100644
--- a/tests/i915/kms_cdclk.c
+++ b/tests/i915/kms_cdclk.c
@@ -397,6 +397,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_draw_crc.c b/tests/i915/kms_draw_crc.c
index db6d71f2e..01ecb7bb9 100644
--- a/tests/i915/kms_draw_crc.c
+++ b/tests/i915/kms_draw_crc.c
@@ -242,7 +242,7 @@ static void teardown_environment(void)
 
 	buf_ops_destroy(bops);
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
 
 static const char *format_str(int format_index)
diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index 3ce28f848..9a8e73ad3 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -316,6 +316,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_fbcon_fbt.c b/tests/i915/kms_fbcon_fbt.c
index 831ec867a..aea724756 100644
--- a/tests/i915/kms_fbcon_fbt.c
+++ b/tests/i915/kms_fbcon_fbt.c
@@ -408,7 +408,7 @@ static void teardown_environment(struct drm_info *drm)
 
 	drmModeFreeResources(drm->res);
 	close(drm->debugfs_fd);
-	close(drm->fd);
+	drm_close_driver(drm->fd);
 	kmstest_restore_vt_mode();
 }
 
diff --git a/tests/i915/kms_fence_pin_leak.c b/tests/i915/kms_fence_pin_leak.c
index 63657a742..c8a6f1aa1 100644
--- a/tests/i915/kms_fence_pin_leak.c
+++ b/tests/i915/kms_fence_pin_leak.c
@@ -238,5 +238,5 @@ igt_simple_main
 
 	buf_ops_destroy(data.bops);
 	igt_display_fini(&data.display);
-	close(data.drm_fd);
+	drm_close_driver(data.drm_fd);
 }
diff --git a/tests/i915/kms_flip_scaled_crc.c b/tests/i915/kms_flip_scaled_crc.c
index f5dc430e3..30da1fcf3 100644
--- a/tests/i915/kms_flip_scaled_crc.c
+++ b/tests/i915/kms_flip_scaled_crc.c
@@ -694,6 +694,6 @@ igt_main
 		}
 		kmstest_set_vt_text_mode();
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_flip_tiling.c b/tests/i915/kms_flip_tiling.c
index a22f12382..02a5fe8e3 100644
--- a/tests/i915/kms_flip_tiling.c
+++ b/tests/i915/kms_flip_tiling.c
@@ -240,6 +240,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
index 650e14a77..075e3827b 100644
--- a/tests/i915/kms_frontbuffer_tracking.c
+++ b/tests/i915/kms_frontbuffer_tracking.c
@@ -1351,7 +1351,7 @@ static void teardown_drm(void)
 {
 	buf_ops_destroy(drm.bops);
 	igt_display_fini(&drm.display);
-	close(drm.fd);
+	drm_close_driver(drm.fd);
 }
 
 static void setup_modeset(void)
diff --git a/tests/i915/kms_legacy_colorkey.c b/tests/i915/kms_legacy_colorkey.c
index 5b2fd64ba..450cb2e3f 100644
--- a/tests/i915/kms_legacy_colorkey.c
+++ b/tests/i915/kms_legacy_colorkey.c
@@ -87,6 +87,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&display);
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/i915/kms_mmap_write_crc.c b/tests/i915/kms_mmap_write_crc.c
index 2a2526417..77e1cc807 100644
--- a/tests/i915/kms_mmap_write_crc.c
+++ b/tests/i915/kms_mmap_write_crc.c
@@ -303,7 +303,7 @@ igt_main_args("n", NULL, NULL, opt_handler, NULL)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 
 		igt_stop_helper(&hog);
 	}
diff --git a/tests/i915/kms_pipe_b_c_ivb.c b/tests/i915/kms_pipe_b_c_ivb.c
index af11e3262..192771794 100644
--- a/tests/i915/kms_pipe_b_c_ivb.c
+++ b/tests/i915/kms_pipe_b_c_ivb.c
@@ -291,6 +291,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_psr.c b/tests/i915/kms_psr.c
index 6c89de45d..3f8f83b42 100644
--- a/tests/i915/kms_psr.c
+++ b/tests/i915/kms_psr.c
@@ -670,6 +670,6 @@ igt_main_args("", long_options, help_str, opt_handler, &data)
 		close(data.debugfs_fd);
 		buf_ops_destroy(data.bops);
 		display_fini(&data);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 4cf986440..a202c613c 100644
--- a/tests/i915/kms_psr2_sf.c
+++ b/tests/i915/kms_psr2_sf.c
@@ -1298,6 +1298,6 @@ igt_main
 	igt_fixture {
 		close(data.debugfs_fd);
 		display_fini(&data);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
index 65e67b8c9..3081887ca 100644
--- a/tests/i915/kms_psr2_su.c
+++ b/tests/i915/kms_psr2_su.c
@@ -373,6 +373,6 @@ igt_main
 	igt_fixture {
 		close(data.debugfs_fd);
 		display_fini(&data);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_psr_stress_test.c b/tests/i915/kms_psr_stress_test.c
index a4cb3194e..23dcb4077 100644
--- a/tests/i915/kms_psr_stress_test.c
+++ b/tests/i915/kms_psr_stress_test.c
@@ -378,6 +378,6 @@ igt_main
 		buf_ops_destroy(data.bops);
 		igt_display_fini(&data.display);
 		close(data.debugfs_fd);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/kms_pwrite_crc.c b/tests/i915/kms_pwrite_crc.c
index 3278d876d..7bddeecba 100644
--- a/tests/i915/kms_pwrite_crc.c
+++ b/tests/i915/kms_pwrite_crc.c
@@ -193,5 +193,5 @@ igt_simple_main
 	run_test(&data);
 
 	igt_display_fini(&data.display);
-	close(data.drm_fd);
+	drm_close_driver(data.drm_fd);
 }
diff --git a/tests/kms_3d.c b/tests/kms_3d.c
index 437c8a481..55e1d8058 100644
--- a/tests/kms_3d.c
+++ b/tests/kms_3d.c
@@ -119,5 +119,5 @@ igt_simple_main
 	if (is_xe_device(drm_fd))
 		xe_device_put(drm_fd);
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index e375f3ad2..53a6a007a 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -933,7 +933,7 @@ static void master_tests(int fd)
 		do_ioctl_err(master2_fd, DRM_IOCTL_MODE_RMFB, &f.fb_id, ENOENT);
 
 		igt_device_drop_master(master2_fd);
-		close(master2_fd);
+		drm_close_driver(master2_fd);
 
 		igt_device_set_master(fd);
 	}
@@ -1012,6 +1012,6 @@ igt_main
 		if (is_xe_device(fd))
 			xe_device_put(fd);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 51ffa523a..f44fc4bea 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -668,6 +668,6 @@ igt_main_args("e", NULL, help_str, opt_handler, &data)
 		igt_display_reset(&data.display);
 		igt_display_commit(&data.display);
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 037db2d36..b65045abc 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -1460,6 +1460,6 @@ igt_main
 		igt_remove_fb(display.drm_fd, &fb);
 
 		igt_display_fini(&display);
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index 74b2e246a..2acdcb29d 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -389,6 +389,6 @@ igt_main
 	/* TODO: legacy gamma_set/get, object set/getprop, getcrtc, getconnector */
 	igt_fixture {
 		igt_display_fini(&display);
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 9f39d033d..6ab5267ca 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -1182,6 +1182,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_color.c b/tests/kms_color.c
index fdc7120c7..d444cfe10 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -1069,6 +1069,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index e1e581723..d915a98b2 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -400,6 +400,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 		if (is_intel_device(data.drm_fd))
 			intel_allocator_multiprocess_stop();
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 344cac505..6cdf81a28 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -884,6 +884,6 @@ igt_main
 	igt_fixture {
 		test_content_protection_cleanup();
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 3a353a032..d9ae35587 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -1010,6 +1010,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 		}
 
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index 5f423a18f..462b51e20 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -391,6 +391,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index f7a6202cf..c1e7c2113 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -1843,6 +1843,6 @@ igt_main
 		if (intel_psr2_restore)
 			i915_psr2_sel_fetch_restore(display.drm_fd);
 		igt_display_fini(&display);
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 95be6e136..d6c16dd0b 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -247,6 +247,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_dp_aux_dev.c b/tests/kms_dp_aux_dev.c
index 69edc1585..19cbe216a 100644
--- a/tests/kms_dp_aux_dev.c
+++ b/tests/kms_dp_aux_dev.c
@@ -147,5 +147,5 @@ igt_simple_main
 	igt_require(valid_connectors);
 
 	drmModeFreeResources(res);
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
index 07b803a50..8dfe93000 100644
--- a/tests/kms_dp_tiled_display.c
+++ b/tests/kms_dp_tiled_display.c
@@ -502,6 +502,6 @@ igt_main
 		free(data.conns);
 		kmstest_restore_vt_mode();
 		igt_display_fini(data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index f1e0700c1..efff06e1c 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1930,6 +1930,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 		if (is_xe_device(drm_fd))
 			xe_device_put(drm_fd);
 
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index b79cd5030..7e46f5ec0 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -79,7 +79,7 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
 
 	if (is_xe_device(fd))
 		xe_device_put(fd);
-	ret = close(fd);
+	ret = drm_close_driver(fd);
 	igt_assert_eq(ret, 0);
 
 	igt_device_set_master(data->drm_fd);
@@ -121,6 +121,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
index 7e35693cf..950af8d8a 100644
--- a/tests/kms_force_connector_basic.c
+++ b/tests/kms_force_connector_basic.c
@@ -65,7 +65,7 @@ static void reset_connectors(void)
 		free(param);
 	}
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
 
 static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmModeRes *res)
@@ -415,7 +415,7 @@ end:
 
 	igt_fixture {
 		drmModeFreeConnector(connector);
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 
 		reset_connectors();
 	}
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 4adc7eee2..3cb568808 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -452,7 +452,7 @@ static void test_handle_protection(void) {
 		if (is_xe_device(non_master_fd))
 			xe_device_get(non_master_fd);
 
-		close(non_master_fd);
+		drm_close_driver(non_master_fd);
 	}
 }
 
@@ -484,6 +484,6 @@ igt_main
 		if (is_xe_device(fd))
 			xe_device_put(fd);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 2085d1453..e3db34502 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -227,6 +227,6 @@ igt_main
 		if (is_xe_device(drm_fd))
 			xe_device_put(drm_fd);
 
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
index e9e52a9a1..ba19761e2 100644
--- a/tests/kms_hdr.c
+++ b/tests/kms_hdr.c
@@ -666,6 +666,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.fd);
+		drm_close_driver(data.fd);
 	}
 }
diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index ec0483055..6059f1f8f 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -300,6 +300,6 @@ igt_main
 		igt_display_fini(&data.display);
 		igt_reset_connectors();
 		drmModeFreeResources(data.res);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index 29a774ae8..c8ae98206 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -1082,7 +1082,7 @@ static void multimaster_lease(data_t *data)
 	drmSetClientCap(master2_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
 	lease2_fd = create_simple_lease(master2_fd, data);
 
-	close(master2_fd); /* close is an implicit DropMaster */
+	drm_close_driver(master2_fd); /* close is an implicit DropMaster */
 	igt_assert(!is_master(lease2_fd));
 
 	igt_device_set_master(data->master.fd);
@@ -1278,6 +1278,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(display);
-		close(data.master.fd);
+		drm_close_driver(data.master.fd);
 	}
 }
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index 97ef1ae48..ae1c65928 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -288,6 +288,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 84c73fd7f..aac3edb2a 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -491,6 +491,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 10e16b638..8e0cd2129 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -1318,6 +1318,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index 0d03e178a..341b85c7e 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -715,6 +715,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 				    COMMIT_ATOMIC : COMMIT_LEGACY);
 
 		igt_display_fini(&data.display);
-		close(data.gfx_fd);
+		drm_close_driver(data.gfx_fd);
 	}
 }
diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 59b105c60..a7acb18e1 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -331,6 +331,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index db9f5a54c..7aaf83c41 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -342,6 +342,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index 7dd9d586d..1f2bd65c3 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -478,6 +478,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 0e7cd4a2a..986c76fc0 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -1324,6 +1324,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index dd5ab993e..52f587961 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -431,7 +431,7 @@ igt_main
 			if (kms_poll_disabled)
 				kms_poll_state_restore();
 
-			close(second_fd_hybrid);
+			drm_close_driver(second_fd_hybrid);
 		}
 	}
 
@@ -454,9 +454,9 @@ igt_main
 		}
 
 		igt_fixture
-			close(second_fd_vgem);
+			drm_close_driver(second_fd_vgem);
 	}
 
 	igt_fixture
-		close(first_fd);
+		drm_close_driver(first_fd);
 }
diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
index 6a5a5f410..fc172b5a3 100644
--- a/tests/kms_prop_blob.c
+++ b/tests/kms_prop_blob.c
@@ -182,7 +182,7 @@ test_lifetime(int fd)
 	/* Make sure properties are cleaned up on client exit. */
 	prop_id2 = create_prop(fd2);
 	igt_assert_eq(validate_prop(fd, prop_id2), 0);
-	igt_assert_eq(close(fd2), 0);
+	igt_assert_eq(drm_close_driver(fd2), 0);
 	igt_assert_eq(validate_prop(fd, prop_id2), ENOENT);
 
 	igt_assert_eq(validate_prop(fd, prop_id), 0);
@@ -210,7 +210,7 @@ test_multiple(int fd)
 		igt_assert_eq(destroy_prop(fd2, prop_ids[i]), 0);
 		igt_assert_eq(validate_prop(fd2, prop_ids[i]), ENOENT);
 	}
-	igt_assert_eq(close(fd2), 0);
+	igt_assert_eq(drm_close_driver(fd2), 0);
 
 	fd2 = drm_open_driver(DRIVER_ANY);
 	igt_assert_fd(fd2);
@@ -221,7 +221,7 @@ test_multiple(int fd)
 		igt_assert_eq(validate_prop(fd, prop_ids[i]), 0);
 		igt_assert_eq(validate_prop(fd2, prop_ids[i]), 0);
 	}
-	igt_assert_eq(close(fd2), 0);
+	igt_assert_eq(drm_close_driver(fd2), 0);
 
 	for (i = 0; i < ARRAY_SIZE(prop_ids); i++)
 		igt_assert_eq(validate_prop(fd, prop_ids[i]), ENOENT);
@@ -350,5 +350,5 @@ igt_main
 	prop_tests(fd);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 2fe8dfa66..8645808d1 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -810,6 +810,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&display);
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index 50df42953..9a41c1d14 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -121,7 +121,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
 	drmModeFreeCrtc(crtc);
 
 	if (reopen) {
-		close(data->drm_fd);
+		drm_close_driver(data->drm_fd);
 
 		data->drm_fd = drm_open_driver_master(DRIVER_ANY);
 		drmSetClientCap(data->drm_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
@@ -204,6 +204,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 28b4fd27c..f0d8b1172 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -1279,6 +1279,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.gfx_fd);
+		drm_close_driver(data.gfx_fd);
 	}
 }
diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index 906ae76de..31b806ae2 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -138,6 +138,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index c8a3d6bbd..1b96f0017 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -303,6 +303,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index a611d9382..a85f4eaf2 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -978,6 +978,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
 		if (is_xe_device(drm_fd))
 			xe_device_put(drm_fd);
 
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/kms_tv_load_detect.c b/tests/kms_tv_load_detect.c
index 80ced9918..c8e5338d2 100644
--- a/tests/kms_tv_load_detect.c
+++ b/tests/kms_tv_load_detect.c
@@ -84,6 +84,6 @@ igt_main
 
 	igt_fixture {
 		drmModeFreeConnector(tv_connector);
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 635a136ab..957d600f1 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -918,6 +918,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index da0ada78e..1aa8c1083 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -601,6 +601,6 @@ igt_main
 			run_subtests_for_pipe(&data);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index d2d79c4eb..6a766bfb9 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -528,5 +528,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&data.display);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index c4808b02c..db1f0884f 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -606,5 +606,6 @@ igt_main_args("b:c:dl", long_options, help_str, opt_handler, NULL)
 		detach_crtc(&display, output);
 		igt_remove_fb(display.drm_fd, &input_fb);
 		igt_display_fini(&display);
+		drm_close_driver(display.drm_fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 16/20] tests/xe: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (14 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 15/20] tests/kms: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-18 19:14   ` Kumar, Janga Rahul
  2023-05-16 16:50 ` [igt-dev] [i-g-t 17/20] tests/i915: " Bhanuprakash Modem
                   ` (7 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/testdisplay.c             |  4 ++--
 tests/xe/xe_compute.c           |  2 +-
 tests/xe/xe_create.c            |  2 +-
 tests/xe/xe_debugfs.c           |  2 +-
 tests/xe/xe_dma_buf_sync.c      |  4 ++--
 tests/xe/xe_evict.c             |  6 +++---
 tests/xe/xe_exec_balancer.c     |  2 +-
 tests/xe/xe_exec_basic.c        |  2 +-
 tests/xe/xe_exec_compute_mode.c |  2 +-
 tests/xe/xe_exec_fault_mode.c   |  2 +-
 tests/xe/xe_exec_reset.c        |  8 ++++----
 tests/xe/xe_exec_threads.c      |  8 ++++----
 tests/xe/xe_guc_pc.c            |  2 +-
 tests/xe/xe_huc_copy.c          |  2 +-
 tests/xe/xe_intel_bb.c          |  2 +-
 tests/xe/xe_mmap.c              |  2 +-
 tests/xe/xe_mmio.c              |  2 +-
 tests/xe/xe_module_load.c       |  2 +-
 tests/xe/xe_noexec_ping_pong.c  |  2 +-
 tests/xe/xe_pm.c                |  2 +-
 tests/xe/xe_prime_self_import.c | 30 +++++++++++++++---------------
 tests/xe/xe_query.c             |  2 +-
 tests/xe/xe_vm.c                |  2 +-
 tests/xe/xe_waitfence.c         |  2 +-
 24 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index ee272dfb2..294d4c604 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -548,7 +548,7 @@ int update_display(bool probe)
 
 __noreturn static void cleanup_and_exit(int ret)
 {
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 	exit(ret);
 }
 
@@ -779,7 +779,7 @@ out_hotplug:
 out_mainloop:
 	g_main_loop_unref(mainloop);
 out_close:
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 
 	igt_assert_eq(ret, 0);
 }
diff --git a/tests/xe/xe_compute.c b/tests/xe/xe_compute.c
index 7ac64dfe3..5e6cd8529 100644
--- a/tests/xe/xe_compute.c
+++ b/tests/xe/xe_compute.c
@@ -45,6 +45,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(xe);
-		close(xe);
+		drm_close_driver(xe);
 	}
 }
diff --git a/tests/xe/xe_create.c b/tests/xe/xe_create.c
index 5effabc83..959dd27e7 100644
--- a/tests/xe/xe_create.c
+++ b/tests/xe/xe_create.c
@@ -127,6 +127,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(xe);
-		close(xe);
+		drm_close_driver(xe);
 	}
 }
diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
index 6bdd3ef06..4006981c6 100644
--- a/tests/xe/xe_debugfs.c
+++ b/tests/xe/xe_debugfs.c
@@ -270,6 +270,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_dma_buf_sync.c b/tests/xe/xe_dma_buf_sync.c
index 8920b141b..81ece2428 100644
--- a/tests/xe/xe_dma_buf_sync.c
+++ b/tests/xe/xe_dma_buf_sync.c
@@ -220,7 +220,7 @@ test_export_dma_buf(struct drm_xe_engine_class_instance *hwe0,
 
 	for (i = 0; i < N_FD; ++i) {
 		xe_device_put(fd[i]);
-		close(fd[i]);
+		drm_close_driver(fd[i]);
 	}
 
 }
@@ -257,6 +257,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_evict.c b/tests/xe/xe_evict.c
index 7fef4efc5..4b66dd683 100644
--- a/tests/xe/xe_evict.c
+++ b/tests/xe/xe_evict.c
@@ -201,7 +201,7 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
 		xe_vm_destroy(fd, vm3);
 	}
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void
@@ -369,7 +369,7 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
 	if (flags & MULTI_VM)
 		xe_vm_destroy(fd, vm2);
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 struct thread_data {
@@ -701,5 +701,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/xe/xe_exec_balancer.c b/tests/xe/xe_exec_balancer.c
index 2018c8104..fb4592903 100644
--- a/tests/xe/xe_exec_balancer.c
+++ b/tests/xe/xe_exec_balancer.c
@@ -708,6 +708,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_exec_basic.c b/tests/xe/xe_exec_basic.c
index 2a176a5b3..d14a764f4 100644
--- a/tests/xe/xe_exec_basic.c
+++ b/tests/xe/xe_exec_basic.c
@@ -353,6 +353,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_exec_compute_mode.c b/tests/xe/xe_exec_compute_mode.c
index 685193990..950cb6159 100644
--- a/tests/xe/xe_exec_compute_mode.c
+++ b/tests/xe/xe_exec_compute_mode.c
@@ -361,6 +361,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_exec_fault_mode.c b/tests/xe/xe_exec_fault_mode.c
index a3ab17270..8cd883c09 100644
--- a/tests/xe/xe_exec_fault_mode.c
+++ b/tests/xe/xe_exec_fault_mode.c
@@ -570,6 +570,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_exec_reset.c b/tests/xe/xe_exec_reset.c
index 0d72a3f20..3700b8dce 100644
--- a/tests/xe/xe_exec_reset.c
+++ b/tests/xe/xe_exec_reset.c
@@ -294,7 +294,7 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
 				xe_engine_destroy(fd, engines[i]);
 		}
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
 		return;
@@ -475,7 +475,7 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
 				xe_engine_destroy(fd, engines[i]);
 		}
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
 		return;
@@ -655,7 +655,7 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
 				xe_engine_destroy(fd, engines[i]);
 		}
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
 		return;
@@ -946,6 +946,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_exec_threads.c b/tests/xe/xe_exec_threads.c
index 3f2c2de9e..bde92a9c5 100644
--- a/tests/xe/xe_exec_threads.c
+++ b/tests/xe/xe_exec_threads.c
@@ -245,7 +245,7 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
 		xe_vm_destroy(fd, vm);
 	if (owns_fd) {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
 
@@ -454,7 +454,7 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 		xe_vm_destroy(fd, vm);
 	if (owns_fd) {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
 
@@ -698,7 +698,7 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 		xe_vm_destroy(fd, vm);
 	if (owns_fd) {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
 
@@ -1403,6 +1403,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_guc_pc.c b/tests/xe/xe_guc_pc.c
index 5c71ae147..56d4f9190 100644
--- a/tests/xe/xe_guc_pc.c
+++ b/tests/xe/xe_guc_pc.c
@@ -496,6 +496,6 @@ igt_main
 		}
 		close(sysfs);
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_huc_copy.c b/tests/xe/xe_huc_copy.c
index fdac907d6..ccdfe8622 100644
--- a/tests/xe/xe_huc_copy.c
+++ b/tests/xe/xe_huc_copy.c
@@ -192,6 +192,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(xe);
-		close(xe);
+		drm_close_driver(xe);
 	}
 }
diff --git a/tests/xe/xe_intel_bb.c b/tests/xe/xe_intel_bb.c
index 35d61608e..f43beb1a8 100644
--- a/tests/xe/xe_intel_bb.c
+++ b/tests/xe/xe_intel_bb.c
@@ -1180,6 +1180,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
 	igt_fixture {
 		xe_device_put(xe);
 		buf_ops_destroy(bops);
-		close(xe);
+		drm_close_driver(xe);
 	}
 }
diff --git a/tests/xe/xe_mmap.c b/tests/xe/xe_mmap.c
index 6b313a189..352cbcab4 100644
--- a/tests/xe/xe_mmap.c
+++ b/tests/xe/xe_mmap.c
@@ -77,6 +77,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_mmio.c b/tests/xe/xe_mmio.c
index 42b6241b1..77a38b8d1 100644
--- a/tests/xe/xe_mmio.c
+++ b/tests/xe/xe_mmio.c
@@ -89,6 +89,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_module_load.c b/tests/xe/xe_module_load.c
index c2d43cc20..16432c78f 100644
--- a/tests/xe/xe_module_load.c
+++ b/tests/xe/xe_module_load.c
@@ -86,7 +86,7 @@ static void load_and_check_xe(const char *opts)
 	/* driver is ready, check if it's bound */
 	drm_fd = __drm_open_driver(DRIVER_XE);
 	igt_fail_on_f(drm_fd < 0, "Cannot open the xe DRM driver after modprobing xe.\n");
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
 
 static const char * const unwanted_drivers[] = {
diff --git a/tests/xe/xe_noexec_ping_pong.c b/tests/xe/xe_noexec_ping_pong.c
index 367671883..f276e694c 100644
--- a/tests/xe/xe_noexec_ping_pong.c
+++ b/tests/xe/xe_noexec_ping_pong.c
@@ -104,5 +104,5 @@ igt_simple_main
 	test_ping_pong(fd, xe_hw_engine(fd, 0));
 
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/xe/xe_pm.c b/tests/xe/xe_pm.c
index 44154143c..7bec294ed 100644
--- a/tests/xe/xe_pm.c
+++ b/tests/xe/xe_pm.c
@@ -441,6 +441,6 @@ igt_main
 		set_d3cold_allowed(device.pci_xe, d3cold_allowed);
 		igt_restore_runtime_pm();
 		xe_device_put(device.fd_xe);
-		close(device.fd_xe);
+		drm_close_driver(device.fd_xe);
 	}
 }
diff --git a/tests/xe/xe_prime_self_import.c b/tests/xe/xe_prime_self_import.c
index 4e8fd5d4f..a86d0e9f2 100644
--- a/tests/xe/xe_prime_self_import.c
+++ b/tests/xe/xe_prime_self_import.c
@@ -122,9 +122,9 @@ static void test_with_fd_dup(void)
 	check_bo(fd2, handle_import, fd2, handle_import);
 
 	xe_device_put(fd1);
-	close(fd1);
+	drm_close_driver(fd1);
 	xe_device_put(fd2);
-	close(fd2);
+	drm_close_driver(fd2);
 }
 
 /**
@@ -166,9 +166,9 @@ static void test_with_two_bos(void)
 	check_bo(fd2, handle_import, fd2, handle_import);
 
 	xe_device_put(fd1);
-	close(fd1);
+	drm_close_driver(fd1);
 	xe_device_put(fd2);
-	close(fd2);
+	drm_close_driver(fd2);
 }
 
 /**
@@ -202,9 +202,9 @@ static void test_with_one_bo_two_files(void)
 	igt_assert_eq_u32(handle_import, handle_open);
 
 	xe_device_put(fd1);
-	close(fd1);
+	drm_close_driver(fd1);
 	xe_device_put(fd2);
-	close(fd2);
+	drm_close_driver(fd2);
 	close(dma_buf_fd1);
 	close(dma_buf_fd2);
 }
@@ -259,10 +259,10 @@ static void test_with_one_bo(void)
 
 	/* Completely rip out exporting fd. */
 	xe_device_put(fd1);
-	close(fd1);
+	drm_close_driver(fd1);
 	check_bo(fd2, handle_import1, fd2, handle_import1);
 	xe_device_put(fd2);
-	close(fd2);
+	drm_close_driver(fd2);
 }
 
 static void *thread_fn_reimport_vs_close(void *p)
@@ -335,7 +335,7 @@ static void *thread_fn_reimport_vs_close(void *p)
 
 	pthread_barrier_destroy(&g_barrier);
 	xe_device_put(fds[0]);
-	close(fds[0]);
+	drm_close_driver(fds[0]);
 	close(fds[1]);
 
 	/* TODO: Read object count */
@@ -343,7 +343,7 @@ static void *thread_fn_reimport_vs_close(void *p)
 
 	igt_info("leaked %i objects\n", obj_count);
 
-	close(fake);
+	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
 }
@@ -429,7 +429,7 @@ static void test_export_close_race(void)
 
 	pthread_barrier_destroy(&g_barrier);
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 
 	/* TODO: Read object count */
 	obj_count = 0;
@@ -437,7 +437,7 @@ static void test_export_close_race(void)
 	igt_info("leaked %i objects\n", obj_count);
 
 	xe_device_put(fake);
-	close(fake);
+	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
 }
@@ -474,7 +474,7 @@ static void test_llseek_size(void)
 	}
 
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 /**
@@ -511,7 +511,7 @@ static void test_llseek_bad(void)
 	close(dma_buf_fd);
 
 	xe_device_put(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
@@ -544,6 +544,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_query.c b/tests/xe/xe_query.c
index 87990370f..1c06534d4 100644
--- a/tests/xe/xe_query.c
+++ b/tests/xe/xe_query.c
@@ -491,6 +491,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(xe);
-		close(xe);
+		drm_close_driver(xe);
 	}
 }
diff --git a/tests/xe/xe_vm.c b/tests/xe/xe_vm.c
index d4cec104e..9015a5a57 100644
--- a/tests/xe/xe_vm.c
+++ b/tests/xe/xe_vm.c
@@ -1839,6 +1839,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_waitfence.c b/tests/xe/xe_waitfence.c
index cdfcacdb4..8bfb741f6 100644
--- a/tests/xe/xe_waitfence.c
+++ b/tests/xe/xe_waitfence.c
@@ -98,6 +98,6 @@ igt_main
 
 	igt_fixture {
 		xe_device_put(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 17/20] tests/i915: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (15 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 16/20] tests/xe: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  8:44   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config Bhanuprakash Modem
                   ` (6 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

To close the drm file descriptor, use igt helper drm_close_driver()
instead of using close().

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/core_auth.c                           | 10 +++----
 tests/core_getclient.c                      |  2 +-
 tests/core_getstats.c                       |  2 +-
 tests/core_getversion.c                     |  2 +-
 tests/core_setmaster.c                      |  6 ++--
 tests/core_setmaster_vs_auth.c              |  6 ++--
 tests/debugfs_test.c                        |  2 +-
 tests/dumb_buffer.c                         |  2 +-
 tests/eviction_common.c                     |  2 +-
 tests/fbdev.c                               |  2 +-
 tests/i915/api_intel_allocator.c            |  6 ++--
 tests/i915/api_intel_bb.c                   |  2 +-
 tests/i915/drm_fdinfo.c                     |  2 +-
 tests/i915/gem_bad_reloc.c                  |  2 +-
 tests/i915/gem_barrier_race.c               |  2 +-
 tests/i915/gem_basic.c                      |  2 +-
 tests/i915/gem_blits.c                      |  2 +-
 tests/i915/gem_busy.c                       |  2 +-
 tests/i915/gem_caching.c                    |  2 +-
 tests/i915/gem_ccs.c                        |  2 +-
 tests/i915/gem_close_race.c                 | 14 ++++-----
 tests/i915/gem_cs_tlb.c                     |  2 +-
 tests/i915/gem_ctx_bad_destroy.c            |  2 +-
 tests/i915/gem_ctx_create.c                 |  4 +--
 tests/i915/gem_ctx_exec.c                   |  2 +-
 tests/i915/gem_ctx_param.c                  |  2 +-
 tests/i915/gem_ctx_persistence.c            |  6 ++--
 tests/i915/gem_ctx_shared.c                 |  2 +-
 tests/i915/gem_ctx_sseu.c                   |  2 +-
 tests/i915/gem_ctx_switch.c                 |  2 +-
 tests/i915/gem_eio.c                        | 16 +++++------
 tests/i915/gem_evict_alignment.c            |  2 +-
 tests/i915/gem_evict_everything.c           |  2 +-
 tests/i915/gem_exec_alignment.c             |  2 +-
 tests/i915/gem_exec_async.c                 |  2 +-
 tests/i915/gem_exec_await.c                 |  2 +-
 tests/i915/gem_exec_basic.c                 |  2 +-
 tests/i915/gem_exec_big.c                   |  2 +-
 tests/i915/gem_exec_capture.c               |  2 +-
 tests/i915/gem_exec_create.c                |  2 +-
 tests/i915/gem_exec_fair.c                  |  2 +-
 tests/i915/gem_exec_fence.c                 |  4 +--
 tests/i915/gem_exec_flush.c                 |  2 +-
 tests/i915/gem_exec_gttfill.c               |  4 +--
 tests/i915/gem_exec_latency.c               |  2 +-
 tests/i915/gem_exec_nop.c                   |  2 +-
 tests/i915/gem_exec_parallel.c              |  4 +--
 tests/i915/gem_exec_params.c                |  2 +-
 tests/i915/gem_exec_reloc.c                 |  2 +-
 tests/i915/gem_exec_schedule.c              |  2 +-
 tests/i915/gem_exec_store.c                 |  2 +-
 tests/i915/gem_exec_suspend.c               |  2 +-
 tests/i915/gem_exec_whisper.c               |  6 ++--
 tests/i915/gem_exercise_blt.c               |  2 +-
 tests/i915/gem_fd_exhaustion.c              |  2 +-
 tests/i915/gem_fence_thrash.c               |  2 +-
 tests/i915/gem_fenced_exec_thrash.c         |  2 +-
 tests/i915/gem_flink_basic.c                |  4 +--
 tests/i915/gem_flink_race.c                 |  6 ++--
 tests/i915/gem_gtt_cpu_tlb.c                |  2 +-
 tests/i915/gem_gtt_hog.c                    |  2 +-
 tests/i915/gem_gtt_speed.c                  |  2 +-
 tests/i915/gem_huc_copy.c                   |  2 +-
 tests/i915/gem_lmem_evict.c                 |  4 +--
 tests/i915/gem_lmem_swapping.c              | 10 +++----
 tests/i915/gem_madvise.c                    | 12 ++++----
 tests/i915/gem_media_fill.c                 |  2 +-
 tests/i915/gem_mmap.c                       |  2 +-
 tests/i915/gem_mmap_gtt.c                   |  6 ++--
 tests/i915/gem_mmap_offset.c                |  8 +++---
 tests/i915/gem_mmap_wc.c                    |  2 +-
 tests/i915/gem_partial_pwrite_pread.c       |  2 +-
 tests/i915/gem_pipe_control_store_loop.c    |  2 +-
 tests/i915/gem_ppgtt.c                      |  8 +++---
 tests/i915/gem_pread.c                      |  2 +-
 tests/i915/gem_pread_after_blit.c           |  2 +-
 tests/i915/gem_pwrite.c                     |  2 +-
 tests/i915/gem_pwrite_snooped.c             |  2 +-
 tests/i915/gem_pxp.c                        |  2 +-
 tests/i915/gem_read_read_speed.c            |  2 +-
 tests/i915/gem_readwrite.c                  |  2 +-
 tests/i915/gem_reg_read.c                   |  2 +-
 tests/i915/gem_render_copy.c                |  2 +-
 tests/i915/gem_render_copy_redux.c          |  2 +-
 tests/i915/gem_reset_stats.c                | 32 ++++++++++-----------
 tests/i915/gem_ringfill.c                   |  2 +-
 tests/i915/gem_set_tiling_vs_blt.c          |  2 +-
 tests/i915/gem_set_tiling_vs_gtt.c          |  2 +-
 tests/i915/gem_set_tiling_vs_pwrite.c       |  2 +-
 tests/i915/gem_shrink.c                     | 14 ++++-----
 tests/i915/gem_softpin.c                    |  4 +--
 tests/i915/gem_spin_batch.c                 |  2 +-
 tests/i915/gem_streaming_writes.c           |  2 +-
 tests/i915/gem_stress.c                     |  2 +-
 tests/i915/gem_sync.c                       |  2 +-
 tests/i915/gem_tiled_blits.c                |  2 +-
 tests/i915/gem_tiled_fence_blits.c          |  2 +-
 tests/i915/gem_tiled_partial_pwrite_pread.c |  2 +-
 tests/i915/gem_tiled_pread_basic.c          |  2 +-
 tests/i915/gem_tiled_pread_pwrite.c         |  2 +-
 tests/i915/gem_tiled_swapping.c             |  2 +-
 tests/i915/gem_tiled_wb.c                   |  2 +-
 tests/i915/gem_tiled_wc.c                   |  2 +-
 tests/i915/gem_tiling_max_stride.c          |  2 +-
 tests/i915/gem_unfence_active_buffers.c     |  2 +-
 tests/i915/gem_unref_active_buffers.c       |  2 +-
 tests/i915/gem_userptr_blits.c              |  6 ++--
 tests/i915/gem_vm_create.c                  |  4 +--
 tests/i915/gem_wait.c                       |  2 +-
 tests/i915/gem_watchdog.c                   |  2 +-
 tests/i915/gem_workarounds.c                |  2 +-
 tests/i915/gen7_exec_parse.c                |  4 +--
 tests/i915/gen9_exec_parse.c                |  2 +-
 tests/i915/i915_fb_tiling.c                 |  2 +-
 tests/i915/i915_getparams_basic.c           |  2 +-
 tests/i915/i915_hangman.c                   |  4 +--
 tests/i915/i915_hwmon.c                     |  2 +-
 tests/i915/i915_module_load.c               |  8 +++---
 tests/i915/i915_pciid.c                     |  2 +-
 tests/i915/i915_pm_backlight.c              |  2 +-
 tests/i915/i915_pm_dc.c                     |  2 +-
 tests/i915/i915_pm_freq_api.c               |  2 +-
 tests/i915/i915_pm_freq_mult.c              |  2 +-
 tests/i915/i915_pm_lpsp.c                   |  2 +-
 tests/i915/i915_pm_rc6_residency.c          |  2 +-
 tests/i915/i915_pm_rps.c                    |  2 +-
 tests/i915/i915_pm_sseu.c                   |  2 +-
 tests/i915/i915_power.c                     |  2 +-
 tests/i915/i915_query.c                     |  2 +-
 tests/i915/i915_suspend.c                   |  6 ++--
 tests/i915/perf.c                           |  6 ++--
 tests/i915/perf_pmu.c                       |  6 ++--
 tests/i915/sysfs_defaults.c                 |  2 +-
 tests/i915/sysfs_heartbeat_interval.c       |  2 +-
 tests/i915/sysfs_preempt_timeout.c          |  2 +-
 tests/i915/sysfs_timeslice_duration.c       |  2 +-
 tests/prime_busy.c                          |  2 +-
 tests/prime_mmap.c                          |  2 +-
 tests/prime_mmap_coherency.c                |  4 +--
 tests/prime_mmap_kms.c                      |  2 +-
 tests/prime_self_import.c                   | 26 ++++++++---------
 tests/prime_vgem.c                          |  4 +--
 tests/syncobj_basic.c                       |  2 +-
 tests/syncobj_timeline.c                    |  2 +-
 tests/syncobj_wait.c                        |  2 +-
 tests/template.c                            |  2 +-
 tests/vgem_basic.c                          |  6 ++--
 tests/vgem_slow.c                           |  2 +-
 148 files changed, 252 insertions(+), 252 deletions(-)

diff --git a/tests/core_auth.c b/tests/core_auth.c
index 257f12482..110163b00 100644
--- a/tests/core_auth.c
+++ b/tests/core_auth.c
@@ -189,7 +189,7 @@ static void test_basic_auth(int master)
 	igt_assert(drmGetMagic(slave, &magic) == 0);
 	igt_assert_eq(magic, old_magic);
 
-	close(slave);
+	drm_close_driver(slave);
 }
 
 igt_main
@@ -201,7 +201,7 @@ igt_main
 
 		igt_assert(check_auth(fd) == true);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_describe("Use 2 clients, check second is authenticated even when first dropped.");
@@ -211,11 +211,11 @@ igt_main
 
 		igt_assert(check_auth(fd2) == true);
 
-		close(fd);
+		drm_close_driver(fd);
 
 		igt_assert(check_auth(fd2) == true);
 
-		close(fd2);
+		drm_close_driver(fd2);
 	}
 
 	/* above tests require that no drm fd is open */
@@ -224,7 +224,7 @@ igt_main
 
 		igt_fixture
 			master = drm_open_driver_master(DRIVER_ANY);
-	
+
 		igt_describe("Test magic numbers for master and slave.");
 		igt_subtest("basic-auth")
 			test_basic_auth(master);
diff --git a/tests/core_getclient.c b/tests/core_getclient.c
index 40a1c194d..9e53c46f9 100644
--- a/tests/core_getclient.c
+++ b/tests/core_getclient.c
@@ -58,5 +58,5 @@ igt_simple_main
 	ret = ioctl(fd, DRM_IOCTL_GET_CLIENT, &client);
 	igt_assert(ret == -1 && errno == EINVAL);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/core_getstats.c b/tests/core_getstats.c
index fde27cdc6..c68b6b559 100644
--- a/tests/core_getstats.c
+++ b/tests/core_getstats.c
@@ -52,5 +52,5 @@ igt_simple_main
 	ret = ioctl(fd, DRM_IOCTL_GET_STATS, &stats);
 	igt_assert(ret == 0);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/core_getversion.c b/tests/core_getversion.c
index f6953b313..0c2949f18 100644
--- a/tests/core_getversion.c
+++ b/tests/core_getversion.c
@@ -46,5 +46,5 @@ igt_simple_main
 		igt_assert_lte(1, v->version_major);
 
 	drmFree(v);
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/core_setmaster.c b/tests/core_setmaster.c
index 470f9441d..30348dd62 100644
--- a/tests/core_setmaster.c
+++ b/tests/core_setmaster.c
@@ -85,7 +85,7 @@ static void check_drop_set(void)
 	igt_assert_eq(drmDropMaster(master), 0);
 	igt_assert_eq(drmSetMaster(master), 0);
 
-	close(master);
+	drm_close_driver(master);
 }
 
 static unsigned tweak_perm(uint8_t *saved_perm, unsigned max_perm, bool save)
@@ -206,10 +206,10 @@ igt_main
 			igt_assert_eq(drmSetMaster(master), -1);
 			igt_assert_eq(errno, EACCES);
 
-			close(master);
+			drm_close_driver(master);
 		}
 		igt_waitchildren();
 
-		close(master);
+		drm_close_driver(master);
 	}
 }
diff --git a/tests/core_setmaster_vs_auth.c b/tests/core_setmaster_vs_auth.c
index 0b4b8613c..da4662e0a 100644
--- a/tests/core_setmaster_vs_auth.c
+++ b/tests/core_setmaster_vs_auth.c
@@ -66,7 +66,7 @@ igt_simple_main
 	igt_assert_neq(drmAuthMagic(master2, magic), 0);
 	igt_assert_eq(errno, EINVAL);
 
-	close(client);
-	close(master2);
-	close(master1);
+	drm_close_driver(client);
+	drm_close_driver(master2);
+	drm_close_driver(master1);
 }
diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
index 8c775158f..b45646d70 100644
--- a/tests/debugfs_test.c
+++ b/tests/debugfs_test.c
@@ -213,6 +213,6 @@ igt_main
 	igt_fixture {
 		close(sysfs);
 		close(debugfs);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/dumb_buffer.c b/tests/dumb_buffer.c
index ded6b809c..8aa320a59 100644
--- a/tests/dumb_buffer.c
+++ b/tests/dumb_buffer.c
@@ -394,6 +394,6 @@ igt_main
 		always_clear(fd, 30);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/eviction_common.c b/tests/eviction_common.c
index 95af106c1..5948fbc64 100644
--- a/tests/eviction_common.c
+++ b/tests/eviction_common.c
@@ -300,7 +300,7 @@ static int forking_evictions(int fd, struct igt_eviction_test_ops *ops,
 
 		/* drmfd closing will take care of additional bo refs */
 		if (flags & FORKING_EVICTIONS_DUP_DRMFD)
-			close(realfd);
+			drm_close_driver(realfd);
 	}
 
 	igt_waitchildren();
diff --git a/tests/fbdev.c b/tests/fbdev.c
index 794882a6a..154e78b0f 100644
--- a/tests/fbdev.c
+++ b/tests/fbdev.c
@@ -443,6 +443,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/api_intel_allocator.c b/tests/i915/api_intel_allocator.c
index 1263e0fbd..9ce0fff9f 100644
--- a/tests/i915/api_intel_allocator.c
+++ b/tests/i915/api_intel_allocator.c
@@ -502,7 +502,7 @@ static void reopen(int fd)
 
 	__reopen_allocs(fd, fd2, true);
 
-	close(fd2);
+	drm_close_driver(fd2);
 }
 
 #define REOPEN_TIMEOUT 3
@@ -528,7 +528,7 @@ static void reopen_fork(int fd)
 	/* Check references at the end */
 	__reopen_allocs(fd, fd2, true);
 
-	close(fd2);
+	drm_close_driver(fd2);
 
 	intel_allocator_multiprocess_stop();
 }
@@ -847,5 +847,5 @@ igt_main
 		gem_pool(fd);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c
index 46633b038..da74e1ed3 100644
--- a/tests/i915/api_intel_bb.c
+++ b/tests/i915/api_intel_bb.c
@@ -1701,6 +1701,6 @@ igt_main_args("dpibc:", NULL, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		buf_ops_destroy(bops);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/drm_fdinfo.c b/tests/i915/drm_fdinfo.c
index a8b2997fa..b8d1e6c4c 100644
--- a/tests/i915/drm_fdinfo.c
+++ b/tests/i915/drm_fdinfo.c
@@ -866,6 +866,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(i915, ctx);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_bad_reloc.c b/tests/i915/gem_bad_reloc.c
index 478e78a66..fc1c6a574 100644
--- a/tests/i915/gem_bad_reloc.c
+++ b/tests/i915/gem_bad_reloc.c
@@ -212,5 +212,5 @@ igt_main
 		negative_reloc_blt(fd);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
index 46273ab55..59775be4e 100644
--- a/tests/i915/gem_barrier_race.c
+++ b/tests/i915/gem_barrier_race.c
@@ -108,7 +108,7 @@ static void intel_context_first_pin_last_unpin_loop(int fd, uint64_t engine, int
 
 	} while (!READ_ONCE(*done));
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_remote_request(int fd, uint64_t engine, unsigned int timeout)
diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
index 4e063febd..edcc6d443 100644
--- a/tests/i915/gem_basic.c
+++ b/tests/i915/gem_basic.c
@@ -108,7 +108,7 @@ igt_main
 			gpu_fd = __drm_open_driver_another(child, DRIVER_INTEL);
 			igt_assert_f(gpu_fd > 0, "cannot open gpu-%d, errno=%d\n", child, errno);
 			test_create_close(gpu_fd);
-			close(gpu_fd);
+			drm_close_driver(gpu_fd);
 		}
 
 		igt_waitchildren();
diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index 5fbb384db..5ac0bfdc3 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -893,6 +893,6 @@ igt_main
 
 	igt_fixture {
 		put_ahnd(device.ahnd);
-		close(device.fd);
+		drm_close_driver(device.fd);
 	}
 }
diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c
index 08a500a9e..70ba1999f 100644
--- a/tests/i915/gem_busy.c
+++ b/tests/i915/gem_busy.c
@@ -562,6 +562,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_caching.c b/tests/i915/gem_caching.c
index 6e944f0ac..16c594aa6 100644
--- a/tests/i915/gem_caching.c
+++ b/tests/i915/gem_caching.c
@@ -340,6 +340,6 @@ igt_main
 		intel_buf_destroy(scratch_buf);
 		intel_buf_destroy(staging_buf);
 		buf_ops_destroy(data.bops);
-		close(data.fd);
+		drm_close_driver(data.fd);
 	}
 }
diff --git a/tests/i915/gem_ccs.c b/tests/i915/gem_ccs.c
index d25e00fc8..4a1ae094d 100644
--- a/tests/i915/gem_ccs.c
+++ b/tests/i915/gem_ccs.c
@@ -731,6 +731,6 @@ igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		igt_disallow_hang(i915, hang);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_close_race.c b/tests/i915/gem_close_race.c
index dc88eca47..25249b2a5 100644
--- a/tests/i915/gem_close_race.c
+++ b/tests/i915/gem_close_race.c
@@ -248,7 +248,7 @@ static void thread(int fd, struct drm_gem_open name,
 			n++;
 		} while (1);
 
-		close(crashme.fd);
+		drm_close_driver(crashme.fd);
 	}
 
 	timer_delete(timer);
@@ -274,7 +274,7 @@ static void multigpu_threads(int timeout, unsigned int flags, int gpu_count)
 
 		igt_waitchildren();
 		gem_quiescent_gpu(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_waitchildren();
@@ -293,7 +293,7 @@ static void threads(int timeout, unsigned int flags)
 	igt_waitchildren();
 
 	gem_quiescent_gpu(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
@@ -317,7 +317,7 @@ igt_main
 		gpu_count = igt_device_filter_count();
 
 		igt_fork_hang_detector(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_describe("Basic workload submission.");
@@ -329,7 +329,7 @@ igt_main
 		igt_waitchildren();
 
 		gem_quiescent_gpu(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_describe("Basic workload submission on multi-GPU machine.");
@@ -342,7 +342,7 @@ igt_main
 			igt_assert(fd > 0);
 			process(fd, child);
 			gem_quiescent_gpu(fd);
-			close(fd);
+			drm_close_driver(fd);
 		}
 
 		igt_waitchildren();
@@ -369,7 +369,7 @@ igt_main
 		igt_waitchildren();
 
 		gem_quiescent_gpu(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_describe("Share buffer handle across different drm fd's and trying to race"
diff --git a/tests/i915/gem_cs_tlb.c b/tests/i915/gem_cs_tlb.c
index 2117b41e4..ff96e63ed 100644
--- a/tests/i915/gem_cs_tlb.c
+++ b/tests/i915/gem_cs_tlb.c
@@ -162,5 +162,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_ctx_bad_destroy.c b/tests/i915/gem_ctx_bad_destroy.c
index 50bb9aa07..5dc6d040d 100644
--- a/tests/i915/gem_ctx_bad_destroy.c
+++ b/tests/i915/gem_ctx_bad_destroy.c
@@ -80,5 +80,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
index a59abd080..a2d4f56ab 100644
--- a/tests/i915/gem_ctx_create.c
+++ b/tests/i915/gem_ctx_create.c
@@ -117,7 +117,7 @@ static void files(int core, const intel_ctx_cfg_t *cfg,
 			gem_execbuf(fd, &execbuf);
 
 			intel_ctx_destroy(fd, ctx);
-			close(fd);
+			drm_close_driver(fd);
 			count++;
 
 			clock_gettime(CLOCK_MONOTONIC, &end);
@@ -667,6 +667,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_detector();
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
index 40a373ab6..b79be4946 100644
--- a/tests/i915/gem_ctx_exec.c
+++ b/tests/i915/gem_ctx_exec.c
@@ -344,7 +344,7 @@ static void nohangcheck_hostile(int i915)
 	put_ahnd(ahnd);
 
 	close(dir);
-	close(i915);
+	drm_close_driver(i915);
 }
 
 static void close_race(int i915)
diff --git a/tests/i915/gem_ctx_param.c b/tests/i915/gem_ctx_param.c
index 2526b09cb..ac78b33a6 100644
--- a/tests/i915/gem_ctx_param.c
+++ b/tests/i915/gem_ctx_param.c
@@ -472,5 +472,5 @@ igt_main
 		test_get_invalid_param(fd, I915_CONTEXT_PARAM_ENGINES);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_ctx_persistence.c b/tests/i915/gem_ctx_persistence.c
index c0197cea7..e04a34c2a 100644
--- a/tests/i915/gem_ctx_persistence.c
+++ b/tests/i915/gem_ctx_persistence.c
@@ -604,7 +604,7 @@ static void test_nonpersistent_file(int i915)
 	gem_context_set_persistence(i915, 0, false);
 	spin = igt_spin_new(i915, .ahnd = ahnd, .flags = IGT_SPIN_FENCE_OUT);
 
-	close(i915);
+	drm_close_driver(i915);
 	flush_delayed_fput(debugfs);
 
 	igt_assert_eq(wait_for_status(spin->out_fence, reset_timeout_ms), -EIO);
@@ -1087,7 +1087,7 @@ static void __smoker(int i915, const intel_ctx_cfg_t *cfg,
 
 	intel_ctx_destroy(fd, ctx);
 
-	close(fd);
+	drm_close_driver(fd);
 	flush_delayed_fput(i915);
 
 	igt_spin_end(spin);
@@ -1383,6 +1383,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
index 77a210d03..0e121647e 100644
--- a/tests/i915/gem_ctx_shared.c
+++ b/tests/i915/gem_ctx_shared.c
@@ -246,7 +246,7 @@ static void exhaust_shared_gtt(int i915, unsigned int flags)
 		igt_info("Created %lu shared contexts, before %d (%s)\n",
 			 count, err, strerror(-err));
 	}
-	close(i915);
+	drm_close_driver(i915);
 	igt_waitchildren();
 }
 
diff --git a/tests/i915/gem_ctx_sseu.c b/tests/i915/gem_ctx_sseu.c
index 7685511f0..dcc38ae17 100644
--- a/tests/i915/gem_ctx_sseu.c
+++ b/tests/i915/gem_ctx_sseu.c
@@ -545,6 +545,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_ctx_switch.c b/tests/i915/gem_ctx_switch.c
index 4e46b7634..f675570ec 100644
--- a/tests/i915/gem_ctx_switch.c
+++ b/tests/i915/gem_ctx_switch.c
@@ -440,6 +440,6 @@ igt_main
 		igt_stop_hang_detector();
 		gem_close(fd, heavy);
 		gem_close(fd, light);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
index 18eec0413..159b849db 100644
--- a/tests/i915/gem_eio.c
+++ b/tests/i915/gem_eio.c
@@ -461,7 +461,7 @@ static void test_banned(int fd)
 {
 	fd = reopen_device(fd);
 	__test_banned(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 #define TEST_WEDGE (1)
@@ -495,7 +495,7 @@ static void test_wait(int fd, unsigned int flags, unsigned int wait)
 	igt_require(i915_reset_control(fd, true));
 
 	trigger_reset(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_suspend(int fd, int state)
@@ -513,7 +513,7 @@ static void test_suspend(int fd, int state)
 
 	igt_require(i915_reset_control(fd, true));
 	trigger_reset(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_inflight(int fd, unsigned int wait)
@@ -577,7 +577,7 @@ static void test_inflight(int fd, unsigned int wait)
 		trigger_reset(fd);
 
 		gem_close(fd, obj[1].handle);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
 
@@ -638,7 +638,7 @@ static void test_inflight_suspend(int fd)
 
 	igt_assert(i915_reset_control(fd, true));
 	trigger_reset(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static const intel_ctx_t *context_create_safe(int i915)
@@ -728,7 +728,7 @@ static void test_inflight_contexts(int fd, unsigned int wait)
 		for (unsigned int n = 0; n < ARRAY_SIZE(ctx); n++)
 			intel_ctx_destroy(fd, ctx[n]);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
 
@@ -784,7 +784,7 @@ static void test_inflight_external(int fd)
 	put_ahnd(ahnd);
 	igt_assert(i915_reset_control(fd, true));
 	trigger_reset(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_inflight_internal(int fd, unsigned int wait)
@@ -834,7 +834,7 @@ static void test_inflight_internal(int fd, unsigned int wait)
 
 	igt_assert(i915_reset_control(fd, true));
 	trigger_reset(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void reset_stress(int fd, uint64_t ahnd, const intel_ctx_t *ctx0,
diff --git a/tests/i915/gem_evict_alignment.c b/tests/i915/gem_evict_alignment.c
index 0b560ab03..7a40b0128 100644
--- a/tests/i915/gem_evict_alignment.c
+++ b/tests/i915/gem_evict_alignment.c
@@ -265,6 +265,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_helper();
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_evict_everything.c b/tests/i915/gem_evict_everything.c
index 120f89072..d5d464889 100644
--- a/tests/i915/gem_evict_everything.c
+++ b/tests/i915/gem_evict_everything.c
@@ -290,6 +290,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_helper();
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
index ddddad533..947d17cb8 100644
--- a/tests/i915/gem_exec_alignment.c
+++ b/tests/i915/gem_exec_alignment.c
@@ -465,7 +465,7 @@ static void forked(int i915, int timeout)
 	igt_waitchildren_timeout(3 * timeout, NULL);
 
 	free(obj);
-	close(i915);
+	drm_close_driver(i915);
 }
 
 static void single(int fd)
diff --git a/tests/i915/gem_exec_async.c b/tests/i915/gem_exec_async.c
index 173bc4648..6895b9c6c 100644
--- a/tests/i915/gem_exec_async.c
+++ b/tests/i915/gem_exec_async.c
@@ -213,6 +213,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_await.c b/tests/i915/gem_exec_await.c
index 4935cf395..0fd8cbf67 100644
--- a/tests/i915/gem_exec_await.c
+++ b/tests/i915/gem_exec_await.c
@@ -287,6 +287,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(device, ctx);
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
index ca4fc7b96..c018d4089 100644
--- a/tests/i915/gem_exec_basic.c
+++ b/tests/i915/gem_exec_basic.c
@@ -98,6 +98,6 @@ igt_main
 		igt_collection_destroy(set);
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_big.c b/tests/i915/gem_exec_big.c
index 4619bda81..5a8df7264 100644
--- a/tests/i915/gem_exec_big.c
+++ b/tests/i915/gem_exec_big.c
@@ -326,5 +326,5 @@ igt_main
 		exhaustive(i915);
 
 	igt_fixture
-		close(i915);
+		drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c
index 5d3e0905d..b8d390a63 100644
--- a/tests/i915/gem_exec_capture.c
+++ b/tests/i915/gem_exec_capture.c
@@ -1013,6 +1013,6 @@ igt_main
 		close(dir);
 		igt_disallow_hang(fd, hang);
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_create.c b/tests/i915/gem_exec_create.c
index 449aa5b2e..8ca564b09 100644
--- a/tests/i915/gem_exec_create.c
+++ b/tests/i915/gem_exec_create.c
@@ -225,6 +225,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_detector();
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c
index 67af4739d..3ec5ed42a 100644
--- a/tests/i915/gem_exec_fair.c
+++ b/tests/i915/gem_exec_fair.c
@@ -1348,6 +1348,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_detector();
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
index 70f86da5c..eebeead95 100644
--- a/tests/i915/gem_exec_fence.c
+++ b/tests/i915/gem_exec_fence.c
@@ -1768,7 +1768,7 @@ static void test_invalid_timeline_fence_array(int fd)
 	igt_assert_eq(__gem_execbuf(fd, &execbuf), -EFAULT);
 
 	munmap(ptr, 4096);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static const char *test_syncobj_timeline_unused_fence_desc =
@@ -3351,6 +3351,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_exec_flush.c b/tests/i915/gem_exec_flush.c
index 42ddbc529..6a156c5c5 100644
--- a/tests/i915/gem_exec_flush.c
+++ b/tests/i915/gem_exec_flush.c
@@ -711,6 +711,6 @@ igt_main
 
 	igt_fixture {
 		igt_stop_hang_detector();
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_gttfill.c b/tests/i915/gem_exec_gttfill.c
index d6c8f2192..320b47001 100644
--- a/tests/i915/gem_exec_gttfill.c
+++ b/tests/i915/gem_exec_gttfill.c
@@ -279,7 +279,7 @@ igt_main
 			// release resources
 			igt_stop_hang_detector();
 			intel_ctx_destroy(g_fd, ctx);
-			close(g_fd);
+			drm_close_driver(g_fd);
 		}
 
 		igt_waitchildren();
@@ -287,6 +287,6 @@ igt_main
 
 	igt_fixture {
 		intel_allocator_multiprocess_stop();
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c
index 4838a7082..d344db05e 100644
--- a/tests/i915/gem_exec_latency.c
+++ b/tests/i915/gem_exec_latency.c
@@ -971,6 +971,6 @@ igt_main
 	igt_fixture {
 		intel_register_access_fini(&mmio_data);
 		intel_ctx_destroy(device, ctx);
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/gem_exec_nop.c b/tests/i915/gem_exec_nop.c
index f1ec23e8c..079731704 100644
--- a/tests/i915/gem_exec_nop.c
+++ b/tests/i915/gem_exec_nop.c
@@ -1083,6 +1083,6 @@ igt_main
 		igt_stop_hang_detector();
 		gem_close(device, handle);
 		intel_ctx_destroy(device, ctx);
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/gem_exec_parallel.c b/tests/i915/gem_exec_parallel.c
index 97257ea49..91ab4cd75 100644
--- a/tests/i915/gem_exec_parallel.c
+++ b/tests/i915/gem_exec_parallel.c
@@ -181,7 +181,7 @@ static void *thread(void *data)
 		intel_ctx_destroy(fd, tmp_ctx);
 	gem_close(fd, obj[1].handle);
 	if (t->flags & FDS)
-		close(fd);
+		drm_close_driver(fd);
 
 	t->used = used;
 	return NULL;
@@ -364,6 +364,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_params.c b/tests/i915/gem_exec_params.c
index d0805d330..80024fb3d 100644
--- a/tests/i915/gem_exec_params.c
+++ b/tests/i915/gem_exec_params.c
@@ -646,6 +646,6 @@ igt_main
 	igt_fixture {
 		gem_close(fd, handle);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
index 3ce89ca64..bcaffd1d9 100644
--- a/tests/i915/gem_exec_reloc.c
+++ b/tests/i915/gem_exec_reloc.c
@@ -1178,5 +1178,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
index ab1dd7749..a12db4df2 100644
--- a/tests/i915/gem_exec_schedule.c
+++ b/tests/i915/gem_exec_schedule.c
@@ -3369,6 +3369,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_store.c b/tests/i915/gem_exec_store.c
index 7d23bcd5b..6bf392bd2 100644
--- a/tests/i915/gem_exec_store.c
+++ b/tests/i915/gem_exec_store.c
@@ -455,6 +455,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c
index 8d56093fa..2295ed04c 100644
--- a/tests/i915/gem_exec_suspend.c
+++ b/tests/i915/gem_exec_suspend.c
@@ -411,6 +411,6 @@ igt_main
 		igt_collection_destroy(set);
 		igt_disallow_hang(fd, hang);
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exec_whisper.c b/tests/i915/gem_exec_whisper.c
index 80e4b3916..41d9b9d5b 100644
--- a/tests/i915/gem_exec_whisper.c
+++ b/tests/i915/gem_exec_whisper.c
@@ -178,7 +178,7 @@ static void fini_hang(struct hang *h)
 	put_offset(h->ahnd, h->obj.handle);
 	put_ahnd(h->ahnd);
 	intel_ctx_destroy(h->fd, h->ctx);
-	close(h->fd);
+	drm_close_driver(h->fd);
 }
 
 static void ctx_set_random_priority(int fd, uint32_t ctx)
@@ -550,7 +550,7 @@ static void whisper(int fd, const intel_ctx_t *ctx,
 			gem_close(fd, batches[n].handle);
 		if (flags & FDS) {
 			for (n = 0; n < 64; n++)
-				close(fds[n]);
+				drm_close_driver(fds[n]);
 		}
 	}
 
@@ -660,6 +660,6 @@ igt_main
 	igt_fixture {
 		intel_allocator_multiprocess_stop();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_exercise_blt.c b/tests/i915/gem_exercise_blt.c
index fb11fb925..365b9b005 100644
--- a/tests/i915/gem_exercise_blt.c
+++ b/tests/i915/gem_exercise_blt.c
@@ -381,6 +381,6 @@ igt_main_args("b:pst:W:H:", NULL, help_str, opt_handler, NULL)
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_fd_exhaustion.c b/tests/i915/gem_fd_exhaustion.c
index a6463685e..717422951 100644
--- a/tests/i915/gem_fd_exhaustion.c
+++ b/tests/i915/gem_fd_exhaustion.c
@@ -69,5 +69,5 @@ igt_simple_main
 
 	igt_waitchildren();
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_fence_thrash.c b/tests/i915/gem_fence_thrash.c
index 89a5ae29d..5ff52a5c0 100644
--- a/tests/i915/gem_fence_thrash.c
+++ b/tests/i915/gem_fence_thrash.c
@@ -225,7 +225,7 @@ static int run_test(int threads_per_fence, void *f, int tiling,
 		igt_assert(func(&t) == (void *)0);
 	}
 
-	close(t.fd);
+	drm_close_driver(t.fd);
 
 	return 0;
 }
diff --git a/tests/i915/gem_fenced_exec_thrash.c b/tests/i915/gem_fenced_exec_thrash.c
index a9597d801..03ba200a7 100644
--- a/tests/i915/gem_fenced_exec_thrash.c
+++ b/tests/i915/gem_fenced_exec_thrash.c
@@ -199,5 +199,5 @@ igt_main
 		run_test(fd, num_fences + 1, intel_gen(devid) >= 4 ? 0 : ENOBUFS, 0);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
index e9b915082..9a014eb07 100644
--- a/tests/i915/gem_flink_basic.c
+++ b/tests/i915/gem_flink_basic.c
@@ -147,7 +147,7 @@ test_flink_lifetime(int fd)
 	igt_assert_eq(ret, 0);
 	igt_assert(open_struct.handle != 0);
 
-	close(fd2);
+	drm_close_driver(fd2);
 	fd2 = drm_open_driver(DRIVER_INTEL);
 
 	/* Flink name remains valid due to the second reference */
@@ -156,7 +156,7 @@ test_flink_lifetime(int fd)
 	igt_assert_eq(ret, 0);
 	igt_assert(open_struct.handle != 0);
 
-	close(fd2);
+	drm_close_driver(fd2);
 }
 
 igt_main
diff --git a/tests/i915/gem_flink_race.c b/tests/i915/gem_flink_race.c
index 70e133d70..c167e5789 100644
--- a/tests/i915/gem_flink_race.c
+++ b/tests/i915/gem_flink_race.c
@@ -127,7 +127,7 @@ static void test_flink_name(int timeout)
 		 igt_stats_get_max(&stats));
 	igt_stats_fini(&stats);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void *thread_fn_flink_close(void *p)
@@ -188,13 +188,13 @@ static void test_flink_close(void)
 		igt_assert(status == 0);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 
 	obj_count = igt_get_stable_obj_count(fake) - obj_count;
 
 	igt_info("leaked %i objects\n", obj_count);
 
-	close(fake);
+	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
 }
diff --git a/tests/i915/gem_gtt_cpu_tlb.c b/tests/i915/gem_gtt_cpu_tlb.c
index 8000e58cc..5f0a19b8b 100644
--- a/tests/i915/gem_gtt_cpu_tlb.c
+++ b/tests/i915/gem_gtt_cpu_tlb.c
@@ -105,5 +105,5 @@ igt_simple_main
 	for (i = 0; i < OBJ_SIZE/4; i++)
 		igt_assert(ptr[i] == i);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_gtt_hog.c b/tests/i915/gem_gtt_hog.c
index 15a6139ea..c365f1196 100644
--- a/tests/i915/gem_gtt_hog.c
+++ b/tests/i915/gem_gtt_hog.c
@@ -164,7 +164,7 @@ igt_simple_main
 	int fd = drm_open_driver(DRIVER_INTEL);
 	igt_require_gem(fd);
 	gem_require_mappable_ggtt(fd);
-	close(fd);
+	drm_close_driver(fd);
 
 	data.fd = drm_open_driver(DRIVER_INTEL);
 	data.devid = intel_get_drm_devid(data.fd);
diff --git a/tests/i915/gem_gtt_speed.c b/tests/i915/gem_gtt_speed.c
index 272091fdb..d142b1cf7 100644
--- a/tests/i915/gem_gtt_speed.c
+++ b/tests/i915/gem_gtt_speed.c
@@ -515,5 +515,5 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
 	}
 
 	gem_close(fd, handle);
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_huc_copy.c b/tests/i915/gem_huc_copy.c
index ea32b705a..9c31eeaea 100644
--- a/tests/i915/gem_huc_copy.c
+++ b/tests/i915/gem_huc_copy.c
@@ -139,6 +139,6 @@ igt_main
 
 	igt_fixture {
 		put_ahnd(ahnd);
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/i915/gem_lmem_evict.c b/tests/i915/gem_lmem_evict.c
index d2611bd56..7072b9565 100644
--- a/tests/i915/gem_lmem_evict.c
+++ b/tests/i915/gem_lmem_evict.c
@@ -93,7 +93,7 @@ igt_main
 			igt_require_fd(i915);
 			igt_require_gem(i915);
 			igt_require(gem_has_lmem(i915));
-			close(i915);
+			drm_close_driver(i915);
 		}
 
 		igt_i915_driver_unload();
@@ -132,7 +132,7 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 		igt_i915_driver_unload();
 	}
 }
diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
index 4177286b0..0bd71babe 100644
--- a/tests/i915/gem_lmem_swapping.c
+++ b/tests/i915/gem_lmem_swapping.c
@@ -551,7 +551,7 @@ static void test_evict(int i915,
 
 		igt_waitchildren();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 		intel_allocator_multiprocess_stop();
 	} else {
 		__do_evict(i915, ctx, &region->region, &params, params.seed);
@@ -623,7 +623,7 @@ static void test_smem_oom(int i915,
 			   params.seed + child + 1);
 
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	/* smem memory hog process, respawn till the lmem process completes */
@@ -644,7 +644,7 @@ static void test_smem_oom(int i915,
 						break;
 					gem_leak(fd, alloc);
 				}
-				close(fd);
+				drm_close_driver(fd);
 			}
 			/*
 			 * Wait for grand-child processes to finish or be
@@ -736,7 +736,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 			igt_require_fd(i915);
 			igt_require_gem(i915);
 			igt_require(gem_has_lmem(i915));
-			close(i915);
+			drm_close_driver(i915);
 		}
 
 		igt_i915_driver_unload();
@@ -781,7 +781,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 	igt_fixture {
 		intel_ctx_destroy(i915, ctx);
 		free(regions);
-		close(i915);
+		drm_close_driver(i915);
 		igt_i915_driver_unload();
 	}
 
diff --git a/tests/i915/gem_madvise.c b/tests/i915/gem_madvise.c
index 2502d84c7..c141d208d 100644
--- a/tests/i915/gem_madvise.c
+++ b/tests/i915/gem_madvise.c
@@ -77,7 +77,7 @@ dontneed_before_mmap(void)
 					PROT_READ | PROT_WRITE,
 					t->type);
 
-		close(fd);
+		drm_close_driver(fd);
 		if (!ptr)
 			continue;
 
@@ -99,7 +99,7 @@ dontneed_before_mmap(void)
 		fd = drm_open_driver(DRIVER_INTEL);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void
@@ -123,7 +123,7 @@ dontneed_after_mmap(void)
 					t->type);
 
 		gem_madvise(fd, handle, I915_MADV_DONTNEED);
-		close(fd);
+		drm_close_driver(fd);
 		if (!ptr)
 			continue;
 
@@ -145,7 +145,7 @@ dontneed_after_mmap(void)
 		fd = drm_open_driver(DRIVER_INTEL);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void
@@ -161,7 +161,7 @@ dontneed_before_pwrite(void)
 
 	igt_assert_eq(__gem_write(fd, handle, 0, &bbe, sizeof(bbe)), -EFAULT);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void
@@ -185,7 +185,7 @@ dontneed_before_exec(void)
 	execbuf.batch_len = sizeof(buf);
 	igt_assert_eq(__gem_execbuf(fd, &execbuf), -EFAULT);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
diff --git a/tests/i915/gem_media_fill.c b/tests/i915/gem_media_fill.c
index e418047c2..127d7e3a6 100644
--- a/tests/i915/gem_media_fill.c
+++ b/tests/i915/gem_media_fill.c
@@ -173,6 +173,6 @@ igt_main
 	igt_fixture {
 		igt_collection_destroy(set);
 		igt_stop_hang_detector();
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/gem_mmap.c b/tests/i915/gem_mmap.c
index 61f862a8e..053c9ed4c 100644
--- a/tests/i915/gem_mmap.c
+++ b/tests/i915/gem_mmap.c
@@ -315,5 +315,5 @@ igt_main
 		test_huge_bo(2);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
index 0b3a6e5b7..dae6d66b3 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -381,13 +381,13 @@ test_isolation(int i915)
 	igt_info("B: {fd:%d, handle:%d, offset:%"PRIx64"}\n",
 		 B, b, offset_b);
 
-	close(B);
+	drm_close_driver(B);
 
 	ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
 	igt_assert(ptr != MAP_FAILED);
 	munmap(ptr, 4096);
 
-	close(A);
+	drm_close_driver(A);
 
 	ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
 	igt_assert(ptr == MAP_FAILED);
@@ -1491,5 +1491,5 @@ igt_main
 
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_mmap_offset.c b/tests/i915/gem_mmap_offset.c
index e7659e301..07d68594e 100644
--- a/tests/i915/gem_mmap_offset.c
+++ b/tests/i915/gem_mmap_offset.c
@@ -346,13 +346,13 @@ static void isolation(int i915)
 				igt_assert_eq(errno, EACCES);
 			}
 
-			close(B);
+			drm_close_driver(B);
 
 			ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
 			igt_assert(ptr != MAP_FAILED);
 			munmap(ptr, 4096);
 
-			close(A);
+			drm_close_driver(A);
 
 			ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
 			igt_assert(ptr == MAP_FAILED);
@@ -647,7 +647,7 @@ static void open_flood(int i915, int timeout)
 			mmap_offset_ioctl(i915, &arg);
 		}
 
-		close(tmp);
+		drm_close_driver(tmp);
 		count++;
 	}
 
@@ -925,6 +925,6 @@ igt_main
 		blt_coherency(i915);
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_mmap_wc.c b/tests/i915/gem_mmap_wc.c
index 6dc7bae49..9fc26593e 100644
--- a/tests/i915/gem_mmap_wc.c
+++ b/tests/i915/gem_mmap_wc.c
@@ -620,5 +620,5 @@ igt_main
 		test_set_cache_level(fd);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_partial_pwrite_pread.c b/tests/i915/gem_partial_pwrite_pread.c
index 474149d48..affce4ee6 100644
--- a/tests/i915/gem_partial_pwrite_pread.c
+++ b/tests/i915/gem_partial_pwrite_pread.c
@@ -326,6 +326,6 @@ igt_main
 		intel_buf_destroy(scratch_buf);
 		intel_buf_destroy(staging_buf);
 		buf_ops_destroy(data.bops);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/gem_pipe_control_store_loop.c b/tests/i915/gem_pipe_control_store_loop.c
index 59959a374..8e9af5088 100644
--- a/tests/i915/gem_pipe_control_store_loop.c
+++ b/tests/i915/gem_pipe_control_store_loop.c
@@ -183,6 +183,6 @@ igt_main
 
 	igt_fixture {
 		buf_ops_destroy(bops);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
index c3102857a..09b4c6acc 100644
--- a/tests/i915/gem_ppgtt.c
+++ b/tests/i915/gem_ppgtt.c
@@ -251,8 +251,8 @@ static void flink_and_close(void)
 	igt_assert_eq(offset, offset_new);
 
 	gem_close(fd, bo);
-	close(fd);
-	close(fd2);
+	drm_close_driver(fd);
+	drm_close_driver(fd2);
 }
 
 #define PAGE_SIZE 4096
@@ -385,7 +385,7 @@ static bool has_contexts(void)
 
 	fd = drm_open_driver(DRIVER_INTEL);
 	result = gem_has_contexts(fd);
-	close(fd);
+	drm_close_driver(fd);
 
 	return result;
 }
@@ -398,7 +398,7 @@ igt_main
 		int fd = drm_open_driver(DRIVER_INTEL);
 		igt_require_gem(fd);
 		gem_require_blitter(fd);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_subtest("blt-vs-render-ctx0") {
diff --git a/tests/i915/gem_pread.c b/tests/i915/gem_pread.c
index a8bf2b054..e76dbce1f 100644
--- a/tests/i915/gem_pread.c
+++ b/tests/i915/gem_pread.c
@@ -350,6 +350,6 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 		free(src);
 		gem_close(fd, dst);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_pread_after_blit.c b/tests/i915/gem_pread_after_blit.c
index 3b56f787a..d5d20f58d 100644
--- a/tests/i915/gem_pread_after_blit.c
+++ b/tests/i915/gem_pread_after_blit.c
@@ -252,5 +252,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_pwrite.c b/tests/i915/gem_pwrite.c
index 6e3f833cd..353ce1a01 100644
--- a/tests/i915/gem_pwrite.c
+++ b/tests/i915/gem_pwrite.c
@@ -572,5 +572,5 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_pwrite_snooped.c b/tests/i915/gem_pwrite_snooped.c
index e6a10747d..8883b2737 100644
--- a/tests/i915/gem_pwrite_snooped.c
+++ b/tests/i915/gem_pwrite_snooped.c
@@ -140,5 +140,5 @@ igt_simple_main
 	test(256, 256);
 
 	buf_ops_destroy(bops);
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_pxp.c b/tests/i915/gem_pxp.c
index 2f27abd58..a4209945f 100644
--- a/tests/i915/gem_pxp.c
+++ b/tests/i915/gem_pxp.c
@@ -1293,6 +1293,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_read_read_speed.c b/tests/i915/gem_read_read_speed.c
index 7c5c90f79..9e84c7a27 100644
--- a/tests/i915/gem_read_read_speed.c
+++ b/tests/i915/gem_read_read_speed.c
@@ -214,6 +214,6 @@ igt_main
 
 	igt_fixture {
 		buf_ops_destroy(bops);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_readwrite.c b/tests/i915/gem_readwrite.c
index 2d437dec3..6a24d74ec 100644
--- a/tests/i915/gem_readwrite.c
+++ b/tests/i915/gem_readwrite.c
@@ -143,5 +143,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_reg_read.c b/tests/i915/gem_reg_read.c
index 79facc1f2..302aa82ab 100644
--- a/tests/i915/gem_reg_read.c
+++ b/tests/i915/gem_reg_read.c
@@ -170,6 +170,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_render_copy.c b/tests/i915/gem_render_copy.c
index 2c150b2b0..0eaa10754 100644
--- a/tests/i915/gem_render_copy.c
+++ b/tests/i915/gem_render_copy.c
@@ -879,6 +879,6 @@ igt_main_args("dac", NULL, help_str, opt_handler, NULL)
 		igt_stop_hang_detector();
 		buf_ops_destroy(data.bops);
 		igt_collection_destroy(set);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/gem_render_copy_redux.c b/tests/i915/gem_render_copy_redux.c
index 5e1daccf1..dd7917413 100644
--- a/tests/i915/gem_render_copy_redux.c
+++ b/tests/i915/gem_render_copy_redux.c
@@ -81,7 +81,7 @@ static void data_init(data_t *data)
 static void data_fini(data_t *data)
 {
 	buf_ops_destroy(data->bops);
-	close(data->fd);
+	drm_close_driver(data->fd);
 }
 
 static void scratch_buf_init(data_t *data, struct intel_buf *buf,
diff --git a/tests/i915/gem_reset_stats.c b/tests/i915/gem_reset_stats.c
index ddc61781c..3ba2d0c7b 100644
--- a/tests/i915/gem_reset_stats.c
+++ b/tests/i915/gem_reset_stats.c
@@ -297,7 +297,7 @@ static void test_rs(const struct intel_execution_ring *e,
 	igt_assert(igt_seconds_elapsed(&ts_injected) <= 30);
 
 	for (i = 0; i < num_fds; i++)
-		close(fd[i]);
+		drm_close_driver(fd[i]);
 }
 
 #define MAX_CTX 100
@@ -373,7 +373,7 @@ static void test_rs_ctx(const struct intel_execution_ring *e,
 
 	for (i = 0; i < num_fds; i++) {
 		assert_reset_status(i, fd[i], 0, RS_NO_ERROR);
-		close(fd[i]);
+		drm_close_driver(fd[i]);
 	}
 }
 
@@ -427,8 +427,8 @@ static void test_ban(const struct intel_execution_ring *e)
 	igt_assert_eq(gem_reset_stats(fd_good, 0, &rs_good), 0);
 	igt_assert_eq(rs_good.batch_active, 0);
 
-	close(fd_bad);
-	close(fd_good);
+	drm_close_driver(fd_bad);
+	drm_close_driver(fd_good);
 }
 
 static void test_ban_ctx(const struct intel_execution_ring *e)
@@ -486,7 +486,7 @@ static void test_ban_ctx(const struct intel_execution_ring *e)
 	igt_assert_eq(gem_reset_stats(fd, ctx_good, &rs_good), 0);
 	igt_assert_eq(rs_good.batch_active, 0);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_unrelated_ctx(const struct intel_execution_ring *e)
@@ -512,8 +512,8 @@ static void test_unrelated_ctx(const struct intel_execution_ring *e)
 	assert_reset_status(0, fd1, ctx_guilty, RS_BATCH_ACTIVE);
 	assert_reset_status(1, fd2, ctx_unrelated, RS_NO_ERROR);
 
-	close(fd1);
-	close(fd2);
+	drm_close_driver(fd1);
+	drm_close_driver(fd2);
 }
 
 static int get_reset_count(int fd, int ctx)
@@ -539,7 +539,7 @@ static void test_close_pending_ctx(const struct intel_execution_ring *e)
 	gem_context_destroy(fd, ctx);
 	igt_assert_eq(__gem_context_destroy(fd, ctx), -ENOENT);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_close_pending(const struct intel_execution_ring *e)
@@ -549,7 +549,7 @@ static void test_close_pending(const struct intel_execution_ring *e)
 	assert_reset_status(fd, fd, 0, RS_NO_ERROR);
 
 	inject_hang(fd, 0, e, 0);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void noop_on_each_ring(int fd, const bool reverse)
@@ -611,7 +611,7 @@ static void test_close_pending_fork(const struct intel_execution_ring *e,
 		 * when gpu is reset and ring lists are cleared.
 		 */
 		noop_on_each_ring(fd2, reverse);
-		close(fd2);
+		drm_close_driver(fd2);
 		pause();
 		exit(0);
 	} else {
@@ -624,7 +624,7 @@ static void test_close_pending_fork(const struct intel_execution_ring *e,
 	}
 
 	igt_post_hang_ring(fd, hang);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_reset_count(const struct intel_execution_ring *e,
@@ -664,7 +664,7 @@ static void test_reset_count(const struct intel_execution_ring *e,
 	if (create_ctx)
 		gem_context_destroy(fd, ctx);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static int _test_params(int fd, int ctx, uint32_t flags, uint32_t pad)
@@ -735,7 +735,7 @@ static void test_params_ctx(void)
 
 	fd = drm_reopen_driver(device);
 	_test_param(fd, gem_context_create(fd));
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_params(void)
@@ -744,7 +744,7 @@ static void test_params(void)
 
 	fd = drm_reopen_driver(device);
 	_test_param(fd, 0);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static const struct intel_execution_ring *
@@ -790,7 +790,7 @@ static void defer_hangcheck(const struct intel_execution_ring *engine)
 
 	igt_assert_lt(count_start, count_end);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static bool gem_has_reset_stats(int fd)
@@ -999,6 +999,6 @@ igt_main
 	}
 	igt_fixture {
 		igt_assert(igt_params_set(device, "reset", "%d", INT_MAX /* any reset method */));
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/gem_ringfill.c b/tests/i915/gem_ringfill.c
index de6e26bf4..70ebc0c60 100644
--- a/tests/i915/gem_ringfill.c
+++ b/tests/i915/gem_ringfill.c
@@ -401,6 +401,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_set_tiling_vs_blt.c b/tests/i915/gem_set_tiling_vs_blt.c
index 5e3bf6a12..7148c9d18 100644
--- a/tests/i915/gem_set_tiling_vs_blt.c
+++ b/tests/i915/gem_set_tiling_vs_blt.c
@@ -261,6 +261,6 @@ igt_main
 
 	igt_fixture{
 		buf_ops_destroy(bops);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_set_tiling_vs_gtt.c b/tests/i915/gem_set_tiling_vs_gtt.c
index 2f890e83b..4ebf17dcb 100644
--- a/tests/i915/gem_set_tiling_vs_gtt.c
+++ b/tests/i915/gem_set_tiling_vs_gtt.c
@@ -130,5 +130,5 @@ igt_simple_main
 
 	munmap(ptr, OBJECT_SIZE);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_set_tiling_vs_pwrite.c b/tests/i915/gem_set_tiling_vs_pwrite.c
index 6bec7f27e..170195e47 100644
--- a/tests/i915/gem_set_tiling_vs_pwrite.c
+++ b/tests/i915/gem_set_tiling_vs_pwrite.c
@@ -99,5 +99,5 @@ igt_simple_main
 
 	munmap(ptr, OBJECT_SIZE);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
index 380d2c846..a104c9f3a 100644
--- a/tests/i915/gem_shrink.c
+++ b/tests/i915/gem_shrink.c
@@ -270,7 +270,7 @@ static bool has_userptr(void)
 	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_USERPTR, &userptr))
 		err = errno;
 
-	close(fd);
+	drm_close_driver(fd);
 
 	return err == EFAULT;
 }
@@ -319,7 +319,7 @@ static void run_test(int nchildren, uint64_t alloc,
 				int fd = drm_open_driver(DRIVER_INTEL);
 				for (int pass = 0; pass < nchildren; pass++)
 					leak(fd, alloc);
-				close(fd);
+				drm_close_driver(fd);
 			}
 		}
 	}
@@ -331,7 +331,7 @@ static void run_test(int nchildren, uint64_t alloc,
 				int fd = drm_open_driver(DRIVER_INTEL);
 				for (int pass = 0; pass < nchildren; pass++)
 					userptr(fd, alloc, 0);
-				close(fd);
+				drm_close_driver(fd);
 			}
 		}
 		nchildren = (nchildren + 1)/2;
@@ -344,7 +344,7 @@ static void run_test(int nchildren, uint64_t alloc,
 				int fd = drm_open_driver(DRIVER_INTEL);
 				for (int pass = 0; pass < nchildren; pass++)
 					userptr(fd, alloc, UDIRTY);
-				close(fd);
+				drm_close_driver(fd);
 			}
 		}
 		nchildren = (nchildren + 1)/2;
@@ -356,7 +356,7 @@ static void run_test(int nchildren, uint64_t alloc,
 			int fd = drm_open_driver(DRIVER_INTEL);
 			for (int pass = 0; pass < nchildren; pass++)
 				func(fd, alloc);
-			close(fd);
+			drm_close_driver(fd);
 		}
 	}
 	igt_waitchildren();
@@ -399,7 +399,7 @@ static void reclaim(unsigned engine, int timeout)
 
 	munmap((void *)shared, 4096);
 	close(debugfs);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
@@ -456,7 +456,7 @@ igt_main
 			 num_processes, alloc_size);
 
 		alloc_size <<= 20;
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_subtest("reclaim")
diff --git a/tests/i915/gem_softpin.c b/tests/i915/gem_softpin.c
index 933daa4a1..22e11ce43 100644
--- a/tests/i915/gem_softpin.c
+++ b/tests/i915/gem_softpin.c
@@ -1217,7 +1217,7 @@ static void *thread(void *data)
 			  fd, ctx->id, t->engine, succeeded);
 	intel_ctx_destroy(fd, ctx);
 	gem_close(fd, obj[1].handle);
-	close(fd);
+	drm_close_driver(fd);
 
 	return (void *) from_user_pointer(ret);
 }
@@ -1531,6 +1531,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_spin_batch.c b/tests/i915/gem_spin_batch.c
index 7dc68ebc7..68e7af7e3 100644
--- a/tests/i915/gem_spin_batch.c
+++ b/tests/i915/gem_spin_batch.c
@@ -277,6 +277,6 @@ igt_main
 	igt_fixture {
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_streaming_writes.c b/tests/i915/gem_streaming_writes.c
index 883fe4293..a8e6c42a8 100644
--- a/tests/i915/gem_streaming_writes.c
+++ b/tests/i915/gem_streaming_writes.c
@@ -419,5 +419,5 @@ igt_main
 		test_batch(fd, 2, 1);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c
index 3765ab14b..23690c077 100644
--- a/tests/i915/gem_stress.c
+++ b/tests/i915/gem_stress.c
@@ -926,7 +926,7 @@ igt_simple_main_args("ds:g:c:t:rbuxmo:fp:",
 	intel_bb_destroy(ibb);
 	buf_ops_destroy(bops);
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 
 	igt_stop_signal_helper();
 }
diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c
index e7dc6637a..18adbd19d 100644
--- a/tests/i915/gem_sync.c
+++ b/tests/i915/gem_sync.c
@@ -1363,6 +1363,6 @@ igt_main
 		intel_allocator_multiprocess_stop();
 		igt_stop_hang_detector();
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_tiled_blits.c b/tests/i915/gem_tiled_blits.c
index 5e7ed0c4e..0f8434d7f 100644
--- a/tests/i915/gem_tiled_blits.c
+++ b/tests/i915/gem_tiled_blits.c
@@ -215,6 +215,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_tiled_fence_blits.c b/tests/i915/gem_tiled_fence_blits.c
index a3a0221d6..8e908eac0 100644
--- a/tests/i915/gem_tiled_fence_blits.c
+++ b/tests/i915/gem_tiled_fence_blits.c
@@ -320,5 +320,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiled_partial_pwrite_pread.c b/tests/i915/gem_tiled_partial_pwrite_pread.c
index 95fb69c65..ecc97002e 100644
--- a/tests/i915/gem_tiled_partial_pwrite_pread.c
+++ b/tests/i915/gem_tiled_partial_pwrite_pread.c
@@ -318,6 +318,6 @@ igt_main
 		intel_buf_destroy(tiled_staging_buf);
 		buf_ops_destroy(bops);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_tiled_pread_basic.c b/tests/i915/gem_tiled_pread_basic.c
index 2b4cec6e7..48f5c67e1 100644
--- a/tests/i915/gem_tiled_pread_basic.c
+++ b/tests/i915/gem_tiled_pread_basic.c
@@ -222,5 +222,5 @@ igt_simple_main
 		}
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiled_pread_pwrite.c b/tests/i915/gem_tiled_pread_pwrite.c
index 2d21dfb76..885785cab 100644
--- a/tests/i915/gem_tiled_pread_pwrite.c
+++ b/tests/i915/gem_tiled_pread_pwrite.c
@@ -154,5 +154,5 @@ igt_simple_main
 		gem_madvise(fd, handle, I915_MADV_DONTNEED);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c
index f4bdce738..718516def 100644
--- a/tests/i915/gem_tiled_swapping.c
+++ b/tests/i915/gem_tiled_swapping.c
@@ -246,5 +246,5 @@ igt_main
 	}
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiled_wb.c b/tests/i915/gem_tiled_wb.c
index e9efbdf23..b2337806d 100644
--- a/tests/i915/gem_tiled_wb.c
+++ b/tests/i915/gem_tiled_wb.c
@@ -239,5 +239,5 @@ igt_simple_main
 		munmap(linear, last_page - first_page);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiled_wc.c b/tests/i915/gem_tiled_wc.c
index 1f245eb7d..4f733163b 100644
--- a/tests/i915/gem_tiled_wc.c
+++ b/tests/i915/gem_tiled_wc.c
@@ -243,5 +243,5 @@ igt_simple_main
 		munmap(linear, last_page - first_page);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_tiling_max_stride.c b/tests/i915/gem_tiling_max_stride.c
index 513d579d3..d326ae7c2 100644
--- a/tests/i915/gem_tiling_max_stride.c
+++ b/tests/i915/gem_tiling_max_stride.c
@@ -138,5 +138,5 @@ igt_simple_main
 
 	munmap(ptr, size);
 
-	close(fd);
+	drm_close_driver(fd);
 }
diff --git a/tests/i915/gem_unfence_active_buffers.c b/tests/i915/gem_unfence_active_buffers.c
index a0a601de2..71686095d 100644
--- a/tests/i915/gem_unfence_active_buffers.c
+++ b/tests/i915/gem_unfence_active_buffers.c
@@ -99,5 +99,5 @@ igt_simple_main
 
 	igt_spin_free(i915, spin);
 	put_ahnd(ahnd);
-	close(i915);
+	drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_unref_active_buffers.c b/tests/i915/gem_unref_active_buffers.c
index 735c14720..9d92156a1 100644
--- a/tests/i915/gem_unref_active_buffers.c
+++ b/tests/i915/gem_unref_active_buffers.c
@@ -121,5 +121,5 @@ igt_simple_main
 
 	igt_spin_free(i915, spin);
 	put_ahnd(ahnd);
-	close(i915);
+	drm_close_driver(i915);
 }
diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
index 056c7a7ac..d46623f69 100644
--- a/tests/i915/gem_userptr_blits.c
+++ b/tests/i915/gem_userptr_blits.c
@@ -730,7 +730,7 @@ static void test_nohangcheck_hostile(int i915)
 	close(fence);
 
 	close(dir);
-	close(i915);
+	drm_close_driver(i915);
 }
 
 static size_t hugepagesize(void)
@@ -1288,9 +1288,9 @@ static int test_dmabuf(void)
 
 	/* destroy userptr object and expect SIGBUS */
 	free_userptr_bo(fd1, handle);
-	close(fd1);
+	drm_close_driver(fd1);
 
-	close(fd2);
+	drm_close_driver(fd2);
 	reset_handle_ptr();
 
 	return 0;
diff --git a/tests/i915/gem_vm_create.c b/tests/i915/gem_vm_create.c
index 44958cce8..fbfd7512a 100644
--- a/tests/i915/gem_vm_create.c
+++ b/tests/i915/gem_vm_create.c
@@ -347,7 +347,7 @@ static void isolation(int i915)
 	gem_read(i915, obj[0].handle, 0, &result, sizeof(result));
 	igt_assert_eq(result, 1);
 
-	close(other);
+	drm_close_driver(other);
 
 	gem_close(i915, obj[1].handle);
 	gem_close(i915, obj[0].handle);
@@ -388,6 +388,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_wait.c b/tests/i915/gem_wait.c
index 27d084afa..a33e461d8 100644
--- a/tests/i915/gem_wait.c
+++ b/tests/i915/gem_wait.c
@@ -257,6 +257,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gem_watchdog.c b/tests/i915/gem_watchdog.c
index 47ccd2caa..12a7d1720 100644
--- a/tests/i915/gem_watchdog.c
+++ b/tests/i915/gem_watchdog.c
@@ -586,6 +586,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(i915, ctx);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
index 7462dc600..4b003ffbc 100644
--- a/tests/i915/gem_workarounds.c
+++ b/tests/i915/gem_workarounds.c
@@ -235,7 +235,7 @@ static void check_workarounds(int fd, enum operation op, unsigned int flags)
 	if (flags & CONTEXT)
 		intel_ctx_destroy(fd, ctx);
 	if (flags & FD)
-		close(fd);
+		drm_close_driver(fd);
 }
 
 igt_main
diff --git a/tests/i915/gen7_exec_parse.c b/tests/i915/gen7_exec_parse.c
index e9751ea73..895aea1ea 100644
--- a/tests/i915/gen7_exec_parse.c
+++ b/tests/i915/gen7_exec_parse.c
@@ -445,7 +445,7 @@ static void hsw_load_register_reg(void)
 				   0xabcdabc0);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
@@ -717,6 +717,6 @@ igt_main
 		igt_stop_hang_detector();
 		gem_close(fd, handle);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/gen9_exec_parse.c b/tests/i915/gen9_exec_parse.c
index 26b151705..e7d47fccc 100644
--- a/tests/i915/gen9_exec_parse.c
+++ b/tests/i915/gen9_exec_parse.c
@@ -1252,6 +1252,6 @@ igt_main
 		igt_stop_hang_detector();
 		gem_close(i915, handle);
 
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/i915_fb_tiling.c b/tests/i915/i915_fb_tiling.c
index cafa5233c..f3f0c3d0a 100644
--- a/tests/i915/i915_fb_tiling.c
+++ b/tests/i915/i915_fb_tiling.c
@@ -44,5 +44,5 @@ igt_simple_main
 	igt_assert_eq(ret, -EBUSY);
 
 	igt_remove_fb(drm_fd, &fb);
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
diff --git a/tests/i915/i915_getparams_basic.c b/tests/i915/i915_getparams_basic.c
index 5422d585f..b6988784d 100644
--- a/tests/i915/i915_getparams_basic.c
+++ b/tests/i915/i915_getparams_basic.c
@@ -46,7 +46,7 @@ init(void)
 static void
 deinit(void)
 {
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
 
 
diff --git a/tests/i915/i915_hangman.c b/tests/i915/i915_hangman.c
index dd396c4e9..d8c9ec0ef 100644
--- a/tests/i915/i915_hangman.c
+++ b/tests/i915/i915_hangman.c
@@ -97,7 +97,7 @@ static void check_alive(void)
 	put_ahnd(ahnd);
 	intel_ctx_destroy(fd, ctx);
 	gem_quiescent_gpu(fd);
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static bool has_error_state(int dir)
@@ -580,6 +580,6 @@ igt_main
 
 		igt_disallow_hang(device, hang);
 		intel_ctx_destroy(device, ctx);
-		close(device);
+		drm_close_driver(device);
 	}
 }
diff --git a/tests/i915/i915_hwmon.c b/tests/i915/i915_hwmon.c
index 6d9937e99..4b7ecb766 100644
--- a/tests/i915/i915_hwmon.c
+++ b/tests/i915/i915_hwmon.c
@@ -83,6 +83,6 @@ igt_main
 
 	igt_fixture {
 		close(hwm);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
index 725687dab..057c68906 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -238,7 +238,7 @@ static void gem_sanitycheck(void)
 		store_all(i915);
 	errno = 0;
 
-	close(i915);
+	drm_close_driver(i915);
 	igt_assert_eq(err, expected);
 }
 
@@ -286,7 +286,7 @@ static void load_and_check_i915(void)
 
 	/* make sure the GPU is idle */
 	gem_quiescent_gpu(drm_fd);
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 
 	/* make sure we can do basic memory ops */
 	gem_sanitycheck();
@@ -327,7 +327,7 @@ static uint32_t  driver_load_with_lmem_bar_size(uint32_t lmem_bar_size, bool che
 		}
 	}
 
-	close(i915);
+	drm_close_driver(i915);
 
 	return lmem_bar_size;
 }
@@ -419,7 +419,7 @@ igt_main
 			igt_require_gem(i915);
 			igt_require(gem_has_lmem(i915));
 			igt_skip_on_f(igt_sysfs_get_num_gt(i915) > 1, "Skips for more than one lmem instance.\n");
-			close(i915);
+			drm_close_driver(i915);
 		}
 
 		/* Test for lmem_bar_size modparam support */
diff --git a/tests/i915/i915_pciid.c b/tests/i915/i915_pciid.c
index 377eec58c..9da7dc074 100644
--- a/tests/i915/i915_pciid.c
+++ b/tests/i915/i915_pciid.c
@@ -65,5 +65,5 @@ igt_simple_main
 
 	igt_assert(has_known_intel_chipset(intel));
 
-	close(intel);
+	drm_close_driver(intel);
 }
diff --git a/tests/i915/i915_pm_backlight.c b/tests/i915/i915_pm_backlight.c
index 829606622..0bdb98f3f 100644
--- a/tests/i915/i915_pm_backlight.c
+++ b/tests/i915/i915_pm_backlight.c
@@ -332,6 +332,6 @@ igt_main
 
 		igt_display_fini(&display);
 		igt_pm_restore_sata_link_power_management();
-		close(display.drm_fd);
+		drm_close_driver(display.drm_fd);
 	}
 }
diff --git a/tests/i915/i915_pm_dc.c b/tests/i915/i915_pm_dc.c
index 6f08cb3fc..859bfdc55 100644
--- a/tests/i915/i915_pm_dc.c
+++ b/tests/i915/i915_pm_dc.c
@@ -689,7 +689,7 @@ igt_main
 		close(data.debugfs_root_fd);
 		close(data.msr_fd);
 		display_fini(&data);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 
 	igt_exit();
diff --git a/tests/i915/i915_pm_freq_api.c b/tests/i915/i915_pm_freq_api.c
index 662d514a4..096adbbb5 100644
--- a/tests/i915/i915_pm_freq_api.c
+++ b/tests/i915/i915_pm_freq_api.c
@@ -139,6 +139,6 @@ igt_main
 			igt_assert(set_freq(dirfd, RPS_MAX_FREQ_MHZ, stash_max[gt]) > 0);
 			igt_assert(set_freq(dirfd, RPS_MIN_FREQ_MHZ, stash_min[gt]) > 0);
 		}
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/i915_pm_freq_mult.c b/tests/i915/i915_pm_freq_mult.c
index 894ae294c..825f5a326 100644
--- a/tests/i915/i915_pm_freq_mult.c
+++ b/tests/i915/i915_pm_freq_mult.c
@@ -167,6 +167,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/i915_pm_lpsp.c b/tests/i915/i915_pm_lpsp.c
index 3ad8b2603..fc4404c9b 100644
--- a/tests/i915/i915_pm_lpsp.c
+++ b/tests/i915/i915_pm_lpsp.c
@@ -211,6 +211,6 @@ igt_main
 	igt_fixture {
 		free(data.pwr_dmn_info);
 		igt_display_fini(&data.display);
-		close(data.drm_fd);
+		drm_close_driver(data.drm_fd);
 	}
 }
diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c
index 3554f5d77..0fac22770 100644
--- a/tests/i915/i915_pm_rc6_residency.c
+++ b/tests/i915/i915_pm_rc6_residency.c
@@ -611,6 +611,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(i915, ctx);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
index f2374aff0..34abfe690 100644
--- a/tests/i915/i915_pm_rps.c
+++ b/tests/i915/i915_pm_rps.c
@@ -877,7 +877,7 @@ static void pm_rps_exit_handler(int sig)
 	if (lh.igt_proc.running)
 		load_helper_stop();
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 }
 
 igt_main
diff --git a/tests/i915/i915_pm_sseu.c b/tests/i915/i915_pm_sseu.c
index 1b428c9ba..771971851 100644
--- a/tests/i915/i915_pm_sseu.c
+++ b/tests/i915/i915_pm_sseu.c
@@ -315,7 +315,7 @@ gem_deinit(void)
 	case 2:
 		buf_ops_destroy(gem.bops);
 	case 1:
-		close(gem.drm_fd);
+		drm_close_driver(gem.drm_fd);
 	}
 }
 
diff --git a/tests/i915/i915_power.c b/tests/i915/i915_power.c
index 51b412e3a..9f6235083 100644
--- a/tests/i915/i915_power.c
+++ b/tests/i915/i915_power.c
@@ -76,6 +76,6 @@ igt_main
 	}
 
 	igt_fixture {
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/i915_query.c b/tests/i915/i915_query.c
index e725e04e4..ea191f8a3 100644
--- a/tests/i915/i915_query.c
+++ b/tests/i915/i915_query.c
@@ -1465,6 +1465,6 @@ igt_main
 		query_parse_and_validate_hwconfig_table(fd);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/i915/i915_suspend.c b/tests/i915/i915_suspend.c
index 5b289ecb2..79004c1cc 100644
--- a/tests/i915/i915_suspend.c
+++ b/tests/i915/i915_suspend.c
@@ -188,7 +188,7 @@ test_shrink(int fd, unsigned int mode)
 		igt_system_suspend_autoresume(mode, SUSPEND_TEST_NONE);
 
 		munmap(mem, size);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_waitchildren();
@@ -232,7 +232,7 @@ test_suspend_without_i915(int state)
 		igt_pm_get_d3cold_allowed(&card, d3cold_allowed);
 		igt_pm_set_d3cold_allowed(&card, "0\n");
 	}
-	close(fd);
+	drm_close_driver(fd);
 
 	igt_kmsg(KMSG_INFO "Unloading i915\n");
 	igt_assert_eq(igt_i915_driver_unload(),0);
@@ -315,5 +315,5 @@ igt_main
 		test_forcewake(fd, true);
 
 	igt_fixture
-		close(fd);
+		drm_close_driver(fd);
 }
diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index cd73b1a98..bb54abccf 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -4518,7 +4518,7 @@ gen12_test_single_ctx_render_target_writes_a_counter(const struct intel_executio
 			igt_drop_root();
 			gen12_single_ctx_helper(e);
 
-			close(drm_fd);
+			drm_close_driver(drm_fd);
 		}
 		child_ret = igt_wait_helper(&child);
 		igt_assert(WEXITSTATUS(child_ret) == EAGAIN ||
@@ -5299,7 +5299,7 @@ test_i915_ref_count(void)
 	igt_debug("ref count after opening i915 perf stream = %u\n", ref_count1);
 	igt_assert(ref_count1 > ref_count0);
 
-	close(drm_fd);
+	drm_close_driver(drm_fd);
 	close(sysfs);
 	drm_fd = -1;
 	sysfs = -1;
@@ -6008,6 +6008,6 @@ igt_main
 			put_engine_groups(perf_oa_groups, num_perf_oa_groups);
 
 		intel_ctx_destroy(drm_fd, ctx);
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c
index c5f083bbd..34b0e10f6 100644
--- a/tests/i915/perf_pmu.c
+++ b/tests/i915/perf_pmu.c
@@ -2111,7 +2111,7 @@ static void test_unload(unsigned int num_engines)
 		if (fd[count] != -1)
 			count++;
 
-		close(i915);
+		drm_close_driver(i915);
 
 		buf = calloc(count, sizeof(uint64_t));
 		igt_assert(buf);
@@ -2436,13 +2436,13 @@ igt_main
 
 		igt_fixture {
 			intel_ctx_destroy(render_fd, render_ctx);
-			close(render_fd);
+			drm_close_driver(render_fd);
 		}
 	}
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 	igt_subtest("module-unload") {
diff --git a/tests/i915/sysfs_defaults.c b/tests/i915/sysfs_defaults.c
index dda27a0af..94437c0a0 100644
--- a/tests/i915/sysfs_defaults.c
+++ b/tests/i915/sysfs_defaults.c
@@ -105,6 +105,6 @@ igt_main
 
 	igt_fixture {
 		close(engines);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/sysfs_heartbeat_interval.c b/tests/i915/sysfs_heartbeat_interval.c
index 8a3dd3975..467e0728b 100644
--- a/tests/i915/sysfs_heartbeat_interval.c
+++ b/tests/i915/sysfs_heartbeat_interval.c
@@ -514,6 +514,6 @@ igt_main
 
 	igt_fixture {
 		close(engines);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/sysfs_preempt_timeout.c b/tests/i915/sysfs_preempt_timeout.c
index 5e0a7d962..b686d6ba8 100644
--- a/tests/i915/sysfs_preempt_timeout.c
+++ b/tests/i915/sysfs_preempt_timeout.c
@@ -343,6 +343,6 @@ igt_main
 
 	igt_fixture {
 		close(engines);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/i915/sysfs_timeslice_duration.c b/tests/i915/sysfs_timeslice_duration.c
index 92c4c5eae..8f0d8d94b 100644
--- a/tests/i915/sysfs_timeslice_duration.c
+++ b/tests/i915/sysfs_timeslice_duration.c
@@ -564,6 +564,6 @@ igt_main
 
 	igt_fixture {
 		close(engines);
-		close(i915);
+		drm_close_driver(i915);
 	}
 }
diff --git a/tests/prime_busy.c b/tests/prime_busy.c
index 343020f13..f9f1674d4 100644
--- a/tests/prime_busy.c
+++ b/tests/prime_busy.c
@@ -162,6 +162,6 @@ igt_main
 
 	igt_fixture {
 		intel_ctx_destroy(fd, ctx);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
index bc19f68c9..1c2d2a301 100644
--- a/tests/prime_mmap.c
+++ b/tests/prime_mmap.c
@@ -557,6 +557,6 @@ igt_main
 		free(query_info);
 		igt_collection_destroy(set);
 		igt_collection_destroy(dma_buf_set);
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/prime_mmap_coherency.c b/tests/prime_mmap_coherency.c
index b22fb35c1..a18c16c5c 100644
--- a/tests/prime_mmap_coherency.c
+++ b/tests/prime_mmap_coherency.c
@@ -249,7 +249,7 @@ static void blit_and_cmp(void)
 
 	intel_bb_destroy(local_batch);
 	buf_ops_destroy(local_bops);
-	close(local_fd);
+	drm_close_driver(local_fd);
 }
 
 /*
@@ -346,6 +346,6 @@ igt_main
 	igt_fixture {
 		buf_ops_destroy(bops);
 
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/prime_mmap_kms.c b/tests/prime_mmap_kms.c
index 8b127a13c..1a63be38f 100644
--- a/tests/prime_mmap_kms.c
+++ b/tests/prime_mmap_kms.c
@@ -263,6 +263,6 @@ igt_main
 
 	igt_fixture {
 		igt_display_fini(&gpu.display);
-		close(gpu.drm_fd);
+		drm_close_driver(gpu.drm_fd);
 	}
 }
diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c
index bf5486194..0b5ac256d 100644
--- a/tests/prime_self_import.c
+++ b/tests/prime_self_import.c
@@ -106,8 +106,8 @@ static void test_with_fd_dup(void)
 	close(dma_buf_fd2);
 	check_bo(fd2, handle_import, fd2, handle_import);
 
-	close(fd1);
-	close(fd2);
+	drm_close_driver(fd1);
+	drm_close_driver(fd2);
 }
 
 static void test_with_two_bos(void)
@@ -139,8 +139,8 @@ static void test_with_two_bos(void)
 
 	check_bo(fd2, handle_import, fd2, handle_import);
 
-	close(fd1);
-	close(fd2);
+	drm_close_driver(fd1);
+	drm_close_driver(fd2);
 }
 
 static void test_with_one_bo_two_files(void)
@@ -164,8 +164,8 @@ static void test_with_one_bo_two_files(void)
 	/* dma-buf self importing an flink bo should give the same handle */
 	igt_assert_eq_u32(handle_import, handle_open);
 
-	close(fd1);
-	close(fd2);
+	drm_close_driver(fd1);
+	drm_close_driver(fd2);
 	close(dma_buf_fd1);
 	close(dma_buf_fd2);
 }
@@ -211,7 +211,7 @@ static void test_with_one_bo(void)
 	check_bo(fd1, handle, fd2, handle_import1);
 
 	/* Completely rip out exporting fd. */
-	close(fd1);
+	drm_close_driver(fd1);
 	check_bo(fd2, handle_import1, fd2, handle_import1);
 }
 
@@ -275,14 +275,14 @@ static void test_reimport_close_race(void)
 		igt_assert(status == 0);
 	}
 
-	close(fds[0]);
+	drm_close_driver(fds[0]);
 	close(fds[1]);
 
 	obj_count = igt_get_stable_obj_count(fake) - obj_count;
 
 	igt_info("leaked %i objects\n", obj_count);
 
-	close(fake);
+	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
 }
@@ -357,13 +357,13 @@ static void test_export_close_race(void)
 		igt_assert(status == 0);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 
 	obj_count = igt_get_stable_obj_count(fake) - obj_count;
 
 	igt_info("leaked %i objects\n", obj_count);
 
-	close(fake);
+	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
 }
@@ -392,7 +392,7 @@ static void test_llseek_size(void)
 		close(dma_buf_fd);
 	}
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 static void test_llseek_bad(void)
@@ -421,7 +421,7 @@ static void test_llseek_bad(void)
 
 	close(dma_buf_fd);
 
-	close(fd);
+	drm_close_driver(fd);
 }
 
 igt_main
diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
index dcf9e78d4..be6ab65b1 100644
--- a/tests/prime_vgem.c
+++ b/tests/prime_vgem.c
@@ -1200,7 +1200,7 @@ igt_main
 
 
 	igt_fixture {
-		close(i915);
-		close(vgem);
+		drm_close_driver(i915);
+		drm_close_driver(vgem);
 	}
 }
diff --git a/tests/syncobj_basic.c b/tests/syncobj_basic.c
index 6e20c3411..beb44b1e9 100644
--- a/tests/syncobj_basic.c
+++ b/tests/syncobj_basic.c
@@ -232,7 +232,7 @@ igt_main
 		test_valid_cycle(fd);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 
 }
diff --git a/tests/syncobj_timeline.c b/tests/syncobj_timeline.c
index 7f5ff6f6c..081f440f3 100644
--- a/tests/syncobj_timeline.c
+++ b/tests/syncobj_timeline.c
@@ -1538,6 +1538,6 @@ igt_main
 		test_32bits_limit(fd);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/syncobj_wait.c b/tests/syncobj_wait.c
index 427b6b119..eebc96b67 100644
--- a/tests/syncobj_wait.c
+++ b/tests/syncobj_wait.c
@@ -914,6 +914,6 @@ igt_main
 		test_wait_interrupted(fd, WAIT_ALL);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/template.c b/tests/template.c
index e23814fb7..ae2681c01 100644
--- a/tests/template.c
+++ b/tests/template.c
@@ -76,6 +76,6 @@ igt_main
 	 */
 
 	igt_fixture {
-		close(drm_fd);
+		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
index ada5518d7..36899b307 100644
--- a/tests/vgem_basic.c
+++ b/tests/vgem_basic.c
@@ -64,8 +64,8 @@ static void test_setversion(int fd)
 
 static void test_client(int fd)
 {
-	close(drm_open_driver(DRIVER_VGEM));
-	close(drm_open_driver_render(DRIVER_VGEM));
+	drm_close_driver(drm_open_driver(DRIVER_VGEM));
+	drm_close_driver(drm_open_driver_render(DRIVER_VGEM));
 }
 
 static void test_create(int fd)
@@ -537,6 +537,6 @@ igt_main
 		test_debugfs_read(fd);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
diff --git a/tests/vgem_slow.c b/tests/vgem_slow.c
index 58b09e421..4c4e94ea0 100644
--- a/tests/vgem_slow.c
+++ b/tests/vgem_slow.c
@@ -85,6 +85,6 @@ igt_main
 		test_nohang(fd);
 
 	igt_fixture {
-		close(fd);
+		drm_close_driver(fd);
 	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (16 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 17/20] tests/i915: " Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  8:47   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level Bhanuprakash Modem
                   ` (5 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

Use xe_config() helper to get the config.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/xe/xe_debugfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
index 4006981c6..10dd05740 100644
--- a/tests/xe/xe_debugfs.c
+++ b/tests/xe/xe_debugfs.c
@@ -252,7 +252,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 	}
 
 	igt_subtest("base") {
-		test_base(fd, xe_dev->config);
+		test_base(fd, xe_config(fd));
 	}
 
 
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (17 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  7:58   ` Kamil Konieczny
  2023-05-16 16:50 ` [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests" Bhanuprakash Modem
                   ` (4 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

As xe_device get/put is already handled at driver open/close
level, drop these checks from tests.

V2: - New patch for xe_config()

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_3d.c                  |  6 ------
 tests/kms_addfb_basic.c         |  9 +--------
 tests/kms_flip.c                |  9 +--------
 tests/kms_flip_event_leak.c     |  4 ----
 tests/kms_getfb.c               | 15 +--------------
 tests/kms_hdmi_inject.c         |  7 -------
 tests/kms_setmode.c             |  7 -------
 tests/xe/xe_compute.c           |  8 ++------
 tests/xe/xe_create.c            |  9 ++-------
 tests/xe/xe_debugfs.c           |  6 +-----
 tests/xe/xe_dma_buf_sync.c      | 11 ++---------
 tests/xe/xe_evict.c             |  5 -----
 tests/xe/xe_exec_balancer.c     |  8 ++------
 tests/xe/xe_exec_basic.c        |  8 ++------
 tests/xe/xe_exec_compute_mode.c |  8 ++------
 tests/xe/xe_exec_fault_mode.c   |  5 +----
 tests/xe/xe_exec_reset.c        | 23 +++++------------------
 tests/xe/xe_exec_threads.c      | 20 ++++----------------
 tests/xe/xe_gpgpu_fill.c        |  3 ---
 tests/xe/xe_guc_pc.c            |  2 --
 tests/xe/xe_huc_copy.c          |  8 ++------
 tests/xe/xe_intel_bb.c          |  2 --
 tests/xe/xe_mmap.c              |  8 ++------
 tests/xe/xe_mmio.c              |  8 ++------
 tests/xe/xe_noexec_ping_pong.c  |  2 --
 tests/xe/xe_pm.c                |  3 ---
 tests/xe/xe_prime_self_import.c | 31 +------------------------------
 tests/xe/xe_query.c             |  8 ++------
 tests/xe/xe_vm.c                |  5 +----
 tests/xe/xe_waitfence.c         |  8 ++------
 30 files changed, 38 insertions(+), 218 deletions(-)

diff --git a/tests/kms_3d.c b/tests/kms_3d.c
index 55e1d8058..c7a9d42d2 100644
--- a/tests/kms_3d.c
+++ b/tests/kms_3d.c
@@ -37,9 +37,6 @@ igt_simple_main
 
 	drm_fd = drm_open_driver_master(DRIVER_ANY);
 
-	if (is_xe_device(drm_fd))
-		xe_device_get(drm_fd);
-
 	res = drmModeGetResources(drm_fd);
 	igt_require(res);
 
@@ -116,8 +113,5 @@ igt_simple_main
 
 	drmModeFreeConnector(connector);
 
-	if (is_xe_device(drm_fd))
-		xe_device_put(drm_fd);
-
 	drm_close_driver(drm_fd);
 }
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index 53a6a007a..065f21975 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -974,9 +974,6 @@ igt_main
 	igt_fixture {
 		fd = drm_open_driver_master(DRIVER_ANY);
 		igt_require(has_addfb2_iface(fd));
-
-		if (is_xe_device(fd))
-			xe_device_get(fd);
 	}
 
 	invalid_tests(fd);
@@ -1008,10 +1005,6 @@ igt_main
 			igt_display_fini(&display);
 	}
 
-	igt_fixture {
-		if (is_xe_device(fd))
-			xe_device_put(fd);
-
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index efff06e1c..d57990240 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1858,9 +1858,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 		igt_install_exit_handler(kms_flip_exit_handler);
 		get_timestamp_format();
 
-		if (is_xe_device(drm_fd))
-			xe_device_get(drm_fd);
-
 		if (is_i915_device(drm_fd)) {
 			bops = buf_ops_create(drm_fd);
 		}
@@ -1926,10 +1923,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 	}
 	igt_stop_signal_helper();
 
-	igt_fixture {
-		if (is_xe_device(drm_fd))
-			xe_device_put(drm_fd);
-
+	igt_fixture
 		drm_close_driver(drm_fd);
-	}
 }
diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index 7e46f5ec0..423ce40df 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -65,8 +65,6 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_device_drop_master(data->drm_fd);
 
 	igt_device_set_master(fd);
-	if (is_xe_device(fd))
-		xe_device_get(fd);
 
 	igt_create_fb(fd, mode->hdisplay, mode->vdisplay,
 		      DRM_FORMAT_XRGB8888,
@@ -77,8 +75,6 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
 			      data);
 	igt_assert_eq(ret, 0);
 
-	if (is_xe_device(fd))
-		xe_device_put(fd);
 	ret = drm_close_driver(fd);
 	igt_assert_eq(ret, 0);
 
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 3cb568808..0b2e66ddf 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -399,9 +399,6 @@ static void test_handle_protection(void) {
 	igt_fixture {
 		non_master_fd = drm_open_driver(DRIVER_ANY);
 
-		if (is_xe_device(non_master_fd))
-			xe_device_get(non_master_fd);
-
 		non_master_add.width = 1024;
 		non_master_add.height = 1024;
 		non_master_add.pixel_format = DRM_FORMAT_XRGB8888;
@@ -449,9 +446,6 @@ static void test_handle_protection(void) {
 		do_ioctl(non_master_fd, DRM_IOCTL_MODE_RMFB, &non_master_add.fb_id);
 		gem_close(non_master_fd, non_master_add.handles[0]);
 
-		if (is_xe_device(non_master_fd))
-			xe_device_get(non_master_fd);
-
 		drm_close_driver(non_master_fd);
 	}
 }
@@ -463,9 +457,6 @@ igt_main
 	igt_fixture {
 		fd = drm_open_driver_master(DRIVER_ANY);
 		igt_require(has_getfb_iface(fd));
-
-		if (is_xe_device(fd))
-			xe_device_get(fd);
 	}
 
 	igt_subtest_group
@@ -480,10 +471,6 @@ igt_main
 	igt_subtest_group
 		test_handle_protection();
 
-	igt_fixture {
-		if (is_xe_device(fd))
-			xe_device_put(fd);
-
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index e3db34502..9aa5c59fc 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -206,9 +206,6 @@ igt_main
 		igt_require(connector);
 
 		kmstest_unset_all_crtcs(drm_fd, res);
-
-		if (is_xe_device(drm_fd))
-			xe_device_get(drm_fd);
 	}
 
 	igt_describe("Make sure that 4K modes exposed by DRM match the "
@@ -223,10 +220,6 @@ igt_main
 
 	igt_fixture {
 		drmModeFreeConnector(connector);
-
-		if (is_xe_device(drm_fd))
-			xe_device_put(drm_fd);
-
 		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index a85f4eaf2..035bbd0b0 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -955,9 +955,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
 
 		drm_resources = drmModeGetResources(drm_fd);
 		igt_require(drm_resources);
-
-		if (is_xe_device(drm_fd))
-			xe_device_get(drm_fd);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(tests); i++) {
@@ -974,10 +971,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		drmModeFreeResources(drm_resources);
-
-		if (is_xe_device(drm_fd))
-			xe_device_put(drm_fd);
-
 		drm_close_driver(drm_fd);
 	}
 }
diff --git a/tests/xe/xe_compute.c b/tests/xe/xe_compute.c
index 5e6cd8529..d2d198a95 100644
--- a/tests/xe/xe_compute.c
+++ b/tests/xe/xe_compute.c
@@ -35,16 +35,12 @@ igt_main
 {
 	int xe;
 
-	igt_fixture {
+	igt_fixture
 		xe = drm_open_driver(DRIVER_XE);
-		xe_device_get(xe);
-	}
 
 	igt_subtest("compute-square")
 		test_compute_square(xe);
 
-	igt_fixture {
-		xe_device_put(xe);
+	igt_fixture
 		drm_close_driver(xe);
-	}
 }
diff --git a/tests/xe/xe_create.c b/tests/xe/xe_create.c
index 959dd27e7..11dc7ceaa 100644
--- a/tests/xe/xe_create.c
+++ b/tests/xe/xe_create.c
@@ -111,10 +111,8 @@ igt_main
 {
 	int xe;
 
-	igt_fixture {
+	igt_fixture
 		xe = drm_open_driver(DRIVER_XE);
-		xe_device_get(xe);
-	}
 
 	igt_subtest("create-invalid-size") {
 		create_invalid_size(xe);
@@ -124,9 +122,6 @@ igt_main
 		create_massive_size(xe);
 	}
 
-
-	igt_fixture {
-		xe_device_put(xe);
+	igt_fixture
 		drm_close_driver(xe);
-	}
 }
diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
index 10dd05740..c4396a37a 100644
--- a/tests/xe/xe_debugfs.c
+++ b/tests/xe/xe_debugfs.c
@@ -240,14 +240,12 @@ static int opt_handler(int option, int option_index, void *input)
 
 igt_main_args("", long_options, help_str, opt_handler, NULL)
 {
-	struct xe_device *xe_dev;
 	char devnode[PATH_MAX];
 	int fd;
 	int gt;
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_dev = xe_device_get(fd);
 		__igt_debugfs_dump(fd, "info", IGT_LOG_INFO);
 	}
 
@@ -268,8 +266,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
 		test_forcewake(fd);
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_dma_buf_sync.c b/tests/xe/xe_dma_buf_sync.c
index 81ece2428..64027d68f 100644
--- a/tests/xe/xe_dma_buf_sync.c
+++ b/tests/xe/xe_dma_buf_sync.c
@@ -113,7 +113,6 @@ test_export_dma_buf(struct drm_xe_engine_class_instance *hwe0,
 
 	for (i = 0; i < N_FD; ++i) {
 		fd[i] = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd[0]);
 		vm[i] = xe_vm_create(fd[i], 0, 0);
 		engine[i] = xe_engine_create(fd[i], vm[i], !i ? hwe0 : hwe1, 0);
 	}
@@ -218,11 +217,8 @@ test_export_dma_buf(struct drm_xe_engine_class_instance *hwe0,
 		close(dma_buf_fd[i]);
 	}
 
-	for (i = 0; i < N_FD; ++i) {
-		xe_device_put(fd[i]);
+	for (i = 0; i < N_FD; ++i)
 		drm_close_driver(fd[i]);
-	}
-
 }
 
 igt_main
@@ -232,7 +228,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 
 		xe_for_each_hw_engine(fd, hwe)
 			if (hwe0 == NULL) {
@@ -255,8 +250,6 @@ igt_main
 	igt_subtest("export-dma-buf-many-read-sync")
 		test_export_dma_buf(hwe0, hwe1, 16, READ_SYNC);
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_evict.c b/tests/xe/xe_evict.c
index 4b66dd683..c3b5b86c4 100644
--- a/tests/xe/xe_evict.c
+++ b/tests/xe/xe_evict.c
@@ -62,7 +62,6 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
 	igt_assert(bo);
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS, 0);
 	if (flags & BIND_ENGINE)
@@ -200,7 +199,6 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
 		xe_vm_destroy(fd, vm2);
 		xe_vm_destroy(fd, vm3);
 	}
-	xe_device_put(fd);
 	drm_close_driver(fd);
 }
 
@@ -239,7 +237,6 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
 	igt_assert(bo);
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS |
 			  DRM_XE_VM_CREATE_COMPUTE_MODE, 0);
@@ -368,7 +365,6 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
 	xe_vm_destroy(fd, vm);
 	if (flags & MULTI_VM)
 		xe_vm_destroy(fd, vm2);
-	xe_device_put(fd);
 	drm_close_driver(fd);
 }
 
@@ -668,7 +664,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 		igt_require(xe_has_vram(fd));
 		vram_size = xe_vram_size(fd, 0);
 		igt_assert(vram_size);
diff --git a/tests/xe/xe_exec_balancer.c b/tests/xe/xe_exec_balancer.c
index fb4592903..81ec526e7 100644
--- a/tests/xe/xe_exec_balancer.c
+++ b/tests/xe/xe_exec_balancer.c
@@ -626,10 +626,8 @@ igt_main
 	int class;
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	igt_subtest("virtual-all-active")
 		xe_for_each_gt(fd, gt)
@@ -706,8 +704,6 @@ igt_main
 					test_cm(fd, gt, class, 1, 0, s->flags);
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_exec_basic.c b/tests/xe/xe_exec_basic.c
index d14a764f4..d1f39e4b6 100644
--- a/tests/xe/xe_exec_basic.c
+++ b/tests/xe/xe_exec_basic.c
@@ -311,10 +311,8 @@ igt_main
 	};
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	for (const struct section *s = sections; s->name; s++) {
 		igt_subtest_f("once-%s", s->name)
@@ -351,8 +349,6 @@ igt_main
 				test_exec(fd, hwe, 1, 0, 1, s->flags);
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_exec_compute_mode.c b/tests/xe/xe_exec_compute_mode.c
index 950cb6159..a58067e64 100644
--- a/tests/xe/xe_exec_compute_mode.c
+++ b/tests/xe/xe_exec_compute_mode.c
@@ -327,10 +327,8 @@ igt_main
 	};
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	for (const struct section *s = sections; s->name; s++) {
 		igt_subtest_f("once-%s", s->name)
@@ -359,8 +357,6 @@ igt_main
 					  s->flags);
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_exec_fault_mode.c b/tests/xe/xe_exec_fault_mode.c
index 8cd883c09..ee167f359 100644
--- a/tests/xe/xe_exec_fault_mode.c
+++ b/tests/xe/xe_exec_fault_mode.c
@@ -524,7 +524,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 		igt_require(xe_supports_faults(fd));
 	}
 
@@ -568,8 +567,6 @@ igt_main
 		xe_for_each_hw_engine(fd, hwe)
 			test_atomic(fd, hwe, 8, WAIT_ATOMIC);
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_exec_reset.c b/tests/xe/xe_exec_reset.c
index 3700b8dce..bd8ad76fc 100644
--- a/tests/xe/xe_exec_reset.c
+++ b/tests/xe/xe_exec_reset.c
@@ -178,10 +178,8 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
 
 	igt_assert(n_engines <= MAX_N_ENGINES);
 
-	if (flags & CLOSE_FD) {
+	if (flags & CLOSE_FD)
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	xe_for_each_hw_engine(fd, hwe) {
 		if (hwe->engine_class != class || hwe->gt_id != gt)
@@ -293,7 +291,6 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
 			for (i = 0; i < n_engines; i++)
 				xe_engine_destroy(fd, engines[i]);
 		}
-		xe_device_put(fd);
 		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
@@ -388,10 +385,8 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
 
 	igt_assert(n_engines <= MAX_N_ENGINES);
 
-	if (flags & CLOSE_FD) {
+	if (flags & CLOSE_FD)
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS, 0);
 	bo_size = sizeof(*data) * n_execs;
@@ -474,7 +469,6 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
 			for (i = 0; i < n_engines; i++)
 				xe_engine_destroy(fd, engines[i]);
 		}
-		xe_device_put(fd);
 		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
@@ -566,10 +560,8 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
 
 	igt_assert(n_engines <= MAX_N_ENGINES);
 
-	if (flags & CLOSE_FD) {
+	if (flags & CLOSE_FD)
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS |
 			  DRM_XE_VM_CREATE_COMPUTE_MODE, 0);
@@ -654,7 +646,6 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
 			for (i = 0; i < n_engines; i++)
 				xe_engine_destroy(fd, engines[i]);
 		}
-		xe_device_put(fd);
 		drm_close_driver(fd);
 		/* FIXME: wait for idle */
 		usleep(150000);
@@ -831,10 +822,8 @@ igt_main
 	int class;
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	igt_subtest("spin")
 		xe_for_each_hw_engine(fd, hwe)
@@ -944,8 +933,6 @@ igt_main
 	igt_subtest("gt-reset-stress")
 		gt_reset(fd, 4, 1);
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_exec_threads.c b/tests/xe/xe_exec_threads.c
index bde92a9c5..6450d1e40 100644
--- a/tests/xe/xe_exec_threads.c
+++ b/tests/xe/xe_exec_threads.c
@@ -73,7 +73,6 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
 
 	if (!fd) {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 		owns_fd = true;
 	}
 
@@ -243,10 +242,8 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
 	}
 	if (owns_vm)
 		xe_vm_destroy(fd, vm);
-	if (owns_fd) {
-		xe_device_put(fd);
+	if (owns_fd)
 		drm_close_driver(fd);
-	}
 }
 
 static void
@@ -282,7 +279,6 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 
 	if (!fd) {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 		owns_fd = true;
 	}
 
@@ -453,7 +449,6 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 	if (owns_vm)
 		xe_vm_destroy(fd, vm);
 	if (owns_fd) {
-		xe_device_put(fd);
 		drm_close_driver(fd);
 	}
 }
@@ -491,7 +486,6 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 
 	if (!fd) {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 		owns_fd = true;
 	}
 
@@ -696,10 +690,8 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
 	}
 	if (owns_vm)
 		xe_vm_destroy(fd, vm);
-	if (owns_fd) {
-		xe_device_put(fd);
+	if (owns_fd)
 		drm_close_driver(fd);
-	}
 }
 
 struct thread_data {
@@ -1391,18 +1383,14 @@ igt_main
 	};
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	for (const struct section *s = sections; s->name; s++) {
 		igt_subtest_f("threads-%s", s->name)
 			threads(fd, s->flags);
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_gpgpu_fill.c b/tests/xe/xe_gpgpu_fill.c
index 28ad2382b..b1f55ea64 100644
--- a/tests/xe/xe_gpgpu_fill.c
+++ b/tests/xe/xe_gpgpu_fill.c
@@ -120,8 +120,6 @@ igt_main
 
 		fill_fn = igt_get_gpgpu_fillfunc(data.devid);
 		igt_require_f(fill_fn, "no gpgpu-fill function\n");
-
-		xe_device_get(data.drm_fd);
 	}
 
 	igt_subtest("basic") {
@@ -129,7 +127,6 @@ igt_main
 	}
 
 	igt_fixture {
-		xe_device_put(data.drm_fd);
 		buf_ops_destroy(data.bops);
 		drm_close_driver(data.drm_fd);
 	}
diff --git a/tests/xe/xe_guc_pc.c b/tests/xe/xe_guc_pc.c
index 56d4f9190..13b862c5a 100644
--- a/tests/xe/xe_guc_pc.c
+++ b/tests/xe/xe_guc_pc.c
@@ -387,7 +387,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 
 		sysfs = igt_sysfs_open(fd);
 		igt_assert(sysfs != -1);
@@ -495,7 +494,6 @@ igt_main
 			set_freq(sysfs, gt, "max", stash_max);
 		}
 		close(sysfs);
-		xe_device_put(fd);
 		drm_close_driver(fd);
 	}
 }
diff --git a/tests/xe/xe_huc_copy.c b/tests/xe/xe_huc_copy.c
index ccdfe8622..d4377f9a1 100644
--- a/tests/xe/xe_huc_copy.c
+++ b/tests/xe/xe_huc_copy.c
@@ -176,10 +176,8 @@ igt_main
 {
 	int xe;
 
-	igt_fixture {
+	igt_fixture
 		xe = drm_open_driver(DRIVER_XE);
-		xe_device_get(xe);
-	}
 
 	igt_subtest("huc_copy") {
 		/*
@@ -190,8 +188,6 @@ igt_main
 		test_huc_copy(xe);
 	}
 
-	igt_fixture {
-		xe_device_put(xe);
+	igt_fixture
 		drm_close_driver(xe);
-	}
 }
diff --git a/tests/xe/xe_intel_bb.c b/tests/xe/xe_intel_bb.c
index f43beb1a8..59740d4d2 100644
--- a/tests/xe/xe_intel_bb.c
+++ b/tests/xe/xe_intel_bb.c
@@ -1105,7 +1105,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
 	igt_fixture {
 		xe = drm_open_driver(DRIVER_XE);
 		bops = buf_ops_create(xe);
-		xe_device_get(xe);
 	}
 
 	igt_describe("Ensure reset is possible on fresh bb");
@@ -1178,7 +1177,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
 	}
 
 	igt_fixture {
-		xe_device_put(xe);
 		buf_ops_destroy(bops);
 		drm_close_driver(xe);
 	}
diff --git a/tests/xe/xe_mmap.c b/tests/xe/xe_mmap.c
index 352cbcab4..463d0cac7 100644
--- a/tests/xe/xe_mmap.c
+++ b/tests/xe/xe_mmap.c
@@ -61,10 +61,8 @@ igt_main
 {
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	igt_subtest("system")
 		test_mmap(fd, system_memory(fd));
@@ -75,8 +73,6 @@ igt_main
 	igt_subtest("vram-system")
 		test_mmap(fd, vram_memory(fd, 0) | system_memory(fd));
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_mmio.c b/tests/xe/xe_mmio.c
index 77a38b8d1..6825478f0 100644
--- a/tests/xe/xe_mmio.c
+++ b/tests/xe/xe_mmio.c
@@ -77,18 +77,14 @@ igt_main
 {
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	igt_subtest("mmio-timestamp")
 		test_xe_mmio_timestamp(fd);
 	igt_subtest("mmio-invalid")
 		test_xe_mmio_invalid(fd);
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_noexec_ping_pong.c b/tests/xe/xe_noexec_ping_pong.c
index f276e694c..3c2b340bd 100644
--- a/tests/xe/xe_noexec_ping_pong.c
+++ b/tests/xe/xe_noexec_ping_pong.c
@@ -99,10 +99,8 @@ igt_simple_main
 {
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 
 	test_ping_pong(fd, xe_hw_engine(fd, 0));
 
-	xe_device_put(fd);
 	drm_close_driver(fd);
 }
diff --git a/tests/xe/xe_pm.c b/tests/xe/xe_pm.c
index 7bec294ed..b4d5fe252 100644
--- a/tests/xe/xe_pm.c
+++ b/tests/xe/xe_pm.c
@@ -370,8 +370,6 @@ igt_main
 		device.pci_xe = igt_device_get_pci_device(device.fd_xe);
 		device.pci_root = igt_device_get_pci_root_port(device.fd_xe);
 
-		xe_device_get(device.fd_xe);
-
 		/* Always perform initial once-basic exec checking for health */
 		xe_for_each_hw_engine(device.fd_xe, hwe)
 			test_exec(device, hwe, 1, 1, NO_SUSPEND, NO_RPM);
@@ -440,7 +438,6 @@ igt_main
 	igt_fixture {
 		set_d3cold_allowed(device.pci_xe, d3cold_allowed);
 		igt_restore_runtime_pm();
-		xe_device_put(device.fd_xe);
 		drm_close_driver(device.fd_xe);
 	}
 }
diff --git a/tests/xe/xe_prime_self_import.c b/tests/xe/xe_prime_self_import.c
index a86d0e9f2..5b21a39ea 100644
--- a/tests/xe/xe_prime_self_import.c
+++ b/tests/xe/xe_prime_self_import.c
@@ -104,9 +104,7 @@ static void test_with_fd_dup(void)
 	counter = 0;
 
 	fd1 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd1);
 	fd2 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd2);
 
 	handle = xe_bo_create(fd1, 0, 0, BO_SIZE);
 
@@ -121,9 +119,7 @@ static void test_with_fd_dup(void)
 	close(dma_buf_fd2);
 	check_bo(fd2, handle_import, fd2, handle_import);
 
-	xe_device_put(fd1);
 	drm_close_driver(fd1);
-	xe_device_put(fd2);
 	drm_close_driver(fd2);
 }
 
@@ -143,9 +139,7 @@ static void test_with_two_bos(void)
 	counter = 0;
 
 	fd1 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd1);
 	fd2 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd2);
 
 	handle1 = xe_bo_create(fd1, 0, 0, BO_SIZE);
 	handle2 = xe_bo_create(fd1, 0, 0, BO_SIZE);
@@ -165,9 +159,7 @@ static void test_with_two_bos(void)
 
 	check_bo(fd2, handle_import, fd2, handle_import);
 
-	xe_device_put(fd1);
 	drm_close_driver(fd1);
-	xe_device_put(fd2);
 	drm_close_driver(fd2);
 }
 
@@ -185,9 +177,7 @@ static void test_with_one_bo_two_files(void)
 	int dma_buf_fd1, dma_buf_fd2;
 
 	fd1 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd1);
 	fd2 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd2);
 
 	handle_orig = xe_bo_create(fd1, 0, 0, BO_SIZE);
 	dma_buf_fd1 = prime_handle_to_fd(fd1, handle_orig);
@@ -201,9 +191,7 @@ static void test_with_one_bo_two_files(void)
 	/* dma-buf self importing an flink bo should give the same handle */
 	igt_assert_eq_u32(handle_import, handle_open);
 
-	xe_device_put(fd1);
 	drm_close_driver(fd1);
-	xe_device_put(fd2);
 	drm_close_driver(fd2);
 	close(dma_buf_fd1);
 	close(dma_buf_fd2);
@@ -222,9 +210,7 @@ static void test_with_one_bo(void)
 	int dma_buf_fd;
 
 	fd1 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd1);
 	fd2 = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd2);
 
 	handle = xe_bo_create(fd1, 0, 0, BO_SIZE);
 
@@ -258,10 +244,8 @@ static void test_with_one_bo(void)
 	check_bo(fd1, handle, fd2, handle_import1);
 
 	/* Completely rip out exporting fd. */
-	xe_device_put(fd1);
 	drm_close_driver(fd1);
 	check_bo(fd2, handle_import1, fd2, handle_import1);
-	xe_device_put(fd2);
 	drm_close_driver(fd2);
 }
 
@@ -314,7 +298,6 @@ static void *thread_fn_reimport_vs_close(void *p)
 	threads = calloc(num_threads, sizeof(pthread_t));
 
 	fds[0] = drm_open_driver(DRIVER_XE);
-	xe_device_get(fds[0]);
 
 	handle = xe_bo_create(fds[0], 0, 0, BO_SIZE);
 
@@ -334,7 +317,6 @@ static void *thread_fn_reimport_vs_close(void *p)
 	}
 
 	pthread_barrier_destroy(&g_barrier);
-	xe_device_put(fds[0]);
 	drm_close_driver(fds[0]);
 	close(fds[1]);
 
@@ -406,13 +388,11 @@ static void test_export_close_race(void)
 	/* Allocate exit handler fds in here so that we dont screw
 	 * up the counts */
 	fake = drm_open_driver(DRIVER_XE);
-	xe_device_get(fake);
 
 	/* TODO: Read object count */
 	obj_count = 0;
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 	pthread_barrier_init(&g_barrier, NULL, num_threads);
 
 	for (i = 0; i < num_threads; i++) {
@@ -428,7 +408,6 @@ static void test_export_close_race(void)
 	}
 
 	pthread_barrier_destroy(&g_barrier);
-	xe_device_put(fd);
 	drm_close_driver(fd);
 
 	/* TODO: Read object count */
@@ -436,7 +415,6 @@ static void test_export_close_race(void)
 
 	igt_info("leaked %i objects\n", obj_count);
 
-	xe_device_put(fake);
 	drm_close_driver(fake);
 
 	igt_assert_eq(obj_count, 0);
@@ -458,7 +436,6 @@ static void test_llseek_size(void)
 	counter = 0;
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 
 	for (i = 0; i < 10; i++) {
 		int bufsz = xe_get_default_alignment(fd) << i;
@@ -473,7 +450,6 @@ static void test_llseek_size(void)
 		close(dma_buf_fd);
 	}
 
-	xe_device_put(fd);
 	drm_close_driver(fd);
 }
 
@@ -493,7 +469,6 @@ static void test_llseek_bad(void)
 	counter = 0;
 
 	fd = drm_open_driver(DRIVER_XE);
-	xe_device_get(fd);
 
 	handle = xe_bo_create(fd, 0, 0, BO_SIZE);
 	dma_buf_fd = prime_handle_to_fd(fd, handle);
@@ -510,7 +485,6 @@ static void test_llseek_bad(void)
 
 	close(dma_buf_fd);
 
-	xe_device_put(fd);
 	drm_close_driver(fd);
 }
 
@@ -534,7 +508,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(tests); i++) {
@@ -542,8 +515,6 @@ igt_main
 			tests[i].fn();
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_query.c b/tests/xe/xe_query.c
index 1c06534d4..99e92b7c1 100644
--- a/tests/xe/xe_query.c
+++ b/tests/xe/xe_query.c
@@ -457,10 +457,8 @@ igt_main
 {
 	int xe;
 
-	igt_fixture {
+	igt_fixture
 		xe = drm_open_driver(DRIVER_XE);
-		xe_device_get(xe);
-	}
 
 	igt_subtest("query-engines")
 		test_query_engines(xe);
@@ -489,8 +487,6 @@ igt_main
 	igt_subtest("query-invalid-extension")
 		test_query_invalid_extension(xe);
 
-	igt_fixture {
-		xe_device_put(xe);
+	igt_fixture
 		drm_close_driver(xe);
-	}
 }
diff --git a/tests/xe/xe_vm.c b/tests/xe/xe_vm.c
index 9015a5a57..13295cbe1 100644
--- a/tests/xe/xe_vm.c
+++ b/tests/xe/xe_vm.c
@@ -1621,7 +1621,6 @@ igt_main
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
 
 		xe_for_each_hw_engine(fd, hwe)
 			if (hwe->engine_class != DRM_XE_ENGINE_CLASS_COPY) {
@@ -1837,8 +1836,6 @@ igt_main
 		}
 	}
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
diff --git a/tests/xe/xe_waitfence.c b/tests/xe/xe_waitfence.c
index 8bfb741f6..c9d7f6981 100644
--- a/tests/xe/xe_waitfence.c
+++ b/tests/xe/xe_waitfence.c
@@ -88,16 +88,12 @@ igt_main
 {
 	int fd;
 
-	igt_fixture {
+	igt_fixture
 		fd = drm_open_driver(DRIVER_XE);
-		xe_device_get(fd);
-	}
 
 	igt_subtest("test")
 		test(fd);
 
-	igt_fixture {
-		xe_device_put(fd);
+	igt_fixture
 		drm_close_driver(fd);
-	}
 }
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests"
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (18 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level Bhanuprakash Modem
@ 2023-05-16 16:50 ` Bhanuprakash Modem
  2023-05-24  8:03   ` Kamil Konieczny
  2023-05-16 18:45 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev4) Patchwork
                   ` (3 subsequent siblings)
  23 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-16 16:50 UTC (permalink / raw)
  To: igt-dev, kamil.konieczny, janga.rahul.kumar

As this logic is moved to driver open/close level, this is
redundant, hence revert this logic.

This reverts commit 3e049d7c5048c8e4d0b0cfc22afca18e9e897e9a.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/igt_kms.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index c54841486..bb3b924c9 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -59,7 +59,6 @@
 #include "igt_device.h"
 #include "igt_sysfs.h"
 #include "sw_sync.h"
-#include "xe/xe_query.h"
 #ifdef HAVE_CHAMELIUM
 #include "igt_chamelium.h"
 #endif
@@ -2657,9 +2656,6 @@ void igt_display_require(igt_display_t *display, int drm_fd)
 	}
 #endif
 
-	if (is_xe_device(drm_fd))
-		xe_device_get(drm_fd);
-
 	display->n_pipes = IGT_MAX_PIPES;
 	display->pipes = calloc(sizeof(igt_pipe_t), display->n_pipes);
 	igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n", display->n_pipes);
@@ -2996,10 +2992,6 @@ static void igt_output_fini(igt_output_t *output)
 void igt_display_fini(igt_display_t *display)
 {
 	int i;
-	int drm_fd = display->drm_fd;
-
-	if (is_xe_device(drm_fd))
-		xe_device_put(drm_fd);
 
 	for (i = 0; i < display->n_planes; ++i) {
 		igt_plane_t *plane = &display->planes[i];
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev4)
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (19 preceding siblings ...)
  2023-05-16 16:50 ` [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests" Bhanuprakash Modem
@ 2023-05-16 18:45 ` Patchwork
  2023-05-17  3:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2023-05-16 18:45 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5293 bytes --]

== Series Details ==

Series: XE test cleanup to handle xe_device (rev4)
URL   : https://patchwork.freedesktop.org/series/117263/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13153 -> IGTPW_8977
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html

Participating hosts (38 -> 37)
------------------------------

  Missing    (1): fi-snb-2520m 

Known issues
------------

  Here are the changes found in IGTPW_8977 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@load:
    - bat-adls-5:         [PASS][1] -> [ABORT][2] ([i915#4391])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-adls-5/igt@i915_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-adls-5/igt@i915_module_load@load.html

  * igt@i915_pm_backlight@basic-brightness@edp-1:
    - bat-rplp-1:         NOTRUN -> [ABORT][3] ([i915#7077])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-rplp-1/igt@i915_pm_backlight@basic-brightness@edp-1.html

  * igt@i915_selftest@live@gt_heartbeat:
    - fi-apl-guc:         [PASS][4] -> [DMESG-FAIL][5] ([i915#5334])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         NOTRUN -> [SKIP][6] ([i915#1845] / [i915#5354]) +2 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-d-dp-1:
    - bat-dg2-8:          [PASS][7] -> [FAIL][8] ([i915#7932])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-d-dp-1.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-d-dp-1.html

  
#### Possible fixes ####

  * igt@i915_pm_rpm@basic-rte:
    - {bat-mtlp-8}:       [DMESG-WARN][9] -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html

  * igt@i915_selftest@live@migrate:
    - bat-dg2-11:         [DMESG-WARN][11] ([i915#7699]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-dg2-11/igt@i915_selftest@live@migrate.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-dg2-11/igt@i915_selftest@live@migrate.html

  * igt@i915_selftest@live@requests:
    - {bat-mtlp-8}:       [ABORT][13] ([i915#4983] / [i915#7920]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-mtlp-8/igt@i915_selftest@live@requests.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-mtlp-8/igt@i915_selftest@live@requests.html

  
#### Warnings ####

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-rplp-1:         [ABORT][15] ([i915#4579] / [i915#8260]) -> [SKIP][16] ([i915#3555] / [i915#4579])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
  [i915#7077]: https://gitlab.freedesktop.org/drm/intel/issues/7077
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7920]: https://gitlab.freedesktop.org/drm/intel/issues/7920
  [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932
  [i915#8260]: https://gitlab.freedesktop.org/drm/intel/issues/8260


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7292 -> IGTPW_8977

  CI-20190529: 20190529
  CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8977: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html
  IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html

[-- Attachment #2: Type: text/html, Size: 5969 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 07/20] tests/nouveau_crc: Close the fd before exit
  2023-05-16 16:50 ` [igt-dev] [i-g-t 07/20] tests/nouveau_crc: " Bhanuprakash Modem
@ 2023-05-16 20:14   ` Lyude Paul
  0 siblings, 0 replies; 54+ messages in thread
From: Lyude Paul @ 2023-05-16 20:14 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev, kamil.konieczny, janga.rahul.kumar

Reviewed-by: Lyude Paul <lyude@redhat.com>

On Tue, 2023-05-16 at 22:20 +0530, Bhanuprakash Modem wrote:
> Close the file descriptor before exiting the test.
> 
> Cc: Lyude Paul <lyude@redhat.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/nouveau_crc.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/nouveau_crc.c b/tests/nouveau_crc.c
> index 785d39bde..d5aa0e650 100644
> --- a/tests/nouveau_crc.c
> +++ b/tests/nouveau_crc.c
> @@ -409,7 +409,9 @@ igt_main
>  			close(data.nv_crc_dir);
>  		}
>  	}
> -	igt_fixture
> -		igt_display_fini(&data.display);
>  
> +	igt_fixture {
> +		igt_display_fini(&data.display);
> +		drm_close_driver(data.drm_fd);
> +	}
>  }

-- 
Cheers,
 Lyude Paul (she/her)
 Software Engineer at Red Hat

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for XE test cleanup to handle xe_device (rev4)
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (20 preceding siblings ...)
  2023-05-16 18:45 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev4) Patchwork
@ 2023-05-17  3:51 ` Patchwork
  2023-05-19 15:52 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev5) Patchwork
  2023-05-19 18:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  23 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2023-05-17  3:51 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 15238 bytes --]

== Series Details ==

Series: XE test cleanup to handle xe_device (rev4)
URL   : https://patchwork.freedesktop.org/series/117263/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13153_full -> IGTPW_8977_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html

Participating hosts (7 -> 7)
------------------------------

  No changes in participating hosts

Known issues
------------

  Here are the changes found in IGTPW_8977_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@drm_mm@all-tests:
    - shard-snb:          NOTRUN -> [SKIP][1] ([fdo#109271] / [i915#4579]) +3 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb4/igt@drm_mm@all-tests.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][2] ([i915#2842])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk6/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [PASS][3] -> [FAIL][4] ([i915#2842])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk6/igt@gem_exec_fair@basic-pace@vcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk3/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-glk:          NOTRUN -> [SKIP][5] ([fdo#109271] / [i915#2190])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_spin_batch@legacy@bsd1:
    - shard-apl:          [PASS][6] -> [FAIL][7] ([i915#2898])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl2/igt@gem_spin_batch@legacy@bsd1.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-apl3/igt@gem_spin_batch@legacy@bsd1.html

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#3886]) +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk3/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc:
    - shard-snb:          NOTRUN -> [SKIP][9] ([fdo#109271]) +51 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb7/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-glk:          NOTRUN -> [SKIP][10] ([fdo#109271]) +82 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk1/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-apl:          [PASS][11] -> [FAIL][12] ([i915#2346])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-render:
    - shard-apl:          NOTRUN -> [SKIP][13] ([fdo#109271]) +2 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-apl2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-render.html

  * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][14] ([i915#4573]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk8/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-glk:          NOTRUN -> [SKIP][15] ([fdo#109271] / [i915#658])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk4/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-glk:          NOTRUN -> [SKIP][16] ([fdo#109271] / [i915#4579]) +9 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk6/igt@kms_scaling_modes@scaling-mode-full.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - {shard-rkl}:        [ABORT][17] ([i915#5507]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html
    - shard-apl:          [ABORT][19] ([i915#5507]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl1/igt@device_reset@unbind-reset-rebind.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-apl3/igt@device_reset@unbind-reset-rebind.html
    - {shard-tglu}:       [ABORT][21] ([i915#5507]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-tglu-3/igt@device_reset@unbind-reset-rebind.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-tglu-5/igt@device_reset@unbind-reset-rebind.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - {shard-rkl}:        [FAIL][23] ([i915#2842]) -> [PASS][24] +1 similar issue
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-1/igt@gem_exec_fair@basic-none@vcs0.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-rkl-3/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][25] ([i915#2842]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          [ABORT][27] ([i915#5566]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk3/igt@gen9_exec_parse@allowed-single.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk3/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_pm_dc@dc9-dpms:
    - {shard-tglu}:       [SKIP][29] ([i915#4281]) -> [PASS][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-tglu-5/igt@i915_pm_dc@dc9-dpms.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-tglu-4/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
    - {shard-rkl}:        [SKIP][31] ([i915#1937] / [i915#4579]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-6/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-rkl-7/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html

  * igt@i915_pm_rpm@modeset-lpsp:
    - {shard-rkl}:        [SKIP][33] ([i915#1397]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-3/igt@i915_pm_rpm@modeset-lpsp.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-rkl-7/igt@i915_pm_rpm@modeset-lpsp.html

  * igt@i915_selftest@perf@engine_cs:
    - shard-snb:          [ABORT][35] ([i915#4528] / [i915#4579]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb2/igt@i915_selftest@perf@engine_cs.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb2/igt@i915_selftest@perf@engine_cs.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          [FAIL][37] ([i915#2346]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * {igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2}:
    - {shard-rkl}:        [FAIL][39] ([i915#8292]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-6/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-rkl-4/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html

  
#### Warnings ####

  * igt@gem_ppgtt@blt-vs-render-ctx0:
    - shard-snb:          [DMESG-FAIL][41] ([i915#8295]) -> [FAIL][42] ([i915#8295])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb6/igt@gem_ppgtt@blt-vs-render-ctx0.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb6/igt@gem_ppgtt@blt-vs-render-ctx0.html

  * igt@i915_pm_rps@reset:
    - shard-snb:          [INCOMPLETE][43] ([i915#7790]) -> [DMESG-FAIL][44] ([i915#8319])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb2/igt@i915_pm_rps@reset.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb7/igt@i915_pm_rps@reset.html

  * igt@kms_content_protection@mei_interface:
    - shard-snb:          [SKIP][45] ([fdo#109271] / [i915#4579]) -> [SKIP][46] ([fdo#109271])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb6/igt@kms_content_protection@mei_interface.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/shard-snb2/igt@kms_content_protection@mei_interface.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2898]: https://gitlab.freedesktop.org/drm/intel/issues/2898
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5507]: https://gitlab.freedesktop.org/drm/intel/issues/5507
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7790]: https://gitlab.freedesktop.org/drm/intel/issues/7790
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7951]: https://gitlab.freedesktop.org/drm/intel/issues/7951
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
  [i915#8295]: https://gitlab.freedesktop.org/drm/intel/issues/8295
  [i915#8319]: https://gitlab.freedesktop.org/drm/intel/issues/8319
  [i915#8398]: https://gitlab.freedesktop.org/drm/intel/issues/8398


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7292 -> IGTPW_8977
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8977: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html
  IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8977/index.html

[-- Attachment #2: Type: text/html, Size: 14127 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 14/20] tests/vmwgfx: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 14/20] tests/vmwgfx: " Bhanuprakash Modem
@ 2023-05-17 19:55   ` "Maaz Mombasawala (VMware)
  0 siblings, 0 replies; 54+ messages in thread
From: "Maaz Mombasawala (VMware) @ 2023-05-17 19:55 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev, kamil.konieczny, janga.rahul.kumar
  Cc: Martin Krastev, Maaz Mombasawala

On 5/16/23 09:50, Bhanuprakash Modem wrote:
> |Bhanuprakash Modem <bhanuprakash.modem@intel.com> |

-- 

LGTM

Reviewed-by: Maaz Mombasawala <mombasawalam@vmware.com>

Maaz Mombasawala (VMware) <maazm@fastmail.com>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level
  2023-05-16 16:50 ` [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level Bhanuprakash Modem
@ 2023-05-18 18:46   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-18 18:46 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Tue, May 16, 2023 at 10:20:40PM +0530, Bhanuprakash Modem wrote:
> Instead of caching the xe_device struct at subtest level, cache
> just after opening the driver. And remove from the cache just
> before closing the driver.
> 
> V2: - Place the logic in correct helpers (Zbigniew)
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

LGTM too:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew

> ---
>  lib/drmtest.c   | 24 +++++++++++++++++++++---
>  lib/igt_types.c |  6 ++++++
>  2 files changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 41ad2694c..cfcb630ed 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -64,6 +64,7 @@
>  #include "intel_reg.h"
>  #include "ioctl_wrappers.h"
>  #include "igt_dummyload.h"
> +#include "xe/xe_query.h"
>  
>  /**
>   * SECTION:drmtest
> @@ -465,9 +466,14 @@ int __drm_open_driver_another(int idx, int chipset)
>  		fd = __open_driver("/dev/dri/card", 0, chipset, idx);
>  	}
>  
> -	if (fd >= 0)
> +	if (fd >= 0) {
>  		_set_opened_fd(idx, fd);
>  
> +		/* Cache xe_device struct. */
> +		if (is_xe_device(fd))
> +			xe_device_get(fd);
> +	}
> +
>  	return fd;
>  }
>  
> @@ -491,6 +497,8 @@ int __drm_open_driver(int chipset)
>  
>  int __drm_open_driver_render(int chipset)
>  {
> +	int fd;
> +
>  	if (chipset != DRIVER_VGEM && igt_device_filter_count() > 0) {
>  		struct igt_device_card card;
>  		bool found;
> @@ -500,10 +508,16 @@ int __drm_open_driver_render(int chipset)
>  		if (!found || !strlen(card.render))
>  			return -1;
>  
> -		return __open_driver_exact(card.render, chipset);
> +		fd = __open_driver_exact(card.render, chipset);
> +	} else {
> +		fd = __open_driver("/dev/dri/renderD", 128, chipset, 0);
>  	}
>  
> -	return __open_driver("/dev/dri/renderD", 128, chipset, 0);
> +	/* Cache xe_device struct. */
> +	if (fd >= 0 && is_xe_device(fd))
> +		xe_device_get(fd);
> +
> +	return fd;
>  }
>  
>  static int at_exit_drm_fd = -1;
> @@ -622,6 +636,10 @@ int drm_close_driver(int fd)
>  		return -1;
>  	}
>  
> +	/* Remove xe_device from cache. */
> +	if (is_xe_device(fd))
> +		xe_device_put(fd);
> +
>  	return close(fd);
>  }
>  
> diff --git a/lib/igt_types.c b/lib/igt_types.c
> index 392f30fca..d5d444889 100644
> --- a/lib/igt_types.c
> +++ b/lib/igt_types.c
> @@ -5,13 +5,19 @@
>  
>  #include <unistd.h>
>  
> +#include "drmtest.h"
>  #include "igt_types.h"
> +#include "xe/xe_query.h"
>  
>  void igt_cleanup_fd(volatile int *fd)
>  {
>  	if (!fd || *fd < 0)
>  		return;
>  
> +	/* Remove xe_device from cache. */
> +	if (is_xe_device(*fd))
> +		xe_device_put(*fd);
> +
>  	close(*fd);
>  	*fd = -1;
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
@ 2023-05-18 18:51   ` Zbigniew Kempczyński
  2023-05-18 18:54   ` Zbigniew Kempczyński
  2023-05-19 15:09   ` [igt-dev] [i-g-t V3 " Bhanuprakash Modem
  2 siblings, 0 replies; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-18 18:51 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Tue, May 16, 2023 at 10:20:39PM +0530, Bhanuprakash Modem wrote:
> Add new helper drm_close_driver() to close the drm fd. Now
> every user could call drm_close_driver() instead of close().
> 
> V2: - Fix commit message
>     - Add debug prints
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  lib/drmtest.c | 20 ++++++++++++++++++++
>  lib/drmtest.h |  1 +
>  2 files changed, 21 insertions(+)
> 
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 7630bb793..41ad2694c 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -605,6 +605,26 @@ int drm_open_driver(int chipset)
>  	return fd;
>  }
>  
> +/**
> + * __drm_close_driver:
> + * @fd: a drm file descriptor
> + *
> + * Close the drm file descriptor @fd.
> + *
> + * Returns: 0 on success or -1 on error.
> + */
> +int drm_close_driver(int fd)
> +{
> +	/* Avoid closing standard file descriptors (0, 1, and 2). */
> +	if (fd < 3) {
> +		igt_debug("Don't attempt to close standard/invalid file "
> +			  "descriptor: %d\n", fd);
> +		return -1;
> +	}

Maybe you shouldn't allow passing invalid descriptor at all and assert?

igt_assert(fd >= 0);

?

We can avoid situation when test will blow up long time after this code.

If you want to verify your fd is really drm fd just check what fd is
leading to. Like readlink() with checking /dev/dri/card|render or sth.

--
Zbigniew

> +
> +	return close(fd);
> +}
> +
>  /**
>   * drm_open_driver_master:
>   * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL
> diff --git a/lib/drmtest.h b/lib/drmtest.h
> index ae86ee19a..9c3ea5d14 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -105,6 +105,7 @@ int drm_open_driver_render(int chipset);
>  int __drm_open_driver_another(int idx, int chipset);
>  int __drm_open_driver(int chipset);
>  int __drm_open_driver_render(int chipset);
> +int drm_close_driver(int fd);
>  
>  int drm_reopen_driver(int fd);
>  
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
  2023-05-18 18:51   ` Zbigniew Kempczyński
@ 2023-05-18 18:54   ` Zbigniew Kempczyński
  2023-05-19 15:09   ` [igt-dev] [i-g-t V3 " Bhanuprakash Modem
  2 siblings, 0 replies; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-18 18:54 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Tue, May 16, 2023 at 10:20:39PM +0530, Bhanuprakash Modem wrote:
> Add new helper drm_close_driver() to close the drm fd. Now
> every user could call drm_close_driver() instead of close().
> 
> V2: - Fix commit message
>     - Add debug prints
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  lib/drmtest.c | 20 ++++++++++++++++++++
>  lib/drmtest.h |  1 +
>  2 files changed, 21 insertions(+)
> 
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 7630bb793..41ad2694c 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -605,6 +605,26 @@ int drm_open_driver(int chipset)
>  	return fd;
>  }
>  
> +/**
> + * __drm_close_driver:
> + * @fd: a drm file descriptor
> + *
> + * Close the drm file descriptor @fd.
> + *
> + * Returns: 0 on success or -1 on error.
> + */
> +int drm_close_driver(int fd)
> +{
> +	/* Avoid closing standard file descriptors (0, 1, and 2). */
> +	if (fd < 3) {
> +		igt_debug("Don't attempt to close standard/invalid file "
> +			  "descriptor: %d\n", fd);
> +		return -1;
> +	}

Just noticed you've altered other gpus tests. That means you shouldn't
assume 0-2 are standard fds.

--
Zbigniew

> +
> +	return close(fd);
> +}
> +
>  /**
>   * drm_open_driver_master:
>   * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL
> diff --git a/lib/drmtest.h b/lib/drmtest.h
> index ae86ee19a..9c3ea5d14 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -105,6 +105,7 @@ int drm_open_driver_render(int chipset);
>  int __drm_open_driver_another(int idx, int chipset);
>  int __drm_open_driver(int chipset);
>  int __drm_open_driver_render(int chipset);
> +int drm_close_driver(int fd);
>  
>  int drm_reopen_driver(int fd);
>  
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-16 16:50 ` [igt-dev] [i-g-t 06/20] tests/i915: " Bhanuprakash Modem
@ 2023-05-18 18:58   ` Zbigniew Kempczyński
  2023-05-22  5:27     ` Modem, Bhanuprakash
  0 siblings, 1 reply; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-18 18:58 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Tue, May 16, 2023 at 10:20:44PM +0530, Bhanuprakash Modem wrote:
> Close the file descriptor before exiting the test.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/dmabuf_sync_file.c        | 3 +++
>  tests/drm_read.c                | 3 +++
>  tests/i915/gem_barrier_race.c   | 3 +++
>  tests/i915/gem_basic.c          | 3 +++
>  tests/i915/gem_concurrent_all.c | 5 +++++
>  tests/i915/gem_ctx_engines.c    | 4 +++-
>  tests/i915/gem_ctx_exec.c       | 3 +++
>  tests/i915/gem_ctx_freq.c       | 3 +++
>  tests/i915/gem_ctx_shared.c     | 3 +++
>  tests/i915/gem_eio.c            | 3 +++
>  tests/i915/gem_exec_alignment.c | 3 +++
>  tests/i915/gem_exec_balancer.c  | 3 +++
>  tests/i915/gem_exec_endless.c   | 3 +++
>  tests/i915/gem_flink_basic.c    | 3 +++
>  tests/i915/gem_userptr_blits.c  | 3 +++
>  tests/i915/gem_workarounds.c    | 3 +++
>  tests/i915/i915_pm_rps.c        | 3 +++
>  17 files changed, 53 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
> index 25bb6ad75..cfa73117b 100644
> --- a/tests/dmabuf_sync_file.c
> +++ b/tests/dmabuf_sync_file.c
> @@ -380,4 +380,7 @@ igt_main
>  		     "operations.");
>  	igt_subtest("import-multiple-read-write")
>  		test_import_multiple(fd, true);
> +
> +	igt_fixture
> +		drm_close_driver(fd);

I think this is handled by igt_types.c:igt_cleanup_fd()

--
Zbigniew

>  }
> diff --git a/tests/drm_read.c b/tests/drm_read.c
> index 36dc623ed..e989e7bfb 100644
> --- a/tests/drm_read.c
> +++ b/tests/drm_read.c
> @@ -311,4 +311,7 @@ igt_main
>  
>  	igt_subtest("short-buffer-wakeup")
>  		test_short_buffer_wakeup(fd, pipe);
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
> index faeec3617..46273ab55 100644
> --- a/tests/i915/gem_barrier_race.c
> +++ b/tests/i915/gem_barrier_race.c
> @@ -153,4 +153,7 @@ igt_main
>  			break;
>  		}
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
> index 3dd790c6c..4e063febd 100644
> --- a/tests/i915/gem_basic.c
> +++ b/tests/i915/gem_basic.c
> @@ -117,4 +117,7 @@ igt_main
>  	igt_describe("Verify that closing drm driver is possible with opened gem object.");
>  	igt_subtest("create-fd-close")
>  		test_create_fd_close(fd);
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
> index fb3b5f5d8..0bf46c0a2 100644
> --- a/tests/i915/gem_concurrent_all.c
> +++ b/tests/i915/gem_concurrent_all.c
> @@ -2015,4 +2015,9 @@ igt_main
>  			}
>  		}
>  	}
> +
> +	igt_fixture {
> +		drm_close_driver(fd);
> +		drm_close_driver(vgem_drv);
> +	}
>  }
> diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
> index b87a21fa4..3daed16a0 100644
> --- a/tests/i915/gem_ctx_engines.c
> +++ b/tests/i915/gem_ctx_engines.c
> @@ -633,6 +633,8 @@ igt_main
>  			independent_all(i915, ctx);
>  	}
>  
> -	igt_fixture
> +	igt_fixture {
>  		igt_stop_hang_detector();
> +		drm_close_driver(i915);
> +	}
>  }
> diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
> index 20fa1159e..40a373ab6 100644
> --- a/tests/i915/gem_ctx_exec.c
> +++ b/tests/i915/gem_ctx_exec.c
> @@ -546,4 +546,7 @@ igt_main
>  		gem_context_destroy(fd, ctx_id);
>  		put_ahnd(ahnd);
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
> index 18e736c73..ce4c0ba55 100644
> --- a/tests/i915/gem_ctx_freq.c
> +++ b/tests/i915/gem_ctx_freq.c
> @@ -213,4 +213,7 @@ igt_main
>  
>  	igt_subtest_f("sysfs")
>  		sysfs_range(i915);
> +
> +	igt_fixture
> +		drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
> index 8629992e8..77a210d03 100644
> --- a/tests/i915/gem_ctx_shared.c
> +++ b/tests/i915/gem_ctx_shared.c
> @@ -1088,4 +1088,7 @@ igt_main
>  			igt_stop_hang_detector();
>  		}
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
> index 81e55e165..18eec0413 100644
> --- a/tests/i915/gem_eio.c
> +++ b/tests/i915/gem_eio.c
> @@ -1126,4 +1126,7 @@ igt_main
>  			intel_allocator_multiprocess_stop();
>  		}
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
> index 5059572f1..ddddad533 100644
> --- a/tests/i915/gem_exec_alignment.c
> +++ b/tests/i915/gem_exec_alignment.c
> @@ -546,4 +546,7 @@ igt_main
>  		prio_inversion(fd, SHARED);
>  	igt_subtest("pi-isolated")
>  		prio_inversion(fd, ISOLATED);
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
> index 1c655e583..df16f8bec 100644
> --- a/tests/i915/gem_exec_balancer.c
> +++ b/tests/i915/gem_exec_balancer.c
> @@ -3482,4 +3482,7 @@ igt_main
>  		igt_subtest("nohangcheck")
>  			nohangcheck(i915);
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
> index 77719de83..f895c6783 100644
> --- a/tests/i915/gem_exec_endless.c
> +++ b/tests/i915/gem_exec_endless.c
> @@ -367,4 +367,7 @@ igt_main
>  			intel_register_access_fini(&mmio);
>  		}
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
> index 2620bc55d..e9b915082 100644
> --- a/tests/i915/gem_flink_basic.c
> +++ b/tests/i915/gem_flink_basic.c
> @@ -188,4 +188,7 @@ igt_main
>  	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
>  	igt_subtest("flink-lifetime")
>  		test_flink_lifetime(fd);
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
> index baba7cf3c..056c7a7ac 100644
> --- a/tests/i915/gem_userptr_blits.c
> +++ b/tests/i915/gem_userptr_blits.c
> @@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
>  		igt_require(has_userptr_probe(fd));
>  		test_probe(fd);
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
> index ae544adbc..7462dc600 100644
> --- a/tests/i915/gem_workarounds.c
> +++ b/tests/i915/gem_workarounds.c
> @@ -339,4 +339,7 @@ igt_main
>  			}
>  		}
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(device);
>  }
> diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
> index d4ee2d58a..f2374aff0 100644
> --- a/tests/i915/i915_pm_rps.c
> +++ b/tests/i915/i915_pm_rps.c
> @@ -959,4 +959,7 @@ igt_main
>  		waitboost(drm_fd, true);
>  		igt_disallow_hang(drm_fd, hang);
>  	}
> +
> +	igt_fixture
> +		drm_close_driver(drm_fd);
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 16/20] tests/xe: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 16/20] tests/xe: " Bhanuprakash Modem
@ 2023-05-18 19:14   ` Kumar, Janga Rahul
  0 siblings, 0 replies; 54+ messages in thread
From: Kumar, Janga Rahul @ 2023-05-18 19:14 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev, kamil.konieczny

LGTM
Reviewed-by: Janga Rahul Kumar <janga.rahul.kumar@intel.com>

> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Sent: 16 May 2023 22:21
> To: igt-dev@lists.freedesktop.org; kamil.konieczny@linux.intel.com; Kumar,
> Janga Rahul <janga.rahul.kumar@intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Subject: [i-g-t 16/20] tests/xe: Use drm_close_driver() to close the drm fd
> 
> To close the drm file descriptor, use igt helper drm_close_driver() instead of
> using close().
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/testdisplay.c             |  4 ++--
>  tests/xe/xe_compute.c           |  2 +-
>  tests/xe/xe_create.c            |  2 +-
>  tests/xe/xe_debugfs.c           |  2 +-
>  tests/xe/xe_dma_buf_sync.c      |  4 ++--
>  tests/xe/xe_evict.c             |  6 +++---
>  tests/xe/xe_exec_balancer.c     |  2 +-
>  tests/xe/xe_exec_basic.c        |  2 +-
>  tests/xe/xe_exec_compute_mode.c |  2 +-
>  tests/xe/xe_exec_fault_mode.c   |  2 +-
>  tests/xe/xe_exec_reset.c        |  8 ++++----
>  tests/xe/xe_exec_threads.c      |  8 ++++----
>  tests/xe/xe_guc_pc.c            |  2 +-
>  tests/xe/xe_huc_copy.c          |  2 +-
>  tests/xe/xe_intel_bb.c          |  2 +-
>  tests/xe/xe_mmap.c              |  2 +-
>  tests/xe/xe_mmio.c              |  2 +-
>  tests/xe/xe_module_load.c       |  2 +-
>  tests/xe/xe_noexec_ping_pong.c  |  2 +-
>  tests/xe/xe_pm.c                |  2 +-
>  tests/xe/xe_prime_self_import.c | 30 +++++++++++++++---------------
>  tests/xe/xe_query.c             |  2 +-
>  tests/xe/xe_vm.c                |  2 +-
>  tests/xe/xe_waitfence.c         |  2 +-
>  24 files changed, 48 insertions(+), 48 deletions(-)
> 
> diff --git a/tests/testdisplay.c b/tests/testdisplay.c index ee272dfb2..294d4c604
> 100644
> --- a/tests/testdisplay.c
> +++ b/tests/testdisplay.c
> @@ -548,7 +548,7 @@ int update_display(bool probe)
> 
>  __noreturn static void cleanup_and_exit(int ret)  {
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  	exit(ret);
>  }
> 
> @@ -779,7 +779,7 @@ out_hotplug:
>  out_mainloop:
>  	g_main_loop_unref(mainloop);
>  out_close:
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
> 
>  	igt_assert_eq(ret, 0);
>  }
> diff --git a/tests/xe/xe_compute.c b/tests/xe/xe_compute.c index
> 7ac64dfe3..5e6cd8529 100644
> --- a/tests/xe/xe_compute.c
> +++ b/tests/xe/xe_compute.c
> @@ -45,6 +45,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(xe);
> -		close(xe);
> +		drm_close_driver(xe);
>  	}
>  }
> diff --git a/tests/xe/xe_create.c b/tests/xe/xe_create.c index
> 5effabc83..959dd27e7 100644
> --- a/tests/xe/xe_create.c
> +++ b/tests/xe/xe_create.c
> @@ -127,6 +127,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(xe);
> -		close(xe);
> +		drm_close_driver(xe);
>  	}
>  }
> diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c index
> 6bdd3ef06..4006981c6 100644
> --- a/tests/xe/xe_debugfs.c
> +++ b/tests/xe/xe_debugfs.c
> @@ -270,6 +270,6 @@ igt_main_args("", long_options, help_str, opt_handler,
> NULL)
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_dma_buf_sync.c b/tests/xe/xe_dma_buf_sync.c index
> 8920b141b..81ece2428 100644
> --- a/tests/xe/xe_dma_buf_sync.c
> +++ b/tests/xe/xe_dma_buf_sync.c
> @@ -220,7 +220,7 @@ test_export_dma_buf(struct
> drm_xe_engine_class_instance *hwe0,
> 
>  	for (i = 0; i < N_FD; ++i) {
>  		xe_device_put(fd[i]);
> -		close(fd[i]);
> +		drm_close_driver(fd[i]);
>  	}
> 
>  }
> @@ -257,6 +257,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_evict.c b/tests/xe/xe_evict.c index
> 7fef4efc5..4b66dd683 100644
> --- a/tests/xe/xe_evict.c
> +++ b/tests/xe/xe_evict.c
> @@ -201,7 +201,7 @@ test_evict(int fd, struct drm_xe_engine_class_instance
> *eci,
>  		xe_vm_destroy(fd, vm3);
>  	}
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> 
>  static void
> @@ -369,7 +369,7 @@ test_evict_cm(int fd, struct
> drm_xe_engine_class_instance *eci,
>  	if (flags & MULTI_VM)
>  		xe_vm_destroy(fd, vm2);
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> 
>  struct thread_data {
> @@ -701,5 +701,5 @@ igt_main
>  	}
> 
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/xe/xe_exec_balancer.c b/tests/xe/xe_exec_balancer.c index
> 2018c8104..fb4592903 100644
> --- a/tests/xe/xe_exec_balancer.c
> +++ b/tests/xe/xe_exec_balancer.c
> @@ -708,6 +708,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_exec_basic.c b/tests/xe/xe_exec_basic.c index
> 2a176a5b3..d14a764f4 100644
> --- a/tests/xe/xe_exec_basic.c
> +++ b/tests/xe/xe_exec_basic.c
> @@ -353,6 +353,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_exec_compute_mode.c
> b/tests/xe/xe_exec_compute_mode.c index 685193990..950cb6159 100644
> --- a/tests/xe/xe_exec_compute_mode.c
> +++ b/tests/xe/xe_exec_compute_mode.c
> @@ -361,6 +361,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_exec_fault_mode.c b/tests/xe/xe_exec_fault_mode.c
> index a3ab17270..8cd883c09 100644
> --- a/tests/xe/xe_exec_fault_mode.c
> +++ b/tests/xe/xe_exec_fault_mode.c
> @@ -570,6 +570,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_exec_reset.c b/tests/xe/xe_exec_reset.c index
> 0d72a3f20..3700b8dce 100644
> --- a/tests/xe/xe_exec_reset.c
> +++ b/tests/xe/xe_exec_reset.c
> @@ -294,7 +294,7 @@ test_balancer(int fd, int gt, int class, int n_engines, int
> n_execs,
>  				xe_engine_destroy(fd, engines[i]);
>  		}
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
>  		return;
> @@ -475,7 +475,7 @@ test_legacy_mode(int fd, struct
> drm_xe_engine_class_instance *eci,
>  				xe_engine_destroy(fd, engines[i]);
>  		}
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
>  		return;
> @@ -655,7 +655,7 @@ test_compute_mode(int fd, struct
> drm_xe_engine_class_instance *eci,
>  				xe_engine_destroy(fd, engines[i]);
>  		}
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
>  		return;
> @@ -946,6 +946,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_exec_threads.c b/tests/xe/xe_exec_threads.c index
> 3f2c2de9e..bde92a9c5 100644
> --- a/tests/xe/xe_exec_threads.c
> +++ b/tests/xe/xe_exec_threads.c
> @@ -245,7 +245,7 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr,
> uint64_t userptr,
>  		xe_vm_destroy(fd, vm);
>  	if (owns_fd) {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> 
> @@ -454,7 +454,7 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr,
> uint64_t userptr,
>  		xe_vm_destroy(fd, vm);
>  	if (owns_fd) {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> 
> @@ -698,7 +698,7 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr,
> uint64_t userptr,
>  		xe_vm_destroy(fd, vm);
>  	if (owns_fd) {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> 
> @@ -1403,6 +1403,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_guc_pc.c b/tests/xe/xe_guc_pc.c index
> 5c71ae147..56d4f9190 100644
> --- a/tests/xe/xe_guc_pc.c
> +++ b/tests/xe/xe_guc_pc.c
> @@ -496,6 +496,6 @@ igt_main
>  		}
>  		close(sysfs);
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_huc_copy.c b/tests/xe/xe_huc_copy.c index
> fdac907d6..ccdfe8622 100644
> --- a/tests/xe/xe_huc_copy.c
> +++ b/tests/xe/xe_huc_copy.c
> @@ -192,6 +192,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(xe);
> -		close(xe);
> +		drm_close_driver(xe);
>  	}
>  }
> diff --git a/tests/xe/xe_intel_bb.c b/tests/xe/xe_intel_bb.c index
> 35d61608e..f43beb1a8 100644
> --- a/tests/xe/xe_intel_bb.c
> +++ b/tests/xe/xe_intel_bb.c
> @@ -1180,6 +1180,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler,
> NULL)
>  	igt_fixture {
>  		xe_device_put(xe);
>  		buf_ops_destroy(bops);
> -		close(xe);
> +		drm_close_driver(xe);
>  	}
>  }
> diff --git a/tests/xe/xe_mmap.c b/tests/xe/xe_mmap.c index
> 6b313a189..352cbcab4 100644
> --- a/tests/xe/xe_mmap.c
> +++ b/tests/xe/xe_mmap.c
> @@ -77,6 +77,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_mmio.c b/tests/xe/xe_mmio.c index
> 42b6241b1..77a38b8d1 100644
> --- a/tests/xe/xe_mmio.c
> +++ b/tests/xe/xe_mmio.c
> @@ -89,6 +89,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_module_load.c b/tests/xe/xe_module_load.c index
> c2d43cc20..16432c78f 100644
> --- a/tests/xe/xe_module_load.c
> +++ b/tests/xe/xe_module_load.c
> @@ -86,7 +86,7 @@ static void load_and_check_xe(const char *opts)
>  	/* driver is ready, check if it's bound */
>  	drm_fd = __drm_open_driver(DRIVER_XE);
>  	igt_fail_on_f(drm_fd < 0, "Cannot open the xe DRM driver after
> modprobing xe.\n");
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
> 
>  static const char * const unwanted_drivers[] = { diff --git
> a/tests/xe/xe_noexec_ping_pong.c b/tests/xe/xe_noexec_ping_pong.c index
> 367671883..f276e694c 100644
> --- a/tests/xe/xe_noexec_ping_pong.c
> +++ b/tests/xe/xe_noexec_ping_pong.c
> @@ -104,5 +104,5 @@ igt_simple_main
>  	test_ping_pong(fd, xe_hw_engine(fd, 0));
> 
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/xe/xe_pm.c b/tests/xe/xe_pm.c index 44154143c..7bec294ed
> 100644
> --- a/tests/xe/xe_pm.c
> +++ b/tests/xe/xe_pm.c
> @@ -441,6 +441,6 @@ igt_main
>  		set_d3cold_allowed(device.pci_xe, d3cold_allowed);
>  		igt_restore_runtime_pm();
>  		xe_device_put(device.fd_xe);
> -		close(device.fd_xe);
> +		drm_close_driver(device.fd_xe);
>  	}
>  }
> diff --git a/tests/xe/xe_prime_self_import.c b/tests/xe/xe_prime_self_import.c
> index 4e8fd5d4f..a86d0e9f2 100644
> --- a/tests/xe/xe_prime_self_import.c
> +++ b/tests/xe/xe_prime_self_import.c
> @@ -122,9 +122,9 @@ static void test_with_fd_dup(void)
>  	check_bo(fd2, handle_import, fd2, handle_import);
> 
>  	xe_device_put(fd1);
> -	close(fd1);
> +	drm_close_driver(fd1);
>  	xe_device_put(fd2);
> -	close(fd2);
> +	drm_close_driver(fd2);
>  }
> 
>  /**
> @@ -166,9 +166,9 @@ static void test_with_two_bos(void)
>  	check_bo(fd2, handle_import, fd2, handle_import);
> 
>  	xe_device_put(fd1);
> -	close(fd1);
> +	drm_close_driver(fd1);
>  	xe_device_put(fd2);
> -	close(fd2);
> +	drm_close_driver(fd2);
>  }
> 
>  /**
> @@ -202,9 +202,9 @@ static void test_with_one_bo_two_files(void)
>  	igt_assert_eq_u32(handle_import, handle_open);
> 
>  	xe_device_put(fd1);
> -	close(fd1);
> +	drm_close_driver(fd1);
>  	xe_device_put(fd2);
> -	close(fd2);
> +	drm_close_driver(fd2);
>  	close(dma_buf_fd1);
>  	close(dma_buf_fd2);
>  }
> @@ -259,10 +259,10 @@ static void test_with_one_bo(void)
> 
>  	/* Completely rip out exporting fd. */
>  	xe_device_put(fd1);
> -	close(fd1);
> +	drm_close_driver(fd1);
>  	check_bo(fd2, handle_import1, fd2, handle_import1);
>  	xe_device_put(fd2);
> -	close(fd2);
> +	drm_close_driver(fd2);
>  }
> 
>  static void *thread_fn_reimport_vs_close(void *p) @@ -335,7 +335,7 @@
> static void *thread_fn_reimport_vs_close(void *p)
> 
>  	pthread_barrier_destroy(&g_barrier);
>  	xe_device_put(fds[0]);
> -	close(fds[0]);
> +	drm_close_driver(fds[0]);
>  	close(fds[1]);
> 
>  	/* TODO: Read object count */
> @@ -343,7 +343,7 @@ static void *thread_fn_reimport_vs_close(void *p)
> 
>  	igt_info("leaked %i objects\n", obj_count);
> 
> -	close(fake);
> +	drm_close_driver(fake);
> 
>  	igt_assert_eq(obj_count, 0);
>  }
> @@ -429,7 +429,7 @@ static void test_export_close_race(void)
> 
>  	pthread_barrier_destroy(&g_barrier);
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
> 
>  	/* TODO: Read object count */
>  	obj_count = 0;
> @@ -437,7 +437,7 @@ static void test_export_close_race(void)
>  	igt_info("leaked %i objects\n", obj_count);
> 
>  	xe_device_put(fake);
> -	close(fake);
> +	drm_close_driver(fake);
> 
>  	igt_assert_eq(obj_count, 0);
>  }
> @@ -474,7 +474,7 @@ static void test_llseek_size(void)
>  	}
> 
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> 
>  /**
> @@ -511,7 +511,7 @@ static void test_llseek_bad(void)
>  	close(dma_buf_fd);
> 
>  	xe_device_put(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> 
>  igt_main
> @@ -544,6 +544,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_query.c b/tests/xe/xe_query.c index
> 87990370f..1c06534d4 100644
> --- a/tests/xe/xe_query.c
> +++ b/tests/xe/xe_query.c
> @@ -491,6 +491,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(xe);
> -		close(xe);
> +		drm_close_driver(xe);
>  	}
>  }
> diff --git a/tests/xe/xe_vm.c b/tests/xe/xe_vm.c index d4cec104e..9015a5a57
> 100644
> --- a/tests/xe/xe_vm.c
> +++ b/tests/xe/xe_vm.c
> @@ -1839,6 +1839,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_waitfence.c b/tests/xe/xe_waitfence.c index
> cdfcacdb4..8bfb741f6 100644
> --- a/tests/xe/xe_waitfence.c
> +++ b/tests/xe/xe_waitfence.c
> @@ -98,6 +98,6 @@ igt_main
> 
>  	igt_fixture {
>  		xe_device_put(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> --
> 2.40.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: Close the fd before exit
  2023-05-16 16:50 ` [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: " Bhanuprakash Modem
@ 2023-05-18 19:15   ` Kumar, Janga Rahul
  0 siblings, 0 replies; 54+ messages in thread
From: Kumar, Janga Rahul @ 2023-05-18 19:15 UTC (permalink / raw)
  To: Modem, Bhanuprakash, igt-dev, kamil.konieczny

LGTM
Reviewed-by: Janga Rahul Kumar <janga.rahul.kumar@intel.com>

> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Sent: 16 May 2023 22:21
> To: igt-dev@lists.freedesktop.org; kamil.konieczny@linux.intel.com; Kumar,
> Janga Rahul <janga.rahul.kumar@intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Subject: [i-g-t 08/20] tests/xe/xe_gpgpu_fill: Close the fd before exit
> 
> Close the file descriptor before exiting the test.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/xe/xe_gpgpu_fill.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/tests/xe/xe_gpgpu_fill.c b/tests/xe/xe_gpgpu_fill.c index
> 5bca19c87..28ad2382b 100644
> --- a/tests/xe/xe_gpgpu_fill.c
> +++ b/tests/xe/xe_gpgpu_fill.c
> @@ -131,5 +131,6 @@ igt_main
>  	igt_fixture {
>  		xe_device_put(data.drm_fd);
>  		buf_ops_destroy(data.bops);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> --
> 2.40.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [igt-dev] [i-g-t V3 01/20] lib: Interface to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
  2023-05-18 18:51   ` Zbigniew Kempczyński
  2023-05-18 18:54   ` Zbigniew Kempczyński
@ 2023-05-19 15:09   ` Bhanuprakash Modem
  2023-05-22 11:16     ` Zbigniew Kempczyński
  2 siblings, 1 reply; 54+ messages in thread
From: Bhanuprakash Modem @ 2023-05-19 15:09 UTC (permalink / raw)
  To: igt-dev

Add new helper drm_close_driver() to close the drm fd. Now
every user could call drm_close_driver() instead of close().

V2: - Fix commit message
    - Add debug prints
V3: - Check the validity of fd before close

Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/drmtest.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 lib/drmtest.h |  1 +
 2 files changed, 45 insertions(+)

diff --git a/lib/drmtest.c b/lib/drmtest.c
index 7630bb793..d148211a2 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -605,6 +605,50 @@ int drm_open_driver(int chipset)
 	return fd;
 }
 
+static bool is_valid_fd(int fd)
+{
+	char path[32];
+	char buf[PATH_MAX];
+	int len;
+
+	if (fd < 0)
+		return false;
+
+	snprintf(path, sizeof(path), "/proc/self/fd/%d", fd);
+
+	memset(buf, 0, sizeof(buf));
+	len = readlink(path, buf, sizeof(buf) - 1);
+	if (len <= 0)
+		return false;
+
+	buf[len] = '\0';
+	if (strstr(buf, "/dev/dri/card") == buf ||
+	    strstr(buf, "/dev/dri/renderD") == buf)
+		return true;
+
+	return false;
+}
+
+/**
+ * drm_close_driver:
+ * @fd: a drm file descriptor
+ *
+ * Check the given drm file descriptor @fd is valid & Close if it is
+ * an valid drm fd.
+ *
+ * Returns: 0 on success or -1 on error.
+ */
+int drm_close_driver(int fd)
+{
+	if (!is_valid_fd(fd)) {
+		igt_debug("Don't attempt to close standard/invalid file "
+			  "descriptor: %d\n", fd);
+		return -1;
+	}
+
+	return close(fd);
+}
+
 /**
  * drm_open_driver_master:
  * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL
diff --git a/lib/drmtest.h b/lib/drmtest.h
index ae86ee19a..9c3ea5d14 100644
--- a/lib/drmtest.h
+++ b/lib/drmtest.h
@@ -105,6 +105,7 @@ int drm_open_driver_render(int chipset);
 int __drm_open_driver_another(int idx, int chipset);
 int __drm_open_driver(int chipset);
 int __drm_open_driver_render(int chipset);
+int drm_close_driver(int fd);
 
 int drm_reopen_driver(int fd);
 
-- 
2.40.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev5)
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (21 preceding siblings ...)
  2023-05-17  3:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2023-05-19 15:52 ` Patchwork
  2023-05-19 18:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  23 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2023-05-19 15:52 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 4871 bytes --]

== Series Details ==

Series: XE test cleanup to handle xe_device (rev5)
URL   : https://patchwork.freedesktop.org/series/117263/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13166 -> IGTPW_9010
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html

Participating hosts (36 -> 35)
------------------------------

  Missing    (1): fi-snb-2520m 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_9010:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_selftest@live@requests:
    - {bat-mtlp-8}:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-mtlp-8/igt@i915_selftest@live@requests.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-mtlp-8/igt@i915_selftest@live@requests.html

  
Known issues
------------

  Here are the changes found in IGTPW_9010 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@execlists:
    - fi-bsw-nick:        [PASS][3] -> [ABORT][4] ([i915#7911] / [i915#7913])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/fi-bsw-nick/igt@i915_selftest@live@execlists.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/fi-bsw-nick/igt@i915_selftest@live@execlists.html

  * igt@i915_selftest@live@guc:
    - bat-rpls-1:         [PASS][5] -> [DMESG-WARN][6] ([i915#7852])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-rpls-1/igt@i915_selftest@live@guc.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-rpls-1/igt@i915_selftest@live@guc.html

  * igt@i915_selftest@live@migrate:
    - bat-adlp-9:         [PASS][7] -> [DMESG-FAIL][8] ([i915#7699] / [i915#7913])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-adlp-9/igt@i915_selftest@live@migrate.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-adlp-9/igt@i915_selftest@live@migrate.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         NOTRUN -> [SKIP][9] ([i915#1845] / [i915#5354])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1:
    - bat-dg2-8:          [PASS][10] -> [FAIL][11] ([i915#7932])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-dg2-8/igt@kms_pipe_crc_basic@nonblocking-crc@pipe-c-dp-1.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_mocs:
    - {bat-mtlp-8}:       [DMESG-FAIL][12] ([i915#7059]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-mtlp-8/igt@i915_selftest@live@gt_mocs.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-mtlp-8/igt@i915_selftest@live@gt_mocs.html

  * igt@i915_selftest@live@slpc:
    - {bat-mtlp-8}:       [DMESG-WARN][14] ([i915#6367]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/bat-mtlp-8/igt@i915_selftest@live@slpc.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/bat-mtlp-8/igt@i915_selftest@live@slpc.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#7059]: https://gitlab.freedesktop.org/drm/intel/issues/7059
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7852]: https://gitlab.freedesktop.org/drm/intel/issues/7852
  [i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911
  [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
  [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7296 -> IGTPW_9010

  CI-20190529: 20190529
  CI_DRM_13166: d517ff66aa5fd8e8fd71831eb218aa6d1bb1a3c5 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_9010: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html
  IGT_7296: f58eaf30c30c1cc9f00c8b5c596ee5c94d054198 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

-igt@kms_fb_coherency@memset-crc

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html

[-- Attachment #2: Type: text/html, Size: 5729 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for XE test cleanup to handle xe_device (rev5)
  2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
                   ` (22 preceding siblings ...)
  2023-05-19 15:52 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev5) Patchwork
@ 2023-05-19 18:09 ` Patchwork
  23 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2023-05-19 18:09 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 12048 bytes --]

== Series Details ==

Series: XE test cleanup to handle xe_device (rev5)
URL   : https://patchwork.freedesktop.org/series/117263/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13166_full -> IGTPW_9010_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html

Participating hosts (7 -> 7)
------------------------------

  No changes in participating hosts

Known issues
------------

  Here are the changes found in IGTPW_9010_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_barrier_race@remote-request@rcs0:
    - shard-glk:          [PASS][1] -> [ABORT][2] ([i915#7461] / [i915#8211])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk4/igt@gem_barrier_race@remote-request@rcs0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk4/igt@gem_barrier_race@remote-request@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [PASS][3] -> [FAIL][4] ([i915#2842])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk5/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1:
    - shard-glk:          [PASS][5] -> [DMESG-WARN][6] ([i915#118])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk3/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk8/igt@kms_cursor_crc@cursor-sliding-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [PASS][7] -> [FAIL][8] ([i915#2346])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-5@pipe-b-vga-1:
    - shard-snb:          NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#4579]) +17 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-snb6/igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-5@pipe-b-vga-1.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1:
    - shard-snb:          NOTRUN -> [SKIP][10] ([fdo#109271]) +67 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-snb7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - {shard-rkl}:        [FAIL][11] ([i915#7742]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-rkl-3/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-rkl-7/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@gem_barrier_race@remote-request@rcs0:
    - {shard-rkl}:        [ABORT][13] ([i915#7461] / [i915#8211]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-rkl-7/igt@gem_barrier_race@remote-request@rcs0.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-rkl-2/igt@gem_barrier_race@remote-request@rcs0.html

  * igt@gem_exec_endless@dispatch@vecs0:
    - {shard-tglu}:       [TIMEOUT][15] ([i915#3778]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-tglu-8/igt@gem_exec_endless@dispatch@vecs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-tglu-9/igt@gem_exec_endless@dispatch@vecs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [FAIL][17] ([i915#2842]) -> [PASS][18] +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk7/igt@gem_exec_fair@basic-pace@vcs0.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk2/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_mmap_gtt@fault-concurrent-x:
    - shard-snb:          [ABORT][19] ([i915#5161]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-snb7/igt@gem_mmap_gtt@fault-concurrent-x.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-snb4/igt@gem_mmap_gtt@fault-concurrent-x.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][21] ([fdo#109271]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-apl2/igt@i915_pm_dc@dc9-dpms.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-apl1/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - {shard-rkl}:        [SKIP][23] ([i915#1397]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-rkl-7/igt@i915_pm_rpm@modeset-non-lpsp-stress.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-rkl-6/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-apl:          [FAIL][25] ([i915#2346]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-apl7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - {shard-tglu}:       [FAIL][27] ([i915#4767]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-tglu-10/igt@kms_fbcon_fbt@fbc-suspend.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-tglu-2/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2:
    - shard-glk:          [FAIL][29] ([i915#79]) -> [PASS][30] +2 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13166/shard-glk2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/shard-glk7/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3778]: https://gitlab.freedesktop.org/drm/intel/issues/3778
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816
  [i915#5161]: https://gitlab.freedesktop.org/drm/intel/issues/5161
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#7461]: https://gitlab.freedesktop.org/drm/intel/issues/7461
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
  [i915#8311]: https://gitlab.freedesktop.org/drm/intel/issues/8311


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7296 -> IGTPW_9010
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_13166: d517ff66aa5fd8e8fd71831eb218aa6d1bb1a3c5 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_9010: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html
  IGT_7296: f58eaf30c30c1cc9f00c8b5c596ee5c94d054198 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_9010/index.html

[-- Attachment #2: Type: text/html, Size: 9457 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-18 18:58   ` Zbigniew Kempczyński
@ 2023-05-22  5:27     ` Modem, Bhanuprakash
  2023-05-22 11:21       ` Zbigniew Kempczyński
  0 siblings, 1 reply; 54+ messages in thread
From: Modem, Bhanuprakash @ 2023-05-22  5:27 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

Hi Zbigniew,

On Fri-19-05-2023 12:28 am, Zbigniew Kempczyński wrote:
> On Tue, May 16, 2023 at 10:20:44PM +0530, Bhanuprakash Modem wrote:
>> Close the file descriptor before exiting the test.
>>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>>   tests/dmabuf_sync_file.c        | 3 +++
>>   tests/drm_read.c                | 3 +++
>>   tests/i915/gem_barrier_race.c   | 3 +++
>>   tests/i915/gem_basic.c          | 3 +++
>>   tests/i915/gem_concurrent_all.c | 5 +++++
>>   tests/i915/gem_ctx_engines.c    | 4 +++-
>>   tests/i915/gem_ctx_exec.c       | 3 +++
>>   tests/i915/gem_ctx_freq.c       | 3 +++
>>   tests/i915/gem_ctx_shared.c     | 3 +++
>>   tests/i915/gem_eio.c            | 3 +++
>>   tests/i915/gem_exec_alignment.c | 3 +++
>>   tests/i915/gem_exec_balancer.c  | 3 +++
>>   tests/i915/gem_exec_endless.c   | 3 +++
>>   tests/i915/gem_flink_basic.c    | 3 +++
>>   tests/i915/gem_userptr_blits.c  | 3 +++
>>   tests/i915/gem_workarounds.c    | 3 +++
>>   tests/i915/i915_pm_rps.c        | 3 +++
>>   17 files changed, 53 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
>> index 25bb6ad75..cfa73117b 100644
>> --- a/tests/dmabuf_sync_file.c
>> +++ b/tests/dmabuf_sync_file.c
>> @@ -380,4 +380,7 @@ igt_main
>>   		     "operations.");
>>   	igt_subtest("import-multiple-read-write")
>>   		test_import_multiple(fd, true);
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
> 
> I think this is handled by igt_types.c:igt_cleanup_fd()

I am not 100% sure, I think we need to declare the fd as "igt_fd_t(fd)", 
then only igt_cleanup_fd() will takecare of it.

Also, as it is a good practice to close the fd before exit, still I can 
recommend to use drm_close_driver().

- Bhanu

> 
> --
> Zbigniew
> 
>>   }
>> diff --git a/tests/drm_read.c b/tests/drm_read.c
>> index 36dc623ed..e989e7bfb 100644
>> --- a/tests/drm_read.c
>> +++ b/tests/drm_read.c
>> @@ -311,4 +311,7 @@ igt_main
>>   
>>   	igt_subtest("short-buffer-wakeup")
>>   		test_short_buffer_wakeup(fd, pipe);
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
>> index faeec3617..46273ab55 100644
>> --- a/tests/i915/gem_barrier_race.c
>> +++ b/tests/i915/gem_barrier_race.c
>> @@ -153,4 +153,7 @@ igt_main
>>   			break;
>>   		}
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
>> index 3dd790c6c..4e063febd 100644
>> --- a/tests/i915/gem_basic.c
>> +++ b/tests/i915/gem_basic.c
>> @@ -117,4 +117,7 @@ igt_main
>>   	igt_describe("Verify that closing drm driver is possible with opened gem object.");
>>   	igt_subtest("create-fd-close")
>>   		test_create_fd_close(fd);
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
>> index fb3b5f5d8..0bf46c0a2 100644
>> --- a/tests/i915/gem_concurrent_all.c
>> +++ b/tests/i915/gem_concurrent_all.c
>> @@ -2015,4 +2015,9 @@ igt_main
>>   			}
>>   		}
>>   	}
>> +
>> +	igt_fixture {
>> +		drm_close_driver(fd);
>> +		drm_close_driver(vgem_drv);
>> +	}
>>   }
>> diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
>> index b87a21fa4..3daed16a0 100644
>> --- a/tests/i915/gem_ctx_engines.c
>> +++ b/tests/i915/gem_ctx_engines.c
>> @@ -633,6 +633,8 @@ igt_main
>>   			independent_all(i915, ctx);
>>   	}
>>   
>> -	igt_fixture
>> +	igt_fixture {
>>   		igt_stop_hang_detector();
>> +		drm_close_driver(i915);
>> +	}
>>   }
>> diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
>> index 20fa1159e..40a373ab6 100644
>> --- a/tests/i915/gem_ctx_exec.c
>> +++ b/tests/i915/gem_ctx_exec.c
>> @@ -546,4 +546,7 @@ igt_main
>>   		gem_context_destroy(fd, ctx_id);
>>   		put_ahnd(ahnd);
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
>> index 18e736c73..ce4c0ba55 100644
>> --- a/tests/i915/gem_ctx_freq.c
>> +++ b/tests/i915/gem_ctx_freq.c
>> @@ -213,4 +213,7 @@ igt_main
>>   
>>   	igt_subtest_f("sysfs")
>>   		sysfs_range(i915);
>> +
>> +	igt_fixture
>> +		drm_close_driver(i915);
>>   }
>> diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
>> index 8629992e8..77a210d03 100644
>> --- a/tests/i915/gem_ctx_shared.c
>> +++ b/tests/i915/gem_ctx_shared.c
>> @@ -1088,4 +1088,7 @@ igt_main
>>   			igt_stop_hang_detector();
>>   		}
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(i915);
>>   }
>> diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
>> index 81e55e165..18eec0413 100644
>> --- a/tests/i915/gem_eio.c
>> +++ b/tests/i915/gem_eio.c
>> @@ -1126,4 +1126,7 @@ igt_main
>>   			intel_allocator_multiprocess_stop();
>>   		}
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
>> index 5059572f1..ddddad533 100644
>> --- a/tests/i915/gem_exec_alignment.c
>> +++ b/tests/i915/gem_exec_alignment.c
>> @@ -546,4 +546,7 @@ igt_main
>>   		prio_inversion(fd, SHARED);
>>   	igt_subtest("pi-isolated")
>>   		prio_inversion(fd, ISOLATED);
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
>> index 1c655e583..df16f8bec 100644
>> --- a/tests/i915/gem_exec_balancer.c
>> +++ b/tests/i915/gem_exec_balancer.c
>> @@ -3482,4 +3482,7 @@ igt_main
>>   		igt_subtest("nohangcheck")
>>   			nohangcheck(i915);
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(i915);
>>   }
>> diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
>> index 77719de83..f895c6783 100644
>> --- a/tests/i915/gem_exec_endless.c
>> +++ b/tests/i915/gem_exec_endless.c
>> @@ -367,4 +367,7 @@ igt_main
>>   			intel_register_access_fini(&mmio);
>>   		}
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(i915);
>>   }
>> diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
>> index 2620bc55d..e9b915082 100644
>> --- a/tests/i915/gem_flink_basic.c
>> +++ b/tests/i915/gem_flink_basic.c
>> @@ -188,4 +188,7 @@ igt_main
>>   	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
>>   	igt_subtest("flink-lifetime")
>>   		test_flink_lifetime(fd);
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
>> index baba7cf3c..056c7a7ac 100644
>> --- a/tests/i915/gem_userptr_blits.c
>> +++ b/tests/i915/gem_userptr_blits.c
>> @@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
>>   		igt_require(has_userptr_probe(fd));
>>   		test_probe(fd);
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(fd);
>>   }
>> diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
>> index ae544adbc..7462dc600 100644
>> --- a/tests/i915/gem_workarounds.c
>> +++ b/tests/i915/gem_workarounds.c
>> @@ -339,4 +339,7 @@ igt_main
>>   			}
>>   		}
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(device);
>>   }
>> diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
>> index d4ee2d58a..f2374aff0 100644
>> --- a/tests/i915/i915_pm_rps.c
>> +++ b/tests/i915/i915_pm_rps.c
>> @@ -959,4 +959,7 @@ igt_main
>>   		waitboost(drm_fd, true);
>>   		igt_disallow_hang(drm_fd, hang);
>>   	}
>> +
>> +	igt_fixture
>> +		drm_close_driver(drm_fd);
>>   }
>> -- 
>> 2.40.0
>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t V3 01/20] lib: Interface to close the drm fd
  2023-05-19 15:09   ` [igt-dev] [i-g-t V3 " Bhanuprakash Modem
@ 2023-05-22 11:16     ` Zbigniew Kempczyński
  0 siblings, 0 replies; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-22 11:16 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Fri, May 19, 2023 at 08:39:56PM +0530, Bhanuprakash Modem wrote:
> Add new helper drm_close_driver() to close the drm fd. Now
> every user could call drm_close_driver() instead of close().
> 
> V2: - Fix commit message
>     - Add debug prints
> V3: - Check the validity of fd before close
> 
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  lib/drmtest.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>  lib/drmtest.h |  1 +
>  2 files changed, 45 insertions(+)
> 
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 7630bb793..d148211a2 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -605,6 +605,50 @@ int drm_open_driver(int chipset)
>  	return fd;
>  }
>  
> +static bool is_valid_fd(int fd)
> +{
> +	char path[32];
> +	char buf[PATH_MAX];
> +	int len;
> +
> +	if (fd < 0)
> +		return false;
> +
> +	snprintf(path, sizeof(path), "/proc/self/fd/%d", fd);
> +
> +	memset(buf, 0, sizeof(buf));
> +	len = readlink(path, buf, sizeof(buf) - 1);
> +	if (len <= 0)
> +		return false;
> +
> +	buf[len] = '\0';
> +	if (strstr(buf, "/dev/dri/card") == buf ||
> +	    strstr(buf, "/dev/dri/renderD") == buf)
> +		return true;
> +
> +	return false;
> +}
> +
> +/**
> + * drm_close_driver:
> + * @fd: a drm file descriptor
> + *
> + * Check the given drm file descriptor @fd is valid & Close if it is
> + * an valid drm fd.
> + *
> + * Returns: 0 on success or -1 on error.
> + */
> +int drm_close_driver(int fd)
> +{
> +	if (!is_valid_fd(fd)) {
> +		igt_debug("Don't attempt to close standard/invalid file "
> +			  "descriptor: %d\n", fd);

I would change this debug to igt_warn(). Closing not drm fd looks like
programmer mistake and should be fixed. With this minor fix:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew

> +		return -1;
> +	}
> +
> +	return close(fd);
> +}
> +
>  /**
>   * drm_open_driver_master:
>   * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL
> diff --git a/lib/drmtest.h b/lib/drmtest.h
> index ae86ee19a..9c3ea5d14 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -105,6 +105,7 @@ int drm_open_driver_render(int chipset);
>  int __drm_open_driver_another(int idx, int chipset);
>  int __drm_open_driver(int chipset);
>  int __drm_open_driver_render(int chipset);
> +int drm_close_driver(int fd);
>  
>  int drm_reopen_driver(int fd);
>  
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-22  5:27     ` Modem, Bhanuprakash
@ 2023-05-22 11:21       ` Zbigniew Kempczyński
  2023-05-22 12:33         ` Modem, Bhanuprakash
  0 siblings, 1 reply; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-22 11:21 UTC (permalink / raw)
  To: Modem, Bhanuprakash; +Cc: igt-dev

On Mon, May 22, 2023 at 10:57:41AM +0530, Modem, Bhanuprakash wrote:
> Hi Zbigniew,
> 
> On Fri-19-05-2023 12:28 am, Zbigniew Kempczyński wrote:
> > On Tue, May 16, 2023 at 10:20:44PM +0530, Bhanuprakash Modem wrote:
> > > Close the file descriptor before exiting the test.
> > > 
> > > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > > ---
> > >   tests/dmabuf_sync_file.c        | 3 +++
> > >   tests/drm_read.c                | 3 +++
> > >   tests/i915/gem_barrier_race.c   | 3 +++
> > >   tests/i915/gem_basic.c          | 3 +++
> > >   tests/i915/gem_concurrent_all.c | 5 +++++
> > >   tests/i915/gem_ctx_engines.c    | 4 +++-
> > >   tests/i915/gem_ctx_exec.c       | 3 +++
> > >   tests/i915/gem_ctx_freq.c       | 3 +++
> > >   tests/i915/gem_ctx_shared.c     | 3 +++
> > >   tests/i915/gem_eio.c            | 3 +++
> > >   tests/i915/gem_exec_alignment.c | 3 +++
> > >   tests/i915/gem_exec_balancer.c  | 3 +++
> > >   tests/i915/gem_exec_endless.c   | 3 +++
> > >   tests/i915/gem_flink_basic.c    | 3 +++
> > >   tests/i915/gem_userptr_blits.c  | 3 +++
> > >   tests/i915/gem_workarounds.c    | 3 +++
> > >   tests/i915/i915_pm_rps.c        | 3 +++
> > >   17 files changed, 53 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
> > > index 25bb6ad75..cfa73117b 100644
> > > --- a/tests/dmabuf_sync_file.c
> > > +++ b/tests/dmabuf_sync_file.c
> > > @@ -380,4 +380,7 @@ igt_main
> > >   		     "operations.");
> > >   	igt_subtest("import-multiple-read-write")
> > >   		test_import_multiple(fd, true);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > 
> > I think this is handled by igt_types.c:igt_cleanup_fd()
> 
> I am not 100% sure, I think we need to declare the fd as "igt_fd_t(fd)",
> then only igt_cleanup_fd() will takecare of it.

Yes, I've picked gem_basic.c and this was the reason of my comment. I see
also gem_ctx_engines.c, gem_ctx_shared.c, gem_exec_alignment.c, gem_exec_balancer.c
gem_flink_basic.c, gem_userptr_blits.c and gem_workarounds.c already contains
this declaration.

--
Zbigniew

> 
> Also, as it is a good practice to close the fd before exit, still I can
> recommend to use drm_close_driver().
> 
> - Bhanu
> 
> > 
> > --
> > Zbigniew
> > 
> > >   }
> > > diff --git a/tests/drm_read.c b/tests/drm_read.c
> > > index 36dc623ed..e989e7bfb 100644
> > > --- a/tests/drm_read.c
> > > +++ b/tests/drm_read.c
> > > @@ -311,4 +311,7 @@ igt_main
> > >   	igt_subtest("short-buffer-wakeup")
> > >   		test_short_buffer_wakeup(fd, pipe);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
> > > index faeec3617..46273ab55 100644
> > > --- a/tests/i915/gem_barrier_race.c
> > > +++ b/tests/i915/gem_barrier_race.c
> > > @@ -153,4 +153,7 @@ igt_main
> > >   			break;
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
> > > index 3dd790c6c..4e063febd 100644
> > > --- a/tests/i915/gem_basic.c
> > > +++ b/tests/i915/gem_basic.c
> > > @@ -117,4 +117,7 @@ igt_main
> > >   	igt_describe("Verify that closing drm driver is possible with opened gem object.");
> > >   	igt_subtest("create-fd-close")
> > >   		test_create_fd_close(fd);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
> > > index fb3b5f5d8..0bf46c0a2 100644
> > > --- a/tests/i915/gem_concurrent_all.c
> > > +++ b/tests/i915/gem_concurrent_all.c
> > > @@ -2015,4 +2015,9 @@ igt_main
> > >   			}
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture {
> > > +		drm_close_driver(fd);
> > > +		drm_close_driver(vgem_drv);
> > > +	}
> > >   }
> > > diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
> > > index b87a21fa4..3daed16a0 100644
> > > --- a/tests/i915/gem_ctx_engines.c
> > > +++ b/tests/i915/gem_ctx_engines.c
> > > @@ -633,6 +633,8 @@ igt_main
> > >   			independent_all(i915, ctx);
> > >   	}
> > > -	igt_fixture
> > > +	igt_fixture {
> > >   		igt_stop_hang_detector();
> > > +		drm_close_driver(i915);
> > > +	}
> > >   }
> > > diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
> > > index 20fa1159e..40a373ab6 100644
> > > --- a/tests/i915/gem_ctx_exec.c
> > > +++ b/tests/i915/gem_ctx_exec.c
> > > @@ -546,4 +546,7 @@ igt_main
> > >   		gem_context_destroy(fd, ctx_id);
> > >   		put_ahnd(ahnd);
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
> > > index 18e736c73..ce4c0ba55 100644
> > > --- a/tests/i915/gem_ctx_freq.c
> > > +++ b/tests/i915/gem_ctx_freq.c
> > > @@ -213,4 +213,7 @@ igt_main
> > >   	igt_subtest_f("sysfs")
> > >   		sysfs_range(i915);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(i915);
> > >   }
> > > diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
> > > index 8629992e8..77a210d03 100644
> > > --- a/tests/i915/gem_ctx_shared.c
> > > +++ b/tests/i915/gem_ctx_shared.c
> > > @@ -1088,4 +1088,7 @@ igt_main
> > >   			igt_stop_hang_detector();
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(i915);
> > >   }
> > > diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
> > > index 81e55e165..18eec0413 100644
> > > --- a/tests/i915/gem_eio.c
> > > +++ b/tests/i915/gem_eio.c
> > > @@ -1126,4 +1126,7 @@ igt_main
> > >   			intel_allocator_multiprocess_stop();
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
> > > index 5059572f1..ddddad533 100644
> > > --- a/tests/i915/gem_exec_alignment.c
> > > +++ b/tests/i915/gem_exec_alignment.c
> > > @@ -546,4 +546,7 @@ igt_main
> > >   		prio_inversion(fd, SHARED);
> > >   	igt_subtest("pi-isolated")
> > >   		prio_inversion(fd, ISOLATED);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
> > > index 1c655e583..df16f8bec 100644
> > > --- a/tests/i915/gem_exec_balancer.c
> > > +++ b/tests/i915/gem_exec_balancer.c
> > > @@ -3482,4 +3482,7 @@ igt_main
> > >   		igt_subtest("nohangcheck")
> > >   			nohangcheck(i915);
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(i915);
> > >   }
> > > diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
> > > index 77719de83..f895c6783 100644
> > > --- a/tests/i915/gem_exec_endless.c
> > > +++ b/tests/i915/gem_exec_endless.c
> > > @@ -367,4 +367,7 @@ igt_main
> > >   			intel_register_access_fini(&mmio);
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(i915);
> > >   }
> > > diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
> > > index 2620bc55d..e9b915082 100644
> > > --- a/tests/i915/gem_flink_basic.c
> > > +++ b/tests/i915/gem_flink_basic.c
> > > @@ -188,4 +188,7 @@ igt_main
> > >   	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
> > >   	igt_subtest("flink-lifetime")
> > >   		test_flink_lifetime(fd);
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
> > > index baba7cf3c..056c7a7ac 100644
> > > --- a/tests/i915/gem_userptr_blits.c
> > > +++ b/tests/i915/gem_userptr_blits.c
> > > @@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
> > >   		igt_require(has_userptr_probe(fd));
> > >   		test_probe(fd);
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(fd);
> > >   }
> > > diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
> > > index ae544adbc..7462dc600 100644
> > > --- a/tests/i915/gem_workarounds.c
> > > +++ b/tests/i915/gem_workarounds.c
> > > @@ -339,4 +339,7 @@ igt_main
> > >   			}
> > >   		}
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(device);
> > >   }
> > > diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
> > > index d4ee2d58a..f2374aff0 100644
> > > --- a/tests/i915/i915_pm_rps.c
> > > +++ b/tests/i915/i915_pm_rps.c
> > > @@ -959,4 +959,7 @@ igt_main
> > >   		waitboost(drm_fd, true);
> > >   		igt_disallow_hang(drm_fd, hang);
> > >   	}
> > > +
> > > +	igt_fixture
> > > +		drm_close_driver(drm_fd);
> > >   }
> > > -- 
> > > 2.40.0
> > > 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-22 11:21       ` Zbigniew Kempczyński
@ 2023-05-22 12:33         ` Modem, Bhanuprakash
  2023-05-22 15:23           ` Zbigniew Kempczyński
  0 siblings, 1 reply; 54+ messages in thread
From: Modem, Bhanuprakash @ 2023-05-22 12:33 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev


On Mon-22-05-2023 04:51 pm, Zbigniew Kempczyński wrote:
> On Mon, May 22, 2023 at 10:57:41AM +0530, Modem, Bhanuprakash wrote:
>> Hi Zbigniew,
>>
>> On Fri-19-05-2023 12:28 am, Zbigniew Kempczyński wrote:
>>> On Tue, May 16, 2023 at 10:20:44PM +0530, Bhanuprakash Modem wrote:
>>>> Close the file descriptor before exiting the test.
>>>>
>>>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>>>> ---
>>>>    tests/dmabuf_sync_file.c        | 3 +++
>>>>    tests/drm_read.c                | 3 +++
>>>>    tests/i915/gem_barrier_race.c   | 3 +++
>>>>    tests/i915/gem_basic.c          | 3 +++
>>>>    tests/i915/gem_concurrent_all.c | 5 +++++
>>>>    tests/i915/gem_ctx_engines.c    | 4 +++-
>>>>    tests/i915/gem_ctx_exec.c       | 3 +++
>>>>    tests/i915/gem_ctx_freq.c       | 3 +++
>>>>    tests/i915/gem_ctx_shared.c     | 3 +++
>>>>    tests/i915/gem_eio.c            | 3 +++
>>>>    tests/i915/gem_exec_alignment.c | 3 +++
>>>>    tests/i915/gem_exec_balancer.c  | 3 +++
>>>>    tests/i915/gem_exec_endless.c   | 3 +++
>>>>    tests/i915/gem_flink_basic.c    | 3 +++
>>>>    tests/i915/gem_userptr_blits.c  | 3 +++
>>>>    tests/i915/gem_workarounds.c    | 3 +++
>>>>    tests/i915/i915_pm_rps.c        | 3 +++
>>>>    17 files changed, 53 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
>>>> index 25bb6ad75..cfa73117b 100644
>>>> --- a/tests/dmabuf_sync_file.c
>>>> +++ b/tests/dmabuf_sync_file.c
>>>> @@ -380,4 +380,7 @@ igt_main
>>>>    		     "operations.");
>>>>    	igt_subtest("import-multiple-read-write")
>>>>    		test_import_multiple(fd, true);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>
>>> I think this is handled by igt_types.c:igt_cleanup_fd()
>>
>> I am not 100% sure, I think we need to declare the fd as "igt_fd_t(fd)",
>> then only igt_cleanup_fd() will takecare of it.
> 
> Yes, I've picked gem_basic.c and this was the reason of my comment. I see
> also gem_ctx_engines.c, gem_ctx_shared.c, gem_exec_alignment.c, gem_exec_balancer.c
> gem_flink_basic.c, gem_userptr_blits.c and gem_workarounds.c already contains
> this declaration.

Then, shall we drop these tests from this patch?

- Bhanu

> 
> --
> Zbigniew
> 
>>
>> Also, as it is a good practice to close the fd before exit, still I can
>> recommend to use drm_close_driver().
>>
>> - Bhanu
>>
>>>
>>> --
>>> Zbigniew
>>>
>>>>    }
>>>> diff --git a/tests/drm_read.c b/tests/drm_read.c
>>>> index 36dc623ed..e989e7bfb 100644
>>>> --- a/tests/drm_read.c
>>>> +++ b/tests/drm_read.c
>>>> @@ -311,4 +311,7 @@ igt_main
>>>>    	igt_subtest("short-buffer-wakeup")
>>>>    		test_short_buffer_wakeup(fd, pipe);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
>>>> index faeec3617..46273ab55 100644
>>>> --- a/tests/i915/gem_barrier_race.c
>>>> +++ b/tests/i915/gem_barrier_race.c
>>>> @@ -153,4 +153,7 @@ igt_main
>>>>    			break;
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
>>>> index 3dd790c6c..4e063febd 100644
>>>> --- a/tests/i915/gem_basic.c
>>>> +++ b/tests/i915/gem_basic.c
>>>> @@ -117,4 +117,7 @@ igt_main
>>>>    	igt_describe("Verify that closing drm driver is possible with opened gem object.");
>>>>    	igt_subtest("create-fd-close")
>>>>    		test_create_fd_close(fd);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
>>>> index fb3b5f5d8..0bf46c0a2 100644
>>>> --- a/tests/i915/gem_concurrent_all.c
>>>> +++ b/tests/i915/gem_concurrent_all.c
>>>> @@ -2015,4 +2015,9 @@ igt_main
>>>>    			}
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture {
>>>> +		drm_close_driver(fd);
>>>> +		drm_close_driver(vgem_drv);
>>>> +	}
>>>>    }
>>>> diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
>>>> index b87a21fa4..3daed16a0 100644
>>>> --- a/tests/i915/gem_ctx_engines.c
>>>> +++ b/tests/i915/gem_ctx_engines.c
>>>> @@ -633,6 +633,8 @@ igt_main
>>>>    			independent_all(i915, ctx);
>>>>    	}
>>>> -	igt_fixture
>>>> +	igt_fixture {
>>>>    		igt_stop_hang_detector();
>>>> +		drm_close_driver(i915);
>>>> +	}
>>>>    }
>>>> diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
>>>> index 20fa1159e..40a373ab6 100644
>>>> --- a/tests/i915/gem_ctx_exec.c
>>>> +++ b/tests/i915/gem_ctx_exec.c
>>>> @@ -546,4 +546,7 @@ igt_main
>>>>    		gem_context_destroy(fd, ctx_id);
>>>>    		put_ahnd(ahnd);
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
>>>> index 18e736c73..ce4c0ba55 100644
>>>> --- a/tests/i915/gem_ctx_freq.c
>>>> +++ b/tests/i915/gem_ctx_freq.c
>>>> @@ -213,4 +213,7 @@ igt_main
>>>>    	igt_subtest_f("sysfs")
>>>>    		sysfs_range(i915);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(i915);
>>>>    }
>>>> diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
>>>> index 8629992e8..77a210d03 100644
>>>> --- a/tests/i915/gem_ctx_shared.c
>>>> +++ b/tests/i915/gem_ctx_shared.c
>>>> @@ -1088,4 +1088,7 @@ igt_main
>>>>    			igt_stop_hang_detector();
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(i915);
>>>>    }
>>>> diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
>>>> index 81e55e165..18eec0413 100644
>>>> --- a/tests/i915/gem_eio.c
>>>> +++ b/tests/i915/gem_eio.c
>>>> @@ -1126,4 +1126,7 @@ igt_main
>>>>    			intel_allocator_multiprocess_stop();
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
>>>> index 5059572f1..ddddad533 100644
>>>> --- a/tests/i915/gem_exec_alignment.c
>>>> +++ b/tests/i915/gem_exec_alignment.c
>>>> @@ -546,4 +546,7 @@ igt_main
>>>>    		prio_inversion(fd, SHARED);
>>>>    	igt_subtest("pi-isolated")
>>>>    		prio_inversion(fd, ISOLATED);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
>>>> index 1c655e583..df16f8bec 100644
>>>> --- a/tests/i915/gem_exec_balancer.c
>>>> +++ b/tests/i915/gem_exec_balancer.c
>>>> @@ -3482,4 +3482,7 @@ igt_main
>>>>    		igt_subtest("nohangcheck")
>>>>    			nohangcheck(i915);
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(i915);
>>>>    }
>>>> diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
>>>> index 77719de83..f895c6783 100644
>>>> --- a/tests/i915/gem_exec_endless.c
>>>> +++ b/tests/i915/gem_exec_endless.c
>>>> @@ -367,4 +367,7 @@ igt_main
>>>>    			intel_register_access_fini(&mmio);
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(i915);
>>>>    }
>>>> diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
>>>> index 2620bc55d..e9b915082 100644
>>>> --- a/tests/i915/gem_flink_basic.c
>>>> +++ b/tests/i915/gem_flink_basic.c
>>>> @@ -188,4 +188,7 @@ igt_main
>>>>    	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
>>>>    	igt_subtest("flink-lifetime")
>>>>    		test_flink_lifetime(fd);
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
>>>> index baba7cf3c..056c7a7ac 100644
>>>> --- a/tests/i915/gem_userptr_blits.c
>>>> +++ b/tests/i915/gem_userptr_blits.c
>>>> @@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
>>>>    		igt_require(has_userptr_probe(fd));
>>>>    		test_probe(fd);
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(fd);
>>>>    }
>>>> diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
>>>> index ae544adbc..7462dc600 100644
>>>> --- a/tests/i915/gem_workarounds.c
>>>> +++ b/tests/i915/gem_workarounds.c
>>>> @@ -339,4 +339,7 @@ igt_main
>>>>    			}
>>>>    		}
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(device);
>>>>    }
>>>> diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
>>>> index d4ee2d58a..f2374aff0 100644
>>>> --- a/tests/i915/i915_pm_rps.c
>>>> +++ b/tests/i915/i915_pm_rps.c
>>>> @@ -959,4 +959,7 @@ igt_main
>>>>    		waitboost(drm_fd, true);
>>>>    		igt_disallow_hang(drm_fd, hang);
>>>>    	}
>>>> +
>>>> +	igt_fixture
>>>> +		drm_close_driver(drm_fd);
>>>>    }
>>>> -- 
>>>> 2.40.0
>>>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 06/20] tests/i915: Close the fd before exit
  2023-05-22 12:33         ` Modem, Bhanuprakash
@ 2023-05-22 15:23           ` Zbigniew Kempczyński
  0 siblings, 0 replies; 54+ messages in thread
From: Zbigniew Kempczyński @ 2023-05-22 15:23 UTC (permalink / raw)
  To: Modem, Bhanuprakash; +Cc: igt-dev

On Mon, May 22, 2023 at 06:03:18PM +0530, Modem, Bhanuprakash wrote:
> 
> On Mon-22-05-2023 04:51 pm, Zbigniew Kempczyński wrote:
> > On Mon, May 22, 2023 at 10:57:41AM +0530, Modem, Bhanuprakash wrote:
> > > Hi Zbigniew,
> > > 
> > > On Fri-19-05-2023 12:28 am, Zbigniew Kempczyński wrote:
> > > > On Tue, May 16, 2023 at 10:20:44PM +0530, Bhanuprakash Modem wrote:
> > > > > Close the file descriptor before exiting the test.
> > > > > 
> > > > > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > > > > ---
> > > > >    tests/dmabuf_sync_file.c        | 3 +++
> > > > >    tests/drm_read.c                | 3 +++
> > > > >    tests/i915/gem_barrier_race.c   | 3 +++
> > > > >    tests/i915/gem_basic.c          | 3 +++
> > > > >    tests/i915/gem_concurrent_all.c | 5 +++++
> > > > >    tests/i915/gem_ctx_engines.c    | 4 +++-
> > > > >    tests/i915/gem_ctx_exec.c       | 3 +++
> > > > >    tests/i915/gem_ctx_freq.c       | 3 +++
> > > > >    tests/i915/gem_ctx_shared.c     | 3 +++
> > > > >    tests/i915/gem_eio.c            | 3 +++
> > > > >    tests/i915/gem_exec_alignment.c | 3 +++
> > > > >    tests/i915/gem_exec_balancer.c  | 3 +++
> > > > >    tests/i915/gem_exec_endless.c   | 3 +++
> > > > >    tests/i915/gem_flink_basic.c    | 3 +++
> > > > >    tests/i915/gem_userptr_blits.c  | 3 +++
> > > > >    tests/i915/gem_workarounds.c    | 3 +++
> > > > >    tests/i915/i915_pm_rps.c        | 3 +++
> > > > >    17 files changed, 53 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/tests/dmabuf_sync_file.c b/tests/dmabuf_sync_file.c
> > > > > index 25bb6ad75..cfa73117b 100644
> > > > > --- a/tests/dmabuf_sync_file.c
> > > > > +++ b/tests/dmabuf_sync_file.c
> > > > > @@ -380,4 +380,7 @@ igt_main
> > > > >    		     "operations.");
> > > > >    	igt_subtest("import-multiple-read-write")
> > > > >    		test_import_multiple(fd, true);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > 
> > > > I think this is handled by igt_types.c:igt_cleanup_fd()
> > > 
> > > I am not 100% sure, I think we need to declare the fd as "igt_fd_t(fd)",
> > > then only igt_cleanup_fd() will takecare of it.
> > 
> > Yes, I've picked gem_basic.c and this was the reason of my comment. I see
> > also gem_ctx_engines.c, gem_ctx_shared.c, gem_exec_alignment.c, gem_exec_balancer.c
> > gem_flink_basic.c, gem_userptr_blits.c and gem_workarounds.c already contains
> > this declaration.
> 
> Then, shall we drop these tests from this patch?

Yes. BTW I've noticed in gem_basic.c there's explicit fd close
inside create-fd-close test so igt_warn/igt_debug will be called
from drm_close_driver(). I wonder to reopen the driver for this
case to avoid double close.

--
Zbigniew

> 
> - Bhanu
> 
> > 
> > --
> > Zbigniew
> > 
> > > 
> > > Also, as it is a good practice to close the fd before exit, still I can
> > > recommend to use drm_close_driver().
> > > 
> > > - Bhanu
> > > 
> > > > 
> > > > --
> > > > Zbigniew
> > > > 
> > > > >    }
> > > > > diff --git a/tests/drm_read.c b/tests/drm_read.c
> > > > > index 36dc623ed..e989e7bfb 100644
> > > > > --- a/tests/drm_read.c
> > > > > +++ b/tests/drm_read.c
> > > > > @@ -311,4 +311,7 @@ igt_main
> > > > >    	igt_subtest("short-buffer-wakeup")
> > > > >    		test_short_buffer_wakeup(fd, pipe);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
> > > > > index faeec3617..46273ab55 100644
> > > > > --- a/tests/i915/gem_barrier_race.c
> > > > > +++ b/tests/i915/gem_barrier_race.c
> > > > > @@ -153,4 +153,7 @@ igt_main
> > > > >    			break;
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
> > > > > index 3dd790c6c..4e063febd 100644
> > > > > --- a/tests/i915/gem_basic.c
> > > > > +++ b/tests/i915/gem_basic.c
> > > > > @@ -117,4 +117,7 @@ igt_main
> > > > >    	igt_describe("Verify that closing drm driver is possible with opened gem object.");
> > > > >    	igt_subtest("create-fd-close")
> > > > >    		test_create_fd_close(fd);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
> > > > > index fb3b5f5d8..0bf46c0a2 100644
> > > > > --- a/tests/i915/gem_concurrent_all.c
> > > > > +++ b/tests/i915/gem_concurrent_all.c
> > > > > @@ -2015,4 +2015,9 @@ igt_main
> > > > >    			}
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture {
> > > > > +		drm_close_driver(fd);
> > > > > +		drm_close_driver(vgem_drv);
> > > > > +	}
> > > > >    }
> > > > > diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
> > > > > index b87a21fa4..3daed16a0 100644
> > > > > --- a/tests/i915/gem_ctx_engines.c
> > > > > +++ b/tests/i915/gem_ctx_engines.c
> > > > > @@ -633,6 +633,8 @@ igt_main
> > > > >    			independent_all(i915, ctx);
> > > > >    	}
> > > > > -	igt_fixture
> > > > > +	igt_fixture {
> > > > >    		igt_stop_hang_detector();
> > > > > +		drm_close_driver(i915);
> > > > > +	}
> > > > >    }
> > > > > diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
> > > > > index 20fa1159e..40a373ab6 100644
> > > > > --- a/tests/i915/gem_ctx_exec.c
> > > > > +++ b/tests/i915/gem_ctx_exec.c
> > > > > @@ -546,4 +546,7 @@ igt_main
> > > > >    		gem_context_destroy(fd, ctx_id);
> > > > >    		put_ahnd(ahnd);
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_ctx_freq.c b/tests/i915/gem_ctx_freq.c
> > > > > index 18e736c73..ce4c0ba55 100644
> > > > > --- a/tests/i915/gem_ctx_freq.c
> > > > > +++ b/tests/i915/gem_ctx_freq.c
> > > > > @@ -213,4 +213,7 @@ igt_main
> > > > >    	igt_subtest_f("sysfs")
> > > > >    		sysfs_range(i915);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(i915);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
> > > > > index 8629992e8..77a210d03 100644
> > > > > --- a/tests/i915/gem_ctx_shared.c
> > > > > +++ b/tests/i915/gem_ctx_shared.c
> > > > > @@ -1088,4 +1088,7 @@ igt_main
> > > > >    			igt_stop_hang_detector();
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(i915);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
> > > > > index 81e55e165..18eec0413 100644
> > > > > --- a/tests/i915/gem_eio.c
> > > > > +++ b/tests/i915/gem_eio.c
> > > > > @@ -1126,4 +1126,7 @@ igt_main
> > > > >    			intel_allocator_multiprocess_stop();
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
> > > > > index 5059572f1..ddddad533 100644
> > > > > --- a/tests/i915/gem_exec_alignment.c
> > > > > +++ b/tests/i915/gem_exec_alignment.c
> > > > > @@ -546,4 +546,7 @@ igt_main
> > > > >    		prio_inversion(fd, SHARED);
> > > > >    	igt_subtest("pi-isolated")
> > > > >    		prio_inversion(fd, ISOLATED);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
> > > > > index 1c655e583..df16f8bec 100644
> > > > > --- a/tests/i915/gem_exec_balancer.c
> > > > > +++ b/tests/i915/gem_exec_balancer.c
> > > > > @@ -3482,4 +3482,7 @@ igt_main
> > > > >    		igt_subtest("nohangcheck")
> > > > >    			nohangcheck(i915);
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(i915);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_exec_endless.c b/tests/i915/gem_exec_endless.c
> > > > > index 77719de83..f895c6783 100644
> > > > > --- a/tests/i915/gem_exec_endless.c
> > > > > +++ b/tests/i915/gem_exec_endless.c
> > > > > @@ -367,4 +367,7 @@ igt_main
> > > > >    			intel_register_access_fini(&mmio);
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(i915);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
> > > > > index 2620bc55d..e9b915082 100644
> > > > > --- a/tests/i915/gem_flink_basic.c
> > > > > +++ b/tests/i915/gem_flink_basic.c
> > > > > @@ -188,4 +188,7 @@ igt_main
> > > > >    	igt_describe("Tests flink lifetime by referencing from multiple descriptors.");
> > > > >    	igt_subtest("flink-lifetime")
> > > > >    		test_flink_lifetime(fd);
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
> > > > > index baba7cf3c..056c7a7ac 100644
> > > > > --- a/tests/i915/gem_userptr_blits.c
> > > > > +++ b/tests/i915/gem_userptr_blits.c
> > > > > @@ -2703,4 +2703,7 @@ igt_main_args("c:", NULL, help_str, opt_handler, NULL)
> > > > >    		igt_require(has_userptr_probe(fd));
> > > > >    		test_probe(fd);
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(fd);
> > > > >    }
> > > > > diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
> > > > > index ae544adbc..7462dc600 100644
> > > > > --- a/tests/i915/gem_workarounds.c
> > > > > +++ b/tests/i915/gem_workarounds.c
> > > > > @@ -339,4 +339,7 @@ igt_main
> > > > >    			}
> > > > >    		}
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(device);
> > > > >    }
> > > > > diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
> > > > > index d4ee2d58a..f2374aff0 100644
> > > > > --- a/tests/i915/i915_pm_rps.c
> > > > > +++ b/tests/i915/i915_pm_rps.c
> > > > > @@ -959,4 +959,7 @@ igt_main
> > > > >    		waitboost(drm_fd, true);
> > > > >    		igt_disallow_hang(drm_fd, hang);
> > > > >    	}
> > > > > +
> > > > > +	igt_fixture
> > > > > +		drm_close_driver(drm_fd);
> > > > >    }
> > > > > -- 
> > > > > 2.40.0
> > > > > 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level
  2023-05-16 16:50 ` [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level Bhanuprakash Modem
@ 2023-05-24  7:58   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  7:58 UTC (permalink / raw)
  To: igt-dev

On 2023-05-16 at 22:20:57 +0530, Bhanuprakash Modem wrote:
> As xe_device get/put is already handled at driver open/close
> level, drop these checks from tests.
> 
> V2: - New patch for xe_config()
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> ---
>  tests/kms_3d.c                  |  6 ------
>  tests/kms_addfb_basic.c         |  9 +--------
>  tests/kms_flip.c                |  9 +--------
>  tests/kms_flip_event_leak.c     |  4 ----
>  tests/kms_getfb.c               | 15 +--------------
>  tests/kms_hdmi_inject.c         |  7 -------
>  tests/kms_setmode.c             |  7 -------
>  tests/xe/xe_compute.c           |  8 ++------
>  tests/xe/xe_create.c            |  9 ++-------
>  tests/xe/xe_debugfs.c           |  6 +-----
>  tests/xe/xe_dma_buf_sync.c      | 11 ++---------
>  tests/xe/xe_evict.c             |  5 -----
>  tests/xe/xe_exec_balancer.c     |  8 ++------
>  tests/xe/xe_exec_basic.c        |  8 ++------
>  tests/xe/xe_exec_compute_mode.c |  8 ++------
>  tests/xe/xe_exec_fault_mode.c   |  5 +----
>  tests/xe/xe_exec_reset.c        | 23 +++++------------------
>  tests/xe/xe_exec_threads.c      | 20 ++++----------------
>  tests/xe/xe_gpgpu_fill.c        |  3 ---
>  tests/xe/xe_guc_pc.c            |  2 --
>  tests/xe/xe_huc_copy.c          |  8 ++------
>  tests/xe/xe_intel_bb.c          |  2 --
>  tests/xe/xe_mmap.c              |  8 ++------
>  tests/xe/xe_mmio.c              |  8 ++------
>  tests/xe/xe_noexec_ping_pong.c  |  2 --
>  tests/xe/xe_pm.c                |  3 ---
>  tests/xe/xe_prime_self_import.c | 31 +------------------------------
>  tests/xe/xe_query.c             |  8 ++------
>  tests/xe/xe_vm.c                |  5 +----
>  tests/xe/xe_waitfence.c         |  8 ++------
>  30 files changed, 38 insertions(+), 218 deletions(-)
> 
> diff --git a/tests/kms_3d.c b/tests/kms_3d.c
> index 55e1d8058..c7a9d42d2 100644
> --- a/tests/kms_3d.c
> +++ b/tests/kms_3d.c
> @@ -37,9 +37,6 @@ igt_simple_main
>  
>  	drm_fd = drm_open_driver_master(DRIVER_ANY);
>  
> -	if (is_xe_device(drm_fd))
> -		xe_device_get(drm_fd);
> -
>  	res = drmModeGetResources(drm_fd);
>  	igt_require(res);
>  
> @@ -116,8 +113,5 @@ igt_simple_main
>  
>  	drmModeFreeConnector(connector);
>  
> -	if (is_xe_device(drm_fd))
> -		xe_device_put(drm_fd);
> -
>  	drm_close_driver(drm_fd);
>  }
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index 53a6a007a..065f21975 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -974,9 +974,6 @@ igt_main
>  	igt_fixture {
>  		fd = drm_open_driver_master(DRIVER_ANY);
>  		igt_require(has_addfb2_iface(fd));
> -
> -		if (is_xe_device(fd))
> -			xe_device_get(fd);
>  	}
>  
>  	invalid_tests(fd);
> @@ -1008,10 +1005,6 @@ igt_main
>  			igt_display_fini(&display);
>  	}
>  
> -	igt_fixture {
> -		if (is_xe_device(fd))
> -			xe_device_put(fd);
> -
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index efff06e1c..d57990240 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -1858,9 +1858,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  		igt_install_exit_handler(kms_flip_exit_handler);
>  		get_timestamp_format();
>  
> -		if (is_xe_device(drm_fd))
> -			xe_device_get(drm_fd);
> -
>  		if (is_i915_device(drm_fd)) {
>  			bops = buf_ops_create(drm_fd);
>  		}
> @@ -1926,10 +1923,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  	}
>  	igt_stop_signal_helper();
>  
> -	igt_fixture {
> -		if (is_xe_device(drm_fd))
> -			xe_device_put(drm_fd);
> -
> +	igt_fixture
>  		drm_close_driver(drm_fd);
> -	}
>  }
> diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
> index 7e46f5ec0..423ce40df 100644
> --- a/tests/kms_flip_event_leak.c
> +++ b/tests/kms_flip_event_leak.c
> @@ -65,8 +65,6 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
>  	igt_device_drop_master(data->drm_fd);
>  
>  	igt_device_set_master(fd);
> -	if (is_xe_device(fd))
> -		xe_device_get(fd);
>  
>  	igt_create_fb(fd, mode->hdisplay, mode->vdisplay,
>  		      DRM_FORMAT_XRGB8888,
> @@ -77,8 +75,6 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
>  			      data);
>  	igt_assert_eq(ret, 0);
>  
> -	if (is_xe_device(fd))
> -		xe_device_put(fd);
>  	ret = drm_close_driver(fd);
>  	igt_assert_eq(ret, 0);
>  
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
> index 3cb568808..0b2e66ddf 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -399,9 +399,6 @@ static void test_handle_protection(void) {
>  	igt_fixture {
>  		non_master_fd = drm_open_driver(DRIVER_ANY);
>  
> -		if (is_xe_device(non_master_fd))
> -			xe_device_get(non_master_fd);
> -
>  		non_master_add.width = 1024;
>  		non_master_add.height = 1024;
>  		non_master_add.pixel_format = DRM_FORMAT_XRGB8888;
> @@ -449,9 +446,6 @@ static void test_handle_protection(void) {
>  		do_ioctl(non_master_fd, DRM_IOCTL_MODE_RMFB, &non_master_add.fb_id);
>  		gem_close(non_master_fd, non_master_add.handles[0]);
>  
> -		if (is_xe_device(non_master_fd))
> -			xe_device_get(non_master_fd);
> -
>  		drm_close_driver(non_master_fd);
>  	}
>  }
> @@ -463,9 +457,6 @@ igt_main
>  	igt_fixture {
>  		fd = drm_open_driver_master(DRIVER_ANY);
>  		igt_require(has_getfb_iface(fd));
> -
> -		if (is_xe_device(fd))
> -			xe_device_get(fd);
>  	}
>  
>  	igt_subtest_group
> @@ -480,10 +471,6 @@ igt_main
>  	igt_subtest_group
>  		test_handle_protection();
>  
> -	igt_fixture {
> -		if (is_xe_device(fd))
> -			xe_device_put(fd);
> -
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
> index e3db34502..9aa5c59fc 100644
> --- a/tests/kms_hdmi_inject.c
> +++ b/tests/kms_hdmi_inject.c
> @@ -206,9 +206,6 @@ igt_main
>  		igt_require(connector);
>  
>  		kmstest_unset_all_crtcs(drm_fd, res);
> -
> -		if (is_xe_device(drm_fd))
> -			xe_device_get(drm_fd);
>  	}
>  
>  	igt_describe("Make sure that 4K modes exposed by DRM match the "
> @@ -223,10 +220,6 @@ igt_main
>  
>  	igt_fixture {
>  		drmModeFreeConnector(connector);
> -
> -		if (is_xe_device(drm_fd))
> -			xe_device_put(drm_fd);
> -
>  		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index a85f4eaf2..035bbd0b0 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -955,9 +955,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
>  
>  		drm_resources = drmModeGetResources(drm_fd);
>  		igt_require(drm_resources);
> -
> -		if (is_xe_device(drm_fd))
> -			xe_device_get(drm_fd);
>  	}
>  
>  	for (i = 0; i < ARRAY_SIZE(tests); i++) {
> @@ -974,10 +971,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
>  
>  	igt_fixture {
>  		drmModeFreeResources(drm_resources);
> -
> -		if (is_xe_device(drm_fd))
> -			xe_device_put(drm_fd);
> -
>  		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/xe/xe_compute.c b/tests/xe/xe_compute.c
> index 5e6cd8529..d2d198a95 100644
> --- a/tests/xe/xe_compute.c
> +++ b/tests/xe/xe_compute.c
> @@ -35,16 +35,12 @@ igt_main
>  {
>  	int xe;
>  
> -	igt_fixture {
> +	igt_fixture
>  		xe = drm_open_driver(DRIVER_XE);
> -		xe_device_get(xe);
> -	}
>  
>  	igt_subtest("compute-square")
>  		test_compute_square(xe);
>  
> -	igt_fixture {
> -		xe_device_put(xe);
> +	igt_fixture
>  		drm_close_driver(xe);
> -	}
>  }
> diff --git a/tests/xe/xe_create.c b/tests/xe/xe_create.c
> index 959dd27e7..11dc7ceaa 100644
> --- a/tests/xe/xe_create.c
> +++ b/tests/xe/xe_create.c
> @@ -111,10 +111,8 @@ igt_main
>  {
>  	int xe;
>  
> -	igt_fixture {
> +	igt_fixture
>  		xe = drm_open_driver(DRIVER_XE);
> -		xe_device_get(xe);
> -	}
>  
>  	igt_subtest("create-invalid-size") {
>  		create_invalid_size(xe);
> @@ -124,9 +122,6 @@ igt_main
>  		create_massive_size(xe);
>  	}
>  
> -
> -	igt_fixture {
> -		xe_device_put(xe);
> +	igt_fixture
>  		drm_close_driver(xe);
> -	}
>  }
> diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
> index 10dd05740..c4396a37a 100644
> --- a/tests/xe/xe_debugfs.c
> +++ b/tests/xe/xe_debugfs.c
> @@ -240,14 +240,12 @@ static int opt_handler(int option, int option_index, void *input)
>  
>  igt_main_args("", long_options, help_str, opt_handler, NULL)
>  {
> -	struct xe_device *xe_dev;
>  	char devnode[PATH_MAX];
>  	int fd;
>  	int gt;
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_dev = xe_device_get(fd);
>  		__igt_debugfs_dump(fd, "info", IGT_LOG_INFO);
>  	}
>  
> @@ -268,8 +266,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  		test_forcewake(fd);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_dma_buf_sync.c b/tests/xe/xe_dma_buf_sync.c
> index 81ece2428..64027d68f 100644
> --- a/tests/xe/xe_dma_buf_sync.c
> +++ b/tests/xe/xe_dma_buf_sync.c
> @@ -113,7 +113,6 @@ test_export_dma_buf(struct drm_xe_engine_class_instance *hwe0,
>  
>  	for (i = 0; i < N_FD; ++i) {
>  		fd[i] = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd[0]);
>  		vm[i] = xe_vm_create(fd[i], 0, 0);
>  		engine[i] = xe_engine_create(fd[i], vm[i], !i ? hwe0 : hwe1, 0);
>  	}
> @@ -218,11 +217,8 @@ test_export_dma_buf(struct drm_xe_engine_class_instance *hwe0,
>  		close(dma_buf_fd[i]);
>  	}
>  
> -	for (i = 0; i < N_FD; ++i) {
> -		xe_device_put(fd[i]);
> +	for (i = 0; i < N_FD; ++i)
>  		drm_close_driver(fd[i]);
> -	}
> -
>  }
>  
>  igt_main
> @@ -232,7 +228,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  
>  		xe_for_each_hw_engine(fd, hwe)
>  			if (hwe0 == NULL) {
> @@ -255,8 +250,6 @@ igt_main
>  	igt_subtest("export-dma-buf-many-read-sync")
>  		test_export_dma_buf(hwe0, hwe1, 16, READ_SYNC);
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_evict.c b/tests/xe/xe_evict.c
> index 4b66dd683..c3b5b86c4 100644
> --- a/tests/xe/xe_evict.c
> +++ b/tests/xe/xe_evict.c
> @@ -62,7 +62,6 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
>  	igt_assert(bo);
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  
>  	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS, 0);
>  	if (flags & BIND_ENGINE)
> @@ -200,7 +199,6 @@ test_evict(int fd, struct drm_xe_engine_class_instance *eci,
>  		xe_vm_destroy(fd, vm2);
>  		xe_vm_destroy(fd, vm3);
>  	}
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  }
>  
> @@ -239,7 +237,6 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
>  	igt_assert(bo);
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  
>  	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS |
>  			  DRM_XE_VM_CREATE_COMPUTE_MODE, 0);
> @@ -368,7 +365,6 @@ test_evict_cm(int fd, struct drm_xe_engine_class_instance *eci,
>  	xe_vm_destroy(fd, vm);
>  	if (flags & MULTI_VM)
>  		xe_vm_destroy(fd, vm2);
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  }
>  
> @@ -668,7 +664,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  		igt_require(xe_has_vram(fd));
>  		vram_size = xe_vram_size(fd, 0);
>  		igt_assert(vram_size);
> diff --git a/tests/xe/xe_exec_balancer.c b/tests/xe/xe_exec_balancer.c
> index fb4592903..81ec526e7 100644
> --- a/tests/xe/xe_exec_balancer.c
> +++ b/tests/xe/xe_exec_balancer.c
> @@ -626,10 +626,8 @@ igt_main
>  	int class;
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	igt_subtest("virtual-all-active")
>  		xe_for_each_gt(fd, gt)
> @@ -706,8 +704,6 @@ igt_main
>  					test_cm(fd, gt, class, 1, 0, s->flags);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_exec_basic.c b/tests/xe/xe_exec_basic.c
> index d14a764f4..d1f39e4b6 100644
> --- a/tests/xe/xe_exec_basic.c
> +++ b/tests/xe/xe_exec_basic.c
> @@ -311,10 +311,8 @@ igt_main
>  	};
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	for (const struct section *s = sections; s->name; s++) {
>  		igt_subtest_f("once-%s", s->name)
> @@ -351,8 +349,6 @@ igt_main
>  				test_exec(fd, hwe, 1, 0, 1, s->flags);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_exec_compute_mode.c b/tests/xe/xe_exec_compute_mode.c
> index 950cb6159..a58067e64 100644
> --- a/tests/xe/xe_exec_compute_mode.c
> +++ b/tests/xe/xe_exec_compute_mode.c
> @@ -327,10 +327,8 @@ igt_main
>  	};
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	for (const struct section *s = sections; s->name; s++) {
>  		igt_subtest_f("once-%s", s->name)
> @@ -359,8 +357,6 @@ igt_main
>  					  s->flags);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_exec_fault_mode.c b/tests/xe/xe_exec_fault_mode.c
> index 8cd883c09..ee167f359 100644
> --- a/tests/xe/xe_exec_fault_mode.c
> +++ b/tests/xe/xe_exec_fault_mode.c
> @@ -524,7 +524,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  		igt_require(xe_supports_faults(fd));
>  	}
>  
> @@ -568,8 +567,6 @@ igt_main
>  		xe_for_each_hw_engine(fd, hwe)
>  			test_atomic(fd, hwe, 8, WAIT_ATOMIC);
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_exec_reset.c b/tests/xe/xe_exec_reset.c
> index 3700b8dce..bd8ad76fc 100644
> --- a/tests/xe/xe_exec_reset.c
> +++ b/tests/xe/xe_exec_reset.c
> @@ -178,10 +178,8 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
>  
>  	igt_assert(n_engines <= MAX_N_ENGINES);
>  
> -	if (flags & CLOSE_FD) {
> +	if (flags & CLOSE_FD)
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	xe_for_each_hw_engine(fd, hwe) {
>  		if (hwe->engine_class != class || hwe->gt_id != gt)
> @@ -293,7 +291,6 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
>  			for (i = 0; i < n_engines; i++)
>  				xe_engine_destroy(fd, engines[i]);
>  		}
> -		xe_device_put(fd);
>  		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
> @@ -388,10 +385,8 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
>  
>  	igt_assert(n_engines <= MAX_N_ENGINES);
>  
> -	if (flags & CLOSE_FD) {
> +	if (flags & CLOSE_FD)
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS, 0);
>  	bo_size = sizeof(*data) * n_execs;
> @@ -474,7 +469,6 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
>  			for (i = 0; i < n_engines; i++)
>  				xe_engine_destroy(fd, engines[i]);
>  		}
> -		xe_device_put(fd);
>  		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
> @@ -566,10 +560,8 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
>  
>  	igt_assert(n_engines <= MAX_N_ENGINES);
>  
> -	if (flags & CLOSE_FD) {
> +	if (flags & CLOSE_FD)
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS |
>  			  DRM_XE_VM_CREATE_COMPUTE_MODE, 0);
> @@ -654,7 +646,6 @@ test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
>  			for (i = 0; i < n_engines; i++)
>  				xe_engine_destroy(fd, engines[i]);
>  		}
> -		xe_device_put(fd);
>  		drm_close_driver(fd);
>  		/* FIXME: wait for idle */
>  		usleep(150000);
> @@ -831,10 +822,8 @@ igt_main
>  	int class;
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	igt_subtest("spin")
>  		xe_for_each_hw_engine(fd, hwe)
> @@ -944,8 +933,6 @@ igt_main
>  	igt_subtest("gt-reset-stress")
>  		gt_reset(fd, 4, 1);
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_exec_threads.c b/tests/xe/xe_exec_threads.c
> index bde92a9c5..6450d1e40 100644
> --- a/tests/xe/xe_exec_threads.c
> +++ b/tests/xe/xe_exec_threads.c
> @@ -73,7 +73,6 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
>  
>  	if (!fd) {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  		owns_fd = true;
>  	}
>  
> @@ -243,10 +242,8 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
>  	}
>  	if (owns_vm)
>  		xe_vm_destroy(fd, vm);
> -	if (owns_fd) {
> -		xe_device_put(fd);
> +	if (owns_fd)
>  		drm_close_driver(fd);
> -	}
>  }
>  
>  static void
> @@ -282,7 +279,6 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
>  
>  	if (!fd) {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  		owns_fd = true;
>  	}
>  
> @@ -453,7 +449,6 @@ test_compute_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
>  	if (owns_vm)
>  		xe_vm_destroy(fd, vm);
>  	if (owns_fd) {
> -		xe_device_put(fd);
>  		drm_close_driver(fd);
>  	}
>  }
> @@ -491,7 +486,6 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
>  
>  	if (!fd) {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  		owns_fd = true;
>  	}
>  
> @@ -696,10 +690,8 @@ test_legacy_mode(int fd, uint32_t vm, uint64_t addr, uint64_t userptr,
>  	}
>  	if (owns_vm)
>  		xe_vm_destroy(fd, vm);
> -	if (owns_fd) {
> -		xe_device_put(fd);
> +	if (owns_fd)
>  		drm_close_driver(fd);
> -	}
>  }
>  
>  struct thread_data {
> @@ -1391,18 +1383,14 @@ igt_main
>  	};
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	for (const struct section *s = sections; s->name; s++) {
>  		igt_subtest_f("threads-%s", s->name)
>  			threads(fd, s->flags);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_gpgpu_fill.c b/tests/xe/xe_gpgpu_fill.c
> index 28ad2382b..b1f55ea64 100644
> --- a/tests/xe/xe_gpgpu_fill.c
> +++ b/tests/xe/xe_gpgpu_fill.c
> @@ -120,8 +120,6 @@ igt_main
>  
>  		fill_fn = igt_get_gpgpu_fillfunc(data.devid);
>  		igt_require_f(fill_fn, "no gpgpu-fill function\n");
> -
> -		xe_device_get(data.drm_fd);
>  	}
>  
>  	igt_subtest("basic") {
> @@ -129,7 +127,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		xe_device_put(data.drm_fd);
>  		buf_ops_destroy(data.bops);
>  		drm_close_driver(data.drm_fd);
>  	}
> diff --git a/tests/xe/xe_guc_pc.c b/tests/xe/xe_guc_pc.c
> index 56d4f9190..13b862c5a 100644
> --- a/tests/xe/xe_guc_pc.c
> +++ b/tests/xe/xe_guc_pc.c
> @@ -387,7 +387,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  
>  		sysfs = igt_sysfs_open(fd);
>  		igt_assert(sysfs != -1);
> @@ -495,7 +494,6 @@ igt_main
>  			set_freq(sysfs, gt, "max", stash_max);
>  		}
>  		close(sysfs);
> -		xe_device_put(fd);
>  		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/xe/xe_huc_copy.c b/tests/xe/xe_huc_copy.c
> index ccdfe8622..d4377f9a1 100644
> --- a/tests/xe/xe_huc_copy.c
> +++ b/tests/xe/xe_huc_copy.c
> @@ -176,10 +176,8 @@ igt_main
>  {
>  	int xe;
>  
> -	igt_fixture {
> +	igt_fixture
>  		xe = drm_open_driver(DRIVER_XE);
> -		xe_device_get(xe);
> -	}
>  
>  	igt_subtest("huc_copy") {
>  		/*
> @@ -190,8 +188,6 @@ igt_main
>  		test_huc_copy(xe);
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(xe);
> +	igt_fixture
>  		drm_close_driver(xe);
> -	}
>  }
> diff --git a/tests/xe/xe_intel_bb.c b/tests/xe/xe_intel_bb.c
> index f43beb1a8..59740d4d2 100644
> --- a/tests/xe/xe_intel_bb.c
> +++ b/tests/xe/xe_intel_bb.c
> @@ -1105,7 +1105,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
>  	igt_fixture {
>  		xe = drm_open_driver(DRIVER_XE);
>  		bops = buf_ops_create(xe);
> -		xe_device_get(xe);
>  	}
>  
>  	igt_describe("Ensure reset is possible on fresh bb");
> @@ -1178,7 +1177,6 @@ igt_main_args("dpib", NULL, help_str, opt_handler, NULL)
>  	}
>  
>  	igt_fixture {
> -		xe_device_put(xe);
>  		buf_ops_destroy(bops);
>  		drm_close_driver(xe);
>  	}
> diff --git a/tests/xe/xe_mmap.c b/tests/xe/xe_mmap.c
> index 352cbcab4..463d0cac7 100644
> --- a/tests/xe/xe_mmap.c
> +++ b/tests/xe/xe_mmap.c
> @@ -61,10 +61,8 @@ igt_main
>  {
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	igt_subtest("system")
>  		test_mmap(fd, system_memory(fd));
> @@ -75,8 +73,6 @@ igt_main
>  	igt_subtest("vram-system")
>  		test_mmap(fd, vram_memory(fd, 0) | system_memory(fd));
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_mmio.c b/tests/xe/xe_mmio.c
> index 77a38b8d1..6825478f0 100644
> --- a/tests/xe/xe_mmio.c
> +++ b/tests/xe/xe_mmio.c
> @@ -77,18 +77,14 @@ igt_main
>  {
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	igt_subtest("mmio-timestamp")
>  		test_xe_mmio_timestamp(fd);
>  	igt_subtest("mmio-invalid")
>  		test_xe_mmio_invalid(fd);
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_noexec_ping_pong.c b/tests/xe/xe_noexec_ping_pong.c
> index f276e694c..3c2b340bd 100644
> --- a/tests/xe/xe_noexec_ping_pong.c
> +++ b/tests/xe/xe_noexec_ping_pong.c
> @@ -99,10 +99,8 @@ igt_simple_main
>  {
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  
>  	test_ping_pong(fd, xe_hw_engine(fd, 0));
>  
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  }
> diff --git a/tests/xe/xe_pm.c b/tests/xe/xe_pm.c
> index 7bec294ed..b4d5fe252 100644
> --- a/tests/xe/xe_pm.c
> +++ b/tests/xe/xe_pm.c
> @@ -370,8 +370,6 @@ igt_main
>  		device.pci_xe = igt_device_get_pci_device(device.fd_xe);
>  		device.pci_root = igt_device_get_pci_root_port(device.fd_xe);
>  
> -		xe_device_get(device.fd_xe);
> -
>  		/* Always perform initial once-basic exec checking for health */
>  		xe_for_each_hw_engine(device.fd_xe, hwe)
>  			test_exec(device, hwe, 1, 1, NO_SUSPEND, NO_RPM);
> @@ -440,7 +438,6 @@ igt_main
>  	igt_fixture {
>  		set_d3cold_allowed(device.pci_xe, d3cold_allowed);
>  		igt_restore_runtime_pm();
> -		xe_device_put(device.fd_xe);
>  		drm_close_driver(device.fd_xe);
>  	}
>  }
> diff --git a/tests/xe/xe_prime_self_import.c b/tests/xe/xe_prime_self_import.c
> index a86d0e9f2..5b21a39ea 100644
> --- a/tests/xe/xe_prime_self_import.c
> +++ b/tests/xe/xe_prime_self_import.c
> @@ -104,9 +104,7 @@ static void test_with_fd_dup(void)
>  	counter = 0;
>  
>  	fd1 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd1);
>  	fd2 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd2);
>  
>  	handle = xe_bo_create(fd1, 0, 0, BO_SIZE);
>  
> @@ -121,9 +119,7 @@ static void test_with_fd_dup(void)
>  	close(dma_buf_fd2);
>  	check_bo(fd2, handle_import, fd2, handle_import);
>  
> -	xe_device_put(fd1);
>  	drm_close_driver(fd1);
> -	xe_device_put(fd2);
>  	drm_close_driver(fd2);
>  }
>  
> @@ -143,9 +139,7 @@ static void test_with_two_bos(void)
>  	counter = 0;
>  
>  	fd1 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd1);
>  	fd2 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd2);
>  
>  	handle1 = xe_bo_create(fd1, 0, 0, BO_SIZE);
>  	handle2 = xe_bo_create(fd1, 0, 0, BO_SIZE);
> @@ -165,9 +159,7 @@ static void test_with_two_bos(void)
>  
>  	check_bo(fd2, handle_import, fd2, handle_import);
>  
> -	xe_device_put(fd1);
>  	drm_close_driver(fd1);
> -	xe_device_put(fd2);
>  	drm_close_driver(fd2);
>  }
>  
> @@ -185,9 +177,7 @@ static void test_with_one_bo_two_files(void)
>  	int dma_buf_fd1, dma_buf_fd2;
>  
>  	fd1 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd1);
>  	fd2 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd2);
>  
>  	handle_orig = xe_bo_create(fd1, 0, 0, BO_SIZE);
>  	dma_buf_fd1 = prime_handle_to_fd(fd1, handle_orig);
> @@ -201,9 +191,7 @@ static void test_with_one_bo_two_files(void)
>  	/* dma-buf self importing an flink bo should give the same handle */
>  	igt_assert_eq_u32(handle_import, handle_open);
>  
> -	xe_device_put(fd1);
>  	drm_close_driver(fd1);
> -	xe_device_put(fd2);
>  	drm_close_driver(fd2);
>  	close(dma_buf_fd1);
>  	close(dma_buf_fd2);
> @@ -222,9 +210,7 @@ static void test_with_one_bo(void)
>  	int dma_buf_fd;
>  
>  	fd1 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd1);
>  	fd2 = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd2);
>  
>  	handle = xe_bo_create(fd1, 0, 0, BO_SIZE);
>  
> @@ -258,10 +244,8 @@ static void test_with_one_bo(void)
>  	check_bo(fd1, handle, fd2, handle_import1);
>  
>  	/* Completely rip out exporting fd. */
> -	xe_device_put(fd1);
>  	drm_close_driver(fd1);
>  	check_bo(fd2, handle_import1, fd2, handle_import1);
> -	xe_device_put(fd2);
>  	drm_close_driver(fd2);
>  }
>  
> @@ -314,7 +298,6 @@ static void *thread_fn_reimport_vs_close(void *p)
>  	threads = calloc(num_threads, sizeof(pthread_t));
>  
>  	fds[0] = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fds[0]);
>  
>  	handle = xe_bo_create(fds[0], 0, 0, BO_SIZE);
>  
> @@ -334,7 +317,6 @@ static void *thread_fn_reimport_vs_close(void *p)
>  	}
>  
>  	pthread_barrier_destroy(&g_barrier);
> -	xe_device_put(fds[0]);
>  	drm_close_driver(fds[0]);
>  	close(fds[1]);
>  
> @@ -406,13 +388,11 @@ static void test_export_close_race(void)
>  	/* Allocate exit handler fds in here so that we dont screw
>  	 * up the counts */
>  	fake = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fake);
>  
>  	/* TODO: Read object count */
>  	obj_count = 0;
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  	pthread_barrier_init(&g_barrier, NULL, num_threads);
>  
>  	for (i = 0; i < num_threads; i++) {
> @@ -428,7 +408,6 @@ static void test_export_close_race(void)
>  	}
>  
>  	pthread_barrier_destroy(&g_barrier);
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  
>  	/* TODO: Read object count */
> @@ -436,7 +415,6 @@ static void test_export_close_race(void)
>  
>  	igt_info("leaked %i objects\n", obj_count);
>  
> -	xe_device_put(fake);
>  	drm_close_driver(fake);
>  
>  	igt_assert_eq(obj_count, 0);
> @@ -458,7 +436,6 @@ static void test_llseek_size(void)
>  	counter = 0;
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  
>  	for (i = 0; i < 10; i++) {
>  		int bufsz = xe_get_default_alignment(fd) << i;
> @@ -473,7 +450,6 @@ static void test_llseek_size(void)
>  		close(dma_buf_fd);
>  	}
>  
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  }
>  
> @@ -493,7 +469,6 @@ static void test_llseek_bad(void)
>  	counter = 0;
>  
>  	fd = drm_open_driver(DRIVER_XE);
> -	xe_device_get(fd);
>  
>  	handle = xe_bo_create(fd, 0, 0, BO_SIZE);
>  	dma_buf_fd = prime_handle_to_fd(fd, handle);
> @@ -510,7 +485,6 @@ static void test_llseek_bad(void)
>  
>  	close(dma_buf_fd);
>  
> -	xe_device_put(fd);
>  	drm_close_driver(fd);
>  }
>  
> @@ -534,7 +508,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  	}
>  
>  	for (i = 0; i < ARRAY_SIZE(tests); i++) {
> @@ -542,8 +515,6 @@ igt_main
>  			tests[i].fn();
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_query.c b/tests/xe/xe_query.c
> index 1c06534d4..99e92b7c1 100644
> --- a/tests/xe/xe_query.c
> +++ b/tests/xe/xe_query.c
> @@ -457,10 +457,8 @@ igt_main
>  {
>  	int xe;
>  
> -	igt_fixture {
> +	igt_fixture
>  		xe = drm_open_driver(DRIVER_XE);
> -		xe_device_get(xe);
> -	}
>  
>  	igt_subtest("query-engines")
>  		test_query_engines(xe);
> @@ -489,8 +487,6 @@ igt_main
>  	igt_subtest("query-invalid-extension")
>  		test_query_invalid_extension(xe);
>  
> -	igt_fixture {
> -		xe_device_put(xe);
> +	igt_fixture
>  		drm_close_driver(xe);
> -	}
>  }
> diff --git a/tests/xe/xe_vm.c b/tests/xe/xe_vm.c
> index 9015a5a57..13295cbe1 100644
> --- a/tests/xe/xe_vm.c
> +++ b/tests/xe/xe_vm.c
> @@ -1621,7 +1621,6 @@ igt_main
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
>  
>  		xe_for_each_hw_engine(fd, hwe)
>  			if (hwe->engine_class != DRM_XE_ENGINE_CLASS_COPY) {
> @@ -1837,8 +1836,6 @@ igt_main
>  		}
>  	}
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> diff --git a/tests/xe/xe_waitfence.c b/tests/xe/xe_waitfence.c
> index 8bfb741f6..c9d7f6981 100644
> --- a/tests/xe/xe_waitfence.c
> +++ b/tests/xe/xe_waitfence.c
> @@ -88,16 +88,12 @@ igt_main
>  {
>  	int fd;
>  
> -	igt_fixture {
> +	igt_fixture
>  		fd = drm_open_driver(DRIVER_XE);
> -		xe_device_get(fd);
> -	}
>  
>  	igt_subtest("test")
>  		test(fd);
>  
> -	igt_fixture {
> -		xe_device_put(fd);
> +	igt_fixture
>  		drm_close_driver(fd);
> -	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd Bhanuprakash Modem
@ 2023-05-24  8:00   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  8:00 UTC (permalink / raw)
  To: igt-dev

Hi,

On 2023-05-16 at 22:20:48 +0530, Bhanuprakash Modem wrote:
> Avoid closing the closed fd.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> ---
>  tests/i915/kms_mmap_write_crc.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/tests/i915/kms_mmap_write_crc.c b/tests/i915/kms_mmap_write_crc.c
> index bc51975f6..2a2526417 100644
> --- a/tests/i915/kms_mmap_write_crc.c
> +++ b/tests/i915/kms_mmap_write_crc.c
> @@ -306,6 +306,5 @@ igt_main_args("n", NULL, NULL, opt_handler, NULL)
>  		close(data.drm_fd);
>  
>  		igt_stop_helper(&hog);
> -		close(data.drm_fd);

Nice catch.

>  	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests"
  2023-05-16 16:50 ` [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests" Bhanuprakash Modem
@ 2023-05-24  8:03   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  8:03 UTC (permalink / raw)
  To: igt-dev

On 2023-05-16 at 22:20:58 +0530, Bhanuprakash Modem wrote:
> As this logic is moved to driver open/close level, this is
> redundant, hence revert this logic.
> 
> This reverts commit 3e049d7c5048c8e4d0b0cfc22afca18e9e897e9a.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>

> ---
>  lib/igt_kms.c | 8 --------
>  1 file changed, 8 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index c54841486..bb3b924c9 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -59,7 +59,6 @@
>  #include "igt_device.h"
>  #include "igt_sysfs.h"
>  #include "sw_sync.h"
> -#include "xe/xe_query.h"
>  #ifdef HAVE_CHAMELIUM
>  #include "igt_chamelium.h"
>  #endif
> @@ -2657,9 +2656,6 @@ void igt_display_require(igt_display_t *display, int drm_fd)
>  	}
>  #endif
>  
> -	if (is_xe_device(drm_fd))
> -		xe_device_get(drm_fd);
> -
>  	display->n_pipes = IGT_MAX_PIPES;
>  	display->pipes = calloc(sizeof(igt_pipe_t), display->n_pipes);
>  	igt_assert_f(display->pipes, "Failed to allocate memory for %d pipes\n", display->n_pipes);
> @@ -2996,10 +2992,6 @@ static void igt_output_fini(igt_output_t *output)
>  void igt_display_fini(igt_display_t *display)
>  {
>  	int i;
> -	int drm_fd = display->drm_fd;
> -
> -	if (is_xe_device(drm_fd))
> -		xe_device_put(drm_fd);
>  
>  	for (i = 0; i < display->n_planes; ++i) {
>  		igt_plane_t *plane = &display->planes[i];
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 17/20] tests/i915: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 17/20] tests/i915: " Bhanuprakash Modem
@ 2023-05-24  8:44   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  8:44 UTC (permalink / raw)
  To: igt-dev

Hi Bhanuprakash,

few nits, see below.

On 2023-05-16 at 22:20:55 +0530, Bhanuprakash Modem wrote:
> To close the drm file descriptor, use igt helper drm_close_driver()
> instead of using close().
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/core_auth.c                           | 10 +++----
>  tests/core_getclient.c                      |  2 +-
>  tests/core_getstats.c                       |  2 +-
>  tests/core_getversion.c                     |  2 +-
>  tests/core_setmaster.c                      |  6 ++--
>  tests/core_setmaster_vs_auth.c              |  6 ++--
>  tests/debugfs_test.c                        |  2 +-
>  tests/dumb_buffer.c                         |  2 +-
>  tests/eviction_common.c                     |  2 +-
>  tests/fbdev.c                               |  2 +-

Please split above (and some of below) to separate patch:
tests: Use drm_close_driver() to close the drm fd

and leave only i915 in
tests/i915: Use drm_close_driver() to close the drm fd

>  tests/i915/api_intel_allocator.c            |  6 ++--
>  tests/i915/api_intel_bb.c                   |  2 +-
>  tests/i915/drm_fdinfo.c                     |  2 +-
>  tests/i915/gem_bad_reloc.c                  |  2 +-
>  tests/i915/gem_barrier_race.c               |  2 +-
>  tests/i915/gem_basic.c                      |  2 +-
>  tests/i915/gem_blits.c                      |  2 +-
>  tests/i915/gem_busy.c                       |  2 +-
>  tests/i915/gem_caching.c                    |  2 +-
>  tests/i915/gem_ccs.c                        |  2 +-
>  tests/i915/gem_close_race.c                 | 14 ++++-----
>  tests/i915/gem_cs_tlb.c                     |  2 +-
>  tests/i915/gem_ctx_bad_destroy.c            |  2 +-
>  tests/i915/gem_ctx_create.c                 |  4 +--
>  tests/i915/gem_ctx_exec.c                   |  2 +-
>  tests/i915/gem_ctx_param.c                  |  2 +-
>  tests/i915/gem_ctx_persistence.c            |  6 ++--
>  tests/i915/gem_ctx_shared.c                 |  2 +-
>  tests/i915/gem_ctx_sseu.c                   |  2 +-
>  tests/i915/gem_ctx_switch.c                 |  2 +-
>  tests/i915/gem_eio.c                        | 16 +++++------
>  tests/i915/gem_evict_alignment.c            |  2 +-
>  tests/i915/gem_evict_everything.c           |  2 +-
>  tests/i915/gem_exec_alignment.c             |  2 +-
>  tests/i915/gem_exec_async.c                 |  2 +-
>  tests/i915/gem_exec_await.c                 |  2 +-
>  tests/i915/gem_exec_basic.c                 |  2 +-
>  tests/i915/gem_exec_big.c                   |  2 +-
>  tests/i915/gem_exec_capture.c               |  2 +-
>  tests/i915/gem_exec_create.c                |  2 +-
>  tests/i915/gem_exec_fair.c                  |  2 +-
>  tests/i915/gem_exec_fence.c                 |  4 +--
>  tests/i915/gem_exec_flush.c                 |  2 +-
>  tests/i915/gem_exec_gttfill.c               |  4 +--
>  tests/i915/gem_exec_latency.c               |  2 +-
>  tests/i915/gem_exec_nop.c                   |  2 +-
>  tests/i915/gem_exec_parallel.c              |  4 +--
>  tests/i915/gem_exec_params.c                |  2 +-
>  tests/i915/gem_exec_reloc.c                 |  2 +-
>  tests/i915/gem_exec_schedule.c              |  2 +-
>  tests/i915/gem_exec_store.c                 |  2 +-
>  tests/i915/gem_exec_suspend.c               |  2 +-
>  tests/i915/gem_exec_whisper.c               |  6 ++--
>  tests/i915/gem_exercise_blt.c               |  2 +-
>  tests/i915/gem_fd_exhaustion.c              |  2 +-
>  tests/i915/gem_fence_thrash.c               |  2 +-
>  tests/i915/gem_fenced_exec_thrash.c         |  2 +-
>  tests/i915/gem_flink_basic.c                |  4 +--
>  tests/i915/gem_flink_race.c                 |  6 ++--
>  tests/i915/gem_gtt_cpu_tlb.c                |  2 +-
>  tests/i915/gem_gtt_hog.c                    |  2 +-
>  tests/i915/gem_gtt_speed.c                  |  2 +-
>  tests/i915/gem_huc_copy.c                   |  2 +-
>  tests/i915/gem_lmem_evict.c                 |  4 +--
>  tests/i915/gem_lmem_swapping.c              | 10 +++----
>  tests/i915/gem_madvise.c                    | 12 ++++----
>  tests/i915/gem_media_fill.c                 |  2 +-
>  tests/i915/gem_mmap.c                       |  2 +-
>  tests/i915/gem_mmap_gtt.c                   |  6 ++--
>  tests/i915/gem_mmap_offset.c                |  8 +++---
>  tests/i915/gem_mmap_wc.c                    |  2 +-
>  tests/i915/gem_partial_pwrite_pread.c       |  2 +-
>  tests/i915/gem_pipe_control_store_loop.c    |  2 +-
>  tests/i915/gem_ppgtt.c                      |  8 +++---
>  tests/i915/gem_pread.c                      |  2 +-
>  tests/i915/gem_pread_after_blit.c           |  2 +-
>  tests/i915/gem_pwrite.c                     |  2 +-
>  tests/i915/gem_pwrite_snooped.c             |  2 +-
>  tests/i915/gem_pxp.c                        |  2 +-
>  tests/i915/gem_read_read_speed.c            |  2 +-
>  tests/i915/gem_readwrite.c                  |  2 +-
>  tests/i915/gem_reg_read.c                   |  2 +-
>  tests/i915/gem_render_copy.c                |  2 +-
>  tests/i915/gem_render_copy_redux.c          |  2 +-
>  tests/i915/gem_reset_stats.c                | 32 ++++++++++-----------
>  tests/i915/gem_ringfill.c                   |  2 +-
>  tests/i915/gem_set_tiling_vs_blt.c          |  2 +-
>  tests/i915/gem_set_tiling_vs_gtt.c          |  2 +-
>  tests/i915/gem_set_tiling_vs_pwrite.c       |  2 +-
>  tests/i915/gem_shrink.c                     | 14 ++++-----
>  tests/i915/gem_softpin.c                    |  4 +--
>  tests/i915/gem_spin_batch.c                 |  2 +-
>  tests/i915/gem_streaming_writes.c           |  2 +-
>  tests/i915/gem_stress.c                     |  2 +-
>  tests/i915/gem_sync.c                       |  2 +-
>  tests/i915/gem_tiled_blits.c                |  2 +-
>  tests/i915/gem_tiled_fence_blits.c          |  2 +-
>  tests/i915/gem_tiled_partial_pwrite_pread.c |  2 +-
>  tests/i915/gem_tiled_pread_basic.c          |  2 +-
>  tests/i915/gem_tiled_pread_pwrite.c         |  2 +-
>  tests/i915/gem_tiled_swapping.c             |  2 +-
>  tests/i915/gem_tiled_wb.c                   |  2 +-
>  tests/i915/gem_tiled_wc.c                   |  2 +-
>  tests/i915/gem_tiling_max_stride.c          |  2 +-
>  tests/i915/gem_unfence_active_buffers.c     |  2 +-
>  tests/i915/gem_unref_active_buffers.c       |  2 +-
>  tests/i915/gem_userptr_blits.c              |  6 ++--
>  tests/i915/gem_vm_create.c                  |  4 +--
>  tests/i915/gem_wait.c                       |  2 +-
>  tests/i915/gem_watchdog.c                   |  2 +-
>  tests/i915/gem_workarounds.c                |  2 +-
>  tests/i915/gen7_exec_parse.c                |  4 +--
>  tests/i915/gen9_exec_parse.c                |  2 +-
>  tests/i915/i915_fb_tiling.c                 |  2 +-
>  tests/i915/i915_getparams_basic.c           |  2 +-
>  tests/i915/i915_hangman.c                   |  4 +--
>  tests/i915/i915_hwmon.c                     |  2 +-
>  tests/i915/i915_module_load.c               |  8 +++---
>  tests/i915/i915_pciid.c                     |  2 +-
>  tests/i915/i915_pm_backlight.c              |  2 +-
>  tests/i915/i915_pm_dc.c                     |  2 +-
>  tests/i915/i915_pm_freq_api.c               |  2 +-
>  tests/i915/i915_pm_freq_mult.c              |  2 +-
>  tests/i915/i915_pm_lpsp.c                   |  2 +-
>  tests/i915/i915_pm_rc6_residency.c          |  2 +-
>  tests/i915/i915_pm_rps.c                    |  2 +-
>  tests/i915/i915_pm_sseu.c                   |  2 +-
>  tests/i915/i915_power.c                     |  2 +-
>  tests/i915/i915_query.c                     |  2 +-
>  tests/i915/i915_suspend.c                   |  6 ++--
>  tests/i915/perf.c                           |  6 ++--
>  tests/i915/perf_pmu.c                       |  6 ++--
>  tests/i915/sysfs_defaults.c                 |  2 +-
>  tests/i915/sysfs_heartbeat_interval.c       |  2 +-
>  tests/i915/sysfs_preempt_timeout.c          |  2 +-
>  tests/i915/sysfs_timeslice_duration.c       |  2 +-

Split below into separate one.

>  tests/prime_busy.c                          |  2 +-
>  tests/prime_mmap.c                          |  2 +-
>  tests/prime_mmap_coherency.c                |  4 +--
>  tests/prime_mmap_kms.c                      |  2 +-
>  tests/prime_self_import.c                   | 26 ++++++++---------
>  tests/prime_vgem.c                          |  4 +--
>  tests/syncobj_basic.c                       |  2 +-
>  tests/syncobj_timeline.c                    |  2 +-
>  tests/syncobj_wait.c                        |  2 +-
>  tests/template.c                            |  2 +-
>  tests/vgem_basic.c                          |  6 ++--
>  tests/vgem_slow.c                           |  2 +-
>  148 files changed, 252 insertions(+), 252 deletions(-)
> 

One more nit, see below.

> diff --git a/tests/core_auth.c b/tests/core_auth.c
> index 257f12482..110163b00 100644
> --- a/tests/core_auth.c
> +++ b/tests/core_auth.c
> @@ -189,7 +189,7 @@ static void test_basic_auth(int master)
>  	igt_assert(drmGetMagic(slave, &magic) == 0);
>  	igt_assert_eq(magic, old_magic);
>  
> -	close(slave);
> +	drm_close_driver(slave);
>  }
>  
>  igt_main
> @@ -201,7 +201,7 @@ igt_main
>  
>  		igt_assert(check_auth(fd) == true);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_describe("Use 2 clients, check second is authenticated even when first dropped.");
> @@ -211,11 +211,11 @@ igt_main
>  
>  		igt_assert(check_auth(fd2) == true);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  
>  		igt_assert(check_auth(fd2) == true);
>  
> -		close(fd2);
> +		drm_close_driver(fd2);
>  	}
>  
>  	/* above tests require that no drm fd is open */
> @@ -224,7 +224,7 @@ igt_main
>  
>  		igt_fixture
>  			master = drm_open_driver_master(DRIVER_ANY);
> -	
> +

Please do not mix fixups into functional changes.
Rest looks good.

Regards,
Kamil

>  		igt_describe("Test magic numbers for master and slave.");
>  		igt_subtest("basic-auth")
>  			test_basic_auth(master);
> diff --git a/tests/core_getclient.c b/tests/core_getclient.c
> index 40a1c194d..9e53c46f9 100644
> --- a/tests/core_getclient.c
> +++ b/tests/core_getclient.c
> @@ -58,5 +58,5 @@ igt_simple_main
>  	ret = ioctl(fd, DRM_IOCTL_GET_CLIENT, &client);
>  	igt_assert(ret == -1 && errno == EINVAL);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/core_getstats.c b/tests/core_getstats.c
> index fde27cdc6..c68b6b559 100644
> --- a/tests/core_getstats.c
> +++ b/tests/core_getstats.c
> @@ -52,5 +52,5 @@ igt_simple_main
>  	ret = ioctl(fd, DRM_IOCTL_GET_STATS, &stats);
>  	igt_assert(ret == 0);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/core_getversion.c b/tests/core_getversion.c
> index f6953b313..0c2949f18 100644
> --- a/tests/core_getversion.c
> +++ b/tests/core_getversion.c
> @@ -46,5 +46,5 @@ igt_simple_main
>  		igt_assert_lte(1, v->version_major);
>  
>  	drmFree(v);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/core_setmaster.c b/tests/core_setmaster.c
> index 470f9441d..30348dd62 100644
> --- a/tests/core_setmaster.c
> +++ b/tests/core_setmaster.c
> @@ -85,7 +85,7 @@ static void check_drop_set(void)
>  	igt_assert_eq(drmDropMaster(master), 0);
>  	igt_assert_eq(drmSetMaster(master), 0);
>  
> -	close(master);
> +	drm_close_driver(master);
>  }
>  
>  static unsigned tweak_perm(uint8_t *saved_perm, unsigned max_perm, bool save)
> @@ -206,10 +206,10 @@ igt_main
>  			igt_assert_eq(drmSetMaster(master), -1);
>  			igt_assert_eq(errno, EACCES);
>  
> -			close(master);
> +			drm_close_driver(master);
>  		}
>  		igt_waitchildren();
>  
> -		close(master);
> +		drm_close_driver(master);
>  	}
>  }
> diff --git a/tests/core_setmaster_vs_auth.c b/tests/core_setmaster_vs_auth.c
> index 0b4b8613c..da4662e0a 100644
> --- a/tests/core_setmaster_vs_auth.c
> +++ b/tests/core_setmaster_vs_auth.c
> @@ -66,7 +66,7 @@ igt_simple_main
>  	igt_assert_neq(drmAuthMagic(master2, magic), 0);
>  	igt_assert_eq(errno, EINVAL);
>  
> -	close(client);
> -	close(master2);
> -	close(master1);
> +	drm_close_driver(client);
> +	drm_close_driver(master2);
> +	drm_close_driver(master1);
>  }
> diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
> index 8c775158f..b45646d70 100644
> --- a/tests/debugfs_test.c
> +++ b/tests/debugfs_test.c
> @@ -213,6 +213,6 @@ igt_main
>  	igt_fixture {
>  		close(sysfs);
>  		close(debugfs);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/dumb_buffer.c b/tests/dumb_buffer.c
> index ded6b809c..8aa320a59 100644
> --- a/tests/dumb_buffer.c
> +++ b/tests/dumb_buffer.c
> @@ -394,6 +394,6 @@ igt_main
>  		always_clear(fd, 30);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/eviction_common.c b/tests/eviction_common.c
> index 95af106c1..5948fbc64 100644
> --- a/tests/eviction_common.c
> +++ b/tests/eviction_common.c
> @@ -300,7 +300,7 @@ static int forking_evictions(int fd, struct igt_eviction_test_ops *ops,
>  
>  		/* drmfd closing will take care of additional bo refs */
>  		if (flags & FORKING_EVICTIONS_DUP_DRMFD)
> -			close(realfd);
> +			drm_close_driver(realfd);
>  	}
>  
>  	igt_waitchildren();
> diff --git a/tests/fbdev.c b/tests/fbdev.c
> index 794882a6a..154e78b0f 100644
> --- a/tests/fbdev.c
> +++ b/tests/fbdev.c
> @@ -443,6 +443,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/api_intel_allocator.c b/tests/i915/api_intel_allocator.c
> index 1263e0fbd..9ce0fff9f 100644
> --- a/tests/i915/api_intel_allocator.c
> +++ b/tests/i915/api_intel_allocator.c
> @@ -502,7 +502,7 @@ static void reopen(int fd)
>  
>  	__reopen_allocs(fd, fd2, true);
>  
> -	close(fd2);
> +	drm_close_driver(fd2);
>  }
>  
>  #define REOPEN_TIMEOUT 3
> @@ -528,7 +528,7 @@ static void reopen_fork(int fd)
>  	/* Check references at the end */
>  	__reopen_allocs(fd, fd2, true);
>  
> -	close(fd2);
> +	drm_close_driver(fd2);
>  
>  	intel_allocator_multiprocess_stop();
>  }
> @@ -847,5 +847,5 @@ igt_main
>  		gem_pool(fd);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/api_intel_bb.c b/tests/i915/api_intel_bb.c
> index 46633b038..da74e1ed3 100644
> --- a/tests/i915/api_intel_bb.c
> +++ b/tests/i915/api_intel_bb.c
> @@ -1701,6 +1701,6 @@ igt_main_args("dpibc:", NULL, help_str, opt_handler, NULL)
>  
>  	igt_fixture {
>  		buf_ops_destroy(bops);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/drm_fdinfo.c b/tests/i915/drm_fdinfo.c
> index a8b2997fa..b8d1e6c4c 100644
> --- a/tests/i915/drm_fdinfo.c
> +++ b/tests/i915/drm_fdinfo.c
> @@ -866,6 +866,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(i915, ctx);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_bad_reloc.c b/tests/i915/gem_bad_reloc.c
> index 478e78a66..fc1c6a574 100644
> --- a/tests/i915/gem_bad_reloc.c
> +++ b/tests/i915/gem_bad_reloc.c
> @@ -212,5 +212,5 @@ igt_main
>  		negative_reloc_blt(fd);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_barrier_race.c b/tests/i915/gem_barrier_race.c
> index 46273ab55..59775be4e 100644
> --- a/tests/i915/gem_barrier_race.c
> +++ b/tests/i915/gem_barrier_race.c
> @@ -108,7 +108,7 @@ static void intel_context_first_pin_last_unpin_loop(int fd, uint64_t engine, int
>  
>  	} while (!READ_ONCE(*done));
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_remote_request(int fd, uint64_t engine, unsigned int timeout)
> diff --git a/tests/i915/gem_basic.c b/tests/i915/gem_basic.c
> index 4e063febd..edcc6d443 100644
> --- a/tests/i915/gem_basic.c
> +++ b/tests/i915/gem_basic.c
> @@ -108,7 +108,7 @@ igt_main
>  			gpu_fd = __drm_open_driver_another(child, DRIVER_INTEL);
>  			igt_assert_f(gpu_fd > 0, "cannot open gpu-%d, errno=%d\n", child, errno);
>  			test_create_close(gpu_fd);
> -			close(gpu_fd);
> +			drm_close_driver(gpu_fd);
>  		}
>  
>  		igt_waitchildren();
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index 5fbb384db..5ac0bfdc3 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -893,6 +893,6 @@ igt_main
>  
>  	igt_fixture {
>  		put_ahnd(device.ahnd);
> -		close(device.fd);
> +		drm_close_driver(device.fd);
>  	}
>  }
> diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c
> index 08a500a9e..70ba1999f 100644
> --- a/tests/i915/gem_busy.c
> +++ b/tests/i915/gem_busy.c
> @@ -562,6 +562,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_caching.c b/tests/i915/gem_caching.c
> index 6e944f0ac..16c594aa6 100644
> --- a/tests/i915/gem_caching.c
> +++ b/tests/i915/gem_caching.c
> @@ -340,6 +340,6 @@ igt_main
>  		intel_buf_destroy(scratch_buf);
>  		intel_buf_destroy(staging_buf);
>  		buf_ops_destroy(data.bops);
> -		close(data.fd);
> +		drm_close_driver(data.fd);
>  	}
>  }
> diff --git a/tests/i915/gem_ccs.c b/tests/i915/gem_ccs.c
> index d25e00fc8..4a1ae094d 100644
> --- a/tests/i915/gem_ccs.c
> +++ b/tests/i915/gem_ccs.c
> @@ -731,6 +731,6 @@ igt_main_args("bf:pst:W:H:", NULL, help_str, opt_handler, NULL)
>  
>  	igt_fixture {
>  		igt_disallow_hang(i915, hang);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_close_race.c b/tests/i915/gem_close_race.c
> index dc88eca47..25249b2a5 100644
> --- a/tests/i915/gem_close_race.c
> +++ b/tests/i915/gem_close_race.c
> @@ -248,7 +248,7 @@ static void thread(int fd, struct drm_gem_open name,
>  			n++;
>  		} while (1);
>  
> -		close(crashme.fd);
> +		drm_close_driver(crashme.fd);
>  	}
>  
>  	timer_delete(timer);
> @@ -274,7 +274,7 @@ static void multigpu_threads(int timeout, unsigned int flags, int gpu_count)
>  
>  		igt_waitchildren();
>  		gem_quiescent_gpu(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_waitchildren();
> @@ -293,7 +293,7 @@ static void threads(int timeout, unsigned int flags)
>  	igt_waitchildren();
>  
>  	gem_quiescent_gpu(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  igt_main
> @@ -317,7 +317,7 @@ igt_main
>  		gpu_count = igt_device_filter_count();
>  
>  		igt_fork_hang_detector(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_describe("Basic workload submission.");
> @@ -329,7 +329,7 @@ igt_main
>  		igt_waitchildren();
>  
>  		gem_quiescent_gpu(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_describe("Basic workload submission on multi-GPU machine.");
> @@ -342,7 +342,7 @@ igt_main
>  			igt_assert(fd > 0);
>  			process(fd, child);
>  			gem_quiescent_gpu(fd);
> -			close(fd);
> +			drm_close_driver(fd);
>  		}
>  
>  		igt_waitchildren();
> @@ -369,7 +369,7 @@ igt_main
>  		igt_waitchildren();
>  
>  		gem_quiescent_gpu(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_describe("Share buffer handle across different drm fd's and trying to race"
> diff --git a/tests/i915/gem_cs_tlb.c b/tests/i915/gem_cs_tlb.c
> index 2117b41e4..ff96e63ed 100644
> --- a/tests/i915/gem_cs_tlb.c
> +++ b/tests/i915/gem_cs_tlb.c
> @@ -162,5 +162,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_ctx_bad_destroy.c b/tests/i915/gem_ctx_bad_destroy.c
> index 50bb9aa07..5dc6d040d 100644
> --- a/tests/i915/gem_ctx_bad_destroy.c
> +++ b/tests/i915/gem_ctx_bad_destroy.c
> @@ -80,5 +80,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
> index a59abd080..a2d4f56ab 100644
> --- a/tests/i915/gem_ctx_create.c
> +++ b/tests/i915/gem_ctx_create.c
> @@ -117,7 +117,7 @@ static void files(int core, const intel_ctx_cfg_t *cfg,
>  			gem_execbuf(fd, &execbuf);
>  
>  			intel_ctx_destroy(fd, ctx);
> -			close(fd);
> +			drm_close_driver(fd);
>  			count++;
>  
>  			clock_gettime(CLOCK_MONOTONIC, &end);
> @@ -667,6 +667,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_detector();
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_ctx_exec.c b/tests/i915/gem_ctx_exec.c
> index 40a373ab6..b79be4946 100644
> --- a/tests/i915/gem_ctx_exec.c
> +++ b/tests/i915/gem_ctx_exec.c
> @@ -344,7 +344,7 @@ static void nohangcheck_hostile(int i915)
>  	put_ahnd(ahnd);
>  
>  	close(dir);
> -	close(i915);
> +	drm_close_driver(i915);
>  }
>  
>  static void close_race(int i915)
> diff --git a/tests/i915/gem_ctx_param.c b/tests/i915/gem_ctx_param.c
> index 2526b09cb..ac78b33a6 100644
> --- a/tests/i915/gem_ctx_param.c
> +++ b/tests/i915/gem_ctx_param.c
> @@ -472,5 +472,5 @@ igt_main
>  		test_get_invalid_param(fd, I915_CONTEXT_PARAM_ENGINES);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_ctx_persistence.c b/tests/i915/gem_ctx_persistence.c
> index c0197cea7..e04a34c2a 100644
> --- a/tests/i915/gem_ctx_persistence.c
> +++ b/tests/i915/gem_ctx_persistence.c
> @@ -604,7 +604,7 @@ static void test_nonpersistent_file(int i915)
>  	gem_context_set_persistence(i915, 0, false);
>  	spin = igt_spin_new(i915, .ahnd = ahnd, .flags = IGT_SPIN_FENCE_OUT);
>  
> -	close(i915);
> +	drm_close_driver(i915);
>  	flush_delayed_fput(debugfs);
>  
>  	igt_assert_eq(wait_for_status(spin->out_fence, reset_timeout_ms), -EIO);
> @@ -1087,7 +1087,7 @@ static void __smoker(int i915, const intel_ctx_cfg_t *cfg,
>  
>  	intel_ctx_destroy(fd, ctx);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  	flush_delayed_fput(i915);
>  
>  	igt_spin_end(spin);
> @@ -1383,6 +1383,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
> index 77a210d03..0e121647e 100644
> --- a/tests/i915/gem_ctx_shared.c
> +++ b/tests/i915/gem_ctx_shared.c
> @@ -246,7 +246,7 @@ static void exhaust_shared_gtt(int i915, unsigned int flags)
>  		igt_info("Created %lu shared contexts, before %d (%s)\n",
>  			 count, err, strerror(-err));
>  	}
> -	close(i915);
> +	drm_close_driver(i915);
>  	igt_waitchildren();
>  }
>  
> diff --git a/tests/i915/gem_ctx_sseu.c b/tests/i915/gem_ctx_sseu.c
> index 7685511f0..dcc38ae17 100644
> --- a/tests/i915/gem_ctx_sseu.c
> +++ b/tests/i915/gem_ctx_sseu.c
> @@ -545,6 +545,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_ctx_switch.c b/tests/i915/gem_ctx_switch.c
> index 4e46b7634..f675570ec 100644
> --- a/tests/i915/gem_ctx_switch.c
> +++ b/tests/i915/gem_ctx_switch.c
> @@ -440,6 +440,6 @@ igt_main
>  		igt_stop_hang_detector();
>  		gem_close(fd, heavy);
>  		gem_close(fd, light);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
> index 18eec0413..159b849db 100644
> --- a/tests/i915/gem_eio.c
> +++ b/tests/i915/gem_eio.c
> @@ -461,7 +461,7 @@ static void test_banned(int fd)
>  {
>  	fd = reopen_device(fd);
>  	__test_banned(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  #define TEST_WEDGE (1)
> @@ -495,7 +495,7 @@ static void test_wait(int fd, unsigned int flags, unsigned int wait)
>  	igt_require(i915_reset_control(fd, true));
>  
>  	trigger_reset(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_suspend(int fd, int state)
> @@ -513,7 +513,7 @@ static void test_suspend(int fd, int state)
>  
>  	igt_require(i915_reset_control(fd, true));
>  	trigger_reset(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_inflight(int fd, unsigned int wait)
> @@ -577,7 +577,7 @@ static void test_inflight(int fd, unsigned int wait)
>  		trigger_reset(fd);
>  
>  		gem_close(fd, obj[1].handle);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
>  
> @@ -638,7 +638,7 @@ static void test_inflight_suspend(int fd)
>  
>  	igt_assert(i915_reset_control(fd, true));
>  	trigger_reset(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static const intel_ctx_t *context_create_safe(int i915)
> @@ -728,7 +728,7 @@ static void test_inflight_contexts(int fd, unsigned int wait)
>  		for (unsigned int n = 0; n < ARRAY_SIZE(ctx); n++)
>  			intel_ctx_destroy(fd, ctx[n]);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
>  
> @@ -784,7 +784,7 @@ static void test_inflight_external(int fd)
>  	put_ahnd(ahnd);
>  	igt_assert(i915_reset_control(fd, true));
>  	trigger_reset(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_inflight_internal(int fd, unsigned int wait)
> @@ -834,7 +834,7 @@ static void test_inflight_internal(int fd, unsigned int wait)
>  
>  	igt_assert(i915_reset_control(fd, true));
>  	trigger_reset(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void reset_stress(int fd, uint64_t ahnd, const intel_ctx_t *ctx0,
> diff --git a/tests/i915/gem_evict_alignment.c b/tests/i915/gem_evict_alignment.c
> index 0b560ab03..7a40b0128 100644
> --- a/tests/i915/gem_evict_alignment.c
> +++ b/tests/i915/gem_evict_alignment.c
> @@ -265,6 +265,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_helper();
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_evict_everything.c b/tests/i915/gem_evict_everything.c
> index 120f89072..d5d464889 100644
> --- a/tests/i915/gem_evict_everything.c
> +++ b/tests/i915/gem_evict_everything.c
> @@ -290,6 +290,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_helper();
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
> index ddddad533..947d17cb8 100644
> --- a/tests/i915/gem_exec_alignment.c
> +++ b/tests/i915/gem_exec_alignment.c
> @@ -465,7 +465,7 @@ static void forked(int i915, int timeout)
>  	igt_waitchildren_timeout(3 * timeout, NULL);
>  
>  	free(obj);
> -	close(i915);
> +	drm_close_driver(i915);
>  }
>  
>  static void single(int fd)
> diff --git a/tests/i915/gem_exec_async.c b/tests/i915/gem_exec_async.c
> index 173bc4648..6895b9c6c 100644
> --- a/tests/i915/gem_exec_async.c
> +++ b/tests/i915/gem_exec_async.c
> @@ -213,6 +213,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_await.c b/tests/i915/gem_exec_await.c
> index 4935cf395..0fd8cbf67 100644
> --- a/tests/i915/gem_exec_await.c
> +++ b/tests/i915/gem_exec_await.c
> @@ -287,6 +287,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(device, ctx);
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
> index ca4fc7b96..c018d4089 100644
> --- a/tests/i915/gem_exec_basic.c
> +++ b/tests/i915/gem_exec_basic.c
> @@ -98,6 +98,6 @@ igt_main
>  		igt_collection_destroy(set);
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_big.c b/tests/i915/gem_exec_big.c
> index 4619bda81..5a8df7264 100644
> --- a/tests/i915/gem_exec_big.c
> +++ b/tests/i915/gem_exec_big.c
> @@ -326,5 +326,5 @@ igt_main
>  		exhaustive(i915);
>  
>  	igt_fixture
> -		close(i915);
> +		drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_exec_capture.c b/tests/i915/gem_exec_capture.c
> index 5d3e0905d..b8d390a63 100644
> --- a/tests/i915/gem_exec_capture.c
> +++ b/tests/i915/gem_exec_capture.c
> @@ -1013,6 +1013,6 @@ igt_main
>  		close(dir);
>  		igt_disallow_hang(fd, hang);
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_create.c b/tests/i915/gem_exec_create.c
> index 449aa5b2e..8ca564b09 100644
> --- a/tests/i915/gem_exec_create.c
> +++ b/tests/i915/gem_exec_create.c
> @@ -225,6 +225,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_detector();
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_fair.c b/tests/i915/gem_exec_fair.c
> index 67af4739d..3ec5ed42a 100644
> --- a/tests/i915/gem_exec_fair.c
> +++ b/tests/i915/gem_exec_fair.c
> @@ -1348,6 +1348,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_detector();
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
> index 70f86da5c..eebeead95 100644
> --- a/tests/i915/gem_exec_fence.c
> +++ b/tests/i915/gem_exec_fence.c
> @@ -1768,7 +1768,7 @@ static void test_invalid_timeline_fence_array(int fd)
>  	igt_assert_eq(__gem_execbuf(fd, &execbuf), -EFAULT);
>  
>  	munmap(ptr, 4096);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static const char *test_syncobj_timeline_unused_fence_desc =
> @@ -3351,6 +3351,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_flush.c b/tests/i915/gem_exec_flush.c
> index 42ddbc529..6a156c5c5 100644
> --- a/tests/i915/gem_exec_flush.c
> +++ b/tests/i915/gem_exec_flush.c
> @@ -711,6 +711,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_stop_hang_detector();
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_gttfill.c b/tests/i915/gem_exec_gttfill.c
> index d6c8f2192..320b47001 100644
> --- a/tests/i915/gem_exec_gttfill.c
> +++ b/tests/i915/gem_exec_gttfill.c
> @@ -279,7 +279,7 @@ igt_main
>  			// release resources
>  			igt_stop_hang_detector();
>  			intel_ctx_destroy(g_fd, ctx);
> -			close(g_fd);
> +			drm_close_driver(g_fd);
>  		}
>  
>  		igt_waitchildren();
> @@ -287,6 +287,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_allocator_multiprocess_stop();
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c
> index 4838a7082..d344db05e 100644
> --- a/tests/i915/gem_exec_latency.c
> +++ b/tests/i915/gem_exec_latency.c
> @@ -971,6 +971,6 @@ igt_main
>  	igt_fixture {
>  		intel_register_access_fini(&mmio_data);
>  		intel_ctx_destroy(device, ctx);
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_nop.c b/tests/i915/gem_exec_nop.c
> index f1ec23e8c..079731704 100644
> --- a/tests/i915/gem_exec_nop.c
> +++ b/tests/i915/gem_exec_nop.c
> @@ -1083,6 +1083,6 @@ igt_main
>  		igt_stop_hang_detector();
>  		gem_close(device, handle);
>  		intel_ctx_destroy(device, ctx);
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_parallel.c b/tests/i915/gem_exec_parallel.c
> index 97257ea49..91ab4cd75 100644
> --- a/tests/i915/gem_exec_parallel.c
> +++ b/tests/i915/gem_exec_parallel.c
> @@ -181,7 +181,7 @@ static void *thread(void *data)
>  		intel_ctx_destroy(fd, tmp_ctx);
>  	gem_close(fd, obj[1].handle);
>  	if (t->flags & FDS)
> -		close(fd);
> +		drm_close_driver(fd);
>  
>  	t->used = used;
>  	return NULL;
> @@ -364,6 +364,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_params.c b/tests/i915/gem_exec_params.c
> index d0805d330..80024fb3d 100644
> --- a/tests/i915/gem_exec_params.c
> +++ b/tests/i915/gem_exec_params.c
> @@ -646,6 +646,6 @@ igt_main
>  	igt_fixture {
>  		gem_close(fd, handle);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
> index 3ce89ca64..bcaffd1d9 100644
> --- a/tests/i915/gem_exec_reloc.c
> +++ b/tests/i915/gem_exec_reloc.c
> @@ -1178,5 +1178,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
> index ab1dd7749..a12db4df2 100644
> --- a/tests/i915/gem_exec_schedule.c
> +++ b/tests/i915/gem_exec_schedule.c
> @@ -3369,6 +3369,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_store.c b/tests/i915/gem_exec_store.c
> index 7d23bcd5b..6bf392bd2 100644
> --- a/tests/i915/gem_exec_store.c
> +++ b/tests/i915/gem_exec_store.c
> @@ -455,6 +455,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c
> index 8d56093fa..2295ed04c 100644
> --- a/tests/i915/gem_exec_suspend.c
> +++ b/tests/i915/gem_exec_suspend.c
> @@ -411,6 +411,6 @@ igt_main
>  		igt_collection_destroy(set);
>  		igt_disallow_hang(fd, hang);
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exec_whisper.c b/tests/i915/gem_exec_whisper.c
> index 80e4b3916..41d9b9d5b 100644
> --- a/tests/i915/gem_exec_whisper.c
> +++ b/tests/i915/gem_exec_whisper.c
> @@ -178,7 +178,7 @@ static void fini_hang(struct hang *h)
>  	put_offset(h->ahnd, h->obj.handle);
>  	put_ahnd(h->ahnd);
>  	intel_ctx_destroy(h->fd, h->ctx);
> -	close(h->fd);
> +	drm_close_driver(h->fd);
>  }
>  
>  static void ctx_set_random_priority(int fd, uint32_t ctx)
> @@ -550,7 +550,7 @@ static void whisper(int fd, const intel_ctx_t *ctx,
>  			gem_close(fd, batches[n].handle);
>  		if (flags & FDS) {
>  			for (n = 0; n < 64; n++)
> -				close(fds[n]);
> +				drm_close_driver(fds[n]);
>  		}
>  	}
>  
> @@ -660,6 +660,6 @@ igt_main
>  	igt_fixture {
>  		intel_allocator_multiprocess_stop();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_exercise_blt.c b/tests/i915/gem_exercise_blt.c
> index fb11fb925..365b9b005 100644
> --- a/tests/i915/gem_exercise_blt.c
> +++ b/tests/i915/gem_exercise_blt.c
> @@ -381,6 +381,6 @@ igt_main_args("b:pst:W:H:", NULL, help_str, opt_handler, NULL)
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_fd_exhaustion.c b/tests/i915/gem_fd_exhaustion.c
> index a6463685e..717422951 100644
> --- a/tests/i915/gem_fd_exhaustion.c
> +++ b/tests/i915/gem_fd_exhaustion.c
> @@ -69,5 +69,5 @@ igt_simple_main
>  
>  	igt_waitchildren();
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_fence_thrash.c b/tests/i915/gem_fence_thrash.c
> index 89a5ae29d..5ff52a5c0 100644
> --- a/tests/i915/gem_fence_thrash.c
> +++ b/tests/i915/gem_fence_thrash.c
> @@ -225,7 +225,7 @@ static int run_test(int threads_per_fence, void *f, int tiling,
>  		igt_assert(func(&t) == (void *)0);
>  	}
>  
> -	close(t.fd);
> +	drm_close_driver(t.fd);
>  
>  	return 0;
>  }
> diff --git a/tests/i915/gem_fenced_exec_thrash.c b/tests/i915/gem_fenced_exec_thrash.c
> index a9597d801..03ba200a7 100644
> --- a/tests/i915/gem_fenced_exec_thrash.c
> +++ b/tests/i915/gem_fenced_exec_thrash.c
> @@ -199,5 +199,5 @@ igt_main
>  		run_test(fd, num_fences + 1, intel_gen(devid) >= 4 ? 0 : ENOBUFS, 0);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_flink_basic.c b/tests/i915/gem_flink_basic.c
> index e9b915082..9a014eb07 100644
> --- a/tests/i915/gem_flink_basic.c
> +++ b/tests/i915/gem_flink_basic.c
> @@ -147,7 +147,7 @@ test_flink_lifetime(int fd)
>  	igt_assert_eq(ret, 0);
>  	igt_assert(open_struct.handle != 0);
>  
> -	close(fd2);
> +	drm_close_driver(fd2);
>  	fd2 = drm_open_driver(DRIVER_INTEL);
>  
>  	/* Flink name remains valid due to the second reference */
> @@ -156,7 +156,7 @@ test_flink_lifetime(int fd)
>  	igt_assert_eq(ret, 0);
>  	igt_assert(open_struct.handle != 0);
>  
> -	close(fd2);
> +	drm_close_driver(fd2);
>  }
>  
>  igt_main
> diff --git a/tests/i915/gem_flink_race.c b/tests/i915/gem_flink_race.c
> index 70e133d70..c167e5789 100644
> --- a/tests/i915/gem_flink_race.c
> +++ b/tests/i915/gem_flink_race.c
> @@ -127,7 +127,7 @@ static void test_flink_name(int timeout)
>  		 igt_stats_get_max(&stats));
>  	igt_stats_fini(&stats);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void *thread_fn_flink_close(void *p)
> @@ -188,13 +188,13 @@ static void test_flink_close(void)
>  		igt_assert(status == 0);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	obj_count = igt_get_stable_obj_count(fake) - obj_count;
>  
>  	igt_info("leaked %i objects\n", obj_count);
>  
> -	close(fake);
> +	drm_close_driver(fake);
>  
>  	igt_assert_eq(obj_count, 0);
>  }
> diff --git a/tests/i915/gem_gtt_cpu_tlb.c b/tests/i915/gem_gtt_cpu_tlb.c
> index 8000e58cc..5f0a19b8b 100644
> --- a/tests/i915/gem_gtt_cpu_tlb.c
> +++ b/tests/i915/gem_gtt_cpu_tlb.c
> @@ -105,5 +105,5 @@ igt_simple_main
>  	for (i = 0; i < OBJ_SIZE/4; i++)
>  		igt_assert(ptr[i] == i);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_gtt_hog.c b/tests/i915/gem_gtt_hog.c
> index 15a6139ea..c365f1196 100644
> --- a/tests/i915/gem_gtt_hog.c
> +++ b/tests/i915/gem_gtt_hog.c
> @@ -164,7 +164,7 @@ igt_simple_main
>  	int fd = drm_open_driver(DRIVER_INTEL);
>  	igt_require_gem(fd);
>  	gem_require_mappable_ggtt(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	data.fd = drm_open_driver(DRIVER_INTEL);
>  	data.devid = intel_get_drm_devid(data.fd);
> diff --git a/tests/i915/gem_gtt_speed.c b/tests/i915/gem_gtt_speed.c
> index 272091fdb..d142b1cf7 100644
> --- a/tests/i915/gem_gtt_speed.c
> +++ b/tests/i915/gem_gtt_speed.c
> @@ -515,5 +515,5 @@ igt_simple_main_args("s:", NULL, help_str, opt_handler, NULL)
>  	}
>  
>  	gem_close(fd, handle);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_huc_copy.c b/tests/i915/gem_huc_copy.c
> index ea32b705a..9c31eeaea 100644
> --- a/tests/i915/gem_huc_copy.c
> +++ b/tests/i915/gem_huc_copy.c
> @@ -139,6 +139,6 @@ igt_main
>  
>  	igt_fixture {
>  		put_ahnd(ahnd);
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/i915/gem_lmem_evict.c b/tests/i915/gem_lmem_evict.c
> index d2611bd56..7072b9565 100644
> --- a/tests/i915/gem_lmem_evict.c
> +++ b/tests/i915/gem_lmem_evict.c
> @@ -93,7 +93,7 @@ igt_main
>  			igt_require_fd(i915);
>  			igt_require_gem(i915);
>  			igt_require(gem_has_lmem(i915));
> -			close(i915);
> +			drm_close_driver(i915);
>  		}
>  
>  		igt_i915_driver_unload();
> @@ -132,7 +132,7 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  		igt_i915_driver_unload();
>  	}
>  }
> diff --git a/tests/i915/gem_lmem_swapping.c b/tests/i915/gem_lmem_swapping.c
> index 4177286b0..0bd71babe 100644
> --- a/tests/i915/gem_lmem_swapping.c
> +++ b/tests/i915/gem_lmem_swapping.c
> @@ -551,7 +551,7 @@ static void test_evict(int i915,
>  
>  		igt_waitchildren();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  		intel_allocator_multiprocess_stop();
>  	} else {
>  		__do_evict(i915, ctx, &region->region, &params, params.seed);
> @@ -623,7 +623,7 @@ static void test_smem_oom(int i915,
>  			   params.seed + child + 1);
>  
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	/* smem memory hog process, respawn till the lmem process completes */
> @@ -644,7 +644,7 @@ static void test_smem_oom(int i915,
>  						break;
>  					gem_leak(fd, alloc);
>  				}
> -				close(fd);
> +				drm_close_driver(fd);
>  			}
>  			/*
>  			 * Wait for grand-child processes to finish or be
> @@ -736,7 +736,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  			igt_require_fd(i915);
>  			igt_require_gem(i915);
>  			igt_require(gem_has_lmem(i915));
> -			close(i915);
> +			drm_close_driver(i915);
>  		}
>  
>  		igt_i915_driver_unload();
> @@ -781,7 +781,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  	igt_fixture {
>  		intel_ctx_destroy(i915, ctx);
>  		free(regions);
> -		close(i915);
> +		drm_close_driver(i915);
>  		igt_i915_driver_unload();
>  	}
>  
> diff --git a/tests/i915/gem_madvise.c b/tests/i915/gem_madvise.c
> index 2502d84c7..c141d208d 100644
> --- a/tests/i915/gem_madvise.c
> +++ b/tests/i915/gem_madvise.c
> @@ -77,7 +77,7 @@ dontneed_before_mmap(void)
>  					PROT_READ | PROT_WRITE,
>  					t->type);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  		if (!ptr)
>  			continue;
>  
> @@ -99,7 +99,7 @@ dontneed_before_mmap(void)
>  		fd = drm_open_driver(DRIVER_INTEL);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void
> @@ -123,7 +123,7 @@ dontneed_after_mmap(void)
>  					t->type);
>  
>  		gem_madvise(fd, handle, I915_MADV_DONTNEED);
> -		close(fd);
> +		drm_close_driver(fd);
>  		if (!ptr)
>  			continue;
>  
> @@ -145,7 +145,7 @@ dontneed_after_mmap(void)
>  		fd = drm_open_driver(DRIVER_INTEL);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void
> @@ -161,7 +161,7 @@ dontneed_before_pwrite(void)
>  
>  	igt_assert_eq(__gem_write(fd, handle, 0, &bbe, sizeof(bbe)), -EFAULT);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void
> @@ -185,7 +185,7 @@ dontneed_before_exec(void)
>  	execbuf.batch_len = sizeof(buf);
>  	igt_assert_eq(__gem_execbuf(fd, &execbuf), -EFAULT);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  igt_main
> diff --git a/tests/i915/gem_media_fill.c b/tests/i915/gem_media_fill.c
> index e418047c2..127d7e3a6 100644
> --- a/tests/i915/gem_media_fill.c
> +++ b/tests/i915/gem_media_fill.c
> @@ -173,6 +173,6 @@ igt_main
>  	igt_fixture {
>  		igt_collection_destroy(set);
>  		igt_stop_hang_detector();
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/gem_mmap.c b/tests/i915/gem_mmap.c
> index 61f862a8e..053c9ed4c 100644
> --- a/tests/i915/gem_mmap.c
> +++ b/tests/i915/gem_mmap.c
> @@ -315,5 +315,5 @@ igt_main
>  		test_huge_bo(2);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index 0b3a6e5b7..dae6d66b3 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -381,13 +381,13 @@ test_isolation(int i915)
>  	igt_info("B: {fd:%d, handle:%d, offset:%"PRIx64"}\n",
>  		 B, b, offset_b);
>  
> -	close(B);
> +	drm_close_driver(B);
>  
>  	ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
>  	igt_assert(ptr != MAP_FAILED);
>  	munmap(ptr, 4096);
>  
> -	close(A);
> +	drm_close_driver(A);
>  
>  	ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
>  	igt_assert(ptr == MAP_FAILED);
> @@ -1491,5 +1491,5 @@ igt_main
>  
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_mmap_offset.c b/tests/i915/gem_mmap_offset.c
> index e7659e301..07d68594e 100644
> --- a/tests/i915/gem_mmap_offset.c
> +++ b/tests/i915/gem_mmap_offset.c
> @@ -346,13 +346,13 @@ static void isolation(int i915)
>  				igt_assert_eq(errno, EACCES);
>  			}
>  
> -			close(B);
> +			drm_close_driver(B);
>  
>  			ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
>  			igt_assert(ptr != MAP_FAILED);
>  			munmap(ptr, 4096);
>  
> -			close(A);
> +			drm_close_driver(A);
>  
>  			ptr = mmap(0, 4096, PROT_READ, MAP_SHARED, A, offset_a);
>  			igt_assert(ptr == MAP_FAILED);
> @@ -647,7 +647,7 @@ static void open_flood(int i915, int timeout)
>  			mmap_offset_ioctl(i915, &arg);
>  		}
>  
> -		close(tmp);
> +		drm_close_driver(tmp);
>  		count++;
>  	}
>  
> @@ -925,6 +925,6 @@ igt_main
>  		blt_coherency(i915);
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_mmap_wc.c b/tests/i915/gem_mmap_wc.c
> index 6dc7bae49..9fc26593e 100644
> --- a/tests/i915/gem_mmap_wc.c
> +++ b/tests/i915/gem_mmap_wc.c
> @@ -620,5 +620,5 @@ igt_main
>  		test_set_cache_level(fd);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_partial_pwrite_pread.c b/tests/i915/gem_partial_pwrite_pread.c
> index 474149d48..affce4ee6 100644
> --- a/tests/i915/gem_partial_pwrite_pread.c
> +++ b/tests/i915/gem_partial_pwrite_pread.c
> @@ -326,6 +326,6 @@ igt_main
>  		intel_buf_destroy(scratch_buf);
>  		intel_buf_destroy(staging_buf);
>  		buf_ops_destroy(data.bops);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/gem_pipe_control_store_loop.c b/tests/i915/gem_pipe_control_store_loop.c
> index 59959a374..8e9af5088 100644
> --- a/tests/i915/gem_pipe_control_store_loop.c
> +++ b/tests/i915/gem_pipe_control_store_loop.c
> @@ -183,6 +183,6 @@ igt_main
>  
>  	igt_fixture {
>  		buf_ops_destroy(bops);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
> index c3102857a..09b4c6acc 100644
> --- a/tests/i915/gem_ppgtt.c
> +++ b/tests/i915/gem_ppgtt.c
> @@ -251,8 +251,8 @@ static void flink_and_close(void)
>  	igt_assert_eq(offset, offset_new);
>  
>  	gem_close(fd, bo);
> -	close(fd);
> -	close(fd2);
> +	drm_close_driver(fd);
> +	drm_close_driver(fd2);
>  }
>  
>  #define PAGE_SIZE 4096
> @@ -385,7 +385,7 @@ static bool has_contexts(void)
>  
>  	fd = drm_open_driver(DRIVER_INTEL);
>  	result = gem_has_contexts(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	return result;
>  }
> @@ -398,7 +398,7 @@ igt_main
>  		int fd = drm_open_driver(DRIVER_INTEL);
>  		igt_require_gem(fd);
>  		gem_require_blitter(fd);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_subtest("blt-vs-render-ctx0") {
> diff --git a/tests/i915/gem_pread.c b/tests/i915/gem_pread.c
> index a8bf2b054..e76dbce1f 100644
> --- a/tests/i915/gem_pread.c
> +++ b/tests/i915/gem_pread.c
> @@ -350,6 +350,6 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
>  		free(src);
>  		gem_close(fd, dst);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_pread_after_blit.c b/tests/i915/gem_pread_after_blit.c
> index 3b56f787a..d5d20f58d 100644
> --- a/tests/i915/gem_pread_after_blit.c
> +++ b/tests/i915/gem_pread_after_blit.c
> @@ -252,5 +252,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_pwrite.c b/tests/i915/gem_pwrite.c
> index 6e3f833cd..353ce1a01 100644
> --- a/tests/i915/gem_pwrite.c
> +++ b/tests/i915/gem_pwrite.c
> @@ -572,5 +572,5 @@ igt_main_args("s:", NULL, help_str, opt_handler, NULL)
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_pwrite_snooped.c b/tests/i915/gem_pwrite_snooped.c
> index e6a10747d..8883b2737 100644
> --- a/tests/i915/gem_pwrite_snooped.c
> +++ b/tests/i915/gem_pwrite_snooped.c
> @@ -140,5 +140,5 @@ igt_simple_main
>  	test(256, 256);
>  
>  	buf_ops_destroy(bops);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_pxp.c b/tests/i915/gem_pxp.c
> index 2f27abd58..a4209945f 100644
> --- a/tests/i915/gem_pxp.c
> +++ b/tests/i915/gem_pxp.c
> @@ -1293,6 +1293,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_read_read_speed.c b/tests/i915/gem_read_read_speed.c
> index 7c5c90f79..9e84c7a27 100644
> --- a/tests/i915/gem_read_read_speed.c
> +++ b/tests/i915/gem_read_read_speed.c
> @@ -214,6 +214,6 @@ igt_main
>  
>  	igt_fixture {
>  		buf_ops_destroy(bops);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_readwrite.c b/tests/i915/gem_readwrite.c
> index 2d437dec3..6a24d74ec 100644
> --- a/tests/i915/gem_readwrite.c
> +++ b/tests/i915/gem_readwrite.c
> @@ -143,5 +143,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_reg_read.c b/tests/i915/gem_reg_read.c
> index 79facc1f2..302aa82ab 100644
> --- a/tests/i915/gem_reg_read.c
> +++ b/tests/i915/gem_reg_read.c
> @@ -170,6 +170,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_render_copy.c b/tests/i915/gem_render_copy.c
> index 2c150b2b0..0eaa10754 100644
> --- a/tests/i915/gem_render_copy.c
> +++ b/tests/i915/gem_render_copy.c
> @@ -879,6 +879,6 @@ igt_main_args("dac", NULL, help_str, opt_handler, NULL)
>  		igt_stop_hang_detector();
>  		buf_ops_destroy(data.bops);
>  		igt_collection_destroy(set);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/gem_render_copy_redux.c b/tests/i915/gem_render_copy_redux.c
> index 5e1daccf1..dd7917413 100644
> --- a/tests/i915/gem_render_copy_redux.c
> +++ b/tests/i915/gem_render_copy_redux.c
> @@ -81,7 +81,7 @@ static void data_init(data_t *data)
>  static void data_fini(data_t *data)
>  {
>  	buf_ops_destroy(data->bops);
> -	close(data->fd);
> +	drm_close_driver(data->fd);
>  }
>  
>  static void scratch_buf_init(data_t *data, struct intel_buf *buf,
> diff --git a/tests/i915/gem_reset_stats.c b/tests/i915/gem_reset_stats.c
> index ddc61781c..3ba2d0c7b 100644
> --- a/tests/i915/gem_reset_stats.c
> +++ b/tests/i915/gem_reset_stats.c
> @@ -297,7 +297,7 @@ static void test_rs(const struct intel_execution_ring *e,
>  	igt_assert(igt_seconds_elapsed(&ts_injected) <= 30);
>  
>  	for (i = 0; i < num_fds; i++)
> -		close(fd[i]);
> +		drm_close_driver(fd[i]);
>  }
>  
>  #define MAX_CTX 100
> @@ -373,7 +373,7 @@ static void test_rs_ctx(const struct intel_execution_ring *e,
>  
>  	for (i = 0; i < num_fds; i++) {
>  		assert_reset_status(i, fd[i], 0, RS_NO_ERROR);
> -		close(fd[i]);
> +		drm_close_driver(fd[i]);
>  	}
>  }
>  
> @@ -427,8 +427,8 @@ static void test_ban(const struct intel_execution_ring *e)
>  	igt_assert_eq(gem_reset_stats(fd_good, 0, &rs_good), 0);
>  	igt_assert_eq(rs_good.batch_active, 0);
>  
> -	close(fd_bad);
> -	close(fd_good);
> +	drm_close_driver(fd_bad);
> +	drm_close_driver(fd_good);
>  }
>  
>  static void test_ban_ctx(const struct intel_execution_ring *e)
> @@ -486,7 +486,7 @@ static void test_ban_ctx(const struct intel_execution_ring *e)
>  	igt_assert_eq(gem_reset_stats(fd, ctx_good, &rs_good), 0);
>  	igt_assert_eq(rs_good.batch_active, 0);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_unrelated_ctx(const struct intel_execution_ring *e)
> @@ -512,8 +512,8 @@ static void test_unrelated_ctx(const struct intel_execution_ring *e)
>  	assert_reset_status(0, fd1, ctx_guilty, RS_BATCH_ACTIVE);
>  	assert_reset_status(1, fd2, ctx_unrelated, RS_NO_ERROR);
>  
> -	close(fd1);
> -	close(fd2);
> +	drm_close_driver(fd1);
> +	drm_close_driver(fd2);
>  }
>  
>  static int get_reset_count(int fd, int ctx)
> @@ -539,7 +539,7 @@ static void test_close_pending_ctx(const struct intel_execution_ring *e)
>  	gem_context_destroy(fd, ctx);
>  	igt_assert_eq(__gem_context_destroy(fd, ctx), -ENOENT);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_close_pending(const struct intel_execution_ring *e)
> @@ -549,7 +549,7 @@ static void test_close_pending(const struct intel_execution_ring *e)
>  	assert_reset_status(fd, fd, 0, RS_NO_ERROR);
>  
>  	inject_hang(fd, 0, e, 0);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void noop_on_each_ring(int fd, const bool reverse)
> @@ -611,7 +611,7 @@ static void test_close_pending_fork(const struct intel_execution_ring *e,
>  		 * when gpu is reset and ring lists are cleared.
>  		 */
>  		noop_on_each_ring(fd2, reverse);
> -		close(fd2);
> +		drm_close_driver(fd2);
>  		pause();
>  		exit(0);
>  	} else {
> @@ -624,7 +624,7 @@ static void test_close_pending_fork(const struct intel_execution_ring *e,
>  	}
>  
>  	igt_post_hang_ring(fd, hang);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_reset_count(const struct intel_execution_ring *e,
> @@ -664,7 +664,7 @@ static void test_reset_count(const struct intel_execution_ring *e,
>  	if (create_ctx)
>  		gem_context_destroy(fd, ctx);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static int _test_params(int fd, int ctx, uint32_t flags, uint32_t pad)
> @@ -735,7 +735,7 @@ static void test_params_ctx(void)
>  
>  	fd = drm_reopen_driver(device);
>  	_test_param(fd, gem_context_create(fd));
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_params(void)
> @@ -744,7 +744,7 @@ static void test_params(void)
>  
>  	fd = drm_reopen_driver(device);
>  	_test_param(fd, 0);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static const struct intel_execution_ring *
> @@ -790,7 +790,7 @@ static void defer_hangcheck(const struct intel_execution_ring *engine)
>  
>  	igt_assert_lt(count_start, count_end);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static bool gem_has_reset_stats(int fd)
> @@ -999,6 +999,6 @@ igt_main
>  	}
>  	igt_fixture {
>  		igt_assert(igt_params_set(device, "reset", "%d", INT_MAX /* any reset method */));
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/gem_ringfill.c b/tests/i915/gem_ringfill.c
> index de6e26bf4..70ebc0c60 100644
> --- a/tests/i915/gem_ringfill.c
> +++ b/tests/i915/gem_ringfill.c
> @@ -401,6 +401,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_set_tiling_vs_blt.c b/tests/i915/gem_set_tiling_vs_blt.c
> index 5e3bf6a12..7148c9d18 100644
> --- a/tests/i915/gem_set_tiling_vs_blt.c
> +++ b/tests/i915/gem_set_tiling_vs_blt.c
> @@ -261,6 +261,6 @@ igt_main
>  
>  	igt_fixture{
>  		buf_ops_destroy(bops);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_set_tiling_vs_gtt.c b/tests/i915/gem_set_tiling_vs_gtt.c
> index 2f890e83b..4ebf17dcb 100644
> --- a/tests/i915/gem_set_tiling_vs_gtt.c
> +++ b/tests/i915/gem_set_tiling_vs_gtt.c
> @@ -130,5 +130,5 @@ igt_simple_main
>  
>  	munmap(ptr, OBJECT_SIZE);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_set_tiling_vs_pwrite.c b/tests/i915/gem_set_tiling_vs_pwrite.c
> index 6bec7f27e..170195e47 100644
> --- a/tests/i915/gem_set_tiling_vs_pwrite.c
> +++ b/tests/i915/gem_set_tiling_vs_pwrite.c
> @@ -99,5 +99,5 @@ igt_simple_main
>  
>  	munmap(ptr, OBJECT_SIZE);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
> index 380d2c846..a104c9f3a 100644
> --- a/tests/i915/gem_shrink.c
> +++ b/tests/i915/gem_shrink.c
> @@ -270,7 +270,7 @@ static bool has_userptr(void)
>  	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_USERPTR, &userptr))
>  		err = errno;
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	return err == EFAULT;
>  }
> @@ -319,7 +319,7 @@ static void run_test(int nchildren, uint64_t alloc,
>  				int fd = drm_open_driver(DRIVER_INTEL);
>  				for (int pass = 0; pass < nchildren; pass++)
>  					leak(fd, alloc);
> -				close(fd);
> +				drm_close_driver(fd);
>  			}
>  		}
>  	}
> @@ -331,7 +331,7 @@ static void run_test(int nchildren, uint64_t alloc,
>  				int fd = drm_open_driver(DRIVER_INTEL);
>  				for (int pass = 0; pass < nchildren; pass++)
>  					userptr(fd, alloc, 0);
> -				close(fd);
> +				drm_close_driver(fd);
>  			}
>  		}
>  		nchildren = (nchildren + 1)/2;
> @@ -344,7 +344,7 @@ static void run_test(int nchildren, uint64_t alloc,
>  				int fd = drm_open_driver(DRIVER_INTEL);
>  				for (int pass = 0; pass < nchildren; pass++)
>  					userptr(fd, alloc, UDIRTY);
> -				close(fd);
> +				drm_close_driver(fd);
>  			}
>  		}
>  		nchildren = (nchildren + 1)/2;
> @@ -356,7 +356,7 @@ static void run_test(int nchildren, uint64_t alloc,
>  			int fd = drm_open_driver(DRIVER_INTEL);
>  			for (int pass = 0; pass < nchildren; pass++)
>  				func(fd, alloc);
> -			close(fd);
> +			drm_close_driver(fd);
>  		}
>  	}
>  	igt_waitchildren();
> @@ -399,7 +399,7 @@ static void reclaim(unsigned engine, int timeout)
>  
>  	munmap((void *)shared, 4096);
>  	close(debugfs);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  igt_main
> @@ -456,7 +456,7 @@ igt_main
>  			 num_processes, alloc_size);
>  
>  		alloc_size <<= 20;
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_subtest("reclaim")
> diff --git a/tests/i915/gem_softpin.c b/tests/i915/gem_softpin.c
> index 933daa4a1..22e11ce43 100644
> --- a/tests/i915/gem_softpin.c
> +++ b/tests/i915/gem_softpin.c
> @@ -1217,7 +1217,7 @@ static void *thread(void *data)
>  			  fd, ctx->id, t->engine, succeeded);
>  	intel_ctx_destroy(fd, ctx);
>  	gem_close(fd, obj[1].handle);
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	return (void *) from_user_pointer(ret);
>  }
> @@ -1531,6 +1531,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_spin_batch.c b/tests/i915/gem_spin_batch.c
> index 7dc68ebc7..68e7af7e3 100644
> --- a/tests/i915/gem_spin_batch.c
> +++ b/tests/i915/gem_spin_batch.c
> @@ -277,6 +277,6 @@ igt_main
>  	igt_fixture {
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_streaming_writes.c b/tests/i915/gem_streaming_writes.c
> index 883fe4293..a8e6c42a8 100644
> --- a/tests/i915/gem_streaming_writes.c
> +++ b/tests/i915/gem_streaming_writes.c
> @@ -419,5 +419,5 @@ igt_main
>  		test_batch(fd, 2, 1);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_stress.c b/tests/i915/gem_stress.c
> index 3765ab14b..23690c077 100644
> --- a/tests/i915/gem_stress.c
> +++ b/tests/i915/gem_stress.c
> @@ -926,7 +926,7 @@ igt_simple_main_args("ds:g:c:t:rbuxmo:fp:",
>  	intel_bb_destroy(ibb);
>  	buf_ops_destroy(bops);
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  
>  	igt_stop_signal_helper();
>  }
> diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c
> index e7dc6637a..18adbd19d 100644
> --- a/tests/i915/gem_sync.c
> +++ b/tests/i915/gem_sync.c
> @@ -1363,6 +1363,6 @@ igt_main
>  		intel_allocator_multiprocess_stop();
>  		igt_stop_hang_detector();
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_tiled_blits.c b/tests/i915/gem_tiled_blits.c
> index 5e7ed0c4e..0f8434d7f 100644
> --- a/tests/i915/gem_tiled_blits.c
> +++ b/tests/i915/gem_tiled_blits.c
> @@ -215,6 +215,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_tiled_fence_blits.c b/tests/i915/gem_tiled_fence_blits.c
> index a3a0221d6..8e908eac0 100644
> --- a/tests/i915/gem_tiled_fence_blits.c
> +++ b/tests/i915/gem_tiled_fence_blits.c
> @@ -320,5 +320,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiled_partial_pwrite_pread.c b/tests/i915/gem_tiled_partial_pwrite_pread.c
> index 95fb69c65..ecc97002e 100644
> --- a/tests/i915/gem_tiled_partial_pwrite_pread.c
> +++ b/tests/i915/gem_tiled_partial_pwrite_pread.c
> @@ -318,6 +318,6 @@ igt_main
>  		intel_buf_destroy(tiled_staging_buf);
>  		buf_ops_destroy(bops);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_tiled_pread_basic.c b/tests/i915/gem_tiled_pread_basic.c
> index 2b4cec6e7..48f5c67e1 100644
> --- a/tests/i915/gem_tiled_pread_basic.c
> +++ b/tests/i915/gem_tiled_pread_basic.c
> @@ -222,5 +222,5 @@ igt_simple_main
>  		}
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiled_pread_pwrite.c b/tests/i915/gem_tiled_pread_pwrite.c
> index 2d21dfb76..885785cab 100644
> --- a/tests/i915/gem_tiled_pread_pwrite.c
> +++ b/tests/i915/gem_tiled_pread_pwrite.c
> @@ -154,5 +154,5 @@ igt_simple_main
>  		gem_madvise(fd, handle, I915_MADV_DONTNEED);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiled_swapping.c b/tests/i915/gem_tiled_swapping.c
> index f4bdce738..718516def 100644
> --- a/tests/i915/gem_tiled_swapping.c
> +++ b/tests/i915/gem_tiled_swapping.c
> @@ -246,5 +246,5 @@ igt_main
>  	}
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiled_wb.c b/tests/i915/gem_tiled_wb.c
> index e9efbdf23..b2337806d 100644
> --- a/tests/i915/gem_tiled_wb.c
> +++ b/tests/i915/gem_tiled_wb.c
> @@ -239,5 +239,5 @@ igt_simple_main
>  		munmap(linear, last_page - first_page);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiled_wc.c b/tests/i915/gem_tiled_wc.c
> index 1f245eb7d..4f733163b 100644
> --- a/tests/i915/gem_tiled_wc.c
> +++ b/tests/i915/gem_tiled_wc.c
> @@ -243,5 +243,5 @@ igt_simple_main
>  		munmap(linear, last_page - first_page);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_tiling_max_stride.c b/tests/i915/gem_tiling_max_stride.c
> index 513d579d3..d326ae7c2 100644
> --- a/tests/i915/gem_tiling_max_stride.c
> +++ b/tests/i915/gem_tiling_max_stride.c
> @@ -138,5 +138,5 @@ igt_simple_main
>  
>  	munmap(ptr, size);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
> diff --git a/tests/i915/gem_unfence_active_buffers.c b/tests/i915/gem_unfence_active_buffers.c
> index a0a601de2..71686095d 100644
> --- a/tests/i915/gem_unfence_active_buffers.c
> +++ b/tests/i915/gem_unfence_active_buffers.c
> @@ -99,5 +99,5 @@ igt_simple_main
>  
>  	igt_spin_free(i915, spin);
>  	put_ahnd(ahnd);
> -	close(i915);
> +	drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_unref_active_buffers.c b/tests/i915/gem_unref_active_buffers.c
> index 735c14720..9d92156a1 100644
> --- a/tests/i915/gem_unref_active_buffers.c
> +++ b/tests/i915/gem_unref_active_buffers.c
> @@ -121,5 +121,5 @@ igt_simple_main
>  
>  	igt_spin_free(i915, spin);
>  	put_ahnd(ahnd);
> -	close(i915);
> +	drm_close_driver(i915);
>  }
> diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
> index 056c7a7ac..d46623f69 100644
> --- a/tests/i915/gem_userptr_blits.c
> +++ b/tests/i915/gem_userptr_blits.c
> @@ -730,7 +730,7 @@ static void test_nohangcheck_hostile(int i915)
>  	close(fence);
>  
>  	close(dir);
> -	close(i915);
> +	drm_close_driver(i915);
>  }
>  
>  static size_t hugepagesize(void)
> @@ -1288,9 +1288,9 @@ static int test_dmabuf(void)
>  
>  	/* destroy userptr object and expect SIGBUS */
>  	free_userptr_bo(fd1, handle);
> -	close(fd1);
> +	drm_close_driver(fd1);
>  
> -	close(fd2);
> +	drm_close_driver(fd2);
>  	reset_handle_ptr();
>  
>  	return 0;
> diff --git a/tests/i915/gem_vm_create.c b/tests/i915/gem_vm_create.c
> index 44958cce8..fbfd7512a 100644
> --- a/tests/i915/gem_vm_create.c
> +++ b/tests/i915/gem_vm_create.c
> @@ -347,7 +347,7 @@ static void isolation(int i915)
>  	gem_read(i915, obj[0].handle, 0, &result, sizeof(result));
>  	igt_assert_eq(result, 1);
>  
> -	close(other);
> +	drm_close_driver(other);
>  
>  	gem_close(i915, obj[1].handle);
>  	gem_close(i915, obj[0].handle);
> @@ -388,6 +388,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_wait.c b/tests/i915/gem_wait.c
> index 27d084afa..a33e461d8 100644
> --- a/tests/i915/gem_wait.c
> +++ b/tests/i915/gem_wait.c
> @@ -257,6 +257,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gem_watchdog.c b/tests/i915/gem_watchdog.c
> index 47ccd2caa..12a7d1720 100644
> --- a/tests/i915/gem_watchdog.c
> +++ b/tests/i915/gem_watchdog.c
> @@ -586,6 +586,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(i915, ctx);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
> index 7462dc600..4b003ffbc 100644
> --- a/tests/i915/gem_workarounds.c
> +++ b/tests/i915/gem_workarounds.c
> @@ -235,7 +235,7 @@ static void check_workarounds(int fd, enum operation op, unsigned int flags)
>  	if (flags & CONTEXT)
>  		intel_ctx_destroy(fd, ctx);
>  	if (flags & FD)
> -		close(fd);
> +		drm_close_driver(fd);
>  }
>  
>  igt_main
> diff --git a/tests/i915/gen7_exec_parse.c b/tests/i915/gen7_exec_parse.c
> index e9751ea73..895aea1ea 100644
> --- a/tests/i915/gen7_exec_parse.c
> +++ b/tests/i915/gen7_exec_parse.c
> @@ -445,7 +445,7 @@ static void hsw_load_register_reg(void)
>  				   0xabcdabc0);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  igt_main
> @@ -717,6 +717,6 @@ igt_main
>  		igt_stop_hang_detector();
>  		gem_close(fd, handle);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/gen9_exec_parse.c b/tests/i915/gen9_exec_parse.c
> index 26b151705..e7d47fccc 100644
> --- a/tests/i915/gen9_exec_parse.c
> +++ b/tests/i915/gen9_exec_parse.c
> @@ -1252,6 +1252,6 @@ igt_main
>  		igt_stop_hang_detector();
>  		gem_close(i915, handle);
>  
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/i915_fb_tiling.c b/tests/i915/i915_fb_tiling.c
> index cafa5233c..f3f0c3d0a 100644
> --- a/tests/i915/i915_fb_tiling.c
> +++ b/tests/i915/i915_fb_tiling.c
> @@ -44,5 +44,5 @@ igt_simple_main
>  	igt_assert_eq(ret, -EBUSY);
>  
>  	igt_remove_fb(drm_fd, &fb);
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
> diff --git a/tests/i915/i915_getparams_basic.c b/tests/i915/i915_getparams_basic.c
> index 5422d585f..b6988784d 100644
> --- a/tests/i915/i915_getparams_basic.c
> +++ b/tests/i915/i915_getparams_basic.c
> @@ -46,7 +46,7 @@ init(void)
>  static void
>  deinit(void)
>  {
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
>  
>  
> diff --git a/tests/i915/i915_hangman.c b/tests/i915/i915_hangman.c
> index dd396c4e9..d8c9ec0ef 100644
> --- a/tests/i915/i915_hangman.c
> +++ b/tests/i915/i915_hangman.c
> @@ -97,7 +97,7 @@ static void check_alive(void)
>  	put_ahnd(ahnd);
>  	intel_ctx_destroy(fd, ctx);
>  	gem_quiescent_gpu(fd);
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static bool has_error_state(int dir)
> @@ -580,6 +580,6 @@ igt_main
>  
>  		igt_disallow_hang(device, hang);
>  		intel_ctx_destroy(device, ctx);
> -		close(device);
> +		drm_close_driver(device);
>  	}
>  }
> diff --git a/tests/i915/i915_hwmon.c b/tests/i915/i915_hwmon.c
> index 6d9937e99..4b7ecb766 100644
> --- a/tests/i915/i915_hwmon.c
> +++ b/tests/i915/i915_hwmon.c
> @@ -83,6 +83,6 @@ igt_main
>  
>  	igt_fixture {
>  		close(hwm);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
> index 725687dab..057c68906 100644
> --- a/tests/i915/i915_module_load.c
> +++ b/tests/i915/i915_module_load.c
> @@ -238,7 +238,7 @@ static void gem_sanitycheck(void)
>  		store_all(i915);
>  	errno = 0;
>  
> -	close(i915);
> +	drm_close_driver(i915);
>  	igt_assert_eq(err, expected);
>  }
>  
> @@ -286,7 +286,7 @@ static void load_and_check_i915(void)
>  
>  	/* make sure the GPU is idle */
>  	gem_quiescent_gpu(drm_fd);
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  
>  	/* make sure we can do basic memory ops */
>  	gem_sanitycheck();
> @@ -327,7 +327,7 @@ static uint32_t  driver_load_with_lmem_bar_size(uint32_t lmem_bar_size, bool che
>  		}
>  	}
>  
> -	close(i915);
> +	drm_close_driver(i915);
>  
>  	return lmem_bar_size;
>  }
> @@ -419,7 +419,7 @@ igt_main
>  			igt_require_gem(i915);
>  			igt_require(gem_has_lmem(i915));
>  			igt_skip_on_f(igt_sysfs_get_num_gt(i915) > 1, "Skips for more than one lmem instance.\n");
> -			close(i915);
> +			drm_close_driver(i915);
>  		}
>  
>  		/* Test for lmem_bar_size modparam support */
> diff --git a/tests/i915/i915_pciid.c b/tests/i915/i915_pciid.c
> index 377eec58c..9da7dc074 100644
> --- a/tests/i915/i915_pciid.c
> +++ b/tests/i915/i915_pciid.c
> @@ -65,5 +65,5 @@ igt_simple_main
>  
>  	igt_assert(has_known_intel_chipset(intel));
>  
> -	close(intel);
> +	drm_close_driver(intel);
>  }
> diff --git a/tests/i915/i915_pm_backlight.c b/tests/i915/i915_pm_backlight.c
> index 829606622..0bdb98f3f 100644
> --- a/tests/i915/i915_pm_backlight.c
> +++ b/tests/i915/i915_pm_backlight.c
> @@ -332,6 +332,6 @@ igt_main
>  
>  		igt_display_fini(&display);
>  		igt_pm_restore_sata_link_power_management();
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/i915_pm_dc.c b/tests/i915/i915_pm_dc.c
> index 6f08cb3fc..859bfdc55 100644
> --- a/tests/i915/i915_pm_dc.c
> +++ b/tests/i915/i915_pm_dc.c
> @@ -689,7 +689,7 @@ igt_main
>  		close(data.debugfs_root_fd);
>  		close(data.msr_fd);
>  		display_fini(&data);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  
>  	igt_exit();
> diff --git a/tests/i915/i915_pm_freq_api.c b/tests/i915/i915_pm_freq_api.c
> index 662d514a4..096adbbb5 100644
> --- a/tests/i915/i915_pm_freq_api.c
> +++ b/tests/i915/i915_pm_freq_api.c
> @@ -139,6 +139,6 @@ igt_main
>  			igt_assert(set_freq(dirfd, RPS_MAX_FREQ_MHZ, stash_max[gt]) > 0);
>  			igt_assert(set_freq(dirfd, RPS_MIN_FREQ_MHZ, stash_min[gt]) > 0);
>  		}
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/i915_pm_freq_mult.c b/tests/i915/i915_pm_freq_mult.c
> index 894ae294c..825f5a326 100644
> --- a/tests/i915/i915_pm_freq_mult.c
> +++ b/tests/i915/i915_pm_freq_mult.c
> @@ -167,6 +167,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/i915_pm_lpsp.c b/tests/i915/i915_pm_lpsp.c
> index 3ad8b2603..fc4404c9b 100644
> --- a/tests/i915/i915_pm_lpsp.c
> +++ b/tests/i915/i915_pm_lpsp.c
> @@ -211,6 +211,6 @@ igt_main
>  	igt_fixture {
>  		free(data.pwr_dmn_info);
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c
> index 3554f5d77..0fac22770 100644
> --- a/tests/i915/i915_pm_rc6_residency.c
> +++ b/tests/i915/i915_pm_rc6_residency.c
> @@ -611,6 +611,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(i915, ctx);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/i915_pm_rps.c b/tests/i915/i915_pm_rps.c
> index f2374aff0..34abfe690 100644
> --- a/tests/i915/i915_pm_rps.c
> +++ b/tests/i915/i915_pm_rps.c
> @@ -877,7 +877,7 @@ static void pm_rps_exit_handler(int sig)
>  	if (lh.igt_proc.running)
>  		load_helper_stop();
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
>  
>  igt_main
> diff --git a/tests/i915/i915_pm_sseu.c b/tests/i915/i915_pm_sseu.c
> index 1b428c9ba..771971851 100644
> --- a/tests/i915/i915_pm_sseu.c
> +++ b/tests/i915/i915_pm_sseu.c
> @@ -315,7 +315,7 @@ gem_deinit(void)
>  	case 2:
>  		buf_ops_destroy(gem.bops);
>  	case 1:
> -		close(gem.drm_fd);
> +		drm_close_driver(gem.drm_fd);
>  	}
>  }
>  
> diff --git a/tests/i915/i915_power.c b/tests/i915/i915_power.c
> index 51b412e3a..9f6235083 100644
> --- a/tests/i915/i915_power.c
> +++ b/tests/i915/i915_power.c
> @@ -76,6 +76,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/i915_query.c b/tests/i915/i915_query.c
> index e725e04e4..ea191f8a3 100644
> --- a/tests/i915/i915_query.c
> +++ b/tests/i915/i915_query.c
> @@ -1465,6 +1465,6 @@ igt_main
>  		query_parse_and_validate_hwconfig_table(fd);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/i915/i915_suspend.c b/tests/i915/i915_suspend.c
> index 5b289ecb2..79004c1cc 100644
> --- a/tests/i915/i915_suspend.c
> +++ b/tests/i915/i915_suspend.c
> @@ -188,7 +188,7 @@ test_shrink(int fd, unsigned int mode)
>  		igt_system_suspend_autoresume(mode, SUSPEND_TEST_NONE);
>  
>  		munmap(mem, size);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_waitchildren();
> @@ -232,7 +232,7 @@ test_suspend_without_i915(int state)
>  		igt_pm_get_d3cold_allowed(&card, d3cold_allowed);
>  		igt_pm_set_d3cold_allowed(&card, "0\n");
>  	}
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	igt_kmsg(KMSG_INFO "Unloading i915\n");
>  	igt_assert_eq(igt_i915_driver_unload(),0);
> @@ -315,5 +315,5 @@ igt_main
>  		test_forcewake(fd, true);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/i915/perf.c b/tests/i915/perf.c
> index cd73b1a98..bb54abccf 100644
> --- a/tests/i915/perf.c
> +++ b/tests/i915/perf.c
> @@ -4518,7 +4518,7 @@ gen12_test_single_ctx_render_target_writes_a_counter(const struct intel_executio
>  			igt_drop_root();
>  			gen12_single_ctx_helper(e);
>  
> -			close(drm_fd);
> +			drm_close_driver(drm_fd);
>  		}
>  		child_ret = igt_wait_helper(&child);
>  		igt_assert(WEXITSTATUS(child_ret) == EAGAIN ||
> @@ -5299,7 +5299,7 @@ test_i915_ref_count(void)
>  	igt_debug("ref count after opening i915 perf stream = %u\n", ref_count1);
>  	igt_assert(ref_count1 > ref_count0);
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  	close(sysfs);
>  	drm_fd = -1;
>  	sysfs = -1;
> @@ -6008,6 +6008,6 @@ igt_main
>  			put_engine_groups(perf_oa_groups, num_perf_oa_groups);
>  
>  		intel_ctx_destroy(drm_fd, ctx);
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/i915/perf_pmu.c b/tests/i915/perf_pmu.c
> index c5f083bbd..34b0e10f6 100644
> --- a/tests/i915/perf_pmu.c
> +++ b/tests/i915/perf_pmu.c
> @@ -2111,7 +2111,7 @@ static void test_unload(unsigned int num_engines)
>  		if (fd[count] != -1)
>  			count++;
>  
> -		close(i915);
> +		drm_close_driver(i915);
>  
>  		buf = calloc(count, sizeof(uint64_t));
>  		igt_assert(buf);
> @@ -2436,13 +2436,13 @@ igt_main
>  
>  		igt_fixture {
>  			intel_ctx_destroy(render_fd, render_ctx);
> -			close(render_fd);
> +			drm_close_driver(render_fd);
>  		}
>  	}
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  	igt_subtest("module-unload") {
> diff --git a/tests/i915/sysfs_defaults.c b/tests/i915/sysfs_defaults.c
> index dda27a0af..94437c0a0 100644
> --- a/tests/i915/sysfs_defaults.c
> +++ b/tests/i915/sysfs_defaults.c
> @@ -105,6 +105,6 @@ igt_main
>  
>  	igt_fixture {
>  		close(engines);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/sysfs_heartbeat_interval.c b/tests/i915/sysfs_heartbeat_interval.c
> index 8a3dd3975..467e0728b 100644
> --- a/tests/i915/sysfs_heartbeat_interval.c
> +++ b/tests/i915/sysfs_heartbeat_interval.c
> @@ -514,6 +514,6 @@ igt_main
>  
>  	igt_fixture {
>  		close(engines);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/sysfs_preempt_timeout.c b/tests/i915/sysfs_preempt_timeout.c
> index 5e0a7d962..b686d6ba8 100644
> --- a/tests/i915/sysfs_preempt_timeout.c
> +++ b/tests/i915/sysfs_preempt_timeout.c
> @@ -343,6 +343,6 @@ igt_main
>  
>  	igt_fixture {
>  		close(engines);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/i915/sysfs_timeslice_duration.c b/tests/i915/sysfs_timeslice_duration.c
> index 92c4c5eae..8f0d8d94b 100644
> --- a/tests/i915/sysfs_timeslice_duration.c
> +++ b/tests/i915/sysfs_timeslice_duration.c
> @@ -564,6 +564,6 @@ igt_main
>  
>  	igt_fixture {
>  		close(engines);
> -		close(i915);
> +		drm_close_driver(i915);
>  	}
>  }
> diff --git a/tests/prime_busy.c b/tests/prime_busy.c
> index 343020f13..f9f1674d4 100644
> --- a/tests/prime_busy.c
> +++ b/tests/prime_busy.c
> @@ -162,6 +162,6 @@ igt_main
>  
>  	igt_fixture {
>  		intel_ctx_destroy(fd, ctx);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
> index bc19f68c9..1c2d2a301 100644
> --- a/tests/prime_mmap.c
> +++ b/tests/prime_mmap.c
> @@ -557,6 +557,6 @@ igt_main
>  		free(query_info);
>  		igt_collection_destroy(set);
>  		igt_collection_destroy(dma_buf_set);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/prime_mmap_coherency.c b/tests/prime_mmap_coherency.c
> index b22fb35c1..a18c16c5c 100644
> --- a/tests/prime_mmap_coherency.c
> +++ b/tests/prime_mmap_coherency.c
> @@ -249,7 +249,7 @@ static void blit_and_cmp(void)
>  
>  	intel_bb_destroy(local_batch);
>  	buf_ops_destroy(local_bops);
> -	close(local_fd);
> +	drm_close_driver(local_fd);
>  }
>  
>  /*
> @@ -346,6 +346,6 @@ igt_main
>  	igt_fixture {
>  		buf_ops_destroy(bops);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/prime_mmap_kms.c b/tests/prime_mmap_kms.c
> index 8b127a13c..1a63be38f 100644
> --- a/tests/prime_mmap_kms.c
> +++ b/tests/prime_mmap_kms.c
> @@ -263,6 +263,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&gpu.display);
> -		close(gpu.drm_fd);
> +		drm_close_driver(gpu.drm_fd);
>  	}
>  }
> diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c
> index bf5486194..0b5ac256d 100644
> --- a/tests/prime_self_import.c
> +++ b/tests/prime_self_import.c
> @@ -106,8 +106,8 @@ static void test_with_fd_dup(void)
>  	close(dma_buf_fd2);
>  	check_bo(fd2, handle_import, fd2, handle_import);
>  
> -	close(fd1);
> -	close(fd2);
> +	drm_close_driver(fd1);
> +	drm_close_driver(fd2);
>  }
>  
>  static void test_with_two_bos(void)
> @@ -139,8 +139,8 @@ static void test_with_two_bos(void)
>  
>  	check_bo(fd2, handle_import, fd2, handle_import);
>  
> -	close(fd1);
> -	close(fd2);
> +	drm_close_driver(fd1);
> +	drm_close_driver(fd2);
>  }
>  
>  static void test_with_one_bo_two_files(void)
> @@ -164,8 +164,8 @@ static void test_with_one_bo_two_files(void)
>  	/* dma-buf self importing an flink bo should give the same handle */
>  	igt_assert_eq_u32(handle_import, handle_open);
>  
> -	close(fd1);
> -	close(fd2);
> +	drm_close_driver(fd1);
> +	drm_close_driver(fd2);
>  	close(dma_buf_fd1);
>  	close(dma_buf_fd2);
>  }
> @@ -211,7 +211,7 @@ static void test_with_one_bo(void)
>  	check_bo(fd1, handle, fd2, handle_import1);
>  
>  	/* Completely rip out exporting fd. */
> -	close(fd1);
> +	drm_close_driver(fd1);
>  	check_bo(fd2, handle_import1, fd2, handle_import1);
>  }
>  
> @@ -275,14 +275,14 @@ static void test_reimport_close_race(void)
>  		igt_assert(status == 0);
>  	}
>  
> -	close(fds[0]);
> +	drm_close_driver(fds[0]);
>  	close(fds[1]);
>  
>  	obj_count = igt_get_stable_obj_count(fake) - obj_count;
>  
>  	igt_info("leaked %i objects\n", obj_count);
>  
> -	close(fake);
> +	drm_close_driver(fake);
>  
>  	igt_assert_eq(obj_count, 0);
>  }
> @@ -357,13 +357,13 @@ static void test_export_close_race(void)
>  		igt_assert(status == 0);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	obj_count = igt_get_stable_obj_count(fake) - obj_count;
>  
>  	igt_info("leaked %i objects\n", obj_count);
>  
> -	close(fake);
> +	drm_close_driver(fake);
>  
>  	igt_assert_eq(obj_count, 0);
>  }
> @@ -392,7 +392,7 @@ static void test_llseek_size(void)
>  		close(dma_buf_fd);
>  	}
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  static void test_llseek_bad(void)
> @@ -421,7 +421,7 @@ static void test_llseek_bad(void)
>  
>  	close(dma_buf_fd);
>  
> -	close(fd);
> +	drm_close_driver(fd);
>  }
>  
>  igt_main
> diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
> index dcf9e78d4..be6ab65b1 100644
> --- a/tests/prime_vgem.c
> +++ b/tests/prime_vgem.c
> @@ -1200,7 +1200,7 @@ igt_main
>  
>  
>  	igt_fixture {
> -		close(i915);
> -		close(vgem);
> +		drm_close_driver(i915);
> +		drm_close_driver(vgem);
>  	}
>  }
> diff --git a/tests/syncobj_basic.c b/tests/syncobj_basic.c
> index 6e20c3411..beb44b1e9 100644
> --- a/tests/syncobj_basic.c
> +++ b/tests/syncobj_basic.c
> @@ -232,7 +232,7 @@ igt_main
>  		test_valid_cycle(fd);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  
>  }
> diff --git a/tests/syncobj_timeline.c b/tests/syncobj_timeline.c
> index 7f5ff6f6c..081f440f3 100644
> --- a/tests/syncobj_timeline.c
> +++ b/tests/syncobj_timeline.c
> @@ -1538,6 +1538,6 @@ igt_main
>  		test_32bits_limit(fd);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/syncobj_wait.c b/tests/syncobj_wait.c
> index 427b6b119..eebc96b67 100644
> --- a/tests/syncobj_wait.c
> +++ b/tests/syncobj_wait.c
> @@ -914,6 +914,6 @@ igt_main
>  		test_wait_interrupted(fd, WAIT_ALL);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/template.c b/tests/template.c
> index e23814fb7..ae2681c01 100644
> --- a/tests/template.c
> +++ b/tests/template.c
> @@ -76,6 +76,6 @@ igt_main
>  	 */
>  
>  	igt_fixture {
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/vgem_basic.c b/tests/vgem_basic.c
> index ada5518d7..36899b307 100644
> --- a/tests/vgem_basic.c
> +++ b/tests/vgem_basic.c
> @@ -64,8 +64,8 @@ static void test_setversion(int fd)
>  
>  static void test_client(int fd)
>  {
> -	close(drm_open_driver(DRIVER_VGEM));
> -	close(drm_open_driver_render(DRIVER_VGEM));
> +	drm_close_driver(drm_open_driver(DRIVER_VGEM));
> +	drm_close_driver(drm_open_driver_render(DRIVER_VGEM));
>  }
>  
>  static void test_create(int fd)
> @@ -537,6 +537,6 @@ igt_main
>  		test_debugfs_read(fd);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/vgem_slow.c b/tests/vgem_slow.c
> index 58b09e421..4c4e94ea0 100644
> --- a/tests/vgem_slow.c
> +++ b/tests/vgem_slow.c
> @@ -85,6 +85,6 @@ igt_main
>  		test_nohang(fd);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config
  2023-05-16 16:50 ` [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config Bhanuprakash Modem
@ 2023-05-24  8:47   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  8:47 UTC (permalink / raw)
  To: igt-dev

Hi Bhanuprakash,

On 2023-05-16 at 22:20:56 +0530, Bhanuprakash Modem wrote:
> Use xe_config() helper to get the config.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/xe/xe_debugfs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
> index 4006981c6..10dd05740 100644
> --- a/tests/xe/xe_debugfs.c
> +++ b/tests/xe/xe_debugfs.c
> @@ -252,7 +252,7 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  	}
>  
>  	igt_subtest("base") {
> -		test_base(fd, xe_dev->config);
> +		test_base(fd, xe_config(fd));

Is this needed ? Old code looks good, I see no point in change.
Maybe you should merge this with one removing xe_dev var ?

Regards,
Kamil

>  	}
>  
>  
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 15/20] tests/kms: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 15/20] tests/kms: " Bhanuprakash Modem
@ 2023-05-24  9:02   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-05-24  9:02 UTC (permalink / raw)
  To: igt-dev

Hi Bhanuprakash,

few nits, see below.

On 2023-05-16 at 22:20:53 +0530, Bhanuprakash Modem wrote:
> To close the drm file descriptor, use igt helper drm_close_driver()
> instead of using close().
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/chamelium/kms_chamelium_audio.c  | 2 +-
>  tests/chamelium/kms_chamelium_edid.c   | 2 +-
>  tests/chamelium/kms_chamelium_frames.c | 2 +-
>  tests/chamelium/kms_chamelium_hpd.c    | 2 +-

imho you should split chamelium into separate patchset
and cc Mark Yacoub.

>  tests/i915/kms_big_fb.c                | 2 +-
>  tests/i915/kms_big_joiner.c            | 2 +-
>  tests/i915/kms_busy.c                  | 2 +-
>  tests/i915/kms_ccs.c                   | 2 +-
>  tests/i915/kms_cdclk.c                 | 2 +-
>  tests/i915/kms_draw_crc.c              | 2 +-
>  tests/i915/kms_dsc.c                   | 2 +-
>  tests/i915/kms_fbcon_fbt.c             | 2 +-
>  tests/i915/kms_fence_pin_leak.c        | 2 +-
>  tests/i915/kms_flip_scaled_crc.c       | 2 +-
>  tests/i915/kms_flip_tiling.c           | 2 +-
>  tests/i915/kms_frontbuffer_tracking.c  | 2 +-
>  tests/i915/kms_legacy_colorkey.c       | 2 +-
>  tests/i915/kms_mmap_write_crc.c        | 2 +-
>  tests/i915/kms_pipe_b_c_ivb.c          | 2 +-
>  tests/i915/kms_psr.c                   | 2 +-
>  tests/i915/kms_psr2_sf.c               | 2 +-
>  tests/i915/kms_psr2_su.c               | 2 +-
>  tests/i915/kms_psr_stress_test.c       | 2 +-
>  tests/i915/kms_pwrite_crc.c            | 2 +-
>  tests/kms_3d.c                         | 2 +-
>  tests/kms_addfb_basic.c                | 4 ++--
>  tests/kms_async_flips.c                | 2 +-
>  tests/kms_atomic.c                     | 2 +-
>  tests/kms_atomic_interruptible.c       | 2 +-
>  tests/kms_atomic_transition.c          | 2 +-
>  tests/kms_color.c                      | 2 +-
>  tests/kms_concurrent.c                 | 2 +-
>  tests/kms_content_protection.c         | 2 +-
>  tests/kms_cursor_crc.c                 | 2 +-
>  tests/kms_cursor_edge_walk.c           | 2 +-
>  tests/kms_cursor_legacy.c              | 2 +-
>  tests/kms_dither.c                     | 2 +-
>  tests/kms_dp_aux_dev.c                 | 2 +-
>  tests/kms_dp_tiled_display.c           | 2 +-
>  tests/kms_flip.c                       | 2 +-
>  tests/kms_flip_event_leak.c            | 4 ++--
>  tests/kms_force_connector_basic.c      | 4 ++--
>  tests/kms_getfb.c                      | 4 ++--
>  tests/kms_hdmi_inject.c                | 2 +-
>  tests/kms_hdr.c                        | 2 +-
>  tests/kms_invalid_mode.c               | 2 +-
>  tests/kms_lease.c                      | 4 ++--
>  tests/kms_panel_fitting.c              | 2 +-
>  tests/kms_pipe_crc_basic.c             | 2 +-
>  tests/kms_plane.c                      | 2 +-
>  tests/kms_plane_alpha_blend.c          | 2 +-
>  tests/kms_plane_cursor.c               | 2 +-
>  tests/kms_plane_lowres.c               | 2 +-
>  tests/kms_plane_multiple.c             | 2 +-
>  tests/kms_plane_scaling.c              | 2 +-
>  tests/kms_prime.c                      | 6 +++---
>  tests/kms_prop_blob.c                  | 8 ++++----
>  tests/kms_properties.c                 | 2 +-
>  tests/kms_rmfb.c                       | 4 ++--
>  tests/kms_rotation_crc.c               | 2 +-
>  tests/kms_scaling_modes.c              | 2 +-
>  tests/kms_sequence.c                   | 2 +-
>  tests/kms_setmode.c                    | 2 +-
>  tests/kms_tv_load_detect.c             | 2 +-
>  tests/kms_universal_plane.c            | 2 +-
>  tests/kms_vblank.c                     | 2 +-
>  tests/kms_vrr.c                        | 1 +
>  tests/kms_writeback.c                  | 1 +
>  68 files changed, 79 insertions(+), 77 deletions(-)
> 
> diff --git a/tests/chamelium/kms_chamelium_audio.c b/tests/chamelium/kms_chamelium_audio.c
> index 6c6177fc5..8fbc1f80e 100644
> --- a/tests/chamelium/kms_chamelium_audio.c
> +++ b/tests/chamelium/kms_chamelium_audio.c
> @@ -870,6 +870,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/chamelium/kms_chamelium_edid.c b/tests/chamelium/kms_chamelium_edid.c
> index 4a52e6922..446bbd204 100644
> --- a/tests/chamelium/kms_chamelium_edid.c
> +++ b/tests/chamelium/kms_chamelium_edid.c
> @@ -585,6 +585,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/chamelium/kms_chamelium_frames.c b/tests/chamelium/kms_chamelium_frames.c
> index 22a7ba936..a56afada4 100644
> --- a/tests/chamelium/kms_chamelium_frames.c
> +++ b/tests/chamelium/kms_chamelium_frames.c
> @@ -1102,6 +1102,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/chamelium/kms_chamelium_hpd.c b/tests/chamelium/kms_chamelium_hpd.c
> index efd40ba54..8b3189ca0 100644
> --- a/tests/chamelium/kms_chamelium_hpd.c
> +++ b/tests/chamelium/kms_chamelium_hpd.c
> @@ -564,6 +564,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c
> index a0d5ef730..d132f5b98 100644
> --- a/tests/i915/kms_big_fb.c
> +++ b/tests/i915/kms_big_fb.c
> @@ -1010,6 +1010,6 @@ igt_main
>  	igt_fixture {
>  		igt_display_fini(&data.display);
>  		buf_ops_destroy(data.bops);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
> index b9dda58f6..2ff23398a 100644
> --- a/tests/i915/kms_big_joiner.c
> +++ b/tests/i915/kms_big_joiner.c
> @@ -302,6 +302,6 @@ igt_main
>  	igt_fixture {
>  		igt_remove_fb(data.drm_fd, &data.fb);
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_busy.c b/tests/i915/kms_busy.c
> index 20d3058fb..74af9229e 100644
> --- a/tests/i915/kms_busy.c
> +++ b/tests/i915/kms_busy.c
> @@ -506,6 +506,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  	igt_fixture {
>  		gpu_engines_restore_timeouts(fd, num_engines, saved_gpu_timeouts);
>  		igt_display_fini(&display);
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_ccs.c b/tests/i915/kms_ccs.c
> index 1b3462ea9..2661f661c 100644
> --- a/tests/i915/kms_ccs.c
> +++ b/tests/i915/kms_ccs.c
> @@ -708,6 +708,6 @@ igt_main_args("cs:", NULL, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_cdclk.c b/tests/i915/kms_cdclk.c
> index 0f9b8dc58..40eca24f0 100644
> --- a/tests/i915/kms_cdclk.c
> +++ b/tests/i915/kms_cdclk.c
> @@ -397,6 +397,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_draw_crc.c b/tests/i915/kms_draw_crc.c
> index db6d71f2e..01ecb7bb9 100644
> --- a/tests/i915/kms_draw_crc.c
> +++ b/tests/i915/kms_draw_crc.c
> @@ -242,7 +242,7 @@ static void teardown_environment(void)
>  
>  	buf_ops_destroy(bops);
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
>  
>  static const char *format_str(int format_index)
> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
> index 3ce28f848..9a8e73ad3 100644
> --- a/tests/i915/kms_dsc.c
> +++ b/tests/i915/kms_dsc.c
> @@ -316,6 +316,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_fbcon_fbt.c b/tests/i915/kms_fbcon_fbt.c
> index 831ec867a..aea724756 100644
> --- a/tests/i915/kms_fbcon_fbt.c
> +++ b/tests/i915/kms_fbcon_fbt.c
> @@ -408,7 +408,7 @@ static void teardown_environment(struct drm_info *drm)
>  
>  	drmModeFreeResources(drm->res);
>  	close(drm->debugfs_fd);
> -	close(drm->fd);
> +	drm_close_driver(drm->fd);
>  	kmstest_restore_vt_mode();
>  }
>  
> diff --git a/tests/i915/kms_fence_pin_leak.c b/tests/i915/kms_fence_pin_leak.c
> index 63657a742..c8a6f1aa1 100644
> --- a/tests/i915/kms_fence_pin_leak.c
> +++ b/tests/i915/kms_fence_pin_leak.c
> @@ -238,5 +238,5 @@ igt_simple_main
>  
>  	buf_ops_destroy(data.bops);
>  	igt_display_fini(&data.display);
> -	close(data.drm_fd);
> +	drm_close_driver(data.drm_fd);
>  }
> diff --git a/tests/i915/kms_flip_scaled_crc.c b/tests/i915/kms_flip_scaled_crc.c
> index f5dc430e3..30da1fcf3 100644
> --- a/tests/i915/kms_flip_scaled_crc.c
> +++ b/tests/i915/kms_flip_scaled_crc.c
> @@ -694,6 +694,6 @@ igt_main
>  		}
>  		kmstest_set_vt_text_mode();
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_flip_tiling.c b/tests/i915/kms_flip_tiling.c
> index a22f12382..02a5fe8e3 100644
> --- a/tests/i915/kms_flip_tiling.c
> +++ b/tests/i915/kms_flip_tiling.c
> @@ -240,6 +240,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
> index 650e14a77..075e3827b 100644
> --- a/tests/i915/kms_frontbuffer_tracking.c
> +++ b/tests/i915/kms_frontbuffer_tracking.c
> @@ -1351,7 +1351,7 @@ static void teardown_drm(void)
>  {
>  	buf_ops_destroy(drm.bops);
>  	igt_display_fini(&drm.display);
> -	close(drm.fd);
> +	drm_close_driver(drm.fd);
>  }
>  
>  static void setup_modeset(void)
> diff --git a/tests/i915/kms_legacy_colorkey.c b/tests/i915/kms_legacy_colorkey.c
> index 5b2fd64ba..450cb2e3f 100644
> --- a/tests/i915/kms_legacy_colorkey.c
> +++ b/tests/i915/kms_legacy_colorkey.c
> @@ -87,6 +87,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&display);
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_mmap_write_crc.c b/tests/i915/kms_mmap_write_crc.c
> index 2a2526417..77e1cc807 100644
> --- a/tests/i915/kms_mmap_write_crc.c
> +++ b/tests/i915/kms_mmap_write_crc.c
> @@ -303,7 +303,7 @@ igt_main_args("n", NULL, NULL, opt_handler, NULL)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  
>  		igt_stop_helper(&hog);
>  	}
> diff --git a/tests/i915/kms_pipe_b_c_ivb.c b/tests/i915/kms_pipe_b_c_ivb.c
> index af11e3262..192771794 100644
> --- a/tests/i915/kms_pipe_b_c_ivb.c
> +++ b/tests/i915/kms_pipe_b_c_ivb.c
> @@ -291,6 +291,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_psr.c b/tests/i915/kms_psr.c
> index 6c89de45d..3f8f83b42 100644
> --- a/tests/i915/kms_psr.c
> +++ b/tests/i915/kms_psr.c
> @@ -670,6 +670,6 @@ igt_main_args("", long_options, help_str, opt_handler, &data)
>  		close(data.debugfs_fd);
>  		buf_ops_destroy(data.bops);
>  		display_fini(&data);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> index 4cf986440..a202c613c 100644
> --- a/tests/i915/kms_psr2_sf.c
> +++ b/tests/i915/kms_psr2_sf.c
> @@ -1298,6 +1298,6 @@ igt_main
>  	igt_fixture {
>  		close(data.debugfs_fd);
>  		display_fini(&data);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
> index 65e67b8c9..3081887ca 100644
> --- a/tests/i915/kms_psr2_su.c
> +++ b/tests/i915/kms_psr2_su.c
> @@ -373,6 +373,6 @@ igt_main
>  	igt_fixture {
>  		close(data.debugfs_fd);
>  		display_fini(&data);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_psr_stress_test.c b/tests/i915/kms_psr_stress_test.c
> index a4cb3194e..23dcb4077 100644
> --- a/tests/i915/kms_psr_stress_test.c
> +++ b/tests/i915/kms_psr_stress_test.c
> @@ -378,6 +378,6 @@ igt_main
>  		buf_ops_destroy(data.bops);
>  		igt_display_fini(&data.display);
>  		close(data.debugfs_fd);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/i915/kms_pwrite_crc.c b/tests/i915/kms_pwrite_crc.c
> index 3278d876d..7bddeecba 100644
> --- a/tests/i915/kms_pwrite_crc.c
> +++ b/tests/i915/kms_pwrite_crc.c
> @@ -193,5 +193,5 @@ igt_simple_main
>  	run_test(&data);
>  
>  	igt_display_fini(&data.display);
> -	close(data.drm_fd);
> +	drm_close_driver(data.drm_fd);
>  }
> diff --git a/tests/kms_3d.c b/tests/kms_3d.c
> index 437c8a481..55e1d8058 100644
> --- a/tests/kms_3d.c
> +++ b/tests/kms_3d.c
> @@ -119,5 +119,5 @@ igt_simple_main
>  	if (is_xe_device(drm_fd))
>  		xe_device_put(drm_fd);
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index e375f3ad2..53a6a007a 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -933,7 +933,7 @@ static void master_tests(int fd)
>  		do_ioctl_err(master2_fd, DRM_IOCTL_MODE_RMFB, &f.fb_id, ENOENT);
>  
>  		igt_device_drop_master(master2_fd);
> -		close(master2_fd);
> +		drm_close_driver(master2_fd);
>  
>  		igt_device_set_master(fd);
>  	}
> @@ -1012,6 +1012,6 @@ igt_main
>  		if (is_xe_device(fd))
>  			xe_device_put(fd);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
> index 51ffa523a..f44fc4bea 100644
> --- a/tests/kms_async_flips.c
> +++ b/tests/kms_async_flips.c
> @@ -668,6 +668,6 @@ igt_main_args("e", NULL, help_str, opt_handler, &data)
>  		igt_display_reset(&data.display);
>  		igt_display_commit(&data.display);
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
> index 037db2d36..b65045abc 100644
> --- a/tests/kms_atomic.c
> +++ b/tests/kms_atomic.c
> @@ -1460,6 +1460,6 @@ igt_main
>  		igt_remove_fb(display.drm_fd, &fb);
>  
>  		igt_display_fini(&display);
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
> index 74b2e246a..2acdcb29d 100644
> --- a/tests/kms_atomic_interruptible.c
> +++ b/tests/kms_atomic_interruptible.c
> @@ -389,6 +389,6 @@ igt_main
>  	/* TODO: legacy gamma_set/get, object set/getprop, getcrtc, getconnector */
>  	igt_fixture {
>  		igt_display_fini(&display);
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 9f39d033d..6ab5267ca 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -1182,6 +1182,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_color.c b/tests/kms_color.c
> index fdc7120c7..d444cfe10 100644
> --- a/tests/kms_color.c
> +++ b/tests/kms_color.c
> @@ -1069,6 +1069,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> index e1e581723..d915a98b2 100644
> --- a/tests/kms_concurrent.c
> +++ b/tests/kms_concurrent.c
> @@ -400,6 +400,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  		if (is_intel_device(data.drm_fd))
>  			intel_allocator_multiprocess_stop();
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
> index 344cac505..6cdf81a28 100644
> --- a/tests/kms_content_protection.c
> +++ b/tests/kms_content_protection.c
> @@ -884,6 +884,6 @@ igt_main
>  	igt_fixture {
>  		test_content_protection_cleanup();
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
> index 3a353a032..d9ae35587 100644
> --- a/tests/kms_cursor_crc.c
> +++ b/tests/kms_cursor_crc.c
> @@ -1010,6 +1010,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  		}
>  
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
> index 5f423a18f..462b51e20 100644
> --- a/tests/kms_cursor_edge_walk.c
> +++ b/tests/kms_cursor_edge_walk.c
> @@ -391,6 +391,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> index f7a6202cf..c1e7c2113 100644
> --- a/tests/kms_cursor_legacy.c
> +++ b/tests/kms_cursor_legacy.c
> @@ -1843,6 +1843,6 @@ igt_main
>  		if (intel_psr2_restore)
>  			i915_psr2_sel_fetch_restore(display.drm_fd);
>  		igt_display_fini(&display);
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 95be6e136..d6c16dd0b 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -247,6 +247,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_dp_aux_dev.c b/tests/kms_dp_aux_dev.c
> index 69edc1585..19cbe216a 100644
> --- a/tests/kms_dp_aux_dev.c
> +++ b/tests/kms_dp_aux_dev.c
> @@ -147,5 +147,5 @@ igt_simple_main
>  	igt_require(valid_connectors);
>  
>  	drmModeFreeResources(res);
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
> diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
> index 07b803a50..8dfe93000 100644
> --- a/tests/kms_dp_tiled_display.c
> +++ b/tests/kms_dp_tiled_display.c
> @@ -502,6 +502,6 @@ igt_main
>  		free(data.conns);
>  		kmstest_restore_vt_mode();
>  		igt_display_fini(data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index f1e0700c1..efff06e1c 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -1930,6 +1930,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  		if (is_xe_device(drm_fd))
>  			xe_device_put(drm_fd);
>  
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
> index b79cd5030..7e46f5ec0 100644
> --- a/tests/kms_flip_event_leak.c
> +++ b/tests/kms_flip_event_leak.c
> @@ -79,7 +79,7 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
>  
>  	if (is_xe_device(fd))
>  		xe_device_put(fd);
> -	ret = close(fd);
> +	ret = drm_close_driver(fd);
>  	igt_assert_eq(ret, 0);
>  
>  	igt_device_set_master(data->drm_fd);
> @@ -121,6 +121,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> index 7e35693cf..950af8d8a 100644
> --- a/tests/kms_force_connector_basic.c
> +++ b/tests/kms_force_connector_basic.c
> @@ -65,7 +65,7 @@ static void reset_connectors(void)
>  		free(param);
>  	}
>  
> -	close(drm_fd);
> +	drm_close_driver(drm_fd);
>  }
>  
>  static void force_load_detect(int drm_fd, drmModeConnectorPtr connector, drmModeRes *res)
> @@ -415,7 +415,7 @@ end:
>  
>  	igt_fixture {
>  		drmModeFreeConnector(connector);
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  
>  		reset_connectors();
>  	}
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
> index 4adc7eee2..3cb568808 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -452,7 +452,7 @@ static void test_handle_protection(void) {
>  		if (is_xe_device(non_master_fd))
>  			xe_device_get(non_master_fd);
>  
> -		close(non_master_fd);
> +		drm_close_driver(non_master_fd);
>  	}
>  }
>  
> @@ -484,6 +484,6 @@ igt_main
>  		if (is_xe_device(fd))
>  			xe_device_put(fd);
>  
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
> index 2085d1453..e3db34502 100644
> --- a/tests/kms_hdmi_inject.c
> +++ b/tests/kms_hdmi_inject.c
> @@ -227,6 +227,6 @@ igt_main
>  		if (is_xe_device(drm_fd))
>  			xe_device_put(drm_fd);
>  
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/kms_hdr.c b/tests/kms_hdr.c
> index e9e52a9a1..ba19761e2 100644
> --- a/tests/kms_hdr.c
> +++ b/tests/kms_hdr.c
> @@ -666,6 +666,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.fd);
> +		drm_close_driver(data.fd);
>  	}
>  }
> diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
> index ec0483055..6059f1f8f 100644
> --- a/tests/kms_invalid_mode.c
> +++ b/tests/kms_invalid_mode.c
> @@ -300,6 +300,6 @@ igt_main
>  		igt_display_fini(&data.display);
>  		igt_reset_connectors();
>  		drmModeFreeResources(data.res);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_lease.c b/tests/kms_lease.c
> index 29a774ae8..c8ae98206 100644
> --- a/tests/kms_lease.c
> +++ b/tests/kms_lease.c
> @@ -1082,7 +1082,7 @@ static void multimaster_lease(data_t *data)
>  	drmSetClientCap(master2_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
>  	lease2_fd = create_simple_lease(master2_fd, data);
>  
> -	close(master2_fd); /* close is an implicit DropMaster */
> +	drm_close_driver(master2_fd); /* close is an implicit DropMaster */
>  	igt_assert(!is_master(lease2_fd));
>  
>  	igt_device_set_master(data->master.fd);
> @@ -1278,6 +1278,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(display);
> -		close(data.master.fd);
> +		drm_close_driver(data.master.fd);
>  	}
>  }
> diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
> index 97ef1ae48..ae1c65928 100644
> --- a/tests/kms_panel_fitting.c
> +++ b/tests/kms_panel_fitting.c
> @@ -288,6 +288,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
> index 84c73fd7f..aac3edb2a 100644
> --- a/tests/kms_pipe_crc_basic.c
> +++ b/tests/kms_pipe_crc_basic.c
> @@ -491,6 +491,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_plane.c b/tests/kms_plane.c
> index 10e16b638..8e0cd2129 100644
> --- a/tests/kms_plane.c
> +++ b/tests/kms_plane.c
> @@ -1318,6 +1318,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
> index 0d03e178a..341b85c7e 100644
> --- a/tests/kms_plane_alpha_blend.c
> +++ b/tests/kms_plane_alpha_blend.c
> @@ -715,6 +715,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
>  				    COMMIT_ATOMIC : COMMIT_LEGACY);
>  
>  		igt_display_fini(&data.display);
> -		close(data.gfx_fd);
> +		drm_close_driver(data.gfx_fd);
>  	}
>  }
> diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
> index 59b105c60..a7acb18e1 100644
> --- a/tests/kms_plane_cursor.c
> +++ b/tests/kms_plane_cursor.c
> @@ -331,6 +331,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index db9f5a54c..7aaf83c41 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -342,6 +342,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
> index 7dd9d586d..1f2bd65c3 100644
> --- a/tests/kms_plane_multiple.c
> +++ b/tests/kms_plane_multiple.c
> @@ -478,6 +478,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 0e7cd4a2a..986c76fc0 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -1324,6 +1324,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_prime.c b/tests/kms_prime.c
> index dd5ab993e..52f587961 100644
> --- a/tests/kms_prime.c
> +++ b/tests/kms_prime.c
> @@ -431,7 +431,7 @@ igt_main
>  			if (kms_poll_disabled)
>  				kms_poll_state_restore();
>  
> -			close(second_fd_hybrid);
> +			drm_close_driver(second_fd_hybrid);
>  		}
>  	}
>  
> @@ -454,9 +454,9 @@ igt_main
>  		}
>  
>  		igt_fixture
> -			close(second_fd_vgem);
> +			drm_close_driver(second_fd_vgem);
>  	}
>  
>  	igt_fixture
> -		close(first_fd);
> +		drm_close_driver(first_fd);
>  }
> diff --git a/tests/kms_prop_blob.c b/tests/kms_prop_blob.c
> index 6a5a5f410..fc172b5a3 100644
> --- a/tests/kms_prop_blob.c
> +++ b/tests/kms_prop_blob.c
> @@ -182,7 +182,7 @@ test_lifetime(int fd)
>  	/* Make sure properties are cleaned up on client exit. */
>  	prop_id2 = create_prop(fd2);
>  	igt_assert_eq(validate_prop(fd, prop_id2), 0);
> -	igt_assert_eq(close(fd2), 0);
> +	igt_assert_eq(drm_close_driver(fd2), 0);
>  	igt_assert_eq(validate_prop(fd, prop_id2), ENOENT);
>  
>  	igt_assert_eq(validate_prop(fd, prop_id), 0);
> @@ -210,7 +210,7 @@ test_multiple(int fd)
>  		igt_assert_eq(destroy_prop(fd2, prop_ids[i]), 0);
>  		igt_assert_eq(validate_prop(fd2, prop_ids[i]), ENOENT);
>  	}
> -	igt_assert_eq(close(fd2), 0);
> +	igt_assert_eq(drm_close_driver(fd2), 0);
>  
>  	fd2 = drm_open_driver(DRIVER_ANY);
>  	igt_assert_fd(fd2);
> @@ -221,7 +221,7 @@ test_multiple(int fd)
>  		igt_assert_eq(validate_prop(fd, prop_ids[i]), 0);
>  		igt_assert_eq(validate_prop(fd2, prop_ids[i]), 0);
>  	}
> -	igt_assert_eq(close(fd2), 0);
> +	igt_assert_eq(drm_close_driver(fd2), 0);
>  
>  	for (i = 0; i < ARRAY_SIZE(prop_ids); i++)
>  		igt_assert_eq(validate_prop(fd, prop_ids[i]), ENOENT);
> @@ -350,5 +350,5 @@ igt_main
>  	prop_tests(fd);
>  
>  	igt_fixture
> -		close(fd);
> +		drm_close_driver(fd);
>  }
> diff --git a/tests/kms_properties.c b/tests/kms_properties.c
> index 2fe8dfa66..8645808d1 100644
> --- a/tests/kms_properties.c
> +++ b/tests/kms_properties.c
> @@ -810,6 +810,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&display);
> -		close(display.drm_fd);
> +		drm_close_driver(display.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
> index 50df42953..9a41c1d14 100644
> --- a/tests/kms_rmfb.c
> +++ b/tests/kms_rmfb.c
> @@ -121,7 +121,7 @@ test_rmfb(struct rmfb_data *data, igt_output_t *output, enum pipe pipe, bool reo
>  	drmModeFreeCrtc(crtc);
>  
>  	if (reopen) {
> -		close(data->drm_fd);
> +		drm_close_driver(data->drm_fd);
>  
>  		data->drm_fd = drm_open_driver_master(DRIVER_ANY);
>  		drmSetClientCap(data->drm_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
> @@ -204,6 +204,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 28b4fd27c..f0d8b1172 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -1279,6 +1279,6 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.gfx_fd);
> +		drm_close_driver(data.gfx_fd);
>  	}
>  }
> diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
> index 906ae76de..31b806ae2 100644
> --- a/tests/kms_scaling_modes.c
> +++ b/tests/kms_scaling_modes.c
> @@ -138,6 +138,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
> index c8a3d6bbd..1b96f0017 100644
> --- a/tests/kms_sequence.c
> +++ b/tests/kms_sequence.c
> @@ -303,6 +303,6 @@ igt_main
>  	}
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index a611d9382..a85f4eaf2 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -978,6 +978,6 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
>  		if (is_xe_device(drm_fd))
>  			xe_device_put(drm_fd);
>  
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/kms_tv_load_detect.c b/tests/kms_tv_load_detect.c
> index 80ced9918..c8e5338d2 100644
> --- a/tests/kms_tv_load_detect.c
> +++ b/tests/kms_tv_load_detect.c
> @@ -84,6 +84,6 @@ igt_main
>  
>  	igt_fixture {
>  		drmModeFreeConnector(tv_connector);
> -		close(drm_fd);
> +		drm_close_driver(drm_fd);
>  	}
>  }
> diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
> index 635a136ab..957d600f1 100644
> --- a/tests/kms_universal_plane.c
> +++ b/tests/kms_universal_plane.c
> @@ -918,6 +918,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> -		close(data.drm_fd);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index da0ada78e..1aa8c1083 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -601,6 +601,6 @@ igt_main
>  			run_subtests_for_pipe(&data);
>  
>  	igt_fixture {
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
> index d2d79c4eb..6a766bfb9 100644
> --- a/tests/kms_vrr.c
> +++ b/tests/kms_vrr.c
> @@ -528,5 +528,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.drm_fd);

This is a fix, send it in separate patch.

>  	}
>  }
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index c4808b02c..db1f0884f 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -606,5 +606,6 @@ igt_main_args("b:c:dl", long_options, help_str, opt_handler, NULL)
>  		detach_crtc(&display, output);
>  		igt_remove_fb(display.drm_fd, &input_fb);
>  		igt_display_fini(&display);
> +		drm_close_driver(display.drm_fd);

Also a fix for separate patch.

Rest looks good.

Regards,
Kamil

>  	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd
  2023-05-16 16:50 ` [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
@ 2023-06-14 12:38   ` Kamil Konieczny
  0 siblings, 0 replies; 54+ messages in thread
From: Kamil Konieczny @ 2023-06-14 12:38 UTC (permalink / raw)
  To: igt-dev; +Cc: Christian König

Hi Bhanuprakash,

+cc Vitaliy and Christian

Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
Cc: Christian König <christian.koenig@amd.com>

Regards,
Kamil

On 2023-05-16 at 22:20:47 +0530, Bhanuprakash Modem wrote:
> To close the drm file descriptor, use igt helper drm_close_driver()
> instead of using close().
> 
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/amdgpu/amd_basic.c       | 2 +-
>  tests/amdgpu/amd_cs_nop.c      | 2 +-
>  tests/amdgpu/amd_deadlock.c    | 2 +-
>  tests/amdgpu/amd_info.c        | 2 +-
>  tests/amdgpu/amd_module_load.c | 2 +-
>  tests/amdgpu/amd_prime.c       | 6 +++---
>  6 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/tests/amdgpu/amd_basic.c b/tests/amdgpu/amd_basic.c
> index 38525a85e..f7d7f036f 100644
> --- a/tests/amdgpu/amd_basic.c
> +++ b/tests/amdgpu/amd_basic.c
> @@ -696,6 +696,6 @@ igt_main
>  
>  	igt_fixture {
>  		amdgpu_device_deinitialize(device);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_cs_nop.c b/tests/amdgpu/amd_cs_nop.c
> index ea3f6aae8..323c1b16a 100644
> --- a/tests/amdgpu/amd_cs_nop.c
> +++ b/tests/amdgpu/amd_cs_nop.c
> @@ -239,6 +239,6 @@ igt_main
>  	igt_fixture {
>  		amdgpu_cs_ctx_free(context);
>  		amdgpu_device_deinitialize(device);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_deadlock.c b/tests/amdgpu/amd_deadlock.c
> index df650c921..d805b8d18 100644
> --- a/tests/amdgpu/amd_deadlock.c
> +++ b/tests/amdgpu/amd_deadlock.c
> @@ -118,6 +118,6 @@ igt_main
>  
>  	igt_fixture {
>  		amdgpu_device_deinitialize(device);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_info.c b/tests/amdgpu/amd_info.c
> index d6aea827b..c1137ab4d 100644
> --- a/tests/amdgpu/amd_info.c
> +++ b/tests/amdgpu/amd_info.c
> @@ -154,6 +154,6 @@ igt_main
>  
>  	igt_fixture {
>  		amdgpu_device_deinitialize(dev);
> -		close(fd);
> +		drm_close_driver(fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_module_load.c b/tests/amdgpu/amd_module_load.c
> index 77df96d50..cbc9106f6 100644
> --- a/tests/amdgpu/amd_module_load.c
> +++ b/tests/amdgpu/amd_module_load.c
> @@ -54,7 +54,7 @@ static void sanity_check(void)
>  		err = -errno;
>  
>  	igt_set_timeout(0, NULL);
> -	close(fd);
> +	drm_close_driver(fd);
>  
>  	igt_assert_eq(err, 0);
>  }
> diff --git a/tests/amdgpu/amd_prime.c b/tests/amdgpu/amd_prime.c
> index 62924f15b..6916c3173 100644
> --- a/tests/amdgpu/amd_prime.c
> +++ b/tests/amdgpu/amd_prime.c
> @@ -166,7 +166,7 @@ static void amd_plug(amdgpu_device_handle device, struct cork *c)
>  static void unplug(struct cork *c)
>  {
>  	vgem_fence_signal(c->device, c->fence);
> -	close(c->device);
> +	drm_close_driver(c->device);
>  }
>  
>  static void i915_to_amd(int i915, int amd, amdgpu_device_handle device)
> @@ -461,7 +461,7 @@ igt_main
>  
>  	igt_fixture {
>  		amdgpu_device_deinitialize(device);
> -		close(amd);
> -		close(i915);
> +		drm_close_driver(amd);
> +		drm_close_driver(i915);
>  	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-05-16 16:50 ` [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit Bhanuprakash Modem
@ 2023-06-14 12:39   ` Kamil Konieczny
  2023-06-15  0:14     ` vitaly prosyak
  0 siblings, 1 reply; 54+ messages in thread
From: Kamil Konieczny @ 2023-06-14 12:39 UTC (permalink / raw)
  To: igt-dev; +Cc: David Zhang, Christian König

Hi Bhanuprakash,

+cc Vitaliy and Christian

Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
Cc: Christian König <christian.koenig@amd.com>

Regards,
Kamil

On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
> Close the file descriptor before exiting the test.
> 
> Cc: David Zhang <dingchen.zhang@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/amdgpu/amd_abm.c                 | 1 +
>  tests/amdgpu/amd_assr.c                | 1 +
>  tests/amdgpu/amd_freesync_video_mode.c | 1 +
>  tests/amdgpu/amd_mem_leak.c            | 1 +
>  tests/amdgpu/amd_psr.c                 | 3 ++-
>  tests/amdgpu/amd_vrr_range.c           | 1 +
>  6 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> index 9400ed806..082da7ed6 100644
> --- a/tests/amdgpu/amd_abm.c
> +++ b/tests/amdgpu/amd_abm.c
> @@ -378,5 +378,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> index 80cbbe8e9..fc2367f99 100644
> --- a/tests/amdgpu/amd_assr.c
> +++ b/tests/amdgpu/amd_assr.c
> @@ -299,5 +299,6 @@ igt_main
>  	igt_fixture
>  	{
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
> index 579d24436..62d42a06c 100644
> --- a/tests/amdgpu/amd_freesync_video_mode.c
> +++ b/tests/amdgpu/amd_freesync_video_mode.c
> @@ -868,5 +868,6 @@ igt_main
>  
>  	igt_fixture {
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.drm_fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
> index dee563cbe..e4a4b5c47 100644
> --- a/tests/amdgpu/amd_mem_leak.c
> +++ b/tests/amdgpu/amd_mem_leak.c
> @@ -232,5 +232,6 @@ igt_main
>  	igt_fixture
>  	{
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 966a0dccf..3932e143a 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
>  	 * panning the primary plane at the top-left of screen
>  	 * set alpha region in overlay plane and set alpha to 0.0 to show primary plane
>  	 * set cursor plane and starting from position of (0, 0)
> -	 */ 
> +	 */
>  	draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
>  	igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>  	igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>  		}
>  		close(data.debugfs_fd);
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.fd);
>  	}
>  }
> diff --git a/tests/amdgpu/amd_vrr_range.c b/tests/amdgpu/amd_vrr_range.c
> index 2f27296dd..cacd668cd 100644
> --- a/tests/amdgpu/amd_vrr_range.c
> +++ b/tests/amdgpu/amd_vrr_range.c
> @@ -338,5 +338,6 @@ igt_main
>  	igt_fixture
>  	{
>  		igt_display_fini(&data.display);
> +		drm_close_driver(data.fd);
>  	}
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-14 12:39   ` Kamil Konieczny
@ 2023-06-15  0:14     ` vitaly prosyak
  2023-06-15  4:46       ` Modem, Bhanuprakash
  0 siblings, 1 reply; 54+ messages in thread
From: vitaly prosyak @ 2023-06-15  0:14 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Bhanuprakash Modem, janga.rahul.kumar,
	David Zhang, Harry Wentland, Christian König

[-- Attachment #1: Type: text/plain, Size: 3764 bytes --]

Hi Kamil,

Thanks for letting us know about new(?) function
/drm_close_driver/.

Is there a pending change, I could not find this function in the DRM or IGT.

We open the driver with /drm_open_driver/, but then we use close vs /drm_close_driver/. I makes sense to have a symmetrical call:
/open/close/ and /drm_open_driver/drm_close_driver/


Thanks, Vitaly

On 2023-06-14 08:39, Kamil Konieczny wrote:
> Hi Bhanuprakash,
>
> +cc Vitaliy and Christian
>
> Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
>
> Regards,
> Kamil
>
> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>> Close the file descriptor before exiting the test.
>>
>> Cc: David Zhang <dingchen.zhang@amd.com>
>> Cc: Harry Wentland <harry.wentland@amd.com>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>>  tests/amdgpu/amd_abm.c                 | 1 +
>>  tests/amdgpu/amd_assr.c                | 1 +
>>  tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>  tests/amdgpu/amd_mem_leak.c            | 1 +
>>  tests/amdgpu/amd_psr.c                 | 3 ++-
>>  tests/amdgpu/amd_vrr_range.c           | 1 +
>>  6 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>> index 9400ed806..082da7ed6 100644
>> --- a/tests/amdgpu/amd_abm.c
>> +++ b/tests/amdgpu/amd_abm.c
>> @@ -378,5 +378,6 @@ igt_main
>>  
>>  	igt_fixture {
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.drm_fd);
>>  	}
>>  }
>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>> index 80cbbe8e9..fc2367f99 100644
>> --- a/tests/amdgpu/amd_assr.c
>> +++ b/tests/amdgpu/amd_assr.c
>> @@ -299,5 +299,6 @@ igt_main
>>  	igt_fixture
>>  	{
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.fd);
>>  	}
>>  }
>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
>> index 579d24436..62d42a06c 100644
>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>> @@ -868,5 +868,6 @@ igt_main
>>  
>>  	igt_fixture {
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.drm_fd);
>>  	}
>>  }
>> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
>> index dee563cbe..e4a4b5c47 100644
>> --- a/tests/amdgpu/amd_mem_leak.c
>> +++ b/tests/amdgpu/amd_mem_leak.c
>> @@ -232,5 +232,6 @@ igt_main
>>  	igt_fixture
>>  	{
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.fd);
>>  	}
>>  }
>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>> index 966a0dccf..3932e143a 100644
>> --- a/tests/amdgpu/amd_psr.c
>> +++ b/tests/amdgpu/amd_psr.c
>> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
>>  	 * panning the primary plane at the top-left of screen
>>  	 * set alpha region in overlay plane and set alpha to 0.0 to show primary plane
>>  	 * set cursor plane and starting from position of (0, 0)
>> -	 */ 
>> +	 */
>>  	draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
>>  	igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>  	igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>>  		}
>>  		close(data.debugfs_fd);
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.fd);
>>  	}
>>  }
>> diff --git a/tests/amdgpu/amd_vrr_range.c b/tests/amdgpu/amd_vrr_range.c
>> index 2f27296dd..cacd668cd 100644
>> --- a/tests/amdgpu/amd_vrr_range.c
>> +++ b/tests/amdgpu/amd_vrr_range.c
>> @@ -338,5 +338,6 @@ igt_main
>>  	igt_fixture
>>  	{
>>  		igt_display_fini(&data.display);
>> +		drm_close_driver(data.fd);
>>  	}
>>  }
>> -- 
>> 2.40.0
>>

[-- Attachment #2: Type: text/html, Size: 4527 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15  0:14     ` vitaly prosyak
@ 2023-06-15  4:46       ` Modem, Bhanuprakash
  2023-06-15  7:13         ` Christian König
  0 siblings, 1 reply; 54+ messages in thread
From: Modem, Bhanuprakash @ 2023-06-15  4:46 UTC (permalink / raw)
  To: vitaly prosyak, Kamil Konieczny, igt-dev, janga.rahul.kumar,
	David Zhang, Harry Wentland, Christian König

Hi Vitaliy,

On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
> Hi Kamil,
> 
> Thanks for letting us know about new(?) function
> /drm_close_driver/.
> 
> Is there a pending change, I could not find this function in the DRM or IGT.

Yes, changes are not yet landed into the IGT (WIP).

Please refer Patch 1/20 in this series:
https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5

- Bhanu

> 
> We open the driver with /drm_open_driver/, but then we use close vs 
> /drm_close_driver/. I makes sense to have a symmetrical call:
> /open/close/ and /drm_open_driver/drm_close_driver/
> 
> 
> Thanks, Vitaly
> 
> On 2023-06-14 08:39, Kamil Konieczny wrote:
>> Hi Bhanuprakash,
>>
>> +cc Vitaliy and Christian
>>
>> Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
>> Cc: Christian König<christian.koenig@amd.com>
>>
>> Regards,
>> Kamil
>>
>> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>>> Close the file descriptor before exiting the test.
>>>
>>> Cc: David Zhang<dingchen.zhang@amd.com>
>>> Cc: Harry Wentland<harry.wentland@amd.com>
>>> Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
>>> ---
>>>   tests/amdgpu/amd_abm.c                 | 1 +
>>>   tests/amdgpu/amd_assr.c                | 1 +
>>>   tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>>   tests/amdgpu/amd_mem_leak.c            | 1 +
>>>   tests/amdgpu/amd_psr.c                 | 3 ++-
>>>   tests/amdgpu/amd_vrr_range.c           | 1 +
>>>   6 files changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>>> index 9400ed806..082da7ed6 100644
>>> --- a/tests/amdgpu/amd_abm.c
>>> +++ b/tests/amdgpu/amd_abm.c
>>> @@ -378,5 +378,6 @@ igt_main
>>>   
>>>   	igt_fixture {
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.drm_fd);
>>>   	}
>>>   }
>>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>>> index 80cbbe8e9..fc2367f99 100644
>>> --- a/tests/amdgpu/amd_assr.c
>>> +++ b/tests/amdgpu/amd_assr.c
>>> @@ -299,5 +299,6 @@ igt_main
>>>   	igt_fixture
>>>   	{
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.fd);
>>>   	}
>>>   }
>>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c b/tests/amdgpu/amd_freesync_video_mode.c
>>> index 579d24436..62d42a06c 100644
>>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>>> @@ -868,5 +868,6 @@ igt_main
>>>   
>>>   	igt_fixture {
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.drm_fd);
>>>   	}
>>>   }
>>> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
>>> index dee563cbe..e4a4b5c47 100644
>>> --- a/tests/amdgpu/amd_mem_leak.c
>>> +++ b/tests/amdgpu/amd_mem_leak.c
>>> @@ -232,5 +232,6 @@ igt_main
>>>   	igt_fixture
>>>   	{
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.fd);
>>>   	}
>>>   }
>>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>>> index 966a0dccf..3932e143a 100644
>>> --- a/tests/amdgpu/amd_psr.c
>>> +++ b/tests/amdgpu/amd_psr.c
>>> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t *data, bool test_mpo)
>>>   	 * panning the primary plane at the top-left of screen
>>>   	 * set alpha region in overlay plane and set alpha to 0.0 to show primary plane
>>>   	 * set cursor plane and starting from position of (0, 0)
>>> -	 */
>>> +	 */
>>>   	draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
>>>   	igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>>   	igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>>> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, opt_handler, NULL)
>>>   		}
>>>   		close(data.debugfs_fd);
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.fd);
>>>   	}
>>>   }
>>> diff --git a/tests/amdgpu/amd_vrr_range.c b/tests/amdgpu/amd_vrr_range.c
>>> index 2f27296dd..cacd668cd 100644
>>> --- a/tests/amdgpu/amd_vrr_range.c
>>> +++ b/tests/amdgpu/amd_vrr_range.c
>>> @@ -338,5 +338,6 @@ igt_main
>>>   	igt_fixture
>>>   	{
>>>   		igt_display_fini(&data.display);
>>> +		drm_close_driver(data.fd);
>>>   	}
>>>   }
>>> -- 
>>> 2.40.0
>>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15  4:46       ` Modem, Bhanuprakash
@ 2023-06-15  7:13         ` Christian König
  2023-06-15  8:28           ` Modem, Bhanuprakash
  0 siblings, 1 reply; 54+ messages in thread
From: Christian König @ 2023-06-15  7:13 UTC (permalink / raw)
  To: Modem, Bhanuprakash, vitaly prosyak, Kamil Konieczny, igt-dev,
	janga.rahul.kumar, David Zhang, Harry Wentland

Hi guys,

Am 15.06.23 um 06:46 schrieb Modem, Bhanuprakash:
> Hi Vitaliy,
>
> On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
>> Hi Kamil,
>>
>> Thanks for letting us know about new(?) function
>> /drm_close_driver/.
>>
>> Is there a pending change, I could not find this function in the DRM 
>> or IGT.
>
> Yes, changes are not yet landed into the IGT (WIP).
>
> Please refer Patch 1/20 in this series:
> https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5

well neither this patch here nor the referenced series is correct.

The libdrm functions take ownership of the file descriptor given to them!

So the application or in this case IGT is *not* supposed to close them 
at all.

Regards,
Christian.

>
> - Bhanu
>
>>
>> We open the driver with /drm_open_driver/, but then we use close vs 
>> /drm_close_driver/. I makes sense to have a symmetrical call:
>> /open/close/ and /drm_open_driver/drm_close_driver/
>>
>>
>> Thanks, Vitaly
>>
>> On 2023-06-14 08:39, Kamil Konieczny wrote:
>>> Hi Bhanuprakash,
>>>
>>> +cc Vitaliy and Christian
>>>
>>> Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
>>> Cc: Christian König<christian.koenig@amd.com>
>>>
>>> Regards,
>>> Kamil
>>>
>>> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>>>> Close the file descriptor before exiting the test.
>>>>
>>>> Cc: David Zhang<dingchen.zhang@amd.com>
>>>> Cc: Harry Wentland<harry.wentland@amd.com>
>>>> Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
>>>> ---
>>>>   tests/amdgpu/amd_abm.c                 | 1 +
>>>>   tests/amdgpu/amd_assr.c                | 1 +
>>>>   tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>>>   tests/amdgpu/amd_mem_leak.c            | 1 +
>>>>   tests/amdgpu/amd_psr.c                 | 3 ++-
>>>>   tests/amdgpu/amd_vrr_range.c           | 1 +
>>>>   6 files changed, 7 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>>>> index 9400ed806..082da7ed6 100644
>>>> --- a/tests/amdgpu/amd_abm.c
>>>> +++ b/tests/amdgpu/amd_abm.c
>>>> @@ -378,5 +378,6 @@ igt_main
>>>>         igt_fixture {
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.drm_fd);
>>>>       }
>>>>   }
>>>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>>>> index 80cbbe8e9..fc2367f99 100644
>>>> --- a/tests/amdgpu/amd_assr.c
>>>> +++ b/tests/amdgpu/amd_assr.c
>>>> @@ -299,5 +299,6 @@ igt_main
>>>>       igt_fixture
>>>>       {
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.fd);
>>>>       }
>>>>   }
>>>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c 
>>>> b/tests/amdgpu/amd_freesync_video_mode.c
>>>> index 579d24436..62d42a06c 100644
>>>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>>>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>>>> @@ -868,5 +868,6 @@ igt_main
>>>>         igt_fixture {
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.drm_fd);
>>>>       }
>>>>   }
>>>> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
>>>> index dee563cbe..e4a4b5c47 100644
>>>> --- a/tests/amdgpu/amd_mem_leak.c
>>>> +++ b/tests/amdgpu/amd_mem_leak.c
>>>> @@ -232,5 +232,6 @@ igt_main
>>>>       igt_fixture
>>>>       {
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.fd);
>>>>       }
>>>>   }
>>>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>>>> index 966a0dccf..3932e143a 100644
>>>> --- a/tests/amdgpu/amd_psr.c
>>>> +++ b/tests/amdgpu/amd_psr.c
>>>> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t 
>>>> *data, bool test_mpo)
>>>>        * panning the primary plane at the top-left of screen
>>>>        * set alpha region in overlay plane and set alpha to 0.0 to 
>>>> show primary plane
>>>>        * set cursor plane and starting from position of (0, 0)
>>>> -     */
>>>> +     */
>>>>       draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, 
>>>> data->pfb_h, 1.0, 1.0, 1.0, .0);
>>>>       igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>>>       igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>>>> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, 
>>>> opt_handler, NULL)
>>>>           }
>>>>           close(data.debugfs_fd);
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.fd);
>>>>       }
>>>>   }
>>>> diff --git a/tests/amdgpu/amd_vrr_range.c 
>>>> b/tests/amdgpu/amd_vrr_range.c
>>>> index 2f27296dd..cacd668cd 100644
>>>> --- a/tests/amdgpu/amd_vrr_range.c
>>>> +++ b/tests/amdgpu/amd_vrr_range.c
>>>> @@ -338,5 +338,6 @@ igt_main
>>>>       igt_fixture
>>>>       {
>>>>           igt_display_fini(&data.display);
>>>> +        drm_close_driver(data.fd);
>>>>       }
>>>>   }
>>>> -- 
>>>> 2.40.0
>>>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15  7:13         ` Christian König
@ 2023-06-15  8:28           ` Modem, Bhanuprakash
  2023-06-15  8:43             ` Christian König
  0 siblings, 1 reply; 54+ messages in thread
From: Modem, Bhanuprakash @ 2023-06-15  8:28 UTC (permalink / raw)
  To: Christian König, vitaly prosyak, Kamil Konieczny, igt-dev,
	janga.rahul.kumar, David Zhang, Harry Wentland



On Thu-15-06-2023 12:43 pm, Christian König wrote:
> Hi guys,
> 
> Am 15.06.23 um 06:46 schrieb Modem, Bhanuprakash:
>> Hi Vitaliy,
>>
>> On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
>>> Hi Kamil,
>>>
>>> Thanks for letting us know about new(?) function
>>> /drm_close_driver/.
>>>
>>> Is there a pending change, I could not find this function in the DRM 
>>> or IGT.
>>
>> Yes, changes are not yet landed into the IGT (WIP).
>>
>> Please refer Patch 1/20 in this series:
>> https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5
> 
> well neither this patch here nor the referenced series is correct.
> 
> The libdrm functions take ownership of the file descriptor given to them!
> 
> So the application or in this case IGT is *not* supposed to close them 
> at all.

Unfortunately, that is not correct.

The application (IGT in this case), opens the driver and uses the libdrm 
functions to perform operations (like ioctl), but file descriptor is 
still with the IGT only.

Once it is done with the operations performed, it's IGT responsibility 
to close the driver (I think there are few gcc options available to 
close the device on IGT exit)

A typical IGT sudo-code:

	fd = open(/dev/device);

	libdrm_call(fd);
	libdrm_call(fd);

	close(fd);

- Bhanu

> 
> Regards,
> Christian.
> 
>>
>> - Bhanu
>>
>>>
>>> We open the driver with /drm_open_driver/, but then we use close vs 
>>> /drm_close_driver/. I makes sense to have a symmetrical call:
>>> /open/close/ and /drm_open_driver/drm_close_driver/
>>>
>>>
>>> Thanks, Vitaly
>>>
>>> On 2023-06-14 08:39, Kamil Konieczny wrote:
>>>> Hi Bhanuprakash,
>>>>
>>>> +cc Vitaliy and Christian
>>>>
>>>> Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
>>>> Cc: Christian König<christian.koenig@amd.com>
>>>>
>>>> Regards,
>>>> Kamil
>>>>
>>>> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>>>>> Close the file descriptor before exiting the test.
>>>>>
>>>>> Cc: David Zhang<dingchen.zhang@amd.com>
>>>>> Cc: Harry Wentland<harry.wentland@amd.com>
>>>>> Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
>>>>> ---
>>>>>   tests/amdgpu/amd_abm.c                 | 1 +
>>>>>   tests/amdgpu/amd_assr.c                | 1 +
>>>>>   tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>>>>   tests/amdgpu/amd_mem_leak.c            | 1 +
>>>>>   tests/amdgpu/amd_psr.c                 | 3 ++-
>>>>>   tests/amdgpu/amd_vrr_range.c           | 1 +
>>>>>   6 files changed, 7 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>>>>> index 9400ed806..082da7ed6 100644
>>>>> --- a/tests/amdgpu/amd_abm.c
>>>>> +++ b/tests/amdgpu/amd_abm.c
>>>>> @@ -378,5 +378,6 @@ igt_main
>>>>>         igt_fixture {
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.drm_fd);
>>>>>       }
>>>>>   }
>>>>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>>>>> index 80cbbe8e9..fc2367f99 100644
>>>>> --- a/tests/amdgpu/amd_assr.c
>>>>> +++ b/tests/amdgpu/amd_assr.c
>>>>> @@ -299,5 +299,6 @@ igt_main
>>>>>       igt_fixture
>>>>>       {
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.fd);
>>>>>       }
>>>>>   }
>>>>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c 
>>>>> b/tests/amdgpu/amd_freesync_video_mode.c
>>>>> index 579d24436..62d42a06c 100644
>>>>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>>>>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>>>>> @@ -868,5 +868,6 @@ igt_main
>>>>>         igt_fixture {
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.drm_fd);
>>>>>       }
>>>>>   }
>>>>> diff --git a/tests/amdgpu/amd_mem_leak.c b/tests/amdgpu/amd_mem_leak.c
>>>>> index dee563cbe..e4a4b5c47 100644
>>>>> --- a/tests/amdgpu/amd_mem_leak.c
>>>>> +++ b/tests/amdgpu/amd_mem_leak.c
>>>>> @@ -232,5 +232,6 @@ igt_main
>>>>>       igt_fixture
>>>>>       {
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.fd);
>>>>>       }
>>>>>   }
>>>>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>>>>> index 966a0dccf..3932e143a 100644
>>>>> --- a/tests/amdgpu/amd_psr.c
>>>>> +++ b/tests/amdgpu/amd_psr.c
>>>>> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t 
>>>>> *data, bool test_mpo)
>>>>>        * panning the primary plane at the top-left of screen
>>>>>        * set alpha region in overlay plane and set alpha to 0.0 to 
>>>>> show primary plane
>>>>>        * set cursor plane and starting from position of (0, 0)
>>>>> -     */
>>>>> +     */
>>>>>       draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, 
>>>>> data->pfb_h, 1.0, 1.0, 1.0, .0);
>>>>>       igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>>>>       igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>>>>> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, 
>>>>> opt_handler, NULL)
>>>>>           }
>>>>>           close(data.debugfs_fd);
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.fd);
>>>>>       }
>>>>>   }
>>>>> diff --git a/tests/amdgpu/amd_vrr_range.c 
>>>>> b/tests/amdgpu/amd_vrr_range.c
>>>>> index 2f27296dd..cacd668cd 100644
>>>>> --- a/tests/amdgpu/amd_vrr_range.c
>>>>> +++ b/tests/amdgpu/amd_vrr_range.c
>>>>> @@ -338,5 +338,6 @@ igt_main
>>>>>       igt_fixture
>>>>>       {
>>>>>           igt_display_fini(&data.display);
>>>>> +        drm_close_driver(data.fd);
>>>>>       }
>>>>>   }
>>>>> -- 
>>>>> 2.40.0
>>>>>
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15  8:28           ` Modem, Bhanuprakash
@ 2023-06-15  8:43             ` Christian König
  2023-06-15 11:48               ` Kamil Konieczny
  0 siblings, 1 reply; 54+ messages in thread
From: Christian König @ 2023-06-15  8:43 UTC (permalink / raw)
  To: Modem, Bhanuprakash, vitaly prosyak, Kamil Konieczny, igt-dev,
	janga.rahul.kumar, David Zhang, Harry Wentland

Am 15.06.23 um 10:28 schrieb Modem, Bhanuprakash:
>
>
> On Thu-15-06-2023 12:43 pm, Christian König wrote:
>> Hi guys,
>>
>> Am 15.06.23 um 06:46 schrieb Modem, Bhanuprakash:
>>> Hi Vitaliy,
>>>
>>> On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
>>>> Hi Kamil,
>>>>
>>>> Thanks for letting us know about new(?) function
>>>> /drm_close_driver/.
>>>>
>>>> Is there a pending change, I could not find this function in the 
>>>> DRM or IGT.
>>>
>>> Yes, changes are not yet landed into the IGT (WIP).
>>>
>>> Please refer Patch 1/20 in this series:
>>> https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5
>>
>> well neither this patch here nor the referenced series is correct.
>>
>> The libdrm functions take ownership of the file descriptor given to 
>> them!
>>
>> So the application or in this case IGT is *not* supposed to close 
>> them at all.
>
> Unfortunately, that is not correct.
>
> The application (IGT in this case), opens the driver and uses the 
> libdrm functions to perform operations (like ioctl), but file 
> descriptor is still with the IGT only.

Ok, so we dup() the file descriptor somewhere?

Because at least amdgpu_device_free_internal() is clearly closing the fd 
before freeing the device structure:

static void amdgpu_device_free_internal(amdgpu_device_handle dev)
{
...
         close(dev->fd);
...
         free(dev);
}


>
> Once it is done with the operations performed, it's IGT responsibility 
> to close the driver (I think there are few gcc options available to 
> close the device on IGT exit)

Well no, that's not related to gcc in any way possible. File descriptors 
are closed by the kernel on process exit.

Regards,
Christian.

>
> A typical IGT sudo-code:
>
>     fd = open(/dev/device);
>
>     libdrm_call(fd);
>     libdrm_call(fd);
>
>     close(fd);
>
> - Bhanu
>
>>
>> Regards,
>> Christian.
>>
>>>
>>> - Bhanu
>>>
>>>>
>>>> We open the driver with /drm_open_driver/, but then we use close vs 
>>>> /drm_close_driver/. I makes sense to have a symmetrical call:
>>>> /open/close/ and /drm_open_driver/drm_close_driver/
>>>>
>>>>
>>>> Thanks, Vitaly
>>>>
>>>> On 2023-06-14 08:39, Kamil Konieczny wrote:
>>>>> Hi Bhanuprakash,
>>>>>
>>>>> +cc Vitaliy and Christian
>>>>>
>>>>> Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
>>>>> Cc: Christian König<christian.koenig@amd.com>
>>>>>
>>>>> Regards,
>>>>> Kamil
>>>>>
>>>>> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>>>>>> Close the file descriptor before exiting the test.
>>>>>>
>>>>>> Cc: David Zhang<dingchen.zhang@amd.com>
>>>>>> Cc: Harry Wentland<harry.wentland@amd.com>
>>>>>> Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
>>>>>> ---
>>>>>>   tests/amdgpu/amd_abm.c                 | 1 +
>>>>>>   tests/amdgpu/amd_assr.c                | 1 +
>>>>>>   tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>>>>>   tests/amdgpu/amd_mem_leak.c            | 1 +
>>>>>>   tests/amdgpu/amd_psr.c                 | 3 ++-
>>>>>>   tests/amdgpu/amd_vrr_range.c           | 1 +
>>>>>>   6 files changed, 7 insertions(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>>>>>> index 9400ed806..082da7ed6 100644
>>>>>> --- a/tests/amdgpu/amd_abm.c
>>>>>> +++ b/tests/amdgpu/amd_abm.c
>>>>>> @@ -378,5 +378,6 @@ igt_main
>>>>>>         igt_fixture {
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.drm_fd);
>>>>>>       }
>>>>>>   }
>>>>>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>>>>>> index 80cbbe8e9..fc2367f99 100644
>>>>>> --- a/tests/amdgpu/amd_assr.c
>>>>>> +++ b/tests/amdgpu/amd_assr.c
>>>>>> @@ -299,5 +299,6 @@ igt_main
>>>>>>       igt_fixture
>>>>>>       {
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.fd);
>>>>>>       }
>>>>>>   }
>>>>>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c 
>>>>>> b/tests/amdgpu/amd_freesync_video_mode.c
>>>>>> index 579d24436..62d42a06c 100644
>>>>>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>>>>>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>>>>>> @@ -868,5 +868,6 @@ igt_main
>>>>>>         igt_fixture {
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.drm_fd);
>>>>>>       }
>>>>>>   }
>>>>>> diff --git a/tests/amdgpu/amd_mem_leak.c 
>>>>>> b/tests/amdgpu/amd_mem_leak.c
>>>>>> index dee563cbe..e4a4b5c47 100644
>>>>>> --- a/tests/amdgpu/amd_mem_leak.c
>>>>>> +++ b/tests/amdgpu/amd_mem_leak.c
>>>>>> @@ -232,5 +232,6 @@ igt_main
>>>>>>       igt_fixture
>>>>>>       {
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.fd);
>>>>>>       }
>>>>>>   }
>>>>>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>>>>>> index 966a0dccf..3932e143a 100644
>>>>>> --- a/tests/amdgpu/amd_psr.c
>>>>>> +++ b/tests/amdgpu/amd_psr.c
>>>>>> @@ -640,7 +640,7 @@ static void run_check_psr_su_cursor(data_t 
>>>>>> *data, bool test_mpo)
>>>>>>        * panning the primary plane at the top-left of screen
>>>>>>        * set alpha region in overlay plane and set alpha to 0.0 
>>>>>> to show primary plane
>>>>>>        * set cursor plane and starting from position of (0, 0)
>>>>>> -     */
>>>>>> +     */
>>>>>>       draw_color_alpha(&data->ov_fb[0], 0, 0, data->pfb_w, 
>>>>>> data->pfb_h, 1.0, 1.0, 1.0, .0);
>>>>>>       igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>>>>>       igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>>>>>> @@ -763,5 +763,6 @@ igt_main_args("", long_options, help_str, 
>>>>>> opt_handler, NULL)
>>>>>>           }
>>>>>>           close(data.debugfs_fd);
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.fd);
>>>>>>       }
>>>>>>   }
>>>>>> diff --git a/tests/amdgpu/amd_vrr_range.c 
>>>>>> b/tests/amdgpu/amd_vrr_range.c
>>>>>> index 2f27296dd..cacd668cd 100644
>>>>>> --- a/tests/amdgpu/amd_vrr_range.c
>>>>>> +++ b/tests/amdgpu/amd_vrr_range.c
>>>>>> @@ -338,5 +338,6 @@ igt_main
>>>>>>       igt_fixture
>>>>>>       {
>>>>>>           igt_display_fini(&data.display);
>>>>>> +        drm_close_driver(data.fd);
>>>>>>       }
>>>>>>   }
>>>>>> -- 
>>>>>> 2.40.0
>>>>>>
>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15  8:43             ` Christian König
@ 2023-06-15 11:48               ` Kamil Konieczny
  2023-06-15 12:03                 ` Christian König
  0 siblings, 1 reply; 54+ messages in thread
From: Kamil Konieczny @ 2023-06-15 11:48 UTC (permalink / raw)
  To: igt-dev; +Cc: Vitaly Prosyak, Christian König

Hi Christian,

I dropped David Zhang from Cc because I got bounce:

David Zhang (dingchen.zhang@amd.com)<mailto:dingchen.zhang@amd.com>
The email address you entered couldn't be found

Maybe address should be david.zhang@amd.com ?

On 2023-06-15 at 10:43:05 +0200, Christian König wrote:
> Am 15.06.23 um 10:28 schrieb Modem, Bhanuprakash:
> > 
> > 
> > On Thu-15-06-2023 12:43 pm, Christian König wrote:
> > > Hi guys,
> > > 
> > > Am 15.06.23 um 06:46 schrieb Modem, Bhanuprakash:
> > > > Hi Vitaliy,
> > > > 
> > > > On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
> > > > > Hi Kamil,
> > > > > 
> > > > > Thanks for letting us know about new(?) function
> > > > > /drm_close_driver/.
> > > > > 
> > > > > Is there a pending change, I could not find this function in
> > > > > the DRM or IGT.
> > > > 
> > > > Yes, changes are not yet landed into the IGT (WIP).
> > > > 
> > > > Please refer Patch 1/20 in this series:
> > > > https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5
> > > 
> > > well neither this patch here nor the referenced series is correct.
> > > 
> > > The libdrm functions take ownership of the file descriptor given to
> > > them!
> > > 
> > > So the application or in this case IGT is *not* supposed to close
> > > them at all.
> > 
> > Unfortunately, that is not correct.
> > 
> > The application (IGT in this case), opens the driver and uses the libdrm
> > functions to perform operations (like ioctl), but file descriptor is
> > still with the IGT only.
> 
> Ok, so we dup() the file descriptor somewhere?
> 
> Because at least amdgpu_device_free_internal() is clearly closing the fd
> before freeing the device structure:
> 
> static void amdgpu_device_free_internal(amdgpu_device_handle dev)
> {
> ...
>         close(dev->fd);
> ...
>         free(dev);
> }
> 

I see, so we should drop amd patches with drm_close_driver()
from this patch series.

Btw I do see in tests/amdgpu/amd_info.c at last fixture:

      igt_fixture {
                amdgpu_device_deinitialize(dev);
                close(fd);
        }

That "close(fd);" should be removed from amd_info.c test.

Regards,
Kamil

> 
> > 
> > Once it is done with the operations performed, it's IGT responsibility
> > to close the driver (I think there are few gcc options available to
> > close the device on IGT exit)
> 
> Well no, that's not related to gcc in any way possible. File descriptors are
> closed by the kernel on process exit.
> 
> Regards,
> Christian.
> 
> > 
> > A typical IGT sudo-code:
> > 
> >     fd = open(/dev/device);
> > 
> >     libdrm_call(fd);
> >     libdrm_call(fd);
> > 
> >     close(fd);
> > 
> > - Bhanu
> > 
> > > 
> > > Regards,
> > > Christian.
> > > 
> > > > 
> > > > - Bhanu
> > > > 
> > > > > 
> > > > > We open the driver with /drm_open_driver/, but then we use
> > > > > close vs /drm_close_driver/. I makes sense to have a
> > > > > symmetrical call:
> > > > > /open/close/ and /drm_open_driver/drm_close_driver/
> > > > > 
> > > > > 
> > > > > Thanks, Vitaly
> > > > > 
> > > > > On 2023-06-14 08:39, Kamil Konieczny wrote:
> > > > > > Hi Bhanuprakash,
> > > > > > 
> > > > > > +cc Vitaliy and Christian
> > > > > > 
> > > > > > Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
> > > > > > Cc: Christian König<christian.koenig@amd.com>
> > > > > > 
> > > > > > Regards,
> > > > > > Kamil
> > > > > > 
> > > > > > On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
> > > > > > > Close the file descriptor before exiting the test.
> > > > > > > 
> > > > > > > Cc: David Zhang<dingchen.zhang@amd.com>
> > > > > > > Cc: Harry Wentland<harry.wentland@amd.com>
> > > > > > > Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
> > > > > > > ---
> > > > > > >   tests/amdgpu/amd_abm.c                 | 1 +
> > > > > > >   tests/amdgpu/amd_assr.c                | 1 +
> > > > > > >   tests/amdgpu/amd_freesync_video_mode.c | 1 +
> > > > > > >   tests/amdgpu/amd_mem_leak.c            | 1 +
> > > > > > >   tests/amdgpu/amd_psr.c                 | 3 ++-
> > > > > > >   tests/amdgpu/amd_vrr_range.c           | 1 +
> > > > > > >   6 files changed, 7 insertions(+), 1 deletion(-)
> > > > > > > 
> > > > > > > diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
> > > > > > > index 9400ed806..082da7ed6 100644
> > > > > > > --- a/tests/amdgpu/amd_abm.c
> > > > > > > +++ b/tests/amdgpu/amd_abm.c
> > > > > > > @@ -378,5 +378,6 @@ igt_main
> > > > > > >         igt_fixture {
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.drm_fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
> > > > > > > index 80cbbe8e9..fc2367f99 100644
> > > > > > > --- a/tests/amdgpu/amd_assr.c
> > > > > > > +++ b/tests/amdgpu/amd_assr.c
> > > > > > > @@ -299,5 +299,6 @@ igt_main
> > > > > > >       igt_fixture
> > > > > > >       {
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > diff --git a/tests/amdgpu/amd_freesync_video_mode.c
> > > > > > > b/tests/amdgpu/amd_freesync_video_mode.c
> > > > > > > index 579d24436..62d42a06c 100644
> > > > > > > --- a/tests/amdgpu/amd_freesync_video_mode.c
> > > > > > > +++ b/tests/amdgpu/amd_freesync_video_mode.c
> > > > > > > @@ -868,5 +868,6 @@ igt_main
> > > > > > >         igt_fixture {
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.drm_fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > diff --git a/tests/amdgpu/amd_mem_leak.c
> > > > > > > b/tests/amdgpu/amd_mem_leak.c
> > > > > > > index dee563cbe..e4a4b5c47 100644
> > > > > > > --- a/tests/amdgpu/amd_mem_leak.c
> > > > > > > +++ b/tests/amdgpu/amd_mem_leak.c
> > > > > > > @@ -232,5 +232,6 @@ igt_main
> > > > > > >       igt_fixture
> > > > > > >       {
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> > > > > > > index 966a0dccf..3932e143a 100644
> > > > > > > --- a/tests/amdgpu/amd_psr.c
> > > > > > > +++ b/tests/amdgpu/amd_psr.c
> > > > > > > @@ -640,7 +640,7 @@ static void
> > > > > > > run_check_psr_su_cursor(data_t *data, bool test_mpo)
> > > > > > >        * panning the primary plane at the top-left of screen
> > > > > > >        * set alpha region in overlay plane and set
> > > > > > > alpha to 0.0 to show primary plane
> > > > > > >        * set cursor plane and starting from position of (0, 0)
> > > > > > > -     */
> > > > > > > +     */
> > > > > > >       draw_color_alpha(&data->ov_fb[0], 0, 0,
> > > > > > > data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
> > > > > > >       igt_plane_set_fb(data->primary, &data->pm_fb[0]);
> > > > > > >       igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
> > > > > > > @@ -763,5 +763,6 @@ igt_main_args("", long_options,
> > > > > > > help_str, opt_handler, NULL)
> > > > > > >           }
> > > > > > >           close(data.debugfs_fd);
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > diff --git a/tests/amdgpu/amd_vrr_range.c
> > > > > > > b/tests/amdgpu/amd_vrr_range.c
> > > > > > > index 2f27296dd..cacd668cd 100644
> > > > > > > --- a/tests/amdgpu/amd_vrr_range.c
> > > > > > > +++ b/tests/amdgpu/amd_vrr_range.c
> > > > > > > @@ -338,5 +338,6 @@ igt_main
> > > > > > >       igt_fixture
> > > > > > >       {
> > > > > > >           igt_display_fini(&data.display);
> > > > > > > +        drm_close_driver(data.fd);
> > > > > > >       }
> > > > > > >   }
> > > > > > > -- 
> > > > > > > 2.40.0
> > > > > > > 
> > > 
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit
  2023-06-15 11:48               ` Kamil Konieczny
@ 2023-06-15 12:03                 ` Christian König
  0 siblings, 0 replies; 54+ messages in thread
From: Christian König @ 2023-06-15 12:03 UTC (permalink / raw)
  To: Kamil Konieczny, igt-dev, Bhanuprakash Modem, Vitaly Prosyak,
	Janga Rahul Kumar, Harry Wentland

Am 15.06.23 um 13:48 schrieb Kamil Konieczny:
> Hi Christian,
>
> I dropped David Zhang from Cc because I got bounce:
>
> David Zhang (dingchen.zhang@amd.com)<mailto:dingchen.zhang@amd.com>
> The email address you entered couldn't be found
>
> Maybe address should be david.zhang@amd.com ?

David unfortunately doesn't work for AMD any more. Just completely drop him.

>
> On 2023-06-15 at 10:43:05 +0200, Christian König wrote:
>> Am 15.06.23 um 10:28 schrieb Modem, Bhanuprakash:
>>>
>>> On Thu-15-06-2023 12:43 pm, Christian König wrote:
>>>> Hi guys,
>>>>
>>>> Am 15.06.23 um 06:46 schrieb Modem, Bhanuprakash:
>>>>> Hi Vitaliy,
>>>>>
>>>>> On Thu-15-06-2023 05:44 am, vitaly prosyak wrote:
>>>>>> Hi Kamil,
>>>>>>
>>>>>> Thanks for letting us know about new(?) function
>>>>>> /drm_close_driver/.
>>>>>>
>>>>>> Is there a pending change, I could not find this function in
>>>>>> the DRM or IGT.
>>>>> Yes, changes are not yet landed into the IGT (WIP).
>>>>>
>>>>> Please refer Patch 1/20 in this series:
>>>>> https://patchwork.freedesktop.org/patch/538070/?series=117263&rev=5
>>>> well neither this patch here nor the referenced series is correct.
>>>>
>>>> The libdrm functions take ownership of the file descriptor given to
>>>> them!
>>>>
>>>> So the application or in this case IGT is *not* supposed to close
>>>> them at all.
>>> Unfortunately, that is not correct.
>>>
>>> The application (IGT in this case), opens the driver and uses the libdrm
>>> functions to perform operations (like ioctl), but file descriptor is
>>> still with the IGT only.
>> Ok, so we dup() the file descriptor somewhere?
>>
>> Because at least amdgpu_device_free_internal() is clearly closing the fd
>> before freeing the device structure:
>>
>> static void amdgpu_device_free_internal(amdgpu_device_handle dev)
>> {
>> ...
>>          close(dev->fd);
>> ...
>>          free(dev);
>> }
>>
> I see, so we should drop amd patches with drm_close_driver()
> from this patch series.
>
> Btw I do see in tests/amdgpu/amd_info.c at last fixture:
>
>        igt_fixture {
>                  amdgpu_device_deinitialize(dev);
>                  close(fd);
>          }
>
> That "close(fd);" should be removed from amd_info.c test.

After digging through the full source code I've found the matching dup() 
to the close in amdgpu_device_free_internal().

It's part of amdgpu_device_initialize() but uses the fnctl() version of 
dup(), so my "grep dup*" I couldn't find it of hand:

dev->fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);

Sorry for the noise, your original patch was correct to begin with.

Regards,
Christian.

>
> Regards,
> Kamil
>
>>> Once it is done with the operations performed, it's IGT responsibility
>>> to close the driver (I think there are few gcc options available to
>>> close the device on IGT exit)
>> Well no, that's not related to gcc in any way possible. File descriptors are
>> closed by the kernel on process exit.
>>
>> Regards,
>> Christian.
>>
>>> A typical IGT sudo-code:
>>>
>>>      fd = open(/dev/device);
>>>
>>>      libdrm_call(fd);
>>>      libdrm_call(fd);
>>>
>>>      close(fd);
>>>
>>> - Bhanu
>>>
>>>> Regards,
>>>> Christian.
>>>>
>>>>> - Bhanu
>>>>>
>>>>>> We open the driver with /drm_open_driver/, but then we use
>>>>>> close vs /drm_close_driver/. I makes sense to have a
>>>>>> symmetrical call:
>>>>>> /open/close/ and /drm_open_driver/drm_close_driver/
>>>>>>
>>>>>>
>>>>>> Thanks, Vitaly
>>>>>>
>>>>>> On 2023-06-14 08:39, Kamil Konieczny wrote:
>>>>>>> Hi Bhanuprakash,
>>>>>>>
>>>>>>> +cc Vitaliy and Christian
>>>>>>>
>>>>>>> Cc: Vitaly Prosyak<vitaly.prosyak@amd.com>
>>>>>>> Cc: Christian König<christian.koenig@amd.com>
>>>>>>>
>>>>>>> Regards,
>>>>>>> Kamil
>>>>>>>
>>>>>>> On 2023-05-16 at 22:20:43 +0530, Bhanuprakash Modem wrote:
>>>>>>>> Close the file descriptor before exiting the test.
>>>>>>>>
>>>>>>>> Cc: David Zhang<dingchen.zhang@amd.com>
>>>>>>>> Cc: Harry Wentland<harry.wentland@amd.com>
>>>>>>>> Signed-off-by: Bhanuprakash Modem<bhanuprakash.modem@intel.com>
>>>>>>>> ---
>>>>>>>>    tests/amdgpu/amd_abm.c                 | 1 +
>>>>>>>>    tests/amdgpu/amd_assr.c                | 1 +
>>>>>>>>    tests/amdgpu/amd_freesync_video_mode.c | 1 +
>>>>>>>>    tests/amdgpu/amd_mem_leak.c            | 1 +
>>>>>>>>    tests/amdgpu/amd_psr.c                 | 3 ++-
>>>>>>>>    tests/amdgpu/amd_vrr_range.c           | 1 +
>>>>>>>>    6 files changed, 7 insertions(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/tests/amdgpu/amd_abm.c b/tests/amdgpu/amd_abm.c
>>>>>>>> index 9400ed806..082da7ed6 100644
>>>>>>>> --- a/tests/amdgpu/amd_abm.c
>>>>>>>> +++ b/tests/amdgpu/amd_abm.c
>>>>>>>> @@ -378,5 +378,6 @@ igt_main
>>>>>>>>          igt_fixture {
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.drm_fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> diff --git a/tests/amdgpu/amd_assr.c b/tests/amdgpu/amd_assr.c
>>>>>>>> index 80cbbe8e9..fc2367f99 100644
>>>>>>>> --- a/tests/amdgpu/amd_assr.c
>>>>>>>> +++ b/tests/amdgpu/amd_assr.c
>>>>>>>> @@ -299,5 +299,6 @@ igt_main
>>>>>>>>        igt_fixture
>>>>>>>>        {
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> diff --git a/tests/amdgpu/amd_freesync_video_mode.c
>>>>>>>> b/tests/amdgpu/amd_freesync_video_mode.c
>>>>>>>> index 579d24436..62d42a06c 100644
>>>>>>>> --- a/tests/amdgpu/amd_freesync_video_mode.c
>>>>>>>> +++ b/tests/amdgpu/amd_freesync_video_mode.c
>>>>>>>> @@ -868,5 +868,6 @@ igt_main
>>>>>>>>          igt_fixture {
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.drm_fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> diff --git a/tests/amdgpu/amd_mem_leak.c
>>>>>>>> b/tests/amdgpu/amd_mem_leak.c
>>>>>>>> index dee563cbe..e4a4b5c47 100644
>>>>>>>> --- a/tests/amdgpu/amd_mem_leak.c
>>>>>>>> +++ b/tests/amdgpu/amd_mem_leak.c
>>>>>>>> @@ -232,5 +232,6 @@ igt_main
>>>>>>>>        igt_fixture
>>>>>>>>        {
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
>>>>>>>> index 966a0dccf..3932e143a 100644
>>>>>>>> --- a/tests/amdgpu/amd_psr.c
>>>>>>>> +++ b/tests/amdgpu/amd_psr.c
>>>>>>>> @@ -640,7 +640,7 @@ static void
>>>>>>>> run_check_psr_su_cursor(data_t *data, bool test_mpo)
>>>>>>>>         * panning the primary plane at the top-left of screen
>>>>>>>>         * set alpha region in overlay plane and set
>>>>>>>> alpha to 0.0 to show primary plane
>>>>>>>>         * set cursor plane and starting from position of (0, 0)
>>>>>>>> -     */
>>>>>>>> +     */
>>>>>>>>        draw_color_alpha(&data->ov_fb[0], 0, 0,
>>>>>>>> data->pfb_w, data->pfb_h, 1.0, 1.0, 1.0, .0);
>>>>>>>>        igt_plane_set_fb(data->primary, &data->pm_fb[0]);
>>>>>>>>        igt_plane_set_fb(data->overlay, &data->ov_fb[0]);
>>>>>>>> @@ -763,5 +763,6 @@ igt_main_args("", long_options,
>>>>>>>> help_str, opt_handler, NULL)
>>>>>>>>            }
>>>>>>>>            close(data.debugfs_fd);
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> diff --git a/tests/amdgpu/amd_vrr_range.c
>>>>>>>> b/tests/amdgpu/amd_vrr_range.c
>>>>>>>> index 2f27296dd..cacd668cd 100644
>>>>>>>> --- a/tests/amdgpu/amd_vrr_range.c
>>>>>>>> +++ b/tests/amdgpu/amd_vrr_range.c
>>>>>>>> @@ -338,5 +338,6 @@ igt_main
>>>>>>>>        igt_fixture
>>>>>>>>        {
>>>>>>>>            igt_display_fini(&data.display);
>>>>>>>> +        drm_close_driver(data.fd);
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>> -- 
>>>>>>>> 2.40.0
>>>>>>>>

^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2023-06-15 12:03 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-16 16:50 [igt-dev] [i-g-t 00/20] XE test cleanup to handle xe_device Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 01/20] lib: Interface to close the drm fd Bhanuprakash Modem
2023-05-18 18:51   ` Zbigniew Kempczyński
2023-05-18 18:54   ` Zbigniew Kempczyński
2023-05-19 15:09   ` [igt-dev] [i-g-t V3 " Bhanuprakash Modem
2023-05-22 11:16     ` Zbigniew Kempczyński
2023-05-16 16:50 ` [igt-dev] [i-g-t 02/20] lib: Cache xe_device at driver open/close level Bhanuprakash Modem
2023-05-18 18:46   ` Zbigniew Kempczyński
2023-05-16 16:50 ` [igt-dev] [i-g-t 03/20] lib/xe/xe_query: Add xe_config() interface Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 04/20] lib/igt_msm: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 05/20] tests/amdgpu: Close the fd before exit Bhanuprakash Modem
2023-06-14 12:39   ` Kamil Konieczny
2023-06-15  0:14     ` vitaly prosyak
2023-06-15  4:46       ` Modem, Bhanuprakash
2023-06-15  7:13         ` Christian König
2023-06-15  8:28           ` Modem, Bhanuprakash
2023-06-15  8:43             ` Christian König
2023-06-15 11:48               ` Kamil Konieczny
2023-06-15 12:03                 ` Christian König
2023-05-16 16:50 ` [igt-dev] [i-g-t 06/20] tests/i915: " Bhanuprakash Modem
2023-05-18 18:58   ` Zbigniew Kempczyński
2023-05-22  5:27     ` Modem, Bhanuprakash
2023-05-22 11:21       ` Zbigniew Kempczyński
2023-05-22 12:33         ` Modem, Bhanuprakash
2023-05-22 15:23           ` Zbigniew Kempczyński
2023-05-16 16:50 ` [igt-dev] [i-g-t 07/20] tests/nouveau_crc: " Bhanuprakash Modem
2023-05-16 20:14   ` Lyude Paul
2023-05-16 16:50 ` [igt-dev] [i-g-t 08/20] tests/xe/xe_gpgpu_fill: " Bhanuprakash Modem
2023-05-18 19:15   ` Kumar, Janga Rahul
2023-05-16 16:50 ` [igt-dev] [i-g-t 09/20] tests/amdgpu: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
2023-06-14 12:38   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 10/20] tests/i915/kms_mmap_write_crc: Avoid closing the closed fd Bhanuprakash Modem
2023-05-24  8:00   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 11/20] tests/panfrost: Use drm_close_driver() to close the drm fd Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 12/20] tests/v3d: " Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 13/20] tests/vc4: " Bhanuprakash Modem
2023-05-16 16:50 ` [igt-dev] [i-g-t 14/20] tests/vmwgfx: " Bhanuprakash Modem
2023-05-17 19:55   ` "Maaz Mombasawala (VMware)
2023-05-16 16:50 ` [igt-dev] [i-g-t 15/20] tests/kms: " Bhanuprakash Modem
2023-05-24  9:02   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 16/20] tests/xe: " Bhanuprakash Modem
2023-05-18 19:14   ` Kumar, Janga Rahul
2023-05-16 16:50 ` [igt-dev] [i-g-t 17/20] tests/i915: " Bhanuprakash Modem
2023-05-24  8:44   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 18/20] tests/xe/xe_debugfs: Use xe_config() helper to get the config Bhanuprakash Modem
2023-05-24  8:47   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 19/20] tests: Drop xe_device get/put from test level Bhanuprakash Modem
2023-05-24  7:58   ` Kamil Konieczny
2023-05-16 16:50 ` [igt-dev] [i-g-t 20/20] Revert "lib/igt_kms: Cache xe_device info for kms tests" Bhanuprakash Modem
2023-05-24  8:03   ` Kamil Konieczny
2023-05-16 18:45 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev4) Patchwork
2023-05-17  3:51 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2023-05-19 15:52 ` [igt-dev] ✓ Fi.CI.BAT: success for XE test cleanup to handle xe_device (rev5) Patchwork
2023-05-19 18:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

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.