[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 1/9] icount: update instruction counter on apic p
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [PATCH v6 1/9] icount: update instruction counter on apic patching |
Date: |
Mon, 19 Dec 2016 16:21:11 +0300 |
User-agent: |
StGit/0.16 |
kvmvapic patches the code when some instructions are executed.
E.g. mov 0xff, 0xfffe0080 is interpreted as push 0xff/call ...
This patching is also followed by some side effects (changing apic
and guest memory state). Therefore deterministic execution should take
this operation into account. This patch decreases icount when original
mov instruction is trying to execute. Therefore patching becomes
deterministic and can be replayed correctly.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
hw/i386/kvmvapic.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index b30d1b9..146d47c 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -412,6 +412,12 @@ static void patch_instruction(VAPICROMState *s, X86CPU
*cpu, target_ulong ip)
if (!kvm_enabled()) {
cpu_get_tb_cpu_state(env, ¤t_pc, ¤t_cs_base,
¤t_flags);
+ /* Account this instruction, because we will exit the tb.
+ This is the first instruction in the block. Therefore
+ there is no need in restoring CPU state. */
+ if (use_icount) {
+ --cs->icount_decr.u16.low;
+ }
}
pause_all_vcpus();
- [Qemu-devel] [PATCH v6 0/9] replay additions, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 1/9] icount: update instruction counter on apic patching,
Pavel Dovgalyuk <=
- [Qemu-devel] [PATCH v6 2/9] replay: improve interrupt handling, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 3/9] apic: save apic_delivered flag, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 4/9] replay: don't use rtc clock on loadvm phase, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 5/9] integratorcp: adding vmstate for save/restore, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 6/9] savevm: add public save_vmstate function, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 7/9] replay: save/load initial state, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 8/9] block: implement bdrv_snapshot_goto for blkreplay, Pavel Dovgalyuk, 2016/12/19
- [Qemu-devel] [PATCH v6 9/9] blkreplay: create temporary overlay for underlaying devices, Pavel Dovgalyuk, 2016/12/19