Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=14694d736bb66d0ec250d05c81c6e98a19c229c6
Commit:     14694d736bb66d0ec250d05c81c6e98a19c229c6
Parent:     8b8ca80e192b10eecc01fc44a2902510af86f73b
Author:     David Rientjes <[EMAIL PROTECTED]>
AuthorDate: Wed May 2 19:27:09 2007 +0200
Committer:  Andi Kleen <[EMAIL PROTECTED]>
CommitDate: Wed May 2 19:27:09 2007 +0200

    [PATCH] x86-64: split remaining fake nodes equally
    
    Extends the numa=fake x86_64 command-line option to split the remaining
    system memory into equal-sized nodes.
    
    For example:
    numa=fake=2*512,4*  gives two 512M nodes and the remaining system
                        memory is split into four approximately equal
                        chunks.
    
    This is beneficial for systems where the exact size of RAM is unknown or not
    necessarily relevant, but the granularity with which nodes shall be 
allocated
    is known.
    
    Cc: Andi Kleen <[EMAIL PROTECTED]>
    Signed-off-by: David Rientjes <[EMAIL PROTECTED]>
    Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
    Cc: Paul Jackson <[EMAIL PROTECTED]>
    Cc: Christoph Lameter <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
 Documentation/x86_64/boot-options.txt |    4 +++-
 arch/x86_64/mm/numa.c                 |   22 ++++++++++++++++++----
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/Documentation/x86_64/boot-options.txt 
b/Documentation/x86_64/boot-options.txt
index 7500aad..12a9aac 100644
--- a/Documentation/x86_64/boot-options.txt
+++ b/Documentation/x86_64/boot-options.txt
@@ -155,7 +155,9 @@ NUMA
                depending on the sizes and coefficients listed.  For example:
                        numa=fake=2*512,1024,4*256
                gives two 512M nodes, a 1024M node, and four 256M nodes.  The
-               remaining system RAM is allocated to an additional node.
+               remaining system RAM is allocated to an additional node.  If
+               the last character of CMDLINE is a *, the remaining system RAM
+               is instead divided up equally among its coefficient.
 
   numa=hotadd=percent
                Only allow hotadd memory to preallocate page structures upto
diff --git a/arch/x86_64/mm/numa.c b/arch/x86_64/mm/numa.c
index c55936b..0ae2d9d 100644
--- a/arch/x86_64/mm/numa.c
+++ b/arch/x86_64/mm/numa.c
@@ -418,11 +418,25 @@ static int __init numa_emulation(unsigned long start_pfn, 
unsigned long end_pfn)
 done:
        if (!num_nodes)
                return -1;
-       /* Fill remainder of system RAM with a final node, if appropriate. */
+       /* Fill remainder of system RAM, if appropriate. */
        if (addr < max_addr) {
-               setup_node_range(num_nodes, nodes, &addr, max_addr - addr,
-                                max_addr);
-               num_nodes++;
+               switch (*(cmdline - 1)) {
+               case '*':
+                       /* Split remaining nodes into coeff chunks */
+                       if (coeff <= 0)
+                               break;
+                       num_nodes += split_nodes_equally(nodes, &addr, max_addr,
+                                                        num_nodes, coeff);
+                       break;
+               case ',':
+                       /* Do not allocate remaining system RAM */
+                       break;
+               default:
+                       /* Give one final node */
+                       setup_node_range(num_nodes, nodes, &addr,
+                                        max_addr - addr, max_addr);
+                       num_nodes++;
+               }
        }
 out:
        memnode_shift = compute_hash_shift(nodes, num_nodes);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to