# Linux Kernel Module Cheat

### 24.13. gem5 fs_bigLITTLE

By default, we use `configs/example/fs.py` script.

The `--gem5-script biglittle` option enables the alternative `configs/example/arm/fs_bigLITTLE.py` script instead:

    ./run --arch aarch64 --emulator gem5 --gem5-script biglittle

Advantages over `fs.py`:

- more representative of mobile ARM SoCs, which almost always have big little cluster

- simpler than `fs.py`, and therefore easier to understand and modify

Disadvantages over `fs.py`:

- only works for ARM, not other archs

- not as many configuration options as `fs.py`, many things are hardcoded

We setup 2 big and 2 small CPUs, but `cat /proc/cpuinfo` shows 4 identical CPUs instead of 2 of two different types, likely because gem5 does not expose some informational register much like the caches: https://www.mail-archive.com/gem5-users@gem5.org/msg15426.html gem5 config.ini does show that the two big ones are `DerivO3CPU` and the small ones are `MinorCPU`.

TODO: why is the `--dtb` required despite `fs_bigLITTLE.py` having a DTB generation capability? Without it, nothing shows on terminal, and the simulation terminates with `simulate() limit reached @ 18446744073709551615`. The magic `vmlinux.vexpress_gem5_v1.20170616` works however without a DTB.

Tested on: 18c1c823feda65f8b54cd38e261c282eee01ed9f