lkml.org 
[lkml]   [2008]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 72/79] [PATCH] change x86_64 native_smp_prepare_cpus to match i386
    Date
    From: Glauber Costa <gcosta@redhat.com>

    An APIC test is moved, and code is replaced by the mach-default
    already defined function (smpboot_setup_io_apic).
    setup_portio_remap() is added, but it is a nop in mach-default.

    Signed-off-by: Glauber Costa <gcosta@redhat.com>
    ---
    arch/x86/kernel/smpboot_64.c | 24 ++++++++++--------------
    1 files changed, 10 insertions(+), 14 deletions(-)

    diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
    index f4363a3..6679ac5 100644
    --- a/arch/x86/kernel/smpboot_64.c
    +++ b/arch/x86/kernel/smpboot_64.c
    @@ -71,6 +71,7 @@ int smp_threads_ready;
    cycles_t cacheflush_time;
    unsigned long cache_decay_ticks;

    +static int boot_cpu_logical_apicid;
    /*
    * Fall back to non SMP mode after errors.
    *
    @@ -167,7 +168,11 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
    {
    nmi_watchdog_default();
    smp_cpu_index_default();
    + cpu_callin_map = cpumask_of_cpu(0);
    + mb();
    +
    current_cpu_data = boot_cpu_data;
    + boot_cpu_logical_apicid = logical_smp_processor_id();
    current_thread_info()->cpu = 0; /* needed? */
    set_cpu_sibling_map(0);

    @@ -177,6 +182,11 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
    return;
    }

    + if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid) {
    + panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
    + GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_physical_apicid);
    + /* Or can we switch back to PIC here? */
    + }

    /*
    * Switch from PIC to APIC mode.
    @@ -190,20 +200,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
    enable_IO_APIC();
    end_local_APIC_setup();

    - if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid) {
    - panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
    - GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_physical_apicid);
    - /* Or can we switch back to PIC here? */
    - }
    -
    - /*
    - * Now start the IO-APICs
    - */
    - if (!skip_ioapic_setup && nr_ioapics)
    - setup_IO_APIC();
    - else
    - nr_ioapics = 0;
    -
    /*
    * Set up local APIC timer on boot CPU.
    */
    --
    1.5.0.6


    \
     
     \ /
      Last update: 2008-03-19 21:33    [W:4.120 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site