diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 1a97b4c..492bb96 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,6 +1,124 @@
 # Version 20.1.0.0
 
-* m5.stats.dump() root argument renamed to roots to reflect the fact that it now takes a list of SimObjects
+Thank you to everyone that made this release possible!
+This has been a very productive release with [150 issues](https://gem5.atlassian.net/), over 650  commits (a 25% increase from the 20.0 release), and 58 unique contributors (a 100% increase!).
+
+## Process changes
+
+We are no longer using the "master" branch.
+Instead, we will have two branches:
+
+* "stable": This will point to the latest stable release (gem5-20.1 as of today)
+* "develop": This is the latest development code that will be merged in to the "stable" branch at each release.
+
+We suggest all *users* use the stable (default) branch.
+However, to contribute your fixes and new changes to gem5, it should be contributed to the develop branch.
+See CONTRIBUTING.md for more details.
+
+gem5 has also implemented a project code of conduct.
+See the CODE-OF-CONDUCT.md file for details.
+In the code of conduct "we pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community."
+
+## New features in 20.1
+
+### New DRAM interface: Contributed by *Wendy Elsasser*
+
+You can find details about this on the [gem5 blog](http://www.gem5.org/2020/05/27/memory-controller.html) or Wendy's talks on YouTube: [Talk on new interface and NVM](https://www.youtube.com/watch?v=t2PRoZPwwpk) and the [talk on LPDDR5](https://www.youtube.com/watch?v=ttJ9_I_Avyc)
+
+* **[PYTHON API CHANGE]**: The DRAM models are now *DRAM interfaces* which is a child of the *memory controller*. Example change shown [in the blog post](http://www.gem5.org/project/2020/07/18/gem5-20-1.html).
+  * The DRAM is split into a memory controller and a DRAM interface
+  * `SimpleMemory` is no longer a drop-in replacement for a DRAM-based memory controller.
+* LPDDR5 model added
+* NVM model added
+* New memory controller model that can use both NVM and DRAM
+
+### Improved on-chip interconnect model, HeteroGarnet: Contributed by *Srikant Bharadwaj*
+
+You can find details about this on the [gem5 blog](http://www.gem5.org/2020/05/27/heterogarnet.html) and [Srikant's talk on YouTube](https://www.youtube.com/watch?v=AH9r44r2lHA).
+
+* **[USER-FACING CHANGE]**: The network type options are now "simple" and "garnet" instead of "garnet2.0". (If "garnet2.0" is used, you will get a warning until gem5-20.2)
+* Added models for clock domain crossings and serialization/deserialization (SERDES)
+
+### Transactional memory support: Contributed by *Timothy Hayes*
+
+You can find details on the [Jira issue](https://gem5.atlassian.net/browse/GEM5-587)
+
+* gem5 now supports Arm TME (transactional memory extensions)
+* Transactional memory is only implemented in the `MESI_Three_Level_HTM` Ruby protocol, and it is only implemented in Ruby.
+* This implements a checkpointing mechanism for the architectural state and buffering of speculative memory updates.
+* IBM POWER and x86 HTM extensions have *not* been implemented.
+
+### Other new features
+
+* External simulator integrations
+  * Added support for DRAMSim3
+  * Added back support for DRAMSim2
+* Armv8-A Self Hosted Debug extension added
+* KVM support for Armv8-A  hosts without GICv2 hardware
+* Implemented Secure EL2 for Armv8-A
+
+## Removed features
+
+* Dropped support for mercurial version control
+
+## New supported platforms
+
+* GCC up to 10.2 is now supported. Minimum GCC is now 5.0.
+* Clang up to version 9. Minimum Clang is now 3.9.
+
+## Platforms no longer support
+
+* **[USER-FACING CHANGE]**: Python 2 is officially deprecated. We will drop support for Python 2 in the next release. In this release you will get a warning if you're using Python 2.
+* **[USER-FACING CHANGE]**: We have dropped support for GCC 4.X
+* **[USER-FACING CHANGE]**: We have dropped support for Scons 2.x (Note: this is the default in Ubuntu 16.04. Use pip to install a newer scons.)
+
+See <http://www.gem5.org/documentation/general_docs/building> for gem5's current dependencies.
+
+## Other changes
+
+### Deprecating "master" and "slave"
+
+* **[API CHANGE]**: The names "master" and "slave" have been deprecated
+  * Special thanks to Lakin Smith, Shivani Parekh, Eden Avivi, and Emily Brickey.
+  * Below is a guide to most of the name changes.
+  * The goal was to replace problematic language with more descriptive and precise terms.
+* There may be some bugs introduced with this change as there were many places in the Python configurations which relied on "duck typing".
+* This change is mostly backwards compatible and warning will be issued until at least gem5-20.2.
+
+```
+MasterPort -> RequestorPort
+SlavePort -> ResponsePort
+
+xbar.slave -> xbar.cpu_side
+xbar.master -> xbar.mem_side
+
+MasterId -> RequestorId
+```
+
+### Testing improvements
+
+* We now have Jenkins server (<http://jenkins.gem5.org/>) running nightly and other large tests. Special thanks to Mike Upton for setting this up!
+  * Nightly tests run the "long" regression tests (many tests added).
+  * Compiler tests run gem5 build for many targets and all compilers once a week.
+* Updated CI tester (kokoro) to use a more up-to-date environment.
+* Improved the testing infrastructure.
+  * Almost all testing resources now available in [gem5-resources repository](https://gem5.googlesource.com/public/gem5-resources/).
+  * Generally cleaned up the `tests/` directory in mainline gem5.
+  * Many general testlib improvements.
+
+### More changes
+
+* **[PYTHON API CHANGE]**: m5.stats.dump() root argument renamed to roots to reflect the fact that it now takes a list of SimObjects
+* **[USER-FACING CHANGE]**: Checkpoint compatibility may be broken by the following changes
+  * <https://gem5-review.googlesource.com/c/public/gem5/+/25145>
+  * <https://gem5-review.googlesource.com/c/public/gem5/+/31874>
+* **[API CHANGE]** Changed `setCPU` to `setThreadContext` in Interrupts
+* Added a `Compressor` namespace.
+* **[API CHANGE]** The `Callback` class was removed and replaced with C++ lambdas.
+* Many objects' stats have been updated to the "new" stats style.
+* Many more objects have had their APIs formalized. See <http://www.gem5.org/documentation/general_docs/gem5-apis>
+
+----------------------------------------------------------------------------------------------------
 
 # Version 20.0.0.3
 
