Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81b53e5f authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Ingo Molnar
Browse files

ACPI, x86/boot: Introduce the ->reduced_hw_early_init() ACPI callback



Some ACPI hardware reduced platforms need to initialize certain devices
defined by the ACPI hardware specification even though in principle
those devices should not be present in an ACPI hardware reduced platform.

To allow that to happen, make it possible to override the generic
x86_init callbacks and provide a custom legacy_pic value, add a new
->reduced_hw_early_init() callback to struct x86_init_acpi and make
acpi_reduced_hw_init() use it.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Eric Biederman <ebiederm@xmission.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rafael J . Wysocki <rafael.j.wysocki@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-acpi@vger.kernel.org
Link: http://lkml.kernel.org/r/20180220180506.65523-2-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 50beba07
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -133,9 +133,11 @@ struct x86_hyper_init {
/**
 * struct x86_init_acpi - x86 ACPI init functions
 * @get_root_pointer:		get RSDP address
 * @reduced_hw_early_init:	hardware reduced platform early init
 */
struct x86_init_acpi {
	u64 (*get_root_pointer)(void);
	void (*reduced_hw_early_init)(void);
};

/**
+1 −1
Original line number Diff line number Diff line
@@ -1390,7 +1390,7 @@ void __init acpi_generic_reduced_hw_init(void)
static void __init acpi_reduced_hw_init(void)
{
	if (acpi_gbl_reduced_hardware)
		acpi_generic_reduced_hw_init();
		x86_init.acpi.reduced_hw_early_init();
}

/*
+2 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <linux/export.h>
#include <linux/pci.h>

#include <asm/acpi.h>
#include <asm/bios_ebda.h>
#include <asm/paravirt.h>
#include <asm/pci_x86.h>
@@ -95,6 +96,7 @@ struct x86_init_ops x86_init __initdata = {

	.acpi = {
		.get_root_pointer	= u64_x86_init_noop,
		.reduced_hw_early_init	= acpi_generic_reduced_hw_init,
	},
};