It will be very useful for user space (QEMU/KVMTOOL) if it has a method of querying VCPU target type matching to underlying Host. We can use such querying mechanism and implement machine models in user space where VCPU target type is always same-as/similar-to underlying Host (i.e. Target CPU=Host).
This patch series implements KVM_ARM_PREFERRED_TARGET vm ioclt for querying VCPU target type matching underlying host. Using this new ioctl we can implement VCPU target CPU=Host in user space.
Also, it is not mandatory to call KVM_ARM_PREFERRED_TARGET vm ioctl and the old method of trying all possible target types using the KVM_ARM_VCPU_INIT ioctl to initialize VCPU works fine.
V4: - Fixed files exchanged between patches - For now return zeroed features in struct kvm_vcpu_init instance
V3: - Return -ENODEV if no preferred target available for host - Make KVM_ARM_PREFERRED_TARGET ioctl as vm ioctl
V2: - Renamed the ioclt to KVM_ARM_PREFERRED_TARGET - Return struct kvm_vcpu_init instace instead of just target type
V1: - Initial patch-set with ioctl named as KVM_ARM_SUITABLE_TARGET
Anup Patel (4): ARM: KVM: Implement kvm_vcpu_preferred_target() function ARM64: KVM: Implement kvm_vcpu_preferred_target() function ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl KVM: Add documentation for KVM_ARM_PREFERRED_TARGET ioctl
Documentation/virtual/kvm/api.txt | 27 +++++++++++++++++++++++---- arch/arm/include/asm/kvm_host.h | 1 + arch/arm/kvm/arm.c | 13 +++++++++++++ arch/arm/kvm/guest.c | 20 ++++++++++++++++++++ arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/guest.c | 20 ++++++++++++++++++++ include/uapi/linux/kvm.h | 1 + 7 files changed, 79 insertions(+), 4 deletions(-)
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;
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;
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)
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
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
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@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
--Anup
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
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
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
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
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@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
--Anup
linaro-kernel@lists.linaro.org