aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Merge branch 'x86/mpparse' into x86/develIngo Molnar2008-07-08
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: arch/x86/Kconfig arch/x86/kernel/io_apic_32.c arch/x86/kernel/setup_64.c arch/x86/mm/init_32.c Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86, ioapic, acpi quirk: disable IRQ 0 through I/O APIC for some HP systemsMatthew Garrett2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some HP laptops have a problem with their DSDT reporting as HP/SB400/10000, which includes some code which overrides all temperature trip points to 16C if the INTIN2 input of the I/O APIC is enabled. This input is incorrectly designated the ISA IRQ 0 via an interrupt source override even though it is wired to the output of the master 8259A and INTIN0 is not connected at all. So far two models have been identified, namely nx6125 and nx6325. Use a knob provided by the I/O APIC interrupt registration code to abandon any attempts to route IRQ 0 through the I/O APIC for these systems. Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Cc: Len Brown <lenb@kernel.org> Cc: Matthew Garrett <mjg59@srcf.ucam.org> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86, ioapic, acpi: add a knob to disable IRQ 0 through I/O APICMaciej W. Rozycki2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discovered recently some systems exhibit problems when the 8254 timer IRQ is routed through the I/O APIC. These problems do not affect the timer IRQ itself and therefore cannot be detected when the correctness of operation of the interrupt is verified in check_timer(). Therefore the I/O APIC path of the timer IRQ has to be disabled entirely. This is a change that lets platforms ask for the timer IRQ not to be registered in the I/O APIC interrupt tables. The local APIC and ExtINTA paths are unaffected. This request is only taken into account for ACPI platforms as MP table systems seem unaffected so far. Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> Cc: Len Brown <lenb@kernel.org> Cc: Matthew Garrett <mjg59@srcf.ucam.org> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: simplify x86_mpparse dependency checkYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "Maciej W. Rozycki" <macro@linux-mips.org> said: > Given X86_64 selects X86_LOCAL_APIC I am not sure the redundancy seen >above does not actually obscure the logic behind... I think: > > depends on X86_LOCAL_APIC && !X86_VISWS > >would be clearer and get the same. Suggested-by: Maciej W. Rozycki <macro@linux-mips.org> Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * Revert parts of "x86: update mptable"Ingo Molnar2008-07-08
| | | | | | | | Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: fix compiling when CONFIG_X86_MPPARSE is not setYinghai Lu2008-07-08
| | | | | | | | | | | | Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: let MPS support be selectable, v2Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | v2: seperate "fix for compiling when MPPARSE is not set" to another patch make X86_MPPARSE to be selectable only when acpi is set and X86_MPPARSE will be set if acpi is not set. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Maciej W. Rozycki <macro@linux-mips.org> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: update mptable fix with no ioapic v2Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if the system doesn't have ioapic, we don't need to store entries for mptable update also let mp_config_acpi_gsi not call func in mpparse so later could decouple mpparse with acpi more easily Reported-by: Daniel Exner <dex@dragonslave.de> Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Daniel Exner <dex@dragonslave.de> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: cleanup machine_specific_memory_setup, v2Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | 1. let 64bit support 88 and e801 too 2. introduce default_machine_specific_memory_setup, and reuse it for voyager v2: fix 64 bit compiling Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: remove unused file after numaq etc depends on genericarchYinghai Lu2008-07-08
| | | | | | | | | | | | | | we don't need those mach_mpspec.h files now. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: use acpi_numa_init to parse on 32-bit numaYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | seperate SRAT finding and parsing from get_memcfg_from_srat, and let getmemcfg_from_srat only handle array from previous step. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: Kconfig cleanup with genericarchYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | we already have summit and etc depends on genericarch, so use genericarch only. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: move some function out of setup_bootmem_allocYinghai Lu2008-07-08
| | | | | | | | | | | | | | ... to make it more like 64-bit. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: merge setup_memory_map with e820Yinghai Lu2008-07-08
| | | | | | | | | | | | | | ... and kill e820_32/64.c and e820_32/64.h Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: kill bad_pproYinghai Lu2008-07-08
| | | | | | | | | | | | | | so don't punish all other cpus without that problem when init highmem Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: move e820_resource_resources to e820.cYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | and make 32-bit resource registration more like 64 bit. also move probe_roms back to setup_32.c Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86 boot: pass E820 memory map entries more than 128 via linked list of ↵Huang, Ying2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | setup data Because of the size limits of struct boot_params (zero page), the maximum number of E820 memory map entries can be passed to kernel is 128. As pointed by Paul Jackson, there is some machine produced by SGI with so many nodes that the number of E820 memory map entries is more than 128. To enabling Linux kernel on these system, a new setup data type named SETUP_E820_EXT is defined to pass additional memory map entries to Linux kernel. This patch is based on x86/auto-latest branch of git-x86 tree and has been tested on x86_64 and i386 platform. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86, mm: use add_highpages_with_active_regions() for high pages init v2Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | use early_node_map to init high pages, so we can remove page_is_ram() and page_is_reserved_early() in the big loop with add_one_highpage also remove page_is_reserved_early(), it is not needed anymore. v2: fix the build of other platforms Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: rename two e820 related functionsYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | rename update_memory_range to e820_update_range rename add_memory_region to e820_add_region to make it more clear that they are about e820 map operations. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: use dstapic in mp_config_acpi_legacy_irqsYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | so we don't get the same value multiple times. also make mp_config_acpi_legacy_irqs more readable by moving assignments together. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: keep MP_intsrc_info untouched if we do not update mptableYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | Daniel Exner reported IO-APIC enumeration breakage in linux-next. Alexey Starikovskiy found out that it might be related to commit 2944e16b25 "x86: update mptable". use enable_update_mptable to decide if need check before add mp_irqs array. Reported-by: Daniel Exner <webmaster@dragonslave.de> Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: clean up relocate_initrdYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | 1. move that before zone_sizes_init ... 2. add free_early for one old one, otherwise it will be be reserved again when we init highmem. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: replace shrink_active_range() with remove_active_range()Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | in case we have kva before ramdisk on a node, we still need to use those ranges. v2: reserve_early kva ram area, in case there are holes in highmem, to avoid those area could be treat as free high pages. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: clean up reserve_bootmem_generic() and port it to 32-bitYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | 1. add reserve_bootmem_generic for 32bit 2. change len to unsigned long 3. make early_res_to_bootmem to use it Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: make generic arch support NUMAQ, fix #2Yinghai Lu2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | we are checking mptable early for numaq, so don't need to reserve_bootmem for it. bootmem is not there yet. do the same thing as 64-bit. found it on 64g above system from 64-bit kernel kexec to 32 bit kernel with numaq support. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: make generic arch support NUMAQ, fixYinghai Lu2008-07-08
| | | | | | | | | | | | | | fix typo in bigsmp switching. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: e820 merge parsing of the mem=/memmap= boot parametersYinghai Lu2008-07-08
| | | | | | | | | | | | | | | | since we now have 32-bit support for e820_register_active_regions(), we can merge the parsing of the mem=/memmap= boot parameters. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: unify the reserve_bootmem() behavior of early_res_to_bootmem()Ingo Molnar2008-07-08
| | | | | | | | Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: use reserve_bootmem_generic() to reserve crashkernel memory on x86_64Bernhard Walle2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch uses reserve_bootmem_generic() instead of reserve_bootmem() to reserve the crashkernel memory on x86_64. That's necessary for NUMA machines, see 00212fef814612245ed0261cbac8426d0c9a31a5: [PATCH] Fix kdump Crash Kernel boot memory reservation for NUMA machines This patch will fix a boot memory reservation bug that trashes memory on the ES7000 when loading the kdump crash kernel. The code in arch/x86_64/kernel/setup.c to reserve boot memory for the crash kernel uses the non-numa aware "reserve_bootmem" function instead of the NUMA aware "reserve_bootmem_generic". I checked to make sure that no other function was using "reserve_bootmem" and found none, except the ones that had NUMA ifdef'ed out. I have tested this patch only on an ES7000 with NUMA on and off (numa=off) in a single (non-NUMA) and multi-cell (NUMA) configurations. Signed-off-by: Amul Shah <amul.shah@unisys.com> Looks-good-to: Vivek Goyal <vgoyal@in.ibm.com> Cc: Andi Kleen <ak@muc.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org> The switch-back to reserve_bootmem() was accidentally introduced in 5c3391f9f749023a49c64d607da4fb49263690eb when adding the BOOTMEM_EXCLUSIVE parameter. Signed-off-by: Bernhard Walle <bwalle@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * x86: add flags parameter to reserve_bootmem_generic()Bernhard Walle2008-07-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a 'flags' parameter to reserve_bootmem_generic() like it already has been added in reserve_bootmem() with commit 72a7fe3967dbf86cb34e24fbf1d957fe24d2f246. It also changes all users to use BOOTMEM_DEFAULT, which doesn't effectively change the behaviour. Since the change is x86-specific, I don't think it's necessary to add a new API for migration. There are only 4 users of that function. The change is necessary for the next patch, using reserve_bootmem_generic() for crashkernel reservation. Signed-off-by: Bernhard Walle <bwalle@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * Merge branch 'linus' into tmp.x86.mpparse.newIngo Molnar2008-07-08
| |\
| * | x86, mpparse: build fixIngo Molnar2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fix: LD .tmp_vmlinux1 arch/x86/kernel/built-in.o: In function `setup_arch': : undefined reference to `early_reserve_e820_mpc_new' Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: update mptable, fixYinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | need to call early_reserve_e820() to preallocate mptable for 32bit Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: make generic arch support NUMAQYinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... so it could fall back to normal numa and we'd reduce the impact of the NUMAQ subarch. NUMAQ depends on GENERICARCH also decouple genericarch numa from acpi. also make it fall back to bigsmp if apicid > 8. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: introduce max_physical_apicid for bigsmp switchingYinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a multi-socket test-system with 3 or 4 ioapics, when 4 dualcore cpus or 2 quadcore cpus installed, needs to switch to bigsmp or physflat. CPU apic id is [4,11] instead of [0,7], and we need to check max apic id instead of cpu numbers. also add check for 32 bit when acpi is not compiled in or acpi=off. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: fix boot failure with 64GB+ system with numa 32-bitYinghai Lu2008-06-10
| | | | | | | | | | | | | | | Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86, numa, 32-bit: use find_e820_area() to find KVA RAM on nodeYinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | don't assume we can use RAM near the end of every node. Esp systems that have few memory and they could have kva address and kva RAM all below max_low_pfn. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | mm, x86: shrink_active_range() should check allYinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now we are using register_e820_active_regions() instead of add_active_range() directly. So end_pfn could be different between the value in early_node_map to node_end_pfn. So we need to make shrink_active_range() smarter. shrink_active_range() is a generic MM function in mm/page_alloc.c but it is only used on 32-bit x86. Should we move it back to some file in arch/x86? Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: remove all active memory ranges before registering them again after ↵Yinghai Lu2008-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | trimming - 64bit this way we keep the early_node_map all right. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | Revert "x86, 32-bit: SRAT fix"Ingo Molnar2008-06-09
| | | | | | | | | | | | | | | This reverts commit ea57a5a6db8961de35cd1a4a80d8e01ee4307973, a better fix will be merged.
| * | x86, 32-bit: SRAT fixIngo Molnar2008-06-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | we were adding reserved BIOS ranges as general memory as well => not good. solves this crash: [ 20.068075] hostname used greatest stack depth: 6464 bytes left [ 20.121404] BUG: unable to handle kernel <1>BUG: unable to handle kernel NULL pointer dereference at 00000b8c [ 20.121404] IP: [<c01160ae>] kmap_atomic_prot+0x2d/0x1c3 [ 20.121404] *pdpt = 00000000367eb001 *pde = 0000000000000000 [ 20.121404] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC [ 20.121404] [ 20.121404] Pid: 2061, comm: rc.sysinit Not tainted (2.6.26-rc3 #2440) [ 20.121404] EIP: 0060:[<c01160ae>] EFLAGS: 00010206 CPU: 0 [ 20.121404] EIP is at kmap_atomic_prot+0x2d/0x1c3 Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: linked list of setup_data for i386Huang, Ying2008-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds linked list of struct setup_data supported for i386. Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: andi@firstfloor.org Cc: mingo@redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: extract common part of head32.c and head64.c into head.cHuang, Ying2008-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch extracts the common part of head32.c and head64.c into head.c. Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: andi@firstfloor.org Cc: mingo@redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: reserve EFI memory map with reserve_earlyHuang, Ying2008-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch reserves the EFI memory map with reserve_early(). Because EFI memory map is allocated by bootloader, if it is not reserved by reserved_early(), it may be overwritten through address returned by find_e820_area(). Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: andi@firstfloor.org Cc: mingo@redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: reserve highmem pages via reserve_earlyHuang, Ying2008-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes early reserved highmem pages become reserved pages. This can be used for highmem pages allocated by bootloader such as EFI memory map, linked list of setup_data, etc. Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: andi@firstfloor.org Cc: mingo@redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: split out common code into find_overlapped_early()Huang, Ying2008-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch clean up reserve_early() family functions by extracting the common part of reserve_early(), free_early() and bad_addr() into find_overlapped_early(). Signed-off-by: Huang Ying <ying.huang@intel.com> Cc: andi@firstfloor.org Cc: mingo@redhat.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: e820 max_arch_pfn typo fix for 64 bitYinghai Lu2008-06-04
| | | | | | | | | | | | | | | | | | | | | | | | should use right shift Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| * | x86: make 32-bit use e820_register_active_regions()Yinghai Lu2008-06-04
| | | | | | | | | | | | | | | | | | | | | this way 32-bit is more similar to 64-bit, and smarter e820 and numa. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86: move e820_register_active() to e820.cYinghai Lu2008-06-04
| | | | | | | | | | | | | | | | | | | | | to prepare 32-bit to use it. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * | x86, numa, 32-bit: make sure get we kva spaceYinghai Lu2008-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | when 1/3 user/kernel split is used, and less memory is installed, or if we have a big hole below 4g, max_low_pfn is still using 3g-128m try to go down from max_low_pfn until we get it. otherwise will panic. need to make 32-bit code to use register_e820_active_regions ... later. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>