kvm: Add support for multi-system simulation
Review Request #2159 - Created Feb. 9, 2014 and submitted
| Information | |
|---|---|
| Andreas Sandberg | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10062:4fea5050f4f2 --------------------------- kvm: Add support for multi-system simulation The introduction of parallel event queues added most of the support needed to run multiple VMs (systems) within the same gem5 instance. This changeset fixes up signal delivery so that KVM's control signals are delivered to the thread that executes the CPU's event queue. There are currently no facilities to multiplex between multiple KVM CPUs in the same event queue, we are therefore limited to configurations where there is only one KVM CPU per event queue. In practice, this means that multi-system configurations can be simulated, but not multiple CPUs in a shared-memory configuration.
Tested boot and interactive use of single CPU system -- works. Tested boot of dual-system configuration and interactive use -- works. Did not run regressions as the current tests do not test KVM functionality. Also available from the multisys branch in git://github.com/andysan/gem5.git.
Posted (Feb. 9, 2014, 3:28 p.m.)
You comment that "we are currently limited to configurations where there is only one KVM CPU per event queue"... can you expand on this? I.e., why can't I have multiple KVM CPUs per event queue and timeslice among them? Or is that not what you meant?
-
src/cpu/kvm/base.hh (Diff revision 1) -
seems to be a typo in this comment... should this be "is called as"?
-
src/cpu/kvm/base.cc (Diff revision 1) -
I wasn't sure why you changed from sigprocmask to pthread_sigmask, but on googling for the answer I found this: http://stackoverflow.com/questions/2170672/sigprocmask-causing-segfault So it makes sense to me now, but might be worth a mention in the commit message.
Review request changed
Updated (Feb. 10, 2014, 1:45 a.m.)
Description: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+78 -22) |
It looks like I was asking for a few clarifications in the commit message, but that's it. I think the code itself is good to go. I don't want to halt your momentum on this :)
