summaryrefslogtreecommitdiffstats
path: root/target-ppc/kvm.c
diff options
context:
space:
mode:
authorDavid Gibson2013-09-26 08:18:35 +0200
committerAlexander Graf2013-10-25 23:25:46 +0200
commitfeaa64c41f56b1b3111c31f652999799b28b9e12 (patch)
tree7ebf42fa2a3648498e768c97067b4b7bdc87f726 /target-ppc/kvm.c
parentspapr-rtas: fix h_rtas parameters reading (diff)
downloadqemu-feaa64c41f56b1b3111c31f652999799b28b9e12.tar.gz
qemu-feaa64c41f56b1b3111c31f652999799b28b9e12.tar.xz
qemu-feaa64c41f56b1b3111c31f652999799b28b9e12.zip
target-ppc: Add helper for KVM_PPC_RTAS_DEFINE_TOKEN
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 <david@gibson.dropbear.id.au> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-ppc/kvm.c')
-rw-r--r--target-ppc/kvm.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 8a196c6cc1..0b5d391403 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -1789,6 +1789,20 @@ static int kvm_ppc_register_host_cpu_type(void)
return 0;
}
+int kvmppc_define_rtas_kernel_token(uint32_t token, const char *function)
+{
+ 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)
{