[kvmarm] [PATCH v6 02/13] KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl
From: Christoffer Dall <hidden>
Date: 2013-01-21 00:06:13
Also in:
kvm
Subsystem:
arm port, the rest · Maintainers:
Russell King, Linus Torvalds
On Sun, Jan 20, 2013 at 6:22 PM, Christoffer Dall [off-list ref] wrote:
quoted hunk ↗ jump to hunk
On Thu, Jan 17, 2013 at 12:37 PM, Peter Maydell [off-list ref] wrote:quoted
On 16 January 2013 18:00, Christoffer Dall [off-list ref] wrote:quoted
KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctlPatch subject needs updating with new name of this ioctl (KVM_ARM_SET_DEVICE_ADDR)...quoted
On ARM (and possibly other architectures) 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."virtualization", while I'm here.quoted
--- a/arch/arm/include/uapi/asm/kvm.h +++ b/arch/arm/include/uapi/asm/kvm.h@@ -65,6 +65,19 @@ struct kvm_regs { #define KVM_ARM_TARGET_CORTEX_A15 0 #define KVM_ARM_NUM_TARGETS 1 +/* KVM_SET_DEVICE_ADDRESS ioctl id encoding */ +#define KVM_DEVICE_TYPE_SHIFT 0 +#define KVM_DEVICE_TYPE_MASK (0xffff << KVM_DEVICE_TYPE_SHIFT) +#define KVM_DEVICE_ID_SHIFT 16 +#define KVM_DEVICE_ID_MASK (0xffff << KVM_DEVICE_ID_SHIFT)...and this comment and I guess these constant names presumably should have "ARM" in them?quoted
+/* Available with KVM_CAP_SET_DEVICE_ADDR */KVM_CAP_ARM_SET_DEVICE_ADDR.right, thanks: commit 92c7530ddee0d1e1a0b5c3fbd01aa05457812030 Author: Christoffer Dall [off-list ref] Date: Sun Jan 20 18:20:52 2013 -0500 KVM: ARM: Update comments and defines for KVM_ARM_SET_DEVICE_ADDR Update comments and defines to reflect the name change of KVM_SET_DEVICE_ADDRESS to KVM_ARM_SET_DEVICE_ADDR. Signed-off-by: Christoffer Dall [off-list ref]diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h index 236f528..023bfeb 100644 --- a/arch/arm/include/uapi/asm/kvm.h +++ b/arch/arm/include/uapi/asm/kvm.h@@ -65,11 +65,11 @@ struct kvm_regs { #define KVM_ARM_TARGET_CORTEX_A15 0 #define KVM_ARM_NUM_TARGETS 1 -/* KVM_SET_DEVICE_ADDRESS ioctl id encoding */ -#define KVM_DEVICE_TYPE_SHIFT 0 -#define KVM_DEVICE_TYPE_MASK (0xffff << KVM_DEVICE_TYPE_SHIFT) -#define KVM_DEVICE_ID_SHIFT 16 -#define KVM_DEVICE_ID_MASK (0xffff << KVM_DEVICE_ID_SHIFT) +/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ +#define KVM_ARM_DEVICE_TYPE_SHIFT 0 +#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT) +#define KVM_ARM_DEVICE_ID_SHIFT 16 +#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT) /* Supported device IDs */ #define KVM_ARM_DEVICE_VGIC_V2 0diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 9ff7f70..33887e7 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h@@ -875,7 +875,7 @@ struct kvm_s390_ucas_mapping { #define KVM_ALLOCATE_RMA _IOR(KVMIO, 0xa9, struct kvm_allocate_rma) /* Available with KVM_CAP_PPC_HTAB_FD */ #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd) -/* Available with KVM_CAP_SET_DEVICE_ADDR */ +/* Available with KVM_CAP_ARM_SET_DEVICE_ADDR */ #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, structkvm_arm_device_addr) /* --
and this:
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index a67392a..134df21 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c@@ -924,8 +924,10 @@ static int kvm_vm_ioctl_set_device_addr(struct kvm *kvm, { unsigned long dev_id, type; - dev_id = (dev_addr->id & KVM_DEVICE_ID_MASK) >> KVM_DEVICE_ID_SHIFT; - type = (dev_addr->id & KVM_DEVICE_TYPE_MASK) >> KVM_DEVICE_TYPE_SHIFT; + dev_id = (dev_addr->id & KVM_ARM_DEVICE_ID_MASK) >> + KVM_ARM_DEVICE_ID_SHIFT; + type = (dev_addr->id & KVM_ARM_DEVICE_TYPE_MASK) >> + KVM_ARM_DEVICE_TYPE_SHIFT; switch (dev_id) { case KVM_ARM_DEVICE_VGIC_V2: -- -Christoffer