Messages in this thread Patch in this message | | | From | "Rafael J. Wysocki" <> | Subject | [RFT][PATCH] ACPI / init: Run acpi_early_init() before efi_enter_virtual_mode() (was: Re: [RFC PATCH 00/14] Support timezone of ACPI TAD and EFI TIME) | Date | Sun, 12 Jan 2014 01:30:23 +0100 |
| |
On Saturday, December 21, 2013 12:21:48 PM Matt Fleming wrote: > On Fri, 20 Dec, at 11:18:56PM, Rafael J. Wysocki wrote: > > > > I'm not sure 100%, but I *think* we need to do that with interrupts enabled. > > At least after mm_init(), because it relies on things initialized there if I > > remember correctly. > > > > From what I can tell at the moment, it might be possible to move it before > > efi_enter_virtual_mode() if that would help. > > Actually yeah, that would be super useful, and I think we'd be able to > get rid of the whole efi_late_init() stuff because we'd no longer need > to hang on to the EFI_BOOT_SERVICES* regions after > SetVirtualAddressMap().
OK
I don't see any adverse effects of the patch below on a couple of my test boxes, but (a) they are Intel-based and (b) they are non-EFI, so it would be good to give it a go on as many machines as reasonably possible.
Thanks, Rafael
--- From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Subject: ACPI / init: Run acpi_early_init() before efi_enter_virtual_mode()
According to Matt Fleming, if acpi_early_init() was executed befpre efi_enter_virtual_mode(), the EFI initialization could benefit from it, so make that happen.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> --- init/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-pm/init/main.c =================================================================== --- linux-pm.orig/init/main.c +++ linux-pm/init/main.c @@ -615,6 +615,7 @@ asmlinkage void __init start_kernel(void calibrate_delay(); pidmap_init(); anon_vma_init(); + acpi_early_init(); #ifdef CONFIG_X86 if (efi_enabled(EFI_RUNTIME_SERVICES)) efi_enter_virtual_mode(); @@ -641,7 +642,6 @@ asmlinkage void __init start_kernel(void check_bugs(); - acpi_early_init(); /* before LAPIC and SMP init */ sfi_init_late(); if (efi_enabled(EFI_RUNTIME_SERVICES)) {
| |