cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

st_shmem_utils.c (1168B)


      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("mock", &datum, sizeof(datum));
     16	if (IS_ERR(file))
     17		return PTR_ERR(file);
     18
     19	result = 0;
     20	err = shmem_read(file, 0, &result, 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, 0, &result, 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, 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}