kvm_ioctl_create_device currently has knowledge of all the device types and their associated ops. This is fairly inflexible when adding support for new in-kernel device emulations, so move what we currently have out into a table, which can support dynamic registration of ops by new drivers for virtual hardware.
Showing the changes to include/uapi/linux (1 of 3 files). Show all
Unified · Split
| @@ -943,15 +943,25 @@ struct kvm_device_attr { · 942 unmodified lines | |||
| 943 | __u64 addr; /* userspace address of attr data */ | 943 | __u64 addr; /* userspace address of attr data */ |
| 944 | }; | 944 | }; |
| 945 | 945 | ||
| 946 | #define KVM_DEV_TYPE_FSL_MPIC_20 1 | ||
| 947 | #define KVM_DEV_TYPE_FSL_MPIC_42 2 | ||
| 948 | #define KVM_DEV_TYPE_XICS 3 | ||
| 949 | #define KVM_DEV_TYPE_VFIO 4 | ||
| 950 | #define KVM_DEV_VFIO_GROUP 1 | 946 | #define KVM_DEV_VFIO_GROUP 1 |
| 951 | #define KVM_DEV_VFIO_GROUP_ADD 1 | 947 | #define KVM_DEV_VFIO_GROUP_ADD 1 |
| 952 | #define KVM_DEV_VFIO_GROUP_DEL 2 | 948 | #define KVM_DEV_VFIO_GROUP_DEL 2 |
| 953 | #define KVM_DEV_TYPE_ARM_VGIC_V2 5 | 949 | |
| 954 | #define KVM_DEV_TYPE_FLIC 6 | 950 | enum kvm_device_type { |
| 951 | KVM_DEV_TYPE_FSL_MPIC_20 = 1, | ||
| 952 | #define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20 | ||
| 953 | KVM_DEV_TYPE_FSL_MPIC_42, | ||
| 954 | #define KVM_DEV_TYPE_FSL_MPIC_42 KVM_DEV_TYPE_FSL_MPIC_42 | ||
| 955 | KVM_DEV_TYPE_XICS, | ||
| 956 | #define KVM_DEV_TYPE_XICS KVM_DEV_TYPE_XICS | ||
| 957 | KVM_DEV_TYPE_VFIO, | ||
| 958 | #define KVM_DEV_TYPE_VFIO KVM_DEV_TYPE_VFIO | ||
| 959 | KVM_DEV_TYPE_ARM_VGIC_V2, | ||
| 960 | #define KVM_DEV_TYPE_ARM_VGIC_V2 KVM_DEV_TYPE_ARM_VGIC_V2 | ||
| 961 | KVM_DEV_TYPE_FLIC, | ||
| 962 | #define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC | ||
| 963 | KVM_DEV_TYPE_MAX, | ||
| 964 | }; | ||
| 955 | 965 | ||
| 956 | /* | 966 | /* |
| 957 | * ioctls for VM fds | 967 | * ioctls for VM fds |