20 Oct, 2011

10 commits

  • Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • Use -march=xlr if available, otherwise fallback to mips64. This allows
    us to support compilation with MIPS toolchains which are not customized
    for XLR.

    [ralf@linux-mips.org: And more importantly it works around a gas bug in
    binutils 2.21 which otherwise may result in an assertion failure building
    arch/mips/kernel/genex.S. See
    http://sourceware.org/bugzilla/show_bug.cgi?id=12915 for details.]

    Signed-off-by: Jayachandran C
    To: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/2534/
    Signed-off-by: Ralf Baechle

    Jayachandran C
     
  • Add __init and __cpuinit annotation to functions that need it.

    Signed-off-by: Jayachandran C
    To: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/2535/
    Signed-off-by: Ralf Baechle

    Jayachandran C
     
  • This reverts commit 97475f8b42e83be2966aa2d70ab9c98477701c53 (lmo) /
    82b89152f00f7ad17844d5614d5011e8d7944ac9 (kernel.org) [MIPS: LD/SD o32
    macro GAS fix update].

    Turns out this patch is producing many build errors with gcc 4.2. Based
    on further testing with a test case extracted from the build errors found
    further build errors and suboptimal generation even in violation of the
    "R" constraint.

    To make matters worse, the binutils changes also don't work quite as
    intended so revert this patch for now.

    Ralf Baechle
     
  • If Open Firmware / Device Tree support is enabled on a SNI RM kernel both
    and will be included into some .c files.
    Since both headers use the same wrapper symbol only the inclusion of the
    first file will have an effect but the 2nd file will be ignored resulting
    in a build error.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • Triggered by pnx8550-jbs_defconfig and pnx8550-stb810_defconfig:

    WARNING: vmlinux.o(.text+0xc0c): Section mismatch in reference from the function prom_getcmdline() to the variable .init.data:arcs_cmdline
    The function prom_getcmdline() references
    the variable __initdata arcs_cmdline.
    This is often because prom_getcmdline lacks a __initdata
    annotation or the annotation of arcs_cmdline is wrong.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • The number of arguments only matters for syscalls with stack arguments that
    is using 5 or more argument slots so this is just cosmetic fix.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • WARNING: vmlinux.o(.text+0x3059f8): Section mismatch in reference from the function pcibios_plat_dev_init() to the function .devinit.text:request_bridge_irq()
    The function pcibios_plat_dev_init() references
    the function __devinit request_bridge_irq().
    This is often because pcibios_plat_dev_init lacks a __devinit
    annotation or the annotation of request_bridge_irq is wrong.

    Fixing this one leads to:

    WARNING: vmlinux.o(.text+0x1790): Section mismatch in reference from the function request_bridge_irq() to the function .devinit.text:register_bridge_irq()
    The function request_bridge_irq() references
    the function __devinit register_bridge_irq().
    This is often because request_bridge_irq lacks a __devinit
    annotation or the annotation of register_bridge_irq is wrong.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • Until now flush_kernel_vmap_range() and invalidate_kernel_vmap_range() did
    not exist on MIPS resulting in heavy cache corruption on XFS filesystems.

    Left for the post-3.0 time: optimization and make this work with highmem,
    too. Since the combination of highmem + cache aliases atm doesn't work
    this isn't a regression.

    Signed-off-by: Ralf Baechle
    Patchwork: https://patchwork.linux-mips.org/patch/2505/

    Ralf Baechle
     
  • The 2 functions add_mtd_partitions and del_mtd_partitions were renamed to
    mtd_device_register and mtd_device_unregister.

    Signed-of-by: John Crispin
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/2463/
    Signed-off-by: Ralf Baechle

    John Crispin
     

18 Oct, 2011

1 commit


17 Oct, 2011

2 commits

  • The size is always valid, but variable-length arrays generate worse code
    for no good reason (unless the function happens to be inlined and the
    compiler sees the length for the simple constant it is).

    Also, there seems to be some code generation problem on POWER, where
    Henrik Bakken reports that register r28 can get corrupted under some
    subtle circumstances (interrupt happening at the wrong time?). That all
    indicates some seriously broken compiler issues, but since variable
    length arrays are bad regardless, there's little point in trying to
    chase it down.

    "Just don't do that, then".

    Reported-by: Henrik Grindal Bakken
    Cc: Benjamin Herrenschmidt
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm:
    ARM: 7128/1: vic: Don't write to the read-only register VIC_IRQ_STATUS
    ARM: 7122/1: localtimer: add header linux/errno.h explicitly
    ARM: 7117/1: perf: fix HW_CACHE_* events on Cortex-A9
    ARM: 7113/1: mm: Align bank start to MAX_ORDER_NR_PAGES

    Linus Torvalds
     

15 Oct, 2011

4 commits


14 Oct, 2011

8 commits


13 Oct, 2011

4 commits


12 Oct, 2011

3 commits

  • Currently we have a few issues with the way the workqueue code is used to
    implement AIL pushing:

    - it accidentally uses the same workqueue as the syncer action, and thus
    can be prevented from running if there are enough sync actions active
    in the system.
    - it doesn't use the HIGHPRI flag to queue at the head of the queue of
    work items

    At this point I'm not confident enough in getting all the workqueue flags and
    tweaks right to provide a perfectly reliable execution context for AIL
    pushing, which is the most important piece in XFS to make forward progress
    when the log fills.

    Revert back to use a kthread per filesystem which fixes all the above issues
    at the cost of having a task struct and stack around for each mounted
    filesystem. In addition this also gives us much better ways to diagnose
    any issues involving hung AIL pushing and removes a small amount of code.

    Signed-off-by: Christoph Hellwig
    Reported-by: Stefan Priebe
    Tested-by: Stefan Priebe
    Reviewed-by: Dave Chinner
    Signed-off-by: Alex Elder

    Christoph Hellwig
     
  • We need to check for pinned buffers even in .iop_pushbuf given that inode
    items flush into the same buffers that may be pinned directly due operations
    on the unlinked inode list operating directly on buffers. To do this add a
    return value to .iop_pushbuf that tells the AIL push about this and use
    the existing log force mechanisms to unpin it.

    Signed-off-by: Christoph Hellwig
    Reported-by: Stefan Priebe
    Tested-by: Stefan Priebe
    Reviewed-by: Dave Chinner
    Signed-off-by: Alex Elder

    Christoph Hellwig
     
  • If an item was locked we should not update xa_last_pushed_lsn and thus skip
    it when restarting the AIL scan as we need to be able to lock and write it
    out as soon as possible. Otherwise heavy lock contention might starve AIL
    pushing too easily, especially given the larger backoff once we moved
    xa_last_pushed_lsn all the way to the target lsn.

    Signed-off-by: Christoph Hellwig
    Reported-by: Stefan Priebe
    Tested-by: Stefan Priebe
    Reviewed-by: Dave Chinner
    Signed-off-by: Alex Elder

    Christoph Hellwig
     

11 Oct, 2011

7 commits

  • The btrfs file defrag code will loop through the extents and
    force COW on them. But there is a concurrent truncate in the middle of
    the defrag, it might end up defragging the same range over and over
    again.

    The problem is that writepage won't go through and do anything on pages
    past i_size, so the cow won't happen, so the file will appear to still
    be fragmented. defrag will end up hitting the same extents again and
    again.

    In the worst case, the truncate can actually live lock with the defrag
    because the defrag keeps creating new ordered extents which the truncate
    code keeps waiting on.

    The fix here is to make defrag check for i_size inside the main loop,
    instead of just once before the looping starts.

    Signed-off-by: Chris Mason

    Chris Mason
     
  • This UML breakage:

    linux-2.6.30.1[3800] vsyscall fault (exploit attempt?) ip:ffffffffff600000 cs:33 sp:7fbfb9c498 ax:ffffffffff600000 si:0 di:606790
    linux-2.6.30.1[3856] vsyscall fault (exploit attempt?) ip:ffffffffff600000 cs:33 sp:7fbfb13168 ax:ffffffffff600000 si:0 di:606790

    Is caused by commit 3ae36655 ("x86-64: Rework vsyscall emulation and add
    vsyscall= parameter") - the vsyscall emulation code is not fully cooked
    yet as UML relies on some rather fragile SIGSEGV semantics.

    Linus suggested in https://lkml.org/lkml/2011/8/9/376 to default
    to vsyscall=native for now, this patch implements that.

    Signed-off-by: Adrian Bunk
    Acked-by: Andrew Lutomirski
    Cc: H. Peter Anvin
    Link: http://lkml.kernel.org/r/20111005214047.GE14406@localhost.pp.htv.fi
    Signed-off-by: Ingo Molnar

    Adrian Bunk
     
  • Follow those steps:

    # mount -o autodefrag /dev/sda7 /mnt
    # dd if=/dev/urandom of=/mnt/tmp bs=200K count=1
    # sync
    # dd if=/dev/urandom of=/mnt/tmp bs=8K count=1 conv=notrunc

    and then it'll go into a loop: writeback -> defrag -> writeback ...

    It's because writeback writes [8K, 200K] and then writes [0, 8K].

    I tried to make writeback know if the pages are dirtied by defrag,
    but the patch was a bit intrusive. Here I simply set writeback_index
    when we defrag a file.

    Signed-off-by: Li Zefan
    Signed-off-by: Chris Mason

    Li Zefan
     
  • Due to the 16 bit access to mscan registers there's too much data copied to
    the zero initialized CAN frame when having an odd number of bytes to copy.
    This patch ensures that only the requested bytes are copied by using an
    8 bit access for the remaining byte.

    Reported-by: Andre Naujoks
    Signed-off-by: Oliver Hartkopp
    Signed-off-by: Wolfgang Grandegger
    Signed-off-by: David S. Miller

    Wolfgang Grandegger
     
  • ipv6_gro_receive() doesn't update the protocol ops after pulling
    the ext headers. It looks like a typo.

    Signed-off-by: Zheng Yan
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Yan, Zheng
     
  • There are some consolidations of NPAR configuration
    when FCoE and iSCSI L2 clients will get the same id,
    in this case FCoE ring will be non-functional.

    Signed-off-by: Dmitry Kravkov
    Signed-off-by: Eilon Greenstein
    Signed-off-by: David S. Miller

    Dmitry Kravkov
     
  • The doorbell register was being unconditionally swapped. In x86, that
    meant it was being swapped to BE and written to the descriptor and to
    memory, depending on the case of blue frame support or writing to
    doorbell register. On PPC, this meant it was being swapped to LE and
    then swapped back to BE while writing to the register. But in the blue
    frame case, it was being written as LE to the descriptor.

    The fix is not to swap doorbell unconditionally, write it to the
    register as BE and convert it to BE when writing it to the descriptor.

    Signed-off-by: Thadeu Lima de Souza Cascardo
    Reported-by: Richard Hendrickson
    Cc: Eli Cohen
    Cc: Yevgeny Petrilin
    Cc: Benjamin Herrenschmidt
    Signed-off-by: David S. Miller

    Thadeu Lima de Souza Cascardo
     

10 Oct, 2011

1 commit