Commit Graph

814 Commits

Author SHA1 Message Date
9843b520c1 dbcampaign: select multiple variants/benchmark pairs
The variant/benchmark selection now can use SQL LIKE syntax, all unfinished
pilots from all selected variants are sent to the clients. E.g.:

./cored-voter-server  -v x86-cored-voter -b simple-% -p basic

Will select the fsppilots in the variants:

- x86-cored-voter/simple-ip/basic
- x86-cored-voter/simple-instr/basic

The variant and benchmark information is now sent within the
fsppilot.

Change-Id: I287bfcddc478d0b79d89e156d6f5bf8188674532
2013-07-05 10:19:58 +02:00
40f610b536 util: integrate LLVM-based Disassembler
The LLVM Disassembler infrastructure can be used to analyze many kinds
of ELF Binaries. For every instruction the used and defined registers
is available as well as information about the instruction itself.

Change-Id: I9cc89b6c116ceff7b5143a6f179ae31c4e994d2d
2013-07-05 10:19:57 +02:00
593e703807 Merge "cmake: gem5-related build system updates" 2013-07-04 15:08:15 +02:00
aecb353087 cmake: gem5-related build system updates
The build system now allows incremental gem5 builds. Unfortunately,
the current solution always requires re-linking the executable.
Without the enforcement of re-linking, the fail code will be rebuilt
but not linked into gem5.

The number of cores for building gem5 is derived from /proc/cpuinfo.
As before, only the gem5.debug configuration is supported.

Change-Id: Ib13b15d1ecd62196eb251e0fd00953f4eb052feb
2013-07-04 15:01:22 +02:00
8e5aa9b1bd tools/dump-trace: dump extended traces properly
Output formatting was broken for extended traces (with register data
information etc.) before.

Change-Id: I48ca548ab29ecc855d803ce46a7713ef801f53f0
2013-07-04 10:41:22 +02:00
0cceb4e222 Merge "ecos: make LOCAL builds compile again" 2013-07-04 10:38:04 +02:00
741a7199b3 Merge "ecos: bugfix: cyg_test_output may be called before FI" 2013-07-04 10:37:43 +02:00
a7854f3dcb Merge "ecos: removed configuration checks" 2013-07-04 10:37:11 +02:00
f67b3c8e00 Merge changes If7bbbe14,Ifbf67303
* changes:
  ecos: DB-related campaign changes
  plugins/tracing: use fixed dereference size of 4
2013-07-04 10:36:46 +02:00
286f5a27a1 Merge "import-/prune-trace: primary keys reordered" 2013-07-04 10:35:01 +02:00
955f89b3eb ecos: make LOCAL builds compile again
Change-Id: Icd992aa20443426bbcaa507c39453d6ecb9174c0
2013-07-03 13:46:55 +02:00
01e7f8c8a1 ecos: bugfix: cyg_test_output may be called before FI
This is a pretty old bug that unfortunately affects both DSN 2013 and
SOBRES 2013 results.

Change-Id: I64a2790a4d55515a23a34d108be99646d5dd345d
2013-07-03 13:46:55 +02:00
66ecedd864 ecos: removed configuration checks
Change-Id: I5df0b5f3435f3f695ba1ab9ca624dfa238509e46
2013-07-03 13:46:55 +02:00
27f1f77524 ecos: DB-related campaign changes
- Don't enforce the join order, MariaDB usually gets this right.
- Update DB statistics before terminating.

Change-Id: If7bbbe146321430d199811062d05b3c179c5732f
2013-07-03 13:46:55 +02:00
501384b0f4 import-/prune-trace: primary keys reordered
data_address is definitely part of the unique key to trace entries, but
instr2 is arbitrary (could be instr1, time1 or time2 as well).  Moving
data_address up the hierarchy to speed up certain FSP experiments.

Change-Id: I37a1f6c1e5b3957ba2f5bf46e0cd1a9c4aa7bfef
2013-07-03 13:46:55 +02:00
2a37a03069 plugins/tracing: use fixed dereference size of 4
When recording a "full" trace (register values, plus dereferenced
values), we use a fixed dereference size of 4 bytes.

Change-Id: Ifbf6730377e7df2e7f1fc1e6b91bc114ccf10fbc
2013-07-03 13:46:55 +02:00
c74c8a2e30 dbutils: enable variant and benchmark selection with LIKE
This does enable % patterns in variant and benchmark selections, like
it is already implemented in the prune-tool.

Change-Id: I7497bfd588d6ffdf851d767bafc660f4872ae92f
2013-07-03 13:43:54 +02:00
12aec4c1a4 import-trace: add --no-delete command line option
Change-Id: I1b100c2b11d28396b024478dc1d1af6118c644d6
2013-07-03 13:19:31 +02:00
be8d5edbc3 import-trace: reorder functionality in importer
BasicImporter is renamed to MemoryImporter. An alias for BasicImporter
in the cmdline interface will remain. The MemoryImporter does now only
handle memory and IP events. The simulation time, dynamic instruction
count and handling of open ECs is moved to Importer.

Change-Id: I04eb0fd4b52fbf5b0ca9ab97778a62130cb626ee
2013-07-03 13:19:12 +02:00
81fe0ea628 import-trace: dropped DCiAOKernelImporter
This importer is so similar to the basic importer, that it can be
dropped. The current state was used in the SOBRES 2013 Paper.

Change-Id: Ibed1af6e1a72286500d42e83e594557d6dcf3803
2013-07-03 13:17:53 +02:00
cfa311979e Merge "sal/bochs: force eflags after writing" 2013-07-03 13:08:39 +02:00
9b124fac8f sal/bochs: force eflags after writing
The correct flags accessor methods should be used to write the flags register,
since values (especially the arithmetic flags) might be cached.

Change-Id: I338927cfdd1f111966be539668914c9256b54c8f
2013-06-21 11:04:34 +02:00
12f9915d1c core/efw: send back results earlier
The client sends results back earlier (i.e., before all jobs are
done) if the client response time (CLIENT_JOB_REQUEST_SEC) is
exceeded. This makes sure that extraordinarily long-running
experiments get reported back before, e.g., the LIDO job timeout
kills the Fail* instance.

Change-Id: I3ada0360ec54b63f80a7008570ca514449720220
2013-06-17 17:43:42 +02:00
eeeeb92ee7 Merge "core/sal: dependency checks moved to listener classes" 2013-06-05 15:36:33 +02:00
3e7da9b09a core/sal: dependency checks moved to listener classes
It is no longer required (and recommended) to write a dependency
check (using conditional compilation) in the experiment code. Instead,
the Fail code performs these checks itself. If an experiment is
compiled without having the required configuration flags set to
enabled, the compiler emits an error. This is because the constructors
of unused listener classes are declared as protected. (Note that
this works only because the Fail code does not create any listeners.)

In a next step, one should remove all the dependency guards in the
existing experiments (not needed anymore).

Change-Id: I1331813a432a752322d510b4102da53ff53294f0
2013-06-05 15:30:05 +02:00
f3c36e70ef ecos: stack-protection eval
Change-Id: I576c2ef3834f61bb9017af37541afc7639672782
2013-05-29 16:43:46 +02:00
4750fa98a4 tools/dump-trace: --stats shows trace info only
The new parameter -s/--stats shows trace statistics such as number of
instructions, number of memory reads/writes, and duration in simulator
time.

Change-Id: I39a48ff62d9c308c420fe52e7ed17ed57ae9c139
2013-05-29 16:29:09 +02:00
de754c5f27 comm: handle connect() failures properly
Quoting connect(3posix): "If connect() fails, the state of the socket is
unspecified.  Conforming applications should close the file descriptor and
create a new socket before attempting to reconnect."

Change-Id: Ibcdcc0f546560a41009832894659a37947243f2f
2013-05-29 16:29:09 +02:00
d937be90ea util/CommandLine: make non-option args accessible
The argv list must not be temporary for this, and became a class
member.

Change-Id: I159dd2a0d43768a7926b639f93a4ff9f2bfb7c9a
2013-05-29 16:29:09 +02:00
950adac80e tools/import-trace: cover complete fault space
We need to cover the complete fault space when a memory map is
provided.  This means fake trace entries for completely unaccessed
addresses (e.g., unused parts of the stack), and makes sure we include
all of our fault space in the statistics later.

Without a memory map, we just don't know the extents of our fault
space; just guessing by using the minimum and maximum addresses is not
a good idea, we might have large holes in the fault space.

Change-Id: Ieb4b30a2e41a9921b969bf88513bfbacfc290c93
2013-05-29 16:29:08 +02:00
d9c9b43102 dciao-kernelstructs: several experiment fixes.
The previous fault injection experiment was kind of bullshit. This one
is better in several ways:

- sanity check at injection time (correct IP)
- correct counting of kernel_transistions
- copy whole activation scheme

Change-Id: I014eea4d6fe103bc02ffd7bbca95dc56a1a4d9ea
2013-05-29 16:18:22 +02:00
6789a313a9 DCiAOKernelImporter: different injection semantic.
Is now very similar to normal importer, and may be deleted in the future, but
at the moment, this should be merged, since it is the importer used in the
sobres-2013 paper.

This changes the MySQL Schema. instr1_absolute was introduced.

Change-Id: I1bc2919bd14c335beca6d586b7cc0f80767ad7d5
2013-05-29 16:17:03 +02:00
6d8b3331d8 doxygen: doc generation fixed
Doxygen skips undesired directories and files now. In addition, the
documentation of the "fail" namespace has been fixed. Note that there
are still several warnings (due to incomplete documentations) in the
Doxygen output.

Change-Id: Idad4f1ecff453765b307fa40a5c1cebc0c2ce2bb
2013-05-29 13:34:12 +02:00
043e264677 gem5: The serializeAll(path) method don't have to be invoked on the root object.
The checkpoint which is produced by this save method is a little bit
different to the checkpoint which is produced by the --take-checkpoint
command. It differs in the save-parameters so_state, funcExeInst, intRegs,
_upc, _nupc, _when. Tests have shown that it probably does not affect the
course of the program execution.

Change-Id: Id776a10f2d40f71643e9edbb45d7368609309df4
2013-05-23 18:10:14 +02:00
503a40be7b gem5: save/restore moved to Gem5Controller
Change-Id: I5bda346f29d74fdfc67f73f0af83ed1e006d8616
2013-05-23 17:17:36 +02:00
084c581f0b gem5: todo-gem5.txt revised
Change-Id: I719fbf952cdd3a5a1309bd310c8af9060412f8ca
2013-05-22 17:48:09 +02:00
a6c24489f6 Revert "gem5: save/restore moved to Gem5Controller"
This reverts commit d525005990.
2013-05-22 17:38:56 +02:00
dd81913f2c Revert "gem5: The serializeAll(path) method don't have to be invoked on the root object."
This reverts commit 60735f254e.
2013-05-22 17:38:39 +02:00
a2a113c54d Revert "gem5: todo-gem5.txt revised"
This reverts commit 08c44f5d98.
2013-05-22 17:36:43 +02:00
08c44f5d98 gem5: todo-gem5.txt revised
Change-Id: Icce220e5cd15bc396a8c40c93f7df85f30e6f64e
2013-05-22 17:25:48 +02:00
60735f254e gem5: The serializeAll(path) method don't have to be invoked on the root object.
The checkpoint which is produced by this save method is a little bit
different to the checkpoint which is produced by the --take-checkpoint
command. It differs in the save-parameters so_state, funcExeInst, intRegs,
_upc, _nupc, _when. Tests have shown that it probably does not affect the
course of the program execution.

Change-Id: I19b3fc809288224532e0ed6b7910a45115cb1c5d
2013-05-22 15:56:04 +02:00
d525005990 gem5: save/restore moved to Gem5Controller
Change-Id: I0ce72f04a8de88f4f8b6c1f0bba7a9097c82e107
2013-05-22 13:54:55 +02:00
d9ba5e24ad gem5: more info about how to use and how to build
The recent information in how-to-use.txt and how-to-build.txt were
outdated.

Change-Id: I4e6536a0b56370717d6a09f4012862d300526313
2013-05-17 13:29:21 +02:00
f92557c2c2 gem5: codebase patched to compile with ag++
This changes allows us to compile the gem5 simulator with ag++. It
was tested with ag++ v0.8, built Apr 18 2013. Most of the changes
are preprocessor directives like #ifndef __puma which have been
inserted into the gem5 code. Unfortunately, a python script and a
SWIG input file have been patched, too.
Additionally, the CMake file has been updated. A single call to
"make" now invokes the ag++ (instead of the g++) compiler front
end. The new CMake target "gem5-allclean" should be used to clean
the current project when building FailGem5. In addition to cleaning
the Fail build directory, it also invokes "scons -c" in the gem5
build directory; that is, gem5 is cleaned as well.

Change-Id: I20a92f025f34f626b81e30f2c873baeba189f83b
2013-05-16 15:35:28 +02:00
95892e9688 Merge branch 'master' of ssh://vamos.informatik.uni-erlangen.de:29418/fail 2013-05-07 15:06:01 +02:00
515eb9973b Fail* CPUState: set/getRegisterContent() uses "const Register*" as 1st param
The first parameter (Register* reg) is only used as input (const-correctness).

Change-Id: I5a75a9f7378913e491a8a22872f51a385e910af6
2013-05-07 14:48:36 +02:00
72c9ba6363 Added abo-simple-arm experiment code
It is a simple and short experiment that performs single stepping
through the target. It is designed to be used with gem5 (+ ARM).

Change-Id: Id48b2b087a3650bd0298454ff168c0dbdaaae0c8
2013-05-07 14:46:19 +02:00
924b40615d gem5: revisited register implementation
The previous implementation wasn't in a working state because
the register content retrieval was buggy. (For example, RT_FP
does *not* denote a "floating point" register. Instead, it is
the frame pointer!)

Change-Id: I31fd80d374c945adaf35b47958d6437a8e2d48c3
2013-05-07 14:45:54 +02:00
619f62b09f gem5: added getMnemonic() (requires breakpoints)
Change-Id: I5a2862a0ad3c3d506189a6196682e227205ebe09
2013-05-07 14:42:59 +02:00
578e7defd0 gem5: compiles again
Change-Id: Ia95f64953af86003c4be4cbeb01a927d6638f1be
2013-05-07 14:41:52 +02:00