VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

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