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 | 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 | 946 | #define KVM_DEV_VFIO_GROUP 1 |
| 951 | 947 | #define KVM_DEV_VFIO_GROUP_ADD 1 |
| 952 | 948 | #define KVM_DEV_VFIO_GROUP_DEL 2 |
| 953 | −#define KVM_DEV_TYPE_ARM_VGIC_V2 5 | |
| 954 | −#define KVM_DEV_TYPE_FLIC 6 | |
| 949 | + | |
| 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 | 967 | * ioctls for VM fds |