[kvmarm] [PATCH v6 02/13] KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl

Christoffer Dall c.dall at virtualopensystems.com
Sun Jan 20 19:06:13 EST 2013


On Sun, Jan 20, 2013 at 6:22 PM, Christoffer Dall
<c.dall at virtualopensystems.com> wrote:
> On Thu, Jan 17, 2013 at 12:37 PM, Peter Maydell
> <peter.maydell at linaro.org> wrote:
>> On 16 January 2013 18:00, Christoffer Dall
>> <c.dall at virtualopensystems.com> wrote:
>>> KVM: ARM: Introduce KVM_SET_DEVICE_ADDRESS ioctl
>>
>> Patch subject needs updating with new name of this ioctl
>> (KVM_ARM_SET_DEVICE_ADDR)...
>>
>>> 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.
>>
>>> --- 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?
>>
>>> +/* Available with KVM_CAP_SET_DEVICE_ADDR */
>>
>> KVM_CAP_ARM_SET_DEVICE_ADDR.
>>
> right, thanks:
>
> commit 92c7530ddee0d1e1a0b5c3fbd01aa05457812030
> Author: Christoffer Dall <c.dall at virtualopensystems.com>
> 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 <c.dall at virtualopensystems.com>
>
> 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         0
> diff --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, struct
> kvm_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



More information about the linux-arm-kernel mailing list