efi/arm/libstub: Make screen_info accessible to the UEFI stub
In order to hand over the framebuffer described by the GOP protocol and discovered by the UEFI stub, make struct screen_info accessible by the stub. This involves allocating a loader data buffer and passing it to the kernel proper via a UEFI Configuration Table, since the UEFI stub executes in the context of the decompressor, and cannot access the kernel's copy of struct screen_info directly. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk> Cc: Borislav Petkov <bp@alien8.de> Cc: David Herrmann <dh.herrmann@gmail.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Jones <pjones@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon <will.deacon@arm.com> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/1461614832-17633-22-git-send-email-matt@codeblueprint.co.uk Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
57fdb89aeb
commit
801820bee9
@@ -286,7 +286,7 @@ typedef struct {
|
||||
efi_status_t (*locate_handle)(int, efi_guid_t *, void *,
|
||||
unsigned long *, efi_handle_t *);
|
||||
void *locate_device_path;
|
||||
void *install_configuration_table;
|
||||
efi_status_t (*install_configuration_table)(efi_guid_t *, void *);
|
||||
void *load_image;
|
||||
void *start_image;
|
||||
void *exit;
|
||||
@@ -633,6 +633,15 @@ void efi_native_runtime_setup(void);
|
||||
EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, \
|
||||
0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
|
||||
|
||||
/*
|
||||
* This GUID is used to pass to the kernel proper the struct screen_info
|
||||
* structure that was populated by the stub based on the GOP protocol instance
|
||||
* associated with ConOut
|
||||
*/
|
||||
#define LINUX_EFI_ARM_SCREEN_INFO_TABLE_GUID \
|
||||
EFI_GUID(0xe03fc20a, 0x85dc, 0x406e, \
|
||||
0xb9, 0xe, 0x4a, 0xb5, 0x02, 0x37, 0x1d, 0x95)
|
||||
|
||||
typedef struct {
|
||||
efi_guid_t guid;
|
||||
u64 table;
|
||||
|
Reference in New Issue
Block a user