24 Dec, 2011

1 commit

  • Currently we start with the default apic_flat mode and switch to some other
    apic model depending on the apic drivers acpi_madt_oem_check() routines and
    later followed by the apic drivers probe() routines.

    Once we selected non flat mode there was no case where we fall back to
    flat mode again.

    Upcoming changes allow bios-enabled x2apic mode to be disabled by the OS
    if interrupt-remapping etc is not setup properly by the bios.

    We now has a case for the apic to fall back to legacy flat mode during
    apic driver probe() seqeuence. Add a simple flat_probe() which allows
    the apic_flat mode to be the last fallback option.

    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/20111222014632.484984298@sbsiddha-desk.sc.intel.com
    Signed-off-by: Suresh Siddha
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     

06 Dec, 2011

1 commit

  • Allow flat_init_apic_ldr() to be used outside the compilation
    unit for similar APIC implementations.

    Signed-off-by: Daniel J Blueman
    Cc: Steffen Persvold
    Cc: Jesse Barnes
    Link: http://lkml.kernel.org/r/1323073238-32686-1-git-send-email-daniel@numascale-asia.com
    Signed-off-by: Ingo Molnar

    Daniel J Blueman
     

24 May, 2011

1 commit

  • apic_flat_64.c needs to include module.h because it uses
    EXPORT_SYMBOL_GPL().

    This fixes these warnings on some !SMP randconfigs:

    arch/x86/kernel/apic/apic_flat_64.c:31: warning: data definition has no type or storage class
    arch/x86/kernel/apic/apic_flat_64.c:31: warning: type defaults to 'int' in declaration of 'EXPORT_SYMBOL_GPL'
    arch/x86/kernel/apic/apic_flat_64.c:31: warning: parameter names (without types) in function declaration

    Signed-off-by: Randy Dunlap
    Cc: Stephen Rothwell
    Link: http://lkml.kernel.org/r/20110523104300.dd532a99.randy.dunlap@oracle.com
    Signed-off-by: Ingo Molnar

    Randy Dunlap
     

22 May, 2011

2 commits

  • Apic probe now looks at the apic drivers listed in the
    .apicdrivers section. Remove apic_probe[] and make each apic
    driver static.

    Signed-off-by: Suresh Siddha
    Tested-by: Cyrill Gorcunov
    Cc: steiner@sgi.com
    Cc: gorcunov@openvz.org
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110521005526.341718626@sbsiddha-MOBL3.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • This will pave the way for each apic driver to be self-contained
    and eliminate the need for apic_probe[].

    Order in which apic drivers are listed in the .apicdrivers
    section is important, as this determines the apic probe order.
    And this is enforced by the ordering of apic driver files in the
    Makefile and the macros apic_driver()/apic_drivers().

    Signed-off-by: Suresh Siddha
    Tested-by: Cyrill Gorcunov
    Cc: steiner@sgi.com
    Cc: gorcunov@openvz.org
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110521005526.068775085@sbsiddha-MOBL3.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

20 May, 2011

1 commit

  • Use the unused probe routine in the apic driver to finalize the
    apic model selection. This cleans up the
    default_setup_apic_routing() and this probe routine in future
    can also be used for doing any apic model specific
    initialisation.

    Signed-off-by: Suresh Siddha
    Acked-by: Cyrill Gorcunov
    Cc: steiner@sgi.com
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110519234637.247458931@sbsiddha-MOBL3.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

28 Jan, 2011

2 commits

  • apic->apicid_to_node() is 32bit specific apic operation which
    determines NUMA node for a CPU. Depending on the APIC
    implementation, it can be easier to determine NUMA node from
    either physical or logical apicid. Currently,
    ->apicid_to_node() takes @logical_apicid and calls
    hard_smp_processor_id() if the physical apicid is needed.

    This prevents NUMA mapping from being queried from a different
    CPU, which in turn makes it impossible to initialize NUMA
    mapping before SMP bringup.

    This patch replaces apic->apicid_to_node() with
    ->x86_32_numa_cpu_node() which takes @cpu, from which both
    logical and physical apicids can easily be determined. While at
    it, drop duplicate implementations from bigsmp_32 and summit_32,
    and use the default one.

    Signed-off-by: Tejun Heo
    Reviewed-by: Pekka Enberg
    Cc: eric.dumazet@gmail.com
    Cc: yinghai@kernel.org
    Cc: brgerst@gmail.com
    Cc: gorcunov@gmail.com
    Cc: shaohui.zheng@intel.com
    Cc: rientjes@google.com
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Tejun Heo
     
  • After the previous patch, apic->cpu_to_logical_apicid() is no
    longer used. Kill it.

    For apic types with custom cpu_to_logical_apicid() which is also
    used for other purposes, remove the function and modify its
    users to do the mapping directly.

    #ifdef's on CONFIG_SMP in es7000_32 and summit_32 are ignored
    during conversion as they are not used for UP kernels.

    Signed-off-by: Tejun Heo
    Cc: eric.dumazet@gmail.com
    Cc: yinghai@kernel.org
    Cc: brgerst@gmail.com
    Cc: gorcunov@gmail.com
    Cc: penberg@kernel.org
    Cc: shaohui.zheng@intel.com
    Cc: rientjes@google.com
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Tejun Heo
     

04 Feb, 2010

1 commit


19 Jan, 2010

1 commit

  • Chris McDermott from IBM confirmed that hurricane chipset in IBM summit
    platforms doesn't support logical flat mode. Irrespective of the other
    things like apic_id's, total number of logical cpu's, Linux kernel
    should default to physical mode for this system.

    The 32-bit kernel does so using the OEM checks for the IBM summit
    platform. Add a similar OEM platform check for the 64bit kernel too.

    Otherwise the linux kernel boot can hang on this platform under certain
    bios/platform settings.

    Signed-off-by: Suresh Siddha
    Tested-by: Ananth N Mavinakayanahalli
    Cc: Chris McDermott
    Cc: Yinghai Lu
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Suresh Siddha
     

18 Dec, 2009

1 commit

  • John Blackwood reported:
    > on an older Dell PowerEdge 6650 system with 8 cpus (4 are hyper-threaded),
    > and 32 bit (x86) kernel, once you change the irq smp_affinity of an irq
    > to be less than all cpus in the system, you can never change really the
    > irq smp_affinity back to be all cpus in the system (0xff) again,
    > even though no error status is returned on the "/bin/echo ff >
    > /proc/irq/[n]/smp_affinity" operation.
    >
    > This is due to that fact that BAD_APICID has the same value as
    > all cpus (0xff) on 32bit kernels, and thus the value returned from
    > set_desc_affinity() via the cpu_mask_to_apicid_and() function is treated
    > as a failure in set_ioapic_affinity_irq_desc(), and no affinity changes
    > are made.

    set_desc_affinity() is already checking if the incoming cpu mask
    intersects with the cpu online mask or not. So there is no need
    for the apic op cpu_mask_to_apicid_and() to check again
    and return BAD_APICID.

    Remove the BAD_APICID return value from cpu_mask_to_apicid_and()
    and also fix set_desc_affinity() to return -1 instead of using BAD_APICID
    to represent error conditions (as cpu_mask_to_apicid_and() can return
    logical or physical apicid values and BAD_APICID is really to represent
    bad physical apic id).

    Reported-by: John Blackwood
    Root-caused-by: John Blackwood
    Signed-off-by: Suresh Siddha
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Suresh Siddha
     

18 May, 2009

1 commit


11 May, 2009

1 commit


08 Apr, 2009

1 commit


25 Mar, 2009

1 commit


26 Feb, 2009

2 commits

  • Impact: cleanup

    - rename apic->wakeup_cpu to apic->wakeup_secondary_cpu, to
    make it apparent that this is an SMP-only method

    - handle NULL ->wakeup_secondary_cpus to mean the default INIT
    wakeup sequence - this allows simplification of the APIC
    driver templates.

    Cc: Yinghai Lu
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Impact: cleanup

    x86_quirks->update_apic() calling looks crazy. so try to remove it:

    1. every apic take wakeup_cpu member directly
    2. separate es7000_apic to es7000_apic_cluster
    3. use uv_wakeup_cpu directly

    Signed-off-by: Yinghai Lu
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     

18 Feb, 2009

1 commit

  • arch/x86/kernel/ is getting a bit crowded, and the APIC
    drivers are scattered into various different files.

    Move them to arch/x86/kernel/apic/*, and also remove
    the 'gen' prefix from those which had it.

    Also move APIC related functionality: the IO-APIC driver,
    the NMI and the IPI code.

    Signed-off-by: Ingo Molnar

    Ingo Molnar