[syslinux:firmware] efi: move all screen twiddling to setup_screen()

syslinux-bot for Matt Fleming matt.fleming at intel.com
Mon Jul 8 09:30:09 PDT 2013


Commit-ID:  a53c1f05fb750dc02ea555887935031722cf8318
Gitweb:     http://www.syslinux.org/commit/a53c1f05fb750dc02ea555887935031722cf8318
Author:     Matt Fleming <matt.fleming at intel.com>
AuthorDate: Sun, 7 Jul 2013 10:21:01 +0100
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Mon, 8 Jul 2013 15:58:04 +0100

efi: move all screen twiddling to setup_screen()

We can defer all modifications of ->screen_info to setup_screen().

Signed-off-by: Matt Fleming <matt.fleming at intel.com>

---
 efi/console.c | 3 +++
 efi/main.c    | 7 +------
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/efi/console.c b/efi/console.c
index cc49388..a938649 100644
--- a/efi/console.c
+++ b/efi/console.c
@@ -1,5 +1,6 @@
 #include <syslinux/linux.h>
 #include "efi.h"
+#include <string.h>
 
 extern EFI_GUID GraphicsOutputProtocol;
 
@@ -276,6 +277,8 @@ out:
 
 void setup_screen(struct screen_info *si)
 {
+	memset(si, 0, sizeof(*si));
+
 	if (!setup_gop(si))
 		setup_uga(si);
 }
diff --git a/efi/main.c b/efi/main.c
index 7559e06..16c85b5 100644
--- a/efi/main.c
+++ b/efi/main.c
@@ -1051,7 +1051,6 @@ int efi_boot_linux(void *kernel_buf, size_t kernel_size,
 {
 	struct linux_header *hdr;
 	struct boot_params *bp;
-	struct screen_info *si;
 	EFI_STATUS status;
 	EFI_PHYSICAL_ADDRESS addr, pref_address, kernel_start = 0;
 	UINT64 setup_sz, init_size = 0;
@@ -1097,8 +1096,6 @@ int efi_boot_linux(void *kernel_buf, size_t kernel_size,
 
 	hdr->cmd_line_ptr = (UINT32)(UINTN)_cmdline;
 
-	memset((char *)&bp->screen_info, 0x0, sizeof(bp->screen_info));
-
 	addr = pref_address;
 	status = allocate_pages(AllocateAddress, EfiLoaderData,
 			     EFI_SIZE_TO_PAGES(init_size), &addr);
@@ -1129,14 +1126,12 @@ int efi_boot_linux(void *kernel_buf, size_t kernel_size,
 
 	dprintf("efi_boot_linux: kernel_start 0x%x kernel_size 0x%x initramfs 0x%x setup_data 0x%x cmdline 0x%x\n",
 	kernel_start, kernel_size, initramfs, setup_data, _cmdline);
-	si = &bp->screen_info;
-	memset(si, 0, sizeof(*si));
 
 	/* Attempt to use the handover protocol if available */
 	if (hdr->version >= 0x20b && hdr->handover_offset)
 		handover_boot(hdr, bp);
 
-	setup_screen(si);
+	setup_screen(&bp->screen_info);
 
 	if (build_gdt())
 		goto free_map;


More information about the Syslinux-commits mailing list