21 Jun, 2006

2 commits

  • Some watchdog drivers have the ability to report the remaining time
    before the system will reboot. With the WDIOC_GETTIMELEFT ioctl
    you can now read the time left before the watchdog would reboot
    your system.

    The following drivers support this new IOCTL:
    i8xx_tco.c, pcwd_pci.c and pcwd_usb.c .

    Signed-off-by: Wim Van Sebroeck
    Signed-off-by: Andrew Morton

    Wim Van Sebroeck
     
  • Some watchdog timers support the concept of a "pretimeout" which
    occurs some time before the real timeout. The pretimeout can
    be delivered via an interrupt or NMI and can be used to panic
    the system when it occurs (so you get useful information instead
    of a blind reboot).

    Signed-off-by: Corey Minyard
    Signed-off-by: Wim Van Sebroeck
    Signed-off-by: Andrew Morton

    Corey Minyard
     

18 Jun, 2006

9 commits

  • Being named "Crazed Snow-Weasel" instills a lot of confidence in this
    release, so I'm sure this will be one of the better ones.

    Linus Torvalds
     
  • Reflect the fact that the Cell Broadband Engine supports 64k
    pages by adding the bit to the CPU features.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • The page size encoding passed to tlbie is incorrect for new-style
    large pages. This fixes it. This doesn't affect anything on older
    machines because mmu_psize_defs[psize].penc (the page size encoding)
    is 0 for 4k and 16M pages (the two are distinguished by a separate "is
    a large page" bit).

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     
  • arm_timer() checks PF_EXITING to prevent BUG_ON(->exit_state)
    in run_posix_cpu_timers().

    However, for some reason it does so only for CPUCLOCK_PERTHREAD
    case (which is imho wrong).

    Also, this check is not reliable, PF_EXITING could be set on
    another cpu without any locks/barriers just after the check,
    so it can't prevent from attaching the timer to the exiting
    task.

    The previous patch makes this check unneeded.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • do_exit() clears ->it_##clock##_expires, but nothing prevents
    another cpu to attach the timer to exiting process after that.
    arm_timer() tries to protect against this race, but the check
    is racy.

    After exit_notify() does 'write_unlock_irq(&tasklist_lock)' and
    before do_exit() calls 'schedule() local timer interrupt can find
    tsk->exit_state != 0. If that state was EXIT_DEAD (or another cpu
    does sys_wait4) interrupted task has ->signal == NULL.

    At this moment exiting task has no pending cpu timers, they were
    cleanuped in __exit_signal()->posix_cpu_timers_exit{,_group}(),
    so we can just return from irq.

    John Stultz recently confirmed this bug, see

    http://marc.theaimsgroup.com/?l=linux-kernel&m=115015841413687

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • If the local timer interrupt happens just after do_exit() sets PF_EXITING
    (and before it clears ->it_xxx_expires) run_posix_cpu_timers() will call
    check_process_timers() with tasklist_lock + ->siglock held and

    check_process_timers:

    t = tsk;
    do {
    ....

    do {
    t = next_thread(t);
    } while (unlikely(t->flags & PF_EXITING));
    } while (t != tsk);

    the outer loop will never stop.

    Actually, the window is bigger. Another process can attach the timer
    after ->it_xxx_expires was cleared (see the next commit) and the 'if
    (PF_EXITING)' check in arm_timer() is racy (see the one after that).

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • A couple of fixes that should prevent crashes when using netconsole and
    suspend/resume. First, netconsole poll routine shouldn't run unless the
    device is up; second, the NAPI poll should be disabled during suspend.

    This is only an issue on sky2, because it has to have one NAPI poll
    routine for both ports on dual port boards. Normal drivers use
    netif_rx_schedule_prep and that checks for netif_running.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: Linus Torvalds

    Stephen Hemminger
     
  • If get_user_pages() returns less pages than what we asked for, we jump
    to out_unmap which will return ERR_PTR(ret). But ret can contain a
    positive number just smaller than local_nr_pages, so be sure to set it
    to -EFAULT always.

    Problem found and diagnosed by Damien Le Moal

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • Some time ago the cdrom open routine was changed so that we call the
    driver's open routine before checking to see if it is read only. However,
    if we discovered that a read write open was not possible and the open
    flags required a writable open, we just returned -EROFS without calling
    the driver's release routine. This seems to work for most cdrom drivers,
    but breaks the Powerpc iSeries virtual cdrom rather badly.

    This just inserts the release call in the error path to balance the call
    to "->open()" done by "open_for_data()".

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

15 Jun, 2006

1 commit

  • We don't clear the seek stat values in cfq_alloc_io_context(), and if
    ->seek_mean is unlucky enough to be set to -36 by chance, the first
    invocation of cfq_update_io_seektime() will oops with a divide by zero
    in do_div().

    Just memset the entire cic instead of filling invididual values
    independently.

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

14 Jun, 2006

6 commits


13 Jun, 2006

8 commits

  • From: Randy Dunlap

    According to include/asm-alpha/bitops.h, only ALPHA_EV67 has hardware
    hweight support, so ALPHA_EV6 needs to use GENERIC_HWEIGHT.

    Signed-off-by: Randy Dunlap
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Ernst Herzberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • shmem_rmdir() must undo the increment of i_nlink done in
    shmem_get_inode() for directories, otherwise at least
    IN_DELETE_SELF inotify event generation is broken.

    Signed-off-by: Sergey Vlasov
    Signed-off-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Sergey Vlasov
     
  • I noticed a strange behavior in a tmpfs file system the other day, while
    building packages - occasionally, and seemingly at random, make decided to
    rebuild a target. However, only on tmpfs.

    A file would be created, and if checked, it had a sub-second timestamp.
    However, after an utimes related call where sub-seconds should be set, they
    were zeroed instead. In the case that a file was created, and utimes(...,NULL)
    was used on it in the same second, the timestamp on the file moved backwards.

    After some digging, I found that this was being caused by tmpfs not having a
    time granularity set, thus inheriting the default 1 second granularity.

    Hugh adds: yes, we missed tmpfs when the s_time_gran mods went into 2.6.11.
    Unfortunately, the granularity of CURRENT_TIME, often used in filesystems,
    does not match the default granularity set by alloc_super. A few more such
    discrepancies have been found, but this is the most important to fix now.

    Signed-off-by: Robin H. Johnson
    Acked-by: Andi Kleen
    Signed-off-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Robin H. Johnson
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
    [SPARC64]: Do not double-export sys_close() when CONFIG_SOLARIS_EMUL_MODULE

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
    [IPV4]: Increment ipInHdrErrors when TTL expires.
    [TCP]: continued: reno sacked_out count fix
    [DCCP] Ackvec: fix soft lockup in ackvec handling code

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm:
    [ARM] Fix Integrator and Versatile interrupt initialisation
    [ARM] 3546/1: PATCH: subtle lost interrupts bug on i.MX
    [ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget
    [ARM] Fix Neponset IRQ handling

    Linus Torvalds
     
  • Signed-off-by: Weidong
    Signed-off-by: David S. Miller

    Weidong
     
  • This fixes two independent problems: it would not save the PCI state on
    suspend (and thus try to resume a nonexistent state on resume), and
    while shut off, if an interrupt happened on the same shared irq, the irq
    handler would react very badly to the interrupt status being an invalid
    all-ones state.

    Acked-by: Jeff Garzik
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

12 Jun, 2006

12 commits

  • * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    [PATCH] sata_mv: grab host lock inside eng_timeout

    Linus Torvalds
     
  • From: Aki M Nyrhinen

    IMHO the current fix to the problem (in_flight underflow in reno)
    is incorrect. it treats the symptons but ignores the problem. the
    problem is timing out packets other than the head packet when we
    don't have sack. i try to explain (sorry if explaining the obvious).

    with sack, scanning the retransmit queue for timed out packets is
    fine because we know which packets in our retransmit queue have been
    acked by the receiver.

    without sack, we know only how many packets in our retransmit queue the
    receiver has acknowledged, but no idea which packets.

    think of a "typical" slow-start overshoot case, where for example
    every third packet in a window get lost because a router buffer gets
    full.

    with sack, we check for timeouts on those every third packet (as the
    rest have been sacked). the packet counting works out and if there
    is no reordering, we'll retransmit exactly the packets that were
    lost.

    without sack, however, we check for timeout on every packet and end up
    retransmitting consecutive packets in the retransmit queue. in our
    slow-start example, 2/3 of those retransmissions are unnecessary. these
    unnecessary retransmissions eat the congestion window and evetually
    prevent fast recovery from continuing, if enough packets were lost.

    Signed-off-by: David S. Miller

    Aki M Nyrhinen
     
  • A soft lockup existed in the handling of ack vector records.
    Specifically, when a tail of the list of ack vector records was
    removed, it was possible to end up iterating infinitely on an element
    of the tail.

    Signed-off-by: Andrea Bittau
    Signed-off-by: Ian McDonald
    Signed-off-by: David S. Miller

    Andrea Bittau
     
  • It is already exported by fs/open.c

    Noticed by Ben Collins.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • People have been reporting that PPP connections over ptys, such as
    used with PPTP, will hang randomly when transferring large amounts of
    data, for instance in http://bugzilla.kernel.org/show_bug.cgi?id=6530.
    I have managed to reproduce the problem, and the patch below fixes the
    actual cause.

    The problem is not in fact in ppp_async.c but in n_tty.c. What
    happens is that when pptp reads from the pty, we call read_chan() in
    drivers/char/n_tty.c on the master side of the pty. That copies all
    the characters out of its buffer to userspace and then calls
    check_unthrottle(), which calls the pty unthrottle routine, which
    calls tty_wakeup on the slave side, which calls ppp_asynctty_wakeup,
    which calls tasklet_schedule. So far so good. Since we are in
    process context, the tasklet runs immediately and calls
    ppp_async_process(), which calls ppp_async_push, which calls the
    tty->driver->write function to send some more output.

    However, tty->driver->write() returns zero, because the master
    tty->receive_room is still zero. We haven't returned from
    check_unthrottle() yet, and read_chan() only updates tty->receive_room
    _after_ calling check_unthrottle. That means that the driver->write
    call in ppp_async_process() returns 0. That would be fine if we were
    going to get a subsequent wakeup call, but we aren't (we just had it,
    and the buffer is now empty).

    The solution is for n_tty.c to update tty->receive_room _before_
    calling the driver unthrottle routine. The patch below does this.
    With this patch I was able to transfer a 900MB file over a PPTP
    connection (taking about 25 minutes), whereas without the patch the
    connection would always stall in under a minute.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Linus Torvalds

    Paul Mackerras
     
  • Bug fix: mv_eng_timeout() calls mv_err_intr() without first grabbing the host lock,
    which can lead to all sorts of interesting scenarios.

    This whole error-handling portion of sata_mv is nasty (and will get fixed for
    the new EH stuff), but for now this patch will help keep it on life-support.

    Signed-off-by: Mark Lord
    Signed-off-by: Jeff Garzik

    Mark Lord
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6:
    [PATCH] PCI: reverse pci config space restore order
    [PATCH] PCI: Improve PCI config space writeback
    [PATCH] PCI: Error handling on PCI device resume
    [PATCH] PCI: fix pciehp compile issue when CONFIG_ACPI is not enabled

    Linus Torvalds
     
  • From: Christoph Lameter

    Looks like a comma was left from the conversion from a struct to an
    assignment.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • According to Intel ICH spec, there are several rules that Base Address
    should be programmed before IOSE (PCICMD register ) enabled.

    For example ICH7:

    12.1.3 SATA : the base address register for the bus master register
    should be programmed before this bit is set.

    11.1.3: PCICMD (USB): The base address register for USB should be
    programmed before this bit is set.
    ....

    To make sure kernel code follow this rule , and prevent unnecessary
    confusion. I proposal this patch.

    Signed-off-by: Luming Yu
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Yu, Luming
     
  • At least one laptop blew up on resume from suspend with a black screen due
    to a lack of this patch. By only writing back config space that is
    different, we minimise the possibility of accidents like this.

    Signed-off-by: Dave Jones
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Dave Jones
     
  • We currently don't handle errors properly when resuming a PCI device:
    * In pci_default_resume() we capture the error code returned by
    pci_enable_device() but don't pass it up to the caller.
    Introduced by commit 95a629657dbe28e44a312c47815b3dc3f1ce0970
    * In pci_resume_device(), the errors possibly returned by the driver's
    .resume method or by the generic pci_default_resume() function are
    ignored.

    This patch fixes both issues.

    Signed-off-by: Jean Delvare
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     
  • Fix build error when CONFIG_ACPI not defined

    Signed-off-by: Kristen Carlson Accardi
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    akpm@osdl.org
     

11 Jun, 2006

2 commits