84 Commits

Author SHA1 Message Date
36bd266830 monitor 2018-04-10 14:53:39 +01:00
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
294a8c2424 docker: crate docker host setup
readme: standardize keyboard input notation to the format: Ctrl-C
2018-04-08 10:27:26 +01:00
9405b35ad2 Create data/ dir, move cli, 9p and readfile there. 2018-04-06 01:02:41 +01:00
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
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
9afaecec87 readme: gem5 tracing.
Fix some parsec readme errors after missed ./run flag updates.
2018-03-29 18:24:25 +01:00
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
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
f74e001789 readme: m5 readfile
gitignore: trace-
2018-03-28 22:17:00 +01:00
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
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
b13595273e run: make text mode (-n) the default
Rename the opposite graphics mode to -x.
2018-03-24 22:48:41 +00:00
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
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
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
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
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
039b8a498c OpenBLAS
Also don't add br2_local by default, default params are insane.
2018-03-14 12:26:49 +00:00
13e840df9e gem5: namespace checkpoints by arch
Also refactor common gem5 x86 and arm command parts
2018-03-13 13:14:32 +00:00
77d2e0a8a5 A bunch of tiny fixes 2018-03-12 04:37:46 +00:00
b8413532a5 Build gem5 through buildroot
Oh, btw, also make it work, since the build was completely broken since
the recent -K refactoring :0)
2018-03-12 03:56:18 +00:00
7b08433840 9p mount the output directory.
This is in preparation for moving parsec to 9p once we get it working on gem5.

We'll document it then when everything is working.
2018-03-11 22:00:55 +00:00
04db718441 qemu: 9p host guest directory sharing 2018-03-09 17:14:10 +00:00
c8003c3389 kvm 2018-03-09 07:31:24 +00:00
8a6dfdca43 Fix gem5 GDB debug 2018-02-28 03:24:28 +00:00
2092180ac8 Update GEM5 to master to fix x86 boot via 3feeb994ae613fd6b3734c1a991285b2ecbd1946
See also: http://gem5-users.gem5.narkive.com/CQh9J6fU/fail-to-run-fs-mode-with-linux-kernel-v4-8-13-and-ubuntu-image-16-04-1

Start sketching how to tweak system parameters, number of CPUs works, caches don't.
2018-02-25 20:27:35 +00:00
2eff007f7c GEM5 checkpoint switch to HPI for benchmarking.
Don't pass -e on checkpoint restore.

Add benchmarks to how much GEM5 is slower than QEMU.

Rename Kernel boot command line arguments to match kernel docs name.

Document how to pass extra options to GEM5.

Start listing interesting benchmarks to run on GEM5.

Add an openmp hello world.
2018-02-25 10:59:28 +00:00
baca62a883 Allow passing options to gem5 itself instead of fs.py 2018-02-23 04:55:17 +00:00
4a9469d83c GEM5 aarch64 2018-02-22 18:50:27 +00:00
ff71f19fa6 GEM5 don't pass norandmaps twice 2018-02-22 08:39:03 +00:00
80e299850d GEM5 vm GDB debug 2018-02-22 08:35:11 +00:00
2c4a9476be Fix x86 build with GEM5. Boot still fails as before.
Use ./run -g instead of ./rungem5.

More convenient GEM5 kernel command line options with -e differentially.
2018-02-22 00:23:57 +00:00
33ca2b29e2 Fix MIPS BR2_PACKAGE_LINUX_TOOLS_GPIO build
Update mips for snapshot and initrd features.

Document MIPS limitations.

Improve description of test procedure
2018-02-17 10:06:00 +00:00
ee622c2be5 Fix "./run -a arm -i" initrd 2018-02-17 08:47:03 +00:00
b3868a3b00 initrd 2018-02-15 23:26:47 +00:00
66e7208364 Make aarch64 boot again and explain its limitations better.
Restore lkmc_min that was accidentaly removed.

Explain how to remove modules that fail to build.
2018-02-14 07:56:35 +00:00
5ae702c71c Use qcow2 by default for savevm, loadvm.
Create shortcuts for -t linux-reconfigure and -t host-qemu-reconfigure.
2018-02-14 06:16:52 +00:00
254c8bf42e adoc
Semi automated conversion, in part because Pandoc is kind of buggy for adoc:

Some of the commands were along the lines:

    for f in *.md; do pandoc --atx-headers --base-header-level=3 -o ${f%.md}.adoc --wrap=none $f; done
    sed -Ei '/\[\[.*\]\]/d' *.adoc
    while read -r f; do cat $f; echo; done <f >g
2018-02-14 04:26:07 +00:00
c771b40913 rand_check_poweroff.sh + random stuff 2018-02-08 06:36:13 +00:00
c052a83205 nokaslr, thanks to @dakami at close #12 2018-02-01 20:27:43 +00:00
6c51ecaf7b split build and run scripts due to option conflicts
Remove -v from travis as it blew log length
2017-11-02 17:51:38 +00:00
d7569bec0c travis 12: &>/dev/null on getopts was a bad, bad idea 2017-11-02 17:13:37 +00:00
5a2680c985 travis 10: forward j o make-host.sh 2017-11-02 16:54:25 +00:00
afb2d27da6 travis 8: ok that didnt help, now V=1 2017-11-02 15:57:28 +00:00
0f52efe935 travis 7: nproc appears not present? 2017-11-02 15:47:34 +00:00
004d7a80c2 add .travis.yml 2017-11-02 14:25:31 +00:00
fa5c64a0b0 Make X11 optional 2017-11-01 14:18:31 +00:00
456bcce73f Add libsdl2-dev dependency, spotted by @alokprasad at #5 2017-11-01 10:37:39 +00:00
d67626255e run: time before env to use bash builtin and get decent format, runqemu: remove spaces from cmd to make copy and paste on SO easier 2017-10-18 14:45:51 +01:00