diff options
Diffstat (limited to 'arch/x86/kernel/mpparse.c')
-rw-r--r-- | arch/x86/kernel/mpparse.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 8b6b1e05c306..3b25e49380c6 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c | |||
@@ -726,12 +726,22 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type) | |||
726 | static struct intel_mp_floating *mpf_found; | 726 | static struct intel_mp_floating *mpf_found; |
727 | 727 | ||
728 | /* | 728 | /* |
729 | * Machine specific quirk for finding the SMP config before other setup | ||
730 | * activities destroy the table: | ||
731 | */ | ||
732 | int (*mach_get_smp_config_quirk)(unsigned int early); | ||
733 | |||
734 | /* | ||
729 | * Scan the memory blocks for an SMP configuration block. | 735 | * Scan the memory blocks for an SMP configuration block. |
730 | */ | 736 | */ |
731 | static void __init __get_smp_config(unsigned early) | 737 | static void __init __get_smp_config(unsigned int early) |
732 | { | 738 | { |
733 | struct intel_mp_floating *mpf = mpf_found; | 739 | struct intel_mp_floating *mpf = mpf_found; |
734 | 740 | ||
741 | if (mach_get_smp_config_quirk) { | ||
742 | if (mach_get_smp_config_quirk(early)) | ||
743 | return; | ||
744 | } | ||
735 | if (acpi_lapic && early) | 745 | if (acpi_lapic && early) |
736 | return; | 746 | return; |
737 | /* | 747 | /* |
@@ -889,10 +899,16 @@ static int __init smp_scan_config(unsigned long base, unsigned long length, | |||
889 | return 0; | 899 | return 0; |
890 | } | 900 | } |
891 | 901 | ||
892 | static void __init __find_smp_config(unsigned reserve) | 902 | int (*mach_find_smp_config_quirk)(unsigned int reserve); |
903 | |||
904 | static void __init __find_smp_config(unsigned int reserve) | ||
893 | { | 905 | { |
894 | unsigned int address; | 906 | unsigned int address; |
895 | 907 | ||
908 | if (mach_find_smp_config_quirk) { | ||
909 | if (mach_find_smp_config_quirk(reserve)) | ||
910 | return; | ||
911 | } | ||
896 | /* | 912 | /* |
897 | * FIXME: Linux assumes you have 640K of base ram.. | 913 | * FIXME: Linux assumes you have 640K of base ram.. |
898 | * this continues the error... | 914 | * this continues the error... |