Hi,

I'm simulating two x86 systems with --dual (server and client).  The client
(driversys) always ran in atomic  CPU mode. When the server (testsys) ran
in atomic/timing CPU mode,  it can generate checkpoints and restore from
checkpoints successfully. However, when checkpoints were generated in
atomic/timing
CPU mode, and restored from with detailed CPU mode, an error happened.

"gem5.opt: build/X86/dev/net/i8254xGBe.cc:1878: void
IGbE::TxDescCache::pktComplete(): Assertion `ip' failed."

After some debugging, I figured out the problem.  A request is sent from
ethernet.dma. When restored from checkpoints with atomic/timing CPU mode,
the request went through the following path:
ethernet.dma->iobus->iocache(miss)->membus. Then the membus generated some
atomic snoop requests, finally, the desired data was obtained in CPU data
cache.

However, when restored with detailed CPU mode, the request went through the
following path: ethernet.dma->iobus->iocache(miss)->membus (without
generating snoop requests)->DRAMCtrls0,  and the data was obtained from
DRAM. But the data is 0, not the desired data in atomic CPU mode. So the
assertion error happened.

I'm using the latest Gem5 version, the kernel is x86_64-vmlinux-3.2.24 and
the ethernet driver is E1000.

The benchmark I tested is palmscloud, the command for generating
checkpoints is:

build/X86/gem5.opt --outdir=CAL/outdir/apache configs/example/fs.py
--kernel=x86_64-vmlinux-3.2.24
--disk-image=$HOME/private/gem5/palmscloud/disks/gentoo-s3.img
--cpu-type=AtomicSimpleCPU --cpu-clock=4GHz --caches --l1i_size=32kB
--l1i_assoc=2 --l1d_size=32kB --l1d_assoc=2 --l2cache --l2_size=1024kB
--l2_assoc=16 --mem-size=4096MB --dual --serverbench="CAL/apache"
--clientbench="CAL/apache" --checkpoint-dir=CAL/checkpoint/apache

 The command for restoring checkpoints is:
build/X86/gem5.opt --outdir=CAL/outdir/apache configs/example/fs.py
--kernel=x86_64-vmlinux-3.2.24
--disk-image=$HOME/private/gem5/palmscloud/disks/gentoo-s3.img --dual
--serverbench="CAL/apache" --clientbench="CAL/apache"
--checkpoint-dir=CAL/checkpoint/apache -r 1 --restore-with-cpu=DerivO3CPU
--cpu-type=DerivO3CPU --cpu-clock=4GHz --caches --l1i_size=32kB
--l1i_assoc=2 --l1d_size=32kB --l1d_assoc=2 --l2cache --l2_size=1024kB
--l2_assoc=16 --mem-size=4096MB

I don't know how to solve the problem, that is,  copying the right data to
the request when restored in detailed CPU mode.

Any help will be appreciated!!

Regards,
QI
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to