aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/kernel-parameters.txt
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2013-03-01 17:51:27 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-03-02 12:34:39 -0500
commit20e6926dcbafa1b361f1c29d967688be14b6ca4b (patch)
treec5ea7011124c5c1a476c43484a6072702c178edc /Documentation/kernel-parameters.txt
parent14cc0b55b70e297a4b5411733d58c6cdc2d7f1be (diff)
x86, ACPI, mm: Revert movablemem_map support
Tim found: WARNING: at arch/x86/kernel/smpboot.c:324 topology_sane.isra.2+0x6f/0x80() Hardware name: S2600CP sched: CPU #1's llc-sibling CPU #0 is not on the same node! [node: 1 != 0]. Ignoring dependency. smpboot: Booting Node 1, Processors #1 Modules linked in: Pid: 0, comm: swapper/1 Not tainted 3.9.0-0-generic #1 Call Trace: set_cpu_sibling_map+0x279/0x449 start_secondary+0x11d/0x1e5 Don Morris reproduced on a HP z620 workstation, and bisected it to commit e8d195525809 ("acpi, memory-hotplug: parse SRAT before memblock is ready") It turns out movable_map has some problems, and it breaks several things 1. numa_init is called several times, NOT just for srat. so those nodes_clear(numa_nodes_parsed) memset(&numa_meminfo, 0, sizeof(numa_meminfo)) can not be just removed. Need to consider sequence is: numaq, srat, amd, dummy. and make fall back path working. 2. simply split acpi_numa_init to early_parse_srat. a. that early_parse_srat is NOT called for ia64, so you break ia64. b. for (i = 0; i < MAX_LOCAL_APIC; i++) set_apicid_to_node(i, NUMA_NO_NODE) still left in numa_init. So it will just clear result from early_parse_srat. it should be moved before that.... c. it breaks ACPI_TABLE_OVERIDE...as the acpi table scan is moved early before override from INITRD is settled. 3. that patch TITLE is total misleading, there is NO x86 in the title, but it changes critical x86 code. It caused x86 guys did not pay attention to find the problem early. Those patches really should be routed via tip/x86/mm. 4. after that commit, following range can not use movable ram: a. real_mode code.... well..funny, legacy Node0 [0,1M) could be hot-removed? b. initrd... it will be freed after booting, so it could be on movable... c. crashkernel for kdump...: looks like we can not put kdump kernel above 4G anymore. d. init_mem_mapping: can not put page table high anymore. e. initmem_init: vmemmap can not be high local node anymore. That is not good. If node is hotplugable, the mem related range like page table and vmemmap could be on the that node without problem and should be on that node. We have workaround patch that could fix some problems, but some can not be fixed. So just remove that offending commit and related ones including: f7210e6c4ac7 ("mm/memblock.c: use CONFIG_HAVE_MEMBLOCK_NODE_MAP to protect movablecore_map in memblock_overlaps_region().") 01a178a94e8e ("acpi, memory-hotplug: support getting hotplug info from SRAT") 27168d38fa20 ("acpi, memory-hotplug: extend movablemem_map ranges to the end of node") e8d195525809 ("acpi, memory-hotplug: parse SRAT before memblock is ready") fb06bc8e5f42 ("page_alloc: bootmem limit with movablecore_map") 42f47e27e761 ("page_alloc: make movablemem_map have higher priority") 6981ec31146c ("page_alloc: introduce zone_movable_limit[] to keep movable limit for nodes") 34b71f1e04fc ("page_alloc: add movable_memmap kernel parameter") 4d59a75125d5 ("x86: get pg_data_t's memory from other node") Later we should have patches that will make sure kernel put page table and vmemmap on local node ram instead of push them down to node0. Also need to find way to put other kernel used ram to local node ram. Reported-by: Tim Gardner <tim.gardner@canonical.com> Reported-by: Don Morris <don.morris@hp.com> Bisected-by: Don Morris <don.morris@hp.com> Tested-by: Don Morris <don.morris@hp.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Tony Luck <tony.luck@intel.com> Cc: Thomas Renninger <trenn@suse.de> Cc: Tejun Heo <tj@kernel.org> Cc: Tang Chen <tangchen@cn.fujitsu.com> Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/kernel-parameters.txt')
-rw-r--r--Documentation/kernel-parameters.txt36
1 files changed, 0 insertions, 36 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index e567af39ee34..3a54fca730c0 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1645,42 +1645,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1645 that the amount of memory usable for all allocations 1645 that the amount of memory usable for all allocations
1646 is not too small. 1646 is not too small.
1647 1647
1648 movablemem_map=acpi
1649 [KNL,X86,IA-64,PPC] This parameter is similar to
1650 memmap except it specifies the memory map of
1651 ZONE_MOVABLE.
1652 This option inform the kernel to use Hot Pluggable bit
1653 in flags from SRAT from ACPI BIOS to determine which
1654 memory devices could be hotplugged. The corresponding
1655 memory ranges will be set as ZONE_MOVABLE.
1656 NOTE: Whatever node the kernel resides in will always
1657 be un-hotpluggable.
1658
1659 movablemem_map=nn[KMG]@ss[KMG]
1660 [KNL,X86,IA-64,PPC] This parameter is similar to
1661 memmap except it specifies the memory map of
1662 ZONE_MOVABLE.
1663 If user specifies memory ranges, the info in SRAT will
1664 be ingored. And it works like the following:
1665 - If more ranges are all within one node, then from
1666 lowest ss to the end of the node will be ZONE_MOVABLE.
1667 - If a range is within a node, then from ss to the end
1668 of the node will be ZONE_MOVABLE.
1669 - If a range covers two or more nodes, then from ss to
1670 the end of the 1st node will be ZONE_MOVABLE, and all
1671 the rest nodes will only have ZONE_MOVABLE.
1672 If memmap is specified at the same time, the
1673 movablemem_map will be limited within the memmap
1674 areas. If kernelcore or movablecore is also specified,
1675 movablemem_map will have higher priority to be
1676 satisfied. So the administrator should be careful that
1677 the amount of movablemem_map areas are not too large.
1678 Otherwise kernel won't have enough memory to start.
1679 NOTE: We don't stop users specifying the node the
1680 kernel resides in as hotpluggable so that this
1681 option can be used as a workaround of firmware
1682 bugs.
1683
1684 MTD_Partition= [MTD] 1648 MTD_Partition= [MTD]
1685 Format: <name>,<region-number>,<size>,<offset> 1649 Format: <name>,<region-number>,<size>,<offset>
1686 1650