Commit Graph

263 Commits

Author SHA1 Message Date
Ciro Santilli
839271efd6 rand_check: move docs to readme, create norandmaps section 2018-07-09 17:44:34 +01:00
Ciro Santilli
20b9961233 run: fix extra emulator args that were broken by -X 2018-06-27 17:58:54 +01:00
Ciro Santilli
1721f184d6 gem5: track build and run variants separately with -M and -N
Otherwise, checking out branches is too insane, as it does not
update the worktrees, even though the gem5/gem5 module was updated.

gem5: expose build types, document debug builds.

simultaneous runs: store stdout and stderr on a file to allow running
all from a single terminal on the background cleanly.
2018-06-27 16:31:24 +01:00
Ciro Santilli
7bbb2a813e gem5: fix -X-b, fs_bigLITTLE checkpoint restore, checkpoints are just dirs on backend 2018-06-18 16:18:05 +01:00
Ciro Santilli
18c1c823fe gem5: integrate fs_bigLITTLE.py into run 2018-06-17 12:06:29 +01:00
Ciro Santilli
fa7065f0d4 run: save run.sh to the right directory for qemu 2018-06-14 10:44:40 +01:00
Ciro Santilli
e91871611a run: forward -n to -u 2018-06-12 14:50:03 +01:00
Ciro Santilli
28c70a3824 run: support multiple simultaneous runs and run output directories 2018-06-12 12:37:31 +01:00
Ciro Santilli
b562d8dfe7 gem5: support variants 2018-06-10 08:57:39 +01:00
Ciro Santilli
335adec68a qemu: don't persist disk changes by default 2018-06-09 13:41:08 +01:00
Ciro Santilli
61c5162fa6 linux: introduce build variants selectable at runtime 2018-06-07 05:26:04 +01:00
Ciro Santilli
32ccda88c8 prebuilt: allow running prebuilt images 2018-05-28 19:36:07 +01:00
Ciro Santilli
3cebbb9591 graphics: arm -M virt does have graphics actually 2018-05-24 15:43:04 +01:00
Ciro Santilli
8cd2659a60 run: improve -drive file quoting to be saner 2018-05-21 11:27:34 +01:00
Ciro Santilli
b992163d4e gem5: possible to edit python in tree, factor arm and aarch64 build
readme: stress kills gem5, some gem5 builds much slower than others
2018-05-02 00:14:23 +01:00
Ciro Santilli
7c16eb6ec1 run: pass Ctrl+C to GDB when using -D 2018-04-26 14:47:40 +01:00
Ciro Santilli
ab21ef58de trace2line: gem5 support
As noted however, it is potentially too slow to be useful.

run: unify gem5 and qemu tracing under -T

readme: overhaul tracing documentation from what I've learnt from trace2line
2018-04-26 00:23:44 +01:00
Ciro Santilli
f10ef3a467 bench-all: add build benchmarks and make all benchmarks options
run: fix ./run -gu broken behaviour. Document ./tmu window switch failure.

readme: move travis failed attempt to readme.
2018-04-22 21:09:17 +01:00
Ciro Santilli
2bddcc2891 build: unify QEMU and gem5 kernel configs! The last one!
Split optional and required kernel configs into separate files.

readme: describe how our kernel configs are generated from Buildroot

readme: document QEMU `-no-reboot` and speculate gem5 `panic_on_panic`
in preparation for some more automated bisection with ktest.
2018-04-21 11:50:02 +01:00
Ciro Santilli
759fb7b7c8 run: move run.sh into out/arch/qemu or out/arch/gem5 subdirs
This allows to compare both commands as the run.sh won't overwritten.
2018-04-19 23:51:21 +01:00
Ciro Santilli
af210a7671 Move arm to virt armv7, unify arm QEMU and gem5 builds
gem5 requires armv7, and we learnt that the versatiledb we were using
was pre-v7.

We could have moved to -M vexpress-*, but in the end decided to go for
-M virt due to its simpliciy, and uniformity with aarch64.

platform_device: does not work anymore and was removed, since it was tied
to versatilepb.

We left a mention on the README and removed all in tree source. The QEMU
patch is still left as it was.

As a consequence, the linux tree had no other patches, and we now use
vanilla linux by default, which is a great thing for reproducibility.

Another consequence is the /poweroff.out works for arm -M virt,
and we removed all mentions of the problem.
2018-04-19 23:38:17 +01:00
Ciro Santilli
2c084f5fb2 run: create -F option to run base64 encoded command after busybox init
Fix ./run -h which was showing the build help instead.
2018-04-19 08:57:35 +01:00
Ciro Santilli
9805d333ea tc: create helper to access toolchain tools 2018-04-19 08:24:10 +01:00
Ciro Santilli
b5d64142e9 readme: explain how to use dynamic debugging for boot messages
run: pass the console_msg_format=syslog boot parameter by default,
to allow seeing what is the priority of messages on the terminal.

Document printk better.
2018-04-18 15:04:19 +01:00
Ciro Santilli
5698a5ed2b build: move br2_cli.gitignore to out/ 2018-04-18 14:06:48 +01:00
Ciro Santilli
f4eed4163b scripts: factor out benchmarks and run further with ./eeval and common_bench_cmd 2018-04-18 12:47:43 +01:00
Ciro Santilli
72e9fcc4b0 proc_events.c: comment out aarch64 2018-04-17 09:22:20 +01:00
Ciro Santilli
bfba11afdd run: add qemu options directly into run
readme: add ascii tmux split screenshot to preamble
2018-04-16 01:09:11 +01:00
Ciro Santilli
51e31cdc29 x86_64: rdstc
arm: attempt pmccntr, but didn't work, TODO why: no QEMU support?
2018-04-15 14:10:21 +01:00
Ciro Santilli
08abfb1e85 run: Ctrl+C works and gets passed to guest... at last!
readme: document graphics failures on arm and aarch64 further.
2018-04-11 01:08:30 +01:00
Ciro Santilli
9e79b9b06f Save .log output files to out/arch/
This is cleaner as it removes yet another .gitignore rule and allows
for one command per arch.

This was prompted by the recent Docker patch creating files as root,
which then breaks future host runs.

Also separate all arguments by newlines. This:

- makes it much easier to minimize when reporting QEMU bugs
- shows the full command on the screen despite line wrapping being turned off
  by one of the annoying emulators, to be investigated.

The commands are not yet pristine, because:

- there are some leading spaces
- options not sorted

but it is already a huge improvement, and those operations are now be easy from Vim.

The general strategy is:

- end every variable containing a command with a newline
- when expanding such variables, don't add an extra newline
2018-04-08 17:49:14 +01:00
Ciro Santilli
294a8c2424 docker: crate docker host setup
readme: standardize keyboard input notation to the format: Ctrl-C
2018-04-08 10:27:26 +01:00
Ciro Santilli
9405b35ad2 Create data/ dir, move cli, 9p and readfile there. 2018-04-06 01:02:41 +01:00
Ciro Santilli
f482f24f87 readme: explain how to run benchmarks with readfile straight out
gem5 cache automate benchmarks, and remove results that were scattered all over.

Move console fun under linux kernel section, since not important enough
for getting started.

Set arch x86_64 by default through common on all scripts.
2018-04-03 22:28:53 +01:00
Ciro Santilli
5235854384 Create the cli.gitignore mechanism to pass extra default cli options
Document that X11 mouse is not moving.

Convert x='' to x= on all scripts, and also fix case ;; indentations.

Add dummy value to QEMU's -trace enable= to prevent warning.

Expand built-in package choice rationale.
2018-03-30 17:03:17 +01:00
Ciro Santilli
9afaecec87 readme: gem5 tracing.
Fix some parsec readme errors after missed ./run flag updates.
2018-03-29 18:24:25 +01:00
Ciro Santilli
9fd72c786f Move all build and run output to out/$arch/
Most of it was present inside buildroot/output.* and the rest scattered
on top level.

This came about for the n-th time when we were reviewing QEMU trace file
locations.

On one hand, it would be cool to have per arch traces.

This made buildroot/output.${arch}~/ a natural choice.

But on the other, those traces have nothing to do with Buildroot,
and could potentially interfere with Buildroot build files.

It also feels nicer to have buildroot/ pristine source code only,
and keep all output under a single directory out/
2018-03-29 02:08:18 +01:00
Ciro Santilli
01a84e7f79 OK, direct the annoying traces to the output folder
Otherwise it was getting messy to distinguish between trace-events
and trace-<pid> in the .gitignore.

Now only the latest trace will be kept, with a fixed name.
2018-03-28 23:09:01 +01:00
Ciro Santilli
f74e001789 readme: m5 readfile
gitignore: trace-
2018-03-28 22:17:00 +01:00
Ciro Santilli
ac67ce3643 Login without asking for the username
We have wanted to do this since forever, but the last straw was gem5 aarch64,
which runs too fast, and makes it very hard to write "root" withing 60 seconds!

Another possibility to solve that would have been to find an answer for:
https://unix.stackexchange.com/questions/340333/how-can-i-get-bin-login-to-not-timeout
which we didn't, but not typing root at all is even better.

Take this opportunity to document how to login into user0.

sshd: automate and document further

gdbserver: automatically startup internet on /gdbserver.sh
2018-03-26 13:19:54 +01:00
Ciro Santilli
2656202dff init: disable all userland processes started from init
In order to make the system easier to understand.

These include:

* networking
* klogd and syslogd. TODO what are those for? I could not see anything useful that they do.

Also get rid of the useless S20random thing while we are at it.
2018-03-25 19:06:30 +01:00
Ciro Santilli
b13595273e run: make text mode (-n) the default
Rename the opposite graphics mode to -x.
2018-03-24 22:48:41 +00:00
Ciro Santilli
6e9f3dcf23 Document gem5 userland debugging
This lead to an infinite chaing of refactorings:

Fix arm and aarch64 lx-symbols

This was just by chance, a continue GDB command was needed before running it.

I noticed that there is no more need for the x86 GDB --ex 'set arch i386:x86-64:intel'
thing and unified all archs. TODO bisect where that was fixed and understand why.

Add debug kernel configs for gem5 kernel.

Document gem5 aarch64 gdb debug doesn't work.

Document tmux split pane action.
2018-03-23 20:55:26 +00:00
Ciro Santilli
29908dffb2 Disable networking at runtime with lkmc_nonet cli instead of build
This is necessary because qemu and gem5 now use the same build folder.

Separate ./run -e and -f for kernel options before and after the ' - '.
This was already the better thing to do when -E was introduced,
but lkmc_nonet prompted me to do it nicer now.

Use the common script to find the out_dir on every toplevel script.

Include usage man pages on README.
2018-03-22 02:47:14 +00:00
Ciro Santilli
275426ef44 Use a single build for aarch64 qemu and gem5!
Document the minimal aarch64 boot.

Rename -c to -B for uniformity with -b.

Add help for ./run and ./build options.
2018-03-21 11:35:30 +00:00
Ciro Santilli
a5b35bef11 Enable either ext2, initrd or initramfs for x86, arm and aarch64
Mention that initrd and initramfs must fit into memory.

Fix missing stdout when ./run -d is used.

Ignore ./run -n for non x86.
2018-03-16 16:34:57 +00:00
Ciro Santilli
e8f09a76e6 Add a shortcute for /eval.sh
Create /eval_base64.sh to overcome quoting and newline limitations.

Documente poweroff's failure on readme.
2018-03-14 21:13:45 +00:00
Ciro Santilli
039b8a498c OpenBLAS
Also don't add br2_local by default, default params are insane.
2018-03-14 12:26:49 +00:00
Ciro Santilli
13e840df9e gem5: namespace checkpoints by arch
Also refactor common gem5 x86 and arm command parts
2018-03-13 13:14:32 +00:00
Ciro Santilli
77d2e0a8a5 A bunch of tiny fixes 2018-03-12 04:37:46 +00:00