08 Jan, 2012

1 commit

  • SGI UV systems print a message during boot:

    UV: Found blades

    Due to packaging changes, the blade count is not accurate for
    on the next generation of the platform. This patch corrects the
    count.

    Signed-off-by: Jack Steiner
    Cc:
    Link: http://lkml.kernel.org/r/20120106191900.GA19772@sgi.com
    Signed-off-by: Ingo Molnar

    Jack Steiner
     

07 Jan, 2012

1 commit

  • * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86: Skip cpus with apic-ids >= 255 in !x2apic_mode
    x86, x2apic: Allow "nox2apic" to disable x2apic mode setup by BIOS
    x86, x2apic: Fallback to xapic when BIOS doesn't setup interrupt-remapping
    x86, acpi: Skip acpi x2apic entries if the x2apic feature is not present
    x86, apic: Add probe() for apic_flat
    x86: Simplify code by removing a !SMP #ifdefs from 'struct cpuinfo_x86'
    x86: Convert per-cpu counter icr_read_retry_count into a member of irq_stat
    x86: Add per-cpu stat counter for APIC ICR read tries
    pci, x86/io-apic: Allow PCI_IOAPIC to be user configurable on x86
    x86: Fix the !CONFIG_NUMA build of the new CPU ID fixup code support
    x86: Add NumaChip support
    x86: Add x86_init platform override to fix up NUMA core numbering
    x86: Make flat_init_apic_ldr() available

    Linus Torvalds
     

24 Dec, 2011

3 commits

  • Currently "nox2apic" boot parameter was not enabling x2apic mode if the cpu,
    kernel are all capable of enabling x2apic mode and the OS handover
    happened in xapic mode.

    However If the bios enabled x2apic prior to OS handover, using "nox2apic"
    boot parameter had no effect.

    If the boot cpu's apicid is < 255, enable "nox2apic" boot parameter to
    disable the x2apic mode setup by the bios. This will enable the kernel to
    fallback to xapic mode and bringup only the cpu's which has apic-id < 255.

    -v2: fix patch error and two compiling warning
    make disable_x2apic to be __init

    Signed-off-by: Yinghai Lu
    Signed-off-by: Suresh Siddha
    Link: http://lkml.kernel.org/r/CAE9FiQUeB-3uxJAMiHsz=uPWoFv5Hg1pVepz7aU6YtqOxMC-=Q@mail.gmail.com
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • On some of the recent Intel SNB platforms, by default bios is pre-enabling
    x2apic mode in the cpu with out setting up interrupt-remapping.
    This case was resulting in the kernel to panic as the cpu is already in
    x2apic mode but the OS was not able to enable interrupt-remapping (which
    is a pre-req for using x2apic capability).

    On these platforms all the apic-ids are < 255 and the kernel can fallback to
    xapic mode if the bios has not enabled interrupt-remapping (which is
    mostly the case if the bios has not exported interrupt-remapping tables to the
    OS).

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

    Yinghai Lu
     
  • 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
     

18 Dec, 2011

1 commit


14 Dec, 2011

1 commit

  • In the IPI delivery slow path (NMI delivery) we retry the ICR
    read to check for delivery completion a limited number of times.

    [ The reason for the limited retries is that some of the places
    where it is used (cpu boot, kdump, etc) IPI delivery might not
    succeed (due to a firmware bug or system crash, for example)
    and in such a case it is better to give up and resume
    execution of other code. ]

    This patch adds a new entry to /proc/interrupts, RTR, which
    tells user space the number of times we retried the ICR read in
    the IPI delivery slow path.

    This should give some insight into how well the APIC
    message delivery hardware is working - if the counts are way
    too large then we are hitting a (very-) slow path way too
    often.

    Signed-off-by: Fernando Luis Vazquez Cao
    Cc: Jörn Engel
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/n/tip-vzsp20lo2xdzh5f70g0eis2s@git.kernel.org
    [ extended the changelog ]
    Signed-off-by: Ingo Molnar

    Fernando Luis Vázquez Cao
     

12 Dec, 2011

1 commit

  • Interrupts notify the idle exit state before calling irq_enter().
    But the notifier code calls rcu_read_lock() and this is not
    allowed while rcu is in an extended quiescent state. We need
    to wait for irq_enter() -> rcu_idle_exit() to be called before
    doing so otherwise this results in a grumpy RCU:

    [ 0.099991] WARNING: at include/linux/rcupdate.h:194 __atomic_notifier_call_chain+0xd2/0x110()
    [ 0.099991] Hardware name: AMD690VM-FMH
    [ 0.099991] Modules linked in:
    [ 0.099991] Pid: 0, comm: swapper Not tainted 3.0.0-rc6+ #255
    [ 0.099991] Call Trace:
    [ 0.099991] [] warn_slowpath_common+0x7a/0xb0
    [ 0.099991] [] warn_slowpath_null+0x15/0x20
    [ 0.099991] [] __atomic_notifier_call_chain+0xd2/0x110
    [ 0.099991] [] atomic_notifier_call_chain+0x11/0x20
    [ 0.099991] [] exit_idle+0x43/0x50
    [ 0.099991] [] smp_apic_timer_interrupt+0x39/0xa0
    [ 0.099991] [] apic_timer_interrupt+0x13/0x20
    [ 0.099991] [] ? default_idle+0xa7/0x350
    [ 0.099991] [] ? default_idle+0xa5/0x350
    [ 0.099991] [] amd_e400_idle+0x8b/0x110
    [ 0.099991] [] ? rcu_enter_nohz+0x8f/0x160
    [ 0.099991] [] cpu_idle+0xb0/0x110
    [ 0.099991] [] rest_init+0xe5/0x140
    [ 0.099991] [] ? rest_init+0x48/0x140
    [ 0.099991] [] start_kernel+0x3d1/0x3dc
    [ 0.099991] [] x86_64_start_reservations+0x131/0x135
    [ 0.099991] [] x86_64_start_kernel+0xed/0xf4

    Signed-off-by: Frederic Weisbecker
    Cc: Paul E. McKenney
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: H. Peter Anvin
    Cc: Andy Henroid
    Signed-off-by: Paul E. McKenney
    Reviewed-by: Josh Triplett

    Frederic Weisbecker
     

06 Dec, 2011

2 commits

  • Adds support for Numascale NumaChip large-SMP systems. It is
    needed to enable the booting of more than ~168 cores.

    v2:
    - [Steffen] enumerate only accessible northbridges
    - [Daniel] rediffed and validated against 3.1-rc10

    v3:
    - [Daniel] use x86_init core numbering override
    - [Daniel] cleanups as per feedback

    v4:
    - [Daniel] use updated x86_cpuinit override

    v5:
    - drop disabling interrupts locally, as ISR write is atomic; drop delay
    - added read-mostly annotations where appropriate
    - require CONFIG_SMP, so drop conditional path

    Workload tested on 96 cores/16 sockets.

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

    Steffen Persvold
     
  • 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
     

05 Dec, 2011

1 commit

  • There was a mixup when the SGI UV2 hub chip was sent to be
    fabricated, and it ended up with the wrong part number in the
    HRP_NODE_ID mmr. Future versions of the chip will (may) have the
    correct part number. Change the UV infrastructure to recognize
    both part numbers as valid IDs of a UV2 hub chip.

    Signed-off-by: Jack Steiner
    Link: http://lkml.kernel.org/r/20111129210058.GA20452@sgi.com
    Signed-off-by: Ingo Molnar

    Jack Steiner
     

11 Nov, 2011

1 commit

  • with "apic=verbose" the print_IO_APIC() function tries to print
    IRQ to pin mappings for every active irq. It assumes chip_data
    is of type irq_cfg and may cause an oops if not.

    As the print_IO_APIC() is called from a late_initcall other
    chained irq chips may already be registered with custom
    chip_data information, causing an oops. This is the case with
    intel MID SoC devices with gpio demuxers registered as irq_chips.

    Signed-off-by: Mathias Nyman
    Signed-off-by: Alan Cox
    [ -v2: fixed build failure ]
    Signed-off-by: Ingo Molnar

    Mathias Nyman
     

10 Nov, 2011

2 commits

  • lapic timer calibration can be combined with tsc in platform
    specific calibration functions. if such calibration result is
    obtained early, we can skip the redundant calibration loops.

    Signed-off-by: Jacob Pan
    Signed-off-by: Jacob Pan
    Signed-off-by: Alan Cox
    Signed-off-by: Dirk Brandewie
    Signed-off-by: Ingo Molnar

    Jacob Pan
     
  • nr_legacy_irqs is set in probe_nr_irqs_gsi, we should not clear
    it after that. Otherwise, the result is that MSI irqs will be
    allocated from the wrong range for the systems without legacy
    PIC.

    Signed-off-by: Jacob Pan
    Signed-off-by: Dirk Brandewie
    Signed-off-by: Ingo Molnar

    Jacob Pan
     

28 Oct, 2011

1 commit


26 Oct, 2011

2 commits

  • * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/irq: Standardize on CONFIG_SPARSE_IRQ=y
    x86, ioapic: Clean up ioapic/apic_id usage
    x86, ioapic: Factor out print_IO_APIC() to only print one io apic
    x86, ioapic: Print out irte with right ioapic index
    x86, ioapic: Split up setup_ioapic_entry()
    x86, ioapic: Pass struct irq_attr * to setup_ioapic_irq()
    apic, i386/bigsmp: Fix false warnings regarding logical APIC ID mismatches

    Linus Torvalds
     
  • * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (121 commits)
    perf symbols: Increase symbol KSYM_NAME_LEN size
    perf hists browser: Refuse 'a' hotkey on non symbolic views
    perf ui browser: Use libslang to read keys
    perf tools: Fix tracing info recording
    perf hists browser: Elide DSO column when it is set to just one DSO, ditto for threads
    perf hists: Don't consider filtered entries when calculating column widths
    perf hists: Don't decay total_period for filtered entries
    perf hists browser: Honour symbol_conf.show_{nr_samples,total_period}
    perf hists browser: Do not exit on tab key with single event
    perf annotate browser: Don't change selection line when returning from callq
    perf tools: handle endianness of feature bitmap
    perf tools: Add prelink suggestion to dso update message
    perf script: Fix unknown feature comment
    perf hists browser: Apply the dso and thread filters when merging new batches
    perf hists: Move the dso and thread filters from hist_browser
    perf ui browser: Honour the xterm colors
    perf top tui: Give color hints just on the percentage, like on --stdio
    perf ui browser: Make the colors configurable and change the defaults
    perf tui: Remove unneeded call to newtCls on startup
    perf hists: Don't format the percentage on hist_entry__snprintf
    ...

    Fix up conflicts in arch/x86/kernel/kprobes.c manually.

    Ingo's tree did the insane "add volatile to const array", which just
    doesn't make sense ("volatile const"?). But we could remove the const
    *and* make the array volatile to make doubly sure that gcc doesn't
    optimize it away..

    Also fix up kernel/trace/ring_buffer.c non-data-conflicts manually: the
    reader_lock has been turned into a raw lock by the core locking merge,
    and there was a new user of it introduced in this perf core merge. Make
    sure that new use also uses the raw accessor functions.

    Linus Torvalds
     

13 Oct, 2011

1 commit

  • Sparseirq got introduced in v2.6.28 and Thomas did a huge cleanup
    around v2.6.38 that eliminated basically all disadvantages
    of it.

    So we can remove non-sparseirq support now and simplify
    our IRQ degrees of freedom a bit.

    Suggested-and-acked-by: Thomas Gleixner
    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/4E95E21D.6090200@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     

12 Oct, 2011

5 commits

  • While looking at the code, apic_id sometime is referred to index
    of ioapic, but sometime is used for phys apic id. and some even
    use apic for real apic id. It is very confusing.

    So try to limit apic_id or ioapic_id to be real apic id for
    ioapic, and use ioapic_idx for ioapic index in the array.

    -v2: Suggested by Ingo, use ioapic_idx consistently, instead of ioapic

    Signed-off-by: Yinghai Lu
    Cc: Naga Chumbalkar
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/r/4E9542DC.3090509@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • It is getting too big after the interrupt remaping entries debug
    print out was added.

    Original print_IO_APIC() becomes print_IO_APICs().
    New print_IO_APIC() will only print one ioapic's registers

    As a side-effect this clean-up also made checkpatch.pl happier.

    Signed-off-by: Yinghai Lu
    Cc: Naga Chumbalkar
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/r/4E9542D3.5000008@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • While checking irte dump in dmesg, the print out is confusing
    ioapic index with real io apic id:

    IOAPIC[0]: Set routing entry (1-1 -> 0x31 -> IRQ 1 Mode:0
    Active:0 Dest:1) IOAPIC[1]: Set IRTE entry (P:1 FPD:0 Dst_Mode:1
    Redir_hint:1 Trig_Mode:0 Dlvry_Mode:1 Avail:0 Vector:31
    Dest:00000001 SID:00FF SQ:0 SVT:1) IOAPIC[0]: Set routing entry
    (1-2 -> 0x30 -> IRQ 0 Mode:0 Active:0 Dest:1) IOAPIC[1]: Set IRTE entry (P:1 FPD:0 Dst_Mode:1 Redir_hint:1 Trig_Mode:0 Dlvry_Mode:1 Avail:0 Vector:30 Dest:00000001 SID:00FF SQ:0 SVT:1)

    The system's first ioapic id is 1.

    This commit:

    | commit 3040db92ee1b6c5b6b6d73f8cdcad54c0da11563
    | Author: Naga Chumbalkar
    | Date: Tue Jul 12 21:17:41 2011 +0000
    |
    | x86, ioapic: Print IRTE when IR is enabled

    Confused apic_id with the ioapic ID - fix it.

    Signed-off-by: Yinghai Lu
    Cc: Naga Chumbalkar
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/r/4E9542C8.8040209@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • Ingo pointed out that setup_ioapic_entry() is way too big now.

    Split the intr-remap code out into setup_ir_ioapic_entry().

    Also pass struct io_apic_irq_attr * instead of 5 parameters
    in those two functions.

    At last in setup_ir_ioapic_entry() we don't need to panic.

    Signed-off-by: Yinghai Lu
    Cc: Naga Chumbalkar
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/r/4E9542BB.4070807@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • Do not expand that struct, and just pass pointer to reduce the
    number of parameters in related functions.

    Signed-off-by: Yinghai Lu
    Cc: Naga Chumbalkar
    Cc: Suresh Siddha
    Link: http://lkml.kernel.org/r/4E9542B1.7050800@oracle.com
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     

10 Oct, 2011

1 commit

  • Just convert all the files that have an nmi handler to the new routines.
    Most of it is straight forward conversion. A couple of places needed some
    tweaking like kgdb which separates the debug notifier from the nmi handler
    and mce removes a call to notify_die.

    [Thanks to Ying for finding out the history behind that mce call

    https://lkml.org/lkml/2010/5/27/114

    And Boris responding that he would like to remove that call because of it

    https://lkml.org/lkml/2011/9/21/163]

    The things that get converted are the registeration/unregistration routines
    and the nmi handler itself has its args changed along with code removal
    to check which list it is on (most are on one NMI list except for kgdb
    which has both an NMI routine and an NMI Unknown routine).

    Signed-off-by: Don Zickus
    Signed-off-by: Peter Zijlstra
    Acked-by: Corey Minyard
    Cc: Jason Wessel
    Cc: Andi Kleen
    Cc: Robert Richter
    Cc: Huang Ying
    Cc: Corey Minyard
    Cc: Jack Steiner
    Link: http://lkml.kernel.org/r/1317409584-23662-4-git-send-email-dzickus@redhat.com
    Signed-off-by: Ingo Molnar

    Don Zickus
     

29 Sep, 2011

1 commit

  • These warnings (generally one per CPU) are a result of
    initializing x86_cpu_to_logical_apicid while apic_default is
    still in use, but the check in setup_local_APIC() being done
    when apic_bigsmp was already used as an override in
    default_setup_apic_routing():

    Overriding APIC driver with bigsmp
    Enabling APIC mode: Physflat. Using 5 I/O APICs
    ------------[ cut here ]------------
    WARNING: at .../arch/x86/kernel/apic/apic.c:1239
    ...
    CPU 1 irqstacks, hard=f1c9a000 soft=f1c9c000
    Booting Node 0, Processors #1
    smpboot cpu 1: start_ip = 9e000
    Initializing CPU#1
    ------------[ cut here ]------------
    WARNING: at .../arch/x86/kernel/apic/apic.c:1239
    setup_local_APIC+0x137/0x46b() Hardware name: ...
    CPU1 logical APIC ID: 2 != 8
    ...

    Fix this (for the time being, i.e. until
    x86_32_early_logical_apicid() will get removed again, as Tejun
    says ought to be possible) by overriding the previously stored
    values at the point where the APIC driver gets overridden.

    v2: Move this and the pre-existing override logic into
    arch/x86/kernel/apic/bigsmp_32.c.

    Signed-off-by: Jan Beulich
    Acked-by: Tejun Heo
    Cc: (2.6.39 and onwards)
    Link: http://lkml.kernel.org/r/4E835D16020000780005844C@nat28.tlf.novell.com
    Signed-off-by: Ingo Molnar

    Jan Beulich
     

21 Sep, 2011

8 commits

  • This is a workaround for a UV2 hub bug that affects the format of system
    global addresses.

    The GRU API for UV2 was inadvertently broken by a hardware change. The
    format of the physical address used for TLB dropins and for addresses used
    with instructions running in unmapped mode has changed. This change was
    not documented and became apparent only when diags failed running on
    system simulators.

    For UV1, TLB and GRU instruction physical addresses are identical to
    socket physical addresses (although high NASID bits must be OR'ed into the
    address).

    For UV2, socket physical addresses need to be converted. The NODE portion
    of the physical address needs to be shifted so that the low bit is in bit
    39 or bit 40, depending on an MMR value.

    It is not yet clear if this bug will be fixed in a silicon respin. If it
    is fixed, the hub revision will be incremented & the workaround disabled.

    Signed-off-by: Jack Steiner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Thomas Gleixner

    Jack Steiner
     
  • Consolidate the io-apic EOI code in clear_IO_APIC_pin() and
    eoi_ioapic_irq().

    Signed-off-by: Suresh Siddha
    Cc: Thomas Renninger
    Cc: Rafael Wysocki
    Cc: Maciej W. Rozycki
    Cc: lchiquitto@novell.com
    Cc: jbeulich@novell.com
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110825190657.259696697@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • For older IO-APIC's, we were clearing the remote-IRR by changing
    the RTE trigger mode to edge and then back to level. We wanted
    to mask the RTE during this process, so we were essentially
    doing mask+edge and then to unmask+level.

    As part of the commit ca64c47cecd0321b2e0dcbd7aaff44b68ce20654,
    we moved this EOI process earlier where the IO-APIC RTE is
    masked. So we were wrongly unmasking it in the eoi_ioapic_irq().

    So change the remote-IRR clear sequence in eoi_ioapic_irq() to
    mask + edge and then restore the previous RTE entry which will
    restore the mask status as well as the level trigger.

    Signed-off-by: Suresh Siddha
    Cc: Maciej W. Rozycki
    Cc: Thomas Renninger
    Cc: Rafael Wysocki
    Cc: lchiquitto@novell.com
    Cc: jbeulich@novell.com
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110825190657.210286410@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • In the kdump scenario mentioned below, we can have a case where
    the device using level triggered interrupt will not generate any
    interrupts in the kdump kernel.

    1. IO-APIC sends a level triggered interrupt to the CPU's local APIC.

    2. Kernel crashed before the CPU services this interrupt, leaving
    the remote-IRR in the IO-APIC set.

    3. kdump kernel boot sequence does clear_IO_APIC() as part of IO-APIC
    initialization. But this fails to reset remote-IRR bit of the
    IO-APIC RTE as the remote-IRR bit is read-only.

    4. Device using that level triggered entry can't generate any
    more interrupts because of the remote-IRR bit.

    In clear_IO_APIC_pin(), check if the remote-IRR bit is set and if
    so do an explicit attempt to clear it (by doing EOI write on
    modern io-apic's and changing trigger mode to edge/level on
    older io-apic's). Also before doing the explicit EOI to the
    io-apic, ensure that the trigger mode is indeed set to level.
    This will enable the explicit EOI to the io-apic to reset the
    remote-IRR bit.

    Tested-by: Leonardo Chiquitto
    Signed-off-by: Suresh Siddha
    Fixes: https://bugzilla.novell.com/show_bug.cgi?id=701686
    Cc: Rafael Wysocki
    Cc: Maciej W. Rozycki
    Cc: Thomas Renninger
    Cc: jbeulich@novell.com
    Cc: yinghai@kernel.org
    Link: http://lkml.kernel.org/r/20110825190657.157502602@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • Change the CONFIG_DMAR to CONFIG_INTEL_IOMMU to be consistent
    with the other IOMMU options.

    Rename the CONFIG_INTR_REMAP to CONFIG_IRQ_REMAP to match the
    irq subsystem name.

    And define the CONFIG_DMAR_TABLE for the common ACPI DMAR
    routines shared by both CONFIG_INTEL_IOMMU and CONFIG_IRQ_REMAP.

    Signed-off-by: Suresh Siddha
    Cc: yinghai@kernel.org
    Cc: youquan.song@intel.com
    Cc: joerg.roedel@amd.com
    Cc: tony.luck@intel.com
    Cc: dwmw2@infradead.org
    Link: http://lkml.kernel.org/r/20110824001456.558630224@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • Define irq_remap_modify_chip_defaults() and remove the duplicate
    code, cleanup the unnecessary ifdefs.

    Signed-off-by: Suresh Siddha
    Cc: yinghai@kernel.org
    Cc: youquan.song@intel.com
    Cc: joerg.roedel@amd.com
    Cc: tony.luck@intel.com
    Cc: dwmw2@infradead.org
    Link: http://lkml.kernel.org/r/20110824001456.499225692@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • IRQ set affinity routine is same for the IO-APIC IRQ's aswell as
    the MSI IRQ's in the presence of interrupt-remapping. This is
    because we modify the interrupt-remapping table entry and
    doesn't touch the IO-APIC RTE or the MSI entry.

    So remove the ir_msi_set_affinity() and re-use the
    ir_ioapic_set_affinity()

    Signed-off-by: Suresh Siddha
    Cc: yinghai@kernel.org
    Cc: youquan.song@intel.com
    Cc: joerg.roedel@amd.com
    Cc: tony.luck@intel.com
    Cc: dwmw2@infradead.org
    Link: http://lkml.kernel.org/r/20110824001456.452760446@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     
  • On the platforms which are x2apic and interrupt-remapping
    capable, Linux kernel is enabling x2apic even if the BIOS
    doesn't. This is to take advantage of the features that x2apic
    brings in.

    Some of the OEM platforms are running into issues because of
    this, as their bios is not x2apic aware. For example, this was
    resulting in interrupt migration issues on one of the platforms.
    Also if the BIOS SMI handling uses APIC interface to send SMI's,
    then the BIOS need to be aware of x2apic mode that OS has
    enabled.

    On some of these platforms, BIOS doesn't have a HW mechanism to
    turnoff the x2apic feature to prevent OS from enabling it.

    To resolve this mess, recent changes to the VT-d2 specification:

    http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf

    includes a mechanism that provides BIOS a way to request system
    software to opt out of enabling x2apic mode.

    Look at the x2apic optout flag in the DMAR tables before
    enabling the x2apic mode in the platform. Also print a warning
    that we have disabled x2apic based on the BIOS request.

    Kernel boot parameter "intremap=no_x2apic_optout" can be used to
    override the BIOS x2apic optout request.

    Signed-off-by: Youquan Song
    Signed-off-by: Suresh Siddha
    Cc: yinghai@kernel.org
    Cc: joerg.roedel@amd.com
    Cc: tony.luck@intel.com
    Cc: dwmw2@infradead.org
    Link: http://lkml.kernel.org/r/20110824001456.171766616@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

06 Aug, 2011

1 commit

  • Delete the 10 msec delay between the INIT and SIPI when starting
    slave cpus. I can find no requirement for this delay. BIOS also
    has similar code sequences without the delay.

    Removing the delay reduces boot time by 40 sec. Every bit helps.

    Signed-off-by: Jack Steiner
    Cc:
    Link: http://lkml.kernel.org/r/20110805140900.GA6774@sgi.com
    Signed-off-by: Ingo Molnar

    Jack Steiner
     

27 Jul, 2011

1 commit

  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     

24 Jul, 2011

1 commit

  • …-linus', 'x86-platform-for-linus', 'x86-quirks-for-linus', 'x86-tsc-for-linus' and 'x86-smpboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'x86-detect-hyper-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, hyper: Change hypervisor detection order

    * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-32, fpu: Fix DNA exception during check_fpu()

    * 'x86-kexec-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    kexec, x86: Fix incorrect jump back address if not preserving context

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, config: Introduce an INTEL_MID configuration

    * 'x86-quirks-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, quirks: Use pci_dev->revision

    * 'x86-tsc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: tsc: Remove unneeded DMI-based blacklisting

    * 'x86-smpboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, boot: Wait for boot cpu to show up if nr_cpus limit is about to hit

    Linus Torvalds
     

23 Jul, 2011

2 commits

  • * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, ioapic: Print IR_IO_APIC_route_entry when IR is enabled
    x86, ioapic: Print IRTE when IR is enabled
    x86, x2apic: Preserve high 32-bits of IA32_APIC_BASE MSR
    x86, ioapic: Also print Dest field
    x86, ioapic: Format clean up for IOAPIC output
    x86: print APIC data a little later during boot

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

    * 'timers-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    mips: Fix i8253 clockevent fallout
    i8253: Cleanup outb/inb magic
    arm: Footbridge: Use common i8253 clockevent
    mips: Use common i8253 clockevent
    x86: Use common i8253 clockevent
    i8253: Create common clockevent implementation
    i8253: Export i8253_lock unconditionally
    pcpskr: MIPS: Make config dependencies finer grained
    pcspkr: Cleanup Kconfig dependencies
    i8253: Move remaining content and delete asm/i8253.h
    i8253: Consolidate definitions of PIT_LATCH
    x86: i8253: Consolidate definitions of global_clock_event
    i8253: Alpha, PowerPC: Remove unused asm/8253pit.h
    alpha: i8253: Cleanup remaining users of i8253pit.h
    i8253: Remove I8253_LOCK config
    i8253: Make pcsp sound driver use the shared i8253_lock
    i8253: Make pcspkr input driver use the shared i8253_lock
    i8253: Consolidate all kernel definitions of i8253_lock
    i8253: Unify all kernel declarations of i8253_lock
    i8253: Create linux/i8253.h and use it in all 8253 related files

    Linus Torvalds
     

13 Jul, 2011

2 commits

  • When IR (interrupt remapping) is enabled print_IO_APIC() displays output according
    to legacy RTE (redirection table entry) definitons:

    NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect:
    00 00 1 0 0 0 0 0 0 00
    01 00 0 0 0 0 0 0 0 01
    02 00 0 0 0 0 0 0 0 02
    03 00 1 0 0 0 0 0 0 03
    04 00 1 0 0 0 0 0 0 04
    05 00 1 0 0 0 0 0 0 05
    06 00 1 0 0 0 0 0 0 06
    ...

    The above output is as per Sec 3.2.4 of the IOAPIC datasheet:
    82093AA I/O Advanced Programmable Interrupt Controller (IOAPIC):
    http://download.intel.com/design/chipsets/datashts/29056601.pdf

    Instead the output should display the fields as discussed in Sec 5.5.1
    of the VT-d specification:

    (Intel Virtualization Technology for Directed I/O:
    http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf)

    After the fix:
    NR Indx Fmt Mask Trig IRR Pol Stat Indx2 Zero Vect:
    00 0000 0 1 0 0 0 0 0 0 00
    01 000F 1 0 0 0 0 0 0 0 01
    02 0001 1 0 0 0 0 0 0 0 02
    03 0002 1 1 0 0 0 0 0 0 03
    04 0011 1 1 0 0 0 0 0 0 04
    05 0004 1 1 0 0 0 0 0 0 05
    06 0005 1 1 0 0 0 0 0 0 06
    ...

    Signed-off-by: Naga Chumbalkar
    Link: http://lkml.kernel.org/r/20110712211658.2939.93123.sendpatchset@nchumbalkar.americas.cpqcorp.net
    Signed-off-by: H. Peter Anvin

    Naga Chumbalkar
     
  • When "apic=debug" is used as a boot parameter, Linux prints the IOAPIC routing
    entries in "dmesg". Below is output from IOAPIC whose apic_id is 8:

    # dmesg | grep "routing entry"
    IOAPIC[8]: Set routing entry (8-1 -> 0x31 -> IRQ 1 Mode:0 Active:0 Dest:0)
    IOAPIC[8]: Set routing entry (8-2 -> 0x30 -> IRQ 0 Mode:0 Active:0 Dest:0)
    IOAPIC[8]: Set routing entry (8-3 -> 0x33 -> IRQ 3 Mode:0 Active:0 Dest:0)
    ...

    Similarly, when IR (interrupt remapping) is enabled, and the IRTE
    (interrupt remapping table entry) is set up we should display it.

    After the fix:

    # dmesg | grep IRTE
    IOAPIC[8]: Set IRTE entry (P:1 FPD:0 Dst_Mode:0 Redir_hint:1 Trig_Mode:0 Dlvry_Mode:0 Avail:0 Vector:31 Dest:00000000 SID:00F1 SQ:0 SVT:1)
    IOAPIC[8]: Set IRTE entry (P:1 FPD:0 Dst_Mode:0 Redir_hint:1 Trig_Mode:0 Dlvry_Mode:0 Avail:0 Vector:30 Dest:00000000 SID:00F1 SQ:0 SVT:1)
    IOAPIC[8]: Set IRTE entry (P:1 FPD:0 Dst_Mode:0 Redir_hint:1 Trig_Mode:0 Dlvry_Mode:0 Avail:0 Vector:33 Dest:00000000 SID:00F1 SQ:0 SVT:1)
    ...

    The IRTE is defined in Sec 9.5 of the Intel VT-d Specification.

    Signed-off-by: Naga Chumbalkar
    Link: http://lkml.kernel.org/r/20110712211704.2939.71291.sendpatchset@nchumbalkar.americas.cpqcorp.net
    Signed-off-by: H. Peter Anvin

    Naga Chumbalkar