1 Star 0 Fork 124

zhouli57/src-qemu

forked from src-openEuler/qemu 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
vtimer-Drop-vtimer-virtual-timer-adjust.patch 4.07 KB
一键复制 编辑 原始数据 按行查看 历史
From b1782119bcfac96d8a541d8d60ee00f954d721db Mon Sep 17 00:00:00 2001
From: Ying Fang <fangying1@huawei.com>
Date: Wed, 27 May 2020 17:48:54 +0800
Subject: [PATCH] vtimer: Drop vtimer virtual timer adjust
This patch drops the vtimer virtual timer adjust, cross version migration
from openEuler qemu-4.0.1 to qemu-4.1.0 is not supported as a consequence.
By default openEuler qemu-4.1.0 use kvm_adjvtime as the virtual timer.
Signed-off-by: Ying Fang <fangying1@huawei.com>
diff --git a/cpus.c b/cpus.c
index 6a28bdef..927a00aa 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1066,34 +1066,6 @@ void cpu_synchronize_all_pre_loadvm(void)
}
}
-#ifdef __aarch64__
-static bool kvm_adjvtime_enabled(CPUState *cs)
-{
- ARMCPU *cpu = ARM_CPU(cs);
- return cpu->kvm_adjvtime == true;
-}
-
-static void get_vcpu_timer_tick(CPUState *cs)
-{
- CPUARMState *env = &ARM_CPU(cs)->env;
- int err;
- struct kvm_one_reg reg;
- uint64_t timer_tick;
-
- reg.id = KVM_REG_ARM_TIMER_CNT;
- reg.addr = (uintptr_t) &timer_tick;
-
- err = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
- if (err < 0) {
- error_report("get vcpu tick failed, ret = %d", err);
- env->vtimer = 0;
- return;
- }
- env->vtimer = timer_tick;
- return;
-}
-#endif
-
static int do_vm_stop(RunState state, bool send_stop)
{
int ret = 0;
@@ -1101,17 +1073,6 @@ static int do_vm_stop(RunState state, bool send_stop)
if (runstate_is_running()) {
cpu_disable_ticks();
pause_all_vcpus();
-#ifdef __aarch64__
- /* vtimer adjust is used in openEuler qemu-4.0.1, however kvm_adjvtime
- * is introduced in openEuler qemu-4.1.0. To maintain the compatibility
- * and enable cross version migration, let's enable vtimer adjust only
- * if kvm_adjvtime is not enabled, otherwise there may be conflicts
- * between vtimer adjust and kvm_adjvtime.
- */
- if (first_cpu && !kvm_adjvtime_enabled(first_cpu)) {
- get_vcpu_timer_tick(first_cpu);
- }
-#endif
runstate_set(state);
vm_state_notify(0, state);
if (send_stop) {
@@ -1957,46 +1918,11 @@ void cpu_resume(CPUState *cpu)
qemu_cpu_kick(cpu);
}
-#ifdef __aarch64__
-
-static void set_vcpu_timer_tick(CPUState *cs)
-{
- CPUARMState *env = &ARM_CPU(cs)->env;
-
- if (env->vtimer == 0) {
- return;
- }
-
- int err;
- struct kvm_one_reg reg;
- uint64_t timer_tick = env->vtimer;
- env->vtimer = 0;
-
- reg.id = KVM_REG_ARM_TIMER_CNT;
- reg.addr = (uintptr_t) &timer_tick;
-
- err = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
- if (err < 0) {
- error_report("Set vcpu tick failed, ret = %d", err);
- return;
- }
- return;
-}
-#endif
-
void resume_all_vcpus(void)
{
CPUState *cpu;
qemu_clock_enable(QEMU_CLOCK_VIRTUAL, true);
-#ifdef __aarch64__
- /* Enable vtimer adjust only if kvm_adjvtime is not enabled, otherwise
- * there may be conflicts between vtimer adjust and kvm_adjvtime.
- */
- if (first_cpu && !kvm_adjvtime_enabled(first_cpu)) {
- set_vcpu_timer_tick(first_cpu);
- }
-#endif
CPU_FOREACH(cpu) {
cpu_resume(cpu);
}
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index aec6a214..86eb79cd 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -262,8 +262,6 @@ typedef struct CPUARMState {
uint64_t sp_el[4]; /* AArch64 banked stack pointers */
- uint64_t vtimer; /* Timer tick when vcpu stop */
-
/* System control coprocessor (cp15) */
struct {
uint32_t c0_cpuid;
diff --git a/target/arm/machine.c b/target/arm/machine.c
index ec28b839..ee3c59a6 100644
--- a/target/arm/machine.c
+++ b/target/arm/machine.c
@@ -814,7 +814,6 @@ const VMStateDescription vmstate_arm_cpu = {
VMSTATE_UINT32(env.exception.syndrome, ARMCPU),
VMSTATE_UINT32(env.exception.fsr, ARMCPU),
VMSTATE_UINT64(env.exception.vaddress, ARMCPU),
- VMSTATE_UINT64(env.vtimer, ARMCPU),
VMSTATE_TIMER_PTR(gt_timer[GTIMER_PHYS], ARMCPU),
VMSTATE_TIMER_PTR(gt_timer[GTIMER_VIRT], ARMCPU),
{
--
2.23.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhouli57/src-qemu.git
git@gitee.com:zhouli57/src-qemu.git
zhouli57
src-qemu
src-qemu
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385