public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v4 0/4] Use C11 atomics
@ 2019-06-24 16:22 Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 1/4] meson: add libatomic dependency Guillaume Tucker
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-24 16:22 UTC (permalink / raw)
  To: Arkadiusz Hiler, Petri Latvala, Ser, Simon; +Cc: igt-dev, intel-gfx

This series replaces calls to the __sync_* functions with the more
recent atomic_* ones defined in stdatomic.h in gem_create and
sw_sync.  It also adds dependency on libatomic when required, that is
to say when the CPU architecture doesn't provide native support for
some atomic operations.  This makes the tests more portable, in
particular for 32-bit MIPS which doesn't support 64-bit atomics.

v2:
 - add linker test to only add dependency on libatomic when needed
 - only add libatomic dependency to gem_create and sw_sync
 - use stdatomic.h and _Atomic type modifier
 - explicitly require libatomic in all Docker images

v3:
 - use sub-arch libatomic1 in Debian docker images
 - use null_dep in meson.build

v4:
 - rebase with changes in Dockerfile.debian-minimal

Guillaume Tucker (4):
  meson: add libatomic dependency
  gitlab-ci: add libatomic to docker images
  i915/gem_create: use atomic_* instead of __sync_*
  tests/sw_sync: use atomic_* instead of __sync_*

 Dockerfile.debian-arm64   |  1 +
 Dockerfile.debian-armhf   |  1 +
 Dockerfile.debian-minimal |  1 +
 Dockerfile.fedora         |  2 +-
 meson.build               | 14 ++++++++++++++
 tests/Makefile.am         |  3 ++-
 tests/i915/gem_create.c   | 16 ++++++++++++----
 tests/meson.build         | 17 +++++++++++++++--
 tests/sw_sync.c           | 12 ++++++------
 9 files changed, 53 insertions(+), 14 deletions(-)

--
2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH i-g-t v4 1/4] meson: add libatomic dependency
  2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
@ 2019-06-24 16:22 ` Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images Guillaume Tucker
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-24 16:22 UTC (permalink / raw)
  To: Arkadiusz Hiler, Petri Latvala, Ser, Simon; +Cc: igt-dev, intel-gfx

Add conditional dependency on GCC's libatomic in order to be able to
use the __atomic_* functions instead of the older __sync_* ones.  The
libatomic library is only needed when there aren't any native support
on the current architecture, so a linker test is used for this
purpose.  This makes atomic operations available on a wider number of
architectures including MIPS.

Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Reviewed-by: Simon Ser <simon.ser@intel.com>
---

Notes:
    v2: add linker test for libatomic
    v3: use null_dep
    v4: fix sentence in commit message

 meson.build | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/meson.build b/meson.build
index b1028ee6aaaf..f0cb2543ca64 100644
--- a/meson.build
+++ b/meson.build
@@ -180,6 +180,20 @@ realtime = cc.find_library('rt')
 dlsym = cc.find_library('dl')
 zlib = cc.find_library('z')
 
+if cc.links('''
+#include <stdint.h>
+int main(void) {
+  uint32_t x32 = 0;
+  uint64_t x64 = 0;
+  __atomic_load_n(&x32, __ATOMIC_SEQ_CST);
+  __atomic_load_n(&x64, __ATOMIC_SEQ_CST);
+  return 0;
+}''', name : 'built-in atomics')
+	libatomic = null_dep
+else
+	libatomic = cc.find_library('atomic')
+endif
+
 if cc.has_header('linux/kd.h')
 	config.set('HAVE_LINUX_KD_H', 1)
 endif
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images
  2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 1/4] meson: add libatomic dependency Guillaume Tucker
@ 2019-06-24 16:22 ` Guillaume Tucker
  2019-06-25 10:48   ` Ser, Simon
  2019-06-24 16:22 ` [PATCH i-g-t v4 3/4] i915/gem_create: use atomic_* instead of __sync_* Guillaume Tucker
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-24 16:22 UTC (permalink / raw)
  To: Arkadiusz Hiler, Petri Latvala, Ser, Simon; +Cc: igt-dev, intel-gfx

Add libatomic to the Fedora docker image so it can link binaries that
use __atomic_* functions.  Also explicitly add libatomic1 to Debian
docker images as it is needed in particular on non-x86 architectures
for run-time linkage.

Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
---

Notes:
    v2: add libatomic1 in Debian docker images
    v3: add libatomic1 for non-x86 arches in Debian docker images
    v4: rebase to add libatomic1 in Dockerfile.debian-minimal

 Dockerfile.debian-arm64   | 1 +
 Dockerfile.debian-armhf   | 1 +
 Dockerfile.debian-minimal | 1 +
 Dockerfile.fedora         | 2 +-
 4 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/Dockerfile.debian-arm64 b/Dockerfile.debian-arm64
index 7b3a3c7ca803..c9fb28c804b8 100644
--- a/Dockerfile.debian-arm64
+++ b/Dockerfile.debian-arm64
@@ -14,6 +14,7 @@ RUN dpkg --add-architecture arm64
 RUN apt-get update
 RUN apt-get install -y \
 			gcc-aarch64-linux-gnu \
+			libatomic1:arm64 \
 			libpciaccess-dev:arm64 \
 			libkmod-dev:arm64 \
 			libprocps-dev:arm64 \
diff --git a/Dockerfile.debian-armhf b/Dockerfile.debian-armhf
index c67a1e2acf6a..3a133d849d68 100644
--- a/Dockerfile.debian-armhf
+++ b/Dockerfile.debian-armhf
@@ -14,6 +14,7 @@ RUN dpkg --add-architecture armhf
 RUN apt-get update
 RUN apt-get install -y \
 			gcc-arm-linux-gnueabihf \
+			libatomic1:armhf \
 			libpciaccess-dev:armhf \
 			libkmod-dev:armhf \
 			libprocps-dev:armhf \
diff --git a/Dockerfile.debian-minimal b/Dockerfile.debian-minimal
index bbe70bed2fb4..63844694dafa 100644
--- a/Dockerfile.debian-minimal
+++ b/Dockerfile.debian-minimal
@@ -6,6 +6,7 @@ RUN apt-get install -y \
 			flex \
 			bison \
 			pkg-config \
+			libatomic1 \
 			libpciaccess-dev \
 			libkmod-dev \
 			libprocps-dev \
diff --git a/Dockerfile.fedora b/Dockerfile.fedora
index 6686e587613d..c84b412b0723 100644
--- a/Dockerfile.fedora
+++ b/Dockerfile.fedora
@@ -1,7 +1,7 @@
 FROM fedora:30
 
 RUN dnf install -y \
-	gcc flex bison meson ninja-build xdotool \
+	gcc flex bison libatomic meson ninja-build xdotool \
 	'pkgconfig(libdrm)' \
 	'pkgconfig(pciaccess)' \
 	'pkgconfig(libkmod)' \
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH i-g-t v4 3/4] i915/gem_create: use atomic_* instead of __sync_*
  2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 1/4] meson: add libatomic dependency Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images Guillaume Tucker
@ 2019-06-24 16:22 ` Guillaume Tucker
  2019-06-24 16:22 ` [PATCH i-g-t v4 4/4] tests/sw_sync: " Guillaume Tucker
  2019-06-25 10:54 ` [PATCH i-g-t v4 0/4] Use C11 atomics Ser, Simon
  4 siblings, 0 replies; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-24 16:22 UTC (permalink / raw)
  To: Arkadiusz Hiler, Petri Latvala, Ser, Simon; +Cc: igt-dev, intel-gfx

This fixes builds on some architectures, in particular MIPS which
doesn't have __sync_add_and_fetch_8 and __sync_val_compare_and_swap_8
for 64-bit variable handling.

* replace calls to the older __sync_* functions with the new atomic_*
  standard ones
* use the _Atomic type modifier as required with stdatomic.h functions
* add dependency for gem_create on libatomic

Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Reviewed-by: Simon Ser <simon.ser@intel.com>
---

Notes:
    v2: use atomic_* and only link libatomic with gem_create

 tests/Makefile.am       |  2 +-
 tests/i915/gem_create.c | 16 ++++++++++++----
 tests/meson.build       |  9 ++++++++-
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5a428b8ac213..bbd386c9c2db 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -90,7 +90,7 @@ AM_LDFLAGS = -Wl,--as-needed
 drm_import_export_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
 drm_import_export_LDADD = $(LDADD) -lpthread
 gem_create_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
-gem_create_LDADD = $(LDADD) -lpthread
+gem_create_LDADD = $(LDADD) -lpthread -latomic
 gem_close_race_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
 gem_close_race_LDADD = $(LDADD) -lpthread
 gem_ctx_thrash_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
diff --git a/tests/i915/gem_create.c b/tests/i915/gem_create.c
index 43cbf45f289b..9008cd8a21e3 100644
--- a/tests/i915/gem_create.c
+++ b/tests/i915/gem_create.c
@@ -45,6 +45,7 @@
 #include <sys/time.h>
 #include <getopt.h>
 #include <pthread.h>
+#include <stdatomic.h>
 
 #include <drm.h>
 
@@ -156,7 +157,14 @@ static void invalid_nonaligned_size(int fd)
 	gem_close(fd, create.handle);
 }
 
-static uint64_t get_npages(uint64_t *global, uint64_t npages)
+static uint64_t atomic_compare_swap_u64(_Atomic(uint64_t) *ptr,
+					uint64_t oldval, uint64_t newval)
+{
+	atomic_compare_exchange_strong(ptr, &oldval, newval);
+	return oldval;
+}
+
+static uint64_t get_npages(_Atomic(uint64_t) *global, uint64_t npages)
 {
 	uint64_t try, old, max;
 
@@ -165,13 +173,13 @@ static uint64_t get_npages(uint64_t *global, uint64_t npages)
 		old = max;
 		try = 1 + npages % (max / 2);
 		max -= try;
-	} while ((max = __sync_val_compare_and_swap(global, old, max)) != old);
+	} while ((max = atomic_compare_swap_u64(global, old, max)) != old);
 
 	return try;
 }
 
 struct thread_clear {
-	uint64_t max;
+	_Atomic(uint64_t) max;
 	int timeout;
 	int i915;
 };
@@ -202,7 +210,7 @@ static void *thread_clear(void *data)
 		}
 		gem_close(i915, create.handle);
 
-		__sync_add_and_fetch(&arg->max, npages);
+		atomic_fetch_add(&arg->max, npages);
 	}
 
 	return NULL;
diff --git a/tests/meson.build b/tests/meson.build
index f168fbbae2a8..ffd432d38193 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -110,7 +110,6 @@ i915_progs = [
 	'gem_close_race',
 	'gem_concurrent_blit',
 	'gem_cpu_reloc',
-	'gem_create',
 	'gem_cs_prefetch',
 	'gem_cs_tlb',
 	'gem_ctx_bad_destroy',
@@ -277,6 +276,14 @@ foreach prog : i915_progs
 	test_list += prog
 endforeach
 
+test_executables += executable('gem_create',
+	   join_paths('i915', 'gem_create.c'),
+	   dependencies : test_deps + [ libatomic ],
+	   install_dir : libexecdir,
+	   install_rpath : libexecdir_rpathdir,
+	   install : true)
+test_list += 'gem_create'
+
 test_executables += executable('gem_ctx_sseu',
 	   join_paths('i915', 'gem_ctx_sseu.c'),
 	   dependencies : test_deps + [ lib_igt_perf ],
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH i-g-t v4 4/4] tests/sw_sync: use atomic_* instead of __sync_*
  2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
                   ` (2 preceding siblings ...)
  2019-06-24 16:22 ` [PATCH i-g-t v4 3/4] i915/gem_create: use atomic_* instead of __sync_* Guillaume Tucker
@ 2019-06-24 16:22 ` Guillaume Tucker
  2019-06-25 10:54 ` [PATCH i-g-t v4 0/4] Use C11 atomics Ser, Simon
  4 siblings, 0 replies; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-24 16:22 UTC (permalink / raw)
  To: Arkadiusz Hiler, Petri Latvala, Ser, Simon; +Cc: igt-dev, intel-gfx

Replace calls to the older __sync_* functions with the new atomic_*
standard ones to be consistent with other tests and improve
portability across CPU architectures.  Add dependency of sw_sync on
libatomic.

Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Reviewed-by: Simon Ser <simon.ser@intel.com>
---

Notes:
    v2: use atomic_* and only link libatomic with sw_sync

 tests/Makefile.am |  1 +
 tests/meson.build |  8 +++++++-
 tests/sw_sync.c   | 12 ++++++------
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index bbd386c9c2db..7d71df8c7a2e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -122,6 +122,7 @@ prime_self_import_LDADD = $(LDADD) -lpthread
 gem_userptr_blits_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
 gem_userptr_blits_LDADD = $(LDADD) -lpthread
 perf_pmu_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la
+sw_sync_LDADD = $(LDADD) -latomic
 
 kms_flip_LDADD = $(LDADD) -lpthread
 
diff --git a/tests/meson.build b/tests/meson.build
index ffd432d38193..34a74025a537 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -76,7 +76,6 @@ test_progs = [
 	'prime_self_import',
 	'prime_udl',
 	'prime_vgem',
-	'sw_sync',
 	'syncobj_basic',
 	'syncobj_wait',
 	'template',
@@ -329,6 +328,13 @@ executable('testdisplay', ['testdisplay.c', 'testdisplay_hotplug.c'],
 	   install : true)
 test_list += 'testdisplay'
 
+test_executables += executable('sw_sync', 'sw_sync.c',
+	   dependencies : test_deps + [ libatomic ],
+	   install_dir : libexecdir,
+	   install_rpath : libexecdir_rpathdir,
+	   install : true)
+test_list += 'sw_sync'
+
 subdir('amdgpu')
 
 gen_testlist = find_program('generate_testlist.sh')
diff --git a/tests/sw_sync.c b/tests/sw_sync.c
index 950b8b614759..62d1d17cab45 100644
--- a/tests/sw_sync.c
+++ b/tests/sw_sync.c
@@ -26,6 +26,7 @@
 
 #include <pthread.h>
 #include <semaphore.h>
+#include <stdatomic.h>
 #include <stdint.h>
 #include <sys/socket.h>
 #include <sys/types.h>
@@ -43,7 +44,7 @@ IGT_TEST_DESCRIPTION("Test SW Sync Framework");
 typedef struct {
 	int timeline;
 	uint32_t thread_id;
-	uint32_t *counter;
+	_Atomic(uint32_t) *counter;
 	sem_t *sem;
 } data_t;
 
@@ -489,7 +490,7 @@ static void test_sync_multi_consumer(void)
 	pthread_t thread_arr[MULTI_CONSUMER_THREADS];
 	sem_t sem;
 	int timeline;
-	uint32_t counter = 0;
+	_Atomic(uint32_t) counter = 0;
 	uintptr_t thread_ret = 0;
 	data_t data;
 	int i, ret;
@@ -517,7 +518,7 @@ static void test_sync_multi_consumer(void)
 	{
 		sem_wait(&sem);
 
-		__sync_fetch_and_add(&counter, 1);
+		atomic_fetch_add(&counter, 1);
 		sw_sync_timeline_inc(timeline, 1);
 	}
 
@@ -554,7 +555,7 @@ static void * test_sync_multi_consumer_producer_thread(void *arg)
 		if (sync_fence_wait(fence, 1000) < 0)
 			return (void *) 1;
 
-		if (__sync_fetch_and_add(data->counter, 1) != next_point)
+		if (atomic_fetch_add(data->counter, 1) != next_point)
 			return (void *) 1;
 
 		/* Kick off the next thread. */
@@ -570,7 +571,7 @@ static void test_sync_multi_consumer_producer(void)
 	data_t data_arr[MULTI_CONSUMER_PRODUCER_THREADS];
 	pthread_t thread_arr[MULTI_CONSUMER_PRODUCER_THREADS];
 	int timeline;
-	uint32_t counter = 0;
+	_Atomic(uint32_t) counter = 0;
 	uintptr_t thread_ret = 0;
 	data_t data;
 	int i, ret;
@@ -900,4 +901,3 @@ igt_main
 	igt_subtest("sync_random_merge")
 		test_sync_random_merge();
 }
-
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images
  2019-06-24 16:22 ` [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images Guillaume Tucker
@ 2019-06-25 10:48   ` Ser, Simon
  0 siblings, 0 replies; 8+ messages in thread
From: Ser, Simon @ 2019-06-25 10:48 UTC (permalink / raw)
  To: guillaume.tucker@collabora.com, Hiler, Arkadiusz, Latvala, Petri
  Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Mon, 2019-06-24 at 17:22 +0100, Guillaume Tucker wrote:
> Add libatomic to the Fedora docker image so it can link binaries that
> use __atomic_* functions.  Also explicitly add libatomic1 to Debian
> docker images as it is needed in particular on non-x86 architectures
> for run-time linkage.
> 
> Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>

Reviewed-by: Simon Ser <simon.ser@intel.com>

> ---
> 
> Notes:
>     v2: add libatomic1 in Debian docker images
>     v3: add libatomic1 for non-x86 arches in Debian docker images
>     v4: rebase to add libatomic1 in Dockerfile.debian-minimal
> 
>  Dockerfile.debian-arm64   | 1 +
>  Dockerfile.debian-armhf   | 1 +
>  Dockerfile.debian-minimal | 1 +
>  Dockerfile.fedora         | 2 +-
>  4 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Dockerfile.debian-arm64 b/Dockerfile.debian-arm64
> index 7b3a3c7ca803..c9fb28c804b8 100644
> --- a/Dockerfile.debian-arm64
> +++ b/Dockerfile.debian-arm64
> @@ -14,6 +14,7 @@ RUN dpkg --add-architecture arm64
>  RUN apt-get update
>  RUN apt-get install -y \
>  			gcc-aarch64-linux-gnu \
> +			libatomic1:arm64 \
>  			libpciaccess-dev:arm64 \
>  			libkmod-dev:arm64 \
>  			libprocps-dev:arm64 \
> diff --git a/Dockerfile.debian-armhf b/Dockerfile.debian-armhf
> index c67a1e2acf6a..3a133d849d68 100644
> --- a/Dockerfile.debian-armhf
> +++ b/Dockerfile.debian-armhf
> @@ -14,6 +14,7 @@ RUN dpkg --add-architecture armhf
>  RUN apt-get update
>  RUN apt-get install -y \
>  			gcc-arm-linux-gnueabihf \
> +			libatomic1:armhf \
>  			libpciaccess-dev:armhf \
>  			libkmod-dev:armhf \
>  			libprocps-dev:armhf \
> diff --git a/Dockerfile.debian-minimal b/Dockerfile.debian-minimal
> index bbe70bed2fb4..63844694dafa 100644
> --- a/Dockerfile.debian-minimal
> +++ b/Dockerfile.debian-minimal
> @@ -6,6 +6,7 @@ RUN apt-get install -y \
>  			flex \
>  			bison \
>  			pkg-config \
> +			libatomic1 \
>  			libpciaccess-dev \
>  			libkmod-dev \
>  			libprocps-dev \
> diff --git a/Dockerfile.fedora b/Dockerfile.fedora
> index 6686e587613d..c84b412b0723 100644
> --- a/Dockerfile.fedora
> +++ b/Dockerfile.fedora
> @@ -1,7 +1,7 @@
>  FROM fedora:30
>  
>  RUN dnf install -y \
> -	gcc flex bison meson ninja-build xdotool \
> +	gcc flex bison libatomic meson ninja-build xdotool \
>  	'pkgconfig(libdrm)' \
>  	'pkgconfig(pciaccess)' \
>  	'pkgconfig(libkmod)' \
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH i-g-t v4 0/4] Use C11 atomics
  2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
                   ` (3 preceding siblings ...)
  2019-06-24 16:22 ` [PATCH i-g-t v4 4/4] tests/sw_sync: " Guillaume Tucker
@ 2019-06-25 10:54 ` Ser, Simon
  2019-06-25 13:04   ` Guillaume Tucker
  4 siblings, 1 reply; 8+ messages in thread
From: Ser, Simon @ 2019-06-25 10:54 UTC (permalink / raw)
  To: guillaume.tucker@collabora.com, Hiler, Arkadiusz, Latvala, Petri
  Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Mon, 2019-06-24 at 17:22 +0100, Guillaume Tucker wrote:
> This series replaces calls to the __sync_* functions with the more
> recent atomic_* ones defined in stdatomic.h in gem_create and
> sw_sync.  It also adds dependency on libatomic when required, that is
> to say when the CPU architecture doesn't provide native support for
> some atomic operations.  This makes the tests more portable, in
> particular for 32-bit MIPS which doesn't support 64-bit atomics.

Thanks for this series! Pushed:

To gitlab.freedesktop.org:drm/igt-gpu-tools.git
   a6f5cc854efb..5eafa33dbdb1  master -> master

> v2:
>  - add linker test to only add dependency on libatomic when needed
>  - only add libatomic dependency to gem_create and sw_sync
>  - use stdatomic.h and _Atomic type modifier
>  - explicitly require libatomic in all Docker images
> 
> v3:
>  - use sub-arch libatomic1 in Debian docker images
>  - use null_dep in meson.build
> 
> v4:
>  - rebase with changes in Dockerfile.debian-minimal
> 
> Guillaume Tucker (4):
>   meson: add libatomic dependency
>   gitlab-ci: add libatomic to docker images
>   i915/gem_create: use atomic_* instead of __sync_*
>   tests/sw_sync: use atomic_* instead of __sync_*
> 
>  Dockerfile.debian-arm64   |  1 +
>  Dockerfile.debian-armhf   |  1 +
>  Dockerfile.debian-minimal |  1 +
>  Dockerfile.fedora         |  2 +-
>  meson.build               | 14 ++++++++++++++
>  tests/Makefile.am         |  3 ++-
>  tests/i915/gem_create.c   | 16 ++++++++++++----
>  tests/meson.build         | 17 +++++++++++++++--
>  tests/sw_sync.c           | 12 ++++++------
>  9 files changed, 53 insertions(+), 14 deletions(-)
> 
> --
> 2.20.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH i-g-t v4 0/4] Use C11 atomics
  2019-06-25 10:54 ` [PATCH i-g-t v4 0/4] Use C11 atomics Ser, Simon
@ 2019-06-25 13:04   ` Guillaume Tucker
  0 siblings, 0 replies; 8+ messages in thread
From: Guillaume Tucker @ 2019-06-25 13:04 UTC (permalink / raw)
  To: Ser, Simon, Hiler, Arkadiusz, Latvala, Petri
  Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On 25/06/2019 11:54, Ser, Simon wrote:
> On Mon, 2019-06-24 at 17:22 +0100, Guillaume Tucker wrote:
>> This series replaces calls to the __sync_* functions with the more
>> recent atomic_* ones defined in stdatomic.h in gem_create and
>> sw_sync.  It also adds dependency on libatomic when required, that is
>> to say when the CPU architecture doesn't provide native support for
>> some atomic operations.  This makes the tests more portable, in
>> particular for 32-bit MIPS which doesn't support 64-bit atomics.
>>
> Thanks for this series! Pushed:
> 
> To gitlab.freedesktop.org:drm/igt-gpu-tools.git
>    a6f5cc854efb..5eafa33dbdb1  master -> master

Awesome!

The patch I sent separately to enable MIPS in Gitlab CI should
now be ready to be pushed as well, I'll follow up on the other
thread.

Guillaume

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2019-06-25 13:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-24 16:22 [PATCH i-g-t v4 0/4] Use C11 atomics Guillaume Tucker
2019-06-24 16:22 ` [PATCH i-g-t v4 1/4] meson: add libatomic dependency Guillaume Tucker
2019-06-24 16:22 ` [PATCH i-g-t v4 2/4] gitlab-ci: add libatomic to docker images Guillaume Tucker
2019-06-25 10:48   ` Ser, Simon
2019-06-24 16:22 ` [PATCH i-g-t v4 3/4] i915/gem_create: use atomic_* instead of __sync_* Guillaume Tucker
2019-06-24 16:22 ` [PATCH i-g-t v4 4/4] tests/sw_sync: " Guillaume Tucker
2019-06-25 10:54 ` [PATCH i-g-t v4 0/4] Use C11 atomics Ser, Simon
2019-06-25 13:04   ` Guillaume Tucker

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