mirror of
https://github.com/qemu/qemu.git
synced 2025-07-31 17:56:52 +00:00
target/ppc: Restrict PPCVirtualHypervisorClass to system-mode
The code related to PPC Virtual Hypervisor is pointless in user-mode. Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20200526172427.17460-5-f4bug@amsat.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
f291cf5414
commit
e89aac1acd
@ -1202,6 +1202,7 @@ PowerPCCPUClass *ppc_cpu_class_by_pvr(uint32_t pvr);
|
|||||||
PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr);
|
PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr);
|
||||||
PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc);
|
PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc);
|
||||||
|
|
||||||
|
#ifndef CONFIG_USER_ONLY
|
||||||
struct PPCVirtualHypervisorClass {
|
struct PPCVirtualHypervisorClass {
|
||||||
InterfaceClass parent;
|
InterfaceClass parent;
|
||||||
void (*hypercall)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
void (*hypercall)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
||||||
@ -1215,10 +1216,8 @@ struct PPCVirtualHypervisorClass {
|
|||||||
void (*hpte_set_r)(PPCVirtualHypervisor *vhyp, hwaddr ptex, uint64_t pte1);
|
void (*hpte_set_r)(PPCVirtualHypervisor *vhyp, hwaddr ptex, uint64_t pte1);
|
||||||
void (*get_pate)(PPCVirtualHypervisor *vhyp, ppc_v3_pate_t *entry);
|
void (*get_pate)(PPCVirtualHypervisor *vhyp, ppc_v3_pate_t *entry);
|
||||||
target_ulong (*encode_hpt_for_kvm_pr)(PPCVirtualHypervisor *vhyp);
|
target_ulong (*encode_hpt_for_kvm_pr)(PPCVirtualHypervisor *vhyp);
|
||||||
#ifndef CONFIG_USER_ONLY
|
|
||||||
void (*cpu_exec_enter)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
void (*cpu_exec_enter)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
||||||
void (*cpu_exec_exit)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
void (*cpu_exec_exit)(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu);
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TYPE_PPC_VIRTUAL_HYPERVISOR "ppc-virtual-hypervisor"
|
#define TYPE_PPC_VIRTUAL_HYPERVISOR "ppc-virtual-hypervisor"
|
||||||
@ -1230,6 +1229,7 @@ struct PPCVirtualHypervisorClass {
|
|||||||
#define PPC_VIRTUAL_HYPERVISOR_GET_CLASS(obj) \
|
#define PPC_VIRTUAL_HYPERVISOR_GET_CLASS(obj) \
|
||||||
OBJECT_GET_CLASS(PPCVirtualHypervisorClass, (obj), \
|
OBJECT_GET_CLASS(PPCVirtualHypervisorClass, (obj), \
|
||||||
TYPE_PPC_VIRTUAL_HYPERVISOR)
|
TYPE_PPC_VIRTUAL_HYPERVISOR)
|
||||||
|
#endif /* CONFIG_USER_ONLY */
|
||||||
|
|
||||||
void ppc_cpu_do_interrupt(CPUState *cpu);
|
void ppc_cpu_do_interrupt(CPUState *cpu);
|
||||||
bool ppc_cpu_exec_interrupt(CPUState *cpu, int int_req);
|
bool ppc_cpu_exec_interrupt(CPUState *cpu, int int_req);
|
||||||
|
@ -280,6 +280,17 @@ static inline bool kvmppc_has_cap_spapr_vfio(void)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void kvmppc_read_hptes(ppc_hash_pte64_t *hptes,
|
||||||
|
hwaddr ptex, int n)
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void kvmppc_write_hpte(hwaddr ptex, uint64_t pte0, uint64_t pte1)
|
||||||
|
{
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* !CONFIG_USER_ONLY */
|
#endif /* !CONFIG_USER_ONLY */
|
||||||
|
|
||||||
static inline bool kvmppc_has_cap_epr(void)
|
static inline bool kvmppc_has_cap_epr(void)
|
||||||
@ -310,17 +321,6 @@ static inline int kvmppc_load_htab_chunk(QEMUFile *f, int fd, uint32_t index,
|
|||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void kvmppc_read_hptes(ppc_hash_pte64_t *hptes,
|
|
||||||
hwaddr ptex, int n)
|
|
||||||
{
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void kvmppc_write_hpte(hwaddr ptex, uint64_t pte0, uint64_t pte1)
|
|
||||||
{
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool kvmppc_has_cap_fixup_hcalls(void)
|
static inline bool kvmppc_has_cap_fixup_hcalls(void)
|
||||||
{
|
{
|
||||||
abort();
|
abort();
|
||||||
|
@ -10942,16 +10942,20 @@ static const TypeInfo ppc_cpu_type_info = {
|
|||||||
.class_init = ppc_cpu_class_init,
|
.class_init = ppc_cpu_class_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef CONFIG_USER_ONLY
|
||||||
static const TypeInfo ppc_vhyp_type_info = {
|
static const TypeInfo ppc_vhyp_type_info = {
|
||||||
.name = TYPE_PPC_VIRTUAL_HYPERVISOR,
|
.name = TYPE_PPC_VIRTUAL_HYPERVISOR,
|
||||||
.parent = TYPE_INTERFACE,
|
.parent = TYPE_INTERFACE,
|
||||||
.class_size = sizeof(PPCVirtualHypervisorClass),
|
.class_size = sizeof(PPCVirtualHypervisorClass),
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static void ppc_cpu_register_types(void)
|
static void ppc_cpu_register_types(void)
|
||||||
{
|
{
|
||||||
type_register_static(&ppc_cpu_type_info);
|
type_register_static(&ppc_cpu_type_info);
|
||||||
|
#ifndef CONFIG_USER_ONLY
|
||||||
type_register_static(&ppc_vhyp_type_info);
|
type_register_static(&ppc_vhyp_type_info);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(ppc_cpu_register_types)
|
type_init(ppc_cpu_register_types)
|
||||||
|
Loading…
Reference in New Issue
Block a user