From b091137d791e1a99bf27dc042531312f4c49c63d Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 26 Sep 2026 21:10:32 +0100 Subject: [PATCH] x86: 64, generic: replace fbdev with simpledrm efifb, the simple-framebuffer fbdev driver, hyperv_fb and xen-fbfront carry the display on these two subtargets, with fbcon and DRM fbdev emulation on top. A DRM driver can claim the firmware framebuffer on its own, so the legacy hardware drivers only add size to every image. Mark the firmware framebuffer as a generic system framebuffer so sysfb registers it as simple-framebuffer for simpledrm, and enable hyperv_drm for Hyper-V guests as its help text asks. DRM fbdev emulation and fbcon stay, so the boot log and the console prompt still reach the screen; the emulation serves fbcon, as generic leaves FB_DEVICE off and no /dev/fb node appears. VGA_CONSOLE and VT stay as well: a BIOS boot through GRUB pc leaves the machine in VGA text mode, where the firmware offers no framebuffer for simpledrm to drive, so vgacon is the only console there. A Xen PV or PVH guest has neither, and keeps its console on hvc0. The shared x86 config and the legacy and geode subtargets are untouched. Signed-off-by: Daniel Golle --- target/linux/x86/64/config-6.18 | 24 ++++++++---------------- target/linux/x86/generic/config-6.18 | 23 ++++++++--------------- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/target/linux/x86/64/config-6.18 b/target/linux/x86/64/config-6.18 index 8d61913d459..5e69269cb28 100644 --- a/target/linux/x86/64/config-6.18 +++ b/target/linux/x86/64/config-6.18 @@ -132,14 +132,20 @@ CONFIG_DRM=y CONFIG_DRM_ACCEL=y CONFIG_DRM_BOCHS=y CONFIG_DRM_BRIDGE=y +CONFIG_DRM_CLIENT=y +CONFIG_DRM_CLIENT_LIB=y +CONFIG_DRM_CLIENT_SELECTION=y +CONFIG_DRM_CLIENT_SETUP=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 CONFIG_DRM_GEM_SHMEM_HELPER=y -# CONFIG_DRM_HYPERV is not set +CONFIG_DRM_HYPERV=y CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_SIMPLEDRM=y +CONFIG_DRM_SYSFB_HELPER=y CONFIG_DRM_TTM=y CONFIG_DRM_TTM_HELPER=y CONFIG_DRM_VIRTIO_GPU=y @@ -168,28 +174,14 @@ CONFIG_EFI_RUNTIME_WRAPPERS=y CONFIG_EFI_STUB=y # CONFIG_EFI_TEST is not set CONFIG_FAILOVER=y -CONFIG_FB=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CORE=y CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_DEVICE=y -CONFIG_FB_EFI=y -CONFIG_FB_HYPERV=y -CONFIG_FB_IOMEM_FOPS=y -CONFIG_FB_IOMEM_HELPERS=y -CONFIG_FB_IOMEM_HELPERS_DEFERRED=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_SIMPLE=y CONFIG_FB_SYSMEM_FOPS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_IMAGEBLIT=y -CONFIG_FB_TILEBLITTING=y -# CONFIG_FB_VESA is not set CONFIG_FIRMWARE_TABLE=y CONFIG_FONT_8x16=y CONFIG_FONT_8x8=y @@ -483,6 +475,7 @@ CONFIG_SWIOTLB=y CONFIG_SWIOTLB_XEN=y CONFIG_SYNC_FILE=y CONFIG_SYSFB=y +CONFIG_SYSFB_SIMPLEFB=y # CONFIG_SYSTEM76_ACPI is not set CONFIG_SYS_HYPERVISOR=y # CONFIG_TDX_GUEST_DRIVER is not set @@ -584,7 +577,6 @@ CONFIG_XEN_DEBUG_FS=y CONFIG_XEN_DEV_EVTCHN=y CONFIG_XEN_DOM0=y CONFIG_XEN_EFI=y -CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_XEN_GNTDEV=y CONFIG_XEN_GRANT_DEV_ALLOC=y CONFIG_XEN_GRANT_DMA_OPS=y diff --git a/target/linux/x86/generic/config-6.18 b/target/linux/x86/generic/config-6.18 index cb2be3c47f6..db48c857d90 100644 --- a/target/linux/x86/generic/config-6.18 +++ b/target/linux/x86/generic/config-6.18 @@ -73,14 +73,20 @@ CONFIG_DMA_SHARED_BUFFER=y CONFIG_DRM=y CONFIG_DRM_BOCHS=y CONFIG_DRM_BRIDGE=y +CONFIG_DRM_CLIENT=y +CONFIG_DRM_CLIENT_LIB=y +CONFIG_DRM_CLIENT_SELECTION=y +CONFIG_DRM_CLIENT_SETUP=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=100 CONFIG_DRM_GEM_SHMEM_HELPER=y -# CONFIG_DRM_HYPERV is not set +CONFIG_DRM_HYPERV=y CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_SIMPLEDRM=y +CONFIG_DRM_SYSFB_HELPER=y CONFIG_DRM_TTM=y CONFIG_DRM_TTM_HELPER=y CONFIG_DRM_VIRTIO_GPU=y @@ -108,27 +114,14 @@ CONFIG_EFI_STUB=y # CONFIG_EFI_TEST is not set # CONFIG_EL3 is not set CONFIG_FAILOVER=y -CONFIG_FB=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CORE=y CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_DEVICE=y -CONFIG_FB_EFI=y -CONFIG_FB_HYPERV=y -# CONFIG_FB_I810 is not set -CONFIG_FB_IOMEM_FOPS=y -CONFIG_FB_IOMEM_HELPERS=y -CONFIG_FB_IOMEM_HELPERS_DEFERRED=y -CONFIG_FB_SIMPLE=y CONFIG_FB_SYSMEM_FOPS=y CONFIG_FB_SYSMEM_HELPERS=y CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_IMAGEBLIT=y -# CONFIG_FB_VESA is not set CONFIG_FIRMWARE_TABLE=y CONFIG_FONT_8x16=y CONFIG_FONT_8x8=y @@ -384,6 +377,7 @@ CONFIG_SPLIT_PTE_PTLOCKS=y CONFIG_SWIOTLB=y CONFIG_SYNC_FILE=y CONFIG_SYSFB=y +CONFIG_SYSFB_SIMPLEFB=y # CONFIG_SYSTEM76_ACPI is not set CONFIG_SYS_HYPERVISOR=y CONFIG_TASKSTATS=y @@ -460,7 +454,6 @@ CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_DEBUG_FS=y CONFIG_XEN_DEV_EVTCHN=y -CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_XEN_GNTDEV=y CONFIG_XEN_GRANT_DEV_ALLOC=y CONFIG_XEN_GRANT_DMA_OPS=y