19 Oct, 2010

2 commits

  • In order to separate the stop/migrate work thread from the SCHED_FIFO
    implementation, create a special class for it that is of higher priority than
    SCHED_FIFO itself.

    This currently solves a problem where cpu-hotplug consumes so much cpu-time
    that the SCHED_FIFO class gets throttled, but has the bandwidth replenishment
    timer pending on the now dead cpu.

    It is also required for when we add the planned deadline scheduling class above
    SCHED_FIFO, as the stop/migrate thread still needs to transcent those tasks.

    Tested-by: Heiko Carstens
    Signed-off-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Labels should be on column 0.

    Signed-off-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

14 Oct, 2010

11 commits


13 Oct, 2010

5 commits

  • ... but produce a big warning about the problem as encouragement
    for people to fix their drivers.

    Signed-off-by: Russell King

    Russell King
     
  • Russell King
     
  • When channel_disable() is called, it disables per channel interrupts and
    waits until channels state becomes STATE_STALL, and then disables the
    channel. Now, if the DMA transfer is disabled while the channel is in
    STATE_NEXT we will not wait anything and disable the channel immediately.
    This seems to cause weird data corruption for example in audio transfers.

    Fix is to wait while we are in STATE_NEXT or STATE_ON and only then
    disable the channel.

    Signed-off-by: Mika Westerberg
    Acked-by: Ryan Mallon
    Signed-off-by: Russell King

    Mika Westerberg
     
  • * 'kvm-updates/2.6.36' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: x86: Move TSC reset out of vmcb_init
    KVM: x86: Fix SVM VMCB reset

    Linus Torvalds
     
  • Time stamps for the ring buffer are created by the difference between
    two events. Each page of the ring buffer holds a full 64 bit timestamp.
    Each event has a 27 bit delta stamp from the last event. The unit of time
    is nanoseconds, so 27 bits can hold ~134 milliseconds. If two events
    happen more than 134 milliseconds apart, a time extend is inserted
    to add more bits for the delta. The time extend has 59 bits, which
    is good for ~18 years.

    Currently the time extend is committed separately from the event.
    If an event is discarded before it is committed, due to filtering,
    the time extend still exists. If all events are being filtered, then
    after ~134 milliseconds a new time extend will be added to the buffer.

    This can only happen till the end of the page. Since each page holds
    a full timestamp, there is no reason to add a time extend to the
    beginning of a page. Time extends can only fill a page that has actual
    data at the beginning, so there is no fear that time extends will fill
    more than a page without any data.

    When reading an event, a loop is made to skip over time extends
    since they are only used to maintain the time stamp and are never
    given to the caller. As a paranoid check to prevent the loop running
    forever, with the knowledge that time extends may only fill a page,
    a check is made that tests the iteration of the loop, and if the
    iteration is more than the number of time extends that can fit in a page
    a warning is printed and the ring buffer is disabled (all of ftrace
    is also disabled with it).

    There is another event type that is called a TIMESTAMP which can
    hold 64 bits of data in the theoretical case that two events happen
    18 years apart. This code has not been implemented, but the name
    of this event exists, as well as the structure for it. The
    size of a TIMESTAMP is 16 bytes, where as a time extend is only
    8 bytes. The macro used to calculate how many time extends can fit on
    a page used the TIMESTAMP size instead of the time extend size
    cutting the amount in half.

    The following test case can easily trigger the warning since we only
    need to have half the page filled with time extends to trigger the
    warning:

    # cd /sys/kernel/debug/tracing/
    # echo function > current_tracer
    # echo 'common_pid < 0' > events/ftrace/function/filter
    # echo > trace
    # echo 1 > trace_marker
    # sleep 120
    # cat trace

    Enabling the function tracer and then setting the filter to only trace
    functions where the process id is negative (no events), then clearing
    the trace buffer to ensure that we have nothing in the buffer,
    then write to trace_marker to add an event to the beginning of a page,
    sleep for 2 minutes (only 35 seconds is probably needed, but this
    guarantees the bug), and then finally reading the trace which will
    trigger the bug.

    This patch fixes the typo and prevents the false positive of that warning.

    Reported-by: Hans J. Koch
    Tested-by: Hans J. Koch
    Cc: Thomas Gleixner
    Cc: Stable Kernel
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     

12 Oct, 2010

13 commits

  • Changes:
    v4: Fix the cosmetic issue of redundant dot-ops
    v3: Change rmb() to use SYNC
    v2: Include mips unistd.h and define rmb()/cpu_relax() in tools/perf/perf.h

    Signed-off-by: Deng-Cheng Zhu
    Acked-by: Ralf Baechle
    Cc: David Daney
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    Cc: Paul Mackerras
    Signed-off-by: Ingo Molnar

    Deng-Cheng Zhu
     
  • I see the following error message in my kernel log from time to time:
    radeon 0000:07:00.0: ffff88007c334000 reserve failed for wait
    radeon 0000:07:00.0: ffff88007c334000 reserve failed for wait

    After investigation, it turns out that there's nothing to be afraid of
    and everything works as intended. So remove the spurious log message.

    Signed-off-by: Jean Delvare
    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jean Delvare
     
  • Missing parens.

    fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=30718

    Reported-by: Dave Gilbert
    Signed-off-by: Alex Deucher
    Reviewed-by: Matt Turner
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • Make TV standard and DFP table revisions debug only.

    Signed-off-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • These bits are used for internal communication and should
    be left enabled. This may fix s/r issues on some systems.

    Signed-off-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • We should not allocate any object into unmappable vram if we
    have no means to access them which on all GPU means having the
    CP running and on newer GPU having the blit utility working.

    This patch limit the vram allocation to visible vram until
    we have acceleration up and running.

    Note that it's more than unlikely that we run into any issue
    related to that as when acceleration is not woring userspace
    should allocate any object in vram beside front buffer which
    should fit in visible vram.

    V2 use real_vram_size as mc_vram_size could be bigger than
    the actual amount of vram

    [airlied: fixup r700_cp_stop case]

    Signed-off-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • perf events: repair incorrect use of copy_from_user

    This makes the perf_event_period() return 0 instead of
    -EFAULT on success.

    Signed-off-by: John Blackwood
    Signed-off-by: Joe Korty
    Acked-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    John Blackwood
     
  • This patch disables the fanotify syscalls by just not building them and
    letting the cond_syscall() statements in kernel/sys_ni.c redirect them
    to sys_ni_syscall().

    It was pointed out by Tvrtko Ursulin that the fanotify interface did not
    include an explicit prioritization between groups. This is necessary
    for fanotify to be usable for hierarchical storage management software,
    as they must get first access to the file, before inotify-like notifiers
    see the file.

    This feature can be added in an ABI compatible way in the next release
    (by using a number of bits in the flags field to carry the info) but it
    was suggested by Alan that maybe we should just hold off and do it in
    the next cycle, likely with an (new) explicit argument to the syscall.
    I don't like this approach best as I know people are already starting to
    use the current interface, but Alan is all wise and noone on list backed
    me up with just using what we have. I feel this is needlessly ripping
    the rug out from under people at the last minute, but if others think it
    needs to be a new argument it might be the best way forward.

    Three choices:
    Go with what we got (and implement the new feature next cycle). Add a
    new field right now (and implement the new feature next cycle). Wait
    till next cycle to release the ABI (and implement the new feature next
    cycle). This is number 3.

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Russ reported SGI UV is broken recently. He said:

    | The SRAT table shows that memory range is spread over two nodes.
    |
    | SRAT: Node 0 PXM 0 100000000-800000000
    | SRAT: Node 1 PXM 1 800000000-1000000000
    | SRAT: Node 0 PXM 0 1000000000-1080000000
    |
    |Previously, the kernel early_node_map[] would show three entries
    |with the proper node.
    |
    |[ 0.000000] 0: 0x00100000 -> 0x00800000
    |[ 0.000000] 1: 0x00800000 -> 0x01000000
    |[ 0.000000] 0: 0x01000000 -> 0x01080000
    |
    |The problem is recent community kernel early_node_map[] shows
    |only two entries with the node 0 entry overlapping the node 1
    |entry.
    |
    | 0: 0x00100000 -> 0x01080000
    | 1: 0x00800000 -> 0x01000000

    After looking at the changelog, Found out that it has been broken for a while by
    following commit

    |commit 8716273caef7f55f39fe4fc6c69c5f9f197f41f1
    |Author: David Rientjes
    |Date: Fri Sep 25 15:20:04 2009 -0700
    |
    | x86: Export srat physical topology

    Before that commit, register_active_regions() is called for every SRAT memory
    entry right away.

    Use nodememblk_range[] instead of nodes[] in order to make sure we
    capture the actual memory blocks registered with each node. nodes[]
    contains an extended range which spans all memory regions associated
    with a node, but that does not mean that all the memory in between are
    included.

    Reported-by: Russ Anderson
    Tested-by: Russ Anderson
    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Acked-by: David Rientjes
    Cc: 2.6.33 .34 .35 .36
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    kbuild: fix oldnoconfig to do the right thing
    kconfig: Temporarily disable dependency warnings
    kconfig: delay symbol direct dependency initialization

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86:
    IPS driver: Fix limit clamping when reducing CPU power
    [PATCH 2/2] IPS driver: disable CPU turbo
    IPS driver: apply BIOS provided CPU limit if different from default
    intel_ips -- ensure we do not enable gpu turbo mode without driver linkage
    intel_ips: Print MCP limit exceeded values.
    IPS driver: verify BIOS provided limits
    IPS driver: don't toggle CPU turbo on unsupported CPUs
    NULL pointer might be used in ips_monitor()
    Release symbol on error-handling path of ips_get_i915_syms()
    old_cpu_power is wrongly divided by 65535 in ips_monitor()
    seqno mask of THM_ITV register is 16bit

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: wacom - fix pressure in Cintiq 21UX2

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: hda - Add another HP DV6 quirk
    OSS: soundcard: locking bug in sound_ioctl()
    ASoC: Update links for Wolfson MAINTAINERS entry
    ASoC: Add Dimitris Papastamos to Wolfson maintainers
    ASoC: Add Jassi Brar as Samsung maintainer

    Linus Torvalds
     

11 Oct, 2010

7 commits

  • Takashi Iwai
     
  • BugLink: https://bugs.launchpad.net/bugs/653420

    Add another HP DV6 notebook (103c:363e) to use STAC_HP_DV5.

    Signed-off-by: Luke Yelavich
    Signed-off-by: Takashi Iwai

    Luke Yelavich
     
  • We shouldn't return directly here because we're still holding the
    &soundcard_mutex.

    This bug goes all the way back to the start of git. It's strange that
    no one has complained about it as a runtime bug.

    CC: stable@kernel.org
    Signed-off-by: Dan Carpenter
    Acked-by: Arnd Bergmann
    Signed-off-by: Takashi Iwai

    Dan Carpenter
     
  • The VMCB is reset whenever we receive a startup IPI, so Linux is setting
    TSC back to zero happens very late in the boot process and destabilizing
    the TSC. Instead, just set TSC to zero once at VCPU creation time.

    Why the separate patch? So git-bisect is your friend.

    Signed-off-by: Zachary Amsden
    Signed-off-by: Marcelo Tosatti

    Zachary Amsden
     
  • On reset, VMCB TSC should be set to zero. Instead, code was setting
    tsc_offset to zero, which passes through the underlying TSC.

    Signed-off-by: Zachary Amsden
    Signed-off-by: Marcelo Tosatti

    Zachary Amsden
     
  • This fixes possible cases of not collecting valid error info in
    the MCE error thresholding groups on F10h hardware.

    The current code contains a subtle problem of checking only the
    Valid bit of MSR0000_0413 (which is MC4_MISC0 - DRAM
    thresholding group) in its first iteration and breaking out if
    the bit is cleared.

    But (!), this MSR contains an offset value, BlkPtr[31:24], which
    points to the remaining MSRs in this thresholding group which
    might contain valid information too. But if we bail out only
    after we checked the valid bit in the first MSR and not the
    block pointer too, we miss that other information.

    The thing is, MC4_MISC0[BlkPtr] is not predicated on
    MCi_STATUS[MiscV] or MC4_MISC0[Valid] and should be checked
    prior to iterating over the MCI_MISCj thresholding group,
    irrespective of the MC4_MISC0[Valid] setting.

    Signed-off-by: Borislav Petkov
    Cc:
    Signed-off-by: Ingo Molnar

    Borislav Petkov
     
  • Currently the pressure range in Cintiq 21UX2 is limited to half of the
    supported. This patch fixes the problem.

    Signed-off-by: Aristeu Rozanski
    Acked-by: Ping Cheng
    CC: stable@kernel.org
    Signed-off-by: Dmitry Torokhov

    Aristeu Rozanski
     

10 Oct, 2010

2 commits

  • Commit 861b4ea4 broke oldnoconfig when removed the oldnoconfig checks on
    if (input_mode == nonint_oldconfig ||
    input_mode == oldnoconfig) {
    if (input_mode == nonint_oldconfig &&
    sym->name &&
    !sym_is_choice_value(sym)) {
    to avoid oldnoconfig chugging through the else stanza.

    Fix that to restore expected behaviour (which I've confirmed in the
    Fedora kernel build that the configs end up looking the same.)

    Signed-off-by: Kyle McMartin
    Acked-by: Sam Ravnborg
    Signed-off-by: Michal Marek

    Kyle McMartin
     
  • After fixing a use-after-free bug in kconfig, a 'make defconfig' or
    'make allmodconfig' fills the screen with warnings that were not
    detected before. Given that we are close to the release now, disable the
    warnings temporarily and deal with them after 2.6.36.

    Signed-off-by: Michal Marek

    Michal Marek