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

test_hmm_uapi.h (2464B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2/*
      3 * This is a module to test the HMM (Heterogeneous Memory Management) API
      4 * of the kernel. It allows a userspace program to expose its entire address
      5 * space through the HMM test module device file.
      6 */
      7#ifndef _LIB_TEST_HMM_UAPI_H
      8#define _LIB_TEST_HMM_UAPI_H
      9
     10#include <linux/types.h>
     11#include <linux/ioctl.h>
     12
     13/*
     14 * Structure to pass to the HMM test driver to mimic a device accessing
     15 * system memory and ZONE_DEVICE private memory through device page tables.
     16 *
     17 * @addr: (in) user address the device will read/write
     18 * @ptr: (in) user address where device data is copied to/from
     19 * @npages: (in) number of pages to read/write
     20 * @cpages: (out) number of pages copied
     21 * @faults: (out) number of device page faults seen
     22 */
     23struct hmm_dmirror_cmd {
     24	__u64		addr;
     25	__u64		ptr;
     26	__u64		npages;
     27	__u64		cpages;
     28	__u64		faults;
     29};
     30
     31/* Expose the address space of the calling process through hmm device file */
     32#define HMM_DMIRROR_READ		_IOWR('H', 0x00, struct hmm_dmirror_cmd)
     33#define HMM_DMIRROR_WRITE		_IOWR('H', 0x01, struct hmm_dmirror_cmd)
     34#define HMM_DMIRROR_MIGRATE		_IOWR('H', 0x02, struct hmm_dmirror_cmd)
     35#define HMM_DMIRROR_SNAPSHOT		_IOWR('H', 0x03, struct hmm_dmirror_cmd)
     36#define HMM_DMIRROR_EXCLUSIVE		_IOWR('H', 0x04, struct hmm_dmirror_cmd)
     37#define HMM_DMIRROR_CHECK_EXCLUSIVE	_IOWR('H', 0x05, struct hmm_dmirror_cmd)
     38
     39/*
     40 * Values returned in hmm_dmirror_cmd.ptr for HMM_DMIRROR_SNAPSHOT.
     41 * HMM_DMIRROR_PROT_ERROR: no valid mirror PTE for this page
     42 * HMM_DMIRROR_PROT_NONE: unpopulated PTE or PTE with no access
     43 * HMM_DMIRROR_PROT_READ: read-only PTE
     44 * HMM_DMIRROR_PROT_WRITE: read/write PTE
     45 * HMM_DMIRROR_PROT_PMD: PMD sized page is fully mapped by same permissions
     46 * HMM_DMIRROR_PROT_PUD: PUD sized page is fully mapped by same permissions
     47 * HMM_DMIRROR_PROT_ZERO: special read-only zero page
     48 * HMM_DMIRROR_PROT_DEV_PRIVATE_LOCAL: Migrated device private page on the
     49 *					device the ioctl() is made
     50 * HMM_DMIRROR_PROT_DEV_PRIVATE_REMOTE: Migrated device private page on some
     51 *					other device
     52 */
     53enum {
     54	HMM_DMIRROR_PROT_ERROR			= 0xFF,
     55	HMM_DMIRROR_PROT_NONE			= 0x00,
     56	HMM_DMIRROR_PROT_READ			= 0x01,
     57	HMM_DMIRROR_PROT_WRITE			= 0x02,
     58	HMM_DMIRROR_PROT_PMD			= 0x04,
     59	HMM_DMIRROR_PROT_PUD			= 0x08,
     60	HMM_DMIRROR_PROT_ZERO			= 0x10,
     61	HMM_DMIRROR_PROT_DEV_PRIVATE_LOCAL	= 0x20,
     62	HMM_DMIRROR_PROT_DEV_PRIVATE_REMOTE	= 0x30,
     63};
     64
     65#endif /* _LIB_TEST_HMM_UAPI_H */