Skip to content

Commit 758c807

Browse files
committed
Merge tag 'efi-fixes-for-v7.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi
Pull EFI fixes from Ard Biesheuvel: - Permit ACPI PRM runtime firmware calls when acpi_init() runs - Add another Lenovo Ideapad framebuffer quirk - Cosmetic tweak * tag 'efi-fixes-for-v7.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi: efi: sysfb_efi: Extend quirk to cover IdeaPad Duet 3 10IGL5-LTE efi: efi.h: Remove extra semicolon efi: Allocate runtime workqueue before ACPI init
2 parents dd3802f + d8809f6 commit 758c807

3 files changed

Lines changed: 23 additions & 16 deletions

File tree

drivers/firmware/efi/efi.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -402,21 +402,11 @@ static void __init efi_debugfs_init(void)
402402
static inline void efi_debugfs_init(void) {}
403403
#endif
404404

405-
/*
406-
* We register the efi subsystem with the firmware subsystem and the
407-
* efivars subsystem with the efi subsystem, if the system was booted with
408-
* EFI.
409-
*/
410-
static int __init efisubsys_init(void)
405+
static int __init efipostcore_init(void)
411406
{
412-
int error;
413-
414407
if (!efi_enabled(EFI_RUNTIME_SERVICES))
415408
efi.runtime_supported_mask = 0;
416409

417-
if (!efi_enabled(EFI_BOOT))
418-
return 0;
419-
420410
if (efi.runtime_supported_mask) {
421411
/*
422412
* Since we process only one efi_runtime_service() at a time, an
@@ -428,9 +418,23 @@ static int __init efisubsys_init(void)
428418
pr_err("Creating efi_rts_wq failed, EFI runtime services disabled.\n");
429419
clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
430420
efi.runtime_supported_mask = 0;
431-
return 0;
432421
}
433422
}
423+
return 0;
424+
}
425+
postcore_initcall(efipostcore_init);
426+
427+
/*
428+
* We register the efi subsystem with the firmware subsystem and the
429+
* efivars subsystem with the efi subsystem, if the system was booted with
430+
* EFI.
431+
*/
432+
static int __init efisubsys_init(void)
433+
{
434+
int error;
435+
436+
if (!efi_enabled(EFI_BOOT))
437+
return 0;
434438

435439
if (efi_rt_services_supported(EFI_RT_SUPPORTED_TIME_SERVICES))
436440
platform_device_register_simple("rtc-efi", 0, NULL, 0);

drivers/firmware/efi/sysfb_efi.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,11 +311,14 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = {
311311
.callback = efifb_swap_width_height,
312312
},
313313
{
314-
/* Lenovo IdeaPad Duet 3 10IGL5 with 1200x1920 portrait screen */
314+
/*
315+
* Lenovo IdeaPad Duet 3 10IGL5 and 10IGL5-LTE with
316+
* 1200x1920 portrait screen
317+
*/
315318
.matches = {
316319
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
317-
DMI_EXACT_MATCH(DMI_PRODUCT_VERSION,
318-
"IdeaPad Duet 3 10IGL5"),
320+
/* Non exact match to also match the LTE version */
321+
DMI_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
319322
},
320323
.callback = efifb_swap_width_height,
321324
},

include/linux/efi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ typedef void *efi_handle_t;
6161

6262
/*
6363
* The UEFI spec and EDK2 reference implementation both define EFI_GUID as
64-
* struct { u32 a; u16; b; u16 c; u8 d[8]; }; and so the implied alignment
64+
* struct { u32 a; u16 b; u16 c; u8 d[8]; }; and so the implied alignment
6565
* is 32 bits not 8 bits like our guid_t. In some cases (i.e., on 32-bit ARM),
6666
* this means that firmware services invoked by the kernel may assume that
6767
* efi_guid_t* arguments are 32-bit aligned, and use memory accessors that

0 commit comments

Comments
 (0)