12 Jan, 2012

2 commits

  • * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/intel config: Fix the APB_TIMER selection
    x86/mrst: Add additional debug prints for pb_keys
    x86/intel config: Revamp configuration to allow for Moorestown and Medfield
    x86/intel/scu/ipc: Match the changes in the x86 configuration
    x86/apb: Fix configuration constraints
    x86: Fix INTEL_MID silly
    x86/Kconfig: Cyclone-timer depends on x86-summit
    x86: Reduce clock calibration time during slave cpu startup
    x86/config: Revamp configuration for MID devices
    x86/sfi: Kill the IRQ as id hack

    Linus Torvalds
     
  • * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, reboot: Fix typo in nmi reboot path
    x86, NMI: Add to_cpumask() to silence compile warning
    x86, NMI: NMI selftest depends on the local apic
    x86: Add stack top margin for stack overflow checking
    x86, NMI: NMI-selftest should handle the UP case properly
    x86: Fix the 32-bit stackoverflow-debug build
    x86, NMI: Add knob to disable using NMI IPIs to stop cpus
    x86, NMI: Add NMI IPI selftest
    x86, reboot: Use NMI instead of REBOOT_VECTOR to stop cpus
    x86: Clean up the range of stack overflow checking
    x86: Panic on detection of stack overflow
    x86: Check stack overflow in detail

    Linus Torvalds
     

24 Dec, 2011

1 commit

  • If the x2apic mode is disabled for reasons like interrupt-remapping
    not available etc, then we need to skip the logical cpu bringup of
    apic-id's >= 255. Otherwise as the platform is in xapic mode, init/startup
    IPI's will consider only the low 8-bits and there is a possibility of
    re-sending init/startup IPI's to the logical cpu that is already online.

    This will avoid potential reboots/unpredictable behavior etc.

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

    Suresh Siddha
     

06 Dec, 2011

1 commit

  • Reduce the startup time for slave cpus.

    Adds hooks for an arch-specific function for clock calibration.
    These hooks are used on x86. If a newly started cpu has the
    same phys_proc_id as a core already active, uses the TSC for the
    delay loop and has a CONSTANT_TSC, use the already-calculated
    value of loops_per_jiffy.

    This patch reduces the time required to start slave cpus on a
    4096 cpu system from: 465 sec OLD 62 sec NEW

    This reduces boot time on a 4096p system by almost 7 minutes.
    Nice...

    Signed-off-by: Jack Steiner
    Cc: "H. Peter Anvin"
    Cc: John Stultz
    [fix CONFIG_SMP=n build]
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Jack Steiner
     

05 Dec, 2011

1 commit

  • The previous patch modified the stop cpus path to use NMI
    instead of IRQ as the way to communicate to the other cpus to
    shutdown. There were some concerns that various machines may
    have problems with using an NMI IPI.

    This patch creates a selftest to check if NMI is working at
    boot. The idea is to help catch any issues before the machine
    panics and we learn the hard way.

    Loosely based on the locking-selftest.c file, this separate file
    runs a couple of simple tests and reports the results. The
    output looks like:

    ...
    Brought up 4 CPUs
    ----------------
    | NMI testsuite:
    --------------------
    remote IPI: ok |
    local IPI: ok |
    --------------------
    Good, all 2 testcases passed! |
    ---------------------------------
    Total of 4 processors activated (21330.61 BogoMIPS).
    ...

    Signed-off-by: Don Zickus
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Robert Richter
    Cc: seiji.aguchi@hds.com
    Cc: vgoyal@redhat.com
    Cc: mjg@redhat.com
    Cc: tony.luck@intel.com
    Cc: gong.chen@intel.com
    Cc: satoru.moriya@hds.com
    Cc: avi@redhat.com
    Cc: Andi Kleen
    Link: http://lkml.kernel.org/r/1318533267-18880-3-git-send-email-dzickus@redhat.com
    Signed-off-by: Ingo Molnar

    Don Zickus
     

23 Jul, 2011

1 commit


21 Jul, 2011

1 commit


08 Jun, 2011

1 commit

  • After a newly plugged CPU sets the cpu_online bit it enables
    interrupts and goes idle. The cpu which brought up the new cpu waits
    for the cpu_online bit and when it observes it, it sets the cpu_active
    bit for this cpu. The cpu_active bit is the relevant one for the
    scheduler to consider the cpu as a viable target.

    With forced threaded interrupt handlers which imply forced threaded
    softirqs we observed the following race:

    cpu 0 cpu 1

    bringup(cpu1);
    set_cpu_online(smp_processor_id(), true);
    local_irq_enable();
    while (!cpu_online(cpu1));
    timer_interrupt()
    -> wake_up(softirq_thread_cpu1);
    -> enqueue_on(softirq_thread_cpu1, cpu0);

    ^^^^

    cpu_notify(CPU_ONLINE, cpu1);
    -> sched_cpu_active(cpu1)
    -> set_cpu_active((cpu1, true);

    When an interrupt happens before the cpu_active bit is set by the cpu
    which brought up the newly onlined cpu, then the scheduler refuses to
    enqueue the woken thread which is bound to that newly onlined cpu on
    that newly onlined cpu due to the not yet set cpu_active bit and
    selects a fallback runqueue. Not really an expected and desirable
    behaviour.

    So far this has only been observed with forced hard/softirq threading,
    but in theory this could happen without forced threaded hard/softirqs
    as well. It's probably unobservable as it would take a massive
    interrupt storm on the newly onlined cpu which causes the softirq loop
    to wake up the softirq thread and an even longer delay of the cpu
    which waits for the cpu_online bit.

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Peter Zijlstra
    Cc: stable@kernel.org # 2.6.39

    Thomas Gleixner
     

30 May, 2011

2 commits

  • A logic error in mwait_play_dead() causes the kernel to use
    mwait even on cpus which don't support it, such as KVM virtual
    cpus.

    Introduced by:

    349c004e3d31: x86: A fast way to check capabilities of the current cpu

    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=36222
    Reported-by: Török Edwin
    Signed-off-by: Avi Kivity
    Cc: Christoph Lameter
    Cc: Tejun Heo
    Link: http://lkml.kernel.org/r/1306758237-9327-1-git-send-email-avi@redhat.com
    Signed-off-by: Ingo Molnar

    Avi Kivity
     
  • * 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6:
    x86 idle: deprecate mwait_idle() and "idle=mwait" cmdline param
    x86 idle: deprecate "no-hlt" cmdline param
    x86 idle APM: deprecate CONFIG_APM_CPU_IDLE
    x86 idle floppy: deprecate disable_hlt()
    x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM demands it
    x86 idle: clarify AMD erratum 400 workaround
    idle governor: Avoid lock acquisition to read pm_qos before entering idle
    cpuidle: menu: fixed wrapping timers at 4.294 seconds

    Linus Torvalds
     

29 May, 2011

1 commit

  • The workaround for AMD erratum 400 uses the term "c1e" falsely suggesting:
    1. Intel C1E is somehow involved
    2. All AMD processors with C1E are involved

    Use the string "amd_c1e" instead of simply "c1e" to clarify that
    this workaround is specific to AMD's version of C1E.
    Use the string "e400" to clarify that the workaround is specific
    to AMD processors with Erratum 400.

    This patch is text-substitution only, with no functional change.

    cc: x86@kernel.org
    Acked-by: Borislav Petkov
    Signed-off-by: Len Brown

    Len Brown
     

29 Mar, 2011

1 commit

  • Add this_cpu_has() which determines if the current cpu has a certain
    ability using a segment prefix and a bit test operation.

    For that we need to add bit operations to x86s percpu.h.

    Many uses of cpu_has use a pointer passed to a function to determine
    the current flags. That is no longer necessary after this patch.

    However, this patch only converts the straightforward cases where
    cpu_has is used with this_cpu_ptr. The rest is work for later.

    -tj: Rolled up patch to add x86_ prefix and use percpu_read() instead
    of percpu_read_stable().

    Signed-off-by: Christoph Lameter
    Acked-by: Tejun Heo
    Signed-off-by: Tejun Heo

    Christoph Lameter
     

17 Mar, 2011

1 commit

  • …rnel/git/tip/linux-2.6-tip

    * 'x86-trampoline-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix binutils-2.21 symbol related build failures
    x86-64, trampoline: Remove unused variable
    x86, reboot: Fix the use of passed arguments in 32-bit BIOS reboot
    x86, reboot: Move the real-mode reboot code to an assembly file
    x86: Make the GDT_ENTRY() macro in <asm/segment.h> safe for assembly
    x86, trampoline: Use the unified trampoline setup for ACPI wakeup
    x86, trampoline: Common infrastructure for low memory trampolines

    Fix up trivial conflicts in arch/x86/kernel/Makefile

    Linus Torvalds
     

16 Mar, 2011

3 commits

  • * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (93 commits)
    x86, tlb, UV: Do small micro-optimization for native_flush_tlb_others()
    x86-64, NUMA: Don't call numa_set_distanc() for all possible node combinations during emulation
    x86-64, NUMA: Don't assume phys node 0 is always online in numa_emulation()
    x86-64, NUMA: Clean up initmem_init()
    x86-64, NUMA: Fix numa_emulation code with node0 without RAM
    x86-64, NUMA: Revert NUMA affine page table allocation
    x86: Work around old gas bug
    x86-64, NUMA: Better explain numa_distance handling
    x86-64, NUMA: Fix distance table handling
    mm: Move early_node_map[] reverse scan helpers under HAVE_MEMBLOCK
    x86-64, NUMA: Fix size of numa_distance array
    x86: Rename e820_table_* to pgt_buf_*
    bootmem: Move __alloc_memory_core_early() to nobootmem.c
    bootmem: Move contig_page_data definition to bootmem.c/nobootmem.c
    bootmem: Separate out CONFIG_NO_BOOTMEM code into nobootmem.c
    x86-64, NUMA: Seperate out numa_alloc_distance() from numa_set_distance()
    x86-64, NUMA: Add proper function comments to global functions
    x86-64, NUMA: Move NUMA emulation into numa_emulation.c
    x86-64, NUMA: Prepare numa_emulation() for moving NUMA emulation into a separate file
    x86-64, NUMA: Do not scan two times for setup_node_bootmem()
    ...

    Fix up conflicts in arch/x86/kernel/smpboot.c

    Linus Torvalds
     
  • * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (116 commits)
    x86: Enable forced interrupt threading support
    x86: Mark low level interrupts IRQF_NO_THREAD
    x86: Use generic show_interrupts
    x86: ioapic: Avoid redundant lookup of irq_cfg
    x86: ioapic: Use new move_irq functions
    x86: Use the proper accessors in fixup_irqs()
    x86: ioapic: Use irq_data->state
    x86: ioapic: Simplify irq chip and handler setup
    x86: Cleanup the genirq name space
    genirq: Add chip flag to force mask on suspend
    genirq: Add desc->irq_data accessor
    genirq: Add comments to Kconfig switches
    genirq: Fixup fasteoi handler for oneshot mode
    genirq: Provide forced interrupt threading
    sched: Switch wait_task_inactive to schedule_hrtimeout()
    genirq: Add IRQF_NO_THREAD
    genirq: Allow shared oneshot interrupts
    genirq: Prepare the handling of shared oneshot interrupts
    genirq: Make warning in handle_percpu_event useful
    x86: ioapic: Move trigger defines to io_apic.h
    ...

    Fix up trivial(?) conflicts in arch/x86/pci/xen.c due to genirq name
    space changes clashing with the Xen cleanups. The set_irq_msi() had
    moved to xen_bind_pirq_msi_to_irq().

    Linus Torvalds
     
  • * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix and clean up generic_processor_info()
    x86: Don't copy per_cpu cpuinfo for BSP two times
    x86: Move llc_shared_map out of cpu_info

    Linus Torvalds
     

15 Mar, 2011

1 commit


23 Feb, 2011

1 commit

  • Currently arch_disable_smp_support() on x86 disables only the
    support for the IOAPIC and is also compiled in if SMP-support is
    not.

    Therefore this function is renamed to disable_ioapic_support(),
    which meets its purpose and is only compiled in the kernel
    when IOAPIC support is also.

    A new arch_disable_smp_support() is created in smpboot.c,
    which calls disable_ioapic_support() and gets only compiled
    in the kernel when SMP support is also.

    Signed-off-by: Henrik Kretzschmar
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Henrik Kretzschmar
     

18 Feb, 2011

1 commit

  • Common infrastructure for low memory trampolines. This code installs
    the trampolines permanently in low memory very early. It also permits
    multiple pieces of code to be used for this purpose.

    This code also introduces a standard infrastructure for computing
    symbol addresses in the trampoline code.

    The only change to the actual SMP trampolines themselves is that the
    64-bit trampoline has been made reusable -- the previous version would
    overwrite the code with a status variable; this moves the status
    variable to a separate location.

    Signed-off-by: H. Peter Anvin
    LKML-Reference:
    Cc: Rafael J. Wysocki
    Cc: Matthieu Castet
    Cc: Stephen Rothwell

    H. Peter Anvin
     

16 Feb, 2011

1 commit


14 Feb, 2011

2 commits


10 Feb, 2011

1 commit

  • Additionally doing things conditionally upon smp_processor_id()
    being zero is generally a bad idea, as this means CPU 0 cannot
    be offlined and brought back online later again.

    While there may be other places where this is done, I think adding
    more of those should be avoided so that some day SMP can really
    become "symmetrical".

    Signed-off-by: Jan Beulich
    Cc: Cyrill Gorcunov
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jan Beulich
     

05 Feb, 2011

1 commit

  • Since checkin ebba638ae723d8a8fc2f7abce5ec18b688b791d7 we call
    verify_cpu even in 32-bit mode. Unfortunately, calling a function
    means using the stack, and the stack pointer was not initialized in
    the 32-bit setup code! This code initializes the stack pointer, and
    simplifies the interface slightly since it is easier to rely on just a
    pointer value rather than a descriptor; we need to have different
    values for the segment register anyway.

    This retains start_stack as a virtual address, even though a physical
    address would be more convenient for 32 bits; the 64-bit code wants
    the other way around...

    Reported-by: Matthieu Castet
    LKML-Reference:
    Tested-by: Kees Cook
    Signed-off-by: H. Peter Anvin

    H. Peter Anvin
     

28 Jan, 2011

8 commits

  • x86_32 has been managing node_to_cpumask_map explicitly from
    map_cpu_to_node() and friends in a rather ugly way. With
    previous changes, it's now possible to share the code with
    64bit.

    * When CONFIG_NUMA_EMU is disabled, numa_add/remove_cpu() are
    implemented in numa.c and shared by 32 and 64bit. CONFIG_NUMA_EMU
    versions still live in numa_64.c.

    NUMA_EMU's dependency on 64bit is planned to be removed and the
    above should go away together.

    * identify_cpu() now calls numa_add_cpu() for 32bit too. This
    makes the explicit mask management from map_cpu_to_node() unnecessary.

    * The whole x86_32 specific map_cpu_to_node() chunk is no longer
    necessary. Dropped.

    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
    Cc: David Rientjes
    Cc: Shaohui Zheng

    Tejun Heo
     
  • Unlike 64bit, 32bit has been using its own cpu_to_node_map[] for
    CPU -> NUMA node mapping. Replace it with early_percpu variable
    x86_cpu_to_node_map and share the mapping code with 64bit.

    * USE_PERCPU_NUMA_NODE_ID is now enabled for 32bit too.

    * x86_cpu_to_node_map and numa_set/clear_node() are moved from
    numa_64 to numa. For now, on 32bit, x86_cpu_to_node_map is initialized
    with 0 instead of NUMA_NO_NODE. This is to avoid introducing unexpected
    behavior change and will be updated once init path is unified.

    * srat_detect_node() is now enabled for x86_32 too. It calls
    numa_set_node() and initializes the mapping making explicit
    cpu_to_node_map[] updates from map/unmap_cpu_to_node() unnecessary.

    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
    Cc: David Rientjes

    Tejun Heo
     
  • The mapping between cpu/apicid and node is done via
    apicid_to_node[] on 64bit and apicid_2_node[] +
    apic->x86_32_numa_cpu_node() on 32bit. This difference makes it
    difficult to further unify 32 and 64bit NUMA handling.

    This patch unifies it by replacing both apicid_to_node[] and
    apicid_2_node[] with __apicid_to_node[] array, which is accessed
    by two accessors - set_apicid_to_node() and numa_cpu_node(). On
    64bit, numa_cpu_node() always consults __apicid_to_node[]
    directly while 32bit goes through apic->numa_cpu_node() method
    to allow apic implementations to override it.

    srat_detect_node() for amd cpus contains workaround for broken
    NUMA configuration which assumes relationship between APIC ID,
    HT node ID and NUMA topology. Leave it to access
    __apicid_to_node[] directly as mapping through CPU might result
    in undesirable behavior change. The comment is reformatted and
    updated to note the ugliness.

    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
    Cc: David Rientjes

    Tejun Heo
     
  • 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
     
  • Currently, cpu -> logical apic id translation is done by
    apic->cpu_to_logical_apicid() callback which may or may not use
    x86_cpu_to_logical_apicid. This is unnecessary as it should
    always equal logical_smp_processor_id() which is known early
    during CPU bring up.

    Initialize x86_cpu_to_logical_apicid after apic->init_apic_ldr()
    in setup_local_APIC() and always use x86_cpu_to_logical_apicid
    for cpu -> logical apic id mapping.

    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
     
  • Unlike x86_64, on x86_32, the mapping from cpu to logical apicid
    may vary depending on apic in use. cpu_2_logical_apicid[] array
    is used for this mapping. Replace it with early percpu variable
    x86_cpu_to_logical_apicid to make it better aligned with other
    mappings.

    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
     
  • Commit 56d91f13 (x86, acpi: Add MAX_LOCAL_APIC for 32bit) added
    MAX_LOCAL_APIC for x86_32 but didn't replace MAX_APICID users
    with it. Convert MAX_APICID users to MAX_LOCAL_APIC and drop
    MAX_APICID.

    Signed-off-by: Tejun Heo
    Reviewed-by: Pekka Enberg
    Acked-by: Yinghai Lu
    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
     
  • Signed-off-by: Tejun Heo
    Reviewed-by: Pekka Enberg
    Acked-by: Yinghai Lu
    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
     

26 Jan, 2011

3 commits

  • smp_store_cpu_info(0) will do that.

    Signed-off-by: Yinghai Lu
    Cc: Suresh Siddha
    Cc: Tejun Heo
    Cc: Borislav Petkov
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • cpu_info is already with per_cpu, We can take llc_shared_map out
    of cpu_info, and declare it as per_cpu variable directly.

    So later referencing could be simple and directly instead of
    diving to find cpu_info at first.

    Also could make smp_store_cpu_info() much simple to avoid to do
    save and restore trick.

    Signed-off-by: Yinghai Lu
    Cc: Hans Rosenfeld
    Cc: Alok N Kataria
    Cc: Stephen Hemminger
    Cc: Hans J. Koch
    Cc: Tejun Heo
    Cc: Borislav Petkov
    Cc: Andreas Herrmann
    Cc: Robert Richter
    Cc: Suresh Siddha
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • On multi-node CPUs we don't need the socket wide compute unit ID
    but the node-wide compute unit ID. Thus we need to normalize the
    value. This is similar to what we do with cpu_core_id.

    A compute unit is then identified by physical_package_id,
    node_id, and compute_unit_id.

    Signed-off-by: Andreas Herrmann
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Andreas Herrmann
     

22 Jan, 2011

1 commit

  • ea53069231f9317062910d6e772cca4ce93de8c8 made a CPU use monitor/mwait
    when offline. This is not the optimal choice for AMD wrt to powersavings
    and we'd prefer our cores to halt (i.e. enter C1) instead. For this, the
    same selection whether to use monitor/mwait has to be used as when we
    select the idle routine for the machine.

    With this patch, offlining cores 1-5 on a X6 machine allows core0 to
    boost again.

    [ hpa: putting this in urgent since it is a (power) regression fix ]

    Reported-by: Andreas Herrmann
    Cc: stable@kernel.org # 37.x
    Cc: H. Peter Anvin
    Cc: Arjan van de Ven
    Cc: Len Brown
    Cc: Venkatesh Pallipadi
    Cc: Peter Zijlstra
    Signed-off-by: Borislav Petkov
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Borislav Petkov
     

12 Jan, 2011

1 commit

  • …/git/tip/linux-2.6-tip

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix Moorestown VRTC fixmap placement
    x86/gpio: Implement x86 gpio_to_irq convert function
    x86, UV: Fix APICID shift for Westmere processors
    x86: Use PCI method for enabling AMD extended config space before MSR method
    x86: tsc: Prevent delayed init if initial tsc calibration failed
    x86, lapic-timer: Increase the max_delta to 31 bits
    x86: Fix sparse non-ANSI function warnings in smpboot.c
    x86, numa: Fix CONFIG_DEBUG_PER_CPU_MAPS without NUMA emulation
    x86, AMD, PCI: Add AMD northbridge PCI device id for CPU families 12h and 14h
    x86, numa: Fix cpu to node mapping for sparse node ids
    x86, numa: Fake node-to-cpumask for NUMA emulation
    x86, numa: Fake apicid and pxm mappings for NUMA emulation
    x86, numa: Avoid compiling NUMA emulation functions without CONFIG_NUMA_EMU
    x86, numa: Reduce minimum fake node size to 32M

    Fix up trivial conflict in arch/x86/kernel/apic/x2apic_uv_x.c

    Linus Torvalds
     

09 Jan, 2011

1 commit

  • Fix sparse warning for non-ANSI function declaration:

    arch/x86/kernel/smpboot.c:100:30: warning: non-ANSI function declaration of function 'cpu_hotplug_driver_lock'
    arch/x86/kernel/smpboot.c:105:32: warning: non-ANSI function declaration of function 'cpu_hotplug_driver_unlock'

    Signed-off-by: Randy Dunlap
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Randy Dunlap
     

08 Jan, 2011

1 commit

  • * 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)
    gameport: use this_cpu_read instead of lookup
    x86: udelay: Use this_cpu_read to avoid address calculation
    x86: Use this_cpu_inc_return for nmi counter
    x86: Replace uses of current_cpu_data with this_cpu ops
    x86: Use this_cpu_ops to optimize code
    vmstat: User per cpu atomics to avoid interrupt disable / enable
    irq_work: Use per cpu atomics instead of regular atomics
    cpuops: Use cmpxchg for xchg to avoid lock semantics
    x86: this_cpu_cmpxchg and this_cpu_xchg operations
    percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support
    percpu,x86: relocate this_cpu_add_return() and friends
    connector: Use this_cpu operations
    xen: Use this_cpu_inc_return
    taskstats: Use this_cpu_ops
    random: Use this_cpu_inc_return
    fs: Use this_cpu_inc_return in buffer.c
    highmem: Use this_cpu_xx_return() operations
    vmstat: Use this_cpu_inc_return for vm statistics
    x86: Support for this_cpu_add, sub, dec, inc_return
    percpu: Generic support for this_cpu_add, sub, dec, inc_return
    ...

    Fixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}
    as per Tejun.

    Linus Torvalds
     

07 Jan, 2011

1 commit

  • …-linus', 'x86-paravirt-for-linus', 'core-locking-for-linus' and 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'x86-alternatives-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, suspend: Avoid unnecessary smp alternatives switch during suspend/resume

    * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-64, asm: Use fxsaveq/fxrestorq in more places

    * 'x86-hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, hwmon: Add core threshold notification to therm_throt.c

    * 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, paravirt: Use native_halt on a halt, not native_safe_halt

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    locking, lockdep: Convert sprintf_symbol to %pS

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    irq: Better struct irqaction layout

    Linus Torvalds