[Bug 277559] kldload vmm sometimes hangs kernel on arm64

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 07 Mar 2024 20:44:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277559

            Bug ID: 277559
           Summary: kldload vmm sometimes hangs kernel on arm64
           Product: Base System
           Version: 15.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: jfc@mit.edu

On my RockPro64 "kldload vmm" sometimes hangs the system so hard I can't even
enter DDB with a break on the serial console.  The smp_rendezvous call in
vmops_modinit appears to be the culprit according to some debugging printfs I
added.

  printf("vmmops_modinit rendezvous %p {%lx, %lx}\n", &el2_regs,
         el2_regs.tcr_el2, el2_regs.vtcr_el2);
  pause("vmmon", 20); // let console output queue drain
        smp_rendezvous(NULL, arm_setup_vectors, NULL, &el2_regs);
  printf("vmmops_modinit rendezvous returned\n");
  pause("vmmon", 20); // let console output queue drain

The last line on the console when it hangs is

  vmmops_modinit rendezvous 0xffff0000a5b9d380 {80823510, 80023559}

The RockPro64 has 4 Cortex-A53 and 2 Cortex A-72 processors, same clock speed
but different performance.

According to other printfs I added to vmmops_modinit,

  ID_AA64MMFR0_EL1 = 1122
  vmm_virt_bits = 39

Most of the time the vmm module loads.  About 10% of the time it hangs.

-- 
You are receiving this mail because:
You are the assignee for the bug.