1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * Intel MIC Platform Software Stack (MPSS) 4 * 5 * Copyright(c) 2013 Intel Corporation. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License, version 2, as 9 * published by the Free Software Foundation. 10 * 11 * This program is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * General Public License for more details. 15 * 16 * The full GNU General Public License is included in this distribution in 17 * the file called "COPYING". 18 * 19 * Intel MIC Host driver. 20 * 21 */ 22 #ifndef _MIC_IOCTL_H_ 23 #define _MIC_IOCTL_H_ 24 25 #include <linux/types.h> 26 27 /* 28 * mic_copy - MIC virtio descriptor copy. 29 * 30 * @iov: An array of IOVEC structures containing user space buffers. 31 * @iovcnt: Number of IOVEC structures in iov. 32 * @vr_idx: The vring index. 33 * @update_used: A non zero value results in used index being updated. 34 * @out_len: The aggregate of the total length written to or read from 35 * the virtio device. 36 */ 37 struct mic_copy_desc { 38 #ifdef __KERNEL__ 39 struct iovec __user *iov; 40 #else 41 struct iovec *iov; 42 #endif 43 __u32 iovcnt; 44 __u8 vr_idx; 45 __u8 update_used; 46 __u32 out_len; 47 }; 48 49 /* 50 * Add a new virtio device 51 * The (struct mic_device_desc *) pointer points to a device page entry 52 * for the virtio device consisting of: 53 * - struct mic_device_desc 54 * - struct mic_vqconfig (num_vq of these) 55 * - host and guest features 56 * - virtio device config space 57 * The total size referenced by the pointer should equal the size returned 58 * by desc_size() in mic_common.h 59 */ 60 #define MIC_VIRTIO_ADD_DEVICE _IOWR('s', 1, struct mic_device_desc *) 61 62 /* 63 * Copy the number of entries in the iovec and update the used index 64 * if requested by the user. 65 */ 66 #define MIC_VIRTIO_COPY_DESC _IOWR('s', 2, struct mic_copy_desc *) 67 68 /* 69 * Notify virtio device of a config change 70 * The (__u8 *) pointer points to config space values for the device 71 * as they should be written into the device page. The total size 72 * referenced by the pointer should equal the config_len field of struct 73 * mic_device_desc. 74 */ 75 #define MIC_VIRTIO_CONFIG_CHANGE _IOWR('s', 5, __u8 *) 76 77 #endif 78