1. 25 Aug, 2007 34 commits
  2. 15 Aug, 2007 6 commits
    • Willy Tarreau's avatar
      Linux 2.6.20.16 · 79774188
      Willy Tarreau authored
      79774188
    • Stephen Hemminger's avatar
      [PATCH] sky2: workaround for lost IRQ · 0aa15e9b
      Stephen Hemminger authored
      This patch restores a couple of workarounds from 2.6.16:
       * restart transmit moderation timer in case it expires during IRQ routine
       * default to having 10 HZ watchdog timer.
      At this point it more important not to hang than to worry about the
      power cost.
      Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
      Cc: Jeff Garzik <jeff@garzik.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0aa15e9b
    • Jason Wessel's avatar
      [PATCH] i386: fix infinite loop with singlestep int80 syscalls · c1858008
      Jason Wessel authored
      The commit 635cf99a introduced a
      regression.  Executing a ptrace single step after certain int80
      accesses will infinitely loop and never advance the PC.
      
      The TIF_SINGLESTEP check should be done on the return from the syscall
      and not before it.
      
      The new test case is below:
      
      /* Test whether singlestep through an int80 syscall works.
       */
      #define _GNU_SOURCE
      #include <stdio.h>
      #include <unistd.h>
      #include <fcntl.h>
      #include <sys/ptrace.h>
      #include <sys/wait.h>
      #include <sys/mman.h>
      #include <asm/user.h>
      #include <string.h>
      
      static int child, status;
      static struct user_regs_struct regs;
      
      static void do_child()
      {
      	char str[80] = "child: int80 test\n";
      
      	ptrace(PTRACE_TRACEME, 0, 0, 0);
      	kill(getpid(), SIGUSR1);
      	write(fileno(stdout),str,strlen(str));
      	asm ("int $0x80" : : "a" (20)); /* getpid */
      }
      
      static void do_parent()
      {
      	unsigned long eip, expected = 0;
      again:
      	waitpid(child, &status, 0);
      	if (WIFEXITED(status) || WIFSIGNALED(status))
      		return;
      
      	if (WIFSTOPPED(status)) {
      		ptrace(PTRACE_GETREGS, child, 0, &regs);
      		eip = regs.eip;
      		if (expected)
      			fprintf(stderr, "child stop @ %08lx, expected %08lx %s\n",
      					eip, expected,
      					eip == expected ? "" : " <== ERROR");
      
      		if (*(unsigned short *)eip == 0x80cd) {
      			fprintf(stderr, "int 0x80 at %08x\n", (unsigned int)eip);
      			expected = eip + 2;
      		} else
      			expected = 0;
      
      		ptrace(PTRACE_SINGLESTEP, child, NULL, NULL);
      	}
      	goto again;
      }
      
      int main(int argc, char * const argv[])
      {
      	child = fork();
      	if (child)
      		do_parent();
      	else
      		do_child();
      	return 0;
      }
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Chuck Ebbert <cebbert@redhat.com>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c1858008
    • Jay Lubomirski's avatar
      [PATCH] serial: clear proper MPSC interrupt cause bits · 602f7345
      Jay Lubomirski authored
      The interrupt clearing code in mpsc_sdma_intr_ack() mistakenly clears the
      interrupt for both controllers instead of just the one its supposed to.
      This can result in the other controller appearing to hang because its
      interrupt was effectively lost.
      
      So, don't clear the interrupt cause bits for both MPSC controllers when
      clearing the interrupt for one of them.  Just clear the one that is
      supposed to be cleared.
      Signed-off-by: default avatarJay Lubomirski <jaylubo@motorola.com>
      Acked-by: default avatarMark A. Greer <mgreer@mvista.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      602f7345
    • Jeff Mahoney's avatar
      [PATCH] saa7134: fix thread shutdown handling · 2ead8a28
      Jeff Mahoney authored
      This patch changes the test for the thread pid from >= 0 to > 0.
      
      When the saa7134 driver initialization fails after a certain point, it goes
      through the complete shutdown process for the driver.  Part of shutting it
      down includes tearing down the thread for tv audio.
      
      The test for tearing down the thread tests for >= 0.  Since the dev
      structure is kzalloc'd, the test will always be true if we haven't tried to
      start the thread yet.  We end up waiting on pid 0 to complete, which will
      never happen, so we lock up.
      
      This bug was observed in Novell Bugzilla 284718, when request_irq() failed.
      Signed-off-by: default avatarJeff Mahoney <jeffm@suse.com>
      Acked-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      2ead8a28
    • Hugh Dickins's avatar
      [PATCH] mm: kill validate_anon_vma to avoid mapcount BUG · 356177f4
      Hugh Dickins authored
      validate_anon_vma gave a useful check on the integrity of the anon_vma list
      when Andrea was developing obj rmap; but it was not enabled in SLES9
      itself, nor in mainline, until Nick changed commented-out RMAP_DEBUG to
      configurable CONFIG_DEBUG_VM in 2.6.17.  Now Petr Vandrovec reports that
      its BUG_ON(mapcount > 100000) can easily crash a CONFIG_DEBUG_VM=y system.
      
      That limit was just an arbitrary number to protect against an infinite
      loop.  We could raise it to something enormous (depending on sizeof struct
      vma and size of memory?); but I rather think validate_anon_vma has outlived
      its usefulness, and is better just removed - which gives a magnificent
      performance boost to anything like Petr's test program ;)
      
      Of course, a very long anon_vma list is bad news for preemption latency,
      and I believe there has been one recent report of such: let's not forget
      that, but validate_anon_vma only makes it worse not better.
      Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
      Cc: Petr Vandrovec <petr@vmware.com>
      Acked-by: default avatarNick Piggin <npiggin@suse.de>
      Cc: Andrea Arcangeli <andrea@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      356177f4