website: Merge develop branch into stable

Change-Id: Iee2cf83c353decdfc9c37b698e045fa352cc56f3
diff --git a/_pages/documentation/general_docs/building/extras.md b/_pages/documentation/general_docs/building/extras.md
index 46cd3ce..69cd285 100644
--- a/_pages/documentation/general_docs/building/extras.md
+++ b/_pages/documentation/general_docs/building/extras.md
@@ -17,12 +17,12 @@
 The following examples show how to compile the EIO code. By adding to or modifying the extras path, any other suitable extra could be compiled in. To compile in code using EXTRAS simply execute the following
 
 ```js
- scons EXTRAS=/path/to/encumbered build/ALPHA/gem5.opt
+ scons EXTRAS=/path/to/encumbered build/<ISA>/gem5.opt
 ```
 
 In the root of this directory you should have a SConscript that uses the ```Source()``` and ```SimObject()``` scons functions that are used in the rest of M5 to compile the appropriate sources and add any SimObjects of interest. If you want to add more than one directory, you can set EXTRAS to a colon-separated list of paths.
 
-Note that EXTRAS is a "sticky" parameter, so after a value is provided to scons once, the value will be reused for future scons invocations targeting the same build directory (```build/ALPHA_SE``` in this case) as long as it is not overridden. Thus you only need to specify EXTRAS the first time you build a particular configuration or if you want to override a previously specified value. 
+Note that EXTRAS is a "sticky" parameter, so after a value is provided to scons once, the value will be reused for future scons invocations targeting the same build directory (```build/<ISA>``` in this case) as long as it is not overridden. Thus you only need to specify EXTRAS the first time you build a particular configuration or if you want to override a previously specified value.
 To run a regression with EXTRAS use a command line similar to the following:
 ```js
  ./util/regress --scons-opts = "EXTRAS=/path/to/encumbered" -j 2 quick
diff --git a/_pages/documentation/general_docs/checkpoints.md b/_pages/documentation/general_docs/checkpoints.md
index 1417381..a61c5cd 100644
--- a/_pages/documentation/general_docs/checkpoints.md
+++ b/_pages/documentation/general_docs/checkpoints.md
@@ -20,9 +20,9 @@
 Restoring from a checkpoint can usually be easily done from the command line, e.g.:
 
 ```
-  build/ALPHA/gem5.debug configs/example/fs.py -r N
+  build/<ISA>/gem5.debug configs/example/fs.py -r N
   OR
-  build/ALPHA/gem5.debug configs/example/fs.py --checkpoint-restore=N
+  build/<ISA>/gem5.debug configs/example/fs.py --checkpoint-restore=N
 ```
 
 The number N is integer that represents checkpoint number which usually starts from 1 then increases incrementally to 2,3,4...
diff --git a/_pages/documentation/general_docs/debugging_and_testing/debugging/debugger_based_debugging.md b/_pages/documentation/general_docs/debugging_and_testing/debugging/debugger_based_debugging.md
index eb2ef2b..5b6bd39 100644
--- a/_pages/documentation/general_docs/debugging_and_testing/debugging/debugger_based_debugging.md
+++ b/_pages/documentation/general_docs/debugging_and_testing/debugging/debugger_based_debugging.md
@@ -25,12 +25,12 @@
 session illustrates both of these approaches:
 
 ```
-% gdb m5/build/ALPHA/gem5.debug
+% gdb m5/build/<ISA>/gem5.debug
 GNU gdb 6.1
 Copyright 2002 Free Software Foundation, Inc.
 [...]
 (gdb) run --debug-break=2000 configs/run.py
-Starting program: /z/stever/bk/m5/build/ALPHA/gem5.debug --debug-break=2000 configs/run.py
+Starting program: /z/stever/bk/m5/build/<ISA>/gem5.debug --debug-break=2000 configs/run.py
 M5 Simulator System
 [...]
 warn: Entering event queue @ 0.  Starting simulation...
diff --git a/_pages/documentation/general_docs/debugging_and_testing/debugging/debugging_simulated_code.md b/_pages/documentation/general_docs/debugging_and_testing/debugging/debugging_simulated_code.md
index 5cc7e10..c2327ee 100644
--- a/_pages/documentation/general_docs/debugging_and_testing/debugging/debugging_simulated_code.md
+++ b/_pages/documentation/general_docs/debugging_and_testing/debugging/debugging_simulated_code.md
@@ -29,31 +29,30 @@
 To attach the remote debugger, it's necessary to have a copy of the kernel and
 of the source. Also to view the kernel's call stack, you must make sure Linux
 was built with the necessary debug configuration parameters enabled. To run the
-remote debugger, do the following:
+remote debugger, do the following (assuming host=localhost and port=7000):
 
 ```
-ziff% gdb-linux-alpha arch/alpha/boot/vmlinux
-GNU gdb
-Copyright 2002 Free Software Foundation, Inc.
-GDB is free software, covered by the GNU General Public License, and you are
-welcome to change it and/or distribute copies of it under certain conditions.
-Type "show copying" to see the conditions.
-There is absolutely no warranty for GDB.  Type "show warranty" for details.
-This GDB was configured as "--host=i686-pc-linux-gnu --target=alpha-linux"...
-(no debugging symbols found)...
-(gdb) set remote Z-packet on                [ This can be put in .gdbinit ]
-(gdb) target remote ziff:7000
-Remote debugging using ziff:7000
-0xfffffc0000496844 in strcasecmp (a=0xfffffc0000b13a80 "", b=0x0)
-    at arch/alpha/lib/strcasecmp.c:23
-23              } while (ca == cb && ca != '\0');
-(gdb)
+gdb-multiarch <path-to-linux>/vmlinux
+GNU gdb (Ubuntu 8.2-0ubuntu1~18.04) 8.2
+Copyright (C) 2018 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+Type "show copying" and "show warranty" for details.
+This GDB was configured as "x86_64-linux-gnu".
+Type "show configuration" for configuration details.
+For bug reporting instructions, please see:
+<http://www.gnu.org/software/gdb/bugs/>.
+Find the GDB manual and other documentation resources online at:
+    <http://www.gnu.org/software/gdb/documentation/>.
+
+(gdb) target remote <host>:<port>
 ```
 
 The gem5 simulator is already running and the target remote command connects to
 the already running simulator and stops it in the middle of execution. You can
 set breakpoints and use the debugger to debug the kernel. It is also possible
-to use the remote debugger to debug console code and palcode. Setting that up
+to use the remote debugger to debug console code. Setting that up
 is similar, but a how to will be left for future work.
 
 If you're using both the remote debugger and the debugger on the simulator, it
@@ -67,7 +66,7 @@
 listening on port 7001.
 
 ```
-%./build/ALPHA/gem5.debug configs/example/fs.py
+%./build/<ISA>/gem5.debug configs/example/fs.py
 ...
 making dual system
 Global frequency set at 1000000000000 ticks per second
@@ -86,32 +85,26 @@
 ## Getting a cross-architecture gdb
 
 To use a remote debugger with gem5, the most important part is that you have
-gdb compiled to work with the target system you're simulating (e.g.
-`alpha-linux` if simulating an `Alpha` target, arm-linux if simulating an
-`ARM` target, etc). It is possible to compile an non-native architecture gdb on
-an `x86` machine for example. All that must be done is add the `--target=`
+gdb compiled to work with the target system you're simulating.
+The recommended approach is to install the gdb-multiarch package,
+providing a single gdb binary usable for multiple ISAs (archs)
+
+```
+% sudo apt-get update -y
+% sudo apt-get install -y gdb-multiarch
+```
+
+It is possible to compile a non-native architecture gdb on
+the host machine as an alternative. All that must be done is add the `--target=`
 option to configure when you compile gdb. You may also get pre-compiled
 debuggers with cross compilers. See Download for links to some cross compilers
 that include debuggers.
 
 ```
-% wget http://ftp.gnu.org/gnu/gdb/gdb-6.3.tar.gz
---08:05:33--  http://ftp.gnu.org/gnu/gdb/gdb-6.3.tar.gz
-           => `gdb-6.3.tar.gz'
-Resolving ftp.gnu.org... done.
-Connecting to ftp.gnu.org[199.232.41.7]:80... connected.
-HTTP request sent, awaiting response... 200 OK
-Length: 17,374,476 [application/x-tar]
-
-100%[====================================>] 17,374,476   216.57K/s    ETA 00:00
-
-08:06:52 (216.57 KB/s) - `gdb-6.3.tar.gz' saved [17374476/17374476]
-```
-
-```
-% tar xfz gdb-6.3.tar.gz
-% cd gdb-6.3
-% ./configure --target=alpha-linux
+% wget http://ftp.gnu.org/gnu/gdb/<gdb-version>.tar.gz
+% tar xfz <gdb-version>.tar.gz
+% cd <gdb-version>
+% ./configure --target=<isa>
 <configure output....>
 % make
 <make output...this may take a while>
diff --git a/_pages/documentation/general_docs/debugging_and_testing/debugging/trace_baced_debugging.md b/_pages/documentation/general_docs/debugging_and_testing/debugging/trace_baced_debugging.md
index cfc1a8d..177f1cb 100644
--- a/_pages/documentation/general_docs/debugging_and_testing/debugging/trace_baced_debugging.md
+++ b/_pages/documentation/general_docs/debugging_and_testing/debugging/trace_baced_debugging.md
@@ -19,7 +19,7 @@
 Multiple flags can be specified by giving a list of strings, e.g.:
 
 ```
-build/ALPHA/gem5.opt --debug-flags=Bus,Cache configs/examples/fs.py
+build/<ISA>/gem5.opt --debug-flags=Bus,Cache configs/examples/fs.py
 ```
 
 would turn on a group of debug flags related to instruction execution but leave
diff --git a/_pages/documentation/general_docs/developement/coding_style.md b/_pages/documentation/general_docs/developement/coding_style.md
index 31598ba..56240d8 100644
--- a/_pages/documentation/general_docs/developement/coding_style.md
+++ b/_pages/documentation/general_docs/developement/coding_style.md
@@ -397,4 +397,4 @@
 * `warn()` and `warn_once()` should be called when some functionality isn't necessarily implemented correctly, but it might work well enough. The idea behind a `warn()` is to inform the user that if they see some strange behavior shortly after a `warn()` the description might be a good place to go looking for an error.
 
 * `hack()` should be called when some functionality isn't implemented nearly as well as it could or should be but for expediency or history sake hasn't been fixed.
-* `inform()` Provides status messages and normal operating messages to the console for the user to see, without any connotations of incorrect behavior. For example it's used when secondary CPUs being executing code on ALPHA.
+* `inform()` Provides status messages and normal operating messages to the console for the user to see, without any connotations of incorrect behavior.
diff --git a/_pages/documentation/general_docs/fullsystem/building_arm_kernel.md b/_pages/documentation/general_docs/fullsystem/building_arm_kernel.md
index 5e22321..47d85bf 100644
--- a/_pages/documentation/general_docs/fullsystem/building_arm_kernel.md
+++ b/_pages/documentation/general_docs/fullsystem/building_arm_kernel.md
@@ -34,13 +34,9 @@
 details.
 
 ## Linux 4.x
-Newer gem5 kernels for ARM (v4.x and later) are based on the vanilla Linux kernel and typically have a small number of patches to make them work better with gem5. The patches are optional and you should be able to use a vanilla kernel as well. However, this requires you to configure the kernel yourself. Newer kernels all use the VExpress\_GEM5\_V1 gem5 platform for both AArch32 and AArch64. The required DTB files to describe the hardware to the OS ship with gem5. To build them, execute this command:
+Newer gem5 kernels for ARM (v4.x and later) are based on the vanilla Linux kernel and typically have a small number of patches to make them work better with gem5. The patches are optional and you should be able to use a vanilla kernel as well. However, this requires you to configure the kernel yourself. Newer kernels all use the VExpress\_GEM5\_V1 gem5 platform for both AArch32 and AArch64.
 
-```
-make -C system/arm/dt
-```
-
-## Kernel Checkout
+# Kernel Checkout
 To checkout the kernel, execute the following command:
 
 ```
@@ -52,22 +48,7 @@
 git checkout -b gem5/v4.14
 ```
 
-## AArch32
-To compile the kernel, execute the following commands in the repository:
-
-```
-make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- gem5_defconfig
-make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j `nproc`
-```
-
-Testing the just built kernel:
-
-```
-./build/ARM/gem5.opt configs/example/fs.py --kernel=/tmp/linux-arm-gem5/vmlinux --machine-type=VExpress_GEM5_V1 \
-    --dtb-file=$PWD/system/arm/dt/armv7_gem5_v1_1cpu.dtb
-```
-
-## AArch64
+# Kernel build
 To compile the kernel, execute the following commands in the repository:
 
 ```
@@ -82,67 +63,6 @@
     --disk-image=ubuntu-18.04-arm64-docker.img
 ```
 
-# Legacy kernels (pre v4.x)
-Older gem5 kernels for ARM (pre v4.x) are based on Linaro's Linux kernel for ARM. These kernels use either the VExpress\_EMM (AArch32) or VExpress\_EMM64 (AArch64)  gem5 platform. Unlike the newer kernels, there is a separate AArch32 and AArch64 kernel repository and the device tree files are shipped with the kernel.
-
-## 32 bit kernel (AArch32)
-These are instructions to generate a 32-bit ARM Linux binary.
-
-To checkout the aarch32 kernel, execute the following command:
-
-```
-git clone https://gem5.googlesource.com/arm/linux-arm-legacy
-```
-
-The repository contains a tag per gem5 kernel release. Check the [project page](https://gem5-review.googlesource.com/#/admin/projects/arm/linux-arm-legacy) for a list of branches and release tags. To checkout a tag, execute the following in the repository:
-
-```
-git checkout -b TAGNAME
-```
-
-To compile the kernel, execute the following commands in the repository:
-
-```
-make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_gem5_server_defconfig
-make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j `nproc`
-```
-
-Testing the just built kernel:
-
-```
-./build/ARM/gem5.opt configs/example/fs.py  --kernel=/tmp/linux-arm-gem5/vmlinux \
-   --machine-type=VExpress_EMM --dtb-file=/tmp/linux-arm-gem5/arch/arm/boot/dts/vexpress-v2p-ca15-tc1-gem5.dtb 
-```
-
-## 64 bit kernel (AArch64)
-These are instructions to generate a 64-bit ARM Linux binary. 
-
-To checkout the aarch64 kernel, execute the following command:
-
-```
-git clone https://gem5.googlesource.com/arm/linux-arm64-legacy
-```
-
-The repository contains a tag per gem5 kernel release. Check the [project page](https://gem5-review.googlesource.com/#/admin/projects/arm/linux-arm64-legacy) for a list of branches and release tags. To checkout a tag, execute the following in the repository:
-
-```
-git checkout -b TAGNAME
-```
-
-To compile the kernel, execute the following commands in the repository:
-
-```
-make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- gem5_defconfig
-make ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- -j4
-```
-
-Testing the just built kernel:
-
-```
-./build/ARM/gem5.opt configs/example/fs.py --kernel=/tmp/linux-arm64-gem5/vmlinux --machine-type=VExpress_EMM64 \
-    --dtb-file=/tmp/linux-arm64-gem5/arch/arm64/boot/dts/aarch64_gem5_server.dtb --disk-image=linaro-minimal-aarch64.img
-```
-
 # Bootloaders
 There are two different bootloaders for gem5. One of 32-bit kernels and one for 64-bit kernels. They can be compiled using the following command:
 
@@ -151,5 +71,14 @@
 make -C system/arm/bootloader/arm64
 ```
 
+# Device Tree Blobs
+The required DTB files to describe the hardware to the OS ship with gem5. To build them, execute this command:
+
+```
+make -C system/arm/dt
+```
+
+We recommend to use these device tree files only if you are planning to amend them. If not, we recommend you to rely on DTB autogeneration: by running a FS script without the --dtb option, gem5 will automatically generate the DTB on the fly depending on the instantiated platform.
+
 Once you have compiled the binaries, put them in the binaries directory in your
 `M5_PATH`.
diff --git a/_pages/documentation/general_docs/fullsystem/guest_binaries.md b/_pages/documentation/general_docs/fullsystem/guest_binaries.md
index 1cbd6a3..903130b 100644
--- a/_pages/documentation/general_docs/fullsystem/guest_binaries.md
+++ b/_pages/documentation/general_docs/fullsystem/guest_binaries.md
@@ -33,7 +33,10 @@
 
   Partition table: yes
 
-  gem5 init: `/init.gem5`
+  gem5 init:
+  * default (using m5 ops): `/init.gem5`
+  * kvm (using m5 --addr ops): `/init.addr.gem5`
+  * fast models (using m5 --semi ops): `/init.semi.gem5`
 
 * <http://dist.gem5.org/dist/current/arm/disks/aarch32-ubuntu-natty-headless.img.bz2>
 
diff --git a/_pages/documentation/general_docs/gpu_models/gcn3.md b/_pages/documentation/general_docs/gpu_models/gcn3.md
index fe006a7..15b9eb3 100644
--- a/_pages/documentation/general_docs/gpu_models/gcn3.md
+++ b/_pages/documentation/general_docs/gpu_models/gcn3.md
@@ -22,15 +22,25 @@
 Thus, you should use the develop branch when running the GCN3 model.
 We expect this support to be integrated into the gem5-v21.0 release.
 
-The [gem5 repository](https://gem5.goooglesource.com/public/gem5) comes with a dockerfile located in `util/dockerfiles/gcn-gpu/`. This dockerfile contains the drivers and libraries needed to run the GPU model
+The [gem5 repository](https://gem5.goooglesource.com/public/gem5) comes with a dockerfile located in `util/dockerfiles/gcn-gpu/`. This dockerfile contains the drivers and libraries needed to run the GPU model. A pre-built version of the docker image is hosted at `gcr.io/gem5-test/gcn-gpu`.
 
 The [gem5-resources repository](https://gem5.googlesource.com/public/gem5-resources/) also comes with a sample application (square) that can be used to verify that the model runs correctly.
 
-#### Building the image
+#### Using the image
+The docker image can either be built or pulled from gcr.io
+
+To build the docker image from source:
 ```
+# Working directory: gem5/util/dockerfiles/gcn-gpu
 docker build -t <image_name> .
 ```
 
+To pull the pre-built docker image:
+```
+docker pull gcr.io/gem5-test/gcn-gpu
+```
+You can also put `gcr.io/gem5-test/gcn-gpu` as the image in the docker run command without pulling beforehand and it will be pulled automatically.
+
 #### Building gem5 using the image
 The following command assumes the gem5 directory is a subdirectory of your current directory
 ```
@@ -40,7 +50,7 @@
 #### Building a GPU application using the image
 The following command assumes the gem5-resources directory is a subdirectory of your current directory
 ```
-docker run --rm -v $PWD/gem5-resources:/gem5-resources -w /gem5-resources <image_name> make square
+docker run --rm -v $PWD/gem5-resources:$PWD/gem5-resources -w $PWD/gem5-resources/src/square <image_name> make gfx8-apu
 ```
 
 #### Running the sample application
@@ -49,8 +59,8 @@
 docker run --rm -v $PWD/gem5:/gem5 -v $PWD/gem5-resources:/gem5-resources \
                 -w /gem5 <image_name> \
                 build/GCN3_X86/gem5.opt configs/example/apu_se.py -n2 \
-                --benchmark-root=/gem5-resources/output/test-progs/square \
-                -c square
+                --benchmark-root=/gem5-resources/src/square/bin \
+                -c square.o
 ```
 
 ## **ROCm**
diff --git a/_pages/documentation/general_docs/m5ops.md b/_pages/documentation/general_docs/m5ops.md
index d5a6eaf..985a2ec 100644
--- a/_pages/documentation/general_docs/m5ops.md
+++ b/_pages/documentation/general_docs/m5ops.md
@@ -24,10 +24,13 @@
 * arm (arm-linux-gnueabihf-gcc)
 * thumb (arm-linux-gnueabihf-gcc)
 * sparc (sparc64-linux-gnu-gcc)
-* aarch64 (aarch64-linux-gnu-gcc)
+* arm64 (aarch64-linux-gnu-gcc)
+* riscv (riscv64-linux-gnu-gcc)
 
 Note if you are using a x86 system for other ISAs you need to have the cross-compiler installed. The name of the cross-compiler is shown inside the parentheses in the list above.
 
+See util/m5/README.md for more details.
+
 ## The m5 Utility (FS mode)
 
 The m5 utility (see util/m5/) can be used in FS mode to issue special instructions to trigger simulation specific functionality. It currently offers the following options:
diff --git a/_pages/documentation/general_docs/ruby/interconnection-network.md b/_pages/documentation/general_docs/ruby/interconnection-network.md
index 1774f48..dfeae63 100644
--- a/_pages/documentation/general_docs/ruby/interconnection-network.md
+++ b/_pages/documentation/general_docs/ruby/interconnection-network.md
@@ -17,7 +17,7 @@
 **Simple Network**:
 
 ```
-./build/ALPHA/gem5.debug \
+./build/<ISA>/gem5.debug \
                       configs/example/ruby_random_test.py \
                       --num-cpus=16  \
                       --num-dirs=16  \
@@ -31,7 +31,7 @@
 **Garnet network**:
 
 ```
-./build/ALPHA/gem5.debug \
+./build/<ISA>/gem5.debug \
                       configs/example/ruby_random_test.py  \
                       --num-cpus=16 \
                       --num-dirs=16  \
diff --git a/_posts/2021-03-19-gem5-21-0.md b/_posts/2021-03-19-gem5-21-0.md
new file mode 100644
index 0000000..9cda411
--- /dev/null
+++ b/_posts/2021-03-19-gem5-21-0.md
@@ -0,0 +1,68 @@
+---
+layout: post
+title:  "gem5-21.0 Released!"
+author: Jason Lowe-Power
+date:   2021-03-19
+categories: project
+---
+
+Version 21.0 marks *one full year* of gem5 releases, and on this anniversary, I think we have some of the biggest new features yet!
+This has been a very productive release with [100 issues](https://gem5.atlassian.net/), over 813  commits, and 49 unique contributors.
+
+## 21.0 New features
+
+### AMBA CHI protocol implemented in SLICC: Contributed by *Tiago Mück*
+
+This new protocol provides a single cache controller that can be reused at multiple levels of the cache hierarchy and configured to model multiple instances of MESI and MOESI cache coherency protocols.
+This implementation is based of Arm’s [AMBA 5 CHI specification](https://static.docs.arm.com/ihi0050/d/IHI0050D_amba_5_chi_architecture_spec.pdf) and provides a scalable framework for the design space exploration of large SoC designs.
+
+See [the gem5 documentation](http://www.gem5.org/documentation/general_docs/ruby/CHI/) for more details.
+There is also a [gem5 blog post](http://www.gem5.org/2020/05/29/flexible-cache.html) on this new protocol as well.
+
+### Full support for AMD's GCN3 GPU model
+
+In previous releases, this model was only partially supported.
+As of gem5 21.0, this model has been fully integrated and is tested nightly.
+This model currently only works in syscall emulation mode and requires using the gcn docker container to get the correct version of the ROCm stack.
+More information can be found in [this blog post](http://www.gem5.org/2020/05/27/modern-gpu-applications.html).
+
+With this full support, we are also providing many applications as well.
+See [gem5-resources](http://resources.gem5.org/) for more information.
+
+### RISC-V Full system Linux boot support: Contributed by *Peter Yuen*
+
+The RISC-V model in gem5 can now boot unmodified Linux!
+Additionally, we have implemented DTB generation and support the Berkeley Boot Loader as the stage 1 boot loader.
+We have also released a set of resources for you to get started: <https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/develop/src/riscv-fs/>
+
+### New/Changed APIs
+
+There are multiple places where the developers have reduced boilerplate.
+
+* **[API CHANGE]**: No more `create()` functions! Previously, every `SimObject` required a `<SimObjectParams>::create()` function to be manually defined. Forgetting to do this resulted in confusing errors. Now, this function is created for you automatically. You can still override it if you need to handle any special cases.
+* **[API CHANGE]**: `params()`: Rather than defining a typedef and the `params()` function for every `SimObject`, you can now use the `PARAMS` macro.
+
+See <http://doxygen.gem5.org/release/current/classSimObject.html#details> for more details on these two API changes.
+
+* **[API CHANGE]**: All stats are now using *new style* groups instead of the older manual stat interface.
+  * The previous API (creating stats that are not part of a `Group`) is still supported, but it is now deprecated.
+  * If a stat is not created with the new `Group` API, it may not be automatically dumped using new stat APIs (e.g., the Python API).
+  * Next release, there will be a warning for all old-style stats.
+
+### Platforms no longer support
+
+* **[USER-FACING CHANGE]**: Python 2.7 is *no longer supported*. You must use Python 3.6+.
+* CLANG minimum version is now 3.9
+* Bump minimum C++ to C++14
+
+### Other improvements and new features
+
+* Extra options to build m5ops
+* m5term improvements
+* There is a new python-based library for handling statistics. This library *works*, but hasn't been thoroughly tested yet. Stay tuned for more on this next release.
+* Many improvements and additions to unit tests
+* Cleaning up the `StaticInst` type
+* Workload API changes
+* Many updates and changes to the m5 guest utility
+* [Support for running arm64 Linux kernel v5.8](https://gem5.atlassian.net/browse/GEM5-787)
+* [Arm SCMI implemented](https://gem5.atlassian.net/browse/GEM5-768)