]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/efistub: Drop long obsolete UGA support
authorArd Biesheuvel <ardb@kernel.org>
Thu, 19 Dec 2024 09:27:08 +0000 (10:27 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Tue, 14 Jan 2025 07:34:24 +0000 (08:34 +0100)
UGA is the EFI graphical output protocol that preceded GOP, and has been
long obsolete. Drop support for it from the x86 implementation of the
EFI stub - other architectures never bothered to implement it (save for
ia64)

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/x86/platform/efi/efi.c
drivers/firmware/efi/efi.c
drivers/firmware/efi/libstub/x86-stub.c
include/linux/efi.h

index a7ff189421c3d8c7ed0b6ad5d5d90fa9700de7b6..463b784499a8f58eca859c64a1cb20bca0f0dca0 100644 (file)
 #include <asm/uv/uv.h>
 
 static unsigned long efi_systab_phys __initdata;
-static unsigned long uga_phys = EFI_INVALID_TABLE_ADDR;
 static unsigned long efi_runtime, efi_nr_tables;
 
 unsigned long efi_fw_vendor, efi_config_table;
 
 static const efi_config_table_type_t arch_tables[] __initconst = {
-       {UGA_IO_PROTOCOL_GUID,          &uga_phys,              "UGA"           },
 #ifdef CONFIG_X86_UV
        {UV_SYSTEM_TABLE_GUID,          &uv_systab_phys,        "UVsystab"      },
 #endif
@@ -72,7 +70,6 @@ static const unsigned long * const efi_tables[] = {
        &efi.acpi20,
        &efi.smbios,
        &efi.smbios3,
-       &uga_phys,
 #ifdef CONFIG_X86_UV
        &uv_systab_phys,
 #endif
@@ -891,13 +888,6 @@ bool efi_is_table_address(unsigned long phys_addr)
        return false;
 }
 
-char *efi_systab_show_arch(char *str)
-{
-       if (uga_phys != EFI_INVALID_TABLE_ADDR)
-               str += sprintf(str, "UGA=0x%lx\n", uga_phys);
-       return str;
-}
-
 #define EFI_FIELD(var) efi_ ## var
 
 #define EFI_ATTR_SHOW(name) \
index 60c64b81d2c32ced25b8384b1f15bb0e07b08cb9..8296bf985d1d12778d904fde2a74705eae6e8b26 100644 (file)
@@ -148,9 +148,6 @@ static ssize_t systab_show(struct kobject *kobj,
        if (efi.smbios != EFI_INVALID_TABLE_ADDR)
                str += sprintf(str, "SMBIOS=0x%lx\n", efi.smbios);
 
-       if (IS_ENABLED(CONFIG_X86))
-               str = efi_systab_show_arch(str);
-
        return str - buf;
 }
 
index 188c8000d245ec11b1da1beeb379ff2f3051195e..0c51d8307000bab9deb0fd6f963bef7400ce5990 100644 (file)
@@ -405,96 +405,13 @@ static void setup_quirks(struct boot_params *boot_params)
        }
 }
 
-/*
- * See if we have Universal Graphics Adapter (UGA) protocol
- */
-static efi_status_t
-setup_uga(struct screen_info *si, efi_guid_t *uga_proto, unsigned long size)
-{
-       efi_status_t status;
-       u32 width, height;
-       void **uga_handle = NULL;
-       efi_uga_draw_protocol_t *uga = NULL, *first_uga;
-       efi_handle_t handle;
-       int i;
-
-       status = efi_bs_call(allocate_pool, EFI_LOADER_DATA, size,
-                            (void **)&uga_handle);
-       if (status != EFI_SUCCESS)
-               return status;
-
-       status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
-                            uga_proto, NULL, &size, uga_handle);
-       if (status != EFI_SUCCESS)
-               goto free_handle;
-
-       height = 0;
-       width = 0;
-
-       first_uga = NULL;
-       for_each_efi_handle(handle, uga_handle, size, i) {
-               efi_guid_t pciio_proto = EFI_PCI_IO_PROTOCOL_GUID;
-               u32 w, h, depth, refresh;
-               void *pciio;
-
-               status = efi_bs_call(handle_protocol, handle, uga_proto,
-                                    (void **)&uga);
-               if (status != EFI_SUCCESS)
-                       continue;
-
-               pciio = NULL;
-               efi_bs_call(handle_protocol, handle, &pciio_proto, &pciio);
-
-               status = efi_call_proto(uga, get_mode, &w, &h, &depth, &refresh);
-               if (status == EFI_SUCCESS && (!first_uga || pciio)) {
-                       width = w;
-                       height = h;
-
-                       /*
-                        * Once we've found a UGA supporting PCIIO,
-                        * don't bother looking any further.
-                        */
-                       if (pciio)
-                               break;
-
-                       first_uga = uga;
-               }
-       }
-
-       if (!width && !height)
-               goto free_handle;
-
-       /* EFI framebuffer */
-       si->orig_video_isVGA    = VIDEO_TYPE_EFI;
-
-       si->lfb_depth           = 32;
-       si->lfb_width           = width;
-       si->lfb_height          = height;
-
-       si->red_size            = 8;
-       si->red_pos             = 16;
-       si->green_size          = 8;
-       si->green_pos           = 8;
-       si->blue_size           = 8;
-       si->blue_pos            = 0;
-       si->rsvd_size           = 8;
-       si->rsvd_pos            = 24;
-
-free_handle:
-       efi_bs_call(free_pool, uga_handle);
-
-       return status;
-}
-
 static void setup_graphics(struct boot_params *boot_params)
 {
        efi_guid_t graphics_proto = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
        struct screen_info *si;
-       efi_guid_t uga_proto = EFI_UGA_PROTOCOL_GUID;
        efi_status_t status;
        unsigned long size;
        void **gop_handle = NULL;
-       void **uga_handle = NULL;
 
        si = &boot_params->screen_info;
        memset(si, 0, sizeof(*si));
@@ -505,13 +422,6 @@ static void setup_graphics(struct boot_params *boot_params)
        if (status == EFI_BUFFER_TOO_SMALL)
                status = efi_setup_gop(si, &graphics_proto, size);
 
-       if (status != EFI_SUCCESS) {
-               size = 0;
-               status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
-                                    &uga_proto, NULL, &size, uga_handle);
-               if (status == EFI_BUFFER_TOO_SMALL)
-                       setup_uga(si, &uga_proto, size);
-       }
 }
 
 
index e5815867aba971a64091bf0ea017d95f21115124..053c57e61869806723c25c459c6213b3eae2330a 100644 (file)
@@ -363,7 +363,6 @@ void efi_native_runtime_setup(void);
 #define ACPI_20_TABLE_GUID                     EFI_GUID(0x8868e871, 0xe4f1, 0x11d3,  0xbc, 0x22, 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81)
 #define SMBIOS_TABLE_GUID                      EFI_GUID(0xeb9d2d31, 0x2d88, 0x11d3,  0x9a, 0x16, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
 #define SMBIOS3_TABLE_GUID                     EFI_GUID(0xf2fd1544, 0x9794, 0x4a2c,  0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94)
-#define UGA_IO_PROTOCOL_GUID                   EFI_GUID(0x61a4d49e, 0x6f68, 0x4f1b,  0xb9, 0x22, 0xa8, 0x6e, 0xed, 0x0b, 0x07, 0xa2)
 #define EFI_GLOBAL_VARIABLE_GUID               EFI_GUID(0x8be4df61, 0x93ca, 0x11d2,  0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c)
 #define UV_SYSTEM_TABLE_GUID                   EFI_GUID(0x3b13a7d4, 0x633e, 0x11dd,  0x93, 0xec, 0xda, 0x25, 0x56, 0xd8, 0x95, 0x93)
 #define LINUX_EFI_CRASH_GUID                   EFI_GUID(0xcfc8fc79, 0xbe2e, 0x4ddc,  0x97, 0xf0, 0x9f, 0x98, 0xbf, 0xe2, 0x98, 0xa0)
@@ -373,7 +372,6 @@ void efi_native_runtime_setup(void);
 #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID  EFI_GUID(0x8b843e20, 0x8132, 0x4852,  0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c)
 #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID        EFI_GUID(0x05c99a21, 0xc70f, 0x4ad2,  0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e)
 #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID      EFI_GUID(0x9042a9de, 0x23dc, 0x4a38,  0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a)
-#define EFI_UGA_PROTOCOL_GUID                  EFI_GUID(0x982c298b, 0xf4fa, 0x41cb,  0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39)
 #define EFI_PCI_IO_PROTOCOL_GUID               EFI_GUID(0x4cf5b200, 0x68b8, 0x4ca5,  0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a)
 #define EFI_FILE_INFO_ID                       EFI_GUID(0x09576e92, 0x6d3f, 0x11d2,  0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
 #define EFI_SYSTEM_RESOURCE_TABLE_GUID         EFI_GUID(0xb122a263, 0x3661, 0x4f68,  0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80)
@@ -1286,8 +1284,6 @@ struct linux_efi_memreserve {
 
 void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size);
 
-char *efi_systab_show_arch(char *str);
-
 /*
  * The LINUX_EFI_MOK_VARIABLE_TABLE_GUID config table can be provided
  * to the kernel by an EFI boot loader. The table contains a packed