summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRob Clark <robdclark@chromium.org>2022-05-21 10:57:02 -0700
committerRob Clark <robdclark@chromium.org>2022-05-31 14:05:16 -0700
commit5857938d4d3539deb43ecb03604b7c664b75e57d (patch)
treecdf66e4b2ed29d192503e81291dd35cf0ae38fbc /lib
parent9ce1c981ab12b2036cce6eeaa725e724c8e51668 (diff)
igt: Promote/rename OS helpers
Promote intel_os.c helpers to igt_os.c, so that I can re-use them for some additional msm tests. Just big churny rename, no functional change. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/i915/intel_memory_region.c2
-rw-r--r--lib/igt_aux.c2
-rw-r--r--lib/igt_aux.h18
-rw-r--r--lib/igt_os.c (renamed from lib/intel_os.c)97
-rw-r--r--lib/igt_os.h45
-rw-r--r--lib/meson.build2
6 files changed, 101 insertions, 65 deletions
diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c
index 6bf6aab1..8c5c2df8 100644
--- a/lib/i915/intel_memory_region.c
+++ b/lib/i915/intel_memory_region.c
@@ -955,7 +955,7 @@ struct gem_memory_region *__gem_get_memory_regions(int i915)
r->ci = info->regions[i].region;
r->size = info->regions[i].probed_size;
if (r->size == -1ull)
- r->size = intel_get_avail_ram_mb() << 20;
+ r->size = igt_get_avail_ram_mb() << 20;
asprintf(&r->name, "%s%d",
region_repr(&r->ci), r->ci.memory_instance);
diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 9431960f..35c67f10 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -873,7 +873,7 @@ void igt_system_suspend_autoresume(enum igt_suspend_state state,
faccessat(power_dir, "pm_test", R_OK | W_OK, 0) == 0);
igt_skip_on_f(state == SUSPEND_STATE_DISK &&
- !intel_get_total_swap_mb(),
+ !igt_get_total_swap_mb(),
"Suspend to disk requires swap space.\n");
orig_test = get_suspend_test(power_dir);
diff --git a/lib/igt_aux.h b/lib/igt_aux.h
index ab1f9e1a..af663d2c 100644
--- a/lib/igt_aux.h
+++ b/lib/igt_aux.h
@@ -41,6 +41,7 @@
#include <i915/gem_submission.h>
#include "igt_core.h"
+#include "igt_os.h"
/* signal interrupt helpers */
#ifdef __linux__
@@ -216,23 +217,6 @@ void igt_drop_root(void);
void igt_debug_wait_for_keypress(const char *var);
void igt_debug_interactive_mode_check(const char *var, const char *expected);
-/* sysinfo cross-arch wrappers from intel_os.c */
-
-/* These are separate to allow easier testing when porting, see the comment at
- * the bottom of intel_os.c. */
-void intel_purge_vm_caches(int fd);
-uint64_t intel_get_avail_ram_mb(void);
-uint64_t intel_get_total_ram_mb(void);
-uint64_t intel_get_total_swap_mb(void);
-void *intel_get_total_pinnable_mem(size_t *pinned);
-
-int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
- uint64_t *out_required, uint64_t *out_total);
-void intel_require_memory(uint64_t count, uint64_t size, unsigned mode);
-void intel_require_files(uint64_t count);
-#define CHECK_RAM 0x1
-#define CHECK_SWAP 0x2
-
#define __typecheck(x, y) \
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
diff --git a/lib/intel_os.c b/lib/igt_os.c
index 2bb0c981..bdd5d933 100644
--- a/lib/intel_os.c
+++ b/lib/igt_os.c
@@ -47,20 +47,20 @@
#endif
#include <sys/resource.h>
-#include "intel_io.h"
#include "drmtest.h"
#include "igt_aux.h"
#include "igt_debugfs.h"
+#include "igt_os.h"
#include "igt_sysfs.h"
/**
- * intel_get_total_ram_mb:
+ * igt_get_total_ram_mb:
*
* Returns:
* The total amount of system RAM available in MB.
*/
uint64_t
-intel_get_total_ram_mb(void)
+igt_get_total_ram_mb(void)
{
uint64_t retval;
@@ -74,7 +74,7 @@ intel_get_total_ram_mb(void)
long pagesize, npages;
pagesize = sysconf(_SC_PAGESIZE);
- npages = sysconf(_SC_PHYS_PAGES);
+ npages = sysconf(_SC_PHYS_PAGES);
retval = (uint64_t) pagesize * npages;
#else
@@ -98,13 +98,13 @@ static uint64_t get_meminfo(const char *info, const char *tag)
}
/**
- * intel_get_avail_ram_mb:
+ * igt_get_avail_ram_mb:
*
* Returns:
* The amount of unused system RAM available in MB.
*/
uint64_t
-intel_get_avail_ram_mb(void)
+igt_get_avail_ram_mb(void)
{
uint64_t retval;
@@ -112,8 +112,8 @@ intel_get_avail_ram_mb(void)
char *info;
int fd;
- fd = drm_open_driver(DRIVER_INTEL);
- intel_purge_vm_caches(fd);
+ fd = drm_open_driver(DRIVER_ANY);
+ igt_purge_vm_caches(fd);
close(fd);
fd = open("/proc", O_RDONLY);
@@ -145,7 +145,7 @@ intel_get_avail_ram_mb(void)
long pagesize, npages;
pagesize = sysconf(_SC_PAGESIZE);
- npages = sysconf(_SC_AVPHYS_PAGES);
+ npages = sysconf(_SC_AVPHYS_PAGES);
retval = (uint64_t) pagesize * npages;
#else
@@ -156,13 +156,13 @@ intel_get_avail_ram_mb(void)
}
/**
- * intel_get_total_swap_mb:
+ * igt_get_total_swap_mb:
*
* Returns:
* The total amount of swap space available in MB.
*/
uint64_t
-intel_get_total_swap_mb(void)
+igt_get_total_swap_mb(void)
{
uint64_t retval;
@@ -180,31 +180,31 @@ intel_get_total_swap_mb(void)
int n, i;
if ((n = swapctl(SC_GETNSWP, NULL)) == -1) {
- igt_warn("swapctl: GETNSWP");
- return 0;
+ igt_warn("swapctl: GETNSWP");
+ return 0;
}
if (n == 0) {
- /* no error, but no swap devices either */
- return 0;
+ /* no error, but no swap devices either */
+ return 0;
}
swt = malloc(sizeof(struct swaptable) + (n * sizeof(swapent_t)));
buf = malloc(n * MAXPATHLEN);
if (!swt || !buf) {
- igt_warn("malloc");
+ igt_warn("malloc");
} else {
- swt->swt_n = n;
- for (i = 0 ; i < n; i++) {
- swt->swt_ent[i].ste_path = buf + (i * MAXPATHLEN);
- }
-
- if ((n = swapctl(SC_LIST, swt)) == -1) {
- igt_warn("swapctl: LIST");
- } else {
- for (i = 0; i < swt->swt_n; i++) {
- totalpages += swt->swt_ent[i].ste_pages;
+ swt->swt_n = n;
+ for (i = 0 ; i < n; i++) {
+ swt->swt_ent[i].ste_path = buf + (i * MAXPATHLEN);
+ }
+
+ if ((n = swapctl(SC_LIST, swt)) == -1) {
+ igt_warn("swapctl: LIST");
+ } else {
+ for (i = 0; i < swt->swt_n; i++) {
+ totalpages += swt->swt_ent[i].ste_pages;
+ }
}
- }
}
free(swt);
free(buf);
@@ -219,7 +219,7 @@ intel_get_total_swap_mb(void)
}
/**
- * intel_get_total_pinnable_mem:
+ * igt_get_total_pinnable_mem:
*
* Compute the amount of memory that we're able to safely lock.
* Note that in order to achieve this, we're attempting to repeatedly lock more
@@ -227,12 +227,12 @@ intel_get_total_swap_mb(void)
*
* Returns: Amount of memory that can be safely pinned, in bytes.
*/
-void *intel_get_total_pinnable_mem(size_t *total)
+void *igt_get_total_pinnable_mem(size_t *total)
{
uint64_t *can_mlock, pin, avail;
- pin = (intel_get_total_ram_mb() + 1) << 20;
- avail = (intel_get_avail_ram_mb() + 1) << 20;
+ pin = (igt_get_total_ram_mb() + 1) << 20;
+ avail = (igt_get_avail_ram_mb() + 1) << 20;
can_mlock = mmap(NULL, pin, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
igt_require(can_mlock != MAP_FAILED);
@@ -290,20 +290,20 @@ static unsigned max_open_files(void)
}
/**
- * intel_require_files:
+ * igt_require_files:
* @count: number of files that will be created
*
* Does the system support enough file descriptors for the test?
*/
-void intel_require_files(uint64_t count)
+void igt_require_files(uint64_t count)
{
igt_require_f(count < max_open_files(),
"Estimated that we need %'llu files, but the process maximum is only %'llu\n",
(long long)count, (long long)max_open_files());
}
-int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
- uint64_t *out_required, uint64_t *out_total)
+int __igt_check_memory(uint64_t count, uint64_t size, unsigned mode,
+ uint64_t *out_required, uint64_t *out_total)
{
/* rough estimate of how many bytes the kernel requires to track each object */
#define KERNEL_BO_OVERHEAD 8192 /* 2k for an object, 2k for an inode, etc */
@@ -320,9 +320,9 @@ int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
total = 0;
if (mode & (CHECK_RAM | CHECK_SWAP))
- total += intel_get_avail_ram_mb();
+ total += igt_get_avail_ram_mb();
if (mode & CHECK_SWAP)
- total += intel_get_total_swap_mb();
+ total += igt_get_total_swap_mb();
total *= 1024 * 1024;
if (out_required)
@@ -338,7 +338,7 @@ int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
}
/**
- * intel_require_memory:
+ * igt_require_memory:
* @count: number of surfaces that will be created
* @size: the size in bytes of each surface
* @mode: a bit field declaring whether the test will be run in RAM or in SWAP
@@ -360,13 +360,13 @@ int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
* assumption that any test that needs to check for memory requirements is a
* thrashing test unsuitable for slow simulated systems.
*/
-void intel_require_memory(uint64_t count, uint64_t size, unsigned mode)
+void igt_require_memory(uint64_t count, uint64_t size, unsigned mode)
{
uint64_t required, total;
bool sufficient_memory;
- sufficient_memory = __intel_check_memory(count, size, mode,
- &required, &total);
+ sufficient_memory = __igt_check_memory(count, size, mode,
+ &required, &total);
if (!sufficient_memory) {
int dir = open("/proc", O_RDONLY);
char *info;
@@ -398,7 +398,14 @@ void intel_require_memory(uint64_t count, uint64_t size, unsigned mode)
(long long)vfs_file_max());
}
-void intel_purge_vm_caches(int drm_fd)
+/**
+ * igt_purge_vm_caches:
+ * @drm_fd: the drm device fd
+ *
+ * Trigger the drm driver to shrink and drop idle buffers, and then
+ * trigger VM subsystem to drop caches.
+ */
+void igt_purge_vm_caches(int drm_fd)
{
int fd;
@@ -434,7 +441,7 @@ void intel_purge_vm_caches(int drm_fd)
/*
* When testing a port to a new platform, create a standalone test binary
* by running:
- * cc -o porttest intel_drm.c -I.. -DSTANDALONE_TEST `pkg-config --cflags libdrm`
+ * cc -o porttest igt_os.c -I.. -DSTANDALONE_TEST `pkg-config --cflags libdrm`
* and then running the resulting porttest program.
*/
#ifdef STANDALONE_TEST
@@ -442,8 +449,8 @@ void *mmio;
int main(int argc, char **argv)
{
- igt_info("Total RAM: %"PRIu64" Mb\n", intel_get_total_ram_mb());
- igt_info("Total Swap: %"PRIu64" Mb\n", intel_get_total_swap_mb());
+ igt_info("Total RAM: %"PRIu64" Mb\n", igt_get_total_ram_mb());
+ igt_info("Total Swap: %"PRIu64" Mb\n", igt_get_total_swap_mb());
return 0;
}
diff --git a/lib/igt_os.h b/lib/igt_os.h
new file mode 100644
index 00000000..79363b29
--- /dev/null
+++ b/lib/igt_os.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ *
+ * 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 IGT_OS_H
+#define IGT_OS_H
+
+
+/* These are separate to allow easier testing when porting, see the comment at
+ * the bottom of intel_os.c. */
+uint64_t igt_get_total_ram_mb(void);
+uint64_t igt_get_avail_ram_mb(void);
+uint64_t igt_get_total_swap_mb(void);
+void *igt_get_total_pinnable_mem(size_t *pinned);
+
+int __igt_check_memory(uint64_t count, uint64_t size, unsigned mode,
+ uint64_t *out_required, uint64_t *out_total);
+void igt_require_memory(uint64_t count, uint64_t size, unsigned mode);
+void igt_require_files(uint64_t count);
+#define CHECK_RAM 0x1
+#define CHECK_SWAP 0x2
+
+void igt_purge_vm_caches(int drm_fd);
+
+#endif /* IGT_OS_H */
diff --git a/lib/meson.build b/lib/meson.build
index ccee7a59..793d399d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -24,6 +24,7 @@ lib_sources = [
'igt_halffloat.c',
'igt_io.c',
'igt_matrix.c',
+ 'igt_os.c',
'igt_params.c',
'igt_perf.c',
'igt_primes.c',
@@ -49,7 +50,6 @@ lib_sources = [
'intel_chipset.c',
'intel_ctx.c',
'intel_device_info.c',
- 'intel_os.c',
'intel_mmio.c',
'ioctl_wrappers.c',
'media_spin.c',