18 Nov, 2009

3 commits


16 Nov, 2009

2 commits


14 Nov, 2009

8 commits

  • powerpc grew a new warning due to the type change of clockevent->mult.

    The architectures which use parts of the generic time keeping
    infrastructure tripped over my wrong assumption that
    clocksource_register is only used when GENERIC_TIME=y.

    I should have looked and also I should have known better. These
    renitent Gaul villages are racking my nerves. Some serious deprecating
    is due.

    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • In the dynamic tick code, "max_delta_ns" (member of the
    "clock_event_device" structure) represents the maximum sleep time
    that can occur between timer events in nanoseconds.

    The variable, "max_delta_ns", is defined as an unsigned long
    which is a 32-bit integer for 32-bit machines and a 64-bit
    integer for 64-bit machines (if -m64 option is used for gcc).
    The value of max_delta_ns is set by calling the function
    "clockevent_delta2ns()" which returns a maximum value of LONG_MAX.
    For a 32-bit machine LONG_MAX is equal to 0x7fffffff and in
    nanoseconds this equates to ~2.15 seconds. Hence, the maximum
    sleep time for a 32-bit machine is ~2.15 seconds, where as for
    a 64-bit machine it will be many years.

    This patch changes the type of max_delta_ns to be "u64" instead of
    "unsigned long" so that this variable is a 64-bit type for both 32-bit
    and 64-bit machines. It also changes the maximum value returned by
    clockevent_delta2ns() to KTIME_MAX. Hence this allows a 32-bit
    machine to sleep for longer than ~2.15 seconds. Please note that this
    patch also changes "min_delta_ns" to be "u64" too and although this is
    unnecessary, it makes the patch simpler as it avoids to fixup all
    callers of clockevent_delta2ns().

    [ tglx: changed "unsigned long long" to u64 as we use this data type
    through out the time code ]

    Signed-off-by: Jon Hunter
    Cc: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Jon Hunter
     
  • The previous patch which limits the sleep time to the maximum
    deferment time of the time keeping clocksource has some limitations on
    SMP machines: if all CPUs are idle then for all CPUs the maximum sleep
    time is limited.

    Solve this by keeping track of which cpu had the do_timer() duty
    assigned last and limit the sleep time only for this cpu.

    Signed-off-by: Thomas Gleixner
    LKML-Reference:
    Cc: Jon Hunter
    Cc: John Stultz

    Thomas Gleixner
     
  • The dynamic tick allows the kernel to sleep for periods longer than a
    single tick, but it does not limit the sleep time currently. In the
    worst case the kernel could sleep longer than the wrap around time of
    the time keeping clock source which would result in losing track of
    time.

    Prevent this by limiting it to the safe maximum sleep time of the
    current time keeping clock source. The value is calculated when the
    clock source is registered.

    [ tglx: simplified the code a bit and massaged the commit msg ]

    Signed-off-by: Jon Hunter
    Cc: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Jon Hunter
     
  • On some archs local_softirq_pending() has a data type of unsigned long
    on others its unsigned int. Type cast it to (unsigned int) in the
    printk to avoid the compiler warning.

    Signed-off-by: Thomas Gleixner
    LKML-Reference:

    Thomas Gleixner
     
  • Replace the MIPS functions of mult/shift factor calculation for clock
    events and clock sources with inline functions which call the generic
    functions. The minimum guaranteed conversion range is set to 4 seconds
    which corresponds to the current MIPS implementation.

    Signed-off-by: Thomas Gleixner
    Cc: Mikael Pettersson
    Acked-by: Ralf Baechle
    Acked-by: Linus Walleij
    Cc: John Stultz
    LKML-Reference:

    Thomas Gleixner
     
  • MIPS has two functions to calculcate the mult/shift factors for clock
    sources and clock events at run time. ARM needs such functions as
    well.

    Implement a function which calculates the mult/shift factors based on
    the frequencies to which and from which is converted. The function
    also has a parameter to specify the minimum conversion range in
    seconds. This range is guaranteed not to produce a 64bit overflow when
    a value is multiplied with the calculated mult factor. The larger the
    conversion range the less becomes the conversion accuracy.

    Provide two inline wrappers which handle clock events and clock
    sources. For clock events the "from" frequency is nano seconds per
    second which corresponds to 1GHz and "to" is the device frequency. For
    clock sources "from" is the device frequency and "to" is nano seconds
    per second.

    Signed-off-by: Thomas Gleixner
    Tested-by: Mikael Pettersson
    Acked-by: Ralf Baechle
    Acked-by: Linus Walleij
    Cc: John Stultz
    LKML-Reference:

    Thomas Gleixner
     
  • The mult and shift factors of clock events differ in their data type
    from those of clock sources for no reason. u32 is sufficient for
    both. shift is always
    Tested-by: Mikael Pettersson
    Acked-by: Ralf Baechle
    Acked-by: Linus Walleij
    Cc: John Stultz
    LKML-Reference:

    Thomas Gleixner
     

05 Nov, 2009

2 commits

  • Allow the architecture to request a normal jiffy tick when the system
    goes idle and tick_nohz_stop_sched_tick is called . On s390 the hook is
    used to prevent the system going fully idle if there has been an
    interrupt other than a clock comparator interrupt since the last wakeup.

    On s390 the HiperSockets response time for 1 connection ping-pong goes
    down from 42 to 34 microseconds. The CPU cost decreases by 27%.

    Signed-off-by: Martin Schwidefsky
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Martin Schwidefsky
     
  • On a system with NOHZ=y tick_check_idle calls tick_nohz_stop_idle and
    tick_nohz_update_jiffies. Given the right conditions (ts->idle_active
    and/or ts->tick_stopped) both function get a time stamp with ktime_get.
    The same time stamp can be reused if both function require one.

    On s390 this change has the additional benefit that gcc inlines the
    tick_nohz_stop_idle function into tick_check_idle. The number of
    instructions to execute tick_check_idle drops from 225 to 144
    (without the ktime_get optimization it is 367 vs 215 instructions).

    before:

    0) | tick_check_idle() {
    0) | tick_nohz_stop_idle() {
    0) | ktime_get() {
    0) | read_tod_clock() {
    0) 0.601 us | }
    0) 1.765 us | }
    0) 3.047 us | }
    0) | ktime_get() {
    0) | read_tod_clock() {
    0) 0.570 us | }
    0) 1.727 us | }
    0) | tick_do_update_jiffies64() {
    0) 0.609 us | }
    0) 8.055 us | }

    after:

    0) | tick_check_idle() {
    0) | ktime_get() {
    0) | read_tod_clock() {
    0) 0.617 us | }
    0) 1.773 us | }
    0) | tick_do_update_jiffies64() {
    0) 0.593 us | }
    0) 4.477 us | }

    Signed-off-by: Martin Schwidefsky
    Cc: john stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Martin Schwidefsky
     

05 Oct, 2009

2 commits

  • With the prior logarithmic time accumulation patch, xtime will now
    always be within one "tick" of the current time, instead of
    possibly half a second off.

    This removes the need for the xtime_cache value, which always
    stored the time at the last interrupt, so this patch cleans that up
    removing the xtime_cache related code.

    This is a bit simpler, but still could use some wider testing.

    Signed-off-by: John Stultz
    Acked-by: Thomas Gleixner
    Reviewed-by: John Kacur
    Cc: Clark Williams
    Cc: Martin Schwidefsky
    Cc: Andrew Morton
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    john stultz
     
  • Accumulating one tick at a time works well unless we're using NOHZ.
    Then it can be an issue, since we may have to run through the loop
    a few thousand times, which can increase timer interrupt caused
    latency.

    The current solution was to accumulate in half-second intervals
    with NOHZ. This kept the number of loops down, however it did
    slightly change how we make NTP adjustments. While not an issue
    with NTPd users, as NTPd makes adjustments over a longer period of
    time, other adjtimex() users have noticed the half-second
    granularity with which we can apply frequency changes to the clock.

    For instance, if a application tries to apply a 100ppm frequency
    correction for 20ms to correct a 2us offset, with NOHZ they either
    get no correction, or a 50us correction.

    Now, there will always be some granularity error for applying
    frequency corrections. However with users sensitive to this error
    have seen a 50-500x increase with NOHZ compared to running without
    NOHZ.

    So I figured I'd try another approach then just simply increasing
    the interval. My approach is to consume the time interval
    logarithmically. This reduces the number of times through the loop
    needed keeping latency down, while still preserving the original
    granularity error for adjtimex() changes.

    Further, this change allows us to remove the xtime_cache code
    (patch to follow), as xtime is always within one tick of the
    current time, instead of the half-second updates it saw before.

    An earlier version of this patch has been shipping to x86 users in
    the RedHat MRG releases for awhile without issue, but I've reworked
    this version to be even more careful about avoiding possible
    overflows if the shift value gets too large.

    Signed-off-by: John Stultz
    Acked-by: Thomas Gleixner
    Reviewed-by: John Kacur
    Cc: Clark Williams
    Cc: Martin Schwidefsky
    Cc: Andrew Morton
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    john stultz
     

04 Oct, 2009

12 commits

  • * 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev:
    m32r: Fix IPI function calls for SMP
    m32r: Fix set_memory() for DISCONTIGMEM
    m32r: add rtc_lock variable
    m32r: define ioread* and iowrite* macros
    m32r: export delay loop symbols
    m32r: fix tme_handler

    Linus Torvalds
     
  • A couple of people have hit the WARN_ON() in drivers/char/tty_io.c,
    tty_open() that is unhappy about seeing the tty line discipline go away
    during the tty hangup. See for example

    http://bugzilla.kernel.org/show_bug.cgi?id=14255

    and the reason is that we do the tty_ldisc_halt() outside the
    ldisc_mutex in order to be able to flush the scheduled work without a
    deadlock with vhangup_work.

    However, it turns out that we can solve this particular case by

    - using "cancel_delayed_work_sync()" in tty_ldisc_halt(), which waits
    for just the particular work, rather than synchronizing with any
    random outstanding pending work.

    This won't deadlock, since the buf.work we synchronize with doesn't
    care about the ldisc_mutex, it just flushes the tty ldisc buffers.

    - realize that for this particular case, we don't need to wait for any
    hangup work, because we are inside the hangup codepaths ourselves.

    so as a result we can just drop the flush_scheduled_work() entirely, and
    then move the tty_ldisc_halt() call to inside the mutex. That way we
    never expose the partially torn down ldisc state to tty_open(), and hold
    the ldisc_mutex over the whole sequence.

    Reported-by: Ingo Molnar
    Reported-by: Heinz Diehl
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This patch fixes the m32r SMP kernel after 2.6.27.

    A part of the following patch breaks m32r SMP operation.
    > m32r: convert to generic helpers for IPI function calls
    > commit 7b7426c8a615cf61df9a77b9df7d5b75d91e3fa0

    In the above patch, a CALL_FUNC_SINGLE_IPI was newly introduced,
    but the its IPI vector number was wrong in the patch code.

    The m32r SMP kernel hanged-up during boot operation, because
    the CPU_BOOT_IPI was called instead of CALL_FUNC_SINGLE_IPI
    (CPU_BOOT_IPI had no side effect at that time because the 2nd
    core had already been started up),
    as a result, csd_unlock() was not called, then a dead lock
    occurred in csd_lock_wait() after the detection of Compact Flash
    memory as IDE generic disk.

    Signed-off-by: Toshihiro HANAWA
    Signed-off-by: Hirokazu Takata

    Toshihiro HANAWA
     
  • In case CONFIG_DISCONTIGMEM is set, the memory size of system was
    always determined by CONFIG_MEMORY_SIZE and was not changeable.

    This patch fixes set_memory() of arch/m32r/mm/discontig.c so that
    we can specify memory size by the "mem=" kernel parameter.

    Signed-off-by: Hirokazu Takata

    Hirokazu Takata
     
  • Add a spinlock variable "rtc_lock".
    This is taken from arch/arm/kernel/time.c.

    Signed-off-by: Hirokazu Takata

    Hirokazu Takata
     
  • Define ioread* and iowrite* macros to fix the following build errors:

    CC [M] drivers/uio/uio_smx.o
    drivers/uio/uio_smx.c: In function 'smx_handler':
    drivers/uio/uio_smx.c:31: error: implicit declaration of function 'ioread32'
    drivers/uio/uio_smx.c:37: error: implicit declaration of function 'iowrite32'

    Signed-off-by: Hirokazu Takata

    Hirokazu Takata
     
  • - Move EXPORT_SYMBOL lines of delay loop functions
    from arch/m32r/kernel/m32r_ksyms.c to arch/m32r/lib/delay.c.
    - Export __ndelay.

    Signed-off-by: Hirokazu Takata

    Hirokazu Takata
     
  • Fix pmd_bad check code of tme_handler (TLB Miss Exception handler).
    The correct _KERNPG_TABLE value is not 0x263(=611) but 0x163.

    Signed-off-by: Hirokazu Takata

    Hirokazu Takata
     
  • * 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (21 commits)
    ALSA: usb - Use strlcat() correctly
    ALSA: Fix invalid __exit in sound/mips/*.c
    ALSA: hda - Fix / improve ALC66x parser
    ALSA: ctxfi: Swapped SURROUND-SIDE mute
    sound: Make keywest_driver static
    ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-B1VP
    ALSA: hda - Fix digita/analog mic auto-switching with IDT codecs
    ASoC: fix kconfig order of Blackfin drivers
    ALSA: hda - Added quirk to enable sound on Toshiba NB200
    ASoC: Fix dependency of CONFIG_SND_PXA2XX_SOC_IMOTE2
    ALSA: Don't assume i2c device probing always succeeds
    ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-T350P
    ALSA: echoaudio - Re-enable the line-out control for the Mia card
    ALSA: hda - Resurrect input-source mixer of ALC268 model=acer
    ALSA: hda - Analog Devices AD1984A add HP Touchsmart model
    ALSA: hda - Add HP Pavilion dv4t-1300 to MSI whitelist
    ALSA: hda - CD-audio sound for hda-intel conexant benq laptop
    ASoC: DaVinci: Correct McASP FIFO initialization
    ASoC: Davinci: Fix race with cpu_dai->dma_data
    ASoC: DaVinci: Fix divide by zero error during 1st execution
    ...

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    [PATCH] ext4: retry failed direct IO allocations
    ext4: Fix build warning in ext4_dirty_inode()
    ext4: drop ext4dev compat
    ext4: fix a BUG_ON crash by checking that page has buffers attached to it

    Linus Torvalds
     
  • Takashi Iwai
     
  • Takashi Iwai
     

03 Oct, 2009

11 commits

  • On a 256M filesystem, doing this in a loop:

    xfs_io -F -f -d -c 'pwrite 0 64m' test
    rm -f test

    eventually leads to ENOSPC. (the xfs_io command does a
    64m direct IO write to the file "test")

    As with other block allocation callers, it looks like we need to
    potentially retry the allocations on the initial ENOSPC.

    Signed-off-by: Eric Sandeen
    Signed-off-by: "Theodore Ts'o"

    Eric Sandeen
     
  • This fixes the following warning:

    fs/ext4/inode.c: In function 'ext4_dirty_inode':
    fs/ext4/inode.c:5615: warning: unused variable 'current_handle'

    We remove the jbd_debug() statement which does use current_handle, as
    it's not terribly important in the grand scheme of things.

    Thanks to Stephen Rothwell for pointing this out.

    Signed-off-by: Curt Wohlgemuth
    Signed-off-by: "Theodore Ts'o"

    Curt Wohlgemuth
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm: (25 commits)
    ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7
    ARM: 5727/1: Pass IFSR register to do_PrefetchAbort()
    ARM: 5740/1: fix valid_phys_addr_range() range check
    ARM: 5739/1: ARM: allow empty ATAG_CORE
    ARM: 5735/1: sa1111: CodingStyle cleanups
    ARM: 5738/1: Correct TCM documentation
    ARM: 5734/1: arm: fix compilation of entry-common.S for older CPUs
    ARM: 5733/1: fix bcmring compile error
    ARM: 5732/1: remove redundant include file
    ARM: 5731/2: Fix U300 generic GPIO, remove ifdefs from MMCI v3
    ARM: Ensure do_cache_op takes mmap_sem
    ARM: Fix __cpuexit section mismatch warnings
    ARM: Don't allow highmem on SMP platforms without h/w TLB ops broadcast
    ARM: includecheck fix: mach-davinci, board-dm365-evm.c
    ARM: Remove unused CONFIG SA1100_H3XXX
    ARM: Fix warning: unused variable 'highmem'
    ARM: Fix warning: #warning syscall migrate_pages not implemented
    ARM: Fix SA11x0 clocksource warning
    ARM: Fix SA1100 Neponset serial section mismatch
    ARM: Fix SA1100 Assabet/Neponset PCMCIA section mismatch warnings
    ...

    Linus Torvalds
     
  • Currently, on ARMv6 and ARMv7, if an application tries to execute
    code (or garbage) on non-executable page it hangs. It caused by
    incorrect prefetch abort handling. Now every prefetch abort
    processes as a translation fault.

    To fix this we have to analyze instruction fault status register
    to figure out reason why we've got the abort and process it
    accordingly.

    To make IFSR different from DFSR we set bit 31 which is reserved in
    both IFSR and DFSR.

    This patch also tries to protect from future hangs on unexpected
    exceptions. An application will be killed if unexpected exception
    type was received.

    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Russell King

    Kirill A. Shutemov
     
  • Instruction fault status register, IFSR, was introduced on ARMv6 to
    provide status information about the last insturction fault. It
    needed for proper prefetch abort handling.

    Now we have three prefetch abort model:

    * legacy - for CPUs before ARMv6. They doesn't provide neither
    IFSR nor IFAR. We simulate IFSR with section translation fault
    status for them to generalize code;
    * ARMv6 - provides IFSR, but not IFAR;
    * ARMv7 - provides both IFSR and IFAR.

    Signed-off-by: Kirill A. Shutemov
    Signed-off-by: Russell King

    Kirill A. Shutemov
     
  • Commit 1522ac3ec95ff0230e7aa516f86b674fdf72866c
    ("Fix virtual to physical translation macro corner cases")
    breaks the end of memory check in valid_phys_addr_range().
    The modified expression results in the apparent /dev/mem size
    being 2 bytes smaller than what it actually is.

    This patch reworks the expression to correctly check the address,
    while maintaining use of a valid address to __pa().

    Signed-off-by: Greg Ungerer
    Signed-off-by: Russell King

    Greg Ungerer
     
  • From: David Brown

    The ATAG_CORE is allowed to be empty. Although this is handled
    by parse_tag_core(), __vet_atags during startup rejects this tag
    unless it contains data. Allow the initial tag to be either the
    full size, or empty.

    Signed-off-by: David Brown
    Signed-off-by: Russell King

    David Brown
     
  • EXPORT_* macros should follow immediately after the closing function
    brace line.

    Signed-off-by: H Hartley Sweeten
    Acked-by: Kristoffer Ericson
    Signed-off-by: Russell King

    Hartley Sweeten
     
  • Conflicts:
    MAINTAINERS

    Russell King
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (46 commits)
    cnic: Fix NETDEV_UP event processing.
    uvesafb/connector: Disallow unpliviged users to send netlink packets
    pohmelfs/connector: Disallow unpliviged users to configure pohmelfs
    dst/connector: Disallow unpliviged users to configure dst
    dm/connector: Only process connector packages from privileged processes
    connector: Removed the destruct_data callback since it is always kfree_skb()
    connector/dm: Fixed a compilation warning
    connector: Provide the sender's credentials to the callback
    connector: Keep the skb in cn_callback_data
    e1000e/igb/ixgbe: Don't report an error if devices don't support AER
    net: Fix wrong sizeof
    net: splice() from tcp to pipe should take into account O_NONBLOCK
    net: Use sk_mark for routing lookup in more places
    sky2: irqname based on pci address
    skge: use unique IRQ name
    IPv4 TCP fails to send window scale option when window scale is zero
    net/ipv4/tcp.c: fix min() type mismatch warning
    Kconfig: STRIP: Remove stale bits of STRIP help text
    NET: mkiss: Fix typo
    tg3: Remove prev_vlan_tag from struct tx_ring_info
    ...

    Linus Torvalds
     
  • This fixes the problem of not handling the NETDEV_UP event properly
    during hot-plug or modprobe of bnx2 after cnic. The handling was
    skipped by mistakenly using "else if" to check for the event.

    Also update version to 2.0.1.

    Signed-off-by: Michael Chan
    Signed-off-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan