forked from Minki/linux
lib: test_hmm add ioctl to get zone device type
Add new ioctl cmd to query zone device type. This will be used once the test_hmm adds zone device coherent type. Link: https://lkml.kernel.org/r/20220715150521.18165-9-alex.sierra@amd.com Signed-off-by: Alex Sierra <alex.sierra@amd.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Alistair Poppple <apopple@nvidia.com> Cc: David Hildenbrand <david@redhat.com> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: Jerome Glisse <jglisse@redhat.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Ralph Campbell <rcampbell@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
c83dee9b63
commit
188f48268d
@ -87,6 +87,7 @@ struct dmirror_chunk {
|
||||
struct dmirror_device {
|
||||
struct cdev cdevice;
|
||||
struct hmm_devmem *devmem;
|
||||
unsigned int zone_device_type;
|
||||
|
||||
unsigned int devmem_capacity;
|
||||
unsigned int devmem_count;
|
||||
@ -1266,14 +1267,20 @@ static void dmirror_device_remove(struct dmirror_device *mdevice)
|
||||
static int __init hmm_dmirror_init(void)
|
||||
{
|
||||
int ret;
|
||||
int id;
|
||||
int id = 0;
|
||||
int ndevices = 0;
|
||||
|
||||
ret = alloc_chrdev_region(&dmirror_dev, 0, DMIRROR_NDEVICES,
|
||||
"HMM_DMIRROR");
|
||||
if (ret)
|
||||
goto err_unreg;
|
||||
|
||||
for (id = 0; id < DMIRROR_NDEVICES; id++) {
|
||||
memset(dmirror_devices, 0, DMIRROR_NDEVICES * sizeof(dmirror_devices[0]));
|
||||
dmirror_devices[ndevices++].zone_device_type =
|
||||
HMM_DMIRROR_MEMORY_DEVICE_PRIVATE;
|
||||
dmirror_devices[ndevices++].zone_device_type =
|
||||
HMM_DMIRROR_MEMORY_DEVICE_PRIVATE;
|
||||
for (id = 0; id < ndevices; id++) {
|
||||
ret = dmirror_device_init(dmirror_devices + id, id);
|
||||
if (ret)
|
||||
goto err_chrdev;
|
||||
|
@ -31,10 +31,11 @@ struct hmm_dmirror_cmd {
|
||||
/* Expose the address space of the calling process through hmm device file */
|
||||
#define HMM_DMIRROR_READ _IOWR('H', 0x00, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_WRITE _IOWR('H', 0x01, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_MIGRATE _IOWR('H', 0x02, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_SNAPSHOT _IOWR('H', 0x03, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_EXCLUSIVE _IOWR('H', 0x04, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_CHECK_EXCLUSIVE _IOWR('H', 0x05, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_MIGRATE_TO_DEV _IOWR('H', 0x02, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_MIGRATE_TO_SYS _IOWR('H', 0x03, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_SNAPSHOT _IOWR('H', 0x04, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_EXCLUSIVE _IOWR('H', 0x05, struct hmm_dmirror_cmd)
|
||||
#define HMM_DMIRROR_CHECK_EXCLUSIVE _IOWR('H', 0x06, struct hmm_dmirror_cmd)
|
||||
|
||||
/*
|
||||
* Values returned in hmm_dmirror_cmd.ptr for HMM_DMIRROR_SNAPSHOT.
|
||||
@ -62,4 +63,9 @@ enum {
|
||||
HMM_DMIRROR_PROT_DEV_PRIVATE_REMOTE = 0x30,
|
||||
};
|
||||
|
||||
enum {
|
||||
/* 0 is reserved to catch uninitialized type fields */
|
||||
HMM_DMIRROR_MEMORY_DEVICE_PRIVATE = 1,
|
||||
};
|
||||
|
||||
#endif /* _LIB_TEST_HMM_UAPI_H */
|
||||
|
Loading…
Reference in New Issue
Block a user