On 02/20/2013 05:00:56 AM, Tang Chen wrote:There could be several memory ranges in the node in which the kernel
resides.
When using movablemem_map=acpi, we may skip one range that have memory
reserved
by memblock. But if it is too small, then the kernel will fail to
boot. So, make
the whole node which the kernel resides in un-hotpluggable. Then the
kernel has
enough memory to use.
Reported-by: H Peter Anvin <hpa@xxxxxxxxx>
Signed-off-by: Tang Chen <tangchen@xxxxxxxxxxxxxx>
Docs part Acked-by: Rob Landley <rob@xxxxxxxxxxx> (with minor
non-blocking snark).
@@ -1673,6 +1675,10 @@ bytes respectively. Such letter suffixes can
also be entirely omitted.
satisfied. So the administrator should be careful that
the amount of movablemem_map areas are not too large.
Otherwise kernel won't have enough memory to start.
+ NOTE: We don't stop users specifying the node the
+ kernel resides in as hotpluggable so that this
+ option can be used as a workaround of firmware
+ bugs.
I usually see workaround "for", not "of". And your whitespace is
inconsistent on that last line.
And I'm now kind of curious what such a workaround would accomplish, but
I'm suspect it's obvious to people who wind up needing it.
MTD_Partition= [MTD]
Format: <name>,<region-number>,<size>,<offset>
diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c
index b8028b2..79836d0 100644
--- a/arch/x86/mm/srat.c
+++ b/arch/x86/mm/srat.c
@@ -166,6 +166,9 @@ handle_movablemem(int node, u64 start, u64 end,
u32 hotpluggable)
* for other purposes, such as for kernel image. We cannot prevent
* kernel from using these memory, so we need to exclude these memory
* even if it is hotpluggable.
+ * Furthermore, to ensure the kernel has enough memory to boot, we make
+ * all the memory on the node which the kernel resides in
+ * un-hotpluggable.
*/
Can you hot-unplug half a node? (Do you have a choice with the
granularity here?)