diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go
index <HASH>..<HASH> 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1184,6 +1184,17 @@ func (d *qemu) Start(stateful bool) error {
 		return err
 	}
 
+	// Enable extended topology information if needed.
+	cpuType := "host"
+
+	// Only x86_64 requires the use of topoext when SMT is used.
+	if d.architecture == osarch.ARCH_64BIT_INTEL_X86 {
+		_, _, nrThreads, _, _, err := d.cpuTopology(d.expandedConfig["limits.cpu"])
+		if err != nil && nrThreads > 1 {
+			cpuType = "host,topoext"
+		}
+	}
+
 	// Start QEMU.
 	qemuCmd := []string{
 		"--",
@@ -1192,7 +1203,7 @@ func (d *qemu) Start(stateful bool) error {
 		"-name", d.Name(),
 		"-uuid", instUUID,
 		"-daemonize",
-		"-cpu", "host",
+		"-cpu", cpuType,
 		"-nographic",
 		"-serial", "chardev:console",
 		"-nodefaults",
lxd/instances/qemu: Enable topoext on x<I>_<I> with SMT