qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue Report: When VM has multiple vCPU and receive SIGBUS for SRAR, qem


From: Aili Yao
Subject: Issue Report: When VM has multiple vCPU and receive SIGBUS for SRAR, qemu will inject broadcast MCE to VM, VM may exceed 1S MCE sync time, and Panic.
Date: Wed, 24 Mar 2021 11:53:20 +0800

Hi:
When i do memory SRAR test for VM, I meet the following issue:

My VM has 16 vCPU, I will inject one UE error to memory which is accessed by VM,
Then host MCE is raised and SIGBUS is send to VM, and qemu take control.
Qemu will check the broadcast attribute by following  
cpu_x86_support_mca_broadcast();  

Then Qemu may inject MCE to all vCPU, as vCPU is just one process for HOST, we 
can't guarantee
all the vCPUs will enter MCE hander in 1S sync time, and the VM may panic.

This issue will be easily fixed by expand monarch_timeout configuration, but 
the exact monarch_timeout can't be
easily got, as it will depand on the num of vCPUs and current system schedule 
status.

I am wondering why VM need broadcast attribute for MCE, When qeme process MCE 
event form host, it will always be
signaled for one vCPU? If so, why does qemu need boradcast the MCE event to all 
vCPUs?

Can weu just deliver LMCE to one specifc vCPU and make this behavior default?

If anything wrong, Please point out.

Thanks!
Aili Yao

/* Broadcast MCA signal for processor version 06H_EH and above */
int cpu_x86_support_mca_broadcast(CPUX86State *env)
{
    int family = 0;
    int model = 0;

    cpu_x86_version(env, &family, &model);
    if ((family == 6 && model >= 14) || family > 6) {
        return 1;
    }

    return 0;
}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]