mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target/arm: Add support for VCPU event states
This patch extends the qemu-kvm state sync logic with support for KVM_GET/SET_VCPU_EVENTS, giving access to yet missing SError exception. And also it can support the exception state migration. The SError exception states include SError pending state and ESR value, the kvm_put/get_vcpu_events() will be called when set or get system registers. When do migration, if source machine has SError pending, QEMU will do this migration regardless whether the target machine supports to specify guest ESR value, because if target machine does not support that, it can also inject the SError with zero ESR value. Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1538067351-23931-3-git-send-email-gengdongjiu@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
61e9e3cb45
commit
202ccb6bab
6 changed files with 139 additions and 0 deletions
|
@ -172,6 +172,27 @@ static const VMStateDescription vmstate_sve = {
|
|||
};
|
||||
#endif /* AARCH64 */
|
||||
|
||||
static bool serror_needed(void *opaque)
|
||||
{
|
||||
ARMCPU *cpu = opaque;
|
||||
CPUARMState *env = &cpu->env;
|
||||
|
||||
return env->serror.pending != 0;
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_serror = {
|
||||
.name = "cpu/serror",
|
||||
.version_id = 1,
|
||||
.minimum_version_id = 1,
|
||||
.needed = serror_needed,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT8(env.serror.pending, ARMCPU),
|
||||
VMSTATE_UINT8(env.serror.has_esr, ARMCPU),
|
||||
VMSTATE_UINT64(env.serror.esr, ARMCPU),
|
||||
VMSTATE_END_OF_LIST()
|
||||
}
|
||||
};
|
||||
|
||||
static bool m_needed(void *opaque)
|
||||
{
|
||||
ARMCPU *cpu = opaque;
|
||||
|
@ -726,6 +747,7 @@ const VMStateDescription vmstate_arm_cpu = {
|
|||
#ifdef TARGET_AARCH64
|
||||
&vmstate_sve,
|
||||
#endif
|
||||
&vmstate_serror,
|
||||
NULL
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue