03 Jun, 2014

1 commit


02 Jun, 2014

3 commits

  • Pull powerpc fix from Ben Herrenschmidt:
    "Here's just one trivial patch to wire up sys_renameat2 which I seem to
    have completely missed so far.

    (My test build scripts fwd me warnings but miss the ones generated for
    missing syscalls)"

    * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc: Wire renameat2() syscall

    Linus Torvalds
     
  • Pull MIPS fixes from Ralf Baechle:
    "A fair number of fixes across the field. Nothing terribly
    complicated; the one liners in below changelog should be fairly
    descriptive.

    Noteworthy is the SB1 change which the result of changes to binutils
    resulting in one big gas warning for most files being assembled as
    well as the asid_cache and branch emulation fixes which fix corruption
    or possible uninteded behaviour of kernel or application code. The
    remainder of fixes are more platforms or subsystem specific"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: R46000: Fix Micro-assembler field overflow for R4600 V2
    MIPS: ptrace: Avoid smp_processor_id() in preemptible code
    MIPS: Lemote 2F: cs5536: mfgpt: use raw locks
    MIPS: SB1: Fix excessive kernel warnings.
    MIPS: RC32434: fix broken PCI resource initialization
    MIPS: malta: memory.c: Initialize the 'memsize' variable
    MIPS: Fix typo when reporting cache and ftlb errors for ImgTec cores
    MIPS: Fix inconsistancy of __NR_Linux_syscalls value
    MIPS: Fix branch emulation of branch likely instructions.
    MIPS: Fix a typo error in AUDIT_ARCH definition
    MIPS: Change type of asid_cache to unsigned long

    Linus Torvalds
     
  • Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     

31 May, 2014

1 commit

  • While I play inhouse patches with much memory pressure on qemu-kvm,
    3.14 kernel was randomly crashed. The reason was kernel stack overflow.

    When I investigated the problem, the callstack was a little bit deeper
    by involve with reclaim functions but not direct reclaim path.

    I tried to diet stack size of some functions related with alloc/reclaim
    so did a hundred of byte but overflow was't disappeard so that I encounter
    overflow by another deeper callstack on reclaim/allocator path.

    Of course, we might sweep every sites we have found for reducing
    stack usage but I'm not sure how long it saves the world(surely,
    lots of developer start to add nice features which will use stack
    agains) and if we consider another more complex feature in I/O layer
    and/or reclaim path, it might be better to increase stack size(
    meanwhile, stack usage on 64bit machine was doubled compared to 32bit
    while it have sticked to 8K. Hmm, it's not a fair to me and arm64
    already expaned to 16K. )

    So, my stupid idea is just let's expand stack size and keep an eye
    toward stack consumption on each kernel functions via stacktrace of ftrace.
    For example, we can have a bar like that each funcion shouldn't exceed 200K
    and emit the warning when some function consumes more in runtime.
    Of course, it could make false positive but at least, it could make a
    chance to think over it.

    I guess this topic was discussed several time so there might be
    strong reason not to increase kernel stack size on x86_64, for me not
    knowing so Ccing x86_64 maintainers, other MM guys and virtio
    maintainers.

    Here's an example call trace using up the kernel stack:

    Depth Size Location (51 entries)
    ----- ---- --------
    0) 7696 16 lookup_address
    1) 7680 16 _lookup_address_cpa.isra.3
    2) 7664 24 __change_page_attr_set_clr
    3) 7640 392 kernel_map_pages
    4) 7248 256 get_page_from_freelist
    5) 6992 352 __alloc_pages_nodemask
    6) 6640 8 alloc_pages_current
    7) 6632 168 new_slab
    8) 6464 8 __slab_alloc
    9) 6456 80 __kmalloc
    10) 6376 376 vring_add_indirect
    11) 6000 144 virtqueue_add_sgs
    12) 5856 288 __virtblk_add_req
    13) 5568 96 virtio_queue_rq
    14) 5472 128 __blk_mq_run_hw_queue
    15) 5344 16 blk_mq_run_hw_queue
    16) 5328 96 blk_mq_insert_requests
    17) 5232 112 blk_mq_flush_plug_list
    18) 5120 112 blk_flush_plug_list
    19) 5008 64 io_schedule_timeout
    20) 4944 128 mempool_alloc
    21) 4816 96 bio_alloc_bioset
    22) 4720 48 get_swap_bio
    23) 4672 160 __swap_writepage
    24) 4512 32 swap_writepage
    25) 4480 320 shrink_page_list
    26) 4160 208 shrink_inactive_list
    27) 3952 304 shrink_lruvec
    28) 3648 80 shrink_zone
    29) 3568 128 do_try_to_free_pages
    30) 3440 208 try_to_free_pages
    31) 3232 352 __alloc_pages_nodemask
    32) 2880 8 alloc_pages_current
    33) 2872 200 __page_cache_alloc
    34) 2672 80 find_or_create_page
    35) 2592 80 ext4_mb_load_buddy
    36) 2512 176 ext4_mb_regular_allocator
    37) 2336 128 ext4_mb_new_blocks
    38) 2208 256 ext4_ext_map_blocks
    39) 1952 160 ext4_map_blocks
    40) 1792 384 ext4_writepages
    41) 1408 16 do_writepages
    42) 1392 96 __writeback_single_inode
    43) 1296 176 writeback_sb_inodes
    44) 1120 80 __writeback_inodes_wb
    45) 1040 160 wb_writeback
    46) 880 208 bdi_writeback_workfn
    47) 672 144 process_one_work
    48) 528 112 worker_thread
    49) 416 240 kthread
    50) 176 176 ret_from_fork

    [ Note: the problem is exacerbated by certain gcc versions that seem to
    generate much bigger stack frames due to apparently bad coalescing of
    temporaries and generating too many spills. Rusty saw gcc-4.6.4 using
    35% more stack on the virtio path than 4.8.2 does, for example.

    Minchan not only uses such a bad gcc version (4.6.3 in his case), but
    some of the stack use is due to debugging (CONFIG_DEBUG_PAGEALLOC is
    what causes that kernel_map_pages() frame, for example). But we're
    clearly getting too close.

    The VM code also seems to have excessive stack frames partly for the
    same compiler reason, triggered by excessive inlining and lots of
    function arguments.

    We need to improve on our stack use, but in the meantime let's do this
    simple stack increase too. Unlike most earlier reports, there is
    nothing simple that stands out as being really horribly wrong here,
    apart from the fact that the stack frames are just bigger than they
    should need to be. - Linus ]

    Signed-off-by: Minchan Kim
    Cc: Peter Anvin
    Cc: Dave Chinner
    Cc: Dave Jones
    Cc: Jens Axboe
    Cc: Andrew Morton
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Mel Gorman
    Cc: Rik van Riel
    Cc: Johannes Weiner
    Cc: Hugh Dickins
    Cc: Rusty Russell
    Cc: Michael S Tsirkin
    Cc: Dave Hansen
    Cc: Steven Rostedt
    Cc: PJ Waskiewicz
    Signed-off-by: Linus Torvalds

    Minchan Kim
     

30 May, 2014

2 commits

  • Pull ARM fixes from Russell King:
    "The usual random collection of relatively small ARM fixes"

    * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
    ARM: 8063/1: bL_switcher: fix individual online status reporting of removed CPUs
    ARM: 8064/1: fix v7-M signal return
    ARM: 8057/1: amba: Add Qualcomm vendor ID.
    ARM: 8052/1: unwind: Fix handling of "Pop r4-r[4+nnn],r14" opcode
    ARM: 8051/1: put_user: fix possible data corruption in put_user
    ARM: 8048/1: fix v7-M setup stack location

    Linus Torvalds
     
  • Pull arm64 fix from Will Deacon:
    "Fix CoW regression for transparent hugepages by routing set_pmd_at to
    set_pte_at, which correctly handles PTE_WRITE and will mark the
    resulting table entry as read-only where appropriate"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: mm: fix pmd_write CoW brokenness

    Linus Torvalds
     

29 May, 2014

1 commit

  • Commit 9c7e535fcc17 ("arm64: mm: Route pmd thp functions through pte
    equivalents") changed the pmd manipulator and accessor functions to
    convert the target pmd to a pte, process it with the pte functions, then
    convert it back. Along the way, we gained support for PTE_WRITE, however
    this is completely ignored by set_pmd_at, and so we fail to set the
    PMD_SECT_RDONLY for PMDs, resulting in all sorts of lovely failures (like
    CoW not working).

    Partially reverting the offending commit (by making use of
    PMD_SECT_RDONLY explicitly for pmd_{write,wrprotect,mkwrite} functions)
    leads to further issues because pmd_write can then return potentially
    incorrect values for page table entries marked as RDONLY, leading to
    BUG_ON(pmd_write(entry)) tripping under some THP workloads.

    This patch fixes the issue by routing set_pmd_at through set_pte_at,
    which correctly takes the PTE_WRITE flag into account. Given that
    THP mappings are always anonymous, the additional cache-flushing code
    in __sync_icache_dcache won't impose any significant overhead as the
    flush will be skipped.

    Cc: Catalin Marinas
    Acked-by: Steve Capper
    Tested-by: Marc Zyngier
    Signed-off-by: Will Deacon

    Will Deacon
     

28 May, 2014

10 commits

  • The content of /sys/devices/system/cpu/cpu*/online is still 1 for those
    CPUs that the switcher has removed even though the global state in
    /sys/devices/system/cpu/online is updated correctly.

    It turns out that commit 0902a9044f ("Driver core: Use generic
    offline/online for CPU offline/online") has changed the way those files
    retrieve their content by relying on on the generic attribute handling
    code. The switcher, by calling cpu_down() directly, bypasses this
    handling and the attribute value doesn't get updated.

    Fix this by calling device_offline()/device_online() instead.

    Signed-off-by: Nicolas Pitre
    Signed-off-by: Russell King

    Nicolas Pitre
     
  • Pull kvm fixes from Paolo Bonzini:
    "Small fixes for x86, slightly larger fixes for PPC, and a forgotten
    s390 patch. The PPC fixes are important because they fix breakage
    that is new in 3.15"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: s390: announce irqfd capability
    KVM: x86: disable master clock if TSC is reset during suspend
    KVM: vmx: disable APIC virtualization in nested guests
    KVM guest: Make pv trampoline code executable
    KVM: PPC: Book3S: ifdef on CONFIG_KVM_BOOK3S_32_HANDLER for 32bit
    KVM: PPC: Book3S HV: Add missing code for transaction reclaim on guest exit
    KVM: PPC: Book3S: HV: make _PAGE_NUMA take effect

    Linus Torvalds
     
  • Pull two powerpc fixes from Ben Herrenschmidt:
    "Here's a pair of powerpc fixes for 3.15 which are also going to
    stable.

    One's a fix for building with newer binutils (the problem currently
    only affects the BookE kernels but the affected macro might come back
    into use on BookS platforms at any time). Unfortunately, the binutils
    maintainer did a backward incompatible change to a construct that we
    use so we have to add Makefile check.

    The other one is a fix for CPUs getting stuck in kexec when running
    single threaded. Since we routinely use kexec on power (including in
    our newer bootloaders), I deemed that important enough"

    * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc, kexec: Fix "Processor X is stuck" issue during kexec from ST mode
    powerpc: Fix 64 bit builds with binutils 2.24

    Linus Torvalds
     
  • Fix uasm warning, which triggered because of workaround for R4600 V2 CPUs.

    Signed-off-by: Thomas Bogendoerfer
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/6716/
    Signed-off-by: Ralf Baechle

    Thomas Bogendoerfer
     
  • ptrace_{get,set}_watch_regs access current_cpu_data to get the watch
    register count/masks, which calls smp_processor_id(). However they are
    run in preemptible context and therefore trigger warnings like so:

    [ 6340.092000] BUG: using smp_processor_id() in preemptible [00000000] code: gdb/367
    [ 6340.092000] caller is ptrace_get_watch_regs+0x44/0x220

    Since the watch register count/masks should be the same across all
    CPUs, use boot_cpu_data instead. Note that this may need to change in
    future should a heterogenous system be supported where the count/masks
    are not the same across all CPUs (the current code is also incorrect
    for this scenario - current_cpu_data here would not necessarily be
    correct for the CPU that the target task will execute on).

    Signed-off-by: Alex Smith
    Reviewed-by: Paul Burton
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/6879/
    Signed-off-by: Ralf Baechle

    Alex Smith
     
  • The lock is taken in the raw irq path and therefore a rawlock should be
    used instead of a normal spinlock.
    While here I drop the export symbol on that variable since there are no
    other users.

    Signed-off-by: Sebastian Andrzej Siewior
    Cc: linux-mips@linux-mips.org
    Cc: Hua Yan
    Cc: Huacai Chen
    Cc: Alex Smith
    Cc: Hongliang Tao
    Cc: Wu Zhangjin
    Patchwork: https://patchwork.linux-mips.org/patch/6936/
    Signed-off-by: Ralf Baechle

    Sebastian Andrzej Siewior
     
  • A kernel build with binutils 2.24 is going to emit warnings like

    CC kernel/sys.o
    {standard input}: Assembler messages:
    {standard input}:701: Warning: the 32-bit MIPS architecture does not support the `mdmx' extension
    {standard input}:701: Warning: the `mdmx' extension requires 64-bit FPRs
    {standard input}:701: Warning: the `mips3d' extension requires MIPS32 revision 2 or greater
    {standard input}:701: Warning: the `mips3d' extension requires 64-bit FPRs

    for almost every file. This is caused by changes to gas' interpretation
    of .set semantics. Fixed by explicitly disabling MIPS3D and MDMX for
    Sibyte builds.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • If we try to perform a kexec when the machine is in ST (Single-Threaded) mode
    (ppc64_cpu --smt=off), the kexec operation doesn't succeed properly, and we
    get the following messages during boot:

    [ 0.089866] POWER8 performance monitor hardware support registered
    [ 0.089985] power8-pmu: PMAO restore workaround active.
    [ 5.095419] Processor 1 is stuck.
    [ 10.097933] Processor 2 is stuck.
    [ 15.100480] Processor 3 is stuck.
    [ 20.102982] Processor 4 is stuck.
    [ 25.105489] Processor 5 is stuck.
    [ 30.108005] Processor 6 is stuck.
    [ 35.110518] Processor 7 is stuck.
    [ 40.113369] Processor 9 is stuck.
    [ 45.115879] Processor 10 is stuck.
    [ 50.118389] Processor 11 is stuck.
    [ 55.120904] Processor 12 is stuck.
    [ 60.123425] Processor 13 is stuck.
    [ 65.125970] Processor 14 is stuck.
    [ 70.128495] Processor 15 is stuck.
    [ 75.131316] Processor 17 is stuck.

    Note that only the sibling threads are stuck, while the primary threads (0, 8,
    16 etc) boot just fine. Looking closer at the previous step of kexec, we observe
    that kexec tries to wakeup (bring online) the sibling threads of all the cores,
    before performing kexec:

    [ 9464.131231] Starting new kernel
    [ 9464.148507] kexec: Waking offline cpu 1.
    [ 9464.148552] kexec: Waking offline cpu 2.
    [ 9464.148600] kexec: Waking offline cpu 3.
    [ 9464.148636] kexec: Waking offline cpu 4.
    [ 9464.148671] kexec: Waking offline cpu 5.
    [ 9464.148708] kexec: Waking offline cpu 6.
    [ 9464.148743] kexec: Waking offline cpu 7.
    [ 9464.148779] kexec: Waking offline cpu 9.
    [ 9464.148815] kexec: Waking offline cpu 10.
    [ 9464.148851] kexec: Waking offline cpu 11.
    [ 9464.148887] kexec: Waking offline cpu 12.
    [ 9464.148922] kexec: Waking offline cpu 13.
    [ 9464.148958] kexec: Waking offline cpu 14.
    [ 9464.148994] kexec: Waking offline cpu 15.
    [ 9464.149030] kexec: Waking offline cpu 17.

    Instrumenting this piece of code revealed that the cpu_up() operation actually
    fails with -EBUSY. Thus, only the primary threads of all the cores are online
    during kexec, and hence this is a sure-shot receipe for disaster, as explained
    in commit e8e5c2155b (powerpc/kexec: Fix orphaned offline CPUs across kexec),
    as well as in the comment above wake_offline_cpus().

    It turns out that cpu_up() was returning -EBUSY because the variable
    'cpu_hotplug_disabled' was set to 1; and this disabling of CPU hotplug was done
    by migrate_to_reboot_cpu() inside kernel_kexec().

    Now, migrate_to_reboot_cpu() was originally written with the assumption that
    any further code will not need to perform CPU hotplug, since we are anyway in
    the reboot path. However, kexec is clearly not such a case, since we depend on
    onlining CPUs, atleast on powerpc.

    So re-enable cpu-hotplug after returning from migrate_to_reboot_cpu() in the
    kexec path, to fix this regression in kexec on powerpc.

    Also, wrap the cpu_up() in powerpc kexec code within a WARN_ON(), so that we
    can catch such issues more easily in the future.

    Fixes: c97102ba963 (kexec: migrate to reboot cpu)
    Cc: stable@vger.kernel.org
    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Benjamin Herrenschmidt

    Srivatsa S. Bhat
     
  • With binutils 2.24, various 64 bit builds fail with relocation errors
    such as

    arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
    (.text+0x165ee): relocation truncated to fit: R_PPC64_ADDR16_HI
    against symbol `interrupt_base_book3e' defined in .text section
    in arch/powerpc/kernel/built-in.o
    arch/powerpc/kernel/built-in.o: In function `exc_debug_crit_book3e':
    (.text+0x16602): relocation truncated to fit: R_PPC64_ADDR16_HI
    against symbol `interrupt_end_book3e' defined in .text section
    in arch/powerpc/kernel/built-in.o

    The assembler maintainer says:

    I changed the ABI, something that had to be done but unfortunately
    happens to break the booke kernel code. When building up a 64-bit
    value with lis, ori, shl, oris, ori or similar sequences, you now
    should use @high and @higha in place of @h and @ha. @h and @ha
    (and their associated relocs R_PPC64_ADDR16_HI and R_PPC64_ADDR16_HA)
    now report overflow if the value is out of 32-bit signed range.
    ie. @h and @ha assume you're building a 32-bit value. This is needed
    to report out-of-range -mcmodel=medium toc pointer offsets in @toc@h
    and @toc@ha expressions, and for consistency I did the same for all
    other @h and @ha relocs.

    Replacing @h with @high in one strategic location fixes the relocation
    errors. This has to be done conditionally since the assembler either
    supports @h or @high but not both.

    Cc:
    Signed-off-by: Guenter Roeck
    Signed-off-by: Benjamin Herrenschmidt

    Guenter Roeck
     
  • Pull ARM SoC fixes from Olof Johansson:
    "A slightly larger set of fixes than we'd like at this point in the
    release. Hopefully our very last batch before 3.15:

    OMAP:
    - Fix boot regression with CPU_IDLE enabled
    - Fixes for audio playback on OMAP5
    - Clock rate setting fix for OMAP3
    - Misc idle/PM fixes
    Exynos:
    - Removal of a couple of power domains to work around issues with
    access when they are powered down
    - Enabling missing highspeed-i2c driver to make MMC regulators work
    - Secondary CPU spin-up fix for 4212
    - Remove MDMA1 engine to avoid conflicts on secure mode platforms
    - A few other DT fixes
    Marvell:
    - PCI-e fixes for clocks and resource allocation

    plus a few other smaller fixes, add a MAINTAINERS entry for reset
    drivers, etc"

    * tag 'fixes-for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (21 commits)
    MAINTAINERS: Add reset controller framework entry
    ARM: trusted_foundations: fix compile error on non-SMP
    ARM: at91: sam9260: fix compilation issues
    ARM: mvebu: fix definitions of PCIe interfaces on Armada 38x
    ARM: imx: fix error handling in ipu device registration
    ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled
    ARM: dts: Keep LDO4 always ON for exynos5250-arndale board
    ARM: dts: Fix SPI interrupt numbers for exynos5420
    ARM: dts: fix incorrect ak8975 compatible for exynos4412-trats2 board
    ARM: OMAP2+: Fix DMA hang after off-idle
    ARM: OMAP2+: nand: Fix NAND on OMAP2 and OMAP3 boards
    ARM: dts: Remove g2d_pd node for exynos5420
    ARM: dts: Remove mau_pd node for exynos5420
    ARM: exynos_defconfig: enable HS-I2C to fix for mmc partition mount
    ARM: dts: disable MDMA1 node for exynos5420
    ARM: EXYNOS: fix the secondary CPU boot of exynos4212
    ARM: omap5: hwmod_data: Correct IDLEMODE for McPDM
    ARM: mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled
    ARM: mvebu: mvebu-soc-id: add missing clk_put() call
    ARM: at91/dt: sam9260: correct external trigger value
    ...

    Linus Torvalds
     

26 May, 2014

5 commits

  • The parent field of the 'rc32434_res_pci_mem1' resource points to
    the resource itself which is obviously wrong. Due to the broken
    initialitazion, the PCI devices on the Mikrotik RB532 boards are
    not working since commit 22283178 (MIPS: avoid possible resource
    conflict in register_pci_controller).

    Remove the field initialization to fix the issue.

    Signed-off-by: Gabor Juhos
    Reported-by: Waldemar Brodkorb
    Cc: linux-mips@linux-mips.org
    Cc: Gabor Juhos
    Patchwork: https://patchwork.linux-mips.org/patch/6940/
    Signed-off-by: Ralf Baechle

    Gabor Juhos
     
  • According to the ARM ARM, the behaviour is UNPREDICTABLE if the PC read
    from the exception return stack is not half word aligned. See the
    pseudo code for ExceptionReturn() and PopStack().

    The signal handler's address has the bit 0 set, and setup_return()
    directly writes this to regs->ARM_pc. Current hardware happens to
    discard this bit, but QEMU's emulation doesn't and this makes processes
    crash. Mask out bit 0 before the exception return in order to get
    predictable behaviour.

    Fixes: 19c4d593f0b4 ("ARM: ARMv7-M: Add support for exception handling")

    Cc: stable@kernel.org
    Acked-by: Uwe Kleine-König
    Signed-off-by: Rabin Vincent
    Signed-off-by: Russell King

    Rabin Vincent
     
  • The arm EABI states that unwind opcode 10100nnn means pop register r4-4[4+nnn],aditionally there is a similar unwind opcode: 10101nnn which means the same thing plus popping r14. Those two cases are handled by the unwind_exec_pop_r4_to_rN function which checks whether the 4th bit is set and does r14 popping.

    However, up until now it has been checking whether the 8th bit was set (mask & 0x80) instead of the 4th (mask & 0x8), a simple to make typo but this meant that we were always popping r14 even if we had the former opcode.

    This patch changes the mask so that the 2 unwind opcodes are being handled correctly.

    Signed-off-by: Nikolay Borisov
    Reviewed-by: Anurag Aggarwal
    Signed-off-by: Russell King

    Nikolay Borisov
     
  • According to arm procedure call standart r2 register is call-cloberred.
    So after the result of x expression was put into r2 any following
    function call in p may overwrite r2. To fix this, the result of p
    expression must be saved to the temporary variable before the
    assigment x expression to __r2.

    Signed-off-by: Andrey Ryabinin
    Reviewed-by: Nicolas Pitre
    Cc: stable@vger.kernel.org
    Signed-off-by: Russell King

    Andrey Ryabinin
     
  • __v7m_setup_stack currently sits in the .proc.info.init section, and
    thus creates a bogus proc info entry (which by the way matches any
    unknown CPU IDs, due to the entry's mask being 0). Move it out of
    there.

    Acked-by: Uwe Kleine-König
    Signed-off-by: Rabin Vincent
    Signed-off-by: Russell King

    Rabin Vincent
     

25 May, 2014

3 commits

  • If the 'memsize' environmental variable is not set by the bootloader
    the 'memsize' variable is not initialized, leading to potential memory
    problems. This patch fixes the problem by setting the initial
    value to '0' to force the kernel to set a good default memory size.

    Cc: # v3.15+
    Reported-by: Matheus Almeida
    Signed-off-by: Markos Chandras
    Cc: linux-mips@linux-mips.org
    Cc: Markos Chandras
    Cc: stable@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/6984/
    Signed-off-by: Ralf Baechle

    Markos Chandras
     
  • Introduced by the following two commits:
    75b5b5e0a262790fa11043fe45700499c7e3d818
    "MIPS: Add support for FTLBs"
    6de20451857ed14a4eecc28d08f6de5925d1cf96
    "MIPS: Add printing of ES bit for Imgtec cores when cache error occurs"

    Signed-off-by: Markos Chandras
    Reported-by: Matheus Almeida
    Cc: linux-mips@linux-mips.org
    Cc: Markos Chandras
    Cc: stable@vger.kernel.org # v3.14+
    Patchwork: https://patchwork.linux-mips.org/patch/6980/
    Signed-off-by: Ralf Baechle

    Markos Chandras
     
  • Originally, __NR_O32_Linux_syscalls, __NR_N32_Linux_syscalls and
    __NR_64_Linux_syscalls have the same values as __NR_Linux_syscalls in
    corresponding ABIs. But after commit 367f0b50e502d (MIPS: Wire up
    renameat2 syscall) they are not the same. I think this is incorrect and
    need a fix.

    Signed-off-by: Huacai Chen
    Cc: John Crispin
    Cc: Steven J. Hill
    Cc: Aurelien Jarno
    Cc: linux-mips@linux-mips.org
    Cc: Fuxin Zhang
    Cc: Zhangjin Wu
    Patchwork: https://patchwork.linux-mips.org/patch/6987/
    Signed-off-by: Ralf Baechle

    Huacai Chen
     

24 May, 2014

8 commits

  • Pull sparc fixes from David Miller:
    "A small bunch of bug fixes, in particular:

    1) On older cpus we need a different chunk of virtual address space
    to map the huge page TSB.

    2) Missing memory barrier in Niagara2 memcpy.

    3) trinity showed some places where fault validation was
    unnecessarily loud on sparc64

    4) Some sysfs printf's need a type adjustment, from Toralf Förster"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc64: fix format string mismatch in arch/sparc/kernel/sysfs.c
    sparc64: Add membar to Niagara2 memcpy code.
    sparc64: Fix huge TSB mapping on pre-UltraSPARC-III cpus.
    sparc64: Don't bark so loudly about 32-bit tasks generating 64-bit fault addresses.

    Linus Torvalds
     
  • Pull networking fixes from David Miller:
    "It looks like a sizeble collection but this is nearly 3 weeks of bug
    fixing while you were away.

    1) Fix crashes over IPSEC tunnels with NAT, the latter can reroute
    the packet through a non-IPSEC protected path and the code has to
    be able to handle SKBs attached to routes lacking an attached xfrm
    state. From Steffen Klassert.

    2) Fix OOPSs in ipv4 and ipv6 ipsec layers for unsupported
    sub-protocols, also from Steffen Klassert.

    3) Set local_df on fragmented netfilter skbs otherwise we won't be
    able to forward successfully, from Florian Westphal.

    4) cdc_mbim ipv6 neighbour code does __vlan_find_dev_deep without
    holding RCU lock, from Bjorn Mork.

    5) local_df test in ip_may_fragment is inverted, from Florian
    Westphal.

    6) jme driver doesn't check for DMA mapping failures, from Neil
    Horman.

    7) qlogic driver doesn't calculate number of TX queues properly, from
    Shahed Shaikh.

    8) fib_info_cnt can drift irreversibly positive if we fail to
    allocate the fi->fib_metrics array, from Sergey Popovich.

    9) Fix use after free in ip6_route_me_harder(), also from Sergey
    Popovich.

    10) When SYSCTL is disabled, we don't handle local_port_range and
    ping_group_range defaults properly at all, from Cong Wang.

    11) Unaccelerated VLAN tagged frames improperly handled by cdc_mbim
    driver, fix from Bjorn Mork.

    12) cassini driver needs nested lock annotations for TX locking, from
    Emil Goode.

    13) On init error ipv6 VTI driver can unregister pernet ops twice,
    oops. Fix from Mahtias Krause.

    14) If macvlan device is down, don't propagate IFF_ALLMULTI changes,
    from Peter Christensen.

    15) Missing NULL pointer check while parsing netlink config options in
    ip6_tnl_validate(). From Susant Sahani.

    16) Fix handling of neighbour entries during ipv6 router reachability
    probing, from Duan Jiong.

    17) x86 and s390 JIT address randomization has some address
    calculation bugs leading to crashes, from Alexei Starovoitov and
    Heiko Carstens.

    18) Clear up those uglies with nop patching and net_get_random_once(),
    from Hannes Frederic Sowa.

    19) Option length miscalculated in ip6_append_data(), fix also from
    Hannes Frederic Sowa.

    20) A while ago we fixed a race during device unregistry when a
    namespace went down, turns out there is a second place that needs
    similar protection. From Cong Wang.

    21) In the new Altera TSE driver multicast filtering isn't working,
    disable it and just use promisc mode until the cause is found.
    From Vince Bridgers.

    22) When we disable router enabling in ipv6 we have to flush the
    cached routes explicitly, from Duan Jiong.

    23) NBMA tunnels should not cache routes on the tunnel object because
    the key is variable, from Timo Teräs.

    24) With stacked devices GRO information in skb->cb[] can be not setup
    properly, make sure it is in all code paths. From Eric Dumazet.

    25) Really fix stacked vlan locking, multiple levels of nesting with
    intervening non-vlan devices are possible. From Vlad Yasevich.

    26) Fallback ipip tunnel device's mtu is not setup properly, from
    Steffen Klassert.

    27) The packet scheduler's tcindex filter can crash because we
    structure copy objects with list_head's inside, oops. From Cong
    Wang.

    28) Fix CHECKSUM_COMPLETE handling for ipv6 GRE tunnels, from Eric
    Dumazet.

    29) In some configurations 'itag' in __mkroute_input() can end up
    being used uninitialized because of how fib_validate_source()
    works. Fix it by explitly initializing itag to zero like all the
    other fib_validate_source() callers do, from Li RongQing"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
    batman: fix a bogus warning from batadv_is_on_batman_iface()
    ipv4: initialise the itag variable in __mkroute_input
    bonding: Send ALB learning packets using the right source
    bonding: Don't assume 802.1Q when sending alb learning packets.
    net: doc: Update references to skb->rxhash
    stmmac: Remove unbalanced clk_disable call
    ipv6: gro: fix CHECKSUM_COMPLETE support
    net_sched: fix an oops in tcindex filter
    can: peak_pci: prevent use after free at netdev removal
    ip_tunnel: Initialize the fallback device properly
    vlan: Fix build error wth vlan_get_encap_level()
    can: c_can: remove obsolete STRICT_FRAME_ORDERING Kconfig option
    MAINTAINERS: Pravin Shelar is Open vSwitch maintainer.
    bnx2x: Convert return 0 to return rc
    bonding: Fix alb mode to only use first level vlans.
    bonding: Fix stacked device detection in arp monitoring
    macvlan: Fix lockdep warnings with stacked macvlan devices
    vlan: Fix lockdep warning with stacked vlan devices.
    net: Allow for more then a single subclass for netif_addr_lock
    net: Find the nesting level of a given device by type.
    ...

    Linus Torvalds
     
  • …it/kgene/linux-samsung into fixes

    Samsung-fixes-2 for 3.15
    - keep LD04 always on for exynos5250-arndale
    - fix spi interrupt numbers for exynos5420
    - fix ak8975 compatible for exynos4412-trats2

    * tag 'samsung-fixes-2nd-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    ARM: dts: Keep LDO4 always ON for exynos5250-arndale board
    ARM: dts: Fix SPI interrupt numbers for exynos5420
    ARM: dts: fix incorrect ak8975 compatible for exynos4412-trats2 board

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • The setup_max_cpus variable is only defined if CONFIG_SMP is set. Add
    a preprocessor condition to avoid the following compilation error if
    CONFIG_SMP is not set:

    arch/arm/include/asm/trusted_foundations.h: In function 'register_trusted_foundations':
    arch/arm/include/asm/trusted_foundations.h:57:2: error: 'setup_max_cpus' undeclared (first use in this function)

    Signed-off-by: Alexandre Courbot
    Reported-by: Russell King
    Acked-by: Stephen Warren
    Signed-off-by: Arnd Bergmann

    Alexandre Courbot
     
  • Pull perf fixes from Ingo Molnar:
    "The biggest changes are fixes for races that kept triggering Trinity
    crashes, plus liblockdep build fixes and smaller misc fixes.

    The liblockdep bits in perf/urgent are a pull mistake - they should
    have been in locking/urgent - but by the time I noticed other commits
    were added and testing was done :-/ Sorry about that"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf: Fix a race between ring_buffer_detach() and ring_buffer_attach()
    perf: Prevent false warning in perf_swevent_add
    perf: Limit perf_event_attr::sample_period to 63 bits
    tools/liblockdep: Remove all build files when doing make clean
    tools/liblockdep: Build liblockdep from tools/Makefile
    perf/x86/intel: Fix Silvermont's event constraints
    perf: Fix perf_event_init_context()
    perf: Fix race in removing an event

    Linus Torvalds
     
  • The 'renameat2()' system call was incorrectly added as a ENTRY_COMP() in
    the parisc system call table by commit 18e480aa07f78 ("parisc: add
    renameat2 syscall"). That causes a link-time error due to there not
    being any compat version of that system call:

    arch/parisc/kernel/built-in.o: In function `sys_call_table':
    (.rodata+0xad0): undefined reference to `compat_sys_renameat2'
    make: *** [vmlinux] Error 1

    Easily fixed by marking the system call as being the same for compat as
    for native by using ENTRY_SAME() instead of ENTRY_COMP().

    Reported-by: Guenter Roeck
    Acked-by: Miklos Szeredi
    Acked-by: Helge Deller
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Second 3.15 fixes for AT91
    - two fixes concerning iio ADC triggers for at91sam9260 and at91sam9g20
    one for the "device" file, the other for the DT.

    * tag 'at91-fixes2' of git://github.com/at91linux/linux-at91:
    ARM: at91: sam9260: fix compilation issues
    ARM: at91/dt: sam9260: correct external trigger value

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • mvebu fixes for v3.15 (incremental #2)

    - Armada 38x
    - fix PCIe dt nodes for handling more interfaces

    - mvebu
    - mvebu-soc-id: fix clock handling and PCIe interface disabling.

    * tag 'mvebu-fixes-3.15-2' of git://git.infradead.org/linux-mvebu:
    ARM: mvebu: fix definitions of PCIe interfaces on Armada 38x
    ARM: mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled
    ARM: mvebu: mvebu-soc-id: add missing clk_put() call

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

23 May, 2014

2 commits

  • Two issues:

    o For beql_op, beql_op, bne_op, bnel_op, blez_op, blezl_op, bgtz_op and
    bgtzl_op the wrong field was being checked for the instruction opcode.
    o For blez_op / blezl_op and bgtz_op / bgtzl_op the test was testing
    for the wrong opcode.

    This bug got introduced by d8d4e3ae0b5c179c0bfd3f0af5b352d13bea9cfa [MIPS
    Kprobes: Refactor branch emulation].

    Signed-off-by: Ralf Baechle
    Acked-by: Leonid Yegoshin
    Acked-by: Victor Kamensky

    Ralf Baechle
     
  • Use the hexadecimal values for the triggers to match what is done for the device
    tree. This also fixes compilation issues as the defines have been moved
    elsewhere.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Nicolas Ferre

    Alexandre Belloni
     

22 May, 2014

4 commits

  • Jason Cooper
     
  • Due a copy/paste error, the 'reg' values for the third PCIe interface
    on Armada 380, and the third and fourth PCIe interfaces on Armada 385
    are wrong: they are equal to the one of the second PCIe interface.

    This patch fixes this by using the appropriate 'reg' values for those
    PCIe interfaces.

    Without this fix, the third and fourth PCIe interfaces are unusable on
    those platforms.

    Reported-by: Nadav Haklai
    Signed-off-by: Thomas Petazzoni
    Link: https://lkml.kernel.org/r/1400597008-4148-1-git-send-email-thomas.petazzoni@free-electrons.com
    Fixes: 0d3d96ab0059 ("ARM: mvebu: add Device Tree description of the Armada 380/385 SoCs")
    Signed-off-by: Jason Cooper

    Thomas Petazzoni
     
  • …/kernel/git/tmlind/linux-omap into fixes

    Pull "omap fixes for v3.15-rc cycle" from Tony Lindgren:

    Regression fixes for omaps for NAND, DMA, cpu_idle and audio.
    Also a minor one line fix for audio clock on 54xx.

    * tag 'omap-for-v3.15/fixes-v3-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled
    ARM: OMAP2+: Fix DMA hang after off-idle
    ARM: OMAP2+: nand: Fix NAND on OMAP2 and OMAP3 boards
    ARM: omap5: hwmod_data: Correct IDLEMODE for McPDM
    ARM: OMAP3: clock: Back-propagate rate change from cam_mclk to dpll4_m5 on all OMAP3 platforms

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • If we fail to allocate struct platform_device pdev we
    dereference it after the goto label err.

    This bug was found using coccinelle.

    Fixes: afa77ef (ARM: mx3: dynamically allocate "ipu-core" devices)
    Signed-off-by: Emil Goode
    Acked-by: Uwe Kleine-König
    Cc:
    Signed-off-by: Shawn Guo
    Signed-off-by: Olof Johansson

    Emil Goode