diff mbox

[v4,06/14] x86/init: use a platform legacy quirk for ebda

Message ID 1459987594-5434-7-git-send-email-mcgrof@kernel.org (mailing list archive)
State New, archived
Headers show

Commit Message

Luis Chamberlain April 7, 2016, 12:06 a.m. UTC
This replaces the paravirt_enabled() check with a
proper x86 legacy platform quirk.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 arch/x86/include/asm/x86_init.h   | 3 +++
 arch/x86/kernel/head.c            | 2 +-
 arch/x86/kernel/platform-quirks.c | 4 ++++
 3 files changed, 8 insertions(+), 1 deletion(-)

Comments

David Vrabel April 7, 2016, 9:44 a.m. UTC | #1
On 07/04/16 01:06, Luis R. Rodriguez wrote:
> 
> --- a/arch/x86/kernel/platform-quirks.c
> +++ b/arch/x86/kernel/platform-quirks.c
> @@ -7,8 +7,12 @@
>  void __init x86_early_init_platform_quirks(void)
>  {
>  	x86_platform.legacy.rtc = 1;
> +	x86_platform.legacy.ebda_search = 0;

You should make the default the setting for regular PC hardware, as you
have done for the .rtc bit.

David
Luis Chamberlain April 7, 2016, 9:07 p.m. UTC | #2
On Thu, Apr 07, 2016 at 10:44:50AM +0100, David Vrabel wrote:
> On 07/04/16 01:06, Luis R. Rodriguez wrote:
> > 
> > --- a/arch/x86/kernel/platform-quirks.c
> > +++ b/arch/x86/kernel/platform-quirks.c
> > @@ -7,8 +7,12 @@
> >  void __init x86_early_init_platform_quirks(void)
> >  {
> >  	x86_platform.legacy.rtc = 1;
> > +	x86_platform.legacy.ebda_search = 0;
> 
> You should make the default the setting for regular PC hardware, as you
> have done for the .rtc bit.

I went with with Ingo's suggested template [0]. Ingo, let me know what
you prefer.

[0] http://lkml.kernel.org/r/20160407205902.GS1990@wotan.suse.de

  Luis
diff mbox

Patch

diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index 27d5c3fe5198..f3f81122ae3b 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -145,9 +145,12 @@  struct timespec;
  * struct x86_legacy_features - legacy x86 features
  *
  * @rtc: this device has a CMOS real-time clock present
+ * @ebda_search: it's safe to search for the EBDA signature in the hardware's
+ * 	low RAM
  */
 struct x86_legacy_features {
 	int rtc;
+	int ebda_search;
 };
 
 /**
diff --git a/arch/x86/kernel/head.c b/arch/x86/kernel/head.c
index 992f442ca155..afe65dffee80 100644
--- a/arch/x86/kernel/head.c
+++ b/arch/x86/kernel/head.c
@@ -38,7 +38,7 @@  void __init reserve_ebda_region(void)
 	 * that the paravirt case can handle memory setup
 	 * correctly, without our help.
 	 */
-	if (paravirt_enabled())
+	if (!x86_platform.legacy.ebda_search)
 		return;
 
 	/* end of low (conventional) memory */
diff --git a/arch/x86/kernel/platform-quirks.c b/arch/x86/kernel/platform-quirks.c
index 1b114ac5996f..a871b6b0e35f 100644
--- a/arch/x86/kernel/platform-quirks.c
+++ b/arch/x86/kernel/platform-quirks.c
@@ -7,8 +7,12 @@ 
 void __init x86_early_init_platform_quirks(void)
 {
 	x86_platform.legacy.rtc = 1;
+	x86_platform.legacy.ebda_search = 0;
 
 	switch (boot_params.hdr.hardware_subarch) {
+	case X86_SUBARCH_PC:
+		x86_platform.legacy.ebda_search = 1;
+		break;
 	case X86_SUBARCH_XEN:
 	case X86_SUBARCH_LGUEST:
 	case X86_SUBARCH_INTEL_MID: