mirror of https://github.com/xemu-project/xemu.git
kvm: use configs/ definition to conditionalize debug support
If an architecture adds support for KVM_CAP_SET_GUEST_DEBUG but QEMU does not have the necessary code, QEMU will fail to build after updating kernel headers. Avoid this by using a #define in config-target.h instead of KVM_CAP_SET_GUEST_DEBUG. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
f89761d349
commit
1e1e48792a
|
@ -85,7 +85,7 @@ static bool kvm_cpus_are_resettable(void)
|
|||
return !kvm_enabled() || kvm_cpu_check_are_resettable();
|
||||
}
|
||||
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
static int kvm_update_guest_debug_ops(CPUState *cpu)
|
||||
{
|
||||
return kvm_update_guest_debug(cpu, 0);
|
||||
|
@ -104,7 +104,7 @@ static void kvm_accel_ops_class_init(ObjectClass *oc, void *data)
|
|||
ops->synchronize_state = kvm_cpu_synchronize_state;
|
||||
ops->synchronize_pre_loadvm = kvm_cpu_synchronize_pre_loadvm;
|
||||
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
ops->update_guest_debug = kvm_update_guest_debug_ops;
|
||||
ops->supports_guest_debug = kvm_supports_guest_debug;
|
||||
ops->insert_breakpoint = kvm_insert_breakpoint;
|
||||
|
|
|
@ -2360,7 +2360,7 @@ static int kvm_init(MachineState *ms)
|
|||
s->sigmask_len = 8;
|
||||
accel_blocker_init();
|
||||
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
QTAILQ_INIT(&s->kvm_sw_breakpoints);
|
||||
#endif
|
||||
QLIST_INIT(&s->kvm_parked_vcpus);
|
||||
|
@ -2544,7 +2544,7 @@ static int kvm_init(MachineState *ms)
|
|||
kvm_vm_attributes_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_VM_ATTRIBUTES) > 0);
|
||||
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
kvm_has_guest_debug =
|
||||
(kvm_check_extension(s, KVM_CAP_SET_GUEST_DEBUG) > 0);
|
||||
#endif
|
||||
|
@ -2553,7 +2553,7 @@ static int kvm_init(MachineState *ms)
|
|||
if (kvm_has_guest_debug) {
|
||||
kvm_sstep_flags = SSTEP_ENABLE;
|
||||
|
||||
#if defined KVM_CAP_SET_GUEST_DEBUG2
|
||||
#if defined TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
int guest_debug_flags =
|
||||
kvm_check_extension(s, KVM_CAP_SET_GUEST_DEBUG2);
|
||||
|
||||
|
@ -3157,7 +3157,7 @@ bool kvm_arm_supports_user_irq(void)
|
|||
return kvm_check_extension(kvm_state, KVM_CAP_ARM_USER_IRQ);
|
||||
}
|
||||
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
struct kvm_sw_breakpoint *kvm_find_sw_breakpoint(CPUState *cpu, vaddr pc)
|
||||
{
|
||||
struct kvm_sw_breakpoint *bp;
|
||||
|
@ -3317,7 +3317,7 @@ void kvm_remove_all_breakpoints(CPUState *cpu)
|
|||
}
|
||||
}
|
||||
|
||||
#endif /* !KVM_CAP_SET_GUEST_DEBUG */
|
||||
#endif /* !TARGET_KVM_HAVE_GUEST_DEBUG */
|
||||
|
||||
static int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
TARGET_ARCH=aarch64
|
||||
TARGET_BASE_ARCH=arm
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/aarch64-core.xml gdb-xml/aarch64-fpu.xml gdb-xml/arm-core.xml gdb-xml/arm-vfp.xml gdb-xml/arm-vfp3.xml gdb-xml/arm-vfp-sysregs.xml gdb-xml/arm-neon.xml gdb-xml/arm-m-profile.xml gdb-xml/arm-m-profile-mve.xml gdb-xml/aarch64-pauth.xml
|
||||
TARGET_NEED_FDT=y
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
TARGET_ARCH=i386
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_NEED_FDT=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/i386-32bit.xml
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
TARGET_ARCH=ppc
|
||||
TARGET_BIG_ENDIAN=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/power-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml
|
||||
TARGET_NEED_FDT=y
|
||||
|
|
|
@ -2,5 +2,6 @@ TARGET_ARCH=ppc64
|
|||
TARGET_BASE_ARCH=ppc
|
||||
TARGET_BIG_ENDIAN=y
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/power64-core.xml gdb-xml/power-fpu.xml gdb-xml/power-altivec.xml gdb-xml/power-spe.xml gdb-xml/power-vsx.xml
|
||||
TARGET_NEED_FDT=y
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
TARGET_ARCH=s390x
|
||||
TARGET_BIG_ENDIAN=y
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/s390x-core64.xml gdb-xml/s390-acr.xml gdb-xml/s390-fpr.xml gdb-xml/s390-vx.xml gdb-xml/s390-cr.xml gdb-xml/s390-virt.xml gdb-xml/s390-virt-kvm.xml gdb-xml/s390-gs.xml
|
||||
|
|
|
@ -2,4 +2,5 @@ TARGET_ARCH=x86_64
|
|||
TARGET_BASE_ARCH=i386
|
||||
TARGET_SUPPORTS_MTTCG=y
|
||||
TARGET_NEED_FDT=y
|
||||
TARGET_KVM_HAVE_GUEST_DEBUG=y
|
||||
TARGET_XML_FILES= gdb-xml/i386-64bit.xml
|
||||
|
|
|
@ -224,7 +224,7 @@ void kvm_flush_coalesced_mmio_buffer(void);
|
|||
* calling down to kvm_arch_update_guest_debug after the generic
|
||||
* fields have been set.
|
||||
*/
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap);
|
||||
#else
|
||||
static inline int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
|
||||
|
|
|
@ -78,7 +78,7 @@ struct KVMState
|
|||
struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
|
||||
bool coalesced_flush_in_progress;
|
||||
int vcpu_events;
|
||||
#ifdef KVM_CAP_SET_GUEST_DEBUG
|
||||
#ifdef TARGET_KVM_HAVE_GUEST_DEBUG
|
||||
QTAILQ_HEAD(, kvm_sw_breakpoint) kvm_sw_breakpoints;
|
||||
#endif
|
||||
int max_nested_state_len;
|
||||
|
|
Loading…
Reference in New Issue