Subject: [PATCH] gnu: linux-libre: Support the Coreboot framebuffer.

From: Tobias Geerinckx-Rice <[email-masked]>
Date: Fri, 5 Nov 2021 22:07:09 +0100

* gnu/packages/aux-files/linux-libre/5.10-i686.conf,
gnu/packages/aux-files/linux-libre/5.10-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.14-i686.conf,
gnu/packages/aux-files/linux-libre/5.14-x86_64.conf:
Mark simple framebuffers as generic system ones and enable ‘Google’
firmware drivers to enable Coreboot table support and its dependent
framebuffer driver.
---

Guix,

This option is very important on Corebooted and presumably Librebooted machines.  I strongly suspect that its absence has left ajarara in #guix unable to fix a Guix System that fails to boot.  I don't believe that enabling it has any drawbacks for us.

Without it, the kernel has no access to the framebuffer (the contents of the screen) from the moment it is booted by GRUB until the often modular, full-featured DRM graphics driver (e.g., i915) is loaded.

This normally just means that your GRUB background remains on screen for a second or two after booting — which may actually be a visual improvement over flashing text output or flickering.  However, things start hitting the fan if something goes wrong before the DRM driver can be loaded.  The kernel has no control over the screen and the system appears to freeze without an error message.

‘Say Y.’

Kind regards,

T G-R

PS: I will not be enabling these for older or non-x86 kernels as I'm not as comfy with their internals.

 gnu/packages/aux-files/linux-libre/5.10-i686.conf   | 10 ++++++++--
 gnu/packages/aux-files/linux-libre/5.10-x86_64.conf | 10 ++++++++--
 gnu/packages/aux-files/linux-libre/5.14-i686.conf   | 12 +++++++++---
 gnu/packages/aux-files/linux-libre/5.14-x86_64.conf | 12 +++++++++---
 4 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/aux-files/linux-libre/5.10-i686.conf b/gnu/packages/aux-files/linux-libre/5.10-i686.conf
index cb1fdc37ad..f9c033c5e9 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-i686.conf
@@ -650,7 +650,7 @@ CONFIG_ALIX=y
 CONFIG_NET5501=y
 CONFIG_GEOS=y
 CONFIG_AMD_NB=y
-# CONFIG_X86_SYSFB is not set
+CONFIG_X86_SYSFB=y
 # end of Bus options (PCI etc.)
 
 #
@@ -674,7 +674,13 @@ CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 CONFIG_FW_CFG_SYSFS=m
 # CONFIG_FW_CFG_SYSFS_CMDLINE is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GOOGLE_FIRMWARE=y
+# CONFIG_GOOGLE_SMI is not set
+CONFIG_GOOGLE_COREBOOT_TABLE=y
+# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set
+CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=y
+# CONFIG_GOOGLE_MEMCONSOLE_COREBOOT is not set
+# CONFIG_GOOGLE_VPD is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
diff --git a/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
index cd61860af9..accc084796 100644
--- a/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
@@ -643,7 +643,7 @@ CONFIG_MMCONF_FAM10H=y
 # CONFIG_ISA_BUS is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_AMD_NB=y
-# CONFIG_X86_SYSFB is not set
+CONFIG_X86_SYSFB=y
 # end of Bus options (PCI etc.)
 
 #
@@ -670,7 +670,13 @@ CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 CONFIG_FW_CFG_SYSFS=m
 # CONFIG_FW_CFG_SYSFS_CMDLINE is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GOOGLE_FIRMWARE=y
+# CONFIG_GOOGLE_SMI is not set
+CONFIG_GOOGLE_COREBOOT_TABLE=y
+# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set
+CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=y
+# CONFIG_GOOGLE_MEMCONSOLE_COREBOOT is not set
+# CONFIG_GOOGLE_VPD is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
diff --git a/gnu/packages/aux-files/linux-libre/5.14-i686.conf b/gnu/packages/aux-files/linux-libre/5.14-i686.conf
index bcca80c348..946992c734 100644
--- a/gnu/packages/aux-files/linux-libre/5.14-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.14-i686.conf
@@ -663,7 +663,7 @@ CONFIG_ALIX=y
 CONFIG_NET5501=y
 CONFIG_GEOS=y
 CONFIG_AMD_NB=y
-# CONFIG_X86_SYSFB is not set
+CONFIG_X86_SYSFB=y
 # end of Bus options (PCI etc.)
 
 #
@@ -687,7 +687,13 @@ CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 CONFIG_FW_CFG_SYSFS=m
 # CONFIG_FW_CFG_SYSFS_CMDLINE is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GOOGLE_FIRMWARE=y
+# CONFIG_GOOGLE_SMI is not set
+CONFIG_GOOGLE_COREBOOT_TABLE=y
+# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set
+CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=y
+# CONFIG_GOOGLE_MEMCONSOLE_COREBOOT is not set
+# CONFIG_GOOGLE_VPD is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
@@ -6551,7 +6557,7 @@ CONFIG_DRM_ANALOGIX_DP=m
 # CONFIG_DRM_ETNAVIV is not set
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_GM12U320=m
-CONFIG_DRM_SIMPLEDRM=m
+# CONFIG_DRM_SIMPLEDRM is not set
 CONFIG_TINYDRM_HX8357D=m
 CONFIG_TINYDRM_ILI9225=m
 CONFIG_TINYDRM_ILI9341=m
diff --git a/gnu/packages/aux-files/linux-libre/5.14-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.14-x86_64.conf
index 844420becd..5a0192b991 100644
--- a/gnu/packages/aux-files/linux-libre/5.14-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.14-x86_64.conf
@@ -655,7 +655,7 @@ CONFIG_MMCONF_FAM10H=y
 # CONFIG_ISA_BUS is not set
 CONFIG_ISA_DMA_API=y
 CONFIG_AMD_NB=y
-# CONFIG_X86_SYSFB is not set
+CONFIG_X86_SYSFB=y
 # end of Bus options (PCI etc.)
 
 #
@@ -682,7 +682,13 @@ CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 CONFIG_FW_CFG_SYSFS=m
 # CONFIG_FW_CFG_SYSFS_CMDLINE is not set
-# CONFIG_GOOGLE_FIRMWARE is not set
+CONFIG_GOOGLE_FIRMWARE=y
+# CONFIG_GOOGLE_SMI is not set
+CONFIG_GOOGLE_COREBOOT_TABLE=y
+# CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY is not set
+CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT=y
+# CONFIG_GOOGLE_MEMCONSOLE_COREBOOT is not set
+# CONFIG_GOOGLE_VPD is not set
 
 #
 # EFI (Extensible Firmware Interface) Support
@@ -6511,7 +6517,7 @@ CONFIG_DRM_ANALOGIX_DP=m
 # CONFIG_DRM_ETNAVIV is not set
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_GM12U320=m
-CONFIG_DRM_SIMPLEDRM=m
+# CONFIG_DRM_SIMPLEDRM is not set
 CONFIG_TINYDRM_HX8357D=m
 CONFIG_TINYDRM_ILI9225=m
 CONFIG_TINYDRM_ILI9341=m
-- 
2.33.1