diff options
author | Christoffer Dall <c.dall@virtualopensystems.com> | 2013-01-23 13:18:04 -0500 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2013-02-11 13:58:39 -0500 |
commit | 3401d54696f992edf036f00f46c8c399d1b75c2a (patch) | |
tree | bbb3bb02050b3b513e4b55839b553d793c1e63b9 /include | |
parent | a96ab03917dcf4c9477d03b31e8d74779bca1074 (diff) |
KVM: ARM: Introduce KVM_ARM_SET_DEVICE_ADDR ioctl
On ARM some bits are specific to the model being emulated for the guest and
user space needs a way to tell the kernel about those bits. An example is mmio
device base addresses, where KVM must know the base address for a given device
to properly emulate mmio accesses within a certain address range or directly
map a device with virtualiation extensions into the guest address space.
We make this API ARM-specific as we haven't yet reached a consensus for a
generic API for all KVM architectures that will allow us to do something like
this.
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Christoffer Dall <c.dall@virtualopensystems.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/uapi/linux/kvm.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 7f2360a46fc2..c70577cf67bc 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h | |||
@@ -637,6 +637,7 @@ struct kvm_ppc_smmu_info { | |||
637 | #define KVM_CAP_PPC_BOOKE_WATCHDOG 83 | 637 | #define KVM_CAP_PPC_BOOKE_WATCHDOG 83 |
638 | #define KVM_CAP_PPC_HTAB_FD 84 | 638 | #define KVM_CAP_PPC_HTAB_FD 84 |
639 | #define KVM_CAP_ARM_PSCI 87 | 639 | #define KVM_CAP_ARM_PSCI 87 |
640 | #define KVM_CAP_ARM_SET_DEVICE_ADDR 88 | ||
640 | 641 | ||
641 | #ifdef KVM_CAP_IRQ_ROUTING | 642 | #ifdef KVM_CAP_IRQ_ROUTING |
642 | 643 | ||
@@ -784,6 +785,11 @@ struct kvm_msi { | |||
784 | __u8 pad[16]; | 785 | __u8 pad[16]; |
785 | }; | 786 | }; |
786 | 787 | ||
788 | struct kvm_arm_device_addr { | ||
789 | __u64 id; | ||
790 | __u64 addr; | ||
791 | }; | ||
792 | |||
787 | /* | 793 | /* |
788 | * ioctls for VM fds | 794 | * ioctls for VM fds |
789 | */ | 795 | */ |
@@ -869,6 +875,8 @@ struct kvm_s390_ucas_mapping { | |||
869 | #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) | 875 | #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) |
870 | /* Available with KVM_CAP_PPC_HTAB_FD */ | 876 | /* Available with KVM_CAP_PPC_HTAB_FD */ |
871 | #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) | 877 | #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) |
878 | /* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ | ||
879 | #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr) | ||
872 | 880 | ||
873 | /* | 881 | /* |
874 | * ioctls for vcpu fds | 882 | * ioctls for vcpu fds |