1. 01 5月, 2013 26 次提交
    • T
      x86: don't show trace beyond show_stack(NULL, NULL) · a77f2a4e
      Tejun Heo 提交于
      There are multiple ways a task can be dumped - explicit call to
      dump_stack(), triggering WARN() or BUG(), through sysrq-t and so on.
      Most of what gets printed is upto each architecture and the current
      state is not particularly pretty.  Different pieces of information are
      presented differently depending on which path the dump takes and which
      architecture it's running on.  This is messy for no good reason and
      makes it exceedingly difficult to add or modify debug information to
      task dumps.
      
      In all archs except for s390, there's nothing arch-specific about the
      printed debug information.  This patchset updates all those archs to use
      the same helpers to consistently print out the same debug information.
      
      An example WARN dump after this patchset.
      
       WARNING: at kernel/workqueue.c:4841 init_workqueues+0x35/0x505()
       Modules linked in:
       CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #3
       Hardware name: empty empty/S3992, BIOS 080011  10/26/2007
        0000000000000009 ffff88007c861e08 ffffffff81c614dc ffff88007c861e48
        ffffffff8108f500 ffffffff82228240 0000000000000040 ffffffff8234a08e
        0000000000000000 0000000000000000 0000000000000000 ffff88007c861e58
       Call Trace:
        [<ffffffff81c614dc>] dump_stack+0x19/0x1b
        [<ffffffff8108f500>] warn_slowpath_common+0x70/0xa0
        [<ffffffff8108f54a>] warn_slowpath_null+0x1a/0x20
        [<ffffffff8234a0c3>] init_workqueues+0x35/0x505
        ...
      
      And BUG dump.
      
       kernel BUG at 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:[<ffffffff8234a07e>]  [<ffffffff8234a07e>] 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:
        [<ffffffff81000312>] do_one_initcall+0x122/0x170
        [<ffffffff82335e5d>] kernel_init_freeable+0x9b/0x1c8
        [<ffffffff81c47760>] ? rest_init+0x140/0x140
        [<ffffffff81c4776e>] kernel_init+0xe/0xf0
        [<ffffffff81c6be9c>] ret_from_fork+0x7c/0xb0
        [<ffffffff81c47760>] ? rest_init+0x140/0x140
        ...
      
      This patchset contains the following seven patches.
      
       0001-x86-don-t-show-trace-beyond-show_stack-NULL-NULL.patch
       0002-sparc32-make-show_stack-acquire-fp-if-_ksp-is-not-sp.patch
       0003-dump_stack-consolidate-dump_stack-implementations-an.patch
       0004-dmi-morph-dmi_dump_ids-into-dmi_format_ids-which-for.patch
       0005-dump_stack-implement-arch-specific-hardware-descript.patch
       0006-dump_stack-unify-debug-information-printed-by-show_r.patch
       0007-arc-print-fatal-signals-reduce-duplicated-informatio.patch
      
      0001-0002 update stack dumping functions in x86 and sparc32 in
      preparation.
      
      0003 makes all arches except blackfin use generic dump_stack().
      blackfin still uses the generic helper to print the same info.
      
      0004-0005 properly abstract DMI identifier printing in WARN() and
      show_regs() so that all dumps print out the information.  This enables
      show_regs() to use the same debug info message.
      
      0006 updates show_regs() of all arches to use a common generic helper
      to print debug info.
      
      0007 removes somem duplicate information from arc dumps.
      
      While this patchset changes how debug info is printed on some archs,
      the printed information is always superset of what used to be there.
      
      This patchset makes task dump debug messages consistent and enables
      adding more information.  Workqueue is scheduled to add worker
      information including the workqueue in use and work item specific
      description.
      
      While this patch touches a lot of archs, it isn't too likely to cause
      non-trivial conflicts with arch-specfic changes and would probably be
      best to route together either through -mm.
      
      x86 is tested but other archs are either only compile tested or not
      tested at all.  Changes to most archs are generally trivial.
      
      This patch:
      
      show_stack(current or NULL, NULL) is used to print the backtrace of the
      current task.  As trace beyond the function itself isn't of much
      interest to anyone, don't show it by determining sp and bp in
      show_stack()'s frame and passing them to show_stack_log_lvl().
      
      This brings show_stack(NULL, NULL)'s behavior in line with
      dump_stack().
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Jesper Nilsson <jesper.nilsson@axis.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a77f2a4e
    • L
      kernel/range.c: subtract_range: fix the broken phrase issued by printk · 7fba2c27
      Lin Feng 提交于
      Also replace deprecated printk(KERN_ERR...) with pr_err() as suggested
      by Yinghai, attaching the function name to provide plenty info.
      Signed-off-by: NLin Feng <linfeng@cn.fujitsu.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7fba2c27
    • P
      selftest: add simple test for soft-dirty bit · 58c7be84
      Pavel Emelyanov 提交于
      It creates a mapping of 3 pages and checks that reads, writes and
      clear-refs result in present and soft-dirt bits reported from pagemap2
      set as expected.
      
      [akpm@linux-foundation.org: alphasort the Makefile TARGETS to reduce rejects]
      Signed-off-by: NPavel Emelyanov <xemul@parallels.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      58c7be84
    • D
      staging: zcache: enable zcache to be built/loaded as a module · 835f2f51
      Dan Magenheimer 提交于
      Allow zcache to be built/loaded as a module.  Note runtime dependency
      disallows loading if cleancache/frontswap lazy initialization patches
      are not present.  Zsmalloc support has not yet been merged into zcache
      but, once merged, could now easily be selected via a module_param.
      
      If built-in (not built as a module), the original mechanism of enabling
      via a kernel boot parameter is retained, but this should be considered
      deprecated.
      
      Note that module unload is explicitly not yet supported.
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      [v1: Rebased with different order of patches]
      [v2: Removed [CLEANCACHE|FRONTSWAP]_HAS_LAZY_INIT ifdef]
      [v3: Rebased on top of ramster->zcache move]
      [v4: Redid the Makefile]
      [v5: s/ZCACHE2/ZCACHE/]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      835f2f51
    • D
      staging: zcache: enable ramster to be built/loaded as a module · 1ac37bee
      Dan Magenheimer 提交于
      Enable module support for ramster.  Note runtime dependency disallows
      loading if cleancache/frontswap lazy initialization patches are not
      present.
      
      If built-in (not built as a module), the original mechanism of enabling
      via a kernel boot parameter is retained, but this should be considered
      deprecated.
      
      Note that module unload is explicitly not yet supported.
      
      [v1: Fixed compile issues since ramster_init now has four arguments]
      [v2: Fixed rebase on ramster->zcache move]
      [akpm@linux-foundation.org: use_frontswap_selfshrink cannot be __initdata]
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Cc: Wu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1ac37bee
    • K
      zcache/tmem: Better error checking on frontswap_register_ops return value. · f42158fe
      Konrad Rzeszutek Wilk 提交于
      In the past it either used to be NULL or the "older" backend. Now we
      also return -Exx error codes.
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f42158fe
    • D
      xen: tmem: enable Xen tmem shim to be built/loaded as a module · 10a7a077
      Dan Magenheimer 提交于
      Allow Xen tmem shim to be built/loaded as a module.  Xen self-ballooning
      and frontswap-selfshrinking are now also "lazily" initialized when the
      Xen tmem shim is loaded as a module, unless explicitly disabled by
      module parameters.
      
      Note runtime dependency disallows loading if cleancache/frontswap lazy
      initialization patches are not present.
      
      If built-in (not built as a module), the original mechanism of enabling
      via a kernel boot parameter is retained, but this should be considered
      deprecated.
      
      Note that module unload is explicitly not yet supported.
      
      [v1: Removed the [CLEANCACHE|FRONTSWAP]_HAS_LAZY_INIT ifdef]
      [v2: Squashed the xen/tmem: Remove the subsys call patch in]
      [akpm@linux-foundation.org: fix build (disable_frontswap_selfshrinking undeclared)]
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      10a7a077
    • B
      mm: cleancache: clean up cleancache_enabled · ff610a1d
      Bob Liu 提交于
      cleancache_ops is used to decide whether backend is registered.
      So now cleancache_enabled is always true if defined CONFIG_CLEANCACHE.
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ff610a1d
    • K
      cleancache: Make cleancache_init use a pointer for the ops · 833f8662
      Konrad Rzeszutek Wilk 提交于
      Instead of using a backend_registered to determine whether a backend is
      enabled.  This allows us to remove the backend_register check and just
      do 'if (cleancache_ops)'
      
      [v1: Rebase on top of b97c4b430b0a (ramster->zcache move]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      833f8662
    • D
      mm: cleancache: lazy initialization to allow tmem backends to build/run as modules · 49a9ab81
      Dan Magenheimer 提交于
      With the goal of allowing tmem backends (zcache, ramster, Xen tmem) to
      be built/loaded as modules rather than built-in and enabled by a boot
      parameter, this patch provides "lazy initialization", allowing backends
      to register to cleancache even after filesystems were mounted.  Calls to
      init_fs and init_shared_fs are remembered as fake poolids but no real
      tmem_pools created.  On backend registration the fake poolids are mapped
      to real poolids and respective tmem_pools.
      Signed-off-by: NStefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NFlorian Schmaus <fschmaus@gmail.com>
      Signed-off-by: NAndor Daam <andor.daam@googlemail.com>
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      [v1: Minor fixes: used #define for some values and bools]
      [v2: Removed CLEANCACHE_HAS_LAZY_INIT]
      [v3: Added more comments, added a lock for [shared_|]fs_poolid_map]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      49a9ab81
    • M
      frontswap: get rid of swap_lock dependency · 4f89849d
      Minchan Kim 提交于
      Frontswap initialization routine depends on swap_lock, which want to be
      atomic about frontswap's first appearance.  IOW, frontswap is not present
      and will fail all calls OR frontswap is fully functional but if new
      swap_info_struct isn't registered by enable_swap_info, swap subsystem
      doesn't start I/O so there is no race between init procedure and page I/O
      working on frontswap.
      
      So let's remove unnecessary swap_lock dependency.
      
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Signed-off-by: NMinchan Kim <minchan@kernel.org>
      [v1: Rebased on my branch, reworked to work with backends loading late]
      [v2: Added a check for !map]
      [v3: Made the invalidate path follow the init path]
      [v4: Address comments by Wanpeng Li <liwanp@linux.vnet.ibm.com>]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad@darnok.org>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4f89849d
    • B
      mm: frontswap: cleanup code · f066ea23
      Bob Liu 提交于
      After allowing tmem backends to build/run as modules, frontswap_enabled
      always true if defined CONFIG_FRONTSWAP.  But frontswap_test() depends on
      whether backend is registered, mv it into frontswap.c using fronstswap_ops
      to make the decision.
      
      frontswap_set/clear are not used outside frontswap, so don't export them.
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f066ea23
    • K
      frontswap: make frontswap_init use a pointer for the ops · 1e01c968
      Konrad Rzeszutek Wilk 提交于
      This simplifies the code in the frontswap - we can get rid of the
      'backend_registered' test and instead check against frontswap_ops.
      
      [v1: Rebase on top of 703ba7fe (ramster->zcache move]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Andor Daam <andor.daam@googlemail.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Florian Schmaus <fschmaus@gmail.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Stefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1e01c968
    • D
      mm: frontswap: lazy initialization to allow tmem backends to build/run as modules · 905cd0e1
      Dan Magenheimer 提交于
      With the goal of allowing tmem backends (zcache, ramster, Xen tmem) to
      be built/loaded as modules rather than built-in and enabled by a boot
      parameter, this patch provides "lazy initialization", allowing backends
      to register to frontswap even after swapon was run.  Before a backend
      registers all calls to init are recorded and the creation of tmem_pools
      delayed until a backend registers or until a frontswap store is
      attempted.
      Signed-off-by: NStefan Hengelein <ilendir@googlemail.com>
      Signed-off-by: NFlorian Schmaus <fschmaus@gmail.com>
      Signed-off-by: NAndor Daam <andor.daam@googlemail.com>
      Signed-off-by: NDan Magenheimer <dan.magenheimer@oracle.com>
      [v1: Fixes per Seth Jennings suggestions]
      [v2: Removed FRONTSWAP_HAS_.. ]
      [v3: Fix up per Bob Liu <lliubbo@gmail.com> recommendations]
      [v4: Fix up per Andrew's comments]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: NBob Liu <lliubbo@gmail.com>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Dan Magenheimer <dan.magenheimer@oracle.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      905cd0e1
    • G
      fs/dcache.c: add cond_resched() to shrink_dcache_parent() · 421348f1
      Greg Thelen 提交于
      Call cond_resched() in shrink_dcache_parent() to maintain interactivity.
      
      Before this patch:
      
      	void shrink_dcache_parent(struct dentry * parent)
      	{
      		while ((found = select_parent(parent, &dispose)) != 0)
      			shrink_dentry_list(&dispose);
      	}
      
      select_parent() populates the dispose list with dentries which
      shrink_dentry_list() then deletes.  select_parent() carefully uses
      need_resched() to avoid doing too much work at once.  But neither
      shrink_dcache_parent() nor its called functions call cond_resched().  So
      once need_resched() is set select_parent() will return single dentry
      dispose list which is then deleted by shrink_dentry_list().  This is
      inefficient when there are a lot of dentry to process.  This can cause
      softlockup and hurts interactivity on non preemptable kernels.
      
      This change adds cond_resched() in shrink_dcache_parent().  The benefit
      of this is that need_resched() is quickly cleared so that future calls
      to select_parent() are able to efficiently return a big batch of dentry.
      
      These additional cond_resched() do not seem to impact performance, at
      least for the workload below.
      
      Here is a program which can cause soft lockup if other system activity
      sets need_resched().
      
      	int main()
      	{
      	        struct rlimit rlim;
      	        int i;
      	        int f[100000];
      	        char buf[20];
      	        struct timeval t1, t2;
      	        double diff;
      
      	        /* cleanup past run */
      	        system("rm -rf x");
      
      	        /* boost nfile rlimit */
      	        rlim.rlim_cur = 200000;
      	        rlim.rlim_max = 200000;
      	        if (setrlimit(RLIMIT_NOFILE, &rlim))
      	                err(1, "setrlimit");
      
      	        /* make directory for files */
      	        if (mkdir("x", 0700))
      	                err(1, "mkdir");
      
      	        if (gettimeofday(&t1, NULL))
      	                err(1, "gettimeofday");
      
      	        /* populate directory with open files */
      	        for (i = 0; i < 100000; i++) {
      	                snprintf(buf, sizeof(buf), "x/%d", i);
      	                f[i] = open(buf, O_CREAT);
      	                if (f[i] == -1)
      	                        err(1, "open");
      	        }
      
      	        /* close some of the files */
      	        for (i = 0; i < 85000; i++)
      	                close(f[i]);
      
      	        /* unlink all files, even open ones */
      	        system("rm -rf x");
      
      	        if (gettimeofday(&t2, NULL))
      	                err(1, "gettimeofday");
      
      	        diff = (((double)t2.tv_sec * 1000000 + t2.tv_usec) -
      	                ((double)t1.tv_sec * 1000000 + t1.tv_usec));
      
      	        printf("done: %g elapsed\n", diff/1e6);
      	        return 0;
      	}
      Signed-off-by: NGreg Thelen <gthelen@google.com>
      Signed-off-by: NDave Chinner <david@fromorbit.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      421348f1
    • Y
      fs/block_dev.c: no need to check inode->i_bdev in bd_forget() · b4ea2eaa
      Yan Hong 提交于
      Its only caller evict() has promised a non-NULL inode->i_bdev.
      Signed-off-by: NYan Hong <clouds.yan@gmail.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b4ea2eaa
    • Z
      inotify: invalid mask should return a error number but not set it · 04df32fa
      Zhao Hongjiang 提交于
      When we run the crackerjack testsuite, the inotify_add_watch test is
      stalled.
      
      This is caused by the invalid mask 0 - the task is waiting for the event
      but it never comes.  inotify_add_watch() should return -EINVAL as it did
      before commit 676a0675 ("inotify: remove broken mask checks causing
      unmount to be EINVAL").  That commit removes the invalid mask check, but
      that check is needed.
      
      Check the mask's ALL_INOTIFY_BITS before the inotify_arg_to_mask() call.
      If none are set, just return -EINVAL.
      
      Because IN_UNMOUNT is in ALL_INOTIFY_BITS, this change will not trigger
      the problem that above commit fixed.
      
      [akpm@linux-foundation.org: fix build]
      Signed-off-by: NZhao Hongjiang <zhaohongjiang@huawei.com>
      Acked-by: NJim Somerville <Jim.Somerville@windriver.com>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Jerome Marchand <jmarchan@redhat.com>
      Cc: Eric Paris <eparis@parisplace.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      04df32fa
    • V
      memory hotplug: fix warnings · ace6128d
      Vincent Stehlé 提交于
      Fix the following compilation warnings:
      
        mm/slab.c: In function `kmem_cache_init_late':
        mm/slab.c:1778:2: warning: statement with no effect [-Wunused-value]
      
        mm/page_cgroup.c: In function `page_cgroup_init':
        mm/page_cgroup.c:305:2: warning: statement with no effect [-Wunused-value]
      Signed-off-by: NVincent Stehlé <vincent.stehle@laposte.net>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ace6128d
    • A
      drivers/usb/storage/realtek_cr.c: fix build · 677a0b5a
      Andrew Morton 提交于
      Remove unused local `us', which broke the build.  Also nuke an unneeded
      cast.
      
      Repairs commit 191648d0 ("usb: storage: Convert US_DEBUGP to
      usb_stor_dbg").
      
      Cc: Joe Perches <joe@perches.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      677a0b5a
    • L
      Merge tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64 · c9ef7139
      Linus Torvalds 提交于
      Pull arm64 update from Catalin Marinas:
       "Main features:
      
         - Versatile Express SoC (model) support - DT files and Kconfig
           entries (there are no arch/arm64/mach-* directories).  The bulk of
           the code has already been moved to drivers/ as part of the ARM SoC
           clean-up.
      
         - Basic multi-cluster support (CPU logical map initialised from the
           DT)
      
         - Simple earlyprintk support for UART 8250/16550 and FastModel
           console output
      
         - Optimised kernel library bitops and string functions.
      
         - Automatic initialisation of the irqchip and clocks via DT"
      
      * tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: (26 commits)
        arm64: Use acquire/release semantics instead of explicit DMB
        arm64: klib: bitops: fix unpredictable stxr usage
        arm64: vexpress: Enable ARMv8 RTSM model (SoC) support
        arm64: vexpress: Add dts files for the ARMv8 RTSM models
        arm64: Survive invalid cpu enable-methods
        arm64: mm: Correct show_pte behaviour
        arm64: Fix compat types affecting struct compat_stat
        arm64: Execute DSB during thread switching for TLB/cache maintenance
        arm64: compiling issue, need add include/asm/vga.h file
        arm64: smp: honour #address-size when parsing CPU reg property
        arm64: Define cmpxchg64 and cmpxchg64_local for outside use
        arm64: Define readq and writeq for driver module using
        arm64: Fix task tracing
        arm64: add explicit symbols to ESR_EL1 decoding
        arm64: Use irqchip_init() for interrupt controller initialisation
        arm64: psci: Use the MPIDR values from cpu_logical_map for cpu ids.
        arm64: klib: Optimised atomic bitops
        arm64: klib: Optimised string functions
        arm64: klib: Optimised memory functions
        arm64: head: match all affinity levels in the pen of the secondaries
        ...
      c9ef7139
    • L
      Merge tag 'metag-for-v3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag · 87c1f0f8
      Linus Torvalds 提交于
      Pull arch/metag update from James Hogan:
      
       - Various fixes for the interrupting perf counter handling in metag's
         perf backend.
      
       - Add OProfile support based on perf.
      
       - Sets up cache partitions for SMP so bootloader doesn't have to.
      
       - Patch from Paul Bolle to remove ARCH_POPULATES_NODE_MAP again
         (touches microblaze too).
      
       - Add TLS pointer regset to metag ptrace api.
      
       - Add exported metag DSP extended context handling header <asm/ech.h>.
      
       - Increase defconfig log buffer size to 128KiB.
      
       - Various fixes, typos, missing exports.
      
      * tag 'metag-for-v3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
        metag: defconfigs: increase log buffer 8KiB => 128KiB
        metag: avoid unnecessary builtin dtb rebuilds
        metag: add exported <asm/ech.h> for extended context handling
        metag: export _metag_da_present and cpu_2_hwthread_id
        metag: ptrace: Implement NT_METAG_TLS
        memblock: Kill ARCH_POPULATES_NODE_MAP once more
        metag: cachepart: fix get_global_dcache_size() typo
        metag: cachepart: take into account small cache bits
        metag: smp: copy cache partition and enable GCOn
        metag: OProfile support
        metag: perf: prepare for use by oprofile
        metag: perf: don't reset TXTACTCYC
        metag: perf: use hard_processor_id() to get thread
        metag: perf: fix frequency sampling (dynamic period)
        metag: perf: add missing prev_count updates
        metag: perf: fixes for interrupting perf counters
        metag: perf: fix wrap handling in delta calculation
        metag: perf: fix core internal / perf channel mux
      87c1f0f8
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 165bc513
      Linus Torvalds 提交于
      Pull m68k update from Geert Uytterhoeven.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Remove inline strlen() implementation
        m68k/atari: USB - add platform devices for EtherNAT/NetUSBee ISP1160 HCD
        m68k: Implement ndelay() based on the existing udelay() logic
        m68k/atari: EtherNAT - add interrupt chip definition for CPLD interrupts
        m68k/atari: EtherNEC - add platform device support
        m68k/atari: EtherNAT - platform device and IRQ support code
        m68k/atari: use dedicated irq_chip for timer D interrupts
        m68k/atari: ROM port ISA adapter support
        m68k: Add missing cmpxchg64() if CONFIG_RMW_INSNS=y
      165bc513
    • L
      Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac · e2823299
      Linus Torvalds 提交于
      Pull edac fixes from Mauro Carvalho Chehab:
       "Two edac fixes:
      
         - i7300_edac currently reports a wrong number of DIMMs when the
           memory controller is in single channel mode
      
         - on some Sandy Bridge machines, the EDAC driver bails out as one of
           the PCI IDs used by the driver is hidden by BIOS.  As the driver
           uses it only to detect the type of memory, make it optional at the
           driver"
      
      * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
        edac: sb_edac.c should not require prescence of IMC_DDRIO device
        i7300_edac: Fix memory detection in single mode
      e2823299
    • L
      Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 240c3c34
      Linus Torvalds 提交于
      Pull media update from Mauro Carvalho Chehab:
      
       - OF documentation and patches at core and drivers, to be used by for
         embedded media systems
      
       - some I2C drivers used on go7007 were rewritten/promoted from staging:
         sony-btf-mpx, tw2804, tw9903, tw9906, wis-ov7640, wis-uda1342
      
       - add fimc-is driver (Exynos)
      
       - add a new radio driver: radio-si476x
      
       - add a two new tuners: r820t and tuner_it913x
      
       - split camera code on em28xx driver and add more models
      
       - the cypress firmware load is used outside dvb usb drivers.  So, move
         it to a common directory to make easier to re-use it
      
       - siano media driver updated to work with sms2270 devices
      
       - several work done in order to promote go7007 and solo6x1x out of
         staging (still, there are some pending issues)
      
       - several API compliance fixes at v4l2 drivers that don't behave as
         expected
      
       - as usual, lots of driver fixes, improvements, cleanups and new device
         addition at the existing drivers.
      
      * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (831 commits)
        [media] cx88: make core less verbose
        [media] em28xx: fix oops at em28xx_dvb_bus_ctrl()
        [media] s5c73m3: fix indentation of the help section in Kconfig
        [media] cx25821-alsa: get rid of a __must_check warning
        [media] cx25821-video: declare cx25821_vidioc_s_std as static
        [media] cx25821-video: remove maxw from cx25821_vidioc_try_fmt_vid_cap
        [media] r820t: Remove a warning for an unused value
        [media] dib0090: Fix a warning at dib0090_set_EFUSE
        [media] dib8000: fix a warning
        [media] dib8000: Fix sub-channel range
        [media] dib8000: store dtv_property_cache in a temp var
        [media] dib8000: warning fix: declare internal functions as static
        [media] r820t: quiet gcc warning on n_ring
        [media] r820t: memory leak in release()
        [media] r820t: precendence bug in r820t_xtal_check()
        [media] videodev2.h: Remove the unused old V4L1 buffer types
        [media] anysee: Grammar s/report the/report to/
        [media] anysee: Initialize ret = 0 in anysee_frontend_attach()
        [media] media: videobuf2: fix the length check for mmap
        [media] em28xx: save isoc endpoint number for DVB only if endpoint has alt settings with xMaxPacketSize != 0
        ...
      240c3c34
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 19b344ef
      Linus Torvalds 提交于
      Pull HID updates from Jiri Kosina:
      
       - hid driver transport cleanup, finalizing the long-desired decoupling
         of core from transport layers, by Benjamin Tissoires and Henrik
         Rydberg
      
       - support for hybrid finger/pen multitouch HID devices, by Benjamin
         Tissoires
      
       - fix for long-standing issue in Logitech unifying driver sometimes not
         inializing properly due to device specifics, by Andrew de los Reyes
      
       - Wii remote driver updates to support 2nd generation of devices, by
         David Herrmann
      
       - support for Apple IR remote
      
       - roccat driver now supports new devices (Roccat Kone Pure, IskuFX), by
         Stefan Achatz
      
       - debugfs locking fixes in hid debug interface, by Jiri Kosina
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (43 commits)
        HID: protect hid_debug_list
        HID: debug: break out hid_dump_report() into hid-debug
        HID: Add PID for Japanese version of NE4K keyboard
        HID: hid-lg4ff add support for new version of DFGT wheel
        HID: icade: u16 which never < 0
        HID: clarify Magic Mouse Kconfig description
        HID: appleir: add support for Apple ir devices
        HID: roccat: added media key support for Kone
        HID: hid-lenovo-tpkbd: remove doubled hid_get_drvdata
        HID: i2c-hid: fix length for set/get report in i2c hid
        HID: wiimote: parse reduced status reports
        HID: wiimote: add 2nd generation Wii Remote IDs
        HID: wiimote: use unique battery names
        HID: hidraw: warn if userspace headers are outdated
        HID: multitouch: force BTN_STYLUS for pen devices
        HID: multitouch: append " Pen" to the name of the stylus input
        HID: multitouch: add handling for pen in dual-sensors device
        HID: multitouch: change touch sensor detection in mt_input_configured()
        HID: multitouch: do not map usage from non used reports
        HID: multitouch: breaks out touch handling in specific functions
        ...
      19b344ef
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial · 5d434fcb
      Linus Torvalds 提交于
      Pull trivial tree updates from Jiri Kosina:
       "Usual stuff, mostly comment fixes, typo fixes, printk fixes and small
        code cleanups"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (45 commits)
        mm: Convert print_symbol to %pSR
        gfs2: Convert print_symbol to %pSR
        m32r: Convert print_symbol to %pSR
        iostats.txt: add easy-to-find description for field 6
        x86 cmpxchg.h: fix wrong comment
        treewide: Fix typo in printk and comments
        doc: devicetree: Fix various typos
        docbook: fix 8250 naming in device-drivers
        pata_pdc2027x: Fix compiler warning
        treewide: Fix typo in printks
        mei: Fix comments in drivers/misc/mei
        treewide: Fix typos in kernel messages
        pm44xx: Fix comment for "CONFIG_CPU_IDLE"
        doc: Fix typo "CONFIG_CGROUP_CGROUP_MEMCG_SWAP"
        mmzone: correct "pags" to "pages" in comment.
        kernel-parameters: remove outdated 'noresidual' parameter
        Remove spurious _H suffixes from ifdef comments
        sound: Remove stray pluses from Kconfig file
        radio-shark: Fix printk "CONFIG_LED_CLASS"
        doc: put proper reference to CONFIG_MODULE_SIG_ENFORCE
        ...
      5d434fcb
  2. 30 4月, 2013 14 次提交
    • L
      Merge branch 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5a5a1bf0
      Linus Torvalds 提交于
      Pull x86 RAS changes from Ingo Molnar:
      
       - Add an Intel CMCI hotplug fix
      
       - Add AMD family 16h EDAC support
      
       - Make the AMD MCE banks code more flexible for virtual environments
      
      * 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        amd64_edac: Add Family 16h support
        x86/mce: Rework cmci_rediscover() to play well with CPU hotplug
        x86, MCE, AMD: Use MCG_CAP MSR to find out number of banks on AMD
        x86, MCE, AMD: Replace shared_bank array with is_shared_bank() helper
      5a5a1bf0
    • L
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 74c7d2f5
      Linus Torvalds 提交于
      Pull x86 platform changes from Ingo Molnar:
       "Small fixes and cleanups all over the map"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/setup: Drop unneeded include <asm/dmi.h>
        x86/olpc/xo1/sci: Don't call input_free_device() after input_unregister_device()
        x86/platform/intel/mrst: Remove cast for kmalloc() return value
        x86/platform/uv: Replace kmalloc() & memset with kzalloc()
      74c7d2f5
    • L
      Merge branch 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1e2f5b59
      Linus Torvalds 提交于
      Pull x86 paravirt update from Ingo Molnar:
       "Various paravirtualization related changes - the biggest one makes
        guest support optional via CONFIG_HYPERVISOR_GUEST"
      
      * 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, wakeup, sleep: Use pvops functions for changing GDT entries
        x86, xen, gdt: Remove the pvops variant of store_gdt.
        x86-32, gdt: Store/load GDT for ACPI S3 or hibernation/resume path is not needed
        x86-64, gdt: Store/load GDT for ACPI S3 or hibernate/resume path is not needed.
        x86: Make Linux guest support optional
        x86, Kconfig: Move PARAVIRT_DEBUG into the paravirt menu
      1e2f5b59
    • L
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f9b3bcfb
      Linus Torvalds 提交于
      Pull x86 mm changes from Ingo Molnar:
       "Misc smaller changes all over the map"
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/iommu/dmar: Remove warning for HPET scope type
        x86/mm/gart: Drop unnecessary check
        x86/mm/hotplug: Put kernel_physical_mapping_remove() declaration in CONFIG_MEMORY_HOTREMOVE
        x86/mm/fixmap: Remove unused FIX_CYCLONE_TIMER
        x86/mm/numa: Simplify some bit mangling
        x86/mm: Re-enable DEBUG_TLBFLUSH for X86_32
        x86/mm/cpa: Cleanup split_large_page() and its callee
        x86: Drop always empty .text..page_aligned section
      f9b3bcfb
    • L
      Merge branch 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 01c7cd0e
      Linus Torvalds 提交于
      Pull perparatory x86 kasrl changes from Ingo Molnar:
       "This contains changes from the ongoing KASLR work, by Kees Cook.
      
        The main changes are the use of a read-only IDT on x86 (which
        decouples the userspace visible virtual IDT address from the physical
        address), and a rework of ELF relocation support, in preparation of
        random, boot-time kernel image relocation."
      
      * 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, relocs: Refactor the relocs tool to merge 32- and 64-bit ELF
        x86, relocs: Build separate 32/64-bit tools
        x86, relocs: Add 64-bit ELF support to relocs tool
        x86, relocs: Consolidate processing logic
        x86, relocs: Generalize ELF structure names
        x86: Use a read-only IDT alias on all CPUs
      01c7cd0e
    • L
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 39b2f865
      Linus Torvalds 提交于
      Pull x86 debug update from Ingo Molnar:
       "Two small changes: a documentation update and a constification"
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, early-printk: Update earlyprintk documentation (and kill x86 copy)
        x86: Constify a few items
      39b2f865
    • L
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · df8edfa9
      Linus Torvalds 提交于
      Pull x86 cpuid changes from Ingo Molnar:
       "The biggest change is x86 CPU bug handling refactoring and cleanups,
        by Borislav Petkov"
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, CPU, AMD: Drop useless label
        x86, AMD: Correct {rd,wr}msr_amd_safe warnings
        x86: Fold-in trivial check_config function
        x86, cpu: Convert AMD Erratum 400
        x86, cpu: Convert AMD Erratum 383
        x86, cpu: Convert Cyrix coma bug detection
        x86, cpu: Convert FDIV bug detection
        x86, cpu: Convert F00F bug detection
        x86, cpu: Expand cpufeature facility to include cpu bugs
      df8edfa9
    • L
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 874f6d1b
      Linus Torvalds 提交于
      Pull x86 cleanups from Ingo Molnar:
       "Misc smaller cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/lib: Fix spelling, put space between a numeral and its units
        x86/lib: Fix spelling in the comments
        x86, quirks: Shut-up a long-standing gcc warning
        x86, msr: Unify variable names
        x86-64, docs, mm: Add vsyscall range to virtual address space layout
        x86: Drop KERNEL_IMAGE_START
        x86_64: Use __BOOT_DS instead_of __KERNEL_DS for safety
      874f6d1b
    • L
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e486b4c4
      Linus Torvalds 提交于
      Pull extable dmesg fixlet from Ingo Molnar:
       "Small tweak to reduce kmsg boot time spam"
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        extable: Flip the sorting message
      e486b4c4
    • L
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ab86e974
      Linus Torvalds 提交于
      Pull core timer updates from Ingo Molnar:
       "The main changes in this cycle's merge are:
      
         - Implement shadow timekeeper to shorten in kernel reader side
           blocking, by Thomas Gleixner.
      
         - Posix timers enhancements by Pavel Emelyanov:
      
         - allocate timer ID per process, so that exact timer ID allocations
           can be re-created be checkpoint/restore code.
      
         - debuggability and tooling (/proc/PID/timers, etc.) improvements.
      
         - suspend/resume enhancements by Feng Tang: on certain new Intel Atom
           processors (Penwell and Cloverview), there is a feature that the
           TSC won't stop in S3 state, so the TSC value won't be reset to 0
           after resume.  This can be taken advantage of by the generic via
           the CLOCK_SOURCE_SUSPEND_NONSTOP flag: instead of using the RTC to
           recover/approximate sleep time, the main (and precise) clocksource
           can be used.
      
         - Fix /proc/timer_list for 4096 CPUs by Nathan Zimmer: on so many
           CPUs the file goes beyond 4MB of size and thus the current
           simplistic seqfile approach fails.  Convert /proc/timer_list to a
           proper seq_file with its own iterator.
      
         - Cleanups and refactorings of the core timekeeping code by John
           Stultz.
      
         - International Atomic Clock time is managed by the NTP code
           internally currently but not exposed externally.  Separate the TAI
           code out and add CLOCK_TAI support and TAI support to the hrtimer
           and posix-timer code, by John Stultz.
      
         - Add deep idle support enhacement to the broadcast clockevents core
           timer code, by Daniel Lezcano: add an opt-in CLOCK_EVT_FEAT_DYNIRQ
           clockevents feature (which will be utilized by future clockevents
           driver updates), which allows the use of IRQ affinities to avoid
           spurious wakeups of idle CPUs - the right CPU with an expiring
           timer will be woken.
      
         - Add new ARM bcm281xx clocksource driver, by Christian Daudt
      
         - ... various other fixes and cleanups"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (52 commits)
        clockevents: Set dummy handler on CPU_DEAD shutdown
        timekeeping: Update tk->cycle_last in resume
        posix-timers: Remove unused variable
        clockevents: Switch into oneshot mode even if broadcast registered late
        timer_list: Convert timer list to be a proper seq_file
        timer_list: Split timer_list_show_tickdevices
        posix-timers: Show sigevent info in proc file
        posix-timers: Introduce /proc/PID/timers file
        posix timers: Allocate timer id per process (v2)
        timekeeping: Make sure to notify hrtimers when TAI offset changes
        hrtimer: Fix ktime_add_ns() overflow on 32bit architectures
        hrtimer: Add expiry time overflow check in hrtimer_interrupt
        timekeeping: Shorten seq_count region
        timekeeping: Implement a shadow timekeeper
        timekeeping: Delay update of clock->cycle_last
        timekeeping: Store cycle_last value in timekeeper struct as well
        ntp: Remove ntp_lock, using the timekeeping locks to protect ntp state
        timekeeping: Simplify tai updating from do_adjtimex
        timekeeping: Hold timekeepering locks in do_adjtimex and hardpps
        timekeeping: Move ADJ_SETOFFSET to top level do_adjtimex()
        ...
      ab86e974
    • C
      arm64: Use acquire/release semantics instead of explicit DMB · 16c85a1f
      Catalin Marinas 提交于
      This patch changes the test_and_*_bit functions to use the
      load-acquire/store-release instructions instead of explicit DMB.
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      16c85a1f
    • M
      arm64: klib: bitops: fix unpredictable stxr usage · c47d6a04
      Mark Rutland 提交于
      We're currently relying on unpredictable behaviour in our testops
      (test_and_*_bit), as stxr is unpredictable when the status register and
      the source register are the same
      
      This patch changes reallocates the status register so as to bring us back into
      the realm of predictable behaviour. Boot tested on an AEMv8 model.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      c47d6a04
    • L
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8700c95a
      Linus Torvalds 提交于
      Pull SMP/hotplug changes from Ingo Molnar:
       "This is a pretty large, multi-arch series unifying and generalizing
        the various disjunct pieces of idle routines that architectures have
        historically copied from each other and have grown in random, wildly
        inconsistent and sometimes buggy directions:
      
         101 files changed, 455 insertions(+), 1328 deletions(-)
      
        this went through a number of review and test iterations before it was
        committed, it was tested on various architectures, was exposed to
        linux-next for quite some time - nevertheless it might cause problems
        on architectures that don't read the mailing lists and don't regularly
        test linux-next.
      
        This cat herding excercise was motivated by the -rt kernel, and was
        brought to you by Thomas "the Whip" Gleixner."
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits)
        idle: Remove GENERIC_IDLE_LOOP config switch
        um: Use generic idle loop
        ia64: Make sure interrupts enabled when we "safe_halt()"
        sparc: Use generic idle loop
        idle: Remove unused ARCH_HAS_DEFAULT_IDLE
        bfin: Fix typo in arch_cpu_idle()
        xtensa: Use generic idle loop
        x86: Use generic idle loop
        unicore: Use generic idle loop
        tile: Use generic idle loop
        tile: Enter idle with preemption disabled
        sh: Use generic idle loop
        score: Use generic idle loop
        s390: Use generic idle loop
        powerpc: Use generic idle loop
        parisc: Use generic idle loop
        openrisc: Use generic idle loop
        mn10300: Use generic idle loop
        mips: Use generic idle loop
        microblaze: Use generic idle loop
        ...
      8700c95a
    • L
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 16fa94b5
      Linus Torvalds 提交于
      Pull scheduler changes from Ingo Molnar:
       "The main changes in this development cycle were:
      
         - full dynticks preparatory work by Frederic Weisbecker
      
         - factor out the cpu time accounting code better, by Li Zefan
      
         - multi-CPU load balancer cleanups and improvements by Joonsoo Kim
      
         - various smaller fixes and cleanups"
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
        sched: Fix init NOHZ_IDLE flag
        sched: Prevent to re-select dst-cpu in load_balance()
        sched: Rename load_balance_tmpmask to load_balance_mask
        sched: Move up affinity check to mitigate useless redoing overhead
        sched: Don't consider other cpus in our group in case of NEWLY_IDLE
        sched: Explicitly cpu_idle_type checking in rebalance_domains()
        sched: Change position of resched_cpu() in load_balance()
        sched: Fix wrong rq's runnable_avg update with rt tasks
        sched: Document task_struct::personality field
        sched/cpuacct/UML: Fix header file dependency bug on the UML build
        cgroup: Kill subsys.active flag
        sched/cpuacct: No need to check subsys active state
        sched/cpuacct: Initialize cpuacct subsystem earlier
        sched/cpuacct: Initialize root cpuacct earlier
        sched/cpuacct: Allocate per_cpu cpuusage for root cpuacct statically
        sched/cpuacct: Clean up cpuacct.h
        sched/cpuacct: Remove redundant NULL checks in cpuacct_acount_field()
        sched/cpuacct: Remove redundant NULL checks in cpuacct_charge()
        sched/cpuacct: Add cpuacct_acount_field()
        sched/cpuacct: Add cpuacct_init()
        ...
      16fa94b5