The utility scripts provided in this directly can be used to recreate the files needed to run Full System amdgpu. Golden versions of these files are provided in the gem5-resources repository.
These scripts are intended to be run on a Linux system with a discrete AMD GPU card running the same kernel version as the disk image which will be used for Full System simulations. To ensure the kernel versions match, it is recommended that the user uses the dd
utility to make a copy of the disk image to a secondary physical disk and then boot from that disk image.
The script collect_mmio_trace.sh
collects an MMIO trace. For this to work, MMIO tracing must be enabled in the kernel. Using the disk image approach above and/or using recent kernel versions based on Ubuntu, this is enabled by default.
Before collecting the trace, the amdgpu module must be blacklisted such that we can enable tracing before the modprobe occurs and disabled once modprobe is complete.
This can be done using either: echo 'blacklist amdgpu' >> /etc/modprobe.d/blacklist.conf
or add modprobe.blacklist=amdgpu
to kernel boot command (e.g., in grub) And then reboot.
The script will take care of the proper options and run the mmiotrace commands. The output trace will likely contain unrelated from other MMIOs and therefore will be around 500MB in size. You will want to reboot again as mmiotrace disables SMP.
The script dump_gpu_rom.sh
dumps the GPU ROM. The GPU ROM on x86 resides in the memory range 0xC0000 - 0xDFFFF. The script simply uses the dd
command to copy this range from /dev/mem. The amdgpu driver must be loaded in order for the ROM to be written to this region, so run modprobe
first.