Index | Thread | Search

From:
Marcus Glocker <marcus@nazgul.ch>
Subject:
Prevent crash on MacPro6,1 during power-down
To:
tech@openbsd.org
Date:
Wed, 30 Apr 2025 17:05:21 +0200

Download raw body.

Thread
I've installed an amd64 snap on an MacPro6,1 (trash can), and noticed 
that during power-down the system is crashing at the very last steps:

	syncing disks... done
	Stopped at	x86_bus_space_io_write_4+0x1d:  leave

After some investigations I found that this happens when we try to
write to the I/O port 0x80.  This seems to be the POST debug port used
by the BIOS and firmware to output POST status codes, and is most
likely not implement on systems like the MacPro6,1.

I couldn't come up with a more elegant solution, but this diff lets me
nicely power down this machine.

Better ideas or OKs?


Index: sys/dev/acpi/acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
diff -u -p -u -p -r1.444 acpi.c
--- sys/dev/acpi/acpi.c	24 Mar 2025 09:53:20 -0000	1.444
+++ sys/dev/acpi/acpi.c	30 Apr 2025 14:47:29 -0000
@@ -253,6 +253,14 @@ acpi_gasio(struct acpi_softc *sc, int io
 		else
 			iot = sc->sc_iot;
 
+		/*
+		 * Accessing the I/O port 0x80 (POST debug port) on a
+		 * MacPro6,1 will crash the system since this port is likely
+		 * not implemented.
+		 */
+		if (address == 0x80 && strcmp(hw_prod, "MacPro6,1") == 0)
+			return (-1);
+
 		if (acpi_bus_space_map(iot, address, len, 0, &ioh) != 0) {
 			printf("%s: unable to map iospace\n", DEVNAME(sc));
 			return (-1);