From 1fbc73836e0cb810340fe5ae3f4dbe4fd9cf4226 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 10 Oct 2025 17:22:55 -0400 Subject: [PATCH] intel: Drop intel_mem.c/h Reviewed-by: Lionel Landwerlin Part-of: --- src/gallium/drivers/iris/iris_bufmgr.c | 1 - src/intel/common/intel_clflushopt.c | 47 ----------- src/intel/common/intel_mem.c | 105 ------------------------- src/intel/common/intel_mem.h | 43 ---------- src/intel/common/meson.build | 13 --- 5 files changed, 209 deletions(-) delete mode 100644 src/intel/common/intel_clflushopt.c delete mode 100644 src/intel/common/intel_mem.c delete mode 100644 src/intel/common/intel_mem.h diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 42f9b21a2c9..1fd412fd252 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -48,7 +48,6 @@ #include "errno.h" #include "common/intel_aux_map.h" -#include "common/intel_mem.h" #include "c99_alloca.h" #include "dev/intel_debug.h" #include "common/intel_common.h" diff --git a/src/intel/common/intel_clflushopt.c b/src/intel/common/intel_clflushopt.c deleted file mode 100644 index fb71c51c3ac..00000000000 --- a/src/intel/common/intel_clflushopt.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2023 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include "intel_mem.h" -#include "util/u_cpu_detect.h" - -#ifndef HAVE___BUILTIN_IA32_CLFLUSHOPT -#error "Compiler doesn't support clflushopt!" -#endif - -void intel_clflushopt_range(void *start, size_t size); - -void -intel_clflushopt_range(void *start, size_t size) -{ - const struct util_cpu_caps_t *cpu_caps = util_get_cpu_caps(); - assert(cpu_caps->has_clflushopt); - assert(cpu_caps->cacheline > 0); - void *p = (void *) (((uintptr_t) start) & - ~((uintptr_t)cpu_caps->cacheline - 1)); - void *end = start + size; - - while (p < end) { - __builtin_ia32_clflushopt(p); - p += cpu_caps->cacheline; - } -} diff --git a/src/intel/common/intel_mem.c b/src/intel/common/intel_mem.c deleted file mode 100644 index 6ebd48fd46c..00000000000 --- a/src/intel/common/intel_mem.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright © 2017 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include "intel_mem.h" -#include "util/u_cpu_detect.h" - -#include - -#define CACHELINE_SIZE 64 -#define CACHELINE_MASK 63 - -#ifdef SUPPORT_INTEL_INTEGRATED_GPUS - -#ifdef HAVE___BUILTIN_IA32_CLFLUSHOPT -void intel_clflushopt_range(void *start, size_t size); -#endif - -static void -intel_clflush_range(void *start, size_t size) -{ - void *p = (void *) (((uintptr_t) start) & ~CACHELINE_MASK); - void *end = start + size; - - while (p < end) { - __builtin_ia32_clflush(p); - p += CACHELINE_SIZE; - } -} - -void -intel_flush_range_no_fence(void *start, size_t size) -{ -#ifdef HAVE___BUILTIN_IA32_CLFLUSHOPT - const struct util_cpu_caps_t *cpu_caps = util_get_cpu_caps(); - if (cpu_caps->has_clflushopt) { - intel_clflushopt_range(start, size); - return; - } -#endif - intel_clflush_range(start, size); -} - -void -intel_flush_range(void *start, size_t size) -{ - __builtin_ia32_mfence(); - intel_flush_range_no_fence(start, size); -#ifdef HAVE___BUILTIN_IA32_CLFLUSHOPT - /* clflushopt doesn't include an mfence like clflush */ - if (util_get_cpu_caps()->has_clflushopt) - __builtin_ia32_mfence(); -#endif -} - -void -intel_invalidate_range(void *start, size_t size) -{ - if (size == 0) - return; - - intel_flush_range_no_fence(start, size); - - /* Modern Atom CPUs (Baytrail+) have issues with clflush serialization, - * where mfence is not a sufficient synchronization barrier. We must - * double clflush the last cacheline. This guarantees it will be ordered - * after the preceding clflushes, and then the mfence guards against - * prefetches crossing the clflush boundary. - * - * See kernel commit 396f5d62d1a5fd99421855a08ffdef8edb43c76e - * ("drm: Restore double clflush on the last partial cacheline") - * and https://bugs.freedesktop.org/show_bug.cgi?id=92845. - */ -#ifdef HAVE___BUILTIN_IA32_CLFLUSHOPT - /* clflushopt doesn't include an mfence like clflush */ - if (util_get_cpu_caps()->has_clflushopt) { - __builtin_ia32_mfence(); - intel_clflushopt_range(start + size - 1, 1); - __builtin_ia32_mfence(); - return; - } -#endif - __builtin_ia32_clflush(start + size - 1); - __builtin_ia32_mfence(); -} -#endif /* SUPPORT_INTEL_INTEGRATED_GPUS */ diff --git a/src/intel/common/intel_mem.h b/src/intel/common/intel_mem.h deleted file mode 100644 index 976694b30c2..00000000000 --- a/src/intel/common/intel_mem.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2023 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#ifndef INTEL_MEM_H -#define INTEL_MEM_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SUPPORT_INTEL_INTEGRATED_GPUS -void intel_flush_range(void *start, size_t size); -void intel_flush_range_no_fence(void *start, size_t size); -void intel_invalidate_range(void *start, size_t size); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* INTEL_MEM_H */ diff --git a/src/intel/common/meson.build b/src/intel/common/meson.build index aa20a16470f..5717fcc3822 100644 --- a/src/intel/common/meson.build +++ b/src/intel/common/meson.build @@ -42,24 +42,11 @@ files_libintel_common = files( 'intel_uuid.h', 'intel_measure.c', 'intel_measure.h', - 'intel_mem.c', - 'intel_mem.h', 'intel_pixel_hash.h' ) libintel_common_links = [libisl] -if with_clflushopt - libintel_clflushopt = static_library( - 'intel_clflushopt', - ['intel_clflushopt.c'], - include_directories : [inc_include, inc_src], - c_args : [no_override_init_args] + clflushopt_args, - gnu_symbol_visibility : 'hidden', - ) - libintel_common_links += libintel_clflushopt -endif - libintel_common = static_library( 'intel_common', [files_libintel_common, genX_xml_h, sha1_h],