* [PATCH v4 1/4] ARM: KVM: Implement kvm_vcpu_preferred_target() function
2013-09-25 9:25 [PATCH v4 0/4] Target CPU=Host implementation for KVM ARM/ARM64 Anup Patel
@ 2013-09-25 9:26 ` Anup Patel
2013-09-25 9:26 ` [PATCH v4 2/4] ARM64: " Anup Patel
` (2 subsequent siblings)
3 siblings, 0 replies; 12+ messages in thread
From: Anup Patel @ 2013-09-25 9:26 UTC (permalink / raw)
To: linux-arm-kernel
This patch implements kvm_vcpu_preferred_target() function for
KVM ARM which will help us implement KVM_ARM_PREFERRED_TARGET ioctl
for user space.
Signed-off-by: Anup Patel <anup.patel@linaro.org>
Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
---
arch/arm/include/asm/kvm_host.h | 1 +
arch/arm/kvm/guest.c | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 7d22517..76f3c19 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -154,6 +154,7 @@ struct kvm_vcpu_stat {
struct kvm_vcpu_init;
int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
const struct kvm_vcpu_init *init);
+int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init);
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);
int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices);
struct kvm_one_reg;
diff --git a/arch/arm/kvm/guest.c b/arch/arm/kvm/guest.c
index 152d036..21beea0 100644
--- a/arch/arm/kvm/guest.c
+++ b/arch/arm/kvm/guest.c
@@ -222,6 +222,26 @@ int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
return kvm_reset_vcpu(vcpu);
}
+int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init)
+{
+ int target = kvm_target_cpu();
+
+ if (target < 0)
+ return -ENODEV;
+
+ memset(init, 0, sizeof(*init));
+
+ /*
+ * For now, we don't return any features.
+ * In future, we might use features to return target
+ * specific features available for the preferred
+ * target type.
+ */
+ init->target = (__u32)target;
+
+ return 0;
+}
+
int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
{
return -EINVAL;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 2/4] ARM64: KVM: Implement kvm_vcpu_preferred_target() function
2013-09-25 9:25 [PATCH v4 0/4] Target CPU=Host implementation for KVM ARM/ARM64 Anup Patel
2013-09-25 9:26 ` [PATCH v4 1/4] ARM: KVM: Implement kvm_vcpu_preferred_target() function Anup Patel
@ 2013-09-25 9:26 ` Anup Patel
2013-09-25 9:26 ` [PATCH v4 3/4] ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl Anup Patel
2013-09-25 9:26 ` [PATCH v4 4/4] KVM: Add documentation for " Anup Patel
3 siblings, 0 replies; 12+ messages in thread
From: Anup Patel @ 2013-09-25 9:26 UTC (permalink / raw)
To: linux-arm-kernel
This patch implements kvm_vcpu_preferred_target() function for
KVM ARM64 which will help us implement KVM_ARM_PREFERRED_TARGET
ioctl for user space.
Signed-off-by: Anup Patel <anup.patel@linaro.org>
Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
---
arch/arm64/include/asm/kvm_host.h | 1 +
arch/arm64/kvm/guest.c | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index f318c43..b609db3 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -156,6 +156,7 @@ struct kvm_vcpu_stat {
struct kvm_vcpu_init;
int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
const struct kvm_vcpu_init *init);
+int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init);
unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);
int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices);
struct kvm_one_reg;
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
index d7bf7d6..94e4b7a 100644
--- a/arch/arm64/kvm/guest.c
+++ b/arch/arm64/kvm/guest.c
@@ -254,6 +254,26 @@ int kvm_vcpu_set_target(struct kvm_vcpu *vcpu,
return kvm_reset_vcpu(vcpu);
}
+int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init)
+{
+ int target = kvm_target_cpu();
+
+ if (target < 0)
+ return -ENODEV;
+
+ memset(init, 0, sizeof(*init));
+
+ /*
+ * For now, we don't return any features.
+ * In future, we might use features to return target
+ * specific features available for the preferred
+ * target type.
+ */
+ init->target = (__u32)target;
+
+ return 0;
+}
+
int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
{
return -EINVAL;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 3/4] ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 9:25 [PATCH v4 0/4] Target CPU=Host implementation for KVM ARM/ARM64 Anup Patel
2013-09-25 9:26 ` [PATCH v4 1/4] ARM: KVM: Implement kvm_vcpu_preferred_target() function Anup Patel
2013-09-25 9:26 ` [PATCH v4 2/4] ARM64: " Anup Patel
@ 2013-09-25 9:26 ` Anup Patel
2013-09-25 9:26 ` [PATCH v4 4/4] KVM: Add documentation for " Anup Patel
3 siblings, 0 replies; 12+ messages in thread
From: Anup Patel @ 2013-09-25 9:26 UTC (permalink / raw)
To: linux-arm-kernel
For implementing CPU=host, we need a mechanism for querying
preferred VCPU target type on underlying Host.
This patch implements KVM_ARM_PREFERRED_TARGET vm ioctl which
returns struct kvm_vcpu_init instance containing information
about preferred VCPU target type and target specific features
available for it.
Signed-off-by: Anup Patel <anup.patel@linaro.org>
Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
---
arch/arm/kvm/arm.c | 13 +++++++++++++
include/uapi/linux/kvm.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c
index 9c697db..cc5adb9 100644
--- a/arch/arm/kvm/arm.c
+++ b/arch/arm/kvm/arm.c
@@ -797,6 +797,19 @@ long kvm_arch_vm_ioctl(struct file *filp,
return -EFAULT;
return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr);
}
+ case KVM_ARM_PREFERRED_TARGET: {
+ int err;
+ struct kvm_vcpu_init init;
+
+ err = kvm_vcpu_preferred_target(&init);
+ if (err)
+ return err;
+
+ if (copy_to_user(argp, &init, sizeof(init)))
+ return -EFAULT;
+
+ return 0;
+ }
default:
return -EINVAL;
}
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 99c2533..e32e776 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1012,6 +1012,7 @@ struct kvm_s390_ucas_mapping {
/* VM is being stopped by host */
#define KVM_KVMCLOCK_CTRL _IO(KVMIO, 0xad)
#define KVM_ARM_VCPU_INIT _IOW(KVMIO, 0xae, struct kvm_vcpu_init)
+#define KVM_ARM_PREFERRED_TARGET _IOR(KVMIO, 0xaf, struct kvm_vcpu_init)
#define KVM_GET_REG_LIST _IOWR(KVMIO, 0xb0, struct kvm_reg_list)
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 9:25 [PATCH v4 0/4] Target CPU=Host implementation for KVM ARM/ARM64 Anup Patel
` (2 preceding siblings ...)
2013-09-25 9:26 ` [PATCH v4 3/4] ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl Anup Patel
@ 2013-09-25 9:26 ` Anup Patel
2013-09-25 12:13 ` Alexander Graf
2013-09-25 20:10 ` Christoffer Dall
3 siblings, 2 replies; 12+ messages in thread
From: Anup Patel @ 2013-09-25 9:26 UTC (permalink / raw)
To: linux-arm-kernel
To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
vm ioctl which provides information to user space required for
creating VCPU matching underlying Host.
This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
vm ioctl in the KVM API documentation.
Signed-off-by: Anup Patel <anup.patel@linaro.org>
Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
---
Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index 858aecf..f31e6e8 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -2303,8 +2303,28 @@ Possible features:
- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
+4.83 KVM_ARM_PREFERRED_TARGET
-4.83 KVM_GET_REG_LIST
+Capability: basic
+Architectures: arm, arm64
+Type: vm ioctl
+Parameters: struct struct kvm_vcpu_init (out)
+Returns: 0 on success; -1 on error
+Errors:
+ ?ENODEV: ???no preferred target available for the host
+
+This queries KVM for preferred CPU target type which can be emulated
+by KVM on underlying host.
+
+The ioctl returns struct kvm_vcpu_init instance containing information
+about preferred CPU target type and target specific features available
+for it.
+
+The information returned by this ioctl can be used to prepare instance
+of struct kvm_vcpu_init for KVM_ARM_VCPU_INIT ioctl which will result
+in VCPU matching underlying host.
+
+4.84 KVM_GET_REG_LIST
Capability: basic
Architectures: arm, arm64
@@ -2323,8 +2343,7 @@ struct kvm_reg_list {
This ioctl returns the guest registers that are supported for the
KVM_GET_ONE_REG/KVM_SET_ONE_REG calls.
-
-4.84 KVM_ARM_SET_DEVICE_ADDR
+4.85 KVM_ARM_SET_DEVICE_ADDR
Capability: KVM_CAP_ARM_SET_DEVICE_ADDR
Architectures: arm, arm64
@@ -2362,7 +2381,7 @@ must be called after calling KVM_CREATE_IRQCHIP, but before calling
KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the
base addresses will return -EEXIST.
-4.85 KVM_PPC_RTAS_DEFINE_TOKEN
+4.86 KVM_PPC_RTAS_DEFINE_TOKEN
Capability: KVM_CAP_PPC_RTAS
Architectures: ppc
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 9:26 ` [PATCH v4 4/4] KVM: Add documentation for " Anup Patel
@ 2013-09-25 12:13 ` Alexander Graf
2013-09-25 12:28 ` Anup Patel
2013-09-25 20:10 ` Christoffer Dall
1 sibling, 1 reply; 12+ messages in thread
From: Alexander Graf @ 2013-09-25 12:13 UTC (permalink / raw)
To: linux-arm-kernel
On 25.09.2013, at 11:26, Anup Patel wrote:
> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
> vm ioctl which provides information to user space required for
> creating VCPU matching underlying Host.
>
> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
> vm ioctl in the KVM API documentation.
>
> Signed-off-by: Anup Patel <anup.patel@linaro.org>
> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
> ---
> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
> index 858aecf..f31e6e8 100644
> --- a/Documentation/virtual/kvm/api.txt
> +++ b/Documentation/virtual/kvm/api.txt
> @@ -2303,8 +2303,28 @@ Possible features:
> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>
> +4.83 KVM_ARM_PREFERRED_TARGET
Why 4.83 and not 4.86? It feels backwards to rename all these other sections.
Alex
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 12:13 ` Alexander Graf
@ 2013-09-25 12:28 ` Anup Patel
2013-09-25 16:19 ` Christoffer Dall
0 siblings, 1 reply; 12+ messages in thread
From: Anup Patel @ 2013-09-25 12:28 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Sep 25, 2013 at 5:43 PM, Alexander Graf <agraf@suse.de> wrote:
>
> On 25.09.2013, at 11:26, Anup Patel wrote:
>
>> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
>> vm ioctl which provides information to user space required for
>> creating VCPU matching underlying Host.
>>
>> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
>> vm ioctl in the KVM API documentation.
>>
>> Signed-off-by: Anup Patel <anup.patel@linaro.org>
>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
>> ---
>> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
>> 1 file changed, 23 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>> index 858aecf..f31e6e8 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -2303,8 +2303,28 @@ Possible features:
>> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>>
>> +4.83 KVM_ARM_PREFERRED_TARGET
>
> Why 4.83 and not 4.86? It feels backwards to rename all these other sections.
I wanted to have KVM_ARM_xxxx IOCTLs located nearby hence
placed KVM_ARM_PREFERRED_TARGET after KVM_ARM_VCPU_INIT.
There is no point in keeping KVM_ARM_PREFERRED_TARGET
after KVM_PPC_RTAS_DEFINE_TOKEN and make
KVM_PPC_RTAS_DEFINE_TOKEN dangle in-between documentation
of various KVM_ARM_xxxx IOCTLs.
>
>
> Alex
>
>
> _______________________________________________
> kvmarm mailing list
> kvmarm at lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
--Anup
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 12:28 ` Anup Patel
@ 2013-09-25 16:19 ` Christoffer Dall
2013-09-25 22:26 ` Alexander Graf
0 siblings, 1 reply; 12+ messages in thread
From: Christoffer Dall @ 2013-09-25 16:19 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Sep 25, 2013 at 05:58:07PM +0530, Anup Patel wrote:
> On Wed, Sep 25, 2013 at 5:43 PM, Alexander Graf <agraf@suse.de> wrote:
> >
> > On 25.09.2013, at 11:26, Anup Patel wrote:
> >
> >> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
> >> vm ioctl which provides information to user space required for
> >> creating VCPU matching underlying Host.
> >>
> >> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
> >> vm ioctl in the KVM API documentation.
> >>
> >> Signed-off-by: Anup Patel <anup.patel@linaro.org>
> >> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
> >> ---
> >> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
> >> 1 file changed, 23 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
> >> index 858aecf..f31e6e8 100644
> >> --- a/Documentation/virtual/kvm/api.txt
> >> +++ b/Documentation/virtual/kvm/api.txt
> >> @@ -2303,8 +2303,28 @@ Possible features:
> >> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
> >> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
> >>
> >> +4.83 KVM_ARM_PREFERRED_TARGET
> >
> > Why 4.83 and not 4.86? It feels backwards to rename all these other sections.
>
> I wanted to have KVM_ARM_xxxx IOCTLs located nearby hence
> placed KVM_ARM_PREFERRED_TARGET after KVM_ARM_VCPU_INIT.
>
> There is no point in keeping KVM_ARM_PREFERRED_TARGET
> after KVM_PPC_RTAS_DEFINE_TOKEN and make
> KVM_PPC_RTAS_DEFINE_TOKEN dangle in-between documentation
> of various KVM_ARM_xxxx IOCTLs.
>
I checked the git log and this is not the first time this has happened,
so I think Anup's point here is valid.
-Christoffer
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 16:19 ` Christoffer Dall
@ 2013-09-25 22:26 ` Alexander Graf
2013-09-30 9:06 ` Alexander Graf
0 siblings, 1 reply; 12+ messages in thread
From: Alexander Graf @ 2013-09-25 22:26 UTC (permalink / raw)
To: linux-arm-kernel
On 25.09.2013, at 18:19, Christoffer Dall wrote:
> On Wed, Sep 25, 2013 at 05:58:07PM +0530, Anup Patel wrote:
>> On Wed, Sep 25, 2013 at 5:43 PM, Alexander Graf <agraf@suse.de> wrote:
>>>
>>> On 25.09.2013, at 11:26, Anup Patel wrote:
>>>
>>>> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
>>>> vm ioctl which provides information to user space required for
>>>> creating VCPU matching underlying Host.
>>>>
>>>> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
>>>> vm ioctl in the KVM API documentation.
>>>>
>>>> Signed-off-by: Anup Patel <anup.patel@linaro.org>
>>>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
>>>> ---
>>>> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
>>>> 1 file changed, 23 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>>>> index 858aecf..f31e6e8 100644
>>>> --- a/Documentation/virtual/kvm/api.txt
>>>> +++ b/Documentation/virtual/kvm/api.txt
>>>> @@ -2303,8 +2303,28 @@ Possible features:
>>>> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>>>> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>>>>
>>>> +4.83 KVM_ARM_PREFERRED_TARGET
>>>
>>> Why 4.83 and not 4.86? It feels backwards to rename all these other sections.
>>
>> I wanted to have KVM_ARM_xxxx IOCTLs located nearby hence
>> placed KVM_ARM_PREFERRED_TARGET after KVM_ARM_VCPU_INIT.
>>
>> There is no point in keeping KVM_ARM_PREFERRED_TARGET
>> after KVM_PPC_RTAS_DEFINE_TOKEN and make
>> KVM_PPC_RTAS_DEFINE_TOKEN dangle in-between documentation
>> of various KVM_ARM_xxxx IOCTLs.
>>
> I checked the git log and this is not the first time this has happened,
> so I think Anup's point here is valid.
Well, I think it makes sense to be consistent here. Maybe we should add a new section for arch specific ioctls so that we get our own number space? But regardless, all subarchs should try and follow the same scheme - regardless of what the scheme is :).
Alex
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 22:26 ` Alexander Graf
@ 2013-09-30 9:06 ` Alexander Graf
0 siblings, 0 replies; 12+ messages in thread
From: Alexander Graf @ 2013-09-30 9:06 UTC (permalink / raw)
To: linux-arm-kernel
On 26.09.2013, at 00:26, Alexander Graf wrote:
>
> On 25.09.2013, at 18:19, Christoffer Dall wrote:
>
>> On Wed, Sep 25, 2013 at 05:58:07PM +0530, Anup Patel wrote:
>>> On Wed, Sep 25, 2013 at 5:43 PM, Alexander Graf <agraf@suse.de> wrote:
>>>>
>>>> On 25.09.2013, at 11:26, Anup Patel wrote:
>>>>
>>>>> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
>>>>> vm ioctl which provides information to user space required for
>>>>> creating VCPU matching underlying Host.
>>>>>
>>>>> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
>>>>> vm ioctl in the KVM API documentation.
>>>>>
>>>>> Signed-off-by: Anup Patel <anup.patel@linaro.org>
>>>>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
>>>>> ---
>>>>> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
>>>>> 1 file changed, 23 insertions(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>>>>> index 858aecf..f31e6e8 100644
>>>>> --- a/Documentation/virtual/kvm/api.txt
>>>>> +++ b/Documentation/virtual/kvm/api.txt
>>>>> @@ -2303,8 +2303,28 @@ Possible features:
>>>>> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>>>>> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>>>>>
>>>>> +4.83 KVM_ARM_PREFERRED_TARGET
>>>>
>>>> Why 4.83 and not 4.86? It feels backwards to rename all these other sections.
>>>
>>> I wanted to have KVM_ARM_xxxx IOCTLs located nearby hence
>>> placed KVM_ARM_PREFERRED_TARGET after KVM_ARM_VCPU_INIT.
>>>
>>> There is no point in keeping KVM_ARM_PREFERRED_TARGET
>>> after KVM_PPC_RTAS_DEFINE_TOKEN and make
>>> KVM_PPC_RTAS_DEFINE_TOKEN dangle in-between documentation
>>> of various KVM_ARM_xxxx IOCTLs.
>>>
>> I checked the git log and this is not the first time this has happened,
>> so I think Anup's point here is valid.
>
> Well, I think it makes sense to be consistent here. Maybe we should add a new section for arch specific ioctls so that we get our own number space? But regardless, all subarchs should try and follow the same scheme - regardless of what the scheme is :).
Ok, I think I finally grasped what Anup was trying to say. The ioctl id for this one is 0xaf, in between 0xae (KVM_ARM_VCPU_INIT) and 0xb0 (KVM_GET_REG_LIST), so he wanted to make the documentation follow the ioctl numbering scheme. That makes sense.
However, why do we have this gap there in the first place?
Alex
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 9:26 ` [PATCH v4 4/4] KVM: Add documentation for " Anup Patel
2013-09-25 12:13 ` Alexander Graf
@ 2013-09-25 20:10 ` Christoffer Dall
2013-09-30 4:13 ` Anup Patel
1 sibling, 1 reply; 12+ messages in thread
From: Christoffer Dall @ 2013-09-25 20:10 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Sep 25, 2013 at 02:56:03PM +0530, Anup Patel wrote:
> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
> vm ioctl which provides information to user space required for
> creating VCPU matching underlying Host.
>
> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
> vm ioctl in the KVM API documentation.
>
> Signed-off-by: Anup Patel <anup.patel@linaro.org>
> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
> ---
> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
> index 858aecf..f31e6e8 100644
> --- a/Documentation/virtual/kvm/api.txt
> +++ b/Documentation/virtual/kvm/api.txt
> @@ -2303,8 +2303,28 @@ Possible features:
> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>
> +4.83 KVM_ARM_PREFERRED_TARGET
>
> -4.83 KVM_GET_REG_LIST
I think the convention here is to keep two new lines after a Section.
> +Capability: basic
> +Architectures: arm, arm64
> +Type: vm ioctl
> +Parameters: struct struct kvm_vcpu_init (out)
> +Returns: 0 on success; -1 on error
> +Errors:
> + ?ENODEV: ???no preferred target available for the host
> +
> +This queries KVM for preferred CPU target type which can be emulated
> +by KVM on underlying host.
> +
> +The ioctl returns struct kvm_vcpu_init instance containing information
> +about preferred CPU target type and target specific features available
> +for it.
> +
> +The information returned by this ioctl can be used to prepare instance
an instance
> +of struct kvm_vcpu_init for KVM_ARM_VCPU_INIT ioctl which will result
the KVM_ARM_VCPU_INIT ioctl.
(the last part is not necessarily true is it? It's only a best bet,
think for example about Big.Little...)
> +in VCPU matching underlying host.
You also need to add something about the features here:
The kvm_vcpu_init->features bitmap will have feature bits set if the
preferred target recommends setting these features, but this is not
required.
> +
> +4.84 KVM_GET_REG_LIST
>
> Capability: basic
> Architectures: arm, arm64
> @@ -2323,8 +2343,7 @@ struct kvm_reg_list {
> This ioctl returns the guest registers that are supported for the
> KVM_GET_ONE_REG/KVM_SET_ONE_REG calls.
>
> -
> -4.84 KVM_ARM_SET_DEVICE_ADDR
> +4.85 KVM_ARM_SET_DEVICE_ADDR
>
> Capability: KVM_CAP_ARM_SET_DEVICE_ADDR
> Architectures: arm, arm64
> @@ -2362,7 +2381,7 @@ must be called after calling KVM_CREATE_IRQCHIP, but before calling
> KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the
> base addresses will return -EEXIST.
>
> -4.85 KVM_PPC_RTAS_DEFINE_TOKEN
> +4.86 KVM_PPC_RTAS_DEFINE_TOKEN
>
> Capability: KVM_CAP_PPC_RTAS
> Architectures: ppc
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/4] KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
2013-09-25 20:10 ` Christoffer Dall
@ 2013-09-30 4:13 ` Anup Patel
0 siblings, 0 replies; 12+ messages in thread
From: Anup Patel @ 2013-09-30 4:13 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Sep 26, 2013 at 1:40 AM, Christoffer Dall
<christoffer.dall@linaro.org> wrote:
> On Wed, Sep 25, 2013 at 02:56:03PM +0530, Anup Patel wrote:
>> To implement CPU=Host we have added KVM_ARM_PREFERRED_TARGET
>> vm ioctl which provides information to user space required for
>> creating VCPU matching underlying Host.
>>
>> This patch adds info related to this new KVM_ARM_PREFERRED_TARGET
>> vm ioctl in the KVM API documentation.
>>
>> Signed-off-by: Anup Patel <anup.patel@linaro.org>
>> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org>
>> ---
>> Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++----
>> 1 file changed, 23 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
>> index 858aecf..f31e6e8 100644
>> --- a/Documentation/virtual/kvm/api.txt
>> +++ b/Documentation/virtual/kvm/api.txt
>> @@ -2303,8 +2303,28 @@ Possible features:
>> - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
>> Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
>>
>> +4.83 KVM_ARM_PREFERRED_TARGET
>>
>> -4.83 KVM_GET_REG_LIST
>
> I think the convention here is to keep two new lines after a Section.
Well this is not be consistenly followed by everyone.
Please look at the api.txt again.
Anyways, I will change and keep two new lines after a Section.
>
>> +Capability: basic
>> +Architectures: arm, arm64
>> +Type: vm ioctl
>> +Parameters: struct struct kvm_vcpu_init (out)
>> +Returns: 0 on success; -1 on error
>> +Errors:
>> + ENODEV: no preferred target available for the host
>> +
>> +This queries KVM for preferred CPU target type which can be emulated
>> +by KVM on underlying host.
>> +
>> +The ioctl returns struct kvm_vcpu_init instance containing information
>> +about preferred CPU target type and target specific features available
>> +for it.
>> +
>> +The information returned by this ioctl can be used to prepare instance
>
> an instance
Ok.
>
>> +of struct kvm_vcpu_init for KVM_ARM_VCPU_INIT ioctl which will result
>
> the KVM_ARM_VCPU_INIT ioctl.
> (the last part is not necessarily true is it? It's only a best bet,
> think for example about Big.Little...)
>
>> +in VCPU matching underlying host.
>
> You also need to add something about the features here:
>
> The kvm_vcpu_init->features bitmap will have feature bits set if the
> preferred target recommends setting these features, but this is not
> required.
Ok.
>
>> +
>> +4.84 KVM_GET_REG_LIST
>>
>> Capability: basic
>> Architectures: arm, arm64
>> @@ -2323,8 +2343,7 @@ struct kvm_reg_list {
>> This ioctl returns the guest registers that are supported for the
>> KVM_GET_ONE_REG/KVM_SET_ONE_REG calls.
>>
>> -
>> -4.84 KVM_ARM_SET_DEVICE_ADDR
>> +4.85 KVM_ARM_SET_DEVICE_ADDR
>>
>> Capability: KVM_CAP_ARM_SET_DEVICE_ADDR
>> Architectures: arm, arm64
>> @@ -2362,7 +2381,7 @@ must be called after calling KVM_CREATE_IRQCHIP, but before calling
>> KVM_RUN on any of the VCPUs. Calling this ioctl twice for any of the
>> base addresses will return -EEXIST.
>>
>> -4.85 KVM_PPC_RTAS_DEFINE_TOKEN
>> +4.86 KVM_PPC_RTAS_DEFINE_TOKEN
>>
>> Capability: KVM_CAP_PPC_RTAS
>> Architectures: ppc
>> --
>> 1.7.9.5
>>
> _______________________________________________
> kvmarm mailing list
> kvmarm at lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
--Anup
^ permalink raw reply [flat|nested] 12+ messages in thread