qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH v3 1/8] target-ppc: Add helper for KVM_PPC_RTAS_DE


From: Alexander Graf
Subject: Re: [Qemu-ppc] [PATCH v3 1/8] target-ppc: Add helper for KVM_PPC_RTAS_DEFINE_TOKEN
Date: Mon, 26 Aug 2013 15:11:03 +0200

On 19.08.2013, at 07:55, Alexey Kardashevskiy wrote:

> From: David Gibson <address@hidden>
> 
> Recent PowerKVM allows the kernel to intercept some RTAS calls from the
> guest directly.  This is used to implement the more efficient in-kernel
> XICS for example.  qemu is still responsible for assigning the RTAS token
> numbers however, and needs to tell the kernel which RTAS function name is
> assigned to a given token value.  This patch adds a convenience wrapper for
> the KVM_PPC_RTAS_DEFINE_TOKEN ioctl() which is used for this purpose.
> 
> Signed-off-by: David Gibson <address@hidden>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> target-ppc/kvm.c     | 14 ++++++++++++++
> target-ppc/kvm_ppc.h |  7 +++++++
> 2 files changed, 21 insertions(+)
> 
> diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
> index eea8c09..ab46aaa 100644
> --- a/target-ppc/kvm.c
> +++ b/target-ppc/kvm.c
> @@ -1792,6 +1792,20 @@ static int kvm_ppc_register_host_cpu_type(void)
>     return 0;
> }
> 
> +int kvmppc_define_rtas_token(uint32_t token, const char *function)

The naming here is slightly confusing. What the ioctl does is define an rtas 
token that gets handled in-kernel. The name of the function should reflect 
this. How about something like kvmppc_define_rtas_in_kernel()?


Alex

> +{
> +    struct kvm_rtas_token_args args = {
> +        .token = token,
> +    };
> +
> +    if (!kvm_check_extension(kvm_state, KVM_CAP_PPC_RTAS)) {
> +        return -ENOENT;
> +    }
> +
> +    strncpy(args.name, function, sizeof(args.name));
> +
> +    return kvm_vm_ioctl(kvm_state, KVM_PPC_RTAS_DEFINE_TOKEN, &args);
> +}
> 
> int kvmppc_get_htab_fd(bool write)
> {
> diff --git a/target-ppc/kvm_ppc.h b/target-ppc/kvm_ppc.h
> index 4ae7bf2..12564ef 100644
> --- a/target-ppc/kvm_ppc.h
> +++ b/target-ppc/kvm_ppc.h
> @@ -38,6 +38,7 @@ uint64_t kvmppc_rma_size(uint64_t current_size, unsigned 
> int hash_shift);
> #endif /* !CONFIG_USER_ONLY */
> int kvmppc_fixup_cpu(PowerPCCPU *cpu);
> bool kvmppc_has_cap_epr(void);
> +int kvmppc_define_rtas_token(uint32_t token, const char *function);
> int kvmppc_get_htab_fd(bool write);
> int kvmppc_save_htab(QEMUFile *f, int fd, size_t bufsize, int64_t max_ns);
> int kvmppc_load_htab_chunk(QEMUFile *f, int fd, uint32_t index,
> @@ -164,6 +165,12 @@ static inline bool kvmppc_has_cap_epr(void)
>     return false;
> }
> 
> +static inline int kvmppc_define_rtas_token(uint32_t token,
> +                                           const char *function)
> +{
> +    return -1;
> +}
> +
> static inline int kvmppc_get_htab_fd(bool write)
> {
>     return -1;
> -- 
> 1.8.3.2
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]