1// SPDX-License-Identifier: MIT
2/*
3 * Copyright © 2020 Intel Corporation
4 */
5
6/* Just a quick and causal check of the shmem_utils API */
7
8static int igt_shmem_basic(void *ignored)
9{
10 u32 datum = 0xdeadbeef, result;
11 struct file *file;
12 u32 *map;
13 int err;
14
15 file = shmem_create_from_data(name: "mock", data: &datum, len: sizeof(datum));
16 if (IS_ERR(ptr: file))
17 return PTR_ERR(ptr: file);
18
19 result = 0;
20 err = shmem_read(file, off: 0, dst: &result, len: sizeof(result));
21 if (err)
22 goto out_file;
23
24 if (result != datum) {
25 pr_err("Incorrect read back from shmemfs: %x != %x\n",
26 result, datum);
27 err = -EINVAL;
28 goto out_file;
29 }
30
31 result = 0xc0ffee;
32 err = shmem_write(file, off: 0, src: &result, len: sizeof(result));
33 if (err)
34 goto out_file;
35
36 map = shmem_pin_map(file);
37 if (!map) {
38 err = -ENOMEM;
39 goto out_file;
40 }
41
42 if (*map != result) {
43 pr_err("Incorrect read back via mmap of last write: %x != %x\n",
44 *map, result);
45 err = -EINVAL;
46 goto out_map;
47 }
48
49out_map:
50 shmem_unpin_map(file, ptr: map);
51out_file:
52 fput(file);
53 return err;
54}
55
56int shmem_utils_mock_selftests(void)
57{
58 static const struct i915_subtest tests[] = {
59 SUBTEST(igt_shmem_basic),
60 };
61
62 return i915_subtests(tests, NULL);
63}
64

source code of linux/drivers/gpu/drm/i915/gt/st_shmem_utils.c