Revision a1b87fe0

b/cpus.c
539 539
static void sigbus_handler(int n, struct qemu_signalfd_siginfo *siginfo,
540 540
                           void *ctx)
541 541
{
542
#if defined(TARGET_I386)
543
    if (kvm_on_sigbus(siginfo->ssi_code, (void *)(intptr_t)siginfo->ssi_addr))
544
#endif
542
    if (kvm_on_sigbus(siginfo->ssi_code, (void *)(intptr_t)siginfo->ssi_addr)) {
545 543
        sigbus_reraise();
544
    }
546 545
}
547 546

  
548 547
static void qemu_kvm_eat_signal(CPUState *env, int timeout)
......
575 574

  
576 575
        switch (r) {
577 576
        case SIGBUS:
578
#ifdef TARGET_I386
579
            if (kvm_on_sigbus_vcpu(env, siginfo.si_code, siginfo.si_addr))
580
#endif
577
            if (kvm_on_sigbus_vcpu(env, siginfo.si_code, siginfo.si_addr)) {
581 578
                sigbus_reraise();
579
            }
582 580
            break;
583 581
        default:
584 582
            break;
b/kvm-all.c
1366 1366
    return -ENOSYS;
1367 1367
#endif
1368 1368
}
1369

  
1370
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr)
1371
{
1372
    return kvm_arch_on_sigbus_vcpu(env, code, addr);
1373
}
1374

  
1375
int kvm_on_sigbus(int code, void *addr)
1376
{
1377
    return kvm_arch_on_sigbus(code, addr);
1378
}
b/kvm-stub.c
147 147
    return -ENOSYS;
148 148
}
149 149

  
150
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr)
151
{
152
    return 1;
153
}
154

  
150 155
int kvm_on_sigbus(int code, void *addr)
151 156
{
152 157
    return 1;
b/kvm.h
81 81
int kvm_pit_in_kernel(void);
82 82
int kvm_irqchip_in_kernel(void);
83 83

  
84
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr);
85
int kvm_on_sigbus(int code, void *addr);
86

  
84 87
/* internal API */
85 88

  
86 89
struct KVMState;
......
121 124

  
122 125
void kvm_arch_reset_vcpu(CPUState *env);
123 126

  
124
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr);
125
int kvm_on_sigbus(int code, void *addr);
127
int kvm_arch_on_sigbus_vcpu(CPUState *env, int code, void *addr);
128
int kvm_arch_on_sigbus(int code, void *addr);
126 129

  
127 130
struct kvm_guest_debug;
128 131
struct kvm_debug_exit_arch;
b/target-i386/kvm.c
1839 1839

  
1840 1840
#endif
1841 1841

  
1842
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr)
1842
int kvm_arch_on_sigbus_vcpu(CPUState *env, int code, void *addr)
1843 1843
{
1844 1844
#if defined(KVM_CAP_MCE)
1845 1845
    void *vaddr;
......
1889 1889
    return 0;
1890 1890
}
1891 1891

  
1892
int kvm_on_sigbus(int code, void *addr)
1892
int kvm_arch_on_sigbus(int code, void *addr)
1893 1893
{
1894 1894
#if defined(KVM_CAP_MCE)
1895 1895
    if ((first_cpu->mcg_cap & MCG_SER_P) && addr && code == BUS_MCEERR_AO) {
b/target-ppc/kvm.c
404 404
{
405 405
    return true;
406 406
}
407

  
408
int kvm_arch_on_sigbus_vcpu(CPUState *env, int code, void *addr)
409
{
410
    return 1;
411
}
412

  
413
int kvm_arch_on_sigbus(int code, void *addr)
414
{
415
    return 1;
416
}
b/target-s390x/kvm.c
505 505
{
506 506
    return true;
507 507
}
508

  
509
int kvm_arch_on_sigbus_vcpu(CPUState *env, int code, void *addr)
510
{
511
    return 1;
512
}
513

  
514
int kvm_arch_on_sigbus(int code, void *addr)
515
{
516
    return 1;
517
}

Also available in: Unified diff