Dear all,

I am trying to use KVM on a full system but unfortunately I've run into 
multiple problems..

I am able to successfully boot gem5 in FS with 8 KVM cores, using a slightly 
modified fs.py script.
I can create a checkpoint (m5 checkpoint) from the guest, but when I try to 
restore it, I get a segmentation fault:

> [...]
> info: KVM: Coalesced MMIO disabled by config.
> warn: x86 cpuid family 0x0000: unimplemented function 2
> warn: x86 cpuid family 0x0000: unimplemented function 3
> warn: x86 cpuid family 0x0000: unimplemented function 4
> warn: x86 cpuid family 0x0000: unimplemented function 5
> warn: x86 cpuid family 0x0000: unimplemented function 6
> info: Entering event queue @ 201293355070500.  Starting simulation...
> gem5 has encountered a segmentation fault!
> 
> --- BEGIN LIBC BACKTRACE ---
> /X/gem5/build/X86/gem5.opt(_Z15print_backtracev+0x2c)[0x559ba3f8138c]
> /X/gem5/build/X86/gem5.opt(+0xe7c9bf)[0x559ba3f959bf]
> /lib/x86_64-linux-gnu/libpthread.so.0(+0x12980)[0x7fb0c887d980]
> /lib/x86_64-linux-gnu/libpthread.so.0(pthread_kill+0x6)[0x7fb0c887a386]
> /X/gem5/build/X86/gem5.opt(_ZN10BaseKvmCPU6wakeupEs+0xa8)[0x559ba3b177e8]
> /X/gem5/build/X86/gem5.opt(_ZN6X86ISA10Interrupts16requestInterruptEhhb+0x8b)[0x559ba366f5db]
> /X/gem5/build/X86/gem5.opt(+0x557893)[0x559ba3670893]
> /X/gem5/build/X86/gem5.opt(_ZN10EventQueue10serviceOneEv+0xd9)[0x559ba3f88ae9]
> /X/gem5/build/X86/gem5.opt(_Z9doSimLoopP10EventQueue+0x87)[0x559ba3fa39a7]
> /X/gem5/build/X86/gem5.opt(_Z8simulatem+0xcba)[0x559ba3fa49fa]
> /X/gem5/build/X86/gem5.opt(+0xe636b1)[0x559ba3f7c6b1]
> /X/gem5/build/X86/gem5.opt(+0xb784cf)[0x559ba3c914cf]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x64d7)[0x7fb0c8b2ac47]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fb0c8b2a366]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fb0c8b2a366]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fb0c8b2a366]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7fb0c8b245d9]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ac0)[0x7fb0c8b2b230]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fb0c8b2a366]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fb0c8c69908]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7fb0c8b245d9]
> /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyRun_StringFlags+0x76)[0x7fb0c8bd46f6]
> /X/gem5/build/X86/gem5.opt(_Z6m5MainiPPc+0x83)[0x559ba3f94863]
> /X/gem5/build/X86/gem5.opt(main+0x33)[0x559ba34f4693]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7fb0c6b0dbf7]
> /X/gem5/build/X86/gem5.opt(_start+0x2a)[0x559ba3518a8a]

I've done multiple tries and it is always happening. 
_Sometimes_ I am able to correctly restore a checkpoint, provided I attach a 
terminal (telnet to it, or m5term) _before_ gem5 has finished loading.

To restore, I specify both:
> --cpu-type=X86KvmCPU --restore-with-cpu=X86KvmCPU

And I do not alter any other parameter.

An example of output during a checkpoint generation:

> warn: kvm-x86: MSR (0x40000080) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x400000b0) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x40000073) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x40000106) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x40000107) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x40000108) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x4b564d02) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x4b564d03) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x4b564d04) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x3b) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x6e0) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x10a) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x1a0) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x9e) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x34) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0xce) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x140) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0xc001011f) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x1fc) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0xc0010015) unsupported by gem5. Skipping.
> warn: kvm-x86: MSR (0x4b564d05) unsupported by gem5. Skipping.
> warn: cs limit (0xffffffff) and g (0) combination is illegal.
> warn: cs limit (0xffffffff) and g (0) combination is illegal.
> 1531509174000: system.pc.com_1.device: attach terminal 0
> warn: Tried to clear PCI interrupt 14
> warn: ds: S flag not set
> warn: ds: P flag not set
> warn: es: S flag not set
> warn: es: P flag not set
> warn: fs: S flag not set
> warn: fs: P flag not set
> warn: gs: S flag not set
> warn: gs: P flag not set
> warn: ldt: Illegal segment type (0)
> warn: ldt: P flag not set
> info: Entering event queue @ 81983110701500.  Starting simulation...
> info: Entering event queue @ 81984130364500.  Starting simulation...
> info: Entering event queue @ 81985236282000.  Starting simulation...
> Writing checkpoint
> info: Entering event queue @ 81986246611000.  Starting simulation...

I am using an older version of gem5 because it has support for an external 
memory controller (Dramsim3), so perhaps you have already seen this bug.

The edits to fs.py are simply the addition of:

> for i,cpu in enumerate(test_sys.cpu):
>     for obj in cpu.descendants():
>         obj.eventq_index = 0
>     cpu.eventq_index = i + 1
and
> root.sim_quantum = int(1e9) 

I understand that I'm using an outdated version, but I'd be really grateful if 
you could help me figuring out where to look to fix this.
Without the fs.py edits I'm able to make it work correctly, but KVM works only 
with 2 cores.

Thanks for your time,
Michele
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to