KVM: PPC: Expose fixup hcall capability
New kvm versions expose a PPC_FIXUP_HCALL capability. Make it visible to machine code so we can take decisions based on it. Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
b061808d39
commit
87a91de61a
|
@ -69,6 +69,7 @@ static int cap_epr;
|
||||||
static int cap_ppc_watchdog;
|
static int cap_ppc_watchdog;
|
||||||
static int cap_papr;
|
static int cap_papr;
|
||||||
static int cap_htab_fd;
|
static int cap_htab_fd;
|
||||||
|
static int cap_fixup_hcalls;
|
||||||
|
|
||||||
/* XXX We have a race condition where we actually have a level triggered
|
/* XXX We have a race condition where we actually have a level triggered
|
||||||
* interrupt, but the infrastructure can't expose that yet, so the guest
|
* interrupt, but the infrastructure can't expose that yet, so the guest
|
||||||
|
@ -107,6 +108,7 @@ int kvm_arch_init(KVMState *s)
|
||||||
/* Note: we don't set cap_papr here, because this capability is
|
/* Note: we don't set cap_papr here, because this capability is
|
||||||
* only activated after this by kvmppc_set_papr() */
|
* only activated after this by kvmppc_set_papr() */
|
||||||
cap_htab_fd = kvm_check_extension(s, KVM_CAP_PPC_HTAB_FD);
|
cap_htab_fd = kvm_check_extension(s, KVM_CAP_PPC_HTAB_FD);
|
||||||
|
cap_fixup_hcalls = kvm_check_extension(s, KVM_CAP_PPC_FIXUP_HCALL);
|
||||||
|
|
||||||
if (!cap_interrupt_level) {
|
if (!cap_interrupt_level) {
|
||||||
fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
|
fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
|
||||||
|
@ -1780,6 +1782,11 @@ bool kvmppc_has_cap_htab_fd(void)
|
||||||
return cap_htab_fd;
|
return cap_htab_fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool kvmppc_has_cap_fixup_hcalls(void)
|
||||||
|
{
|
||||||
|
return cap_fixup_hcalls;
|
||||||
|
}
|
||||||
|
|
||||||
static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
|
static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
|
||||||
{
|
{
|
||||||
ObjectClass *oc = OBJECT_CLASS(pcc);
|
ObjectClass *oc = OBJECT_CLASS(pcc);
|
||||||
|
|
|
@ -50,6 +50,7 @@ void kvmppc_hash64_free_pteg(uint64_t token);
|
||||||
|
|
||||||
void kvmppc_hash64_write_pte(CPUPPCState *env, target_ulong pte_index,
|
void kvmppc_hash64_write_pte(CPUPPCState *env, target_ulong pte_index,
|
||||||
target_ulong pte0, target_ulong pte1);
|
target_ulong pte0, target_ulong pte1);
|
||||||
|
bool kvmppc_has_cap_fixup_hcalls(void);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -223,6 +224,11 @@ static inline void kvmppc_hash64_write_pte(CPUPPCState *env,
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool kvmppc_has_cap_fixup_hcalls(void)
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_KVM
|
#ifndef CONFIG_KVM
|
||||||
|
|
Loading…
Reference in a new issue