20 Sep, 2007

3 commits

  • This patch fixes a crash caused by an interrupt coming in when an IRQ stack
    is being torn down. When this happens, handle_signal will loop, setting up
    the IRQ stack again because the tearing down had finished, and handling
    whatever signals had come in.

    However, to_irq_stack returns a mask of pending signals to be handled, plus
    bit zero is set if the IRQ stack was already active, and thus shouldn't be
    torn down. This causes a problem because when handle_signal goes around
    the loop, sig will be zero, and to_irq_stack will duly set bit zero in the
    returned mask, faking handle_signal into believing that it shouldn't tear
    down the IRQ stack and return thread_info pointers back to their original
    values.

    This will eventually cause a crash, as the IRQ stack thread_info will
    continue pointing to the original task_struct and an interrupt will look
    into it after it has been freed.

    The fix is to stop passing a signal number into to_irq_stack. Rather, the
    pending signals mask is initialized beforehand with the bit for sig already
    set. References to sig in to_irq_stack can be replaced with references to
    the mask.

    [akpm@linux-foundation.org: use UL]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Xen ignores all updates to cr4, and some versions will kill the domain if
    you try to change its value. Just ignore all changes.

    Signed-off-by: Jeremy Fitzhardinge
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeremy Fitzhardinge
     
  • I found a type mismatch in UML that makes host block devices unusable as ubd
    devices on x86_64 and other 64 bits systems (segfault of the mm subsystem):

    In block/ioctl.c, the following lines show that the BLKGETSIZE ioctl expects
    a pointer to a long:

    case BLKGETSIZE:
    if ((bdev->bd_inode->i_size >> 9) > ~0UL)
    return -EFBIG;
    return put_ulong(arg, bdev->bd_inode->i_size >> 9);

    In arch/um/os-Linux/file.c, os_file_size calls it with an int.

    The ioctl_list man page should be fixed as well.

    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nicolas George
     

17 Sep, 2007

3 commits

  • When NR_CPUS is smaller than the cpu probed, let the user
    know that the cpu won't be used.

    Suggested by Al Viro.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • As noted by Al Viro, when we try to call prom_set_trap_table()
    in the SMP trampoline code we try to take the PROM call spinlock
    which doesn't work because the current thread pointer isn't
    valid yet and lockdep depends upon that being correct.

    Furthermore, we cannot set the current thread pointer register
    because it can't be properly dereferenced until we return from
    prom_set_trap_table(). Kernel TLB misses only work after that
    call.

    So do the PROM call to set the trap table directly instead of
    going through the OBP library C code, and thus avoid the lock
    altogether.

    These calls are guarenteed to be serialized fully.

    Since there are now no calls to the prom_set_trap_table{_sun4v}()
    library functions, they can be deleted.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Signed-off-by: David S. Miller

    David S. Miller
     

15 Sep, 2007

10 commits


13 Sep, 2007

7 commits


12 Sep, 2007

17 commits

  • Since the ULI1575 has a ISA bus we need to enable the generic ISA dma
    support for drivers that might expect it. Without this we get compile
    errors like the following:

    ound/built-in.o: In function `claim_dma_lock':
    /home/galak/git/linux-8572/include/asm/dma.h:189: undefined reference to `dma_spin_lock'
    /home/galak/git/linux-8572/include/asm/dma.h:189: undefined reference to `dma_spin_lock'
    sound/built-in.o: In function `release_dma_lock':
    /home/galak/git/linux-8572/include/asm/dma.h:195: undefined reference to `dma_spin_lock'
    sound/built-in.o: In function `claim_dma_lock':
    /home/galak/git/linux-8572/include/asm/dma.h:189: undefined reference to `dma_spin_lock'
    /home/galak/git/linux-8572/include/asm/dma.h:189: undefined reference to `dma_spin_lock'
    sound/built-in.o:/home/galak/git/linux-8572/include/asm/dma.h:195: more undefined references to `dma_spin_lock' follow
    make: *** [.tmp_vmlinux1] Error 1

    Signed-off-by: Kumar Gala

    Kumar Gala
     
  • On the root PCI bus, the OBP device tree lists device 3 twice.
    Once as 'pm' and once as 'lomp'.

    Everything goes downhill from there.

    Ignore the second instance to workaround this.

    Thanks to Kövedi_Krisztián for the bug report and
    testing the fix.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Revert

    commit 656dad312fb41ed95ef08325e9df9bece3aacbbb
    Author: Ingo Molnar
    Date: Sat Feb 10 01:46:36 2007 -0800

    [PATCH] highmem: catch illegal nesting

    Catch illegally nested kmap_atomic()s even if the page that is mapped by
    the 'inner' instance is from lowmem.

    This avoids spuriously zapped kmap-atomic ptes and turns hard to find
    crashes into clear asserts at the bug site.

    Problem is, a get_zeroed_page(GFP_KERNEL) from interrupt context will trigger
    this check if non-irq code on this CPU holds a KM_USER0 mapping. But that
    get_zeroed_page() will never be altering the kmap slot anyway due to the
    GFP_KERNEL.

    Cc: Christoph Lameter
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Signed-off-by: Robert P. J. Day
    Acked-by: Satyam Sharma
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
    [MIPS] Fix aliasing bug in copy_user_highpage.
    [MIPS] IP22: fix wrong argument order
    [MIPS] IP22: Fix wrong check for second HPC
    [MIPS] Ocelot: remove remaining bits
    [MIPS] TLB: Fix instruction bitmasks
    [MIPS] R10000: Fix wrong test in dma-default.c
    [MIPS] Provide empty irq_enable_hazard definition for legacy and R1 cores.
    [MIPS] Sibyte: Remove broken dependency on EXPERIMENTAL from SIBYTE_SB1xxx_SOC.
    [MIPS] Kconfig: whitespace cleanup.
    [MIPS] PCI: Set need_domain_info if controller domain index is non-zero.
    [MIPS] BCM1480: Fix computation of interrupt mask address register.
    [MIPS] i8259: Add disable method.
    [MIPS] tty: add the new ioctls and definitions.

    Linus Torvalds
     
  • Copy_user_highpage was written assuming it was only being called for
    breaking COW pages in which case the source page isn't cached as in
    marked cachable under it kernel virtual address. If it is called anyway
    the aliasing avoidance strategy implemented by kmap_coherent will fail.
    Avoid the use of kmap_coherent for pages marked dirty and to avoid
    another instance of this sort of bug, place a BUG_ON in kmap_coherent.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • Fix wrong argument order; this is just a minimal fix for the half baked
    redadb/writeb() conversion.

    Signed-off-by: Thomas Bogendoerfer
    Signed-off-by: Ralf Baechle

    Thomas Bogendoerfer
     
  • Wrong check for the second hpc on fullhouse machines, caused DBEs on
    SGI Indys

    Signed-off-by: Thomas Bogendoerfer
    Signed-off-by: Ralf Baechle

    Thomas Bogendoerfer
     
  • Signed-off-by: Yoichi Yuasa
    Signed-off-by: Ralf Baechle

    Yoichi Yuasa
     
  • Signed-Off-By: Thiemo Seufer
    Signed-off-by: Ralf Baechle

    Thiemo Seufer
     
  • Signed-off-by: Maxime Bizon
    Signed-off-by: Ralf Baechle

    Maxime Bizon
     
  • Otherwise Kconfig will produce a nonsenical .config for a kernel that is
    neither 32-bit nor 64-bit.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • This fixes this little funny:

    bigsur:/proc/bus/pci# ls -l
    total 0
    dr-xr-xr-x 2 root root 0 Aug 28 19:31 00
    dr-xr-xr-x 2 root root 0 Aug 28 19:31 00
    dr-xr-xr-x 2 root root 0 Aug 28 19:31 01
    dr-xr-xr-x 2 root root 0 Aug 28 19:31 03
    -r--r--r-- 1 root root 0 Aug 28 19:31 devices

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • CC arch/mips/sibyte/bcm1480/irq.o
    arch/mips/sibyte/bcm1480/irq.c: In function 'bcm1480_mask_irq':
    arch/mips/sibyte/bcm1480/irq.c:112: warning: cast to pointer from integer of different size
    arch/mips/sibyte/bcm1480/irq.c:114: warning: cast to pointer from integer of different size
    arch/mips/sibyte/bcm1480/irq.c: In function 'bcm1480_unmask_irq':
    arch/mips/sibyte/bcm1480/irq.c:130: warning: cast to pointer from integer of different size
    arch/mips/sibyte/bcm1480/irq.c:132: warning: cast to pointer from integer of different size

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • After 76d2160147f43f982dfe881404cfde9fd0a9da21, the qemu NE2000 was
    frequently producing WATCHDOG timeouts.

    Signed-off-by: Kyungmin Park
    Cc: Ralf Baechle
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Ralf Baechle

    Kyungmin Park