15 Jul, 2013

1 commit

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    Note that some harmless section mismatch warnings may result, since
    notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
    are flagged as __cpuinit -- so if we remove the __cpuinit from
    arch specific callers, we will also get section mismatch warnings.
    As an intermediate step, we intend to turn the linux/init.h cpuinit
    content into no-ops as early as possible, since that will get rid
    of these warnings. In any case, they are temporary and harmless.

    This removes all the arch/frv uses of the __cpuinit macros from
    all C files. Currently frv does not have any __CPUINIT used in
    assembly files.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: David Howells
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

05 Jul, 2013

1 commit

  • Pull trivial tree updates from Jiri Kosina:
    "The usual stuff from trivial tree"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)
    treewide: relase -> release
    Documentation/cgroups/memory.txt: fix stat file documentation
    sysctl/net.txt: delete reference to obsolete 2.4.x kernel
    spinlock_api_smp.h: fix preprocessor comments
    treewide: Fix typo in printk
    doc: device tree: clarify stuff in usage-model.txt.
    open firmware: "/aliasas" -> "/aliases"
    md: bcache: Fixed a typo with the word 'arithmetic'
    irq/generic-chip: fix a few kernel-doc entries
    frv: Convert use of typedef ctl_table to struct ctl_table
    sgi: xpc: Convert use of typedef ctl_table to struct ctl_table
    doc: clk: Fix incorrect wording
    Documentation/arm/IXP4xx fix a typo
    Documentation/networking/ieee802154 fix a typo
    Documentation/DocBook/media/v4l fix a typo
    Documentation/video4linux/si476x.txt fix a typo
    Documentation/virtual/kvm/api.txt fix a typo
    Documentation/early-userspace/README fix a typo
    Documentation/video4linux/soc-camera.txt fix a typo
    lguest: fix CONFIG_PAE -> CONFIG_x86_PAE in comment
    ...

    Linus Torvalds
     

04 Jul, 2013

4 commits

  • Merge first patch-bomb from Andrew Morton:
    - various misc bits
    - I'm been patchmonkeying ocfs2 for a while, as Joel and Mark have been
    distracted. There has been quite a bit of activity.
    - About half the MM queue
    - Some backlight bits
    - Various lib/ updates
    - checkpatch updates
    - zillions more little rtc patches
    - ptrace
    - signals
    - exec
    - procfs
    - rapidio
    - nbd
    - aoe
    - pps
    - memstick
    - tools/testing/selftests updates

    * emailed patches from Andrew Morton : (445 commits)
    tools/testing/selftests: don't assume the x bit is set on scripts
    selftests: add .gitignore for kcmp
    selftests: fix clean target in kcmp Makefile
    selftests: add .gitignore for vm
    selftests: add hugetlbfstest
    self-test: fix make clean
    selftests: exit 1 on failure
    kernel/resource.c: remove the unneeded assignment in function __find_resource
    aio: fix wrong comment in aio_complete()
    drivers/w1/slaves/w1_ds2408.c: add magic sequence to disable P0 test mode
    drivers/memstick/host/r592.c: convert to module_pci_driver
    drivers/memstick/host/jmb38x_ms: convert to module_pci_driver
    pps-gpio: add device-tree binding and support
    drivers/pps/clients/pps-gpio.c: convert to module_platform_driver
    drivers/pps/clients/pps-gpio.c: convert to devm_* helpers
    drivers/parport/share.c: use kzalloc
    Documentation/accounting/getdelays.c: avoid strncpy in accounting tool
    aoe: update internal version number to v83
    aoe: update copyright date
    aoe: perform I/O completions in parallel
    ...

    Linus Torvalds
     
  • 'cmdline' is a NUL terminated string, when its length < 4, memcmp()
    will cause memory access out of boundary.

    So use strncmp() instead of memcmp().

    Signed-off-by: Chen Gang
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chen Gang
     
  • Since die_if_kernel() is an extern common used function, better always
    check the buffer length to avoid memory overflow by a long 'str'.

    Signed-off-by: Chen Gang
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chen Gang
     
  • Prepare for removing num_physpages and simplify mem_init().

    Signed-off-by: Jiang Liu
    Cc: David Howells
    Cc: Andi Kleen
    Cc: Geert Uytterhoeven
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiang Liu
     

16 Jun, 2013

1 commit


14 Jun, 2013

1 commit


01 May, 2013

2 commits

  • show_regs() is inherently arch-dependent but it does make sense to print
    generic debug information and some archs already do albeit in slightly
    different forms. This patch introduces a generic function to print debug
    information from show_regs() so that different archs print out the same
    information and it's much easier to modify what's printed.

    show_regs_print_info() prints out the same debug info as dump_stack()
    does plus task and thread_info pointers.

    * Archs which didn't print debug info now do.

    alpha, arc, blackfin, c6x, cris, frv, h8300, hexagon, ia64, m32r,
    metag, microblaze, mn10300, openrisc, parisc, score, sh64, sparc,
    um, xtensa

    * Already prints debug info. Replaced with show_regs_print_info().
    The printed information is superset of what used to be there.

    arm, arm64, avr32, mips, powerpc, sh32, tile, unicore32, x86

    * s390 is special in that it used to print arch-specific information
    along with generic debug info. Heiko and Martin think that the
    arch-specific extra isn't worth keeping s390 specfic implementation.
    Converted to use the generic version.

    Note that now all archs print the debug info before actual register
    dumps.

    An example BUG() dump follows.

    kernel BUG at /work/os/work/kernel/workqueue.c:4841!
    invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #7
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    task: ffff88007c85e040 ti: ffff88007c860000 task.ti: ffff88007c860000
    RIP: 0010:[] [] init_workqueues+0x4/0x6
    RSP: 0000:ffff88007c861ec8 EFLAGS: 00010246
    RAX: ffff88007c861fd8 RBX: ffffffff824466a8 RCX: 0000000000000001
    RDX: 0000000000000046 RSI: 0000000000000001 RDI: ffffffff8234a07a
    RBP: ffff88007c861ec8 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff8234a07a
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    FS: 0000000000000000(0000) GS:ffff88007dc00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: ffff88015f7ff000 CR3: 00000000021f1000 CR4: 00000000000007f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Stack:
    ffff88007c861ef8 ffffffff81000312 ffffffff824466a8 ffff88007c85e650
    0000000000000003 0000000000000000 ffff88007c861f38 ffffffff82335e5d
    ffff88007c862080 ffffffff8223d8c0 ffff88007c862080 ffffffff81c47760
    Call Trace:
    [] do_one_initcall+0x122/0x170
    [] kernel_init_freeable+0x9b/0x1c8
    [] ? rest_init+0x140/0x140
    [] kernel_init+0xe/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] ? rest_init+0x140/0x140
    ...

    v2: Typo fix in x86-32.

    v3: CPU number dropped from show_regs_print_info() as
    dump_stack_print_info() has been updated to print it. s390
    specific implementation dropped as requested by s390 maintainers.

    Signed-off-by: Tejun Heo
    Acked-by: David S. Miller
    Acked-by: Jesper Nilsson
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Bjorn Helgaas
    Cc: Fengguang Wu
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Acked-by: Chris Metcalf [tile bits]
    Acked-by: Richard Kuo [hexagon bits]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • Both dump_stack() and show_stack() are currently implemented by each
    architecture. show_stack(NULL, NULL) dumps the backtrace for the
    current task as does dump_stack(). On some archs, dump_stack() prints
    extra information - pid, utsname and so on - in addition to the
    backtrace while the two are identical on other archs.

    The usages in arch-independent code of the two functions indicate
    show_stack(NULL, NULL) should print out bare backtrace while
    dump_stack() is used for debugging purposes when something went wrong,
    so it does make sense to print additional information on the task which
    triggered dump_stack().

    There's no reason to require archs to implement two separate but mostly
    identical functions. It leads to unnecessary subtle information.

    This patch expands the dummy fallback dump_stack() implementation in
    lib/dump_stack.c such that it prints out debug information (taken from
    x86) and invokes show_stack(NULL, NULL) and drops arch-specific
    dump_stack() implementations in all archs except blackfin. Blackfin's
    dump_stack() does something wonky that I don't understand.

    Debug information can be printed separately by calling
    dump_stack_print_info() so that arch-specific dump_stack()
    implementation can still emit the same debug information. This is used
    in blackfin.

    This patch brings the following behavior changes.

    * On some archs, an extra level in backtrace for show_stack() could be
    printed. This is because the top frame was determined in
    dump_stack() on those archs while generic dump_stack() can't do that
    reliably. It can be compensated by inlining dump_stack() but not
    sure whether that'd be necessary.

    * Most archs didn't use to print debug info on dump_stack(). They do
    now.

    An example WARN dump follows.

    WARNING: at kernel/workqueue.c:4841 init_workqueues+0x35/0x505()
    Hardware name: empty
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #9
    0000000000000009 ffff88007c861e08 ffffffff81c614dc ffff88007c861e48
    ffffffff8108f50f ffffffff82228240 0000000000000040 ffffffff8234a03c
    0000000000000000 0000000000000000 0000000000000000 ffff88007c861e58
    Call Trace:
    [] dump_stack+0x19/0x1b
    [] warn_slowpath_common+0x7f/0xc0
    [] warn_slowpath_null+0x1a/0x20
    [] init_workqueues+0x35/0x505
    ...

    v2: CPU number added to the generic debug info as requested by s390
    folks and dropped the s390 specific dump_stack(). This loses %ksp
    from the debug message which the maintainers think isn't important
    enough to keep the s390-specific dump_stack() implementation.

    dump_stack_print_info() is moved to kernel/printk.c from
    lib/dump_stack.c. Because linkage is per objecct file,
    dump_stack_print_info() living in the same lib file as generic
    dump_stack() means that archs which implement custom dump_stack()
    - at this point, only blackfin - can't use dump_stack_print_info()
    as that will bring in the generic version of dump_stack() too. v1
    The v1 patch broke build on blackfin due to this issue. The build
    breakage was reported by Fengguang Wu.

    Signed-off-by: Tejun Heo
    Acked-by: David S. Miller
    Acked-by: Vineet Gupta
    Acked-by: Jesper Nilsson
    Acked-by: Vineet Gupta
    Acked-by: Martin Schwidefsky [s390 bits]
    Cc: Heiko Carstens
    Cc: Mike Frysinger
    Cc: Fengguang Wu
    Cc: Bjorn Helgaas
    Cc: Sam Ravnborg
    Acked-by: Richard Kuo [hexagon bits]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

08 Apr, 2013

1 commit

  • Signed-off-by: Thomas Gleixner
    Cc: Linus Torvalds
    Cc: Rusty Russell
    Cc: Paul McKenney
    Cc: Peter Zijlstra
    Reviewed-by: Cc: Srivatsa S. Bhat
    Cc: Magnus Damm
    Cc: David Howells
    Link: http://lkml.kernel.org/r/20130321215234.217235264@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

04 Feb, 2013

3 commits


04 Jan, 2013

1 commit

  • This fixes up all of the smaller arches that had __dev* markings for
    their platform-specific drivers.

    CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    __devinitconst, and __devexit from these drivers.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Mike Frysinger
    Cc: Mikael Starvik
    Cc: Jesper Nilsson
    Cc: David Howells
    Cc: Hirokazu Takata
    Cc: Geert Uytterhoeven
    Cc: Michal Simek
    Cc: Koichi Yasutake
    Cc: Jonas Bonn
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Chen Liqin
    Cc: Lennox Wu
    Cc: Paul Mundt
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Bob Liu
    Cc: Srinivas Kandagatla
    Cc: Bjorn Helgaas
    Cc: Myron Stowe
    Cc: Thomas Gleixner
    Cc: Andrew Morton
    Cc: Andi Kleen
    Cc: Jesse Barnes
    Cc: Sebastian Andrzej Siewior
    Cc: Yinghai Lu
    Cc: Thierry Reding
    Cc: Greg Ungerer
    Cc: Grant Likely
    Cc: "Srivatsa S. Bhat"
    Cc: Mark Salter
    Cc: Yong Zhang
    Cc: Michael Holzheu
    Cc: Cornelia Huck
    Cc: Jan Glauber
    Cc: Wei Yongjun
    Cc: Nobuhiro Iwamatsu
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

18 Dec, 2012

2 commits


29 Nov, 2012

2 commits


03 Nov, 2012

2 commits


02 Nov, 2012

2 commits

  • The kernel_thread() changes for FRV don't work, and FRV fails to boot,
    starting with:

    commit 02ce496f152df87be081a64796498942c433a2fd
    Author: Al Viro
    Date: Tue Sep 18 22:18:51 2012 -0400
    Subject: frv: split ret_from_fork, simplify kernel_thread() a lot

    The problem is that the userspace registers are completely cleared when a
    kernel thread is created and all subsequent user threads are then copied from
    that. Unfortunately, however, the TBR and PSR registers are restored from the
    pt_regs and the values they should be set to are clobbered by the memset.

    Instead, copy across the old user registers as normal, and then merely alter
    GR8 and GR9 in it if we're going to execute a kernel thread.

    Signed-off-by: David Howells

    David Howells
     
  • Fix the preemption handling in FRV code where the PREEMPT_ACTIVE value is
    incorrectly loaded into the threadinfo flags rather than the threadinfo
    preemption count.

    Unfortunately, the code cannot be simply converted to use
    preempt_schedule_irq() as is because FRV uses virtual interrupt disablement to
    cut down on the cost of actually disabling interrupts and thus
    local_irq_enable() doesn't actually enable interrupts.

    Reported-by: Al Viro
    Signed-off-by: David Howells
    cc: Al Viro

    David Howells
     

17 Oct, 2012

3 commits

  • Add __pminitconst to fix the build, otherwise the following error can occur:

    arch/frv/kernel/setup.c:187:47: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
    arch/frv/kernel/setup.c:386:2: error: 'clock_cmodes' undeclared (first use in this function)
    arch/frv/kernel/setup.c:571:6: error: 'clock_cmodes' undeclared (first use in this function)
    make[2]: *** [arch/frv/kernel/setup.o] Error 1

    http://kisskb.ellerman.id.au/kisskb/buildresult/7344691/

    Reported-by: Geert Uytterhoeven
    Signed-off-by: Andi Kleen
    Signed-off-by: David Howells
    cc: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Fix an incorrect symbol in copy_thread():

    arch/frv/kernel/process.c: In function 'copy_thread':
    arch/frv/kernel/process.c:197: error: 'chilregs' undeclared (first use in this function)
    arch/frv/kernel/process.c:197: error: (Each undeclared identifier is reported only once
    arch/frv/kernel/process.c:197: error: for each function it appears in.)

    Reported-by: Geert Uytterhoeven
    Signed-off-by: David Howells
    Acked-by: Al Viro
    cc: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Fix VLIW packing constraint violation in entry.S:

    arch/frv/kernel/entry.S: Assembler messages:
    arch/frv/kernel/entry.S:871: Error: VLIW packing constraint violation

    When packing CALLL with OR, CALLL must go in the first slot. The
    instructions are executed simultaneously, so it doesn't matter which way
    round they're packed from that point of view.

    Signed-off-by: David Howells
    Acked-by: Al Viro
    Signed-off-by: Linus Torvalds

    David Howells
     

12 Oct, 2012

1 commit

  • Pull pile 2 of execve and kernel_thread unification work from Al Viro:
    "Stuff in there: kernel_thread/kernel_execve/sys_execve conversions for
    several more architectures plus assorted signal fixes and cleanups.

    There'll be more (in particular, real fixes for the alpha
    do_notify_resume() irq mess)..."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (43 commits)
    alpha: don't open-code trace_report_syscall_{enter,exit}
    Uninclude linux/freezer.h
    m32r: trim masks
    avr32: trim masks
    tile: don't bother with SIGTRAP in setup_frame
    microblaze: don't bother with SIGTRAP in setup_rt_frame()
    mn10300: don't bother with SIGTRAP in setup_frame()
    frv: no need to raise SIGTRAP in setup_frame()
    x86: get rid of duplicate code in case of CONFIG_VM86
    unicore32: remove pointless test
    h8300: trim _TIF_WORK_MASK
    parisc: decide whether to go to slow path (tracesys) based on thread flags
    parisc: don't bother looping in do_signal()
    parisc: fix double restarts
    bury the rest of TIF_IRET
    sanitize tsk_is_polling()
    bury _TIF_RESTORE_SIGMASK
    unicore32: unobfuscate _TIF_WORK_MASK
    mips: NOTIFY_RESUME is not needed in TIF masks
    mips: merge the identical "return from syscall" per-ABI code
    ...

    Conflicts:
    arch/arm/include/asm/thread_info.h

    Linus Torvalds
     

06 Oct, 2012

2 commits

  • Commit 6afe1a1fe8ff ("PM: Remove legacy PM") removed the initialization
    of retval, causing:

    arch/frv/kernel/pm.c: In function 'sysctl_pm_do_suspend':
    arch/frv/kernel/pm.c:165:5: warning: 'retval' may be used uninitialized in this function [-Wuninitialized]

    Remove the variable completely to fix this, and convert to a proper
    switch (...) { ... } construct to improve readability.

    Signed-off-by: Geert Uytterhoeven
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Signed-off-by: Andi Kleen
    Cc: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

01 Oct, 2012

6 commits


23 Sep, 2012

1 commit

  • In the old times, the whole idle task was considered
    as an RCU quiescent state. But as RCU became more and
    more successful overtime, some RCU read side critical
    section have been added even in the code of some
    architectures idle tasks, for tracing for example.

    So nowadays, rcu_idle_enter() and rcu_idle_exit() must
    be called by the architecture to tell RCU about the part
    in the idle loop that doesn't make use of rcu read side
    critical sections, typically the part that puts the CPU
    in low power mode.

    This is necessary for RCU to find the quiescent states in
    idle in order to complete grace periods.

    Add this missing pair of calls in the Frv's idle loop.

    Reported-by: Paul E. McKenney
    Signed-off-by: Frederic Weisbecker
    Cc: David Howells
    Cc: # 3.3+
    Acked-by: David Howells
    Reviewed-by: Josh Triplett

    Frederic Weisbecker
     

31 Jul, 2012

1 commit


02 Jun, 2012

3 commits