gem5/src/cpu/kvm
Andreas Hansson f26a289295 mem: Split port retry for all different packet classes
This patch fixes a long-standing isue with the port flow
control. Before this patch the retry mechanism was shared between all
different packet classes. As a result, a snoop response could get
stuck behind a request waiting for a retry, even if the send/recv
functions were split. This caused message-dependent deadlocks in
stress-test scenarios.

The patch splits the retry into one per packet (message) class. Thus,
sendTimingReq has a corresponding recvReqRetry, sendTimingResp has
recvRespRetry etc. Most of the changes to the code involve simply
clarifying what type of request a specific object was accepting.

The biggest change in functionality is in the cache downstream packet
queue, facing the memory. This queue was shared by requests and snoop
responses, and it is now split into two queues, each with their own
flow control, but the same physical MasterPort. These changes fixes
the previously seen deadlocks.
2015-03-02 04:00:35 -05:00
..
arm_cpu.cc kvm: Don't handle IO and execute in the same tick 2013-06-11 09:24:51 +02:00
arm_cpu.hh kvm: Don't handle IO and execute in the same tick 2013-06-11 09:24:51 +02:00
ArmKvmCPU.py kvm: Add basic support for ARM 2013-04-22 13:20:32 -04:00
base.cc mem: Clean up Request initialisation 2015-01-22 05:00:53 -05:00
base.hh mem: Split port retry for all different packet classes 2015-03-02 04:00:35 -05:00
BaseKvmCPU.py kvm: Separate host frequency from simulated CPU frequency 2013-06-11 09:24:55 +02:00
KvmVM.py kvm: Basic support for hardware virtualized CPUs 2013-04-22 13:20:32 -04:00
perfevent.cc kvm: Basic support for hardware virtualized CPUs 2013-04-22 13:20:32 -04:00
perfevent.hh kvm: Set the perf exclude_host attribute if available 2013-10-15 10:09:23 +02:00
SConscript kvm: Initial x86 support 2013-09-25 12:24:26 +02:00
timer.cc kvm: Add support for multi-system simulation 2014-02-20 15:43:53 +01:00
timer.hh kvm: Add experimental support for a perf-based execution timer 2013-04-22 13:20:32 -04:00
vm.cc Let other objects set up memory like regions in a KVM VM. 2014-12-09 21:53:44 -08:00
vm.hh Let other objects set up memory like regions in a KVM VM. 2014-12-09 21:53:44 -08:00
x86_cpu.cc mem: Clean up Request initialisation 2015-01-22 05:00:53 -05:00
x86_cpu.hh mem: Clean up Request initialisation 2015-01-22 05:00:53 -05:00
X86KvmCPU.py kvm: FPU synchronization support on x86 2013-09-30 09:43:43 +02:00