diff mbox series

[v6,1/1] package/igt-gpu-tools: new package

Message ID 20231026172510.4146310-1-bernd@kuhls.net
State Superseded
Headers show
Series [v6,1/1] package/igt-gpu-tools: new package | expand

Commit Message

Bernd Kuhls Oct. 26, 2023, 5:25 p.m. UTC
From: Gaël PORTAY <gael.portay@rtone.fr>

IGT GPU Tools is a collection of tools for development and testing of
the DRM drivers

Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
Signed-off-by: Andy Yan <andyshrk@163.com>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
[Bernd: v4
 - add myself to DEVELOPERS
 - add patches to fix build with musl & uClibc
 - add dependencies to locales, mmu, wchar and headers >= 4.11
 - rework libunwind dependency
 - remove duplicate libglib2 dependency
 v5
 - added optional dependency to json_c
 - remove broken igt_stats binary
 v6
 - updated patch series after upstream review]

Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
Build-tested using this defconfig

BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_PACKAGE_IGT_GPU_TOOLS=y
BR2_PACKAGE_JSON_C=y
BR2_PER_PACKAGE_DIRECTORIES=y

bootlin-xtensa-uclibc [27/45]: FAILED
- build stopped with an error in the cairo package
br-mips64-n64-full [33/45]: FAILED
- toolchain dates back to 2020 causing the known static_assert problem
  with uClibc, this is fixed in newer uClibc versions.

45 builds, 17 skipped, 2 build failed, 0 legal-info failed, 0 show-info
failed

 DEVELOPERS                                    |  1 +
 package/Config.in                             |  1 +
 ...d-check-that-outb-is-present-in-io.h.patch | 34 +++++++
 ...limits.h-to-fix-build-with-musl-libc.patch | 89 +++++++++++++++++++
 .../0003-lib-igt_aux.h-Fix-musl-build.patch   | 57 ++++++++++++
 ...-lib-igt_x86.c-Fix-musl-uclibc-build.patch | 43 +++++++++
 ...gt_halffloat.c-Fix-musl-uclibc-build.patch | 46 ++++++++++
 ...rks-gem_exec_tracer.c-Fix-musl-build.patch | 46 ++++++++++
 package/igt-gpu-tools/Config.in               | 32 +++++++
 package/igt-gpu-tools/igt-gpu-tools.hash      |  5 ++
 package/igt-gpu-tools/igt-gpu-tools.mk        | 38 ++++++++
 11 files changed, 392 insertions(+)
 create mode 100644 package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
 create mode 100644 package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
 create mode 100644 package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
 create mode 100644 package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
 create mode 100644 package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
 create mode 100644 package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
 create mode 100644 package/igt-gpu-tools/Config.in
 create mode 100644 package/igt-gpu-tools/igt-gpu-tools.hash
 create mode 100644 package/igt-gpu-tools/igt-gpu-tools.mk

Comments

Andy Yan Nov. 27, 2023, 6:28 a.m. UTC | #1
Hi Bernd:
can this be merged ?












在 2023-10-27 01:25:10,"Bernd Kuhls" <bernd@kuhls.net> 写道:
>From: Gaël PORTAY <gael.portay@rtone.fr>
>
>IGT GPU Tools is a collection of tools for development and testing of
>the DRM drivers
>
>Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
>Signed-off-by: Andy Yan <andyshrk@163.com>
>Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>[Bernd: v4
> - add myself to DEVELOPERS
> - add patches to fix build with musl & uClibc
> - add dependencies to locales, mmu, wchar and headers >= 4.11
> - rework libunwind dependency
> - remove duplicate libglib2 dependency
> v5
> - added optional dependency to json_c
> - remove broken igt_stats binary
> v6
> - updated patch series after upstream review]
>
>Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>---
>Build-tested using this defconfig
>
>BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
>BR2_PACKAGE_IGT_GPU_TOOLS=y
>BR2_PACKAGE_JSON_C=y
>BR2_PER_PACKAGE_DIRECTORIES=y
>
>bootlin-xtensa-uclibc [27/45]: FAILED
>- build stopped with an error in the cairo package
>br-mips64-n64-full [33/45]: FAILED
>- toolchain dates back to 2020 causing the known static_assert problem
>  with uClibc, this is fixed in newer uClibc versions.
>
>45 builds, 17 skipped, 2 build failed, 0 legal-info failed, 0 show-info
>failed
>
> DEVELOPERS                                    |  1 +
> package/Config.in                             |  1 +
> ...d-check-that-outb-is-present-in-io.h.patch | 34 +++++++
> ...limits.h-to-fix-build-with-musl-libc.patch | 89 +++++++++++++++++++
> .../0003-lib-igt_aux.h-Fix-musl-build.patch   | 57 ++++++++++++
> ...-lib-igt_x86.c-Fix-musl-uclibc-build.patch | 43 +++++++++
> ...gt_halffloat.c-Fix-musl-uclibc-build.patch | 46 ++++++++++
> ...rks-gem_exec_tracer.c-Fix-musl-build.patch | 46 ++++++++++
> package/igt-gpu-tools/Config.in               | 32 +++++++
> package/igt-gpu-tools/igt-gpu-tools.hash      |  5 ++
> package/igt-gpu-tools/igt-gpu-tools.mk        | 38 ++++++++
> 11 files changed, 392 insertions(+)
> create mode 100644 package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
> create mode 100644 package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
> create mode 100644 package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
> create mode 100644 package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
> create mode 100644 package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
> create mode 100644 package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
> create mode 100644 package/igt-gpu-tools/Config.in
> create mode 100644 package/igt-gpu-tools/igt-gpu-tools.hash
> create mode 100644 package/igt-gpu-tools/igt-gpu-tools.mk
>
>diff --git a/DEVELOPERS b/DEVELOPERS
>index 56449b0d5f..a621fd762e 100644
>--- a/DEVELOPERS
>+++ b/DEVELOPERS
>@@ -366,6 +366,7 @@ F:	package/gpsd/
> F:	package/gptfdisk/
> F:	package/hddtemp/
> F:	package/hdparm/
>+F:	package/igt-gpu-tools/
> F:	package/intel-gmmlib/
> F:	package/intel-mediadriver/
> F:	package/intel-mediasdk/
>diff --git a/package/Config.in b/package/Config.in
>index ecd8668ee7..97ec46730e 100644
>--- a/package/Config.in
>+++ b/package/Config.in
>@@ -318,6 +318,7 @@ comment "Graphic applications"
> 	source "package/glmark2/Config.in"
> 	source "package/glslsandbox-player/Config.in"
> 	source "package/gnuplot/Config.in"
>+	source "package/igt-gpu-tools/Config.in"
> 	source "package/jhead/Config.in"
> 	source "package/kmscube/Config.in"
> 	source "package/libva-utils/Config.in"
>diff --git a/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
>new file mode 100644
>index 0000000000..5c0b39ee7d
>--- /dev/null
>+++ b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
>@@ -0,0 +1,34 @@
>+From d5373adea6248c0fe41870d50b24fc4ed36c6490 Mon Sep 17 00:00:00 2001
>+From: Bernd Kuhls <bernd@kuhls.net>
>+Date: Sat, 21 Oct 2023 16:47:07 +0200
>+Subject: [PATCH] build: check that outb is present in io.h
>+
>+With glibc if io.h exists, inb/outb are always defined.
>+However on musl, io.h always exists but it may not define inb/outb.
>+
>+Thus, igt-gpu-tools builds with musl on non-x86 platforms will fail to
>+link. Fix this by checking for both io.h and that outb() is defined.
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063811.html
>+
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+---
>+ meson.build | 2 +-
>+ 1 file changed, 1 insertion(+), 1 deletion(-)
>+
>+diff --git a/meson.build b/meson.build
>+index b35a00faa..cee8a7446 100644
>+--- a/meson.build
>++++ b/meson.build
>+@@ -220,7 +220,7 @@ endif
>+ if cc.has_header('libgen.h')
>+ 	config.set('HAVE_LIBGEN_H', 1)
>+ endif
>+-if cc.has_header('sys/io.h')
>++if cc.has_header('sys/io.h') and cc.has_function('outb', prefix: '#include <sys/io.h>')
>+ 	config.set('HAVE_SYS_IO_H', 1)
>+ endif
>+ if cc.links('''
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
>new file mode 100644
>index 0000000000..303bc4a8bf
>--- /dev/null
>+++ b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
>@@ -0,0 +1,89 @@
>+From fea7a3189a6e42bb625c3742828849d6360f1435 Mon Sep 17 00:00:00 2001
>+From: Stefano Ragni <st3r4g@protonmail.com>
>+Date: Sun, 22 Oct 2023 11:47:39 +0200
>+Subject: [PATCH] Include limits.h to fix build with musl libc
>+
>+Original patch was added to void-linux:
>+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
>+
>+Bug report with request to split the original patch into some
>+functional changes:
>+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063815.html
>+
>+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+[Bernd: alphabetically sorted includes, removed includes not needed
>+ anymore, backported to v1.28]
>+---
>+ lib/igt_aux.c                 | 1 +
>+ lib/igt_eld.c                 | 1 +
>+ lib/igt_hwmon.c               | 1 +
>+ tests/intel/i915_pm_rpm.c     | 1 +
>+ tests/kms_sysfs_edid_timing.c | 1 +
>+ 5 files changed, 5 insertions(+)
>+
>+diff --git a/lib/igt_aux.c b/lib/igt_aux.c
>+index 18edc5ef9..d6aeb876b 100644
>+--- a/lib/igt_aux.c
>++++ b/lib/igt_aux.c
>+@@ -31,6 +31,7 @@
>+ #endif
>+ #include <stdio.h>
>+ #include <fcntl.h>
>++#include <limits.h> // PATH_MAX
>+ #include <pwd.h>
>+ #include <sys/stat.h>
>+ #include <sys/ioctl.h>
>+diff --git a/lib/igt_eld.c b/lib/igt_eld.c
>+index ef6625df1..6cec9abdd 100644
>+--- a/lib/igt_eld.c
>++++ b/lib/igt_eld.c
>+@@ -28,6 +28,7 @@
>+ #include <dirent.h>
>+ #include <errno.h>
>+ #include <glob.h>
>++#include <limits.h> // PATH_MAX
>+ #include <stdint.h>
>+ #include <stdio.h>
>+ #include <string.h>
>+diff --git a/lib/igt_hwmon.c b/lib/igt_hwmon.c
>+index 309019d69..6216a1607 100644
>+--- a/lib/igt_hwmon.c
>++++ b/lib/igt_hwmon.c
>+@@ -2,6 +2,7 @@
>+ /*
>+  * Copyright © 2022 Intel Corporation
>+  */
>++#include <limits.h> // PATH_MAX
>+ #include <sys/stat.h>
>+ #include <sys/sysmacros.h>
>+ #include <dirent.h>
>+diff --git a/tests/intel/i915_pm_rpm.c b/tests/intel/i915_pm_rpm.c
>+index 17413ffe5..bf0ab4ae7 100644
>+--- a/tests/intel/i915_pm_rpm.c
>++++ b/tests/intel/i915_pm_rpm.c
>+@@ -35,6 +35,7 @@
>+ 
>+ #include <unistd.h>
>+ #include <fcntl.h>
>++#include <limits.h> // PATH_MAX
>+ #include <dirent.h>
>+ #include <sys/ioctl.h>
>+ #include <sys/mman.h>
>+diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
>+index ee47a024e..c371a5e5e 100644
>+--- a/tests/kms_sysfs_edid_timing.c
>++++ b/tests/kms_sysfs_edid_timing.c
>+@@ -24,6 +24,7 @@
>+ 
>+ #include <dirent.h>
>+ #include <fcntl.h>
>++#include <limits.h> // PATH_MAX
>+ #include <sys/stat.h>
>+ /**
>+  * TEST: kms sysfs edid timing
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
>new file mode 100644
>index 0000000000..eb8713a63d
>--- /dev/null
>+++ b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
>@@ -0,0 +1,57 @@
>+From 6695ea970627499d6eb5d5db2edead50ebb2511d Mon Sep 17 00:00:00 2001
>+From: Bernd Kuhls <bernd@kuhls.net>
>+Date: Sun, 22 Oct 2023 11:57:32 +0200
>+Subject: [PATCH] lib/igt_aux.h: Fix musl build
>+MIME-Version: 1.0
>+Content-Type: text/plain; charset=UTF-8
>+Content-Transfer-Encoding: 8bit
>+
>+Inspired by https://www.openwall.com/lists/musl/2020/10/28/11
>+
>+Define sigev_notify_thread_id only when needed, quoting
>+https://sourceware.org/bugzilla/show_bug.cgi?id=27417
>+Both freebsd and musl actually have this macro defined under <signal.h>
>+
>+Fixes build error:
>+
>+../lib/igt_aux.c:191:20: error: ‘struct sigevent’ has no member named ‘_sigev_un’
>+  191 |                 sev.sigev_notify_thread_id = __igt_sigiter.tid;
>+
>+../lib/igt_aux.c:1994:12: error: ‘struct sigevent’ has no member named ‘_sigev_un’
>+ 1994 |         sev.sigev_notify_thread_id = gettid();
>+
>+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063814.html
>+
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+---
>+ lib/igt_aux.h | 5 ++++-
>+ 1 file changed, 4 insertions(+), 1 deletion(-)
>+
>+diff --git a/lib/igt_aux.h b/lib/igt_aux.h
>+index fb76b0313..55f0aa3b5 100644
>+--- a/lib/igt_aux.h
>++++ b/lib/igt_aux.h
>+@@ -29,6 +29,7 @@
>+ #define IGT_AUX_H
>+ 
>+ #include <inttypes.h>
>++#include <signal.h>
>+ #include <stdbool.h>
>+ #include <stddef.h>
>+ #include <sys/time.h>
>+@@ -48,7 +49,9 @@
>+ # ifndef HAVE_GETTID
>+ #  define gettid() (pid_t)(syscall(__NR_gettid))
>+ # endif
>+-# define sigev_notify_thread_id _sigev_un._tid
>++# ifndef sigev_notify_thread_id
>++#  define sigev_notify_thread_id _sigev_un._tid
>++# endif
>+ #endif
>+ 
>+ /* auxialiary igt helpers from igt_aux.c */
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
>new file mode 100644
>index 0000000000..fdb7e8b786
>--- /dev/null
>+++ b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
>@@ -0,0 +1,43 @@
>+From b47d645b3a1f476688201c23e9ef6fbccc891cec Mon Sep 17 00:00:00 2001
>+From: Stefano Ragni <st3r4g@protonmail.com>
>+Date: Sun, 22 Oct 2023 12:06:01 +0200
>+Subject: [PATCH] lib/igt_x86.c: Fix musl/uclibc build
>+MIME-Version: 1.0
>+Content-Type: text/plain; charset=UTF-8
>+Content-Transfer-Encoding: 8bit
>+
>+Original patch was added to void-linux:
>+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
>+
>+Fixes build error:
>+../lib/igt_x86.c:295:6: error: ‘ifunc’ is not supported on this target
>+  295 | void igt_memcpy_from_wc(void *dst, const void *src, unsigned long len)
>+
>+Bug report with request to split the original patch into some
>+functional changes:
>+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063813.html
>+
>+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+---
>+ lib/igt_x86.c | 2 +-
>+ 1 file changed, 1 insertion(+), 1 deletion(-)
>+
>+diff --git a/lib/igt_x86.c b/lib/igt_x86.c
>+index 6ac700df0..8c102fd13 100644
>+--- a/lib/igt_x86.c
>++++ b/lib/igt_x86.c
>+@@ -190,7 +190,7 @@ char *igt_x86_features_to_string(unsigned features, char *line)
>+ }
>+ #endif
>+ 
>+-#if defined(__x86_64__) && !defined(__clang__)
>++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
>+ #pragma GCC push_options
>+ #pragma GCC target("sse4.1")
>+ #pragma GCC diagnostic ignored "-Wpointer-arith"
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
>new file mode 100644
>index 0000000000..07bdf39731
>--- /dev/null
>+++ b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
>@@ -0,0 +1,46 @@
>+From b81a041f3e07a377db7fa1ea79f83ed2d0183b61 Mon Sep 17 00:00:00 2001
>+From: Stefano Ragni <st3r4g@protonmail.com>
>+Date: Sun, 22 Oct 2023 12:08:54 +0200
>+Subject: [PATCH] lib/igt_halffloat.c: Fix musl/uclibc build
>+MIME-Version: 1.0
>+Content-Type: text/plain; charset=UTF-8
>+Content-Transfer-Encoding: 8bit
>+
>+Original patch was added to void-linux:
>+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
>+
>+Fixes build error:
>+../lib/igt_halffloat.c:205:6: error: ‘ifunc’ is not supported on this target
>+  205 | void igt_float_to_half(const float *f, uint16_t *h, unsigned int num)
>+
>+../lib/igt_halffloat.c:216:6: error: ‘ifunc’ is not supported on this target
>+  216 | void igt_half_to_float(const uint16_t *h, float *f, unsigned int num)
>+
>+Bug report with request to split the original patch into some
>+functional changes:
>+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063816.html
>+
>+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+---
>+ lib/igt_halffloat.c | 2 +-
>+ 1 file changed, 1 insertion(+), 1 deletion(-)
>+
>+diff --git a/lib/igt_halffloat.c b/lib/igt_halffloat.c
>+index 08ab05fce..5dbe08e01 100644
>+--- a/lib/igt_halffloat.c
>++++ b/lib/igt_halffloat.c
>+@@ -162,7 +162,7 @@ static inline float _half_to_float(uint16_t val)
>+ 	return fi.f;
>+ }
>+ 
>+-#if defined(__x86_64__) && !defined(__clang__)
>++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
>+ #pragma GCC push_options
>+ #pragma GCC target("f16c")
>+ 
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
>new file mode 100644
>index 0000000000..1ac7a37bd3
>--- /dev/null
>+++ b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
>@@ -0,0 +1,46 @@
>+From 5d4df590185ca31ebd1a9ce90922907c15658c17 Mon Sep 17 00:00:00 2001
>+From: Mohammed Anas <triallax@tutanota.com>
>+Date: Sun, 22 Oct 2023 12:10:23 +0200
>+Subject: [PATCH] benchmarks/gem_exec_tracer.c: Fix musl build
>+MIME-Version: 1.0
>+Content-Type: text/plain; charset=UTF-8
>+Content-Transfer-Encoding: 8bit
>+
>+Original patch was added to void-linux:
>+https://github.com/void-linux/void-packages/commit/111918317d06598fe1459dbe139923404f3f4b9d
>+
>+Fixes build error:
>+../benchmarks/gem_exec_tracer.c:274:1: error: conflicting types for ‘ioctl’; have ‘int(int,  long unsigned int, ...)’
>+  274 | ioctl(int fd, unsigned long request, ...)
>+
>+Bug report with request to split the original patch into some
>+functional changes:
>+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
>+
>+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063817.html
>+
>+Signed-off-by: Mohammed Anas <triallax@tutanota.com>
>+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
>+---
>+ benchmarks/gem_exec_tracer.c | 4 ++++
>+ 1 file changed, 4 insertions(+)
>+
>+diff --git a/benchmarks/gem_exec_tracer.c b/benchmarks/gem_exec_tracer.c
>+index 7e86473e4..3156dfc23 100644
>+--- a/benchmarks/gem_exec_tracer.c
>++++ b/benchmarks/gem_exec_tracer.c
>+@@ -271,7 +271,11 @@ static int is_i915(int fd)
>+ }
>+ 
>+ int
>++#ifdef __GLIBC__
>+ ioctl(int fd, unsigned long request, ...)
>++#else
>++ioctl(int fd, int request, ...)
>++#endif
>+ {
>+ 	struct trace *t, **p;
>+ 	va_list args;
>+-- 
>+2.39.2
>+
>diff --git a/package/igt-gpu-tools/Config.in b/package/igt-gpu-tools/Config.in
>new file mode 100644
>index 0000000000..809c8e28ac
>--- /dev/null
>+++ b/package/igt-gpu-tools/Config.in
>@@ -0,0 +1,32 @@
>+config BR2_PACKAGE_IGT_GPU_TOOLS
>+	bool "igt-gpu-tools"
>+	depends on BR2_USE_MMU # fork()
>+	depends on BR2_ENABLE_LOCALE
>+	depends on !BR2_STATIC_LIBS
>+	depends on BR2_TOOLCHAIN_HAS_THREADS
>+	depends on BR2_PACKAGE_HAS_UDEV
>+	depends on BR2_USE_WCHAR # elfutils
>+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h
>+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng
>+	select BR2_PACKAGE_CAIRO
>+	select BR2_PACKAGE_CAIRO_PNG
>+	select BR2_PACKAGE_ELFUTILS
>+	select BR2_PACKAGE_KMOD
>+	select BR2_PACKAGE_LIBDRM
>+	select BR2_PACKAGE_LIBGLIB2
>+	select BR2_PACKAGE_LIBPCIACCESS
>+	select BR2_PACKAGE_PIXMAN
>+	select BR2_PACKAGE_PROCPS_NG
>+	select BR2_PACKAGE_ZLIB
>+	help
>+	  IGT GPU Tools is a collection of tools for development and
>+	  testing of the DRM drivers.
>+
>+	  https://gitlab.freedesktop.org/drm/igt-gpu-tools
>+
>+comment "igt-gpu-tools needs udev /dev management and toolchain w/ threads, wchar, dynamic library, locale, headers >= 4.11"
>+	depends on BR2_USE_MMU
>+	depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
>+		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
>+		!BR2_ENABLE_LOCALE || \
>+		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
>diff --git a/package/igt-gpu-tools/igt-gpu-tools.hash b/package/igt-gpu-tools/igt-gpu-tools.hash
>new file mode 100644
>index 0000000000..95cc3a639b
>--- /dev/null
>+++ b/package/igt-gpu-tools/igt-gpu-tools.hash
>@@ -0,0 +1,5 @@
>+# Locally calculated from download
>+sha256  6f8b2b12704c0b37c22f32a3751688e7144f850faa715e85b26effdc5209cfd1  igt-gpu-tools-v1.28.tar.bz2
>+
>+# Hash for license file:
>+sha256  1b7e266857b05808660f42369a4a797459d7b7bec7245e378aa28a8db2f213da  COPYING
>diff --git a/package/igt-gpu-tools/igt-gpu-tools.mk b/package/igt-gpu-tools/igt-gpu-tools.mk
>new file mode 100644
>index 0000000000..6aecd42429
>--- /dev/null
>+++ b/package/igt-gpu-tools/igt-gpu-tools.mk
>@@ -0,0 +1,38 @@
>+################################################################################
>+#
>+# igt-gpu-tools
>+#
>+################################################################################
>+
>+IGT_GPU_TOOLS_VERSION = 1.28
>+IGT_GPU_TOOLS_SOURCE = igt-gpu-tools-v$(IGT_GPU_TOOLS_VERSION).tar.bz2
>+IGT_GPU_TOOLS_SITE = https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/archive/v$(IGT_GPU_TOOLS_VERSION)
>+IGT_GPU_TOOLS_LICENSE = MIT
>+IGT_GPU_TOOLS_LICENSE_FILES = COPYING
>+IGT_GPU_TOOLS_INSTALL_STAGING = YES
>+IGT_GPU_TOOLS_DEPENDENCIES = host-pkgconf cairo elfutils kmod libdrm libglib2 libpciaccess pixman procps-ng zlib
>+
>+ifeq ($(BR2_PACKAGE_JSON_C),y)
>+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=enabled
>+IGT_GPU_TOOLS_DEPENDENCIES += json-c
>+else
>+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=disabled
>+endif
>+
>+ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
>+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=enabled
>+IGT_GPU_TOOLS_DEPENDENCIES += libunwind
>+else
>+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=disabled
>+endif
>+
>+# igt_stats is broken with Relocation link-time protections enabled
>+# https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/102
>+ifeq ($(BR2_RELRO_NONE),)
>+define IGT_GPU_TOOLS_REMOVE_IGT_STATS
>+	$(RM) -fr $(TARGET_DIR)/usr/bin/igt_stats
>+endef
>+IGT_GPU_TOOLS_POST_INSTALL_TARGET_HOOKS += IGT_GPU_TOOLS_REMOVE_IGT_STATS
>+endif
>+
>+$(eval $(meson-package))
>-- 
>2.39.2
>
>_______________________________________________
>buildroot mailing list
>buildroot@buildroot.org
>https://lists.buildroot.org/mailman/listinfo/buildroot
Francois Dugast Nov. 27, 2023, 8:35 a.m. UTC | #2
On Mon, Nov 27, 2023 at 02:28:37PM +0800, Andy Yan wrote:
> 
> 
> 
> Hi Bernd:
> can this be merged ?

Hi,

This configuration creates mostly binaries which are not executable. One
workaround is in place for one binary in particular (igt_stats) but this
issue concerns most other binaries as well.

The issue is already reported in IGT [1] but there is currently no known
solution to build with hardened toolchains. IMHO we should reflect this
in the package with the correct RELRO dependency. I will send another
version in a few minutes.

[1] https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/102

Francois

> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 在 2023-10-27 01:25:10,"Bernd Kuhls" <bernd@kuhls.net> 写道:
> >From: Gaël PORTAY <gael.portay@rtone.fr>
> >
> >IGT GPU Tools is a collection of tools for development and testing of
> >the DRM drivers
> >
> >Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
> >Signed-off-by: Andy Yan <andyshrk@163.com>
> >Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >[Bernd: v4
> > - add myself to DEVELOPERS
> > - add patches to fix build with musl & uClibc
> > - add dependencies to locales, mmu, wchar and headers >= 4.11
> > - rework libunwind dependency
> > - remove duplicate libglib2 dependency
> > v5
> > - added optional dependency to json_c
> > - remove broken igt_stats binary
> > v6
> > - updated patch series after upstream review]
> >
> >Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >---
> >Build-tested using this defconfig
> >
> >BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
> >BR2_PACKAGE_IGT_GPU_TOOLS=y
> >BR2_PACKAGE_JSON_C=y
> >BR2_PER_PACKAGE_DIRECTORIES=y
> >
> >bootlin-xtensa-uclibc [27/45]: FAILED
> >- build stopped with an error in the cairo package
> >br-mips64-n64-full [33/45]: FAILED
> >- toolchain dates back to 2020 causing the known static_assert problem
> >  with uClibc, this is fixed in newer uClibc versions.
> >
> >45 builds, 17 skipped, 2 build failed, 0 legal-info failed, 0 show-info
> >failed
> >
> > DEVELOPERS                                    |  1 +
> > package/Config.in                             |  1 +
> > ...d-check-that-outb-is-present-in-io.h.patch | 34 +++++++
> > ...limits.h-to-fix-build-with-musl-libc.patch | 89 +++++++++++++++++++
> > .../0003-lib-igt_aux.h-Fix-musl-build.patch   | 57 ++++++++++++
> > ...-lib-igt_x86.c-Fix-musl-uclibc-build.patch | 43 +++++++++
> > ...gt_halffloat.c-Fix-musl-uclibc-build.patch | 46 ++++++++++
> > ...rks-gem_exec_tracer.c-Fix-musl-build.patch | 46 ++++++++++
> > package/igt-gpu-tools/Config.in               | 32 +++++++
> > package/igt-gpu-tools/igt-gpu-tools.hash      |  5 ++
> > package/igt-gpu-tools/igt-gpu-tools.mk        | 38 ++++++++
> > 11 files changed, 392 insertions(+)
> > create mode 100644 package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
> > create mode 100644 package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
> > create mode 100644 package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
> > create mode 100644 package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
> > create mode 100644 package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
> > create mode 100644 package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
> > create mode 100644 package/igt-gpu-tools/Config.in
> > create mode 100644 package/igt-gpu-tools/igt-gpu-tools.hash
> > create mode 100644 package/igt-gpu-tools/igt-gpu-tools.mk
> >
> >diff --git a/DEVELOPERS b/DEVELOPERS
> >index 56449b0d5f..a621fd762e 100644
> >--- a/DEVELOPERS
> >+++ b/DEVELOPERS
> >@@ -366,6 +366,7 @@ F:	package/gpsd/
> > F:	package/gptfdisk/
> > F:	package/hddtemp/
> > F:	package/hdparm/
> >+F:	package/igt-gpu-tools/
> > F:	package/intel-gmmlib/
> > F:	package/intel-mediadriver/
> > F:	package/intel-mediasdk/
> >diff --git a/package/Config.in b/package/Config.in
> >index ecd8668ee7..97ec46730e 100644
> >--- a/package/Config.in
> >+++ b/package/Config.in
> >@@ -318,6 +318,7 @@ comment "Graphic applications"
> > 	source "package/glmark2/Config.in"
> > 	source "package/glslsandbox-player/Config.in"
> > 	source "package/gnuplot/Config.in"
> >+	source "package/igt-gpu-tools/Config.in"
> > 	source "package/jhead/Config.in"
> > 	source "package/kmscube/Config.in"
> > 	source "package/libva-utils/Config.in"
> >diff --git a/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
> >new file mode 100644
> >index 0000000000..5c0b39ee7d
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
> >@@ -0,0 +1,34 @@
> >+From d5373adea6248c0fe41870d50b24fc4ed36c6490 Mon Sep 17 00:00:00 2001
> >+From: Bernd Kuhls <bernd@kuhls.net>
> >+Date: Sat, 21 Oct 2023 16:47:07 +0200
> >+Subject: [PATCH] build: check that outb is present in io.h
> >+
> >+With glibc if io.h exists, inb/outb are always defined.
> >+However on musl, io.h always exists but it may not define inb/outb.
> >+
> >+Thus, igt-gpu-tools builds with musl on non-x86 platforms will fail to
> >+link. Fix this by checking for both io.h and that outb() is defined.
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063811.html
> >+
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+---
> >+ meson.build | 2 +-
> >+ 1 file changed, 1 insertion(+), 1 deletion(-)
> >+
> >+diff --git a/meson.build b/meson.build
> >+index b35a00faa..cee8a7446 100644
> >+--- a/meson.build
> >++++ b/meson.build
> >+@@ -220,7 +220,7 @@ endif
> >+ if cc.has_header('libgen.h')
> >+ 	config.set('HAVE_LIBGEN_H', 1)
> >+ endif
> >+-if cc.has_header('sys/io.h')
> >++if cc.has_header('sys/io.h') and cc.has_function('outb', prefix: '#include <sys/io.h>')
> >+ 	config.set('HAVE_SYS_IO_H', 1)
> >+ endif
> >+ if cc.links('''
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
> >new file mode 100644
> >index 0000000000..303bc4a8bf
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
> >@@ -0,0 +1,89 @@
> >+From fea7a3189a6e42bb625c3742828849d6360f1435 Mon Sep 17 00:00:00 2001
> >+From: Stefano Ragni <st3r4g@protonmail.com>
> >+Date: Sun, 22 Oct 2023 11:47:39 +0200
> >+Subject: [PATCH] Include limits.h to fix build with musl libc
> >+
> >+Original patch was added to void-linux:
> >+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
> >+
> >+Bug report with request to split the original patch into some
> >+functional changes:
> >+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063815.html
> >+
> >+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+[Bernd: alphabetically sorted includes, removed includes not needed
> >+ anymore, backported to v1.28]
> >+---
> >+ lib/igt_aux.c                 | 1 +
> >+ lib/igt_eld.c                 | 1 +
> >+ lib/igt_hwmon.c               | 1 +
> >+ tests/intel/i915_pm_rpm.c     | 1 +
> >+ tests/kms_sysfs_edid_timing.c | 1 +
> >+ 5 files changed, 5 insertions(+)
> >+
> >+diff --git a/lib/igt_aux.c b/lib/igt_aux.c
> >+index 18edc5ef9..d6aeb876b 100644
> >+--- a/lib/igt_aux.c
> >++++ b/lib/igt_aux.c
> >+@@ -31,6 +31,7 @@
> >+ #endif
> >+ #include <stdio.h>
> >+ #include <fcntl.h>
> >++#include <limits.h> // PATH_MAX
> >+ #include <pwd.h>
> >+ #include <sys/stat.h>
> >+ #include <sys/ioctl.h>
> >+diff --git a/lib/igt_eld.c b/lib/igt_eld.c
> >+index ef6625df1..6cec9abdd 100644
> >+--- a/lib/igt_eld.c
> >++++ b/lib/igt_eld.c
> >+@@ -28,6 +28,7 @@
> >+ #include <dirent.h>
> >+ #include <errno.h>
> >+ #include <glob.h>
> >++#include <limits.h> // PATH_MAX
> >+ #include <stdint.h>
> >+ #include <stdio.h>
> >+ #include <string.h>
> >+diff --git a/lib/igt_hwmon.c b/lib/igt_hwmon.c
> >+index 309019d69..6216a1607 100644
> >+--- a/lib/igt_hwmon.c
> >++++ b/lib/igt_hwmon.c
> >+@@ -2,6 +2,7 @@
> >+ /*
> >+  * Copyright © 2022 Intel Corporation
> >+  */
> >++#include <limits.h> // PATH_MAX
> >+ #include <sys/stat.h>
> >+ #include <sys/sysmacros.h>
> >+ #include <dirent.h>
> >+diff --git a/tests/intel/i915_pm_rpm.c b/tests/intel/i915_pm_rpm.c
> >+index 17413ffe5..bf0ab4ae7 100644
> >+--- a/tests/intel/i915_pm_rpm.c
> >++++ b/tests/intel/i915_pm_rpm.c
> >+@@ -35,6 +35,7 @@
> >+ 
> >+ #include <unistd.h>
> >+ #include <fcntl.h>
> >++#include <limits.h> // PATH_MAX
> >+ #include <dirent.h>
> >+ #include <sys/ioctl.h>
> >+ #include <sys/mman.h>
> >+diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
> >+index ee47a024e..c371a5e5e 100644
> >+--- a/tests/kms_sysfs_edid_timing.c
> >++++ b/tests/kms_sysfs_edid_timing.c
> >+@@ -24,6 +24,7 @@
> >+ 
> >+ #include <dirent.h>
> >+ #include <fcntl.h>
> >++#include <limits.h> // PATH_MAX
> >+ #include <sys/stat.h>
> >+ /**
> >+  * TEST: kms sysfs edid timing
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
> >new file mode 100644
> >index 0000000000..eb8713a63d
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
> >@@ -0,0 +1,57 @@
> >+From 6695ea970627499d6eb5d5db2edead50ebb2511d Mon Sep 17 00:00:00 2001
> >+From: Bernd Kuhls <bernd@kuhls.net>
> >+Date: Sun, 22 Oct 2023 11:57:32 +0200
> >+Subject: [PATCH] lib/igt_aux.h: Fix musl build
> >+MIME-Version: 1.0
> >+Content-Type: text/plain; charset=UTF-8
> >+Content-Transfer-Encoding: 8bit
> >+
> >+Inspired by https://www.openwall.com/lists/musl/2020/10/28/11
> >+
> >+Define sigev_notify_thread_id only when needed, quoting
> >+https://sourceware.org/bugzilla/show_bug.cgi?id=27417
> >+Both freebsd and musl actually have this macro defined under <signal.h>
> >+
> >+Fixes build error:
> >+
> >+../lib/igt_aux.c:191:20: error: ‘struct sigevent’ has no member named ‘_sigev_un’
> >+  191 |                 sev.sigev_notify_thread_id = __igt_sigiter.tid;
> >+
> >+../lib/igt_aux.c:1994:12: error: ‘struct sigevent’ has no member named ‘_sigev_un’
> >+ 1994 |         sev.sigev_notify_thread_id = gettid();
> >+
> >+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063814.html
> >+
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+---
> >+ lib/igt_aux.h | 5 ++++-
> >+ 1 file changed, 4 insertions(+), 1 deletion(-)
> >+
> >+diff --git a/lib/igt_aux.h b/lib/igt_aux.h
> >+index fb76b0313..55f0aa3b5 100644
> >+--- a/lib/igt_aux.h
> >++++ b/lib/igt_aux.h
> >+@@ -29,6 +29,7 @@
> >+ #define IGT_AUX_H
> >+ 
> >+ #include <inttypes.h>
> >++#include <signal.h>
> >+ #include <stdbool.h>
> >+ #include <stddef.h>
> >+ #include <sys/time.h>
> >+@@ -48,7 +49,9 @@
> >+ # ifndef HAVE_GETTID
> >+ #  define gettid() (pid_t)(syscall(__NR_gettid))
> >+ # endif
> >+-# define sigev_notify_thread_id _sigev_un._tid
> >++# ifndef sigev_notify_thread_id
> >++#  define sigev_notify_thread_id _sigev_un._tid
> >++# endif
> >+ #endif
> >+ 
> >+ /* auxialiary igt helpers from igt_aux.c */
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
> >new file mode 100644
> >index 0000000000..fdb7e8b786
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
> >@@ -0,0 +1,43 @@
> >+From b47d645b3a1f476688201c23e9ef6fbccc891cec Mon Sep 17 00:00:00 2001
> >+From: Stefano Ragni <st3r4g@protonmail.com>
> >+Date: Sun, 22 Oct 2023 12:06:01 +0200
> >+Subject: [PATCH] lib/igt_x86.c: Fix musl/uclibc build
> >+MIME-Version: 1.0
> >+Content-Type: text/plain; charset=UTF-8
> >+Content-Transfer-Encoding: 8bit
> >+
> >+Original patch was added to void-linux:
> >+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
> >+
> >+Fixes build error:
> >+../lib/igt_x86.c:295:6: error: ‘ifunc’ is not supported on this target
> >+  295 | void igt_memcpy_from_wc(void *dst, const void *src, unsigned long len)
> >+
> >+Bug report with request to split the original patch into some
> >+functional changes:
> >+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063813.html
> >+
> >+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+---
> >+ lib/igt_x86.c | 2 +-
> >+ 1 file changed, 1 insertion(+), 1 deletion(-)
> >+
> >+diff --git a/lib/igt_x86.c b/lib/igt_x86.c
> >+index 6ac700df0..8c102fd13 100644
> >+--- a/lib/igt_x86.c
> >++++ b/lib/igt_x86.c
> >+@@ -190,7 +190,7 @@ char *igt_x86_features_to_string(unsigned features, char *line)
> >+ }
> >+ #endif
> >+ 
> >+-#if defined(__x86_64__) && !defined(__clang__)
> >++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
> >+ #pragma GCC push_options
> >+ #pragma GCC target("sse4.1")
> >+ #pragma GCC diagnostic ignored "-Wpointer-arith"
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
> >new file mode 100644
> >index 0000000000..07bdf39731
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
> >@@ -0,0 +1,46 @@
> >+From b81a041f3e07a377db7fa1ea79f83ed2d0183b61 Mon Sep 17 00:00:00 2001
> >+From: Stefano Ragni <st3r4g@protonmail.com>
> >+Date: Sun, 22 Oct 2023 12:08:54 +0200
> >+Subject: [PATCH] lib/igt_halffloat.c: Fix musl/uclibc build
> >+MIME-Version: 1.0
> >+Content-Type: text/plain; charset=UTF-8
> >+Content-Transfer-Encoding: 8bit
> >+
> >+Original patch was added to void-linux:
> >+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
> >+
> >+Fixes build error:
> >+../lib/igt_halffloat.c:205:6: error: ‘ifunc’ is not supported on this target
> >+  205 | void igt_float_to_half(const float *f, uint16_t *h, unsigned int num)
> >+
> >+../lib/igt_halffloat.c:216:6: error: ‘ifunc’ is not supported on this target
> >+  216 | void igt_half_to_float(const uint16_t *h, float *f, unsigned int num)
> >+
> >+Bug report with request to split the original patch into some
> >+functional changes:
> >+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063816.html
> >+
> >+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+---
> >+ lib/igt_halffloat.c | 2 +-
> >+ 1 file changed, 1 insertion(+), 1 deletion(-)
> >+
> >+diff --git a/lib/igt_halffloat.c b/lib/igt_halffloat.c
> >+index 08ab05fce..5dbe08e01 100644
> >+--- a/lib/igt_halffloat.c
> >++++ b/lib/igt_halffloat.c
> >+@@ -162,7 +162,7 @@ static inline float _half_to_float(uint16_t val)
> >+ 	return fi.f;
> >+ }
> >+ 
> >+-#if defined(__x86_64__) && !defined(__clang__)
> >++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
> >+ #pragma GCC push_options
> >+ #pragma GCC target("f16c")
> >+ 
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
> >new file mode 100644
> >index 0000000000..1ac7a37bd3
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
> >@@ -0,0 +1,46 @@
> >+From 5d4df590185ca31ebd1a9ce90922907c15658c17 Mon Sep 17 00:00:00 2001
> >+From: Mohammed Anas <triallax@tutanota.com>
> >+Date: Sun, 22 Oct 2023 12:10:23 +0200
> >+Subject: [PATCH] benchmarks/gem_exec_tracer.c: Fix musl build
> >+MIME-Version: 1.0
> >+Content-Type: text/plain; charset=UTF-8
> >+Content-Transfer-Encoding: 8bit
> >+
> >+Original patch was added to void-linux:
> >+https://github.com/void-linux/void-packages/commit/111918317d06598fe1459dbe139923404f3f4b9d
> >+
> >+Fixes build error:
> >+../benchmarks/gem_exec_tracer.c:274:1: error: conflicting types for ‘ioctl’; have ‘int(int,  long unsigned int, ...)’
> >+  274 | ioctl(int fd, unsigned long request, ...)
> >+
> >+Bug report with request to split the original patch into some
> >+functional changes:
> >+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
> >+
> >+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063817.html
> >+
> >+Signed-off-by: Mohammed Anas <triallax@tutanota.com>
> >+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
> >+---
> >+ benchmarks/gem_exec_tracer.c | 4 ++++
> >+ 1 file changed, 4 insertions(+)
> >+
> >+diff --git a/benchmarks/gem_exec_tracer.c b/benchmarks/gem_exec_tracer.c
> >+index 7e86473e4..3156dfc23 100644
> >+--- a/benchmarks/gem_exec_tracer.c
> >++++ b/benchmarks/gem_exec_tracer.c
> >+@@ -271,7 +271,11 @@ static int is_i915(int fd)
> >+ }
> >+ 
> >+ int
> >++#ifdef __GLIBC__
> >+ ioctl(int fd, unsigned long request, ...)
> >++#else
> >++ioctl(int fd, int request, ...)
> >++#endif
> >+ {
> >+ 	struct trace *t, **p;
> >+ 	va_list args;
> >+-- 
> >+2.39.2
> >+
> >diff --git a/package/igt-gpu-tools/Config.in b/package/igt-gpu-tools/Config.in
> >new file mode 100644
> >index 0000000000..809c8e28ac
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/Config.in
> >@@ -0,0 +1,32 @@
> >+config BR2_PACKAGE_IGT_GPU_TOOLS
> >+	bool "igt-gpu-tools"
> >+	depends on BR2_USE_MMU # fork()
> >+	depends on BR2_ENABLE_LOCALE
> >+	depends on !BR2_STATIC_LIBS
> >+	depends on BR2_TOOLCHAIN_HAS_THREADS
> >+	depends on BR2_PACKAGE_HAS_UDEV
> >+	depends on BR2_USE_WCHAR # elfutils
> >+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h
> >+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng
> >+	select BR2_PACKAGE_CAIRO
> >+	select BR2_PACKAGE_CAIRO_PNG
> >+	select BR2_PACKAGE_ELFUTILS
> >+	select BR2_PACKAGE_KMOD
> >+	select BR2_PACKAGE_LIBDRM
> >+	select BR2_PACKAGE_LIBGLIB2
> >+	select BR2_PACKAGE_LIBPCIACCESS
> >+	select BR2_PACKAGE_PIXMAN
> >+	select BR2_PACKAGE_PROCPS_NG
> >+	select BR2_PACKAGE_ZLIB
> >+	help
> >+	  IGT GPU Tools is a collection of tools for development and
> >+	  testing of the DRM drivers.
> >+
> >+	  https://gitlab.freedesktop.org/drm/igt-gpu-tools
> >+
> >+comment "igt-gpu-tools needs udev /dev management and toolchain w/ threads, wchar, dynamic library, locale, headers >= 4.11"
> >+	depends on BR2_USE_MMU
> >+	depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
> >+		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
> >+		!BR2_ENABLE_LOCALE || \
> >+		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
> >diff --git a/package/igt-gpu-tools/igt-gpu-tools.hash b/package/igt-gpu-tools/igt-gpu-tools.hash
> >new file mode 100644
> >index 0000000000..95cc3a639b
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/igt-gpu-tools.hash
> >@@ -0,0 +1,5 @@
> >+# Locally calculated from download
> >+sha256  6f8b2b12704c0b37c22f32a3751688e7144f850faa715e85b26effdc5209cfd1  igt-gpu-tools-v1.28.tar.bz2
> >+
> >+# Hash for license file:
> >+sha256  1b7e266857b05808660f42369a4a797459d7b7bec7245e378aa28a8db2f213da  COPYING
> >diff --git a/package/igt-gpu-tools/igt-gpu-tools.mk b/package/igt-gpu-tools/igt-gpu-tools.mk
> >new file mode 100644
> >index 0000000000..6aecd42429
> >--- /dev/null
> >+++ b/package/igt-gpu-tools/igt-gpu-tools.mk
> >@@ -0,0 +1,38 @@
> >+################################################################################
> >+#
> >+# igt-gpu-tools
> >+#
> >+################################################################################
> >+
> >+IGT_GPU_TOOLS_VERSION = 1.28
> >+IGT_GPU_TOOLS_SOURCE = igt-gpu-tools-v$(IGT_GPU_TOOLS_VERSION).tar.bz2
> >+IGT_GPU_TOOLS_SITE = https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/archive/v$(IGT_GPU_TOOLS_VERSION)
> >+IGT_GPU_TOOLS_LICENSE = MIT
> >+IGT_GPU_TOOLS_LICENSE_FILES = COPYING
> >+IGT_GPU_TOOLS_INSTALL_STAGING = YES
> >+IGT_GPU_TOOLS_DEPENDENCIES = host-pkgconf cairo elfutils kmod libdrm libglib2 libpciaccess pixman procps-ng zlib
> >+
> >+ifeq ($(BR2_PACKAGE_JSON_C),y)
> >+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=enabled
> >+IGT_GPU_TOOLS_DEPENDENCIES += json-c
> >+else
> >+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=disabled
> >+endif
> >+
> >+ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
> >+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=enabled
> >+IGT_GPU_TOOLS_DEPENDENCIES += libunwind
> >+else
> >+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=disabled
> >+endif
> >+
> >+# igt_stats is broken with Relocation link-time protections enabled
> >+# https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/102
> >+ifeq ($(BR2_RELRO_NONE),)
> >+define IGT_GPU_TOOLS_REMOVE_IGT_STATS
> >+	$(RM) -fr $(TARGET_DIR)/usr/bin/igt_stats
> >+endef
> >+IGT_GPU_TOOLS_POST_INSTALL_TARGET_HOOKS += IGT_GPU_TOOLS_REMOVE_IGT_STATS
> >+endif
> >+
> >+$(eval $(meson-package))
> >-- 
> >2.39.2
> >
> >_______________________________________________
> >buildroot mailing list
> >buildroot@buildroot.org
> >https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 56449b0d5f..a621fd762e 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -366,6 +366,7 @@  F:	package/gpsd/
 F:	package/gptfdisk/
 F:	package/hddtemp/
 F:	package/hdparm/
+F:	package/igt-gpu-tools/
 F:	package/intel-gmmlib/
 F:	package/intel-mediadriver/
 F:	package/intel-mediasdk/
diff --git a/package/Config.in b/package/Config.in
index ecd8668ee7..97ec46730e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -318,6 +318,7 @@  comment "Graphic applications"
 	source "package/glmark2/Config.in"
 	source "package/glslsandbox-player/Config.in"
 	source "package/gnuplot/Config.in"
+	source "package/igt-gpu-tools/Config.in"
 	source "package/jhead/Config.in"
 	source "package/kmscube/Config.in"
 	source "package/libva-utils/Config.in"
diff --git a/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
new file mode 100644
index 0000000000..5c0b39ee7d
--- /dev/null
+++ b/package/igt-gpu-tools/0001-build-check-that-outb-is-present-in-io.h.patch
@@ -0,0 +1,34 @@ 
+From d5373adea6248c0fe41870d50b24fc4ed36c6490 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sat, 21 Oct 2023 16:47:07 +0200
+Subject: [PATCH] build: check that outb is present in io.h
+
+With glibc if io.h exists, inb/outb are always defined.
+However on musl, io.h always exists but it may not define inb/outb.
+
+Thus, igt-gpu-tools builds with musl on non-x86 platforms will fail to
+link. Fix this by checking for both io.h and that outb() is defined.
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063811.html
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index b35a00faa..cee8a7446 100644
+--- a/meson.build
++++ b/meson.build
+@@ -220,7 +220,7 @@ endif
+ if cc.has_header('libgen.h')
+ 	config.set('HAVE_LIBGEN_H', 1)
+ endif
+-if cc.has_header('sys/io.h')
++if cc.has_header('sys/io.h') and cc.has_function('outb', prefix: '#include <sys/io.h>')
+ 	config.set('HAVE_SYS_IO_H', 1)
+ endif
+ if cc.links('''
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
new file mode 100644
index 0000000000..303bc4a8bf
--- /dev/null
+++ b/package/igt-gpu-tools/0002-Include-limits.h-to-fix-build-with-musl-libc.patch
@@ -0,0 +1,89 @@ 
+From fea7a3189a6e42bb625c3742828849d6360f1435 Mon Sep 17 00:00:00 2001
+From: Stefano Ragni <st3r4g@protonmail.com>
+Date: Sun, 22 Oct 2023 11:47:39 +0200
+Subject: [PATCH] Include limits.h to fix build with musl libc
+
+Original patch was added to void-linux:
+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
+
+Bug report with request to split the original patch into some
+functional changes:
+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063815.html
+
+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+[Bernd: alphabetically sorted includes, removed includes not needed
+ anymore, backported to v1.28]
+---
+ lib/igt_aux.c                 | 1 +
+ lib/igt_eld.c                 | 1 +
+ lib/igt_hwmon.c               | 1 +
+ tests/intel/i915_pm_rpm.c     | 1 +
+ tests/kms_sysfs_edid_timing.c | 1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/lib/igt_aux.c b/lib/igt_aux.c
+index 18edc5ef9..d6aeb876b 100644
+--- a/lib/igt_aux.c
++++ b/lib/igt_aux.c
+@@ -31,6 +31,7 @@
+ #endif
+ #include <stdio.h>
+ #include <fcntl.h>
++#include <limits.h> // PATH_MAX
+ #include <pwd.h>
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+diff --git a/lib/igt_eld.c b/lib/igt_eld.c
+index ef6625df1..6cec9abdd 100644
+--- a/lib/igt_eld.c
++++ b/lib/igt_eld.c
+@@ -28,6 +28,7 @@
+ #include <dirent.h>
+ #include <errno.h>
+ #include <glob.h>
++#include <limits.h> // PATH_MAX
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/lib/igt_hwmon.c b/lib/igt_hwmon.c
+index 309019d69..6216a1607 100644
+--- a/lib/igt_hwmon.c
++++ b/lib/igt_hwmon.c
+@@ -2,6 +2,7 @@
+ /*
+  * Copyright © 2022 Intel Corporation
+  */
++#include <limits.h> // PATH_MAX
+ #include <sys/stat.h>
+ #include <sys/sysmacros.h>
+ #include <dirent.h>
+diff --git a/tests/intel/i915_pm_rpm.c b/tests/intel/i915_pm_rpm.c
+index 17413ffe5..bf0ab4ae7 100644
+--- a/tests/intel/i915_pm_rpm.c
++++ b/tests/intel/i915_pm_rpm.c
+@@ -35,6 +35,7 @@
+ 
+ #include <unistd.h>
+ #include <fcntl.h>
++#include <limits.h> // PATH_MAX
+ #include <dirent.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
+index ee47a024e..c371a5e5e 100644
+--- a/tests/kms_sysfs_edid_timing.c
++++ b/tests/kms_sysfs_edid_timing.c
+@@ -24,6 +24,7 @@
+ 
+ #include <dirent.h>
+ #include <fcntl.h>
++#include <limits.h> // PATH_MAX
+ #include <sys/stat.h>
+ /**
+  * TEST: kms sysfs edid timing
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
new file mode 100644
index 0000000000..eb8713a63d
--- /dev/null
+++ b/package/igt-gpu-tools/0003-lib-igt_aux.h-Fix-musl-build.patch
@@ -0,0 +1,57 @@ 
+From 6695ea970627499d6eb5d5db2edead50ebb2511d Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd@kuhls.net>
+Date: Sun, 22 Oct 2023 11:57:32 +0200
+Subject: [PATCH] lib/igt_aux.h: Fix musl build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Inspired by https://www.openwall.com/lists/musl/2020/10/28/11
+
+Define sigev_notify_thread_id only when needed, quoting
+https://sourceware.org/bugzilla/show_bug.cgi?id=27417
+Both freebsd and musl actually have this macro defined under <signal.h>
+
+Fixes build error:
+
+../lib/igt_aux.c:191:20: error: ‘struct sigevent’ has no member named ‘_sigev_un’
+  191 |                 sev.sigev_notify_thread_id = __igt_sigiter.tid;
+
+../lib/igt_aux.c:1994:12: error: ‘struct sigevent’ has no member named ‘_sigev_un’
+ 1994 |         sev.sigev_notify_thread_id = gettid();
+
+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063814.html
+
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/igt_aux.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/lib/igt_aux.h b/lib/igt_aux.h
+index fb76b0313..55f0aa3b5 100644
+--- a/lib/igt_aux.h
++++ b/lib/igt_aux.h
+@@ -29,6 +29,7 @@
+ #define IGT_AUX_H
+ 
+ #include <inttypes.h>
++#include <signal.h>
+ #include <stdbool.h>
+ #include <stddef.h>
+ #include <sys/time.h>
+@@ -48,7 +49,9 @@
+ # ifndef HAVE_GETTID
+ #  define gettid() (pid_t)(syscall(__NR_gettid))
+ # endif
+-# define sigev_notify_thread_id _sigev_un._tid
++# ifndef sigev_notify_thread_id
++#  define sigev_notify_thread_id _sigev_un._tid
++# endif
+ #endif
+ 
+ /* auxialiary igt helpers from igt_aux.c */
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
new file mode 100644
index 0000000000..fdb7e8b786
--- /dev/null
+++ b/package/igt-gpu-tools/0004-lib-igt_x86.c-Fix-musl-uclibc-build.patch
@@ -0,0 +1,43 @@ 
+From b47d645b3a1f476688201c23e9ef6fbccc891cec Mon Sep 17 00:00:00 2001
+From: Stefano Ragni <st3r4g@protonmail.com>
+Date: Sun, 22 Oct 2023 12:06:01 +0200
+Subject: [PATCH] lib/igt_x86.c: Fix musl/uclibc build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Original patch was added to void-linux:
+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
+
+Fixes build error:
+../lib/igt_x86.c:295:6: error: ‘ifunc’ is not supported on this target
+  295 | void igt_memcpy_from_wc(void *dst, const void *src, unsigned long len)
+
+Bug report with request to split the original patch into some
+functional changes:
+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063813.html
+
+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/igt_x86.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/igt_x86.c b/lib/igt_x86.c
+index 6ac700df0..8c102fd13 100644
+--- a/lib/igt_x86.c
++++ b/lib/igt_x86.c
+@@ -190,7 +190,7 @@ char *igt_x86_features_to_string(unsigned features, char *line)
+ }
+ #endif
+ 
+-#if defined(__x86_64__) && !defined(__clang__)
++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
+ #pragma GCC push_options
+ #pragma GCC target("sse4.1")
+ #pragma GCC diagnostic ignored "-Wpointer-arith"
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
new file mode 100644
index 0000000000..07bdf39731
--- /dev/null
+++ b/package/igt-gpu-tools/0005-lib-igt_halffloat.c-Fix-musl-uclibc-build.patch
@@ -0,0 +1,46 @@ 
+From b81a041f3e07a377db7fa1ea79f83ed2d0183b61 Mon Sep 17 00:00:00 2001
+From: Stefano Ragni <st3r4g@protonmail.com>
+Date: Sun, 22 Oct 2023 12:08:54 +0200
+Subject: [PATCH] lib/igt_halffloat.c: Fix musl/uclibc build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Original patch was added to void-linux:
+https://github.com/void-linux/void-packages/commit/ddfc1f66a0c571b420303c33aed29fd38ace4fc7
+
+Fixes build error:
+../lib/igt_halffloat.c:205:6: error: ‘ifunc’ is not supported on this target
+  205 | void igt_float_to_half(const float *f, uint16_t *h, unsigned int num)
+
+../lib/igt_halffloat.c:216:6: error: ‘ifunc’ is not supported on this target
+  216 | void igt_half_to_float(const uint16_t *h, float *f, unsigned int num)
+
+Bug report with request to split the original patch into some
+functional changes:
+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063816.html
+
+Signed-off-by: Stefano Ragni <st3r4g@protonmail.com>
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ lib/igt_halffloat.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/igt_halffloat.c b/lib/igt_halffloat.c
+index 08ab05fce..5dbe08e01 100644
+--- a/lib/igt_halffloat.c
++++ b/lib/igt_halffloat.c
+@@ -162,7 +162,7 @@ static inline float _half_to_float(uint16_t val)
+ 	return fi.f;
+ }
+ 
+-#if defined(__x86_64__) && !defined(__clang__)
++#if defined(__x86_64__) && !defined(__clang__) && defined(__GLIBC__) && !defined(__UCLIBC__)
+ #pragma GCC push_options
+ #pragma GCC target("f16c")
+ 
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
new file mode 100644
index 0000000000..1ac7a37bd3
--- /dev/null
+++ b/package/igt-gpu-tools/0006-benchmarks-gem_exec_tracer.c-Fix-musl-build.patch
@@ -0,0 +1,46 @@ 
+From 5d4df590185ca31ebd1a9ce90922907c15658c17 Mon Sep 17 00:00:00 2001
+From: Mohammed Anas <triallax@tutanota.com>
+Date: Sun, 22 Oct 2023 12:10:23 +0200
+Subject: [PATCH] benchmarks/gem_exec_tracer.c: Fix musl build
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Original patch was added to void-linux:
+https://github.com/void-linux/void-packages/commit/111918317d06598fe1459dbe139923404f3f4b9d
+
+Fixes build error:
+../benchmarks/gem_exec_tracer.c:274:1: error: conflicting types for ‘ioctl’; have ‘int(int,  long unsigned int, ...)’
+  274 | ioctl(int fd, unsigned long request, ...)
+
+Bug report with request to split the original patch into some
+functional changes:
+Link: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/138
+
+Upstream: https://lists.freedesktop.org/archives/igt-dev/2023-October/063817.html
+
+Signed-off-by: Mohammed Anas <triallax@tutanota.com>
+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
+---
+ benchmarks/gem_exec_tracer.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/benchmarks/gem_exec_tracer.c b/benchmarks/gem_exec_tracer.c
+index 7e86473e4..3156dfc23 100644
+--- a/benchmarks/gem_exec_tracer.c
++++ b/benchmarks/gem_exec_tracer.c
+@@ -271,7 +271,11 @@ static int is_i915(int fd)
+ }
+ 
+ int
++#ifdef __GLIBC__
+ ioctl(int fd, unsigned long request, ...)
++#else
++ioctl(int fd, int request, ...)
++#endif
+ {
+ 	struct trace *t, **p;
+ 	va_list args;
+-- 
+2.39.2
+
diff --git a/package/igt-gpu-tools/Config.in b/package/igt-gpu-tools/Config.in
new file mode 100644
index 0000000000..809c8e28ac
--- /dev/null
+++ b/package/igt-gpu-tools/Config.in
@@ -0,0 +1,32 @@ 
+config BR2_PACKAGE_IGT_GPU_TOOLS
+	bool "igt-gpu-tools"
+	depends on BR2_USE_MMU # fork()
+	depends on BR2_ENABLE_LOCALE
+	depends on !BR2_STATIC_LIBS
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_PACKAGE_HAS_UDEV
+	depends on BR2_USE_WCHAR # elfutils
+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h
+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng
+	select BR2_PACKAGE_CAIRO
+	select BR2_PACKAGE_CAIRO_PNG
+	select BR2_PACKAGE_ELFUTILS
+	select BR2_PACKAGE_KMOD
+	select BR2_PACKAGE_LIBDRM
+	select BR2_PACKAGE_LIBGLIB2
+	select BR2_PACKAGE_LIBPCIACCESS
+	select BR2_PACKAGE_PIXMAN
+	select BR2_PACKAGE_PROCPS_NG
+	select BR2_PACKAGE_ZLIB
+	help
+	  IGT GPU Tools is a collection of tools for development and
+	  testing of the DRM drivers.
+
+	  https://gitlab.freedesktop.org/drm/igt-gpu-tools
+
+comment "igt-gpu-tools needs udev /dev management and toolchain w/ threads, wchar, dynamic library, locale, headers >= 4.11"
+	depends on BR2_USE_MMU
+	depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
+		!BR2_ENABLE_LOCALE || \
+		!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
diff --git a/package/igt-gpu-tools/igt-gpu-tools.hash b/package/igt-gpu-tools/igt-gpu-tools.hash
new file mode 100644
index 0000000000..95cc3a639b
--- /dev/null
+++ b/package/igt-gpu-tools/igt-gpu-tools.hash
@@ -0,0 +1,5 @@ 
+# Locally calculated from download
+sha256  6f8b2b12704c0b37c22f32a3751688e7144f850faa715e85b26effdc5209cfd1  igt-gpu-tools-v1.28.tar.bz2
+
+# Hash for license file:
+sha256  1b7e266857b05808660f42369a4a797459d7b7bec7245e378aa28a8db2f213da  COPYING
diff --git a/package/igt-gpu-tools/igt-gpu-tools.mk b/package/igt-gpu-tools/igt-gpu-tools.mk
new file mode 100644
index 0000000000..6aecd42429
--- /dev/null
+++ b/package/igt-gpu-tools/igt-gpu-tools.mk
@@ -0,0 +1,38 @@ 
+################################################################################
+#
+# igt-gpu-tools
+#
+################################################################################
+
+IGT_GPU_TOOLS_VERSION = 1.28
+IGT_GPU_TOOLS_SOURCE = igt-gpu-tools-v$(IGT_GPU_TOOLS_VERSION).tar.bz2
+IGT_GPU_TOOLS_SITE = https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/archive/v$(IGT_GPU_TOOLS_VERSION)
+IGT_GPU_TOOLS_LICENSE = MIT
+IGT_GPU_TOOLS_LICENSE_FILES = COPYING
+IGT_GPU_TOOLS_INSTALL_STAGING = YES
+IGT_GPU_TOOLS_DEPENDENCIES = host-pkgconf cairo elfutils kmod libdrm libglib2 libpciaccess pixman procps-ng zlib
+
+ifeq ($(BR2_PACKAGE_JSON_C),y)
+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=enabled
+IGT_GPU_TOOLS_DEPENDENCIES += json-c
+else
+IGT_GPU_TOOLS_CONF_OPTS += -Drunner=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=enabled
+IGT_GPU_TOOLS_DEPENDENCIES += libunwind
+else
+IGT_GPU_TOOLS_CONF_OPTS += -Dlibunwind=disabled
+endif
+
+# igt_stats is broken with Relocation link-time protections enabled
+# https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/102
+ifeq ($(BR2_RELRO_NONE),)
+define IGT_GPU_TOOLS_REMOVE_IGT_STATS
+	$(RM) -fr $(TARGET_DIR)/usr/bin/igt_stats
+endef
+IGT_GPU_TOOLS_POST_INSTALL_TARGET_HOOKS += IGT_GPU_TOOLS_REMOVE_IGT_STATS
+endif
+
+$(eval $(meson-package))