The branch main has been updated by andrew:

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

commit 872fc1b8de1ac2a10465a315457cd69b4268cbe9
Author:     Andrew Turner <and...@freebsd.org>
AuthorDate: 2025-03-27 13:17:30 +0000
Commit:     Andrew Turner <and...@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;

Reply via email to