* kvm-arm64/smccc-filtering: : . : SMCCC call filtering and forwarding to userspace, courtesy of : Oliver Upton. From the cover letter: : : "The Arm SMCCC is rather prescriptive in regards to the allocation of : SMCCC function ID ranges. Many of the hypercall ranges have an : associated specification from Arm (FF-A, PSCI, SDEI, etc.) with some : room for vendor-specific implementations. : : The ever-expanding SMCCC surface leaves a lot of work within KVM for : providing new features. Furthermore, KVM implements its own : vendor-specific ABI, with little room for other implementations (like : Hyper-V, for example). Rather than cramming it all into the kernel we : should provide a way for userspace to handle hypercalls." : . KVM: selftests: Fix spelling mistake "KVM_HYPERCAL_EXIT_SMC" -> "KVM_HYPERCALL_EXIT_SMC" KVM: arm64: Test that SMC64 arch calls are reserved KVM: arm64: Prevent userspace from handling SMC64 arch range KVM: arm64: Expose SMC/HVC width to userspace KVM: selftests: Add test for SMCCC filter KVM: selftests: Add a helper for SMCCC calls with SMC instruction KVM: arm64: Let errors from SMCCC emulation to reach userspace KVM: arm64: Return NOT_SUPPORTED to guest for unknown PSCI version KVM: arm64: Introduce support for userspace SMCCC filtering KVM: arm64: Add support for KVM_EXIT_HYPERCALL KVM: arm64: Use a maple tree to represent the SMCCC filter KVM: arm64: Refactor hvc filtering to support different actions KVM: arm64: Start handling SMCs from EL1 KVM: arm64: Rename SMC/HVC call handler to reflect reality KVM: arm64: Add vm fd device attribute accessors KVM: arm64: Add a helper to check if a VM has ran once KVM: x86: Redefine 'longmode' as a flag for KVM_EXIT_HYPERCALL
Showing the changes to include/uapi (1 of 18 files). Show all
Unified · Split
| @@ -341,8 +341,13 @@ struct kvm_run { · 340 unmodified lines | |||
| 341 | __u64 nr; | 341 | __u64 nr; |
| 342 | __u64 args[6]; | 342 | __u64 args[6]; |
| 343 | __u64 ret; | 343 | __u64 ret; |
| 344 | __u32 longmode; | 344 | |
| 345 | __u32 pad; | 345 | union { |
| 346 | #ifndef __KERNEL__ | ||
| 347 | __u32 longmode; | ||
| 348 | #endif | ||
| 349 | __u64 flags; | ||
| 350 | }; | ||
| 346 | } hypercall; | 351 | } hypercall; |
| 347 | /* KVM_EXIT_TPR_ACCESS */ | 352 | /* KVM_EXIT_TPR_ACCESS */ |
| 348 | struct { | 353 | struct { |