gh_virtio_backend.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
  2. /*
  3. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef _UAPI_LINUX_VIRTIO_BACKEND_H
  6. #define _UAPI_LINUX_VIRTIO_BACKEND_H
  7. #include <linux/virtio_types.h>
  8. #define VIRTIO_BE_IOC_MAGIC 0xBC
  9. #define VBE_ASSIGN_IOEVENTFD 1
  10. #define VBE_DEASSIGN_IOEVENTFD 2
  11. #define VBE_ASSIGN_IRQFD 1
  12. #define VBE_DEASSIGN_IRQFD 2
  13. #define EVENT_NEW_BUFFER 1
  14. #define EVENT_RESET_RQST 2
  15. #define EVENT_INTERRUPT_ACK 4
  16. #define EVENT_DRIVER_OK 8
  17. #define EVENT_DRIVER_FAILED 0x10
  18. #define EVENT_MODULE_EXIT 0x20
  19. #define EVENT_VM_EXIT 0x40
  20. #define EVENT_APP_EXIT 0x100
  21. /*
  22. * IOCTLs supported by virtio backend driver
  23. */
  24. #define GH_GET_SHARED_MEMORY_SIZE _IOR(VIRTIO_BE_IOC_MAGIC, 1, __u64)
  25. #define GH_IOEVENTFD _IOW(VIRTIO_BE_IOC_MAGIC, 2, \
  26. struct virtio_eventfd)
  27. #define GH_IRQFD _IOW(VIRTIO_BE_IOC_MAGIC, 3, \
  28. struct virtio_irqfd)
  29. #define GH_WAIT_FOR_EVENT _IOWR(VIRTIO_BE_IOC_MAGIC, 4, \
  30. struct virtio_event)
  31. #define GH_SET_DEVICE_FEATURES _IOW(VIRTIO_BE_IOC_MAGIC, 5, \
  32. struct virtio_dev_features)
  33. #define GH_SET_QUEUE_NUM_MAX _IOW(VIRTIO_BE_IOC_MAGIC, 6, \
  34. struct virtio_queue_max)
  35. #define GH_SET_DEVICE_CONFIG_DATA _IOW(VIRTIO_BE_IOC_MAGIC, 7, \
  36. struct virtio_config_data)
  37. #define GH_GET_DRIVER_CONFIG_DATA _IOWR(VIRTIO_BE_IOC_MAGIC, 8, \
  38. struct virtio_config_data)
  39. #define GH_GET_QUEUE_INFO _IOWR(VIRTIO_BE_IOC_MAGIC, 9, \
  40. struct virtio_queue_info)
  41. #define GH_GET_DRIVER_FEATURES _IOWR(VIRTIO_BE_IOC_MAGIC, 10, \
  42. struct virtio_driver_features)
  43. #define GH_ACK_DRIVER_OK _IOWR(VIRTIO_BE_IOC_MAGIC, 11, __u32)
  44. #define GH_SET_APP_READY _IO(VIRTIO_BE_IOC_MAGIC, 12)
  45. #define GH_ACK_RESET _IOW(VIRTIO_BE_IOC_MAGIC, 13, struct virtio_ack_reset)
  46. struct virtio_ack_reset {
  47. __u32 label;
  48. __u32 reserved;
  49. };
  50. struct virtio_driver_features {
  51. __u32 label;
  52. __u32 reserved;
  53. __u32 features_sel;
  54. __u32 features;
  55. };
  56. struct virtio_queue_info {
  57. __u32 label;
  58. __u32 queue_sel;
  59. __u32 queue_num;
  60. __u32 queue_ready;
  61. __u64 queue_desc;
  62. __u64 queue_driver;
  63. __u64 queue_device;
  64. };
  65. struct virtio_config_data {
  66. __u32 label;
  67. __u32 config_size;
  68. __u64 config_data;
  69. };
  70. struct virtio_dev_features {
  71. __u32 label;
  72. __u32 reserved;
  73. __u32 features_sel;
  74. __u32 features;
  75. };
  76. struct virtio_queue_max {
  77. __u32 label;
  78. __u32 reserved;
  79. __u32 queue_sel;
  80. __u32 queue_num_max;
  81. };
  82. struct virtio_event {
  83. __u32 label;
  84. __u32 event;
  85. __u32 event_data;
  86. __u32 reserved;
  87. };
  88. struct virtio_eventfd {
  89. __u32 label;
  90. __u32 flags;
  91. __u32 queue_num;
  92. __s32 fd;
  93. };
  94. struct virtio_irqfd {
  95. __u32 label;
  96. __u32 flags;
  97. __s32 fd;
  98. __u32 reserved;
  99. };
  100. #endif /* _UAPI_LINUX_VIRTIO_BACKEND_H */