Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools
@ 2026-07-15 12:15 Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 01/31] lib/igt_tools_stub: introduce static sub-library for tools Sebastian Brzezinka
                   ` (30 more replies)
  0 siblings, 31 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec

This issue was raised by the community back in 2019: 
https://bugs.freedesktop.org/show_bug.cgi?id=110249

Standalone tools linked libigt.so as a side effect, pulling in cairo,
pixman and libX11 even without framebuffer use.

Following intel_gpu_top's approach, each tool now links only the static
sub-libraries it needs. Five new ones are introduced:

lib_igt_tools_stub, lib_igt_drm_stub, lib_igt_halffloat,
lib_i915_decode, lib_igt_reg_tools.

igt_load_igtrc() is moved to igt_device_scan.c so lsgpu can use
lib_igt_device_scan without pulling in libigt.so.

All 20 tools: 35 shared libs -> 3-8.

Behavioural differences vs original binaries (no-hardware runs):

intel_backlight, intel_lid, intel_gpu_time, intel_audio_dump,
intel_infoframes, intel_panel_fitter, intel_firmware_decode:
assertion failure format: IGT CRITICAL block -> single-line message;
exit code: 98 (IGT_EXIT_FAILURE) -> 1.

intel_gtt, intel_display_poller, intel_watermark:
same as above; additionally print an extra "Test requirement passed:
pci_dev" line on stderr (previously suppressed by IGT log layer).

intel_guc_logger:
same exit code change (98->1); --help drops IGT framework options
(--list-subtests, --run-subtest, --device, etc.) which had no effect
on guc_logger since it opens debugfs directly, not via IGT device
selection; --version, --debug, --hook also removed.
Unknown option exit code: 79 (IGT_EXIT_INVALID) -> 1.

intel_gvtg_test:
skip message: IGT skip block -> single-line; exit code unchanged (77).

Tested on Intel Meteor Lake-P (device 0x7d45) with the series applied:
lsgpu                enumerates card0/renderD128
intel_gpu_frequency  reads cur/min/max/RP1 frequencies
intel_stepping       reports device 0x7d45 rev 0x04
intel_error_decode   parses empty error state
igt_stats            computes median from stdin
intel_backlight      reads current backlight value: 0%
intel_gtt            dumps GTT linear mappings
intel_gpu_time       user: 0.000322s, GPU: 0.0%
intel_infoframes     runs, reports hardware not yet supported
intel_panel_fitter   shows usage with -l/-p/-x/-y options
intel_audio_dump     dumps meteorlake audio registers
intel_watermark      dumps WM_LINETIME and plane watermarks
intel_display_poller shows usage (requires --test option)
intel_lid            polls lid state: open (loops by design)
intel_forcewaked     locks forcewake, restarts daemon on gpu reset
intel_gvtg_test      exits 77, no GVT-g hardware
intel_guc_logger     --help prints usage correctly
intel_vbt_decode     --help prints usage correctly
intel_firmware_decode runs, fails on missing CSR file as expected
intel_dump_decode    runs, rejects unknown options as expected
---
v2 -> v3:
 - lib/igt_tools_stub: replace magic exit code 77 with IGT_EXIT_SKIP
   (+ comment), fix missing blank line after if block, unify
   multi line comment style
 - lib/igt_drm_stub: replace long MIT license text with SPDX
   identifier, document which libigt files this reimplements, name
   the "16" magic constant IGT_DRM_STUB_MAX_CARDS
 - runner/executor: add missing igt_device_scan.h include so
   igt_load_igtrc() has a visible prototype under HAVE_OPING builds
 - lib/i915/intel_decode: reorder so "replace igt.h with minimal
   headers" lands right before "introduce static sub-library for
   tools" - previously the sub-library patch tried to build
   intel_decode.c while it still pulled in igt.h (and transitively
   cairo.h), breaking bisectability

v1 -> v2:
 - Rename all patch subjects
 - Split  tools/intel_gtt  into two patches:  tools/intel_gtt  and  tools/intel_dump_decode 
 - Split  tools/lsgpu  into  lib/igt_core: move igt_load_igtrc to igt_device_scan  +  tools/lsgpu 
 - Shorten  tools/intel_gpu_top  subject (was over 72 chars)

Sebastian Brzezinka (31):
  lib/igt_tools_stub: introduce static sub-library for tools
  lib/igt_stats: introduce static sub-library for tools
  tools/igt_stats: link with minimal sub-libraries
  tools/intel_firmware_decode: link with minimal sub-libraries
  lib/igt_tools_stub: add stubs needed by tools
  lib/igt_drm_stub: introduce for tools needing driver detection
  lib/igt_device_scan: wire to use static sub-libraries
  tools/intel_gpu_top: add explicit drm/tools-stub deps
  lib/igt_halffloat: introduce static sub-library for tools
  lib/i915/intel_decode: replace igt.h with minimal headers
  lib/i915/intel_decode: introduce static sub-library for tools
  lib/intel_mmio: introduce lib_igt_reg_tools static sub-library for
    tools
  tools/intel_gpu_frequency: link with minimal sub-libraries
  tools/intel_stepping: link with minimal sub-libraries
  tools/intel_gtt: link with minimal sub-libraries
  tools/intel_dump_decode: link with minimal sub-libraries
  tools/intel_error_decode: link with minimal sub-libraries
  tools/intel_vbt_decode: link with minimal sub-libraries
  tools/intel_backlight: link with minimal sub-libraries
  tools/intel_lid: link with minimal sub-libraries
  tools/intel_gpu_time: link with minimal sub-libraries
  tools/intel_audio_dump: link with minimal sub-libraries
  tools/intel_forcewaked: link with minimal sub-libraries
  tools/intel_guc_logger: link with minimal sub-libraries
  tools/intel_infoframes: link with minimal sub-libraries
  tools/intel_panel_fitter: link with minimal sub-libraries
  tools/intel_watermark: link with minimal sub-libraries
  tools/intel_display_poller: link with minimal sub-libraries
  tools/intel_gvtg_test: link with minimal sub-libraries
  lib/igt_core: move igt_load_igtrc to igt_device_scan
  tools/lsgpu: link with minimal sub-libraries

 lib/i915/intel_decode.c  |   3 +-
 lib/igt_core.c           |  47 ---------------
 lib/igt_core.h           |   2 -
 lib/igt_device_scan.c    |  48 +++++++++++++++
 lib/igt_device_scan.h    |   2 +
 lib/igt_drm_stub.c       | 125 ++++++++++++++++++++++++++++++++++++++
 lib/igt_tools_stub.c     |  83 +++++++++++++++++++++++---
 lib/meson.build          |  66 +++++++++++++++++++-
 runner/executor.c        |   1 +
 tools/intel_guc_logger.c |  21 ++++++-
 tools/intel_gvtg_test.c  |   2 +-
 tools/lsgpu.c            |   2 +-
 tools/meson.build        | 126 ++++++++++++++++++++++++++++++++-------
 13 files changed, 443 insertions(+), 85 deletions(-)
 create mode 100644 lib/igt_drm_stub.c

-- 
2.53.0


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

* [PATCH i-g-t v3 01/31] lib/igt_tools_stub: introduce static sub-library for tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 02/31] lib/igt_stats: " Sebastian Brzezinka
                   ` (29 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add lib_igt_tools_stub built from igt_tools_stub.c. Tools that need
minimal IGT assert/logging stubs can link this without pulling in the
full libigt.so stack.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/meson.build b/lib/meson.build
index d1289a5e0..e95b29d49 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -349,6 +349,13 @@ lib_igt_perf_build = static_library('igt_perf',
 lib_igt_perf = declare_dependency(link_with : lib_igt_perf_build,
 				  include_directories : inc)
 
+lib_igt_tools_stub_build = static_library('igt_tools_stub',
+	['igt_tools_stub.c'],
+	include_directories : inc)
+
+lib_igt_tools_stub = declare_dependency(link_with : lib_igt_tools_stub_build,
+					include_directories : inc)
+
 scan_dep = [
 	glib,
 	libpci,
-- 
2.53.0


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

* [PATCH i-g-t v3 02/31] lib/igt_stats: introduce static sub-library for tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 01/31] lib/igt_tools_stub: introduce static sub-library for tools Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 03/31] tools/igt_stats: link with minimal sub-libraries Sebastian Brzezinka
                   ` (28 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add lib_igt_stats built from igt_stats.c. Tools that need the
statistics helpers can link this without pulling in the full
libigt.so stack.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/meson.build b/lib/meson.build
index e95b29d49..a57c1eb8d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -397,6 +397,13 @@ lib_igt_profiling_build = static_library('igt_profiling',
 lib_igt_profiling = declare_dependency(link_with : lib_igt_profiling_build,
 				        include_directories : inc)
 
+lib_igt_stats_build = static_library('igt_stats_tools',
+	['igt_stats.c'],
+	include_directories : inc)
+
+lib_igt_stats = declare_dependency(link_with : lib_igt_stats_build,
+				   include_directories : inc)
+
 i915_perf_files = [
   'igt_list.c',
   'i915/perf.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 03/31] tools/igt_stats: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 01/31] lib/igt_tools_stub: introduce static sub-library for tools Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 02/31] lib/igt_stats: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 04/31] tools/intel_firmware_decode: " Sebastian Brzezinka
                   ` (27 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

igt_stats only needs the statistics helpers and a small assert stub.
Link it against lib_igt_stats and lib_igt_tools_stub instead of the
full libigt.so stack.

ldd before: 35  (ldd | wc -l)
ldd after:   4  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 8185ba160..286a718c8 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -14,7 +14,6 @@ endforeach
 tools_progs = [
 	'igt_facts',
 	'igt_power',
-	'igt_stats',
 	'intel_audio_dump',
 	'intel_backlight',
 	'intel_bios_dumper',
@@ -58,6 +57,11 @@ foreach prog : tools_progs
 		   install : true)
 endforeach
 
+executable('igt_stats', 'igt_stats.c',
+	   dependencies : [lib_igt_stats, lib_igt_tools_stub, math],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 04/31] tools/intel_firmware_decode: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (2 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 03/31] tools/igt_stats: link with minimal sub-libraries Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 05/31] lib/igt_tools_stub: add stubs needed by tools Sebastian Brzezinka
                   ` (26 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_firmware_decode only needs the lightweight assert stub used by
igt_assert(), so the full libigt.so stack is unnecessary.

Switch to linking against lib_igt_tools_stub only.

ldd before: 35  (ldd | wc -l)
ldd after:   3   (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 286a718c8..4c67dde4f 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -24,7 +24,6 @@ tools_progs = [
 	'intel_error_decode',
 	'intel_forcewaked',
 	'intel_gpu_frequency',
-	'intel_firmware_decode',
 	'intel_framebuffer_dump',
 	'intel_gpu_time',
 	'intel_gtt',
@@ -62,6 +61,11 @@ executable('igt_stats', 'igt_stats.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_firmware_decode', 'intel_firmware_decode.c',
+	   dependencies : [lib_igt_tools_stub],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 05/31] lib/igt_tools_stub: add stubs needed by tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (3 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 04/31] tools/intel_firmware_decode: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 06/31] lib/igt_drm_stub: introduce for tools needing driver detection Sebastian Brzezinka
                   ` (25 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add stubs for functions used by tools when linking without the
full libigt.so: __igt_skip_check, igt_exit, igt_debugfs_open and
igt_open_forcewake_handle_for_pcidev.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/igt_tools_stub.c | 83 ++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 76 insertions(+), 7 deletions(-)

diff --git a/lib/igt_tools_stub.c b/lib/igt_tools_stub.c
index 9a0ec6217..21dc53f3f 100644
--- a/lib/igt_tools_stub.c
+++ b/lib/igt_tools_stub.c
@@ -21,12 +21,27 @@
  * IN THE SOFTWARE.
  *
  */
+#include <fcntl.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <unistd.h>
+
 #include "igt_core.h"
+#include "igt_debugfs.h"
 
-/* Stub for igt_log, this stub will simply print the msg on stderr device.
- * Domain and log level are ignored.
+/*
+ * Forward declaration only - avoids pulling in the heavy igt_gt.h header.
+ * The type is used as an opaque pointer; this stub always returns -1.
  */
+struct pci_device;
 
+int igt_open_forcewake_handle_for_pcidev(const struct pci_device *pci_dev);
+
+/* Stub for igt_log: print message to stderr; domain and log level are ignored. */
 void igt_log(const char *domain, enum igt_log_level level, const char *format, ...)
 {
 	va_list args;
@@ -36,11 +51,7 @@ void igt_log(const char *domain, enum igt_log_level level, const char *format, .
 	va_end(args);
 }
 
-
-/* Stub for __igt_fail_assert, this stub will simply print the msg on stderr device and
- * exit the application, domain and log level are ignored.
- */
-
+/* Stub for __igt_fail_assert: print failed assertion to stderr and exit. */
 void __igt_fail_assert(const char *domain, const char *file,
 		       const int line, const char *func, const char *assertion,
 		       const char *format, ...)
@@ -49,3 +60,61 @@ void __igt_fail_assert(const char *domain, const char *file,
 		func, assertion);
 	exit(1);
 }
+
+/* Stub for __igt_skip_check: print skip reason to stderr and exit with skip code. */
+void __igt_skip_check(const char *file, const int line,
+		      const char *func, const char *check, const char *format, ...)
+{
+	fprintf(stderr, "%s: %d %s Skipped: %s", file, line, func, check);
+	if (format) {
+		va_list args;
+
+		fprintf(stderr, ": ");
+		va_start(args, format);
+		vfprintf(stderr, format, args);
+		va_end(args);
+	}
+
+	fprintf(stderr, "\n");
+	/* IGT_EXIT_SKIP (77) is the exit code igt_core.c uses for skipped tests. */
+	exit(IGT_EXIT_SKIP);
+}
+
+/* Stub for igt_exit: tools use exit(0) rather than the full igt teardown sequence. */
+__noreturn void igt_exit(void)
+{
+	exit(0);
+}
+
+/*
+ * Stub for igt_debugfs_open: open a debugfs entry for a DRM device directly
+ * by path. device == -1 follows the igt_debugfs_path() convention of
+ * defaulting to the first DRM device (dri/0). When a valid fd is given, the
+ * DRM minor is resolved via fstat() so the correct dri/<minor> directory is
+ * used.
+ */
+int igt_debugfs_open(int device, const char *filename, int mode)
+{
+	char path[PATH_MAX];
+	int drm_minor = 0;
+
+	if (device >= 0) {
+		struct stat st;
+
+		if (fstat(device, &st) == 0 && S_ISCHR(st.st_mode))
+			drm_minor = minor(st.st_rdev);
+	}
+
+	snprintf(path, sizeof(path),
+		 "/sys/kernel/debug/dri/%d/%s", drm_minor, filename);
+	return open(path, mode);
+}
+
+/*
+ * Stub for igt_open_forcewake_handle_for_pcidev: in tool context the driver
+ * keeps the GPU awake; no forcewake handle needed.
+ */
+int igt_open_forcewake_handle_for_pcidev(const struct pci_device *pci_dev)
+{
+	return -1;
+}
-- 
2.53.0


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

* [PATCH i-g-t v3 06/31] lib/igt_drm_stub: introduce for tools needing driver detection
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (4 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 05/31] lib/igt_tools_stub: add stubs needed by tools Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 07/31] lib/igt_device_scan: wire to use static sub-libraries Sebastian Brzezinka
                   ` (24 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add drm/pciaccess-dependent stubs into a new igt_drm_stub.c.  This avoids
pulling libdrm into tools that only need dep-free logging and exit stubs.

The new lib_igt_drm_stub static sub-library provides: igt_pci_system_init,
is_i915_device, is_intel_device, xe_dev_id and __drm_open_driver.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/igt_drm_stub.c | 125 +++++++++++++++++++++++++++++++++++++++++++++
 lib/meson.build    |   9 ++++
 2 files changed, 134 insertions(+)
 create mode 100644 lib/igt_drm_stub.c

diff --git a/lib/igt_drm_stub.c b/lib/igt_drm_stub.c
new file mode 100644
index 000000000..58395b329
--- /dev/null
+++ b/lib/igt_drm_stub.c
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+/*
+ * Minimal DRM/PCI stubs for tools that need driver detection and device
+ * opening but do not link the full libigt.so. Requires libdrm and pciaccess.
+ *
+ * This reimplements a small subset of lib/drmtest.c (__drm_open_driver()),
+ * lib/igt_device.c (is_i915_device(), is_intel_device()) and
+ * lib/xe/xe_query.c (xe_dev_id()) so that tools can pull in just this
+ * static sub-library instead of the whole libigt.so stack.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <pciaccess.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <unistd.h>
+#include <xf86drm.h>
+
+#include "drmtest.h"
+
+int igt_pci_system_init(void)
+{
+	return pci_system_init();
+}
+
+static bool driver_name_matches(int fd, const char *name)
+{
+	drmVersionPtr version;
+	bool match = false;
+
+	version = drmGetVersion(fd);
+	if (!version)
+		return false;
+
+	match = version->name_len > 0 && !strcmp(version->name, name);
+	drmFreeVersion(version);
+
+	return match;
+}
+
+bool is_i915_device(int fd)
+{
+	return driver_name_matches(fd, "i915");
+}
+
+bool is_intel_device(int fd)
+{
+	return is_i915_device(fd) || driver_name_matches(fd, "xe");
+}
+
+static uint16_t read_pci_device_id(int fd)
+{
+	char path[PATH_MAX], buf[32];
+	struct stat st;
+	int sysfs, len;
+	unsigned int devid;
+
+	if (fstat(fd, &st) || !S_ISCHR(st.st_mode))
+		return 0;
+
+	snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device/device",
+		 major(st.st_rdev), minor(st.st_rdev));
+	sysfs = open(path, O_RDONLY);
+	if (sysfs < 0)
+		return 0;
+
+	len = read(sysfs, buf, sizeof(buf) - 1);
+	close(sysfs);
+	if (len <= 0)
+		return 0;
+
+	buf[len] = '\0';
+	if (sscanf(buf, "0x%x", &devid) != 1)
+		return 0;
+
+	return devid;
+}
+
+/*
+ * Forward declaration required: xe_dev_id() is declared in the (heavy)
+ * lib/xe/xe_query.h, which this file intentionally does not include. The
+ * declaration below keeps -Wmissing-prototypes happy for the definition
+ * that follows.
+ */
+uint16_t xe_dev_id(int fd);
+uint16_t xe_dev_id(int fd)
+{
+	return read_pci_device_id(fd);
+}
+
+/* Maximum /dev/dri/card<N> minor number probed by __drm_open_driver(). */
+#define IGT_DRM_STUB_MAX_CARDS 16
+
+int __drm_open_driver(int chipset)
+{
+	char path[PATH_MAX];
+	int fd;
+
+	for (int i = 0; i < IGT_DRM_STUB_MAX_CARDS; i++) {
+		snprintf(path, sizeof(path), "/dev/dri/card%d", i);
+		fd = open(path, O_RDWR | O_CLOEXEC);
+		if (fd < 0)
+			continue;
+
+		if ((chipset == DRIVER_INTEL && is_i915_device(fd)) ||
+		    (chipset == DRIVER_XE && driver_name_matches(fd, "xe")) ||
+		    (chipset == DRIVER_ANY && is_intel_device(fd)))
+			return fd;
+
+		close(fd);
+	}
+
+	errno = ENODEV;
+	return -1;
+}
diff --git a/lib/meson.build b/lib/meson.build
index a57c1eb8d..484a912d7 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -356,6 +356,15 @@ lib_igt_tools_stub_build = static_library('igt_tools_stub',
 lib_igt_tools_stub = declare_dependency(link_with : lib_igt_tools_stub_build,
 					include_directories : inc)
 
+lib_igt_drm_stub_build = static_library('igt_drm_stub',
+	['igt_drm_stub.c'],
+	dependencies : [libdrm, pciaccess],
+	include_directories : inc)
+
+lib_igt_drm_stub = declare_dependency(link_with : lib_igt_drm_stub_build,
+				      dependencies : [libdrm, pciaccess],
+				      include_directories : inc)
+
 scan_dep = [
 	glib,
 	libpci,
-- 
2.53.0


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

* [PATCH i-g-t v3 07/31] lib/igt_device_scan: wire to use static sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (5 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 06/31] lib/igt_drm_stub: introduce for tools needing driver detection Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 08/31] tools/intel_gpu_top: add explicit drm/tools-stub deps Sebastian Brzezinka
                   ` (23 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Drop the directly compiled igt_tools_stub.c from lib_igt_device_scan
and link lib_igt_tools_stub and lib_igt_drm_stub instead. Compiling
igt_tools_stub.c directly would cause duplicate symbol errors when a
tool links both lib_igt_device_scan and lib_igt_tools_stub.

Add libdrm and pciaccess to scan_dep so tools linking lib_igt_device_scan
pick up the right dependencies.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/meson.build b/lib/meson.build
index 484a912d7..2c1fbcd43 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -367,22 +367,24 @@ lib_igt_drm_stub = declare_dependency(link_with : lib_igt_drm_stub_build,
 
 scan_dep = [
 	glib,
+	libdrm,
 	libpci,
 	libudev,
+	pciaccess,
 ]
 
 lib_igt_device_scan_build = static_library('igt_device_scan',
 	['igt_device_scan.c',
 	'igt_list.c',
 	'igt_map.c',
-	'igt_tools_stub.c',
 	'intel_device_info.c',
 	'intel_cmds_info.c',
 	],
-	dependencies : scan_dep,
+	dependencies : [scan_dep, lib_igt_drm_stub, lib_igt_tools_stub],
 	include_directories : inc)
 
 lib_igt_device_scan = declare_dependency(link_with : lib_igt_device_scan_build,
+				  dependencies : [libdrm, pciaccess],
 				  include_directories : inc)
 
 lib_igt_drm_clients_build = static_library('igt_drm_clients',
-- 
2.53.0


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

* [PATCH i-g-t v3 08/31] tools/intel_gpu_top: add explicit drm/tools-stub deps
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (6 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 07/31] lib/igt_device_scan: wire to use static sub-libraries Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 09/31] lib/igt_halffloat: introduce static sub-library for tools Sebastian Brzezinka
                   ` (22 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Meson does not automatically propagate static library dependencies
to executables via link_with.  lib_igt_device_scan internally links
lib_igt_drm_stub and lib_igt_tools_stub but does not reexport them
through its declare_dependency.  As a result intel_gpu_top must list
them explicitly, otherwise the linker cannot resolve symbols such as
is_i915_device and igt_log at final link time.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 4c67dde4f..53aa31056 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -105,7 +105,8 @@ install_subdir('registers', install_dir : datadir)
 executable('intel_gpu_top', 'intel_gpu_top.c',
 	   install : true,
 	   install_rpath : bindir_rpathdir,
-	   dependencies : [lib_igt_perf,lib_igt_device_scan,lib_igt_drm_clients,lib_igt_drm_fdinfo,math])
+	   dependencies : [lib_igt_perf,lib_igt_device_scan,lib_igt_drm_clients,lib_igt_drm_fdinfo,
+	                   lib_igt_drm_stub, lib_igt_tools_stub, math])
 
 executable('amd_hdmi_compliance', 'amd_hdmi_compliance.c',
 	   dependencies : [tool_deps],
-- 
2.53.0


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

* [PATCH i-g-t v3 09/31] lib/igt_halffloat: introduce static sub-library for tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (7 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 08/31] tools/intel_gpu_top: add explicit drm/tools-stub deps Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 10/31] lib/i915/intel_decode: replace igt.h with minimal headers Sebastian Brzezinka
                   ` (21 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add lib_igt_halffloat backed by igt_halffloat.c with a math dependency.
Tools that use half-float conversion (e.g. intel_vbt_decode) can link
this minimal library instead of the full libigt.so.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/meson.build b/lib/meson.build
index 2c1fbcd43..93db217f8 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -415,6 +415,14 @@ lib_igt_stats_build = static_library('igt_stats_tools',
 lib_igt_stats = declare_dependency(link_with : lib_igt_stats_build,
 				   include_directories : inc)
 
+lib_igt_halffloat_build = static_library('igt_halffloat',
+	['igt_halffloat.c'],
+	include_directories : inc)
+
+lib_igt_halffloat = declare_dependency(link_with : lib_igt_halffloat_build,
+				       dependencies : [math],
+				       include_directories : inc)
+
 i915_perf_files = [
   'igt_list.c',
   'i915/perf.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 10/31] lib/i915/intel_decode: replace igt.h with minimal headers
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (8 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 09/31] lib/igt_halffloat: introduce static sub-library for tools Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 11/31] lib/i915/intel_decode: introduce static sub-library for tools Sebastian Brzezinka
                   ` (20 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_decode.c only uses two symbols from the IGT: intel_gen()
and intel_get_device_info(), both provided by intel_chipset.h.
The DRM_PRINTFLIKE macro used for the instr_out() format attribute is
provided by xf86drm.h.

This is a prerequisite for building intel_decode.c into a static
sub-library (lib_i915_decode) that tools can link without pulling in
the full libigt.so stack.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/i915/intel_decode.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/i915/intel_decode.c b/lib/i915/intel_decode.c
index b78993c47..0b404ae53 100644
--- a/lib/i915/intel_decode.c
+++ b/lib/i915/intel_decode.c
@@ -28,8 +28,9 @@
 #include <stdbool.h>
 #include <stdarg.h>
 #include <string.h>
+#include <xf86drm.h>
 
-#include "igt.h"
+#include "intel_chipset.h"
 #include "intel_decode.h"
 
 /* Struct for tracking intel_decode state. */
-- 
2.53.0


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

* [PATCH i-g-t v3 11/31] lib/i915/intel_decode: introduce static sub-library for tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (9 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 10/31] lib/i915/intel_decode: replace igt.h with minimal headers Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 12/31] lib/intel_mmio: introduce lib_igt_reg_tools " Sebastian Brzezinka
                   ` (19 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add lib_i915_decode built from i915/intel_decode.c and instdone.c.
This lets tools like intel_error_decode link only the decode logic
without pulling in the full libigt.so.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lib/meson.build b/lib/meson.build
index 93db217f8..8addc8982 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -423,6 +423,20 @@ lib_igt_halffloat = declare_dependency(link_with : lib_igt_halffloat_build,
 				       dependencies : [math],
 				       include_directories : inc)
 
+lib_i915_decode_build = static_library('i915_decode',
+	['i915/intel_decode.c',
+	 'instdone.c',
+	],
+	dependencies : [lib_igt_chipset],
+	include_directories : inc)
+
+lib_i915_decode = declare_dependency(link_with : lib_i915_decode_build,
+				     dependencies : [lib_igt_chipset,
+				                     lib_igt_tools_stub,
+				                     lib_igt_drm_stub,
+				                     pciaccess],
+				     include_directories : inc)
+
 i915_perf_files = [
   'igt_list.c',
   'i915/perf.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 12/31] lib/intel_mmio: introduce lib_igt_reg_tools static sub-library for tools
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (10 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 11/31] lib/i915/intel_decode: introduce static sub-library for tools Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 13/31] tools/intel_gpu_frequency: link with minimal sub-libraries Sebastian Brzezinka
                   ` (18 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

Add lib_igt_reg_tools built from intel_mmio.c, intel_reg_map.c and
intel_iosf.c.  Tools that need register access (e.g. intel_reg) can link
this library without pulling in the full libigt.so.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 lib/meson.build | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/lib/meson.build b/lib/meson.build
index 8addc8982..aa8eae68b 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -437,6 +437,21 @@ lib_i915_decode = declare_dependency(link_with : lib_i915_decode_build,
 				                     pciaccess],
 				     include_directories : inc)
 
+lib_igt_reg_tools_build = static_library('igt_reg_tools',
+	['intel_mmio.c',
+	 'intel_reg_map.c',
+	 'intel_iosf.c',
+	],
+	dependencies : [pciaccess, libdrm],
+	include_directories : inc)
+
+lib_igt_reg_tools = declare_dependency(link_with : lib_igt_reg_tools_build,
+				       dependencies : [lib_igt_chipset,
+				                       lib_igt_tools_stub,
+				                       lib_igt_drm_stub,
+				                       pciaccess, libdrm],
+				       include_directories : inc)
+
 i915_perf_files = [
   'igt_list.c',
   'i915/perf.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 13/31] tools/intel_gpu_frequency: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (11 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 12/31] lib/intel_mmio: introduce lib_igt_reg_tools " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 14/31] tools/intel_stepping: " Sebastian Brzezinka
                   ` (17 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_gpu_frequency needs only intel_gen/devid helpers and a DRM device
opener to query the GPU frequency.  Link it against lib_igt_chipset for
the devid helpers and lib_igt_drm_stub for driver detection and device
opening, instead of the full libigt.so stack.

ldd before: 35  (ldd intel_gpu_frequency | wc -l)
ldd after:   5  (ldd intel_gpu_frequency | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 53aa31056..01400f53e 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -23,7 +23,6 @@ tools_progs = [
 	'intel_dump_decode',
 	'intel_error_decode',
 	'intel_forcewaked',
-	'intel_gpu_frequency',
 	'intel_framebuffer_dump',
 	'intel_gpu_time',
 	'intel_gtt',
@@ -66,6 +65,11 @@ executable('intel_firmware_decode', 'intel_firmware_decode.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_gpu_frequency', 'intel_gpu_frequency.c',
+	   dependencies : [lib_igt_chipset, lib_igt_tools_stub, lib_igt_drm_stub],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 14/31] tools/intel_stepping: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (12 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 13/31] tools/intel_gpu_frequency: link with minimal sub-libraries Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 15/31] tools/intel_gtt: " Sebastian Brzezinka
                   ` (16 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_stepping only needs the chipset tables and the small tool stub
support used by those helpers, not the full libigt.so stack.

Switch to linking against lib_igt_chipset, lib_igt_tools_stub and
libpciaccess.

ldd before: 35  (ldd | wc -l)
ldd after:   4  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 01400f53e..8eb346321 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -36,7 +36,6 @@ tools_progs = [
 	'intel_pm_rpm',
 	'intel_reg_checker',
 	'intel_residency',
-	'intel_stepping',
 	'intel_tiling_detect',
 	'intel_vbt_decode',
 	'intel_watermark',
@@ -70,6 +69,12 @@ executable('intel_gpu_frequency', 'intel_gpu_frequency.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_stepping', 'intel_stepping.c',
+	   dependencies : [lib_igt_chipset, lib_igt_tools_stub, lib_igt_drm_stub,
+	                    pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 15/31] tools/intel_gtt: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (13 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 14/31] tools/intel_stepping: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 16/31] tools/intel_dump_decode: " Sebastian Brzezinka
                   ` (15 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_gtt only needs the chipset helpers plus the small tool stubs they
rely on. The full libigt.so dependency chain is unnecessary.

Switch to linking against lib_igt_chipset, lib_igt_tools_stub,
lib_igt_drm_stub, pciaccess and libdrm.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 8eb346321..a3fef87a9 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -25,7 +25,6 @@ tools_progs = [
 	'intel_forcewaked',
 	'intel_framebuffer_dump',
 	'intel_gpu_time',
-	'intel_gtt',
 	'intel_guc_logger',
 	'intel_hdcp',
 	'intel_infoframes',
@@ -75,6 +74,12 @@ executable('intel_stepping', 'intel_stepping.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_gtt', 'intel_gtt.c',
+	   dependencies : [lib_igt_chipset, lib_igt_tools_stub, lib_igt_drm_stub,
+	                    pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 16/31] tools/intel_dump_decode: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (14 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 15/31] tools/intel_gtt: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 17/31] tools/intel_error_decode: " Sebastian Brzezinka
                   ` (14 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_dump_decode only needs the i915 decoder. Link it against
lib_i915_decode instead of the full libigt.so stack.

ldd before: 35  (ldd | wc -l)
ldd after:   4  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index a3fef87a9..467b8eea1 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -20,7 +20,6 @@ tools_progs = [
 	'intel_display_bandwidth',
 	'intel_display_crc',
 	'intel_display_poller',
-	'intel_dump_decode',
 	'intel_error_decode',
 	'intel_forcewaked',
 	'intel_framebuffer_dump',
@@ -80,6 +79,11 @@ executable('intel_gtt', 'intel_gtt.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_dump_decode', 'intel_dump_decode.c',
+	   dependencies : [lib_i915_decode],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 17/31] tools/intel_error_decode: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (15 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 16/31] tools/intel_dump_decode: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 18/31] tools/intel_vbt_decode: " Sebastian Brzezinka
                   ` (13 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_error_decode needs the batch decoder, chipset tables and zlib for
compressed error state handling, but not the full libigt.so stack.

Switch to linking against lib_i915_decode plus the minimal helper
libraries it relies on.

ldd before: 35  (ldd | wc -l)
ldd after:   4  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 467b8eea1..b04754c5e 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -20,7 +20,6 @@ tools_progs = [
 	'intel_display_bandwidth',
 	'intel_display_crc',
 	'intel_display_poller',
-	'intel_error_decode',
 	'intel_forcewaked',
 	'intel_framebuffer_dump',
 	'intel_gpu_time',
@@ -84,6 +83,11 @@ executable('intel_dump_decode', 'intel_dump_decode.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_error_decode', 'intel_error_decode.c',
+	   dependencies : [lib_i915_decode, pciaccess, zlib, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 18/31] tools/intel_vbt_decode: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (16 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 17/31] tools/intel_error_decode: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 19/31] tools/intel_backlight: " Sebastian Brzezinka
                   ` (12 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_vbt_decode only needs the chipset tables, half-float conversion
helpers and the lightweight tool stubs used by those helpers.

Switch to linking against lib_igt_chipset, lib_igt_halffloat and
lib_igt_tools_stub instead of the full libigt.so stack.

ldd before: 35  (ldd | wc -l)
ldd after:   4  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index b04754c5e..46cf1a717 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -34,7 +34,6 @@ tools_progs = [
 	'intel_reg_checker',
 	'intel_residency',
 	'intel_tiling_detect',
-	'intel_vbt_decode',
 	'intel_watermark',
 	'intel_gem_info',
 	'intel_gvtg_test',
@@ -88,6 +87,11 @@ executable('intel_error_decode', 'intel_error_decode.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_vbt_decode', 'intel_vbt_decode.c',
+	   dependencies : [lib_igt_chipset, lib_igt_halffloat, lib_igt_tools_stub, pciaccess, libdrm, math],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 19/31] tools/intel_backlight: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (17 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 18/31] tools/intel_vbt_decode: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 20/31] tools/intel_lid: " Sebastian Brzezinka
                   ` (11 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_backlight only needs MMIO/register access helpers and the chipset
metadata they use. The full libigt.so stack is unnecessary.

Add lib_igt_reg_tools and link intel_backlight against it instead of
libigt.so.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 46cf1a717..8899a5b49 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -15,7 +15,6 @@ tools_progs = [
 	'igt_facts',
 	'igt_power',
 	'intel_audio_dump',
-	'intel_backlight',
 	'intel_bios_dumper',
 	'intel_display_bandwidth',
 	'intel_display_crc',
@@ -92,6 +91,11 @@ executable('intel_vbt_decode', 'intel_vbt_decode.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_backlight', 'intel_backlight.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 20/31] tools/intel_lid: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (18 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 19/31] tools/intel_backlight: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 21/31] tools/intel_gpu_time: " Sebastian Brzezinka
                   ` (10 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_lid only needs the register/MMIO helper subset, not the full
libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 8899a5b49..0978f8f11 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -25,7 +25,6 @@ tools_progs = [
 	'intel_guc_logger',
 	'intel_hdcp',
 	'intel_infoframes',
-	'intel_lid',
 	'intel_opregion_decode',
 	'intel_panel_fitter',
 	'intel_perf_counters',
@@ -96,6 +95,11 @@ executable('intel_backlight', 'intel_backlight.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_lid', 'intel_lid.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 21/31] tools/intel_gpu_time: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (19 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 20/31] tools/intel_lid: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 22/31] tools/intel_audio_dump: " Sebastian Brzezinka
                   ` (9 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_gpu_time only needs the register/MMIO helper subset, not the full
libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5   (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 0978f8f11..2e8ceea36 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -21,7 +21,6 @@ tools_progs = [
 	'intel_display_poller',
 	'intel_forcewaked',
 	'intel_framebuffer_dump',
-	'intel_gpu_time',
 	'intel_guc_logger',
 	'intel_hdcp',
 	'intel_infoframes',
@@ -100,6 +99,11 @@ executable('intel_lid', 'intel_lid.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_gpu_time', 'intel_gpu_time.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 22/31] tools/intel_audio_dump: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (20 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 21/31] tools/intel_gpu_time: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 23/31] tools/intel_forcewaked: " Sebastian Brzezinka
                   ` (8 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_audio_dump only needs the register/MMIO helper subset, not the
full libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 2e8ceea36..f9bbb41a9 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -14,7 +14,6 @@ endforeach
 tools_progs = [
 	'igt_facts',
 	'igt_power',
-	'intel_audio_dump',
 	'intel_bios_dumper',
 	'intel_display_bandwidth',
 	'intel_display_crc',
@@ -104,6 +103,11 @@ executable('intel_gpu_time', 'intel_gpu_time.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_audio_dump', 'intel_audio_dump.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 23/31] tools/intel_forcewaked: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (21 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 22/31] tools/intel_audio_dump: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 24/31] tools/intel_guc_logger: " Sebastian Brzezinka
                   ` (7 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_forcewaked only needs the register/MMIO helper subset, not the
full libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index f9bbb41a9..15bd40dec 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -18,7 +18,6 @@ tools_progs = [
 	'intel_display_bandwidth',
 	'intel_display_crc',
 	'intel_display_poller',
-	'intel_forcewaked',
 	'intel_framebuffer_dump',
 	'intel_guc_logger',
 	'intel_hdcp',
@@ -108,6 +107,11 @@ executable('intel_audio_dump', 'intel_audio_dump.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_forcewaked', 'intel_forcewaked.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 24/31] tools/intel_guc_logger: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (22 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 23/31] tools/intel_forcewaked: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 25/31] tools/intel_infoframes: " Sebastian Brzezinka
                   ` (6 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_guc_logger only needs core logging/assert helpers and debugfs
access, not the full libigt.so stack. Replace the monolithic include
with the minimal headers and link against lib_igt_tools_stub.

The tool previously used igt_simple_main_args() for option parsing, which
is part of libigt.so and cannot be used without it. Replace it with a
direct getopt_long() loop. As part of this: add a 'help' long option, a
usage string header, and a default case that calls exit(1) on unrecognised
options, behaviour that igt_simple_main_args() provided implicitly.

ldd before: 35  (ldd | wc -l)
ldd after:   3  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/intel_guc_logger.c | 21 ++++++++++++++++++---
 tools/meson.build        |  6 +++++-
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/tools/intel_guc_logger.c b/tools/intel_guc_logger.c
index 629b4e660..3990aef87 100644
--- a/tools/intel_guc_logger.c
+++ b/tools/intel_guc_logger.c
@@ -38,9 +38,12 @@
 #include <sys/syscall.h>
 #include <sys/mman.h>
 #include <assert.h>
+#include <getopt.h>
 #include <pthread.h>
 
-#include "igt.h"
+#include "drmtest.h"
+#include "igt_core.h"
+#include "igt_debugfs.h"
 
 #define MB(x) ((uint64_t)(x) * 1024 * 1024)
 #ifndef PAGE_SIZE
@@ -367,6 +370,8 @@ static int parse_options(int opt, int opt_index, void *data)
 		discard_oldlogs = true;
 		igt_debug("old/boot-time logs will be discarded\n");
 		break;
+	default:
+		exit(1);
 	}
 
 	return 0;
@@ -382,10 +387,12 @@ static void process_command_line(int argc, char **argv)
 		{"polltimeout", required_argument, 0, 'p'},
 		{"size", required_argument, 0, 's'},
 		{"discard", no_argument, 0, 'd'},
+		{"help", no_argument, 0, 'h'},
 		{ 0, 0, 0, 0 }
 	};
 
 	const char *help =
+		"Usage: intel_guc_logger [options]\n"
 		"  -v --verbosity=level   verbosity level of GuC logging (0-3)\n"
 		"  -o --outputfile=name   name of the output file, including the location, where logs will be stored\n"
 		"  -b --buffers=num       number of buffers to be maintained on logger side for storing logs\n"
@@ -394,8 +401,16 @@ static void process_command_line(int argc, char **argv)
 		"  -s --size=MB           max size of output file in MBs after which logging will be stopped\n"
 		"  -d --discard           discard the old/boot-time logs before entering into the capture loop\n";
 
-	igt_simple_init_parse_opts(&argc, argv, "v:o:b:t:p:s:d", long_options,
-				   help, parse_options, NULL);
+	int opt, opt_index = 0;
+
+	while ((opt = getopt_long(argc, argv, "v:o:b:t:p:s:dh",
+				  long_options, &opt_index)) != -1) {
+		if (opt == 'h') {
+			printf("%s", help);
+			exit(0);
+		}
+		parse_options(opt, opt_index, NULL);
+	}
 }
 
 int main(int argc, char **argv)
diff --git a/tools/meson.build b/tools/meson.build
index 15bd40dec..32a345e9d 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -19,7 +19,6 @@ tools_progs = [
 	'intel_display_crc',
 	'intel_display_poller',
 	'intel_framebuffer_dump',
-	'intel_guc_logger',
 	'intel_hdcp',
 	'intel_infoframes',
 	'intel_opregion_decode',
@@ -112,6 +111,11 @@ executable('intel_forcewaked', 'intel_forcewaked.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_guc_logger', 'intel_guc_logger.c',
+	   dependencies : [lib_igt_tools_stub, libdrm, pthreads],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 25/31] tools/intel_infoframes: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (23 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 24/31] tools/intel_guc_logger: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 26/31] tools/intel_panel_fitter: " Sebastian Brzezinka
                   ` (5 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_infoframes only needs the register/MMIO helper subset, not the
full libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 32a345e9d..a31b6d0ed 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -20,7 +20,6 @@ tools_progs = [
 	'intel_display_poller',
 	'intel_framebuffer_dump',
 	'intel_hdcp',
-	'intel_infoframes',
 	'intel_opregion_decode',
 	'intel_panel_fitter',
 	'intel_perf_counters',
@@ -116,6 +115,11 @@ executable('intel_guc_logger', 'intel_guc_logger.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_infoframes', 'intel_infoframes.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 26/31] tools/intel_panel_fitter: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (24 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 25/31] tools/intel_infoframes: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 27/31] tools/intel_watermark: " Sebastian Brzezinka
                   ` (4 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_panel_fitter only needs the register/MMIO helper subset, not the
full libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index a31b6d0ed..1a4e14ed3 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -21,7 +21,6 @@ tools_progs = [
 	'intel_framebuffer_dump',
 	'intel_hdcp',
 	'intel_opregion_decode',
-	'intel_panel_fitter',
 	'intel_perf_counters',
 	'intel_pm_rpm',
 	'intel_reg_checker',
@@ -120,6 +119,11 @@ executable('intel_infoframes', 'intel_infoframes.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_panel_fitter', 'intel_panel_fitter.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 27/31] tools/intel_watermark: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (25 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 26/31] tools/intel_panel_fitter: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 28/31] tools/intel_display_poller: " Sebastian Brzezinka
                   ` (3 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_watermark only needs the register/MMIO helper subset, not the full
libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 1a4e14ed3..0cc62b54d 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -26,7 +26,6 @@ tools_progs = [
 	'intel_reg_checker',
 	'intel_residency',
 	'intel_tiling_detect',
-	'intel_watermark',
 	'intel_gem_info',
 	'intel_gvtg_test',
 	'dpcd_reg',
@@ -124,6 +123,11 @@ executable('intel_panel_fitter', 'intel_panel_fitter.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_watermark', 'intel_watermark.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 28/31] tools/intel_display_poller: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (26 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 27/31] tools/intel_watermark: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 29/31] tools/intel_gvtg_test: " Sebastian Brzezinka
                   ` (2 subsequent siblings)
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_display_poller only needs the register/MMIO helper subset, not
the full libigt.so stack.

Switch to linking against lib_igt_reg_tools.

ldd before: 35  (ldd | wc -l)
ldd after:   5  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/meson.build | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/meson.build b/tools/meson.build
index 0cc62b54d..2a084a0c4 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -17,7 +17,6 @@ tools_progs = [
 	'intel_bios_dumper',
 	'intel_display_bandwidth',
 	'intel_display_crc',
-	'intel_display_poller',
 	'intel_framebuffer_dump',
 	'intel_hdcp',
 	'intel_opregion_decode',
@@ -128,6 +127,11 @@ executable('intel_watermark', 'intel_watermark.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_display_poller', 'intel_display_poller.c',
+	   dependencies : [lib_igt_reg_tools, pciaccess, libdrm],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 29/31] tools/intel_gvtg_test: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (27 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 28/31] tools/intel_display_poller: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 30/31] lib/igt_core: move igt_load_igtrc to igt_device_scan Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 31/31] tools/lsgpu: link with minimal sub-libraries Sebastian Brzezinka
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

intel_gvtg_test only needs the core assert/log/skip helpers provided by
igt_core plus the lightweight tool stubs. Replace the monolithic include
with the minimal header set and stop linking against libigt.so.

ldd before: 35  (ldd | wc -l)
ldd after:   3  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/intel_gvtg_test.c | 2 +-
 tools/meson.build       | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/intel_gvtg_test.c b/tools/intel_gvtg_test.c
index 408e703bf..fe8f7a599 100644
--- a/tools/intel_gvtg_test.c
+++ b/tools/intel_gvtg_test.c
@@ -30,7 +30,7 @@
  */
 #include "config.h"
 
-#include "igt.h"
+#include "igt_core.h"
 #include <errno.h>
 #include <getopt.h>
 #include <math.h>
diff --git a/tools/meson.build b/tools/meson.build
index 2a084a0c4..6e694164f 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -26,7 +26,6 @@ tools_progs = [
 	'intel_residency',
 	'intel_tiling_detect',
 	'intel_gem_info',
-	'intel_gvtg_test',
 	'dpcd_reg',
 	'lsgpu',
 ]
@@ -132,6 +131,11 @@ executable('intel_display_poller', 'intel_display_poller.c',
 	   install_rpath : bindir_rpathdir,
 	   install : true)
 
+executable('intel_gvtg_test', 'intel_gvtg_test.c',
+	   dependencies : [lib_igt_tools_stub, pciaccess, libdrm, math],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 if libudev.found()
 	intel_dp_compliance_src = [
 		'intel_dp_compliance.c',
-- 
2.53.0


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

* [PATCH i-g-t v3 30/31] lib/igt_core: move igt_load_igtrc to igt_device_scan
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (28 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 29/31] tools/intel_gvtg_test: " Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  2026-07-15 12:15 ` [PATCH i-g-t v3 31/31] tools/lsgpu: link with minimal sub-libraries Sebastian Brzezinka
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

igt_load_igtrc() is used exclusively by igt_device_scan internals to read
per-device configuration from the igtrc file.  Moving it from igt_core.c
to igt_device_scan.c co-locates the function with its primary user and
makes it possible for lsgpu to link against lib_igt_device_scan without
needing the rest of libigt.

Update the declaration accordingly: remove from igt_core.h and add to
igt_device_scan.h where the implementation now lives.

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 lib/igt_core.c        | 47 ------------------------------------------
 lib/igt_core.h        |  2 --
 lib/igt_device_scan.c | 48 +++++++++++++++++++++++++++++++++++++++++++
 lib/igt_device_scan.h |  2 ++
 runner/executor.c     |  1 +
 5 files changed, 51 insertions(+), 49 deletions(-)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index a7c097d9e..2f737b01a 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -972,53 +972,6 @@ static void oom_adjust_for_doom(void)
 
 }
 
-/**
- * load_igtrc:
- *
- * Load .igtrc from the path pointed to by #IGT_CONFIG_PATH or from
- * home directory if that is not set. The returned keyfile needs to be
- * deallocated using g_key_file_free().
- *
- * Returns: Pointer to the keyfile, NULL on error.
- */
-GKeyFile *igt_load_igtrc(void)
-{
-	char *key_file_env = NULL;
-	char *key_file_loc = NULL;
-	GError *error = NULL;
-	GKeyFile *file;
-	int ret;
-
-	/* Determine igt config path */
-	key_file_env = getenv("IGT_CONFIG_PATH");
-	if (key_file_env) {
-		key_file_loc = key_file_env;
-	} else {
-		key_file_loc = malloc(100);
-		snprintf(key_file_loc, 100, "%s/.igtrc", g_get_home_dir());
-	}
-
-	/* Load igt config file */
-	file = g_key_file_new();
-	ret = g_key_file_load_from_file(file, key_file_loc,
-					G_KEY_FILE_NONE, &error);
-	if (!ret) {
-		g_error_free(error);
-		g_key_file_free(file);
-		file = NULL;
-
-		goto out;
-	}
-
-	g_clear_error(&error);
-
- out:
-	if (!key_file_env && key_file_loc)
-		free(key_file_loc);
-
-	return file;
-}
-
 static void common_init_config(void)
 {
 	GError *error = NULL;
diff --git a/lib/igt_core.h b/lib/igt_core.h
index 3337293bc..afaf35aa8 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -95,8 +95,6 @@ extern const char* __igt_test_description __attribute__((weak));
 extern bool __igt_plain_output;
 extern char *igt_frame_dump_path;
 
-struct _GKeyFile *igt_load_igtrc(void);
-
 /**
  * IGT_TEST_DESCRIPTION:
  * @str: description string
diff --git a/lib/igt_device_scan.c b/lib/igt_device_scan.c
index 7c7995224..a15a4624e 100644
--- a/lib/igt_device_scan.c
+++ b/lib/igt_device_scan.c
@@ -33,6 +33,7 @@
 #include <ctype.h>
 #include <dirent.h>
 #include <fcntl.h>
+#include <glib.h>
 #include <libudev.h>
 #ifdef __linux__
 #include <linux/limits.h>
@@ -2477,3 +2478,50 @@ int igt_device_prepare_filtered_view(const char *vendor)
 
 	return gpu_count;
 }
+
+/**
+ * igt_load_igtrc:
+ *
+ * Load .igtrc from the path pointed to by #IGT_CONFIG_PATH or from
+ * home directory if that is not set. The returned keyfile needs to be
+ * deallocated using g_key_file_free().
+ *
+ * Returns: Pointer to the keyfile, NULL on error.
+ */
+GKeyFile *igt_load_igtrc(void)
+{
+	char *key_file_env = NULL;
+	char *key_file_loc = NULL;
+	GError *error = NULL;
+	GKeyFile *file;
+	int ret;
+
+	/* Determine igt config path */
+	key_file_env = getenv("IGT_CONFIG_PATH");
+	if (key_file_env) {
+		key_file_loc = key_file_env;
+	} else {
+		key_file_loc = malloc(100);
+		snprintf(key_file_loc, 100, "%s/.igtrc", g_get_home_dir());
+	}
+
+	/* Load igt config file */
+	file = g_key_file_new();
+	ret = g_key_file_load_from_file(file, key_file_loc,
+					G_KEY_FILE_NONE, &error);
+	if (!ret) {
+		g_error_free(error);
+		g_key_file_free(file);
+		file = NULL;
+
+		goto out;
+	}
+
+	g_clear_error(&error);
+
+ out:
+	if (!key_file_env && key_file_loc)
+		free(key_file_loc);
+
+	return file;
+}
diff --git a/lib/igt_device_scan.h b/lib/igt_device_scan.h
index f24a193cd..5b04033e3 100644
--- a/lib/igt_device_scan.h
+++ b/lib/igt_device_scan.h
@@ -103,4 +103,6 @@ int igt_open_render(struct igt_device_card *card);
 /* Add or use filters to match multiGPU devices */
 int igt_device_prepare_filtered_view(const char *vendor);
 
+struct _GKeyFile *igt_load_igtrc(void);
+
 #endif /* __IGT_DEVICE_SCAN_H__ */
diff --git a/runner/executor.c b/runner/executor.c
index a8907c575..a2cf517df 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -35,6 +35,7 @@
 
 #include "igt_aux.h"
 #include "igt_core.h"
+#include "igt_device_scan.h"
 #include "igt_facts.h"
 #include "igt_taints.h"
 #include "igt_vec.h"
-- 
2.53.0


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

* [PATCH i-g-t v3 31/31] tools/lsgpu: link with minimal sub-libraries
  2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
                   ` (29 preceding siblings ...)
  2026-07-15 12:15 ` [PATCH i-g-t v3 30/31] lib/igt_core: move igt_load_igtrc to igt_device_scan Sebastian Brzezinka
@ 2026-07-15 12:15 ` Sebastian Brzezinka
  30 siblings, 0 replies; 32+ messages in thread
From: Sebastian Brzezinka @ 2026-07-15 12:15 UTC (permalink / raw)
  To: igt-dev
  Cc: Sebastian Brzezinka, kamil.konieczny, krzysztof.karas,
	krzysztof.niemiec, Ashutosh Dixit

lsgpu only needs device enumeration and the lightweight tool stubs.
Replace #include "igt.h" with the minimal header set and stop linking
against libigt.so.

ldd before: 35  (ldd | wc -l)
ldd after:   8  (ldd | wc -l)

Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Acked-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
---
 tools/lsgpu.c     | 2 +-
 tools/meson.build | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/lsgpu.c b/tools/lsgpu.c
index 935371dea..7d6b70b9b 100644
--- a/tools/lsgpu.c
+++ b/tools/lsgpu.c
@@ -34,7 +34,7 @@
 #include <signal.h>
 #include <sys/ioctl.h>
 
-#include "igt.h"
+#include "igt_core.h"
 #include "igt_device_scan.h"
 
 /**
diff --git a/tools/meson.build b/tools/meson.build
index 6e694164f..fbc6c0a00 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -27,7 +27,6 @@ tools_progs = [
 	'intel_tiling_detect',
 	'intel_gem_info',
 	'dpcd_reg',
-	'lsgpu',
 ]
 tool_deps = igt_deps
 tool_deps += zlib
@@ -172,6 +171,12 @@ install_data(['intel_gpu_abrt', 'intel-gfx-fw-info'], install_dir : bindir)
 
 install_subdir('registers', install_dir : datadir)
 
+executable('lsgpu', 'lsgpu.c',
+	   dependencies : [lib_igt_device_scan, lib_igt_tools_stub,
+	                    lib_igt_drm_stub, glib, libudev, libpci],
+	   install_rpath : bindir_rpathdir,
+	   install : true)
+
 executable('intel_gpu_top', 'intel_gpu_top.c',
 	   install : true,
 	   install_rpath : bindir_rpathdir,
-- 
2.53.0


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

end of thread, other threads:[~2026-07-15 12:30 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-15 12:15 [PATCH i-g-t v3 00/31] tools: remove unnecessary shared library dependencies from standalone tools Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 01/31] lib/igt_tools_stub: introduce static sub-library for tools Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 02/31] lib/igt_stats: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 03/31] tools/igt_stats: link with minimal sub-libraries Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 04/31] tools/intel_firmware_decode: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 05/31] lib/igt_tools_stub: add stubs needed by tools Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 06/31] lib/igt_drm_stub: introduce for tools needing driver detection Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 07/31] lib/igt_device_scan: wire to use static sub-libraries Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 08/31] tools/intel_gpu_top: add explicit drm/tools-stub deps Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 09/31] lib/igt_halffloat: introduce static sub-library for tools Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 10/31] lib/i915/intel_decode: replace igt.h with minimal headers Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 11/31] lib/i915/intel_decode: introduce static sub-library for tools Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 12/31] lib/intel_mmio: introduce lib_igt_reg_tools " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 13/31] tools/intel_gpu_frequency: link with minimal sub-libraries Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 14/31] tools/intel_stepping: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 15/31] tools/intel_gtt: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 16/31] tools/intel_dump_decode: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 17/31] tools/intel_error_decode: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 18/31] tools/intel_vbt_decode: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 19/31] tools/intel_backlight: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 20/31] tools/intel_lid: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 21/31] tools/intel_gpu_time: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 22/31] tools/intel_audio_dump: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 23/31] tools/intel_forcewaked: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 24/31] tools/intel_guc_logger: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 25/31] tools/intel_infoframes: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 26/31] tools/intel_panel_fitter: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 27/31] tools/intel_watermark: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 28/31] tools/intel_display_poller: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 29/31] tools/intel_gvtg_test: " Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 30/31] lib/igt_core: move igt_load_igtrc to igt_device_scan Sebastian Brzezinka
2026-07-15 12:15 ` [PATCH i-g-t v3 31/31] tools/lsgpu: link with minimal sub-libraries Sebastian Brzezinka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox