I have a Quanta D52B-1U server which hangs during FreeBSD UEFI boot when the COM ports on the motherboard are enabled. I've tested booting from NVMe SSDs and several FreeBSD ISO images (14.1 and 15.0-snap (bootonly and disc1)). Here is a screen capture where it hangs:
I think this point is where loader.efi is initializing the console. I think it hangs here because loader.efi expects the console on COM 1. On this server, the serial console is on COM 2, so it fails initialization.
One of the workarounds (boot in CSM / Legacy mode) is mostly a non-starter since my boot disks are NVMe drives (no legacy BIOS). I've worked around issues like this in the past by booting off a USB or SATADOM and then handing off the boot process to the ZFS, but that bit of added complexity has a way of coming back and biting one during future maintenance (OS upgrades).
Another workaround is disabling the COM ports. I can then boot off the FreeBSD ISOs, my local disks, and I have the BMC KVM for console access. The down side is that I can't get a Serial Over Lan, which is a really nice feature. Having a SOL has enabled me to rescue several servers days sooner, when I was away from high speed internet and large screens.
The last workaround I've found is setting
in loader.conf. This specifically excludes "efi" from the console menu and makes serial the primary output. Since I can't modify loader.conf on a FreeBSD ISO, this means booting off install media still hangs. On my local disks where I've configured loader.conf, it lets me enable SOL. Because loader.efi defaults to COM 1 for serial, I also have to set comconsole_port="0x2F8" and comconsole_speed="115200".
The motherboard chipset is Intel C621 & C624 with Skylake CPUs. Dmesg output is here. The results are the same whether SOL is enabled or disabled.
The contents of the EFI variable ConOut with COM ports disabled:
# efivar -p -d 8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
: PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(0x80010100)
With console ports enabled and console="comconsole":
# efivar -p -d 8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
: PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(0x80010100),/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(Hardware)/VenUtf8(),/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x1)/Uart(115200,8,N,1)/UartFlowCtrl(Hardware)/VenUtf8()
All of this very much like the description over at https://wiki.freebsd.org/SerialConsole, except that I'm booting EFI and there's a poor interaction between loader.efi and my hardware which causes the boot process to screech to a halt. Is there anything left for me to try?
I think this point is where loader.efi is initializing the console. I think it hangs here because loader.efi expects the console on COM 1. On this server, the serial console is on COM 2, so it fails initialization.
One of the workarounds (boot in CSM / Legacy mode) is mostly a non-starter since my boot disks are NVMe drives (no legacy BIOS). I've worked around issues like this in the past by booting off a USB or SATADOM and then handing off the boot process to the ZFS, but that bit of added complexity has a way of coming back and biting one during future maintenance (OS upgrades).
Another workaround is disabling the COM ports. I can then boot off the FreeBSD ISOs, my local disks, and I have the BMC KVM for console access. The down side is that I can't get a Serial Over Lan, which is a really nice feature. Having a SOL has enabled me to rescue several servers days sooner, when I was away from high speed internet and large screens.
The last workaround I've found is setting
Code:
console="comconsole"
The motherboard chipset is Intel C621 & C624 with Skylake CPUs. Dmesg output is here. The results are the same whether SOL is enabled or disabled.
The contents of the EFI variable ConOut with COM ports disabled:
# efivar -p -d 8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
: PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(0x80010100)
With console ports enabled and console="comconsole":
# efivar -p -d 8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
: PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(0x80010100),/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(Hardware)/VenUtf8(),/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x1)/Uart(115200,8,N,1)/UartFlowCtrl(Hardware)/VenUtf8()
All of this very much like the description over at https://wiki.freebsd.org/SerialConsole, except that I'm booting EFI and there's a poor interaction between loader.efi and my hardware which causes the boot process to screech to a halt. Is there anything left for me to try?