diff --git a/MAINTAINERS b/MAINTAINERS
index 81625f036bd..2ddc3413b0f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -137,8 +137,8 @@ Overall TCG CPUs
 M: Richard Henderson <richard.henderson@linaro.org>
 R: Paolo Bonzini <pbonzini@redhat.com>
 S: Maintained
-F: softmmu/cpus.c
-F: softmmu/watchpoint.c
+F: system/cpus.c
+F: system/watchpoint.c
 F: cpus-common.c
 F: page-vary.c
 F: page-vary-common.c
@@ -2108,7 +2108,7 @@ S: Maintained
 F: docs/interop/virtio-balloon-stats.rst
 F: hw/virtio/virtio-balloon*.c
 F: include/hw/virtio/virtio-balloon.h
-F: softmmu/balloon.c
+F: system/balloon.c
 F: include/sysemu/balloon.h
 
 virtio-9p
@@ -2788,7 +2788,7 @@ Device Tree
 M: Alistair Francis <alistair.francis@wdc.com>
 R: David Gibson <david@gibson.dropbear.id.au>
 S: Maintained
-F: softmmu/device_tree.c
+F: system/device_tree.c
 F: include/sysemu/device_tree.h
 
 Dump
@@ -2844,11 +2844,11 @@ F: include/exec/memory.h
 F: include/exec/ram_addr.h
 F: include/exec/ramblock.h
 F: include/sysemu/memory_mapping.h
-F: softmmu/dma-helpers.c
-F: softmmu/ioport.c
-F: softmmu/memory.c
-F: softmmu/memory_mapping.c
-F: softmmu/physmem.c
+F: system/dma-helpers.c
+F: system/ioport.c
+F: system/memory.c
+F: system/memory_mapping.c
+F: system/physmem.c
 F: include/exec/memory-internal.h
 F: scripts/coccinelle/memory-region-housekeeping.cocci
 
@@ -2901,13 +2901,13 @@ F: include/sysemu/runstate.h
 F: include/sysemu/runstate-action.h
 F: util/main-loop.c
 F: util/qemu-timer.c
-F: softmmu/vl.c
-F: softmmu/main.c
-F: softmmu/cpus.c
-F: softmmu/cpu-throttle.c
-F: softmmu/cpu-timers.c
-F: softmmu/icount.c
-F: softmmu/runstate*
+F: system/vl.c
+F: system/main.c
+F: system/cpus.c
+F: system/cpu-throttle.c
+F: system/cpu-timers.c
+F: system/icount.c
+F: system/runstate*
 F: qapi/run-state.json
 
 Read, Copy, Update (RCU)
@@ -3081,7 +3081,7 @@ F: qapi/qom.json
 F: qapi/qdev.json
 F: scripts/coccinelle/qom-parent-type.cocci
 F: scripts/qom-cast-macro-clean-cocci-gen.py
-F: softmmu/qdev-monitor.c
+F: system/qdev-monitor.c
 F: stubs/qdev.c
 F: qom/
 F: tests/unit/check-qom-interface.c
@@ -3115,7 +3115,7 @@ M: Thomas Huth <thuth@redhat.com>
 M: Laurent Vivier <lvivier@redhat.com>
 R: Paolo Bonzini <pbonzini@redhat.com>
 S: Maintained
-F: softmmu/qtest.c
+F: system/qtest.c
 F: accel/qtest/
 F: tests/qtest/
 F: docs/devel/qgraph.rst
@@ -3191,7 +3191,7 @@ F: scripts/simpletrace.py
 TPM
 M: Stefan Berger <stefanb@linux.ibm.com>
 S: Maintained
-F: softmmu/tpm*
+F: system/tpm*
 F: hw/tpm/*
 F: include/hw/acpi/tpm.h
 F: include/sysemu/tpm*
@@ -3226,7 +3226,7 @@ F: util/userfaultfd.c
 Migration dirty limit and dirty page rate
 M: Hyman Huang <yong.huang@smartx.com>
 S: Maintained
-F: softmmu/dirtylimit.c
+F: system/dirtylimit.c
 F: include/sysemu/dirtylimit.h
 F: migration/dirtyrate.c
 F: migration/dirtyrate.h
@@ -3250,7 +3250,7 @@ F: scripts/xml-preprocess*
 Seccomp
 M: Daniel P. Berrange <berrange@redhat.com>
 S: Odd Fixes
-F: softmmu/qemu-seccomp.c
+F: system/qemu-seccomp.c
 F: include/sysemu/seccomp.h
 F: tests/unit/test-seccomp.c
 
@@ -3669,7 +3669,7 @@ T: git https://github.com/stefanha/qemu.git block
 Bootdevice
 M: Gonglei <arei.gonglei@huawei.com>
 S: Maintained
-F: softmmu/bootdevice.c
+F: system/bootdevice.c
 
 Quorum
 M: Alberto Garcia <berto@igalia.com>
diff --git a/docs/devel/qtest.rst b/docs/devel/qtest.rst
index 0455aa06ab2..c5b8546b3eb 100644
--- a/docs/devel/qtest.rst
+++ b/docs/devel/qtest.rst
@@ -81,7 +81,7 @@ which you can run manually.
 QTest Protocol
 --------------
 
-.. kernel-doc:: softmmu/qtest.c
+.. kernel-doc:: system/qtest.c
    :doc: QTest Protocol
 
 
diff --git a/include/sysemu/runstate-action.h b/include/sysemu/runstate-action.h
index cff45a047bf..db4e3099ae5 100644
--- a/include/sysemu/runstate-action.h
+++ b/include/sysemu/runstate-action.h
@@ -11,7 +11,7 @@
 
 #include "qapi/qapi-commands-run-state.h"
 
-/* in softmmu/runstate-action.c */
+/* in system/runstate-action.c */
 extern RebootAction reboot_action;
 extern ShutdownAction shutdown_action;
 extern PanicAction panic_action;
diff --git a/meson.build b/meson.build
index 497a85eb9fe..05387853af8 100644
--- a/meson.build
+++ b/meson.build
@@ -3307,7 +3307,7 @@ if have_system
     'hw/gpio',
     'migration',
     'net',
-    'softmmu',
+    'system',
     'ui',
     'hw/remote',
   ]
@@ -3434,7 +3434,7 @@ endif
 common_ss.add(files('cpus-common.c'))
 specific_ss.add(files('cpu.c'))
 
-subdir('softmmu')
+subdir('system')
 
 # Work around a gcc bug/misfeature wherein constant propagation looks
 # through an alias:
@@ -3813,14 +3813,14 @@ foreach target : target_dirs
     execs = [{
       'name': 'qemu-system-' + target_name,
       'win_subsystem': 'console',
-      'sources': files('softmmu/main.c'),
+      'sources': files('system/main.c'),
       'dependencies': []
     }]
     if targetos == 'windows' and (sdl.found() or gtk.found())
       execs += [{
         'name': 'qemu-system-' + target_name + 'w',
         'win_subsystem': 'windows',
-        'sources': files('softmmu/main.c'),
+        'sources': files('system/main.c'),
         'dependencies': []
       }]
     endif
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 1ad9ccb74ba..6e4100d2a41 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -466,7 +466,7 @@ sub top_of_kernel_tree {
 	my @tree_check = (
 		"COPYING", "MAINTAINERS", "Makefile",
 		"README.rst", "docs", "VERSION",
-		"linux-user", "softmmu"
+		"linux-user", "system"
 	);
 
 	foreach my $check (@tree_check) {
diff --git a/scripts/coverity-scan/COMPONENTS.md b/scripts/coverity-scan/COMPONENTS.md
index 883da95aff2..0e62f10aad3 100644
--- a/scripts/coverity-scan/COMPONENTS.md
+++ b/scripts/coverity-scan/COMPONENTS.md
@@ -148,7 +148,7 @@ tcg
   ~ (/qemu)?(/accel/tcg|/replay|/tcg)/.*
 
 sysemu
-  ~ (/qemu)?(/softmmu/.*|/accel/.*)
+  ~ (/qemu)?(/system/.*|/accel/.*)
 
 (headers)
   ~ (/qemu)?(/include/.*)
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index e5499b94b4f..02fa828100e 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -796,7 +796,7 @@ sub top_of_tree {
         && (-d "${lk_path}docs")
         && (-f "${lk_path}VERSION")
         && (-d "${lk_path}linux-user/")
-        && (-d "${lk_path}softmmu/")) {
+        && (-d "${lk_path}system/")) {
 	return 1;
     }
     return 0;
diff --git a/scripts/oss-fuzz/build.sh b/scripts/oss-fuzz/build.sh
index 3bda0d72c72..5238f833435 100755
--- a/scripts/oss-fuzz/build.sh
+++ b/scripts/oss-fuzz/build.sh
@@ -43,10 +43,10 @@ EXTRA_CFLAGS="$CFLAGS -U __OPTIMIZE__"
 if ! { [ -e "./COPYING" ] &&
    [ -e "./MAINTAINERS" ] &&
    [ -e "./Makefile" ] &&
-   [ -e "./docs" ] &&
+   [ -d "./docs" ] &&
    [ -e "./VERSION" ] &&
-   [ -e "./linux-user" ] &&
-   [ -e "./softmmu" ];} ; then
+   [ -d "./linux-user" ] &&
+   [ -d "./system" ];} ; then
     fatal "Please run the script from the top of the QEMU tree"
 fi
 
diff --git a/softmmu/trace.h b/softmmu/trace.h
deleted file mode 100644
index 2ad10115726..00000000000
--- a/softmmu/trace.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "trace/trace-softmmu.h"
diff --git a/softmmu/arch_init.c b/system/arch_init.c
similarity index 100%
rename from softmmu/arch_init.c
rename to system/arch_init.c
diff --git a/softmmu/async-teardown.c b/system/async-teardown.c
similarity index 100%
rename from softmmu/async-teardown.c
rename to system/async-teardown.c
diff --git a/softmmu/balloon.c b/system/balloon.c
similarity index 100%
rename from softmmu/balloon.c
rename to system/balloon.c
diff --git a/softmmu/bootdevice.c b/system/bootdevice.c
similarity index 100%
rename from softmmu/bootdevice.c
rename to system/bootdevice.c
diff --git a/softmmu/cpu-throttle.c b/system/cpu-throttle.c
similarity index 100%
rename from softmmu/cpu-throttle.c
rename to system/cpu-throttle.c
diff --git a/softmmu/cpu-timers.c b/system/cpu-timers.c
similarity index 100%
rename from softmmu/cpu-timers.c
rename to system/cpu-timers.c
diff --git a/softmmu/cpus.c b/system/cpus.c
similarity index 100%
rename from softmmu/cpus.c
rename to system/cpus.c
diff --git a/softmmu/datadir.c b/system/datadir.c
similarity index 100%
rename from softmmu/datadir.c
rename to system/datadir.c
diff --git a/softmmu/device_tree.c b/system/device_tree.c
similarity index 100%
rename from softmmu/device_tree.c
rename to system/device_tree.c
diff --git a/softmmu/dirtylimit.c b/system/dirtylimit.c
similarity index 100%
rename from softmmu/dirtylimit.c
rename to system/dirtylimit.c
diff --git a/softmmu/dma-helpers.c b/system/dma-helpers.c
similarity index 100%
rename from softmmu/dma-helpers.c
rename to system/dma-helpers.c
diff --git a/softmmu/globals.c b/system/globals.c
similarity index 100%
rename from softmmu/globals.c
rename to system/globals.c
diff --git a/softmmu/icount.c b/system/icount.c
similarity index 100%
rename from softmmu/icount.c
rename to system/icount.c
diff --git a/softmmu/ioport.c b/system/ioport.c
similarity index 100%
rename from softmmu/ioport.c
rename to system/ioport.c
diff --git a/softmmu/main.c b/system/main.c
similarity index 100%
rename from softmmu/main.c
rename to system/main.c
diff --git a/softmmu/memory.c b/system/memory.c
similarity index 100%
rename from softmmu/memory.c
rename to system/memory.c
diff --git a/softmmu/memory_mapping.c b/system/memory_mapping.c
similarity index 100%
rename from softmmu/memory_mapping.c
rename to system/memory_mapping.c
diff --git a/softmmu/meson.build b/system/meson.build
similarity index 100%
rename from softmmu/meson.build
rename to system/meson.build
diff --git a/softmmu/physmem.c b/system/physmem.c
similarity index 99%
rename from softmmu/physmem.c
rename to system/physmem.c
index 309653c7221..edc3ed8ab90 100644
--- a/softmmu/physmem.c
+++ b/system/physmem.c
@@ -2301,8 +2301,10 @@ RAMBlock *qemu_ram_block_by_name(const char *name)
     return NULL;
 }
 
-/* Some of the softmmu routines need to translate from a host pointer
-   (typically a TLB entry) back to a ram offset.  */
+/*
+ * Some of the system routines need to translate from a host pointer
+ * (typically a TLB entry) back to a ram offset.
+ */
 ram_addr_t qemu_ram_addr_from_host(void *ptr)
 {
     RAMBlock *block;
diff --git a/softmmu/qdev-monitor.c b/system/qdev-monitor.c
similarity index 100%
rename from softmmu/qdev-monitor.c
rename to system/qdev-monitor.c
diff --git a/softmmu/qemu-seccomp.c b/system/qemu-seccomp.c
similarity index 100%
rename from softmmu/qemu-seccomp.c
rename to system/qemu-seccomp.c
diff --git a/softmmu/qtest.c b/system/qtest.c
similarity index 100%
rename from softmmu/qtest.c
rename to system/qtest.c
diff --git a/softmmu/rtc.c b/system/rtc.c
similarity index 100%
rename from softmmu/rtc.c
rename to system/rtc.c
diff --git a/softmmu/runstate-action.c b/system/runstate-action.c
similarity index 100%
rename from softmmu/runstate-action.c
rename to system/runstate-action.c
diff --git a/softmmu/runstate-hmp-cmds.c b/system/runstate-hmp-cmds.c
similarity index 100%
rename from softmmu/runstate-hmp-cmds.c
rename to system/runstate-hmp-cmds.c
diff --git a/softmmu/runstate.c b/system/runstate.c
similarity index 100%
rename from softmmu/runstate.c
rename to system/runstate.c
diff --git a/softmmu/timers-state.h b/system/timers-state.h
similarity index 100%
rename from softmmu/timers-state.h
rename to system/timers-state.h
diff --git a/softmmu/tpm-hmp-cmds.c b/system/tpm-hmp-cmds.c
similarity index 100%
rename from softmmu/tpm-hmp-cmds.c
rename to system/tpm-hmp-cmds.c
diff --git a/softmmu/tpm.c b/system/tpm.c
similarity index 100%
rename from softmmu/tpm.c
rename to system/tpm.c
diff --git a/softmmu/trace-events b/system/trace-events
similarity index 100%
rename from softmmu/trace-events
rename to system/trace-events
diff --git a/system/trace.h b/system/trace.h
new file mode 100644
index 00000000000..cd0136dcdc1
--- /dev/null
+++ b/system/trace.h
@@ -0,0 +1 @@
+#include "trace/trace-system.h"
diff --git a/softmmu/vl.c b/system/vl.c
similarity index 100%
rename from softmmu/vl.c
rename to system/vl.c
diff --git a/softmmu/watchpoint.c b/system/watchpoint.c
similarity index 100%
rename from softmmu/watchpoint.c
rename to system/watchpoint.c
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index 0299ef6906c..e7d72ee80a9 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -58,7 +58,7 @@ if have_system or have_tools
   }
 
   if seccomp.found()
-    tests += {'test-seccomp': ['../../softmmu/qemu-seccomp.c', seccomp]}
+    tests += {'test-seccomp': ['../../system/qemu-seccomp.c', seccomp]}
   endif
 endif
 
