git: 872fc1b8de1a - main - arm64/vmm: Don't load on Ampere eMAG

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Thu, 27 Mar 2025 13:47:48 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=872fc1b8de1ac2a10465a315457cd69b4268cbe9

commit 872fc1b8de1ac2a10465a315457cd69b4268cbe9
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2025-03-27 13:17:30 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2025-03-27 13:47:37 +0000

    arm64/vmm: Don't load on Ampere eMAG
    
    Loading vmm.ko on Ampere eMAG locks up the system. Block loading for
    now until it can be fixed.
    
    PR:             285051
    Reviewed by:    tuexen
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D49155
---
 sys/arm64/vmm/vmm.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/sys/arm64/vmm/vmm.c b/sys/arm64/vmm/vmm.c
index ad82e6dbd432..f28643db99d2 100644
--- a/sys/arm64/vmm/vmm.c
+++ b/sys/arm64/vmm/vmm.c
@@ -310,6 +310,20 @@ vm_exitinfo(struct vcpu *vcpu)
 	return (&vcpu->exitinfo);
 }
 
+static int
+vmm_unsupported_quirk(void)
+{
+	/*
+	 * Known to not load on Ampere eMAG
+	 * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285051
+	 */
+	if (CPU_MATCH(CPU_IMPL_MASK | CPU_PART_MASK, CPU_IMPL_APM,
+	    CPU_PART_EMAG8180, 0, 0))
+		return (ENXIO);
+
+	return (0);
+}
+
 static int
 vmm_init(void)
 {
@@ -339,6 +353,9 @@ vmm_handler(module_t mod, int what, void *arg)
 
 	switch (what) {
 	case MOD_LOAD:
+		error = vmm_unsupported_quirk();
+		if (error != 0)
+			break;
 		error = vmmdev_init();
 		if (error != 0)
 			break;