Commit-ID: 1330e3bc544a1951d81b7f3c7d4cecf77d906f67 Gitweb: http://git.kernel.org/tip/1330e3bc544a1951d81b7f3c7d4cecf77d906f67 Author: Luis R. Rodriguez <mcgrof@xxxxxxxxxx> AuthorDate: Wed, 13 Apr 2016 17:04:36 -0700 Committer: Ingo Molnar <mingo@xxxxxxxxxx> CommitDate: Fri, 22 Apr 2016 10:29:02 +0200 x86/init: Use a platform legacy quirk for EBDA This replaces the paravirt_enabled() check with a proper x86 legacy platform quirk. As per 0-day, this bumps the vmlinux size using i386-tinyconfig as follows: TOTAL TEXT init.text x86_early_init_platform_quirks() +39 +35 +35 +25 That's a 4 byte total overhead, the rest is all cleared out upon init as its all __init text. v2: document 0-day vmlinux size impact Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Brian Gerst <brgerst@xxxxxxxxx> Cc: Denys Vlasenko <dvlasenk@xxxxxxxxxx> Cc: H. Peter Anvin <hpa@xxxxxxxxx> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: andrew.cooper3@xxxxxxxxxx Cc: andriy.shevchenko@xxxxxxxxxxxxxxx Cc: bigeasy@xxxxxxxxxxxxx Cc: boris.ostrovsky@xxxxxxxxxx Cc: david.vrabel@xxxxxxxxxx Cc: ffainelli@xxxxxxxxxx Cc: george.dunlap@xxxxxxxxxx Cc: glin@xxxxxxxx Cc: jgross@xxxxxxxx Cc: jlee@xxxxxxxx Cc: josh@xxxxxxxxxxxxxxxx Cc: julien.grall@xxxxxxxxxx Cc: konrad.wilk@xxxxxxxxxx Cc: kozerkov@xxxxxxxxxxxxx Cc: lenb@xxxxxxxxxx Cc: lguest@xxxxxxxxxxxxxxxx Cc: linux-acpi@xxxxxxxxxxxxxxx Cc: lv.zheng@xxxxxxxxx Cc: matt@xxxxxxxxxxxxxxxxxxx Cc: mbizon@xxxxxxxxxx Cc: rjw@xxxxxxxxxxxxx Cc: robert.moore@xxxxxxxxx Cc: rusty@xxxxxxxxxxxxxxx Cc: tiwai@xxxxxxx Cc: toshi.kani@xxxxxx Cc: xen-devel@xxxxxxxxxxxxxxxxxxx Link: http://lkml.kernel.org/r/1460592286-300-7-git-send-email-mcgrof@xxxxxxxxxx Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> --- 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(-) diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index 8bb8c1a..89d9d57 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 992f442..afe65df 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 021a5f9..01b1597 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: -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |