Revision 32a42024 target-i386/kvm.c
b/target-i386/kvm.c | ||
---|---|---|
187 | 187 |
return -ENOSYS; |
188 | 188 |
} |
189 | 189 |
|
190 |
static int kvm_setup_mce(CPUState *env, uint64_t *mcg_cap) |
|
191 |
{ |
|
192 |
return kvm_vcpu_ioctl(env, KVM_X86_SETUP_MCE, mcg_cap); |
|
193 |
} |
|
194 |
|
|
195 | 190 |
static void kvm_mce_inject(CPUState *env, target_phys_addr_t paddr, int code) |
196 | 191 |
{ |
197 | 192 |
uint64_t status = MCI_STATUS_VAL | MCI_STATUS_UC | MCI_STATUS_EN | |
... | ... | |
440 | 435 |
&& kvm_check_extension(env->kvm_state, KVM_CAP_MCE) > 0) { |
441 | 436 |
uint64_t mcg_cap; |
442 | 437 |
int banks; |
438 |
int ret; |
|
443 | 439 |
|
444 | 440 |
if (kvm_get_mce_cap_supported(env->kvm_state, &mcg_cap, &banks)) { |
445 | 441 |
perror("kvm_get_mce_cap_supported FAILED"); |
... | ... | |
448 | 444 |
banks = MCE_BANKS_DEF; |
449 | 445 |
mcg_cap &= MCE_CAP_DEF; |
450 | 446 |
mcg_cap |= banks; |
451 |
if (kvm_setup_mce(env, &mcg_cap)) { |
|
452 |
perror("kvm_setup_mce FAILED"); |
|
447 |
ret = kvm_vcpu_ioctl(env, KVM_X86_SETUP_MCE, &mcg_cap); |
|
448 |
if (ret < 0) { |
|
449 |
fprintf(stderr, "KVM_X86_SETUP_MCE: %s", strerror(-ret)); |
|
453 | 450 |
} else { |
454 | 451 |
env->mcg_cap = mcg_cap; |
455 | 452 |
} |
Also available in: Unified diff