lkml.org 
[lkml]   [2010]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 35/38] use nr_cpus= to set nr_cpu_ids early
    on x86, before prefill_possible_map(), nr_cpu_ids will be NR_CPUS aka CONFIG_NR_CPUS

    add nr_cpus= to set nr_cpu_ids. so we can simulate cpus <=8 are installed on
    normal config.

    -v2: accordging to Christoph, acpi_numa_init should use nr_cpu_ids in stead of
    NR_CPUS.

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    ---
    arch/ia64/kernel/acpi.c | 4 ++--
    arch/x86/kernel/smpboot.c | 7 ++++---
    drivers/acpi/numa.c | 4 ++--
    init/main.c | 14 ++++++++++++++
    4 files changed, 22 insertions(+), 7 deletions(-)

    diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
    index 40574ae..605a08b 100644
    --- a/arch/ia64/kernel/acpi.c
    +++ b/arch/ia64/kernel/acpi.c
    @@ -881,8 +881,8 @@ __init void prefill_possible_map(void)

    possible = available_cpus + additional_cpus;

    - if (possible > NR_CPUS)
    - possible = NR_CPUS;
    + if (possible > nr_cpu_ids)
    + possible = nr_cpu_ids;

    printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
    possible, max((possible - available_cpus), 0));
    diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
    index 678d0b8..eff2fe1 100644
    --- a/arch/x86/kernel/smpboot.c
    +++ b/arch/x86/kernel/smpboot.c
    @@ -1213,11 +1213,12 @@ __init void prefill_possible_map(void)

    total_cpus = max_t(int, possible, num_processors + disabled_cpus);

    - if (possible > CONFIG_NR_CPUS) {
    + /* nr_cpu_ids could be reduced via nr_cpus= */
    + if (possible > nr_cpu_ids) {
    printk(KERN_WARNING
    "%d Processors exceeds NR_CPUS limit of %d\n",
    - possible, CONFIG_NR_CPUS);
    - possible = CONFIG_NR_CPUS;
    + possible, nr_cpu_ids);
    + possible = nr_cpu_ids;
    }

    printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
    diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
    index 7ad48df..b872546 100644
    --- a/drivers/acpi/numa.c
    +++ b/drivers/acpi/numa.c
    @@ -279,9 +279,9 @@ int __init acpi_numa_init(void)
    /* SRAT: Static Resource Affinity Table */
    if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
    acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY,
    - acpi_parse_x2apic_affinity, NR_CPUS);
    + acpi_parse_x2apic_affinity, nr_cpu_ids);
    acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
    - acpi_parse_processor_affinity, NR_CPUS);
    + acpi_parse_processor_affinity, nr_cpu_ids);
    ret = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
    acpi_parse_memory_affinity,
    NR_NODE_MEMBLKS);
    diff --git a/init/main.c b/init/main.c
    index 8451878..05b5283 100644
    --- a/init/main.c
    +++ b/init/main.c
    @@ -149,6 +149,20 @@ static int __init nosmp(char *str)

    early_param("nosmp", nosmp);

    +/* this is hard limit */
    +static int __init nrcpus(char *str)
    +{
    + int nr_cpus;
    +
    + get_option(&str, &nr_cpus);
    + if (nr_cpus > 0 && nr_cpus < nr_cpu_ids)
    + nr_cpu_ids = nr_cpus;
    +
    + return 0;
    +}
    +
    +early_param("nr_cpus", nrcpus);
    +
    static int __init maxcpus(char *str)
    {
    get_option(&str, &setup_max_cpus);
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-01-22 10:31    [W:4.107 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site