[gem5-dev] Change in gem5/gem5[develop]: util: Add scripts to recreate amdgpu ROM and MMIOs

2021-06-11 Thread Matthew Poremba (Gerrit) via gem5-dev
Matthew Poremba has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/46162 )


Change subject: util: Add scripts to recreate amdgpu ROM and MMIOs
..

util: Add scripts to recreate amdgpu ROM and MMIOs

Although the binary ROM blob and MMIO trace will be placed in
gem5-resources later as 'golden' versions, the scripts are added to
provide instructions for power users of Full System amdgpu that may want
to recreate the files themselves or use a GPU other than the Vega10 GPU
currently modeled.

Change-Id: Ica7ef3b9820b30be32a148ce6cf1d2f81dc2adf9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/46162
Tested-by: kokoro 
Reviewed-by: Matt Sinclair 
Reviewed-by: Jason Lowe-Power 
Maintainer: Matt Sinclair 
---
A util/amdgpu/fs_files/README.md
A util/amdgpu/fs_files/collect_mmio_trace.sh
A util/amdgpu/fs_files/dump_gpu_rom.sh
3 files changed, 148 insertions(+), 0 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, but someone else must approve
  Matt Sinclair: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/util/amdgpu/fs_files/README.md b/util/amdgpu/fs_files/README.md
new file mode 100644
index 000..c0ca316
--- /dev/null
+++ b/util/amdgpu/fs_files/README.md
@@ -0,0 +1,38 @@
+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.
+
+# MMIO Trace collection
+
+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.
+
+# GPU ROM Dump
+
+The script `dump_gpu_rom.sh` dumps the GPU ROM. The GPU ROM on x86 resides
+in the memory range 0xC - 0xD. 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.
diff --git a/util/amdgpu/fs_files/collect_mmio_trace.sh  
b/util/amdgpu/fs_files/collect_mmio_trace.sh

new file mode 100755
index 000..7dbaade
--- /dev/null
+++ b/util/amdgpu/fs_files/collect_mmio_trace.sh
@@ -0,0 +1,67 @@
+# Copyright (c) 2021 Advanced Micro Devices, Inc.
+# All rights reserved.
+#
+# For use for simulation and test purposes only
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are  
met:

+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright  
notice,

+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from this
+# software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS"

+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  
PURPOSE

+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF  

[gem5-dev] Change in gem5/gem5[develop]: util: Add scripts to recreate amdgpu ROM and MMIOs

2021-05-28 Thread Matthew Poremba (Gerrit) via gem5-dev
Matthew Poremba has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/46162 )



Change subject: util: Add scripts to recreate amdgpu ROM and MMIOs
..

util: Add scripts to recreate amdgpu ROM and MMIOs

Although the binary ROM blob and MMIO trace will be placed in
gem5-resources later as 'golden' versions, the scripts are added to
provide instructions for power users of Full System amdgpu that may want
to recreate the files themselves or use a GPU other than the Vega10 GPU
currently modeled.

Change-Id: Ica7ef3b9820b30be32a148ce6cf1d2f81dc2adf9
---
A util/amdgpu/fs_files/README.md
A util/amdgpu/fs_files/collect_mmio_trace.sh
A util/amdgpu/fs_files/dump_gpu_rom.sh
3 files changed, 148 insertions(+), 0 deletions(-)



diff --git a/util/amdgpu/fs_files/README.md b/util/amdgpu/fs_files/README.md
new file mode 100644
index 000..c0ca316
--- /dev/null
+++ b/util/amdgpu/fs_files/README.md
@@ -0,0 +1,38 @@
+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.
+
+# MMIO Trace collection
+
+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.
+
+# GPU ROM Dump
+
+The script `dump_gpu_rom.sh` dumps the GPU ROM. The GPU ROM on x86 resides
+in the memory range 0xC - 0xD. 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.
diff --git a/util/amdgpu/fs_files/collect_mmio_trace.sh  
b/util/amdgpu/fs_files/collect_mmio_trace.sh

new file mode 100755
index 000..8c04783
--- /dev/null
+++ b/util/amdgpu/fs_files/collect_mmio_trace.sh
@@ -0,0 +1,67 @@
+# Copyright (c) 2019 Advanced Micro Devices, Inc.
+# All rights reserved.
+#
+# For use for simulation and test purposes only
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are  
met:

+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright  
notice,

+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from this
+# software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS"

+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR  
PURPOSE

+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF  
THE

+# POSSIBILITY OF SUCH DAMAGE.
+
+
+# This script collects the MMIO trace during initialization of GPU driver.
+# Before running this, we need to disable the drm module in use.
+# For AMD GPUs do either:
+# echo 'blacklist amdgpu' >> /etc/modprobe.d/blacklist.conf
+# or
+# add 'modprobe.blacklist=amdgpu' to your kernel command
+#