Linux 6.11 EFI Will Fake That It's Booting Apple macOS To Fix Some Dual-GPU Macs
The EFI changes have been merged for the in-development Linux 6.11 kernel. Notable this cycle on the EFI side is removing support for EFI fake memory maps and then a workaround to get dual GPU support working for some of the older x86-based Apple MacBook Pros by pretending that Apple macOS is booting rather than Linux.
The EFI fake memory map support is being removed from the Linux kernel since it's unused at this point and causes complexities around confidential computing (CoCo) VMs, unaccepted memory handling, and other bits. This feature was primarily useful in the past for EFI debugging purposes.
The other more interesting change worth mentioning for users is an SMBIOS "tweak" to instruct the firmware on x86 MacBook Pros to keep both the integrated and discrete GPUs enabled. The Linux kernel has already supported the MMIO GMUX on T2-based Apple Macs to make use of the discrete GPU. However, special handling needs to be taken to keep the firmware from disabling the integrated GPU. In particular, the firmware expects to be booting Apple macOS otherwise it will disable the iGPU and only leave the dGPU enabled.
So with Linux 6.11, for a handful of known Apple MacBook Pro models, the EFI SMBIOS code will report that "Mac OS X 10.9" is booting from OS vendor "Apple Inc." This is enough to keep the iGPU from being disabled. The MacBook Pro models where this is currently set to happen is for the MacBookPro11,3, MacBookPro11,5, MacBookPro13,3, MacBookPro14,3, MacBookPro15,1, MacBookPro15,3, MacBookPro16,1, and MacBookPro16,4.
This follows a GRUB patch from 2013 that for certain MacBook models would identify as Mac OS X while booting to deal with the firmware configuring the hardware differently if it wasn't reported to be "Mac OS X" that was booting. So should you be on one of these older x86 MacBook Pro models, with Linux 6.11 by identifying as "Mac OS X" that is booting rather than Linux, the dual GPU (iGPU) support should behave properly and any other firmware/hardware behavior differences.
See the EFI merge to Linux 6.11 Git yesterday for more details on all of the EFI feature updates this cycle.
The EFI fake memory map support is being removed from the Linux kernel since it's unused at this point and causes complexities around confidential computing (CoCo) VMs, unaccepted memory handling, and other bits. This feature was primarily useful in the past for EFI debugging purposes.
The other more interesting change worth mentioning for users is an SMBIOS "tweak" to instruct the firmware on x86 MacBook Pros to keep both the integrated and discrete GPUs enabled. The Linux kernel has already supported the MMIO GMUX on T2-based Apple Macs to make use of the discrete GPU. However, special handling needs to be taken to keep the firmware from disabling the integrated GPU. In particular, the firmware expects to be booting Apple macOS otherwise it will disable the iGPU and only leave the dGPU enabled.
So with Linux 6.11, for a handful of known Apple MacBook Pro models, the EFI SMBIOS code will report that "Mac OS X 10.9" is booting from OS vendor "Apple Inc." This is enough to keep the iGPU from being disabled. The MacBook Pro models where this is currently set to happen is for the MacBookPro11,3, MacBookPro11,5, MacBookPro13,3, MacBookPro14,3, MacBookPro15,1, MacBookPro15,3, MacBookPro16,1, and MacBookPro16,4.
This follows a GRUB patch from 2013 that for certain MacBook models would identify as Mac OS X while booting to deal with the firmware configuring the hardware differently if it wasn't reported to be "Mac OS X" that was booting. So should you be on one of these older x86 MacBook Pro models, with Linux 6.11 by identifying as "Mac OS X" that is booting rather than Linux, the dual GPU (iGPU) support should behave properly and any other firmware/hardware behavior differences.
See the EFI merge to Linux 6.11 Git yesterday for more details on all of the EFI feature updates this cycle.
35 Comments