lkml.org 
[lkml]   [2006]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: 2.6.16-rc6-rt7
    From
    Date
    On Thu, 2006-03-16 at 09:39 -0800, David Brown wrote:
    > I've been having issues with the realtime patch set and using scp
    > (specifically scp, wget, curl, git, cvs everything else works fine). I
    > was wondering what extra debugging features are helpful to have built
    > into the kernel that could help me nail down why this bug is
    > happening.
    >
    > Specifically what's happening is scp is freezing my system, there
    > haven't been any kernel warnings or panics upon execution of scp, it
    > just freezes, every other application that uses network seems to work
    > just fine, so far it's just been scp.

    Just found a problem in the highres timer merge. Can you try the patch
    below?

    tglx

    Index: linux-2.6.16-rc6/include/linux/hrtimer.h
    ===================================================================
    --- linux-2.6.16-rc6.orig/include/linux/hrtimer.h
    +++ linux-2.6.16-rc6/include/linux/hrtimer.h
    @@ -114,6 +114,8 @@ extern void hrtimer_clock_notify(void);
    extern void clock_was_set(void);
    extern int hrtimer_interrupt(void);

    +#define hrtimer_cb_get_time(t) (t)->base->get_time()
    +
    /*
    * The resolution of the clocks. The resolution value is returned in
    * the clock_getres() system call to give application programmers an
    @@ -136,6 +138,8 @@ extern int hrtimer_interrupt(void);
    #define clock_was_set() do { } while (0)
    #define hrtimer_clock_notify() do { } while (0)

    +#define hrtimer_cb_get_time(t) (t)->base->softirq_time
    +
    #endif

    # if (BITS_PER_LONG == 64) || defined(CONFIG_KTIME_SCALAR)
    Index: linux-2.6.16-rc6/kernel/hrtimer.c
    ===================================================================
    --- linux-2.6.16-rc6.orig/kernel/hrtimer.c
    +++ linux-2.6.16-rc6/kernel/hrtimer.c
    @@ -970,8 +970,6 @@ static inline void run_hrtimer_hres_queu
    {
    spin_lock_irq(&base->lock);

    - base->softirq_time = base->get_softirq_time();
    -
    while (!list_empty(&base->cb_pending)) {
    struct hrtimer *timer;
    int (*fn)(struct hrtimer *);
    Index: linux-2.6.16-rc6/kernel/itimer.c
    ===================================================================
    --- linux-2.6.16-rc6.orig/kernel/itimer.c
    +++ linux-2.6.16-rc6/kernel/itimer.c
    @@ -136,7 +136,7 @@ int it_real_fn(struct hrtimer *timer)
    send_group_sig_info(SIGALRM, SEND_SIG_PRIV, sig->tsk);

    if (sig->it_real_incr.tv64 != 0) {
    - hrtimer_forward(timer, timer->base->softirq_time,
    + hrtimer_forward(timer, hrtimer_cb_get_time(timer),
    sig->it_real_incr);
    return HRTIMER_RESTART;
    }
    Index: linux-2.6.16-rc6/kernel/posix-timers.c
    ===================================================================
    --- linux-2.6.16-rc6.orig/kernel/posix-timers.c
    +++ linux-2.6.16-rc6/kernel/posix-timers.c
    @@ -355,9 +355,10 @@ static int posix_timer_fn(struct hrtimer
    if (timr->it.real.interval.tv64 != 0) {
    timr->it_overrun +=
    hrtimer_forward(timer,
    - timer->base->softirq_time,
    + hrtimer_cb_get_time(timer),
    timr->it.real.interval);
    ret = HRTIMER_RESTART;
    + ++timr->it_requeue_pending;
    }
    }


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-03-16 18:52    [W:0.023 / U:3.440 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site