summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/1672383
blob: bd15576f3b2db0c096229f161d95b8a8a86596fa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Slow Windows XP load after commit a9353fe897ca2687e5b3385ed39e3db3927a90e0

I've recently discovered, that in QEMU 2.8+ my Windows XP loading time has significantly worsened. In 2.7 it took 30-40 second to boot, but in 2.8 it became 2-2,5 minutes.

I've used Git bisect, and found out that the change happened after commit a9353fe897ca2687e5b3385ed39e3db3927a90e0, which, as far as I can tell from the commit message, handled race condition when invalidating breakpoint.

I've set a breakpoint in static void breakpoint_invalidate(CPUState *cpu, target_ulong pc), and here's a backtrace:
#0  cpu_breakpoint_insert (cpu=cpu@entry=0x555556a73be0, pc=144, 
    flags=flags@entry=32, breakpoint=breakpoint@entry=0x555556a7c670)
    at /media/sdd2/qemu-work/exec.c:830
#1  0x00005555558746ac in hw_breakpoint_insert (env=env@entry=0x555556a7be60, 
    index=index@entry=0) at /media/sdd2/qemu-work/target-i386/bpt_helper.c:64
#2  0x00005555558748ed in cpu_x86_update_dr7 (env=0x555556a7be60, 
    new_dr7=<optimised out>)
    at /media/sdd2/qemu-work/target-i386/bpt_helper.c:160
#3  0x00007fffa17421f6 in code_gen_buffer ()
#4  0x000055555577fcb4 in cpu_tb_exec (itb=<optimised out>, 
    itb=<optimised out>, cpu=0x7fff8b7763b0)
    at /media/sdd2/qemu-work/cpu-exec.c:164
It seems that XP sets some breakpoints during it's load, and it leads to frequent TB flushes and slow execution.