)]}'
{
  "log": [
    {
      "commit": "fffddfd6c8e0c10c42c6e2cc54ba880fcc36ebbb",
      "tree": "71bc5e597124dbaf7550f1e089d675718b3ed5c0",
      "parents": [
        "69086a78bdc973ec0b722be790b146e84ba8a8c4",
        "be88298b0a3f771a4802f20c5e66af74bfd1dff1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 16:46:44 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 16:46:44 2013 -0800"
      },
      "message": "Merge branch \u0027drm-next\u0027 of git://people.freedesktop.org/~airlied/linux\n\nPull drm merge from Dave Airlie:\n \"Highlights:\n\n   - TI LCD controller KMS driver\n\n   - TI OMAP KMS driver merged from staging\n\n   - drop gma500 stub driver\n\n   - the fbcon locking fixes\n\n   - the vgacon dirty like zebra fix.\n\n   - open firmware videomode and hdmi common code helpers\n\n   - major locking rework for kms object handling - pageflip/cursor\n     won\u0027t block on polling anymore!\n\n   - fbcon helper and prime helper cleanups\n\n   - i915: all over the map, haswell power well enhancements, valleyview\n     macro horrors cleaned up, killing lots of legacy GTT code,\n\n   - radeon: CS ioctl unification, deprecated UMS support, gpu reset\n     rework, VM fixes\n\n   - nouveau: reworked thermal code, external dp/tmds encoder support\n     (anx9805), fences sleep instead of polling,\n\n   - exynos: all over the driver fixes.\"\n\nLovely conflict in radeon/evergreen_cs.c between commit de0babd60d8d\n(\"drm/radeon: enforce use of radeon_get_ib_value when reading user cmd\")\nand the new changes that modified that evergreen_dma_cs_parse()\nfunction.\n\n* \u0027drm-next\u0027 of git://people.freedesktop.org/~airlied/linux: (508 commits)\n  drm/tilcdc: only build on arm\n  drm/i915: Revert hdmi HDP pin checks\n  drm/tegra: Add list of framebuffers to debugfs\n  drm/tegra: Fix color expansion\n  drm/tegra: Split DC_CMD_STATE_CONTROL register write\n  drm/tegra: Implement page-flipping support\n  drm/tegra: Implement VBLANK support\n  drm/tegra: Implement .mode_set_base()\n  drm/tegra: Add plane support\n  drm/tegra: Remove bogus tegra_framebuffer structure\n  drm: Add consistency check for page-flipping\n  drm/radeon: Use generic HDMI infoframe helpers\n  drm/tegra: Use generic HDMI infoframe helpers\n  drm: Add EDID helper documentation\n  drm: Add HDMI infoframe helpers\n  video: Add generic HDMI infoframe helpers\n  drm: Add some missing forward declarations\n  drm: Move mode tables to drm_edid.c\n  drm: Remove duplicate drm_mode_cea_vic()\n  gma500: Fix n, m1 and m2 clock limits for sdvo and lvds\n  ...\n"
    },
    {
      "commit": "94f2f14234178f118545a0be60a6371ddeb229b7",
      "tree": "313af6e9e255e9060fc24c836cd71ce712502b17",
      "parents": [
        "8d168f71551ec2a6528d01d0389b7a73c091e3e7",
        "139321c65c0584cd65c4c87a5eb3fdb4fdbd0e19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 16:00:49 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 16:00:49 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace and namespace infrastructure changes from Eric W Biederman:\n \"This set of changes starts with a few small enhnacements to the user\n  namespace.  reboot support, allowing more arbitrary mappings, and\n  support for mounting devpts, ramfs, tmpfs, and mqueuefs as just the\n  user namespace root.\n\n  I do my best to document that if you care about limiting your\n  unprivileged users that when you have the user namespace support\n  enabled you will need to enable memory control groups.\n\n  There is a minor bug fix to prevent overflowing the stack if someone\n  creates way too many user namespaces.\n\n  The bulk of the changes are a continuation of the kuid/kgid push down\n  work through the filesystems.  These changes make using uids and gids\n  typesafe which ensures that these filesystems are safe to use when\n  multiple user namespaces are in use.  The filesystems converted for\n  3.9 are ceph, 9p, afs, ocfs2, gfs2, ncpfs, nfs, nfsd, and cifs.  The\n  changes for these filesystems were a little more involved so I split\n  the changes into smaller hopefully obviously correct changes.\n\n  XFS is the only filesystem that remains.  I was hoping I could get\n  that in this release so that user namespace support would be enabled\n  with an allyesconfig or an allmodconfig but it looks like the xfs\n  changes need another couple of days before it they are ready.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (93 commits)\n  cifs: Enable building with user namespaces enabled.\n  cifs: Convert struct cifs_ses to use a kuid_t and a kgid_t\n  cifs: Convert struct cifs_sb_info to use kuids and kgids\n  cifs: Modify struct smb_vol to use kuids and kgids\n  cifs: Convert struct cifsFileInfo to use a kuid\n  cifs: Convert struct cifs_fattr to use kuid and kgids\n  cifs: Convert struct tcon_link to use a kuid.\n  cifs: Modify struct cifs_unix_set_info_args to hold a kuid_t and a kgid_t\n  cifs: Convert from a kuid before printing current_fsuid\n  cifs: Use kuids and kgids SID to uid/gid mapping\n  cifs: Pass GLOBAL_ROOT_UID and GLOBAL_ROOT_GID to keyring_alloc\n  cifs: Use BUILD_BUG_ON to validate uids and gids are the same size\n  cifs: Override unmappable incoming uids and gids\n  nfsd: Enable building with user namespaces enabled.\n  nfsd: Properly compare and initialize kuids and kgids\n  nfsd: Store ex_anon_uid and ex_anon_gid as kuids and kgids\n  nfsd: Modify nfsd4_cb_sec to use kuids and kgids\n  nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion\n  nfsd: Convert nfsxdr to use kuids and kgids\n  nfsd: Convert nfs3xdr to use kuids and kgids\n  ...\n"
    },
    {
      "commit": "9043a2650cd21f96f831a97f516c2c302e21fb70",
      "tree": "926720afb0acc7bad8cfcae537dc58de552f9249",
      "parents": [
        "ab7826595e9ec51a51f622c5fc91e2f59440481a",
        "d9d8d7ed498ec65bea72dd24be7b9cd35af0c200"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 15:41:43 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 25 15:41:43 2013 -0800"
      },
      "message": "Merge tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module update from Rusty Russell:\n \"The sweeping change is to make add_taint() explicitly indicate whether\n  to disable lockdep, but it\u0027s a mechanical change.\"\n\n* tag \u0027modules-next-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:\n  MODSIGN: Add option to not sign modules during modules_install\n  MODSIGN: Add -s \u003csignature\u003e option to sign-file\n  MODSIGN: Specify the hash algorithm on sign-file command line\n  MODSIGN: Simplify Makefile with a Kconfig helper\n  module: clean up load_module a little more.\n  modpost: Ignore ARC specific non-alloc sections\n  module: constify within_module_*\n  taint: add explicit flag to show whether lock dep is still OK.\n  module: printk message when module signature fail taints kernel.\n"
    },
    {
      "commit": "89f883372fa60f604d136924baf3e89ff1870e9e",
      "tree": "cb69b0a14957945ba00d3d392bf9ccbbef56f3b8",
      "parents": [
        "9e2d59ad580d590134285f361a0e80f0e98c0207",
        "6b73a96065e89dc9fa75ba4f78b1aa3a3bbd0470"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 24 13:07:18 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 24 13:07:18 2013 -0800"
      },
      "message": "Merge tag \u0027kvm-3.9-1\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\nPull KVM updates from Marcelo Tosatti:\n \"KVM updates for the 3.9 merge window, including x86 real mode\n  emulation fixes, stronger memory slot interface restrictions, mmu_lock\n  spinlock hold time reduction, improved handling of large page faults\n  on shadow, initial APICv HW acceleration support, s390 channel IO\n  based virtio, amongst others\"\n\n* tag \u0027kvm-3.9-1\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (143 commits)\n  Revert \"KVM: MMU: lazily drop large spte\"\n  x86: pvclock kvm: align allocation size to page size\n  KVM: nVMX: Remove redundant get_vmcs12 from nested_vmx_exit_handled_msr\n  x86 emulator: fix parity calculation for AAD instruction\n  KVM: PPC: BookE: Handle alignment interrupts\n  booke: Added DBCR4 SPR number\n  KVM: PPC: booke: Allow multiple exception types\n  KVM: PPC: booke: use vcpu reference from thread_struct\n  KVM: Remove user_alloc from struct kvm_memory_slot\n  KVM: VMX: disable apicv by default\n  KVM: s390: Fix handling of iscs.\n  KVM: MMU: cleanup __direct_map\n  KVM: MMU: remove pt_access in mmu_set_spte\n  KVM: MMU: cleanup mapping-level\n  KVM: MMU: lazily drop large spte\n  KVM: VMX: cleanup vmx_set_cr0().\n  KVM: VMX: add missing exit names to VMX_EXIT_REASONS array\n  KVM: VMX: disable SMEP feature when guest is in non-paging mode\n  KVM: Remove duplicate text in api.txt\n  Revert \"KVM: MMU: split kvm_mmu_free_page\"\n  ...\n"
    },
    {
      "commit": "9e2d59ad580d590134285f361a0e80f0e98c0207",
      "tree": "f3232be75781484193413f32ec82c21f6d8eb76e",
      "parents": [
        "5ce1a70e2f00f0bce0cab57f798ca354b9496169",
        "235b80226b986dabcbba844968f7807866bd0bfe"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 18:50:11 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 18:50:11 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal\n\nPull signal handling cleanups from Al Viro:\n \"This is the first pile; another one will come a bit later and will\n  contain SYSCALL_DEFINE-related patches.\n\n   - a bunch of signal-related syscalls (both native and compat)\n     unified.\n\n   - a bunch of compat syscalls switched to COMPAT_SYSCALL_DEFINE\n     (fixing several potential problems with missing argument\n     validation, while we are at it)\n\n   - a lot of now-pointless wrappers killed\n\n   - a couple of architectures (cris and hexagon) forgot to save\n     altstack settings into sigframe, even though they used the\n     (uninitialized) values in sigreturn; fixed.\n\n   - microblaze fixes for delivery of multiple signals arriving at once\n\n   - saner set of helpers for signal delivery introduced, several\n     architectures switched to using those.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (143 commits)\n  x86: convert to ksignal\n  sparc: convert to ksignal\n  arm: switch to struct ksignal * passing\n  alpha: pass k_sigaction and siginfo_t using ksignal pointer\n  burying unused conditionals\n  make do_sigaltstack() static\n  arm64: switch to generic old sigaction() (compat-only)\n  arm64: switch to generic compat rt_sigaction()\n  arm64: switch compat to generic old sigsuspend\n  arm64: switch to generic compat rt_sigqueueinfo()\n  arm64: switch to generic compat rt_sigpending()\n  arm64: switch to generic compat rt_sigprocmask()\n  arm64: switch to generic sigaltstack\n  sparc: switch to generic old sigsuspend\n  sparc: COMPAT_SYSCALL_DEFINE does all sign-extension as well as SYSCALL_DEFINE\n  sparc: kill sign-extending wrappers for native syscalls\n  kill sparc32_open()\n  sparc: switch to use of generic old sigaction\n  sparc: switch sys_compat_rt_sigaction() to COMPAT_SYSCALL_DEFINE\n  mips: switch to generic sys_fork() and sys_clone()\n  ...\n"
    },
    {
      "commit": "5ce1a70e2f00f0bce0cab57f798ca354b9496169",
      "tree": "6e80200536b7a3576fd71ff2c7135ffe87dc858e",
      "parents": [
        "9d3cae26acb471d5954cfdc25d1438b32060babe",
        "ef53d16cded7f89b3843b7a96970dab897843ea5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:35 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:35 2013 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (more incoming from Andrew)\n\nMerge second patch-bomb from Andrew Morton:\n\n - A little DM fix\n\n - the MM queue\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (154 commits)\n  ksm: allocate roots when needed\n  mm: cleanup \"swapcache\" in do_swap_page\n  mm,ksm: swapoff might need to copy\n  mm,ksm: FOLL_MIGRATION do migration_entry_wait\n  ksm: shrink 32-bit rmap_item back to 32 bytes\n  ksm: treat unstable nid like in stable tree\n  ksm: add some comments\n  tmpfs: fix mempolicy object leaks\n  tmpfs: fix use-after-free of mempolicy object\n  mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to discard all pages\n  mm: export mmu notifier invalidates\n  mm: accelerate mm_populate() treatment of THP pages\n  mm: use long type for page counts in mm_populate() and get_user_pages()\n  mm: accurately document nr_free_*_pages functions with code comments\n  HWPOISON: change order of error_states[]\u0027s elements\n  HWPOISON: fix misjudgement of page_action() for errors on mlocked pages\n  memcg: stop warning on memcg_propagate_kmem\n  net: change type of virtio_chan-\u003ep9_max_pages\n  vmscan: change type of vm_total_pages to unsigned long\n  fs/nfsd: change type of max_delegations, nfsd_drc_max_mem and nfsd_drc_mem_used\n  ...\n"
    },
    {
      "commit": "75f7ad8e043d9383337d917584297f7737154bbf",
      "tree": "101f5f2373b615bf83838cd13615fd123dfd765c",
      "parents": [
        "08b52706d505658eac0962d215ff697f898bbc13"
      ],
      "author": {
        "name": "Paul Szabo",
        "email": "psz@maths.usyd.edu.au",
        "time": "Fri Feb 22 16:34:42 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:17 2013 -0800"
      },
      "message": "page-writeback.c: subtract min_free_kbytes from dirtyable memory\n\nWhen calculating amount of dirtyable memory, min_free_kbytes should be\nsubtracted because it is not intended for dirty pages.\n\nAddresses http://bugs.debian.org/695182\n\n[akpm@linux-foundation.org: fix up min_free_kbytes extern declarations]\n[akpm@linux-foundation.org: fix min() warning]\nSigned-off-by: Paul Szabo \u003cpsz@maths.usyd.edu.au\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa00d89c2780d72d082a015e8cbb751e65fb30ee",
      "tree": "a326cbf62ab21d76af7c82c0038a985db77e69b1",
      "parents": [
        "e13fe8695c57fed678877a9f3f8e99fc637ff4fb"
      ],
      "author": {
        "name": "Tang Chen",
        "email": "tangchen@cn.fujitsu.com",
        "time": "Fri Feb 22 16:33:33 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:13 2013 -0800"
      },
      "message": "sched: do not use cpu_to_node() to find an offlined cpu\u0027s node.\n\nIf a cpu is offline, its nid will be set to -1, and cpu_to_node(cpu)\nwill return -1.  As a result, cpumask_of_node(nid) will return NULL.  In\nthis case, find_next_bit() in for_each_cpu will get a NULL pointer and\ncause panic.\n\nHere is a call trace:\n  Call Trace:\n   \u003cIRQ\u003e\n    select_fallback_rq+0x71/0x190\n    try_to_wake_up+0x2cb/0x2f0\n    wake_up_process+0x15/0x20\n    hrtimer_wakeup+0x22/0x30\n    __run_hrtimer+0x83/0x320\n    hrtimer_interrupt+0x106/0x280\n    smp_apic_timer_interrupt+0x69/0x99\n    apic_timer_interrupt+0x6f/0x80\n\nThere is a hrtimer process sleeping, whose cpu has already been\nofflined.  When it is waken up, it tries to find another cpu to run, and\nget a -1 nid.  As a result, cpumask_of_node(-1) returns NULL, and causes\nernel panic.\n\nThis patch fixes this problem by judging if the nid is -1.  If nid is\nnot -1, a cpu on the same node will be picked.  Else, a online cpu on\nanother node will be picked.\n\nSigned-off-by: Tang Chen \u003ctangchen@cn.fujitsu.com\u003e\nSigned-off-by: Wen Congyang \u003cwency@cn.fujitsu.com\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Jiang Liu \u003cliuj97@gmail.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b5d8510b94a95e493e8c4951ffc3d1cf6a6792d",
      "tree": "4493367715c7a15e9057e6c72fa3c3edfd0605ad",
      "parents": [
        "c47f39e3b75e1138823984ad5079547c7a41b726",
        "41ef8f826692c8f65882bec0a8211bd4d1d2d19a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 22 19:25:09 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 22 19:25:09 2013 -0800"
      },
      "message": "Merge branch \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull core locking changes from Ingo Molnar:\n \"The biggest change is the rwsem lock-steal improvements, both to the\n  assembly optimized and the spinlock based variants.\n\n  The other notable change is the clean up of the seqlock implementation\n  to be based on the seqcount infrastructure.\n\n  The rest is assorted smaller debuggability, cleanup and continued -rt\n  locking changes.\"\n\n* \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  rwsem-spinlock: Implement writer lock-stealing for better scalability\n  futex: Revert \"futex: Mark get_robust_list as deprecated\"\n  generic: Use raw local irq variant for generic cmpxchg\n  lockdep: Selftest: convert spinlock to raw spinlock\n  seqlock: Use seqcount infrastructure\n  seqlock: Remove unused functions\n  ntp: Make ntp_lock raw\n  intel_idle: Convert i7300_idle_lock to raw_spinlock\n  locking: Various static lock initializer fixes\n  lockdep: Print more info when MAX_LOCK_DEPTH is exceeded\n  rwsem: Implement writer lock-stealing for better scalability\n  lockdep: Silence warning if CONFIG_LOCKDEP isn\u0027t set\n  watchdog: Use local_clock for get_timestamp()\n  lockdep: Rename print_unlock_inbalance_bug() to print_unlock_imbalance_bug()\n  locking/stat: Fix a typo\n"
    },
    {
      "commit": "2ef14f465b9e096531343f5b734cffc5f759f4a6",
      "tree": "07b504d7105842a4b1a74cf1e153023a02fb9c1e",
      "parents": [
        "cb715a836642e0ec69350670d1c2f800f3e2d2e4",
        "0da3e7f526fde7a6522a3038b7ce609fc50f6707"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 18:06:55 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 18:06:55 2013 -0800"
      },
      "message": "Merge branch \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x86 mm changes from Peter Anvin:\n \"This is a huge set of several partly interrelated (and concurrently\n  developed) changes, which is why the branch history is messier than\n  one would like.\n\n  The *really* big items are two humonguous patchsets mostly developed\n  by Yinghai Lu at my request, which completely revamps the way we\n  create initial page tables.  In particular, rather than estimating how\n  much memory we will need for page tables and then build them into that\n  memory -- a calculation that has shown to be incredibly fragile -- we\n  now build them (on 64 bits) with the aid of a \"pseudo-linear mode\" --\n  a #PF handler which creates temporary page tables on demand.\n\n  This has several advantages:\n\n  1. It makes it much easier to support things that need access to data\n     very early (a followon patchset uses this to load microcode way\n     early in the kernel startup).\n\n  2. It allows the kernel and all the kernel data objects to be invoked\n     from above the 4 GB limit.  This allows kdump to work on very large\n     systems.\n\n  3. It greatly reduces the difference between Xen and native (Xen\u0027s\n     equivalent of the #PF handler are the temporary page tables created\n     by the domain builder), eliminating a bunch of fragile hooks.\n\n  The patch series also gets us a bit closer to W^X.\n\n  Additional work in this pull is the 64-bit get_user() work which you\n  were also involved with, and a bunch of cleanups/speedups to\n  __phys_addr()/__pa().\"\n\n* \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (105 commits)\n  x86, mm: Move reserving low memory later in initialization\n  x86, doc: Clarify the use of asm(\"%edx\") in uaccess.h\n  x86, mm: Redesign get_user with a __builtin_choose_expr hack\n  x86: Be consistent with data size in getuser.S\n  x86, mm: Use a bitfield to mask nuisance get_user() warnings\n  x86/kvm: Fix compile warning in kvm_register_steal_time()\n  x86-32: Add support for 64bit get_user()\n  x86-32, mm: Remove reference to alloc_remap()\n  x86-32, mm: Remove reference to resume_map_numa_kva()\n  x86-32, mm: Rip out x86_32 NUMA remapping code\n  x86/numa: Use __pa_nodebug() instead\n  x86: Don\u0027t panic if can not alloc buffer for swiotlb\n  mm: Add alloc_bootmem_low_pages_nopanic()\n  x86, 64bit, mm: hibernate use generic mapping_init\n  x86, 64bit, mm: Mark data/bss/brk to nx\n  x86: Merge early kernel reserve for 32bit and 64bit\n  x86: Add Crash kernel low reservation\n  x86, kdump: Remove crashkernel range find limit for 64bit\n  memblock: Add memblock_mem_size()\n  x86, boot: Not need to check setup_header version for setup_data\n  ...\n"
    },
    {
      "commit": "27ea6dfdc23e5e96e324d6cb3488528c14e4a7f7",
      "tree": "f3a77ed29e1cecd1f401b86384b322f1b005ef0b",
      "parents": [
        "81ec44a6c69342fec1b1140c60a604027e429f69",
        "cc883afcc02e1c9c8ab64d20f0288355b857f966"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:55:48 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:55:48 2013 -0800"
      },
      "message": "Merge tag \u0027please-pull-misc-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux\n\nPull misc ia64 bits from Tony Luck.\n\n* tag \u0027please-pull-misc-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:\n  MAINTAINERS: update SGI \u0026 ia64 Altix stuff\n  sysctl: Enable IA64 \"ignore-unaligned-usertrap\" to be used cross-arch\n"
    },
    {
      "commit": "7c2db36e730ee4facd341679ecb21ee73ba92831",
      "tree": "75016fba72aaf0581b9263f7fa4c565e6e634f3c",
      "parents": [
        "8b5628ab83b671f96ac9f174c1bd51c92589fc82",
        "a47a376f1c025e23e836c0376813c0424de665c2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:38:49 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:38:49 2013 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (incoming from Andrew)\n\nMerge misc patches from Andrew Morton:\n\n - Florian has vanished so I appear to have become fbdev maintainer\n   again :(\n\n - Joel and Mark are distracted to welcome to the new OCFS2 maintainer\n\n - The backlight queue\n\n - Small core kernel changes\n\n - lib/ updates\n\n - The rtc queue\n\n - Various random bits\n\n* akpm: (164 commits)\n  rtc: rtc-davinci: use devm_*() functions\n  rtc: rtc-max8997: use devm_request_threaded_irq()\n  rtc: rtc-max8907: use devm_request_threaded_irq()\n  rtc: rtc-da9052: use devm_request_threaded_irq()\n  rtc: rtc-wm831x: use devm_request_threaded_irq()\n  rtc: rtc-tps80031: use devm_request_threaded_irq()\n  rtc: rtc-lp8788: use devm_request_threaded_irq()\n  rtc: rtc-coh901331: use devm_clk_get()\n  rtc: rtc-vt8500: use devm_*() functions\n  rtc: rtc-tps6586x: use devm_request_threaded_irq()\n  rtc: rtc-imxdi: use devm_clk_get()\n  rtc: rtc-cmos: use dev_warn()/dev_dbg() instead of printk()/pr_debug()\n  rtc: rtc-pcf8583: use dev_warn() instead of printk()\n  rtc: rtc-sun4v: use pr_warn() instead of printk()\n  rtc: rtc-vr41xx: use dev_info() instead of printk()\n  rtc: rtc-rs5c313: use pr_err() instead of printk()\n  rtc: rtc-at91rm9200: use dev_dbg()/dev_err() instead of printk()/pr_debug()\n  rtc: rtc-rs5c372: use dev_dbg()/dev_warn() instead of printk()/pr_debug()\n  rtc: rtc-ds2404: use dev_err() instead of printk()\n  rtc: rtc-efi: use dev_err()/dev_warn()/pr_err() instead of printk()\n  ...\n"
    },
    {
      "commit": "d7d48f6216686602e6e3d8470563326605b01c95",
      "tree": "e4f10dd9fdce684d57ba33829fa9cf5094001744",
      "parents": [
        "d3330cf08ccf9aef28a3e5740fd5cc7ac536db84"
      ],
      "author": {
        "name": "Yuanhan Liu",
        "email": "yuanhan.liu@linux.intel.com",
        "time": "Thu Feb 21 16:44:21 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:26 2013 -0800"
      },
      "message": "kernel/nsproxy.c: remove duplicate task_cred_xxx for user_ns\n\nWe can use user_ns, which is also assigned from task_cred_xxx(tsk,\nuser_ns), at the beginning of copy_namespaces().\n\nSigned-off-by: Yuanhan Liu \u003cyuanhan.liu@linux.intel.com\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3cbd435b02fb45efc2c8a39c2ea19816669c412",
      "tree": "fc3cfda8b6bdbddedf0a0d3d41736bf9a049a7d9",
      "parents": [
        "7fe5e04292e71af34ae171b88caa2a139e0b6125"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Feb 21 16:43:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:20 2013 -0800"
      },
      "message": "sys_prctl(): coding-style cleanup\n\nRemove a tabstop from the switch statement, in the usual fashion.  A few\ninstances of weirdwrapping were removed as a result.\n\nCc: Chen Gang \u003cgang.chen@asianux.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7fe5e04292e71af34ae171b88caa2a139e0b6125",
      "tree": "5bae0bf98e77442626c61ad57d3121440d599f09",
      "parents": [
        "242260fb858e99674289484bc2bfe3b41f9c4cbb"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Thu Feb 21 16:43:06 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:20 2013 -0800"
      },
      "message": "sys_prctl(): arg2 is unsigned long which is never \u003c 0\n\narg2 will never \u003c 0, for its type is \u0027unsigned long\u0027\n\nAlso, use the provided macros.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nReported-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a46ad6d6df3b547d057c39db13f69d7170a99e9",
      "tree": "684a14d248639c2411c46f53dc7acba4a81c357c",
      "parents": [
        "6d1c7ccae946f5c959f5c9236813d9c33ae48537"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Thu Feb 21 16:43:03 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:20 2013 -0800"
      },
      "message": "smp: make smp_call_function_many() use logic similar to smp_call_function_single()\n\nI\u0027m testing swapout workload in a two-socket Xeon machine.  The workload\nhas 10 threads, each thread sequentially accesses separate memory\nregion.  TLB flush overhead is very big in the workload.  For each page,\npage reclaim need move it from active lru list and then unmap it.  Both\nneed a TLB flush.  And this is a multthread workload, TLB flush happens\nin 10 CPUs.  In X86, TLB flush uses generic smp_call)function.  So this\nworkload stress smp_call_function_many heavily.\n\nWithout patch, perf shows:\n+  24.49%  [k] generic_smp_call_function_interrupt\n-  21.72%  [k] _raw_spin_lock\n   - _raw_spin_lock\n      + 79.80% __page_check_address\n      + 6.42% generic_smp_call_function_interrupt\n      + 3.31% get_swap_page\n      + 2.37% free_pcppages_bulk\n      + 1.75% handle_pte_fault\n      + 1.54% put_super\n      + 1.41% grab_super_passive\n      + 1.36% __swap_duplicate\n      + 0.68% blk_flush_plug_list\n      + 0.62% swap_info_get\n+   6.55%  [k] flush_tlb_func\n+   6.46%  [k] smp_call_function_many\n+   5.09%  [k] call_function_interrupt\n+   4.75%  [k] default_send_IPI_mask_sequence_phys\n+   2.18%  [k] find_next_bit\n\nswapout throughput is around 1300M/s.\n\nWith the patch, perf shows:\n-  27.23%  [k] _raw_spin_lock\n   - _raw_spin_lock\n      + 80.53% __page_check_address\n      + 8.39% generic_smp_call_function_single_interrupt\n      + 2.44% get_swap_page\n      + 1.76% free_pcppages_bulk\n      + 1.40% handle_pte_fault\n      + 1.15% __swap_duplicate\n      + 1.05% put_super\n      + 0.98% grab_super_passive\n      + 0.86% blk_flush_plug_list\n      + 0.57% swap_info_get\n+   8.25%  [k] default_send_IPI_mask_sequence_phys\n+   7.55%  [k] call_function_interrupt\n+   7.47%  [k] smp_call_function_many\n+   7.25%  [k] flush_tlb_func\n+   3.81%  [k] _raw_spin_lock_irqsave\n+   3.78%  [k] generic_smp_call_function_single_interrupt\n\nswapout throughput is around 1400M/s.  So there is around a 7%\nimprovement, and total cpu utilization doesn\u0027t change.\n\nWithout the patch, cfd_data is shared by all CPUs.\ngeneric_smp_call_function_interrupt does read/write cfd_data several times\nwhich will create a lot of cache ping-pong.  With the patch, the data\nbecomes per-cpu.  The ping-pong is avoided.  And from the perf data, this\ndoesn\u0027t make call_single_queue lock contend.\n\nNext step is to remove generic_smp_call_function_interrupt() from arch\ncode.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af3b56289be1f65d5c9f28bb1775e01056a5a2de",
      "tree": "3f3991255ab0c97e387657749a31a7f3b93a586b",
      "parents": [
        "f3d8496e9c841874faf4f2c850d2322453c89e94"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu Feb 21 16:42:40 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:19 2013 -0800"
      },
      "message": "time: don\u0027t inline EXPORT_SYMBOL functions\n\nHow is the compiler even handling exported functions that are marked\ninline? Anyway, these shouldn\u0027t be inline because of that, so remove\nthat marking.\n\nBased on a larger patch by Mark Charlebois to get LLVM to build the\nkernel.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Mark Charlebois \u003cmcharleb@qualcomm.com\u003e\nCc: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: hank \u003cpyu@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bffea77c08c361d174af7ad94887f6aecc3f340b",
      "tree": "ffe22fc5274c4398be4bd8597292a84ca7b9295d",
      "parents": [
        "9a8ab1c39970a4938a72d94e6fd13be88a797590"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Thu Feb 21 16:41:57 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:16 2013 -0800"
      },
      "message": "compat: return -EFAULT on error in waitid()\n\nThe copy_to_user() call returns the number of bytes remaining but we\nwant to return -EFAULT on error.\n\nFixes \"x32: fix waitid()\"\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b274776c54c320763bc12eb035c0e244f76ccb43",
      "tree": "c75b70d0824a7ae029229b19d61884039abf2127",
      "parents": [
        "b24174b0cbbe383c5bb6097aeb24480b8fd2d338",
        "3b1209e7994c4d31ff9932a7f566ae1c96b3c443"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 14:58:40 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 14:58:40 2013 -0800"
      },
      "message": "Merge tag \u0027cleanup\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc\n\nPull ARM SoC cleanups from Arnd Bergmann:\n \"A large number of cleanups, all over the platforms.  This is dominated\n  largely by the Samsung platforms (s3c, s5p, exynos) and a few of the\n  others moving code out of arch/arm into more appropriate subsystems.\n\n  The clocksource and irqchip drivers are now abstracted to the point\n  where platforms that are already cleaned up do not need to even\n  specify the driver they use, it can all get configured from the device\n  tree as we do for normal device drivers.  The clocksource changes\n  basically touch every single platform in the process.\n\n  We further clean up the use of platform specific header files here,\n  with the goal of turning more of the platforms over to being\n  \"multiplatform\" enabled, which implies that they cannot expose their\n  headers to architecture independent code any more.\n\n  It is expected that no functional changes are part of the cleanup.\n  The overall reduction in total code lines is mostly the result of\n  removing broken and obsolete code.\"\n\n* tag \u0027cleanup\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (133 commits)\n  ARM: mvebu: correct gated clock documentation\n  ARM: kirkwood: add missing include for nsa310\n  ARM: exynos: move exynos4210-combiner to drivers/irqchip\n  mfd: db8500-prcmu: update resource passing\n  drivers/db8500-cpufreq: delete dangling include\n  ARM: at91: remove NEOCORE 926 board\n  sunxi: Cleanup the reset code and add meaningful registers defines\n  ARM: S3C24XX: header mach/regs-mem.h local\n  ARM: S3C24XX: header mach/regs-power.h local\n  ARM: S3C24XX: header mach/regs-s3c2412-mem.h local\n  ARM: S3C24XX: Remove plat-s3c24xx directory in arch/arm/\n  ARM: S3C24XX: transform s3c2443 subirqs into new structure\n  ARM: S3C24XX: modify s3c2443 irq init to initialize all irqs\n  ARM: S3C24XX: move s3c2443 irq code to irq.c\n  ARM: S3C24XX: transform s3c2416 irqs into new structure\n  ARM: S3C24XX: modify s3c2416 irq init to initialize all irqs\n  ARM: S3C24XX: move s3c2416 irq init to common irq code\n  ARM: S3C24XX: Modify s3c_irq_wake to use the hwirq property\n  ARM: S3C24XX: Move irq syscore-ops to irq-pm\n  clocksource: always define CLOCKSOURCE_OF_DECLARE\n  ...\n"
    },
    {
      "commit": "21eaab6d19ed43e82ed39c8deb7f192134fb4a0e",
      "tree": "d995205afdcb7f47462bcd28067dc0c4ab0b7b02",
      "parents": [
        "74e1a2a39355b2d3ae8c60c78d8add162c6d7183",
        "9e17df37d710f8998e9cb10a548304fe33d4a5c2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 13:41:04 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 13:41:04 2013 -0800"
      },
      "message": "Merge tag \u0027tty-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty\n\nPull tty/serial patches from Greg Kroah-Hartman:\n \"Here\u0027s the big tty/serial driver patches for 3.9-rc1.\n\n  More tty port rework and fixes from Jiri here, as well as lots of\n  individual serial driver updates and fixes.\n\n  All of these have been in the linux-next tree for a while.\"\n\n* tag \u0027tty-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (140 commits)\n  tty: mxser: improve error handling in mxser_probe() and mxser_module_init()\n  serial: imx: fix uninitialized variable warning\n  serial: tegra: assume CONFIG_OF\n  TTY: do not update atime/mtime on read/write\n  lguest: select CONFIG_TTY to build properly.\n  ARM defconfigs: add missing inclusions of linux/platform_device.h\n  fb/exynos: include platform_device.h\n  ARM: sa1100/assabet: include platform_device.h directly\n  serial: imx: Fix recursive locking bug\n  pps: Fix build breakage from decoupling pps from tty\n  tty: Remove ancient hardpps()\n  pps: Additional cleanups in uart_handle_dcd_change\n  pps: Move timestamp read into PPS code proper\n  pps: Don\u0027t crash the machine when exiting will do\n  pps: Fix a use-after free bug when unregistering a source.\n  pps: Use pps_lookup_dev to reduce ldisc coupling\n  pps: Add pps_lookup_dev() function\n  tty: serial: uartlite: Support uartlite on big and little endian systems\n  tty: serial: uartlite: Fix sparse and checkpatch warnings\n  serial/arc-uart: Miscll DT related updates (Grant\u0027s review comments)\n  ...\n\nFix up trivial conflicts, mostly just due to the TTY config option\nclashing with the EXPERIMENTAL removal.\n"
    },
    {
      "commit": "06991c28f37ad68e5c03777f5c3b679b56e3dac1",
      "tree": "4be75788e21c3c644fe6d39abf47693a171cf4f8",
      "parents": [
        "460dc1eecf37263c8e3b17685ef236f0d236facb",
        "74fef7a8fd1d2bd94f925d6638bb4c3049e7c381"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 12:05:51 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 12:05:51 2013 -0800"
      },
      "message": "Merge tag \u0027driver-core-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core\n\nPull driver core patches from Greg Kroah-Hartman:\n \"Here is the big driver core merge for 3.9-rc1\n\n  There are two major series here, both of which touch lots of drivers\n  all over the kernel, and will cause you some merge conflicts:\n\n   - add a new function called devm_ioremap_resource() to properly be\n     able to check return values.\n\n   - remove CONFIG_EXPERIMENTAL\n\n  Other than those patches, there\u0027s not much here, some minor fixes and\n  updates\"\n\nFix up trivial conflicts\n\n* tag \u0027driver-core-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)\n  base: memory: fix soft/hard_offline_page permissions\n  drivercore: Fix ordering between deferred_probe and exiting initcalls\n  backlight: fix class_find_device() arguments\n  TTY: mark tty_get_device call with the proper const values\n  driver-core: constify data for class_find_device()\n  firmware: Ignore abort check when no user-helper is used\n  firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER\n  firmware: Make user-mode helper optional\n  firmware: Refactoring for splitting user-mode helper code\n  Driver core: treat unregistered bus_types as having no devices\n  watchdog: Convert to devm_ioremap_resource()\n  thermal: Convert to devm_ioremap_resource()\n  spi: Convert to devm_ioremap_resource()\n  power: Convert to devm_ioremap_resource()\n  mtd: Convert to devm_ioremap_resource()\n  mmc: Convert to devm_ioremap_resource()\n  mfd: Convert to devm_ioremap_resource()\n  media: Convert to devm_ioremap_resource()\n  iommu: Convert to devm_ioremap_resource()\n  drm: Convert to devm_ioremap_resource()\n  ...\n"
    },
    {
      "commit": "a0b1c42951dd06ec83cc1bc2c9788131d9fefcd8",
      "tree": "a572f1523cf904c93020c9cdb32f3bc84ec3ac16",
      "parents": [
        "8ec4942212a6d337982967778a3dc3b60aea782e",
        "ecd9883724b78cc72ed92c98bcb1a46c764fff21"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 18:58:50 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 18:58:50 2013 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next\n\nPull networking update from David Miller:\n\n 1) Checkpoint/restarted TCP sockets now can properly propagate the TCP\n    timestamp offset.  From Andrey Vagin.\n\n 2) VMWARE VM VSOCK layer, from Andy King.\n\n 3) Much improved support for virtual functions and SR-IOV in bnx2x,\n    from Ariel ELior.\n\n 4) All protocols on ipv4 and ipv6 are now network namespace aware, and\n    all the compatability checks for initial-namespace-only protocols is\n    removed.  Thanks to Tom Parkin for helping deal with the last major\n    holdout, L2TP.\n\n 5) IPV6 support in netpoll and network namespace support in pktgen,\n    from Cong Wang.\n\n 6) Multiple Registration Protocol (MRP) and Multiple VLAN Registration\n    Protocol (MVRP) support, from David Ward.\n\n 7) Compute packet lengths more accurately in the packet scheduler, from\n    Eric Dumazet.\n\n 8) Use per-task page fragment allocator in skb_append_datato_frags(),\n    also from Eric Dumazet.\n\n 9) Add support for connection tracking labels in netfilter, from\n    Florian Westphal.\n\n10) Fix default multicast group joining on ipv6, and add anti-spoofing\n    checks to 6to4 and 6rd.  From Hannes Frederic Sowa.\n\n11) Make ipv4/ipv6 fragmentation memory limits more reasonable in modern\n    times, rearrange inet frag datastructures for better cacheline\n    locality, and move more operations outside of locking.  From Jesper\n    Dangaard Brouer.\n\n12) Instead of strict master \u003c--\u003e slave relationships, allow arbitrary\n    scenerios with \"upper device lists\".  From Jiri Pirko.\n\n13) Improve rate limiting accuracy in TBF and act_police, also from Jiri\n    Pirko.\n\n14) Add a BPF filter netfilter match target, from Willem de Bruijn.\n\n15) Orphan and delete a bunch of pre-historic networking drivers from\n    Paul Gortmaker.\n\n16) Add TSO support for GRE tunnels, from Pravin B SHelar.  Although\n    this still needs some minor bug fixing before it\u0027s %100 correct in\n    all cases.\n\n17) Handle unresolved IPSEC states like ARP, with a resolution packet\n    queue.  From Steffen Klassert.\n\n18) Remove TCP Appropriate Byte Count support (ABC), from Stephen\n    Hemminger.  This was long overdue.\n\n19) Support SO_REUSEPORT, from Tom Herbert.\n\n20) Allow locking a socket BPF filter, so that it cannot change after a\n    process drops capabilities.\n\n21) Add VLAN filtering to bridge, from Vlad Yasevich.\n\n22) Bring ipv6 on-par with ipv4 and do not cache neighbour entries in\n    the ipv6 routes, from YOSHIFUJI Hideaki.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1538 commits)\n  ipv6: fix race condition regarding dst-\u003eexpires and dst-\u003efrom.\n  net: fix a wrong assignment in skb_split()\n  ip_gre: remove an extra dst_release()\n  ppp: set qdisc_tx_busylock to avoid LOCKDEP splat\n  atl1c: restore buffer state\n  net: fix a build failure when !CONFIG_PROC_FS\n  net: ipv4: fix waring -Wunused-variable\n  net: proc: fix build failed when procfs is not configured\n  Revert \"xen: netback: remove redundant xenvif_put\"\n  net: move procfs code to net/core/net-procfs.c\n  qmi_wwan, cdc-ether: add ADU960S\n  bonding: set sysfs device_type to \u0027bond\u0027\n  bonding: fix bond_release_all inconsistencies\n  b44: use netdev_alloc_skb_ip_align()\n  xen: netback: remove redundant xenvif_put\n  net: fec: Do a sanity check on the gpio number\n  ip_gre: propogate target device GSO capability to the tunnel device\n  ip_gre: allow CSUM capable devices to handle packets\n  bonding: Fix initialize after use for 3ad machine state spinlock\n  bonding: Fix race condition between bond_enslave() and bond_3ad_update_lacp_rate()\n  ...\n"
    },
    {
      "commit": "8793422fd9ac5037f5047f80473007301df3689f",
      "tree": "f5aa3b3a564f053e1b5604c45db80193abc734a4",
      "parents": [
        "b3cdda2b4f541439ca4205793040aa2e1c852e3b",
        "10baf04e95fbf7eb6089410220a547211dd2ffa7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 11:26:56 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 11:26:56 2013 -0800"
      },
      "message": "Merge tag \u0027pm+acpi-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\nPull ACPI and power management updates from Rafael Wysocki:\n\n - Rework of the ACPI namespace scanning code from Rafael J.  Wysocki\n   with contributions from Bjorn Helgaas, Jiang Liu, Mika Westerberg,\n   Toshi Kani, and Yinghai Lu.\n\n - ACPI power resources handling and ACPI device PM update from Rafael\n   J Wysocki.\n\n - ACPICA update to version 20130117 from Bob Moore and Lv Zheng with\n   contributions from Aaron Lu, Chao Guan, Jesper Juhl, and Tim Gardner.\n\n - Support for Intel Lynxpoint LPSS from Mika Westerberg.\n\n - cpuidle update from Len Brown including Intel Haswell support, C1\n   state for intel_idle, removal of global pm_idle.\n\n - cpuidle fixes and cleanups from Daniel Lezcano.\n\n - cpufreq fixes and cleanups from Viresh Kumar and Fabio Baltieri with\n   contributions from Stratos Karafotis and Rickard Andersson.\n\n - Intel P-states driver for Sandy Bridge processors from Dirk\n   Brandewie.\n\n - cpufreq driver for Marvell Kirkwood SoCs from Andrew Lunn.\n\n - cpufreq fixes related to ordering issues between acpi-cpufreq and\n   powernow-k8 from Borislav Petkov and Matthew Garrett.\n\n - cpufreq support for Calxeda Highbank processors from Mark Langsdorf\n   and Rob Herring.\n\n - cpufreq driver for the Freescale i.MX6Q SoC and cpufreq-cpu0 update\n   from Shawn Guo.\n\n - cpufreq Exynos fixes and cleanups from Jonghwan Choi, Sachin Kamat,\n   and Inderpal Singh.\n\n - Support for \"lightweight suspend\" from Zhang Rui.\n\n - Removal of the deprecated power trace API from Paul Gortmaker.\n\n - Assorted updates from Andreas Fleig, Colin Ian King, Davidlohr Bueso,\n   Joseph Salisbury, Kees Cook, Li Fei, Nishanth Menon, ShuoX Liu,\n   Srinivas Pandruvada, Tejun Heo, Thomas Renninger, and Yasuaki\n   Ishimatsu.\n\n* tag \u0027pm+acpi-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (267 commits)\n  PM idle: remove global declaration of pm_idle\n  unicore32 idle: delete stray pm_idle comment\n  openrisc idle: delete pm_idle\n  mn10300 idle: delete pm_idle\n  microblaze idle: delete pm_idle\n  m32r idle: delete pm_idle, and other dead idle code\n  ia64 idle: delete pm_idle\n  cris idle: delete idle and pm_idle\n  ARM64 idle: delete pm_idle\n  ARM idle: delete pm_idle\n  blackfin idle: delete pm_idle\n  sparc idle: rename pm_idle to sparc_idle\n  sh idle: rename global pm_idle to static sh_idle\n  x86 idle: rename global pm_idle to static x86_idle\n  APM idle: register apm_cpu_idle via cpuidle\n  cpufreq / intel_pstate: Add kernel command line option disable intel_pstate.\n  cpufreq / intel_pstate: Change to disallow module build\n  tools/power turbostat: display SMI count by default\n  intel_idle: export both C1 and C1E\n  ACPI / hotplug: Fix concurrency issues and memory leaks\n  ...\n"
    },
    {
      "commit": "9ae46e6702d98d22037368896298d05958ad5737",
      "tree": "019ce8ccff0a88fc7f5ebaf5c052daac5bac3860",
      "parents": [
        "502b24c23b44fbaa01cc2cbd86d8035845b7811f",
        "d127027baf98dce3ca31bec18c2c0e048ceda7c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:18:31 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:18:31 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cpuset changes from Tejun Heo:\n\n - Synchornization has seen a lot of changes with focus on decoupling\n   cpuset synchronization from cgroup internal locking.\n\n   After this change, there only remain a couple of mostly trivial\n   dependencies on cgroup_lock outside cgroup core proper.  cgroup_lock\n   is scheduled to be unexported in this devel cycle.\n\n   This will finally remove the fragile locking order around cgroup\n   (cgroup locking wants to / should be one of the outermost but yet has\n   been acquired from deep inside individual controllers).\n\n - At this point, Li is most knowlegeable with cpuset and taking over\n   the maintainership of cpuset.\n\n* \u0027for-3.9-cpuset\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cpuset: drop spurious retval assignment in proc_cpuset_show()\n  cpuset: fix RCU lockdep splat\n  cpuset: update MAINTAINERS\n  cpuset: remove cpuset-\u003eparent\n  cpuset: replace cpuset-\u003estack_list with cpuset_for_each_descendant_pre()\n  cpuset: replace cgroup_mutex locking with cpuset internal locking\n  cpuset: schedule hotplug propagation from cpuset_attach() if the cpuset is empty\n  cpuset: pin down cpus and mems while a task is being attached\n  cpuset: make CPU / memory hotplug propagation asynchronous\n  cpuset: drop async_rebuild_sched_domains()\n  cpuset: don\u0027t nest cgroup_mutex inside get_online_cpus()\n  cpuset: reorganize CPU / memory hotplug handling\n  cpuset: cleanup cpuset[_can]_attach()\n  cpuset: introduce cpuset_for_each_child()\n  cpuset: introduce CS_ONLINE\n  cpuset: introduce -\u003ecss_on/offline()\n  cpuset: remove fast exit path from remove_tasks_in_empty_cpuset()\n  cpuset: remove unused cpuset_unlock()\n"
    },
    {
      "commit": "502b24c23b44fbaa01cc2cbd86d8035845b7811f",
      "tree": "3096deeb99f6acc2d72ee33f145008ec5e2c68b3",
      "parents": [
        "ece8e0b2f9c980e5511fe8db2d68c6f1859b9d83",
        "f169007b2773f285e098cb84c74aac0154d65ff7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:16:21 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 09:16:21 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup changes from Tejun Heo:\n \"Nothing too drastic.\n\n   - Removal of synchronize_rcu() from userland visible paths.\n\n   - Various fixes and cleanups from Li.\n\n   - cgroup_rightmost_descendant() added which will be used by cpuset\n     changes (it will be a separate pull request).\"\n\n* \u0027for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cgroup: fail if monitored file and event_control are in different cgroup\n  cgroup: fix cgroup_rmdir() vs close(eventfd) race\n  cpuset: fix cpuset_print_task_mems_allowed() vs rename() race\n  cgroup: fix exit() vs rmdir() race\n  cgroup: remove bogus comments in cgroup_diput()\n  cgroup: remove synchronize_rcu() from cgroup_diput()\n  cgroup: remove duplicate RCU free on struct cgroup\n  sched: remove redundant NULL cgroup check in task_group_path()\n  sched: split out css_online/css_offline from tg creation/destruction\n  cgroup: initialize cgrp-\u003edentry before css_alloc()\n  cgroup: remove a NULL check in cgroup_exit()\n  cgroup: fix bogus kernel warnings when cgroup_create() failed\n  cgroup: remove synchronize_rcu() from rebind_subsystems()\n  cgroup: remove synchronize_rcu() from cgroup_attach_{task|proc}()\n  cgroup: use new hashtable implementation\n  cgroups: fix cgroup_event_listener error handling\n  cgroups: move cgroup_event_listener.c to tools/cgroup\n  cgroup: implement cgroup_rightmost_descendant()\n  cgroup: remove unused dummy cgroup_fork_callbacks()\n"
    },
    {
      "commit": "ece8e0b2f9c980e5511fe8db2d68c6f1859b9d83",
      "tree": "70f1e3363080884965686576d079d24da8863a58",
      "parents": [
        "67cb104b4c30bd52292b6a7f526349aab2dd5cbd",
        "a0327ff0eda915be623658babacef706099c11a8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:10:26 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:10:26 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9-async\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull async changes from Tejun Heo:\n \"These are followups for the earlier deadlock issue involving async\n  ending up waiting for itself through block requesting module[1].  The\n  following changes are made by these commits.\n\n   - Instead of requesting default elevator on each request_queue init,\n     block now requests it once early during boot.\n\n   - Kmod triggers warning if invoked from an async worker.\n\n   - Async synchronization implementation has been reimplemented.  It\u0027s\n     a lot simpler now.\"\n\n* \u0027for-3.9-async\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  async: initialise list heads to fix crash\n  async: replace list of active domains with global list of pending items\n  async: keep pending tasks on async_domain and remove async_pending\n  async: use ULLONG_MAX for infinity cookie value\n  async: bring sanity to the use of words domain and running\n  async, kmod: warn on synchronous request_module() from async workers\n  block: don\u0027t request module during elevator init\n  init, block: try to load default elevator module early during boot\n"
    },
    {
      "commit": "67cb104b4c30bd52292b6a7f526349aab2dd5cbd",
      "tree": "b7d2659f9c7bfe676016680339c0ffe47ef29afd",
      "parents": [
        "1eaec8212e35aef6606a4e8b40aa9ad9ba87672a",
        "1438ade5670b56d5386c220e1ad4b5a824a1e585"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:01:33 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:01:33 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue changes from Tejun Heo:\n \"A lot of reorganization is going on mostly to prepare for worker pools\n  with custom attributes so that workqueue can replace custom pool\n  implementations in places including writeback and btrfs and make CPU\n  assignment in crypto more flexible.\n\n  workqueue evolved from purely per-cpu design and implementation, so\n  there are a lot of assumptions regarding being bound to CPUs and even\n  unbound workqueues are implemented as an extension of the model -\n  workqueues running on the special unbound CPU.  Bulk of changes this\n  round are about promoting worker_pools as the top level abstraction\n  replacing global_cwq (global cpu workqueue).  At this point, I\u0027m\n  fairly confident about getting custom worker pools working pretty soon\n  and ready for the next merge window.\n\n  Lai\u0027s patches are replacing the convoluted mb() dancing workqueue has\n  been doing with much simpler mechanism which only depends on\n  assignment atomicity of long.  For details, please read the commit\n  message of 0b3dae68ac (\"workqueue: simplify is-work-item-queued-here\n  test\").  While the change ends up adding one pointer to struct\n  delayed_work, the inflation in percentage is less than five percent\n  and it decouples delayed_work logic a lot more cleaner from usual work\n  handling, removes the unusual memory barrier dancing, and allows for\n  further simplification, so I think the trade-off is acceptable.\n\n  There will be two more workqueue related pull requests and there are\n  some shared commits among them.  I\u0027ll write further pull requests\n  assuming this pull request is pulled first.\"\n\n* \u0027for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (37 commits)\n  workqueue: un-GPL function delayed_work_timer_fn()\n  workqueue: rename cpu_workqueue to pool_workqueue\n  workqueue: reimplement is_chained_work() using current_wq_worker()\n  workqueue: fix is_chained_work() regression\n  workqueue: pick cwq instead of pool in __queue_work()\n  workqueue: make get_work_pool_id() cheaper\n  workqueue: move nr_running into worker_pool\n  workqueue: cosmetic update in try_to_grab_pending()\n  workqueue: simplify is-work-item-queued-here test\n  workqueue: make work-\u003edata point to pool after try_to_grab_pending()\n  workqueue: add delayed_work-\u003ewq to simplify reentrancy handling\n  workqueue: make work_busy() test WORK_STRUCT_PENDING first\n  workqueue: replace WORK_CPU_NONE/LAST with WORK_CPU_END\n  workqueue: post global_cwq removal cleanups\n  workqueue: rename nr_running variables\n  workqueue: remove global_cwq\n  workqueue: remove worker_pool-\u003egcwq\n  workqueue: replace for_each_worker_pool() with for_each_std_worker_pool()\n  workqueue: make freezing/thawing per-pool\n  workqueue: make hotplug processing per-pool\n  ...\n"
    },
    {
      "commit": "1eaec8212e35aef6606a4e8b40aa9ad9ba87672a",
      "tree": "aa0ae10e129d3642b5470bc430f0b174dc08a381",
      "parents": [
        "1a13c0b181f218bf56a1a6b8edbaf2876b22314b",
        "23663c873154f01220ef679558e1ca110c4c4ca4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 21:58:52 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 21:58:52 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9-cleanups\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue [delayed_]work_pending() cleanups from Tejun Heo:\n \"This is part of on-going cleanups to remove / minimize usages of\n  workqueue interfaces which are deprecated and/or misleading.\n\n  This round drops a number of usages of [delayed_]work_pending(), which\n  are dangerous as they lack any form of synchronization and thus often\n  lead to buggy / unnecessary code.  There are a couple legitimate use\n  cases in kernel.  Hopefully, they can be converted and\n  [delayed_]work_pending() can be removed completely.  Even if not,\n  removing most of misuses should make it more difficult to find\n  examples of misuses and thus slow down growth of them.\n\n  These changes are independent from other workqueue changes.\"\n\n* \u0027for-3.9-cleanups\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  wimax/i2400m: fix i2400m-\u003ewake_tx_skb handling\n  kprobes: fix wait_for_kprobe_optimizer()\n  ipw2x00: simplify scan_event handling\n  video/exynos: don\u0027t use [delayed_]work_pending()\n  tty/max3100: don\u0027t use [delayed_]work_pending()\n  x86/mce: don\u0027t use [delayed_]work_pending()\n  rfkill: don\u0027t use [delayed_]work_pending()\n  wl1251: don\u0027t use [delayed_]work_pending()\n  thinkpad_acpi: don\u0027t use [delayed_]work_pending()\n  mwifiex: don\u0027t use [delayed_]work_pending()\n  sja1000: don\u0027t use [delayed_]work_pending()\n"
    },
    {
      "commit": "121027a7a64a12e9e5c0289f12473ff11678a812",
      "tree": "741dd57ee06d9607d9126a7ae9014cd087e54d32",
      "parents": [
        "5abcd76f5d896de014bd8d1486107c483659d40d",
        "63a3f603413ffe82ad775f2d62a5afff87fd94a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:12:03 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:12:03 2013 -0800"
      },
      "message": "Merge branch \u0027x86-build-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull two x86 kernel build changes from Ingo Molnar:\n \"The first change modifies how \u0027make oldconfig\u0027 works on cross-bitness\n  situations on x86.  It was felt the new behavior of preserving the\n  bitness of the .config is more logical.  This is a leftover of the\n  merge.\n\n  The second change eliminates a Perl warning.  (There\u0027s another, more\n  complete fix resulting of this warning fix, which second fix in flight\n  to you via the kbuild tree, which will remove the timeconst.pl script\n  altogether.)\"\n\n* \u0027x86-build-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  timeconst.pl: Eliminate Perl warning\n  x86: Default to ARCH\u003dx86 to avoid overriding CONFIG_64BIT\n"
    },
    {
      "commit": "5800700f66678ea5c85e7d62b138416070bf7f60",
      "tree": "4aeff1edb0429eb222ddea97701d1ab1efbca2d0",
      "parents": [
        "266d7ad7f4fe2f44b91561f5b812115c1b3018ab",
        "af8d102f999a41c0189bd2cce488bac2ee88c29b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:07:27 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:07:27 2013 -0800"
      },
      "message": "Merge branch \u0027x86-apic-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull x86/apic changes from Ingo Molnar:\n \"Main changes:\n\n   - Multiple MSI support added to the APIC, PCI and AHCI code - acked\n     by all relevant maintainers, by Alexander Gordeev.\n\n     The advantage is that multiple AHCI ports can have multiple MSI\n     irqs assigned, and can thus spread to multiple CPUs.\n\n     [ Drivers can make use of this new facility via the\n       pci_enable_msi_block_auto() method ]\n\n   - x86 IOAPIC code from interrupt remapping cleanups from Joerg\n     Roedel:\n\n     These patches move all interrupt remapping specific checks out of\n     the x86 core code and replaces the respective call-sites with\n     function pointers.  As a result the interrupt remapping code is\n     better abstraced from x86 core interrupt handling code.\n\n   - Various smaller improvements, fixes and cleanups.\"\n\n* \u0027x86-apic-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)\n  x86/intel/irq_remapping: Clean up x2apic opt-out security warning mess\n  x86, kvm: Fix intialization warnings in kvm.c\n  x86, irq: Move irq_remapped out of x86 core code\n  x86, io_apic: Introduce eoi_ioapic_pin call-back\n  x86, msi: Introduce x86_msi.compose_msi_msg call-back\n  x86, irq: Introduce setup_remapped_irq()\n  x86, irq: Move irq_remapped() check into free_remapped_irq\n  x86, io-apic: Remove !irq_remapped() check from __target_IO_APIC_irq()\n  x86, io-apic: Move CONFIG_IRQ_REMAP code out of x86 core\n  x86, irq: Add data structure to keep AMD specific irq remapping information\n  x86, irq: Move irq_remapping_enabled declaration to iommu code\n  x86, io_apic: Remove irq_remapping_enabled check in setup_timer_IRQ0_pin\n  x86, io_apic: Move irq_remapping_enabled checks out of check_timer()\n  x86, io_apic: Convert setup_ioapic_entry to function pointer\n  x86, io_apic: Introduce set_affinity function pointer\n  x86, msi: Use IRQ remapping specific setup_msi_irqs routine\n  x86, hpet: Introduce x86_msi_ops.setup_hpet_msi\n  x86, io_apic: Introduce x86_io_apic_ops.print_entries for debugging\n  x86, io_apic: Introduce x86_io_apic_ops.disable()\n  x86, apic: Mask IO-APIC and PIC unconditionally on LAPIC resume\n  ...\n"
    },
    {
      "commit": "266d7ad7f4fe2f44b91561f5b812115c1b3018ab",
      "tree": "45acf12d5cb170205ccffe24b9f24672ff8bff2e",
      "parents": [
        "bcbd818c069b9e1bf82517401225b152a33968e2",
        "36dfbbf136db0d645bacfd42ce7d9d6928ea532d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:05:45 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:05:45 2013 -0800"
      },
      "message": "Merge branch \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer changes from Ingo Molnar:\n \"Main changes:\n\n   - ntp: Add CONFIG_RTC_SYSTOHC: a generic RTC driver facility\n     complementing the existing CONFIG_RTC_HCTOSYS, which uses NTP to\n     keep the hardware clock updated.\n\n   - posix-timers: Fix clock_adjtime to always return timex data on\n     success.  This is changing the ABI, but no breakage was expected\n     and found - caution is warranted nevertheless.\n\n   - platform persistent clock improvements/cleanups.\n\n   - clockevents: refactor timer broadcast handling to be more generic\n     and less duplicated with matching architecture code (mostly ARM\n     motivated.)\n\n   - various fixes and cleanups\"\n\n* \u0027timers-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  timers/x86/hpet: Use HPET_COUNTER to specify the hpet counter in vread_hpet()\n  posix-cpu-timers: Fix nanosleep task_struct leak\n  clockevents: Fix generic broadcast for FEAT_C3STOP\n  time, Fix setting of hardware clock in NTP code\n  hrtimer: Prevent hrtimer_enqueue_reprogram race\n  clockevents: Add generic timer broadcast function\n  clockevents: Add generic timer broadcast receiver\n  timekeeping: Switch HAS_PERSISTENT_CLOCK to ALWAYS_USE_PERSISTENT_CLOCK\n  x86/time/rtc: Don\u0027t print extended CMOS year when reading RTC\n  x86: Select HAS_PERSISTENT_CLOCK on x86\n  timekeeping: Add CONFIG_HAS_PERSISTENT_CLOCK option\n  rtc: Skip the suspend/resume handling if persistent clock exist\n  timekeeping: Add persistent_clock_exist flag\n  posix-timers: Fix clock_adjtime to always return timex data on success\n  Round the calculated scale factor in set_cyc2ns_scale()\n  NTP: Add a CONFIG_RTC_SYSTOHC configuration\n  MAINTAINERS: Update John Stultz\u0027s email\n  time: create __getnstimeofday for WARNless calls\n"
    },
    {
      "commit": "bcbd818c069b9e1bf82517401225b152a33968e2",
      "tree": "3fcdcf02b15fdd77998589a6158d0e36ba137d1c",
      "parents": [
        "d652e1eb8e7b739fccbfb503a3da3e9f640fbf3d",
        "14e568e78f6f80ca1e27256641ddf524c7dbdc51"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:04:55 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 19:04:55 2013 -0800"
      },
      "message": "Merge branch \u0027smp-hotplug-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull preparatory smp/hotplug patches from Ingo Molnar:\n \"Some early preparatory changes for the WIP hotplug rework by Thomas\n  Gleixner.\"\n\n* \u0027smp-hotplug-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  stop_machine: Use smpboot threads\n  stop_machine: Store task reference in a separate per cpu variable\n  smpboot: Allow selfparking per cpu threads\n"
    },
    {
      "commit": "d652e1eb8e7b739fccbfb503a3da3e9f640fbf3d",
      "tree": "55ab77bad0cbb045eac0b84b80d63f88f1ae09e6",
      "parents": [
        "8f55cea410dbc56114bb71a3742032070c8108d0",
        "77852fea6e2442a0e654a9292060489895de18c7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 18:19:48 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 18:19:48 2013 -0800"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler changes from Ingo Molnar:\n \"Main changes:\n\n   - scheduler side full-dynticks (user-space execution is undisturbed\n     and receives no timer IRQs) preparation changes that convert the\n     cputime accounting code to be full-dynticks ready, from Frederic\n     Weisbecker.\n\n   - Initial sched.h split-up changes, by Clark Williams\n\n   - select_idle_sibling() performance improvement by Mike Galbraith:\n\n        \" 1 tbench pair (worst case) in a 10 core + SMT package:\n\n          pre   15.22 MB/sec 1 procs\n          post 252.01 MB/sec 1 procs \"\n\n  - sched_rr_get_interval() ABI fix/change.  We think this detail is not\n    used by apps (so it\u0027s not an ABI in practice), but lets keep it\n    under observation.\n\n  - misc RT scheduling cleanups, optimizations\"\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)\n  sched/rt: Add \u003clinux/sched/rt.h\u003e header to \u003clinux/init_task.h\u003e\n  cputime: Remove irqsave from seqlock readers\n  sched, powerpc: Fix sched.h split-up build failure\n  cputime: Restore CPU_ACCOUNTING config defaults for PPC64\n  sched/rt: Move rt specific bits into new header file\n  sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice\n  sched: Move sched.h sysctl bits into separate header\n  sched: Fix signedness bug in yield_to()\n  sched: Fix select_idle_sibling() bouncing cow syndrome\n  sched/rt: Further simplify pick_rt_task()\n  sched/rt: Do not account zero delta_exec in update_curr_rt()\n  cputime: Safely read cputime of full dynticks CPUs\n  kvm: Prepare to add generic guest entry/exit callbacks\n  cputime: Use accessors to read task cputime stats\n  cputime: Allow dynamic switch between tick/virtual based cputime accounting\n  cputime: Generic on-demand virtual cputime accounting\n  cputime: Move default nsecs_to_cputime() to jiffies based cputime file\n  cputime: Librarize per nsecs resolution cputime definitions\n  cputime: Avoid multiplication overflow on utime scaling\n  context_tracking: Export context state for generic vtime\n  ...\n\nFix up conflict in kernel/context_tracking.c due to comment additions.\n"
    },
    {
      "commit": "8f55cea410dbc56114bb71a3742032070c8108d0",
      "tree": "59605f0ee961274b22f91add33f5c32459471a83",
      "parents": [
        "b7133a9a103655cda254987a3c0975fd9d8c443f",
        "e259514eef764a5286873618e34c560ecb6cff13"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:49:41 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:49:41 2013 -0800"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf changes from Ingo Molnar:\n \"There are lots of improvements, the biggest changes are:\n\n  Main kernel side changes:\n\n   - Improve uprobes performance by adding \u0027pre-filtering\u0027 support, by\n     Oleg Nesterov.\n\n   - Make some POWER7 events available in sysfs, equivalent to what was\n     done on x86, from Sukadev Bhattiprolu.\n\n   - tracing updates by Steve Rostedt - mostly misc fixes and smaller\n     improvements.\n\n   - Use perf/event tracing to report PCI Express advanced errors, by\n     Tony Luck.\n\n   - Enable northbridge performance counters on AMD family 15h, by Jacob\n     Shin.\n\n   - This tracing commit:\n\n        tracing: Remove the extra 4 bytes of padding in events\n\n     changes the ABI.  All involved parties (PowerTop in particular)\n     seem to agree that it\u0027s safe to do now with the introduction of\n     libtraceevent, but the devil is in the details ...\n\n  Main tooling side changes:\n\n   - Add \u0027event group view\u0027, from Namyung Kim:\n\n     To use it, \u0027perf record\u0027 should group events when recording.  And\n     then perf report parses the saved group relation from file header\n     and prints them together if --group option is provided.  You can\n     use the \u0027perf evlist\u0027 command to see event group information:\n\n        $ perf record -e \u0027{ref-cycles,cycles}\u0027 noploop 1\n        [ perf record: Woken up 2 times to write data ]\n        [ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]\n\n        $ perf evlist --group\n        {ref-cycles,cycles}\n\n     With this example, default perf report will show you each event\n     separately.\n\n     You can use --group option to enable event group view:\n\n        $ perf report --group\n        ...\n        # group: {ref-cycles,cycles}\n        # \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n        # Samples: 7K of event \u0027anon group { ref-cycles, cycles }\u0027\n        # Event count (approx.): 6876107743\n        #\n        #         Overhead  Command      Shared Object                      Symbol\n        # ................  .......  .................  ..........................\n            99.84%  99.76%  noploop  noploop            [.] main\n             0.07%   0.00%  noploop  ld-2.15.so         [.] strcmp\n             0.03%   0.00%  noploop  [kernel.kallsyms]  [k] timerqueue_del\n             0.03%   0.03%  noploop  [kernel.kallsyms]  [k] sched_clock_cpu\n             0.02%   0.00%  noploop  [kernel.kallsyms]  [k] account_user_time\n             0.01%   0.00%  noploop  [kernel.kallsyms]  [k] __alloc_pages_nodemask\n             0.00%   0.00%  noploop  [kernel.kallsyms]  [k] native_write_msr_safe\n             0.00%   0.11%  noploop  [kernel.kallsyms]  [k] _raw_spin_lock\n             0.00%   0.06%  noploop  [kernel.kallsyms]  [k] find_get_page\n             0.00%   0.02%  noploop  [kernel.kallsyms]  [k] rcu_check_callbacks\n             0.00%   0.02%  noploop  [kernel.kallsyms]  [k] __current_kernel_time\n\n     As you can see the Overhead column now contains both of ref-cycles\n     and cycles and header line shows group information also - \u0027anon\n     group { ref-cycles, cycles }\u0027.  The output is sorted by period of\n     group leader first.\n\n   - Initial GTK+ annotate browser, from Namhyung Kim.\n\n   - Add option for runtime switching perf data file in perf report,\n     just press \u0027s\u0027 and a menu with the valid files found in the current\n     directory will be presented, from Feng Tang.\n\n   - Add support to display whole group data for raw columns, from Jiri\n     Olsa.\n\n   - Add per processor socket count aggregation in perf stat, from\n     Stephane Eranian.\n\n   - Add interval printing in \u0027perf stat\u0027, from Stephane Eranian.\n\n   - \u0027perf test\u0027 improvements\n\n   - Add support for wildcards in tracepoint system name, from Jiri\n     Olsa.\n\n   - Add anonymous huge page recognition, from Joshua Zhu.\n\n   - perf build-id cache now can show DSOs present in a perf.data file\n     that are not in the cache, to integrate with build-id servers being\n     put in place by organizations such as Fedora.\n\n   - perf top now shares more of the evsel config/creation routines with\n     \u0027record\u0027, paving the way for further integration like \u0027top\u0027\n     snapshots, etc.\n\n   - perf top now supports DWARF callchains.\n\n   - Fix mmap limitations on 32-bit, fix from David Miller.\n\n   - \u0027perf bench numa mem\u0027 NUMA performance measurement suite\n\n   - ... and lots of fixes, performance improvements, cleanups and other\n     improvements I failed to list - see the shortlog and git log for\n     details.\"\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (270 commits)\n  perf/x86/amd: Enable northbridge performance counters on AMD family 15h\n  perf/hwbp: Fix cleanup in case of kzalloc failure\n  perf tools: Fix build with bison 2.3 and older.\n  perf tools: Limit unwind support to x86 archs\n  perf annotate: Make it to be able to skip unannotatable symbols\n  perf gtk/annotate: Fail early if it can\u0027t annotate\n  perf gtk/annotate: Show source lines with gray color\n  perf gtk/annotate: Support multiple event annotation\n  perf ui/gtk: Implement basic GTK2 annotation browser\n  perf annotate: Fix warning message on a missing vmlinux\n  perf buildid-cache: Add --update option\n  uprobes/perf: Avoid uprobe_apply() whenever possible\n  uprobes/perf: Teach trace_uprobe/perf code to use UPROBE_HANDLER_REMOVE\n  uprobes/perf: Teach trace_uprobe/perf code to pre-filter\n  uprobes/perf: Teach trace_uprobe/perf code to track the active perf_event\u0027s\n  uprobes: Introduce uprobe_apply()\n  perf: Introduce hw_perf_event-\u003etp_target and -\u003etp_list\n  uprobes/perf: Always increment trace_uprobe-\u003enhit\n  uprobes/tracing: Kill uprobe_trace_consumer, embed uprobe_consumer into trace_uprobe\n  uprobes/tracing: Introduce is_trace_uprobe_enabled()\n  ...\n"
    },
    {
      "commit": "b7133a9a103655cda254987a3c0975fd9d8c443f",
      "tree": "85422ad8c32f1782a2ed3b87b7264b1b3953c105",
      "parents": [
        "e84cf5d0fd53badf3a93c790e280cc92a69ed999",
        "36a5df85e9a3c218b73f6cf80098016ca3f0410d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:47:58 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:47:58 2013 -0800"
      },
      "message": "Merge branch \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull irq core changes from Ingo Molnar:\n \"The biggest changes are the IRQ-work and printk changes from Frederic\n  Weisbecker, which prepare the code for \u0027full dynticks\u0027 (the ability to\n  stop or slow down the periodic tick arbitrarily, not just in idle time\n  as today):\n\n   - Don\u0027t stop tick with irq works pending.  This fix is generally\n     useful and concerns archs that can\u0027t raise self IPIs.\n\n   - Flush irq works before CPU offlining.\n\n   - Introduce \"lazy\" irq works that can wait for the next tick to be\n     executed, unless it\u0027s stopped.\n\n   - Implement klogd wake up using irq work.  This removes the ad-hoc\n     printk_tick()/printk_needs_cpu() hooks and make it working even in\n     dynticks mode.\n\n   - Cleanups and fixes.\"\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  genirq: Export enable/disable_percpu_irq()\n  arch Kconfig: Remove references to IRQ_PER_CPU\n  irq_work: Remove return value from the irq_work_queue() function\n  genirq: Avoid deadlock in spurious handling\n  printk: Wake up klogd using irq_work\n  irq_work: Make self-IPIs optable\n  irq_work: Warn if there\u0027s still work on cpu_down\n  irq_work: Flush work on CPU_DYING\n  irq_work: Don\u0027t stop the tick with pending works\n  nohz: Add API to check tick state\n  irq_work: Remove CONFIG_HAVE_IRQ_WORK\n  irq_work: Fix racy check on work pending flag\n  irq_work: Fix racy IRQ_WORK_BUSY flag setting\n"
    },
    {
      "commit": "e84cf5d0fd53badf3a93c790e280cc92a69ed999",
      "tree": "abc4d04bc31e5682794d1ea90c38cfeb4d5c9b97",
      "parents": [
        "19f949f52599ba7c3f67a5897ac6be14bfcb1200",
        "ac0e32024b8f40987b3db7d2defdc6b5153ba354"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:45:20 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 17:45:20 2013 -0800"
      },
      "message": "Merge branch \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull RCU changes from Ingo Molnar:\n \"SRCU changes:\n\n   - These include debugging aids, updates that move towards the goal of\n     permitting srcu_read_lock() and srcu_read_unlock() to be used from\n     idle and offline CPUs, and a few small fixes.\n\n  Changes to rcutorture and to RCU documentation:\n\n   - Posted to LKML at https://lkml.org/lkml/2013/1/26/188\n\n  Enhancements to uniprocessor handling in tiny RCU:\n\n   - Posted to LKML at https://lkml.org/lkml/2013/1/27/2\n\n  Tag RCU callbacks with grace-period number to simplify callback\n  advancement:\n\n   - Posted to LKML at https://lkml.org/lkml/2013/1/26/203\n\n  Miscellaneous fixes:\n\n   - Posted to LKML at https://lkml.org/lkml/2013/1/26/204\"\n\n* \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)\n  srcu: use ACCESS_ONCE() to access sp-\u003ecompleted in srcu_read_lock()\n  srcu: Update synchronize_srcu_expedited()\u0027s comments\n  srcu: Update synchronize_srcu()\u0027s comments\n  srcu: Remove checks preventing idle CPUs from calling srcu_read_lock()\n  srcu: Remove checks preventing offline CPUs from calling srcu_read_lock()\n  srcu: Simple cleanup for cleanup_srcu_struct()\n  srcu: Add might_sleep() annotation to synchronize_srcu()\n  srcu: Simplify __srcu_read_unlock() via this_cpu_dec()\n  rcu: Allow rcutorture to be built at low optimization levels\n  rcu: Make rcutorture\u0027s shuffler task shuffle recently added tasks\n  rcu: Allow TREE_PREEMPT_RCU on UP systems\n  rcu: Provide RCU CPU stall warnings for tiny RCU\n  context_tracking: Add comments on interface and internals\n  rcu: Remove obsolete Kconfig option from comment\n  rcu: Remove unused code originally used for context tracking\n  rcu: Consolidate debugging Kconfig options\n  rcu: Correct \u0027optimized\u0027 to \u0027optimize\u0027 in header comment\n  rcu: Trace callback acceleration\n  rcu: Tag callback lists with corresponding grace-period number\n  rcutorture: Don\u0027t compare ptr with 0\n  ...\n"
    },
    {
      "commit": "1438ade5670b56d5386c220e1ad4b5a824a1e585",
      "tree": "3642109a131da8a00a39c409d746618b2c6db797",
      "parents": [
        "112202d9098aae2c36436e5178c0cf3ced423c7b"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Thu Jan 24 16:36:31 2013 +0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 19 10:09:13 2013 -0800"
      },
      "message": "workqueue: un-GPL function delayed_work_timer_fn()\n\ncommit d8e794dfd51c368ed3f686b7f4172830b60ae47b (\"workqueue: set\ndelayed_work-\u003etimer function on initialization\") exports function\ndelayed_work_timer_fn() only for GPL modules. This makes delayed-works\nunusable for non-GPL modules, because initialization macro now requires\nGPL symbol. For example schedule_delayed_work() available for non-GPL.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org # 3.7\n"
    },
    {
      "commit": "fe2b05f7ca9f906be61dced5489f63b8b4d7c770",
      "tree": "c1eb86342c2055087c015b580a63d4c1c21cf742",
      "parents": [
        "5042afe7fe32390e79910ecd0a1f0563d4bca38c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Feb 18 09:52:08 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:43:38 2013 +0100"
      },
      "message": "futex: Revert \"futex: Mark get_robust_list as deprecated\"\n\nThis reverts commit ec0c4274e33c0373e476b73e01995c53128f1257.\n\nget_robust_list() is in use and a removal would break existing user\nspace. With the permission checks in place it\u0027s not longer a security\nhole. Remove the deprecation warnings.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: akpm@linux-foundation.org\nCc: paul.gortmaker@windriver.com\nCc: davej@redhat.com\nCc: keescook@chromium.org\nCc: stable@vger.kernel.org\nCc: ebiederm@xmission.com\n"
    },
    {
      "commit": "a6c0c943a15d0b3d6ac33760cb8f95c75f395895",
      "tree": "0aa3e39340a97d865a3ce9c4f79e2ac3a389ef04",
      "parents": [
        "066361a7c58cb6c8b18c7ce0ee8527bb1ce58460"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 10 11:14:55 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:43:16 2013 +0100"
      },
      "message": "ntp: Make ntp_lock raw\n\nseconds_overflow() is called from hard interrupt context even on\nPreempt-RT. This requires the lock to be a raw_spinlock.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c0540606837af79b2ae101e5e7b2206e3844d150",
      "tree": "4ddf51f76483ad2d252d8e0fc9de15bfc7e94b9c",
      "parents": [
        "ce6711f3d196f09ca0ed29a24dfad42d83912b20"
      ],
      "author": {
        "name": "Ben Greear",
        "email": "greearb@candelatech.com",
        "time": "Wed Feb 06 10:56:19 2013 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:42:44 2013 +0100"
      },
      "message": "lockdep: Print more info when MAX_LOCK_DEPTH is exceeded\n\nThis helps debug cases where a lock is acquired over and\nover without being released.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ben Greear \u003cgreearb@candelatech.com\u003e\nCc: peterz@infradead.org\nLink: http://lkml.kernel.org/r/1360176979-4421-1-git-send-email-greearb@candelatech.com\n[ Changed the printout ordering. ]\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "c06b4f1947213cd0902610fafcabac02d49ad728",
      "tree": "8b83c64b2682c46db32f7987cd8d2795a6bf7397",
      "parents": [
        "f86f75548233a2be7379ac446e91729710d4a5f7"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu Dec 27 11:49:44 2012 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:42:40 2013 +0100"
      },
      "message": "watchdog: Use local_clock for get_timestamp()\n\nThe get_timestamp() function is always called with current cpu,\nthus using local_clock() would be more appropriate and it makes\nthe code shorter and cleaner IMHO.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nAcked-by: Don Zickus \u003cdzickus@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLink: http://lkml.kernel.org/r/1356576585-28782-1-git-send-email-namhyung@kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "f86f75548233a2be7379ac446e91729710d4a5f7",
      "tree": "facc6828693bd882fa4bbf1094b250b09743050d",
      "parents": [
        "0be5c8ff58cf7a66019af2f1236daff731ed318c"
      ],
      "author": {
        "name": "Srivatsa S. Bhat",
        "email": "srivatsa.bhat@linux.vnet.ibm.com",
        "time": "Tue Jan 08 18:35:58 2013 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:42:39 2013 +0100"
      },
      "message": "lockdep: Rename print_unlock_inbalance_bug() to print_unlock_imbalance_bug()\n\nFix the typo in the function name (s/inbalance/imbalance)\n\nSigned-off-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: rostedt@goodmis.org\nCc: peterz@infradead.org\nLink: http://lkml.kernel.org/r/20130108130547.32733.79507.stgit@srivatsabhat.in.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "cdc4e86b58a95005ef500916b4a8e91a0037a822",
      "tree": "208e5eaf42c25fae3dfe5d086687c2a2fa30418b",
      "parents": [
        "993db4b45fd99949d8f6e004a7744b523dca473a"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 15 23:47:07 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Feb 19 08:05:53 2013 +0100"
      },
      "message": "cputime: Remove irqsave from seqlock readers\n\nThe reader side code has no requirement to disable interrupts while\nsampling data. The sequence counter is enough to ensure consistency.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "6338a53a2bd02d5878ab449371323364b7cc7694",
      "tree": "461c4acae130771b9856715bc2cfdc341b6e5964",
      "parents": [
        "8064b3cf750e71fdaf306abb4433a93d0f45f4c9",
        "18cf0d0784b4a634472ed24d0d7ca1c721d93e90"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 18 23:32:49 2013 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Feb 18 23:34:21 2013 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net into net\n\nPull in \u0027net\u0027 to take in the bug fixes that didn\u0027t make it into\n3.8-final.\n\nAlso, deal with the semantic conflict of the change made to\nnet/ipv6/xfrm6_policy.c   A missing rt6-\u003en neighbour release\nwas added to \u0027net\u0027, but in \u0027net-next\u0027 we no longer cache the\nneighbour entries in the ipv6 routes so that change is not\nappropriate there.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "36a5df85e9a3c218b73f6cf80098016ca3f0410d",
      "tree": "83c8d0189615193b2d6111a48ec79097d1661f54",
      "parents": [
        "077931446b85e7858bf9dc0927cd116669b965d2"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Fri Feb 01 15:04:26 2013 -0500"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Feb 18 21:42:25 2013 +0100"
      },
      "message": "genirq: Export enable/disable_percpu_irq()\n\nThese functions are used by the tilegx onchip network driver, and it\u0027s\nuseful to be able to load that driver as a module.\n\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nLink: http://lkml.kernel.org/r/201302012043.r11KhNZF024371@farm-0021.internal.tilera.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f169007b2773f285e098cb84c74aac0154d65ff7",
      "tree": "6b295320c25b9fe8c1e4e94fcc35570134ebb8be",
      "parents": [
        "810cbee4fad570ff167132d4ecf247d99c48f71d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Feb 18 14:13:35 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 18 09:31:35 2013 -0800"
      },
      "message": "cgroup: fail if monitored file and event_control are in different cgroup\n\nIf we pass fd of memory.usage_in_bytes of cgroup A to cgroup.event_control\nof cgroup B, then we won\u0027t get memory usage notification from A but B!\n\nWhat\u0027s worse, if A and B are in different mount hierarchy, we\u0027ll end up\naccessing NULL pointer!\n\nDisallow this kind of invalid usage.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "810cbee4fad570ff167132d4ecf247d99c48f71d",
      "tree": "2806f56a033f43b17ad2c547b2153941c0e77f40",
      "parents": [
        "63f43f55c9bbc14f76b582644019b8a07dc8219a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Feb 18 18:56:14 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 18 09:17:24 2013 -0800"
      },
      "message": "cgroup: fix cgroup_rmdir() vs close(eventfd) race\n\ncommit 205a872bd6f9a9a09ef035ef1e90185a8245cc58 (\"cgroup: fix lockdep\nwarning for event_control\") solved a deadlock by introducing a new\nbug.\n\nMove cgrp-\u003eevent_list to a temporary list doesn\u0027t mean you can traverse\nthis list locklessly, because at the same time cgroup_event_wake() can\nbe called and remove the event from the list. The result of this race\nis disastrous.\n\nWe adopt the way how kvm irqfd code implements race-free event removal,\nwhich is now described in the comments in cgroup_event_wake().\n\nv3:\n- call eventfd_signal() no matter it\u0027s eventfd close or cgroup removal\nthat removes the cgroup event.\n\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "63f43f55c9bbc14f76b582644019b8a07dc8219a",
      "tree": "c9ab6bbf633b6d441c67c3735782b6011afc5b17",
      "parents": [
        "71b5707e119653039e6e95213f00479668c79b75"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Jan 25 16:08:01 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 18 09:08:15 2013 -0800"
      },
      "message": "cpuset: fix cpuset_print_task_mems_allowed() vs rename() race\n\nrename() will change dentry-\u003ed_name. The result of this race can\nbe worse than seeing partially rewritten name, but we might access\na stale pointer because rename() will re-allocate memory to hold\na longer name.\n\nIt\u0027s safe in the protection of dentry-\u003ed_lock.\n\nv2: check NULL dentry before acquiring dentry lock.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "71b5707e119653039e6e95213f00479668c79b75",
      "tree": "cb0dfe84c3b8ec46efce2aa4185342a3a75cc3a1",
      "parents": [
        "9ed8a659703876a9fe96ab86d1b296c2f0084242"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Jan 24 14:43:28 2013 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 18 09:08:10 2013 -0800"
      },
      "message": "cgroup: fix exit() vs rmdir() race\n\nIn cgroup_exit() put_css_set_taskexit() is called without any lock,\nwhich might lead to accessing a freed cgroup:\n\nthread1                           thread2\n---------------------------------------------\nexit()\n  cgroup_exit()\n    put_css_set_taskexit()\n      atomic_dec(cgrp-\u003ecount);\n                                   rmdir();\n      /* not safe !! */\n      check_for_release(cgrp);\n\nrcu_read_lock() can be used to make sure the cgroup is alive.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "7113fe74c10bc01abfdad2fe1f9ca023b0f83685",
      "tree": "6b301a39850b9d41acb4bf3084dde2f012a5affc",
      "parents": [
        "a68d35323b091f51e0957313f0f871f187879143",
        "957d1282bb8c07e682e142b9237cd9fcb8348a0b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Fri Feb 15 13:58:54 2013 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Fri Feb 15 13:58:54 2013 +0100"
      },
      "message": "Merge branch \u0027pm-assorted\u0027\n\n* pm-assorted:\n  suspend: enable freeze timeout configuration through sys\n  ACPI: enable ACPI SCI during suspend\n  PM: Introduce suspend state PM_SUSPEND_FREEZE\n  PM / Runtime: Add new helper function: pm_runtime_active()\n  PM / tracing: remove deprecated power trace API\n  PM: don\u0027t use [delayed_]work_pending()\n  PM / Domains: don\u0027t use [delayed_]work_pending()\n"
    },
    {
      "commit": "e6c42c295e071dd74a66b5a9fcf4f44049888ed8",
      "tree": "7d417f64b7fa04511b4006eb4907ef41b7e401ed",
      "parents": [
        "9f4646d28362bc424b8a4c7d09ea1c2f1759371a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Fri Feb 15 11:08:11 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Feb 15 11:41:56 2013 +0100"
      },
      "message": "posix-cpu-timers: Fix nanosleep task_struct leak\n\nThe trinity fuzzer triggered a task_struct reference leak via\nclock_nanosleep with CPU_TIMERs. do_cpu_nanosleep() calls\nposic_cpu_timer_create(), but misses a corresponding\nposix_cpu_timer_del() which leads to the task_struct reference leak.\n\nReported-and-tested-by: Tommi Rantala \u003ctt.rantala@gmail.com\u003e\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/20130215100810.GF4392@redhat.com\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "02e176af92f3e2e9ec3a48792036566af2dcd534",
      "tree": "9d4dd00367eeb909edf4c1a30e2e8178efb9dc5a",
      "parents": [
        "85df3b3769222894e9692b383c7af124b7721086"
      ],
      "author": {
        "name": "Daniel Baluta",
        "email": "dbaluta@ixiacom.com",
        "time": "Wed Feb 06 23:29:20 2013 +0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Feb 14 17:06:39 2013 -0300"
      },
      "message": "perf/hwbp: Fix cleanup in case of kzalloc failure\n\nObviously this is a typo and could result in memory leaks if kzalloc\nfails on a given cpu.\n\nSigned-off-by: Daniel Baluta \u003cdbaluta@ixiacom.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1360186160-7566-1-git-send-email-dbaluta@ixiacom.com\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "9f4646d28362bc424b8a4c7d09ea1c2f1759371a",
      "tree": "0ff9dc36f1ef598736725f3eb30e164128d39774",
      "parents": [
        "86c8ead593305915729a7b67f738832764fb4ba7",
        "84e345e4e209cbe796c88fa2ad1732d7121ec100"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 19:46:10 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 19:46:10 2013 +0100"
      },
      "message": "Merge branch \u0027fortglx/3.9/time\u0027 of git://git.linaro.org/people/jstultz/linux into timers/core\n"
    },
    {
      "commit": "14e568e78f6f80ca1e27256641ddf524c7dbdc51",
      "tree": "1f75f09c7f8adfa6dd55ef9bd0b547fcaf700f45",
      "parents": [
        "860a0ffaa3e1a9cf0ebb5f43d6a2a2ce67463e93"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jan 31 12:11:14 2013 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 15:29:38 2013 +0100"
      },
      "message": "stop_machine: Use smpboot threads\n\nUse the smpboot thread infrastructure. Mark the stopper thread\nselfparking and park it after it has finished the take_cpu_down()\nwork.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Arjan van de Veen \u003carjan@infradead.org\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Richard Weinberger \u003crw@linutronix.de\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20130131120741.686315164@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "860a0ffaa3e1a9cf0ebb5f43d6a2a2ce67463e93",
      "tree": "004c5b928e59605276609459d92db21bb41204e3",
      "parents": [
        "7d7e499f7333f68b7e7f67d14b9c1480913b4afb"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jan 31 12:11:13 2013 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 15:29:37 2013 +0100"
      },
      "message": "stop_machine: Store task reference in a separate per cpu variable\n\nTo allow the stopper thread being managed by the smpboot thread\ninfrastructure separate out the task storage from the stopper data\nstructure.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Arjan van de Veen \u003carjan@infradead.org\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Richard Weinberger \u003crw@linutronix.de\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20130131120741.626690384@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "7d7e499f7333f68b7e7f67d14b9c1480913b4afb",
      "tree": "6924ef4eb2a08d7129dc1620d1a557e484df3680",
      "parents": [
        "211b0cdc7dc574e5e756bdf1cc2f4a16b7f6e07e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Jan 31 12:11:12 2013 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Feb 14 15:29:37 2013 +0100"
      },
      "message": "smpboot: Allow selfparking per cpu threads\n\nThe stop machine threads are still killed when a cpu goes offline. The\nreason is that the thread is used to bring the cpu down, so it can\u0027t\nbe parked along with the other per cpu threads.\n\nAllow a per cpu thread to be excluded from automatic parking, so it\ncan park itself once it\u0027s done\n\nAdd a create callback function as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: Arjan van de Veen \u003carjan@infradead.org\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Richard Weinberger \u003crw@linutronix.de\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20130131120741.553993267@linutronix.de\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d64008a8f30e0b381b292788ec6f3ee509b3bb40",
      "tree": "176340cd7acbaf715abe91645b553db46f18b679",
      "parents": [
        "e9b04b5b67ec628a5e9a312e14b6864f8f73ba12"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Nov 25 23:12:10 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Feb 14 09:21:15 2013 -0500"
      },
      "message": "burying unused conditionals\n\n__ARCH_WANT_SYS_RT_SIGACTION,\n__ARCH_WANT_SYS_RT_SIGSUSPEND,\n__ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND,\n__ARCH_WANT_COMPAT_SYS_SCHED_RR_GET_INTERVAL - not used anymore\nCONFIG_GENERIC_{SIGALTSTACK,COMPAT_RT_SIG{ACTION,QUEUEINFO,PENDING,PROCMASK}} -\ncan be assumed always set.\n"
    },
    {
      "commit": "e9b04b5b67ec628a5e9a312e14b6864f8f73ba12",
      "tree": "bd147c23da22edc74fd8c381b0f053678599615f",
      "parents": [
        "9b25d604182169a08b206306b312d2df26b5f502"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Nov 20 11:14:10 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Feb 14 09:21:15 2013 -0500"
      },
      "message": "make do_sigaltstack() static\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "112202d9098aae2c36436e5178c0cf3ced423c7b",
      "tree": "2297f17b2ba0c556173566560f33fe7a1b20a904",
      "parents": [
        "8d03ecfe471802d6afe97da97722b6924533aa82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:12 2013 -0800"
      },
      "message": "workqueue: rename cpu_workqueue to pool_workqueue\n\nworkqueue has moved away from global_cwqs to worker_pools and with the\nscheduled custom worker pools, wforkqueues will be associated with\npools which don\u0027t have anything to do with CPUs.  The workqueue code\nwent through significant amount of changes recently and mass renaming\nisn\u0027t likely to hurt much additionally.  Let\u0027s replace \u0027cpu\u0027 with\n\u0027pool\u0027 so that it reflects the current design.\n\n* s/struct cpu_workqueue_struct/struct pool_workqueue/\n* s/cpu_wq/pool_wq/\n* s/cwq/pwq/\n\nThis patch is purely cosmetic.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "8d03ecfe471802d6afe97da97722b6924533aa82",
      "tree": "1178cacfdd36358665f9a4c6325329346b221dd0",
      "parents": [
        "1dd638149f1f9d7d7dbb32591d5c7c2a0ea36264"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:10 2013 -0800"
      },
      "message": "workqueue: reimplement is_chained_work() using current_wq_worker()\n\nis_chained_work() was added before current_wq_worker() and implemented\nits own ham-fisted way of finding out whether %current is a workqueue\nworker - it iterates through all possible workers.\n\nDrop the custom implementation and reimplement using\ncurrent_wq_worker().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1dd638149f1f9d7d7dbb32591d5c7c2a0ea36264",
      "tree": "454399689b5d5016eefbd9f12e39b2674a8ebb33",
      "parents": [
        "8594fade39d3ad02ef856b8c53b5d7cc538a55f5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:07 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 13 19:29:07 2013 -0800"
      },
      "message": "workqueue: fix is_chained_work() regression\n\nc9e7cf273f (\"workqueue: move busy_hash from global_cwq to\nworker_pool\") incorrectly converted is_chained_work() to use\nget_gcwq() inside for_each_gcwq_cpu() while removing get_gcwq().\n\nAs cwq might not exist for all possible workqueue CPUs, @cwq can be\nNULL and the following cwq deferences can lead to oops.\n\nFix it by using for_each_cwq_cpu() instead, which is the better one to\nuse anyway as we only need to check pools that the wq is associated\nwith.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6e6668845fe593414a938b7726d6359b5570ac5a",
      "tree": "9cd88fc22e8f5eb8250fbd27466b526f57f8a3d4",
      "parents": [
        "4ba902b5741859a04fdb90d675b9a87721a3fd59"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Feb 12 13:46:23 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 12 14:34:00 2013 -0800"
      },
      "message": "kernel/pid.c: reenable interrupts when alloc_pid() fails because init has exited\n\nWe\u0027re forgetting to reenable local interrupts on an error path.\n\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nReported-by: Josh Boyer \u003cjwboyer@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86c8ead593305915729a7b67f738832764fb4ba7",
      "tree": "eb33b75076c2b50dc8ae8ec0e240de876d31cd45",
      "parents": [
        "b22affe0aef429d657bc6505aacb1c569340ddd2",
        "5d1d9a29bc0772abee765f09513779a2ef0ebbfd"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 12 20:22:56 2013 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 12 20:22:56 2013 +0100"
      },
      "message": "Merge branch \u0027timers/for-arm\u0027 into timers/core\n"
    },
    {
      "commit": "5d1d9a29bc0772abee765f09513779a2ef0ebbfd",
      "tree": "7905268873812518cf4f6196f2100e5224733f22",
      "parents": [
        "12ad10004645d38356b14d1fbba379c523a61916"
      ],
      "author": {
        "name": "Mark Rutland",
        "email": "mark.rutland@arm.com",
        "time": "Fri Feb 08 15:24:07 2013 +0000"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Feb 12 20:22:28 2013 +0100"
      },
      "message": "clockevents: Fix generic broadcast for FEAT_C3STOP\n\nCommit 12ad100046: \"clockevents: Add generic timer broadcast function\"\nmade tick_device_uses_broadcast set up the generic broadcast function\nfor dummy devices (where !tick_device_is_functional(dev)), but neglected\nto set up the broadcast function for devices that stop in low power\nstates (with the CLOCK_EVT_FEAT_C3STOP flag).\n\nWhen these devices enter low power states they will not have the generic\nbroadcast function assigned, and will bring down the system when an\nattempt is made to broadcast to them.\n\nThis patch ensures that the broadcast function is also assigned for\ndevices which require broadcast in low power states.\n\nReported-by: Stephen Warren \u003cswarren@nvidia.com\u003e\nSigned-off-by: Mark Rutland \u003cmark.rutland@arm.com\u003e\nTested-by: Stephen Warren \u003cswarren@nvidia.com\u003e\nCc: linux-arm-kernel@lists.infradead.org\nCc: nico@linaro.org\nCc: Marc.Zyngier@arm.com\nCc: Will.Deacon@arm.com\nCc: santosh.shilimkar@ti.com\nCc: john.stultz@linaro.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "94c16ea6ea75f8f5de92d10a647155ccf0d05436",
      "tree": "012d247bf686e1c49ef3ad0048b94de4970c066b",
      "parents": [
        "cf55f672c325f234d96911571a775b2e7d9cf284",
        "88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof@lixom.net",
        "time": "Sat Feb 09 16:41:37 2013 -0800"
      },
      "committer": {
        "name": "Olof Johansson",
        "email": "olof@lixom.net",
        "time": "Sat Feb 09 16:41:37 2013 -0800"
      },
      "message": "Merge tag \u0027v3.8-rc6\u0027 into next/cleanup\n\nLinux 3.8-rc6\n"
    },
    {
      "commit": "957d1282bb8c07e682e142b9237cd9fcb8348a0b",
      "tree": "a9b5690066c3268e7971c363b34f1a5deb664e2e",
      "parents": [
        "89a22dadb8810983868f5bbbc5530b27bf714a60"
      ],
      "author": {
        "name": "Li Fei",
        "email": "fei.li@intel.com",
        "time": "Fri Feb 01 08:56:03 2013 +0000"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Sat Feb 09 22:32:48 2013 +0100"
      },
      "message": "suspend: enable freeze timeout configuration through sys\n\nAt present, the value of timeout for freezing is 20s, which is\nmeaningless in case that one thread is frozen with mutex locked\nand another thread is trying to lock the mutex, as this time of\nfreezing will fail unavoidably.\nAnd if there is no new wakeup event registered, the system will\nwaste at most 20s for such meaningless trying of freezing.\n\nWith this patch, the value of timeout can be configured to smaller\nvalue, so such meaningless trying of freezing will be aborted in\nearlier time, and later freezing can be also triggered in earlier\ntime. And more power will be saved.\nIn normal case on mobile phone, it costs real little time to freeze\nprocesses. On some platform, it only costs about 20ms to freeze\nuser space processes and 10ms to freeze kernel freezable threads.\n\nSigned-off-by: Liu Chuansheng \u003cchuansheng.liu@intel.com\u003e\nSigned-off-by: Li Fei \u003cfei.li@intel.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crafael.j.wysocki@intel.com\u003e\n"
    },
    {
      "commit": "7e73c5ae6e7991a6c01f6d096ff8afaef4458c36",
      "tree": "cd2df301d9ccda6d18f6cbe09f481f38cb78271a",
      "parents": [
        "fbadc58dd3a52c330c8f3926aa93011bf9d91fa0"
      ],
      "author": {
        "name": "Zhang Rui",
        "email": "rui.zhang@intel.com",
        "time": "Wed Feb 06 13:00:36 2013 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rafael.j.wysocki@intel.com",
        "time": "Sat Feb 09 22:30:44 2013 +0100"
      },
      "message": "PM: Introduce suspend state PM_SUSPEND_FREEZE\n\nPM_SUSPEND_FREEZE state is a general state that\ndoes not need any platform specific support, it equals\nfrozen processes + suspended devices + idle processors.\n\nCompared with PM_SUSPEND_MEMORY,\nPM_SUSPEND_FREEZE saves less power\nbecause the system is still in a running state.\nPM_SUSPEND_FREEZE has less resume latency because it does not\ntouch BIOS, and the processors are in idle state.\n\nCompared with RTPM/idle,\nPM_SUSPEND_FREEZE saves more power as\n1. the processor has longer sleep time because processes are frozen.\n   The deeper c-state the processor supports, more power saving we can get.\n2. PM_SUSPEND_FREEZE uses system suspend code path, thus we can get\n   more power saving from the devices that does not have good RTPM support.\n\nThis state is useful for\n1) platforms that do not have STR, or have a broken STR.\n2) platforms that have an extremely low power idle state,\n   which can be used to replace STR.\n\nThe following describes how PM_SUSPEND_FREEZE state works.\n1. echo freeze \u003e /sys/power/state\n2. the processes are frozen.\n3. all the devices are suspended.\n4. all the processors are blocked by a wait queue\n5. all the processors idles and enters (Deep) c-state.\n6. an interrupt fires.\n7. a processor is woken up and handles the irq.\n8. if it is a general event,\n   a) the irq handler runs and quites.\n   b) goto step 4.\n9. if it is a real wake event, say, power button pressing, keyboard touch, mouse moving,\n   a) the irq handler runs and activate the wakeup source\n   b) wakeup_source_activate() notifies the wait queue.\n   c) system starts resuming from PM_SUSPEND_FREEZE\n10. all the devices are resumed.\n11. all the processes are unfrozen.\n12. system is back to working.\n\nKnown Issue:\nThe wakeup of this new PM_SUSPEND_FREEZE state may behave differently\nfrom the previous suspend state.\nTake ACPI platform for example, there are some GPEs that only enabled\nwhen the system is in sleep state, to wake the system backk from S3/S4.\nBut we are not touching these GPEs during transition to PM_SUSPEND_FREEZE.\nThis means we may lose some wake event.\nBut on the other hand, as we do not disable all the Interrupts during\nPM_SUSPEND_FREEZE, we may get some extra \"wakeup\" Interrupts, that are\nnot available for S3/S4.\n\nThe patches has been tested on an old Sony laptop, and here are the results:\n\nAverage Power:\n1. RPTM/idle for half an hour:\n   14.8W, 12.6W, 14.1W, 12.5W, 14.4W, 13.2W, 12.9W\n2. Freeze for half an hour:\n   11W, 10.4W, 9.4W, 11.3W 10.5W\n3. RTPM/idle for three hours:\n   11.6W\n4. Freeze for three hours:\n   10W\n5. Suspend to Memory:\n   0.5~0.9W\n\nAverage Resume Latency:\n1. RTPM/idle with a black screen: (From pressing keyboard to screen back)\n   Less than 0.2s\n2. Freeze: (From pressing power button to screen back)\n   2.50s\n3. Suspend to Memory: (From pressing power button to screen back)\n   4.33s\n\n\u003eFrom the results, we can see that all the platforms should benefit from\nthis patch, even if it does not have Low Power S0.\n\nSigned-off-by: Zhang Rui \u003crui.zhang@intel.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crafael.j.wysocki@intel.com\u003e\n"
    },
    {
      "commit": "ad72b3bea744b4db01c89af0f86f3e8920d354df",
      "tree": "8482593d6330783150e88ff7181a1484d3156265",
      "parents": [
        "7c99e0bf86fdc1dee238eb6e213b980f887b68f1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 21 17:57:00 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 09 11:32:42 2013 -0800"
      },
      "message": "kprobes: fix wait_for_kprobe_optimizer()\n\nwait_for_kprobe_optimizer() seems largely broken.  It uses\noptimizer_comp which is never re-initialized, so\nwait_for_kprobe_optimizer() will never wait for anything once\nkprobe_optimizer() finishes all pending jobs for the first time.\n\nAlso, aside from completion, delayed_work_pending() is %false once\nkprobe_optimizer() starts execution and wait_for_kprobe_optimizer()\nwon\u0027t wait for it.\n\nReimplement it so that it flushes optimizing_work until\n[un]optimizing_lists are empty.  Note that this also makes\noptimizing_work execute immediately if someone\u0027s waiting for it, which\nis the nicer behavior.\n\nOnly compile tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "84e345e4e209cbe796c88fa2ad1732d7121ec100",
      "tree": "f73f35d0e72a6c6f3e4b3ef430608aca3a5e8d54",
      "parents": [
        "6f16eebe1ff82176339a0439c98ebec9768b0ee2"
      ],
      "author": {
        "name": "Prarit Bhargava",
        "email": "prarit@redhat.com",
        "time": "Fri Feb 08 17:59:53 2013 -0500"
      },
      "committer": {
        "name": "John Stultz",
        "email": "john.stultz@linaro.org",
        "time": "Fri Feb 08 15:07:05 2013 -0800"
      },
      "message": "time, Fix setting of hardware clock in NTP code\n\nAt init time, if the system time is \"warped\" forward in warp_clock()\nit will differ from the hardware clock by sys_tz.tz_minuteswest.  This time\ndifference is not taken into account when ntp updates the hardware clock,\nand this causes the system time to jump forward by this offset every reboot.\n\nThe kernel must take this offset into account when writing the system time\nto the hardware clock in the ntp code.  This patch adds\npersistent_clock_is_local which indicates that an offset has been applied\nin warp_clock() and accounts for the \"warp\" before writing the hardware\nclock.\n\nx86 does not have this problem as rtc writes are software limited to a\n+/-15 minute window relative to the current rtc time.  Other arches, such\nas powerpc, however do a full synchronization of the system time to the\nrtc and will see this problem.\n\n[v2]: generated against tip/timers/core\n\nSigned-off-by: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\n"
    },
    {
      "commit": "fd5023111cf720db890ef34f305ac5d427e690a0",
      "tree": "4d21e9a02bfbdafe5fc598af0755db791238dbe7",
      "parents": [
        "8b9a4d56866e0dca6ae886ed9bff777e50d0b70c",
        "836dc9e3fbbab0c30aa6e664417225f5c1fb1c39"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 08 18:02:14 2013 -0500"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Feb 08 18:02:14 2013 -0500"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nSynchronize with \u0027net\u0027 in order to sort out some l2tp, wireless, and\nipv6 GRE fixes that will be built on top of in \u0027net-next\u0027.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b2fe8ba674e8acbb9e8e63510b802c6d054d88a3",
      "tree": "1bd1defbfe3f285dfa7c77f94bc5523ac4a82679",
      "parents": [
        "f42d24a1d20d2e72d1e5d48930f18b138dfad117"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Feb 04 19:05:43 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:08 2013 +0100"
      },
      "message": "uprobes/perf: Avoid uprobe_apply() whenever possible\n\nuprobe_perf_open/close call the costly uprobe_apply() every time,\nwe can avoid it if:\n\n\t- \"nr_systemwide !\u003d 0\" is not changed.\n\n\t- There is another process/thread with the same -\u003emm.\n\n\t- copy_proccess() does inherit_event(). dup_mmap() preserves the\n\t  inserted breakpoints.\n\n\t- event-\u003eattr.enable_on_exec \u003d\u003d T, we can rely on uprobe_mmap()\n\t  called by exec/mmap paths.\n\n\t- tp_target is exiting. Only _close() checks PF_EXITING, I don\u0027t\n\t  think TRACE_REG_PERF_OPEN can hit the dying task too often.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "f42d24a1d20d2e72d1e5d48930f18b138dfad117",
      "tree": "10696fc2f0a21d60a7fb1581efecd172435f0408",
      "parents": [
        "31ba334836c0ac0039084859f14a5b96858493dc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Feb 04 17:48:34 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:07 2013 +0100"
      },
      "message": "uprobes/perf: Teach trace_uprobe/perf code to use UPROBE_HANDLER_REMOVE\n\nChange uprobe_trace_func() and uprobe_perf_func() to return \"int\". Change\nuprobe_dispatcher() to return \"trace_ret | perf_ret\" although this is not\nneeded, currently TP_FLAG_TRACE/TP_FLAG_PROFILE are mutually exclusive.\n\nThe only functional change is that uprobe_perf_func() checks the filtering\ntoo and returns UPROBE_HANDLER_REMOVE if nobody wants to trace current.\n\nTesting:\n\n\t# perf probe -x /lib/libc.so.6 syscall\n\n\t# perf record -e probe_libc:syscall -i perl -e \u0027fork; syscall -1 for 1..10; wait\u0027\n\n\t# perf report --show-total-period\n\t\t100.00%            10     perl  libc-2.8.so    [.] syscall\n\nBefore this patch:\n\n\t# cat /sys/kernel/debug/tracing/uprobe_profile\n\t\t/lib/libc.so.6 syscall\t\t\t\t20\n\nA child process doesn\u0027t have a counter, but still it hits this breakoint\n\"copied\" by dup_mmap().\n\nAfter the patch:\n\n\t# cat /sys/kernel/debug/tracing/uprobe_profile\n\t\t/lib/libc.so.6 syscall\t\t\t\t11\n\nThe child process hits this int3 only once and does unapply_uprobe().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "31ba334836c0ac0039084859f14a5b96858493dc",
      "tree": "a6f8d72d58f165717481aae43fcabe25b326dce3",
      "parents": [
        "736288ba5016e255869c26296014eeff649971c2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Feb 04 17:11:58 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:07 2013 +0100"
      },
      "message": "uprobes/perf: Teach trace_uprobe/perf code to pre-filter\n\nFinally implement uprobe_perf_filter() which checks -\u003enr_systemwide or\n-\u003eperf_events to figure out whether we need to insert the breakpoint.\n\nuprobe_perf_open/close are changed to do uprobe_apply(true/false) when\nthe new perf event comes or goes away.\n\nNote that currently this is very suboptimal:\n\n\t- uprobe_register() called by TRACE_REG_PERF_REGISTER becomes a\n\t  heavy nop, consumer-\u003efilter() always returns F at this stage.\n\n\t  As it was already discussed we need uprobe_register_only() to\n\t  avoid the costly register_for_each_vma() when possible.\n\n\t- uprobe_apply() is oftenly overkill. Unless \"nr_systemwide !\u003d 0\"\n\t  changes we need uprobe_apply_mm(), unapply_uprobe() is almost\n\t  what we need.\n\n\t- uprobe_apply() can be simply avoided sometimes, see the next\n\t  changes.\n\nTesting:\n\n\t# perf probe -x /lib/libc.so.6 syscall\n\n\t# perl -e \u0027syscall -1 while 1\u0027 \u0026\n\t[1] 530\n\n\t# perf record -e probe_libc:syscall perl -e \u0027syscall -1 for 1..10; sleep 1\u0027\n\n\t# perf report --show-total-period\n\t\t100.00%            10     perl  libc-2.8.so    [.] syscall\n\nBefore this patch:\n\n\t# cat /sys/kernel/debug/tracing/uprobe_profile\n\t\t/lib/libc.so.6 syscall\t\t\t\t79291\n\nA huge -\u003enrhit \u003d\u003d 79291 reflects the fact that the background process\n530 constantly hits this breakpoint too, even if doesn\u0027t contribute to\nthe output.\n\nAfter the patch:\n\n\t# cat /sys/kernel/debug/tracing/uprobe_profile\n\t\t/lib/libc.so.6 syscall\t\t\t\t10\n\nThis shows that only the target process was punished by int3.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "736288ba5016e255869c26296014eeff649971c2",
      "tree": "235ab829ec63136e19d97a817489484f88ad3da8",
      "parents": [
        "bdf8647c44766590ed02f9a84a450a796558b753"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Feb 03 20:58:35 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:06 2013 +0100"
      },
      "message": "uprobes/perf: Teach trace_uprobe/perf code to track the active perf_event\u0027s\n\nIntroduce \"struct trace_uprobe_filter\" which records the \"active\"\nperf_event\u0027s attached to ftrace_event_call. For the start we simply\nuse list_head, we can optimize this later if needed. For example, we\ndo not really need to record an event with -\u003eparent !\u003d NULL, we can\nrely on parent-\u003echild_list. And we can certainly do some optimizations\nfor the case when 2 events have the same -\u003etp_target or tp_target-\u003emm.\n\nChange trace_uprobe_register() to process TRACE_REG_PERF_OPEN/CLOSE\nand add/del this perf_event to the list.\n\nWe can probably avoid any locking, but lets start with the \"obvioulsy\ncorrect\" trace_uprobe_filter-\u003erwlock which protects everything.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "bdf8647c44766590ed02f9a84a450a796558b753",
      "tree": "fb3510335d4c1ce67e109df2f80eb26c67d8b589",
      "parents": [
        "f22c1bb6b4706be3502b378cb14564449b15f983"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Feb 03 19:21:12 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:04 2013 +0100"
      },
      "message": "uprobes: Introduce uprobe_apply()\n\nCurrently it is not possible to change the filtering constraints after\nuprobe_register(), so a consumer can not, say, start to trace a task/mm\nwhich was previously filtered out, or remove the no longer needed bp\u0027s.\n\nIntroduce uprobe_apply() which simply does register_for_each_vma() again\nto consult uprobe_consumer-\u003efilter() and install/remove the breakpoints.\nThe only complication is that register_for_each_vma() can no longer\nassume that uprobe-\u003econsumers should be consulter if is_register \u003d\u003d T,\nso we change it to accept \"struct uprobe_consumer *new\" instead.\n\nUnlike uprobe_register(), uprobe_apply(true) doesn\u0027t do \"unregister\" if\nregister_for_each_vma() fails, it is up to caller to handle the error.\n\nNote: we probably need to cleanup the current interface, it is strange\nthat uprobe_apply/unregister need inode/offset. We should either change\nuprobe_register() to return \"struct uprobe *\", or add a private -\u003euprobe\nmember in uprobe_consumer. And in the long term uprobe_apply() should\ntake a single argument, uprobe or consumer, even \"bool add\" should go\naway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "f22c1bb6b4706be3502b378cb14564449b15f983",
      "tree": "ac7d09e3d42f4ab77cac56b9cb7fba2d4bcabf06",
      "parents": [
        "1b47aefd9b6bd439a4be43c47acd22987ac22db8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Feb 02 16:27:52 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:28:02 2013 +0100"
      },
      "message": "perf: Introduce hw_perf_event-\u003etp_target and -\u003etp_list\n\nsys_perf_event_open()-\u003eperf_init_event(event) is called before\nfind_get_context(event), this means that event-\u003ectx \u003d\u003d NULL when\nclass-\u003ereg(TRACE_REG_PERF_REGISTER/OPEN) is called and thus it\ncan\u0027t know if this event is per-task or system-wide.\n\nThis patch adds hw_perf_event-\u003etp_target for PERF_TYPE_TRACEPOINT,\nthis is analogous to PERF_TYPE_BREAKPOINT/bp_target we already have.\nThe patch also moves -\u003ebp_target up so that it can overlap with the\nnew member, this can help the compiler to generate the better code.\n\ntrace_uprobe_register() will use it for prefiltering to avoid the\nunnecessary breakpoints in mm\u0027s we do not want to trace.\n\n-\u003etp_target doesn\u0027t have its own reference, but we can rely on the\nfact that either sys_perf_event_open() holds a reference, or it is\nequal to event-\u003ectx-\u003etask. So this pointer is always valid until\nfree_event().\n\nAlso add the \"struct list_head tp_list\" into this union. It is not\nstrictly necessary, but it can simplify the next changes and we can\nadd it for free.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "1b47aefd9b6bd439a4be43c47acd22987ac22db8",
      "tree": "a3d0a40ce94f7e57d4375a77a0c74c0001b4bb67",
      "parents": [
        "a932b7381f81235530c3d0acbd3ba2c7537d78e5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 31 19:55:27 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:24:34 2013 +0100"
      },
      "message": "uprobes/perf: Always increment trace_uprobe-\u003enhit\n\nMove tu-\u003enhit++ from uprobe_trace_func() to uprobe_dispatcher().\n\n-\u003enhit counts how many time we hit the breakpoint inserted by this\nuprobe, we do not want to loose this info if uprobe was enabled by\nsys_perf_event_open().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a932b7381f81235530c3d0acbd3ba2c7537d78e5",
      "tree": "01fb4bbdd21cb67c63b6302ffbbbda22fdcbebcd",
      "parents": [
        "b64b007797c1e6d6b745c93c296ba1d5f4d72d86"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 31 19:47:23 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:24:33 2013 +0100"
      },
      "message": "uprobes/tracing: Kill uprobe_trace_consumer, embed uprobe_consumer into trace_uprobe\n\ntrace_uprobe-\u003econsumer and \"struct uprobe_trace_consumer\" add the\nunnecessary indirection and complicate the code for no reason.\n\nThis patch simply embeds uprobe_consumer into \"struct trace_uprobe\",\nall other changes only fix the compilation errors.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "b64b007797c1e6d6b745c93c296ba1d5f4d72d86",
      "tree": "b2cfd860f68b421484d7992f354d62b8e6b7f1ce",
      "parents": [
        "7e4e28c53963e6cfa94d8109bb8f5233c5659048"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 31 19:15:30 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:24:30 2013 +0100"
      },
      "message": "uprobes/tracing: Introduce is_trace_uprobe_enabled()\n\nprobe_event_enable/disable() check tu-\u003econsumer !\u003d NULL to avoid the\nwrong uprobe_register/unregister().\n\nWe are going to kill this pointer and \"struct uprobe_trace_consumer\",\nso we add the new helper, is_trace_uprobe_enabled(), which can rely\non TP_FLAG_TRACE/TP_FLAG_PROFILE instead.\n\nNote: the current logic doesn\u0027t look optimal, it is not clear why\nTP_FLAG_TRACE/TP_FLAG_PROFILE are mutually exclusive, we will probably\nchange this later.\n\nAlso kill the unused TP_FLAG_UPROBE.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7e4e28c53963e6cfa94d8109bb8f5233c5659048",
      "tree": "5405bc0552ef0f2d8c67bb9ef6b391f5a7a504b3",
      "parents": [
        "4161824f18ff4f56f46595a4016c7315dd0d24f1"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Jan 28 17:08:47 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:24:14 2013 +0100"
      },
      "message": "uprobes/tracing: Ensure inode !\u003d NULL in create_trace_uprobe()\n\nprobe_event_enable/disable() check tu-\u003einode !\u003d NULL at the start.\nThis is ugly, if igrab() can fail create_trace_uprobe() should not\nsucceed and \"postpone\" the failure.\n\nAnd S_ISREG(inode-\u003ei_mode) check added by d24d7dbf is not safe.\n\nNote: alloc_uprobe() should probably check igrab() !\u003d NULL as well.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4161824f18ff4f56f46595a4016c7315dd0d24f1",
      "tree": "0543311b70f8855f967fb41c3d7c3bf61c0c8a09",
      "parents": [
        "84d7ed799fd6c1366547d88ddb8188c65de3b94f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jan 27 18:36:24 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:10:19 2013 +0100"
      },
      "message": "uprobes/tracing: Fully initialize uprobe_trace_consumer before uprobe_register()\n\nprobe_event_enable() does uprobe_register() and only after that sets\nutc-\u003etu and tu-\u003econsumer/flags. This can race with uprobe_dispatcher()\nwhich can miss these assignments or see them out of order. Nothing\nreally bad can happen, but this doesn\u0027t look clean/safe.\n\nAnd this does not allow to use uprobe_consumer-\u003efilter() we are going\nto add, it is called by uprobe_register() and it needs utc-\u003etu.\n\nChange this code to initialize everything before uprobe_register(), and\nreset tu-\u003econsumer/flags if it fails. We can\u0027t race with event_disable(),\nthe caller holds event_mutex, and if we could the code would be wrong\nanyway.\n\nIn fact I think uprobe_trace_consumer should die, it buys nothing but\ncomplicates the code. We can simply add uprobe_consumer into trace_uprobe.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "84d7ed799fd6c1366547d88ddb8188c65de3b94f",
      "tree": "a40db2f5e04c02d087a37c53182335fc46803ea3",
      "parents": [
        "e8440c1458ba571bc3fac8a6beb53ff604199f5b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Jan 27 18:20:45 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 18:10:17 2013 +0100"
      },
      "message": "uprobes/tracing: Fix dentry/mount leak in create_trace_uprobe()\n\ncreate_trace_uprobe() does kern_path() to find -\u003ed_inode, but forgets\nto do path_put(). We can do this right after igrab().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e8440c1458ba571bc3fac8a6beb53ff604199f5b",
      "tree": "59abbd23435cd341250a028b4fa06826b7133fbe",
      "parents": [
        "af4355e91f15812df8608925738c91be57c580dd"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "jistone@redhat.com",
        "time": "Sun Jan 13 19:03:34 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:13 2013 +0100"
      },
      "message": "uprobes: Add exports for module use\n\nThe original pull message for uprobes (commit 654443e2) noted:\n\n  This tree includes uprobes support in \u0027perf probe\u0027 - but SystemTap\n  (and other tools) can take advantage of user probe points as well.\n\nIn order to actually be usable in module-based tools like SystemTap, the\ninterface needs to be exported.  This patch first adds the obvious\nexports for uprobe_register and uprobe_unregister.  Then it also adds\none for task_user_regset_view, which is necessary to get the correct\nstate of userspace registers.\n\nSigned-off-by: Josh Stone \u003cjistone@redhat.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "af4355e91f15812df8608925738c91be57c580dd",
      "tree": "d50a8fb2a2240f00e8d72a804de237552d7f1b36",
      "parents": [
        "608e7427c0a06de0d70374a9fd7defc8eb228b7e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 18:37:11 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:13 2013 +0100"
      },
      "message": "uprobes: Kill the bogus IS_ERR_VALUE(xol_vaddr) check\n\nutask-\u003exol_vaddr is either zero or valid, remove the bogus\nIS_ERR_VALUE() check in xol_free_insn_slot().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "608e7427c0a06de0d70374a9fd7defc8eb228b7e",
      "tree": "fa9d008fc34cd270613b63bbd9fd724c563daa44",
      "parents": [
        "aba51024e7159c93914557caaa2b8cda26331091"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 18:20:42 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:12 2013 +0100"
      },
      "message": "uprobes: Do not allocate current-\u003eutask unnecessary\n\nhandle_swbp() does get_utask() before can_skip_sstep() for no reason,\nwe do not need -\u003eutask if can_skip_sstep() succeeds.\n\nMove get_utask() to pre_ssout() who actually starts to use it. Move\nthe initialization of utask-\u003eactive_uprobe/state as well. This way\nthe whole initialization is consolidated in pre_ssout().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "aba51024e7159c93914557caaa2b8cda26331091",
      "tree": "9883f94fdefa1347040be590b336e809ba6d3300",
      "parents": [
        "a6cb3f6d51253e9cf21a38b17c025018117809d7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 18:12:48 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:12 2013 +0100"
      },
      "message": "uprobes: Fix utask-\u003exol_vaddr leak in pre_ssout()\n\npre_ssout() should do xol_free_insn_slot() if arch_uprobe_pre_xol()\nfails, otherwise nobody will free the allocated slot.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a6cb3f6d51253e9cf21a38b17c025018117809d7",
      "tree": "f0ffafefd93cb97f550b0149b14e56a68c778576",
      "parents": [
        "5a2df662aafdabffb2cf3adb780a5adf66dfb3bc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 18:00:06 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:12 2013 +0100"
      },
      "message": "uprobes: Do not play with utask in xol_get_insn_slot()\n\npre_ssout()-\u003exol_get_insn_slot() path is confusing and buggy. This patch\ncleanups the code, the next one fixes the bug.\n\nChange xol_get_insn_slot() to only allocate the slot and do nothing more,\nmove the initialization of utask-\u003exol_vaddr/vaddr into pre_ssout().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5a2df662aafdabffb2cf3adb780a5adf66dfb3bc",
      "tree": "758f73ec4d1a89c1e7ab416503732c59fd7839ee",
      "parents": [
        "9b545df809644912552360054c7bbe8b8a9e01fa"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 17:03:32 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:12 2013 +0100"
      },
      "message": "uprobes: Turn add_utask() into get_utask()\n\nRename add_utask() into get_utask() and change it to allocate on\ndemand to simplify the caller. Like get_xol_area() it will have\nmore users.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9b545df809644912552360054c7bbe8b8a9e01fa",
      "tree": "ca558fdf71d30ec0bc5ef2f821b06b45b13ff5b0",
      "parents": [
        "c8a82538001e1a68f4a319d5a75de90d1f284731"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 31 16:39:49 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:11 2013 +0100"
      },
      "message": "uprobes: Fold xol_alloc_area() into get_xol_area()\n\nCurrently only xol_get_insn_slot() does get_xol_area() + xol_alloc_area(),\nbut this will have more users and we do not want to copy-and-paste this\ncode. This patch simply moves xol_alloc_area() into get_xol_area() to\nsimplify the current and future code.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c8a82538001e1a68f4a319d5a75de90d1f284731",
      "tree": "8f6ad569a44b3fb9179442fd6b9d07d42ec28229",
      "parents": [
        "74e59dfc6b19e3472a7c16ad57bc831e6e647895"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Dec 30 17:40:39 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:11 2013 +0100"
      },
      "message": "uprobes: Move alloc_page() from xol_add_vma() to xol_alloc_area()\n\nMove alloc_page() from xol_add_vma() to xol_alloc_area() to cleanup\nthe code. This separates the memory allocations and consolidates the\n-EALREADY cleanups and the error handling.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "74e59dfc6b19e3472a7c16ad57bc831e6e647895",
      "tree": "5047f177b6c604f83d4b9f62614acf93a08d34bd",
      "parents": [
        "cf31ec3f7fece93f3fce3ee5964e27857141ea47"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Dec 30 15:54:08 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:11 2013 +0100"
      },
      "message": "uprobes: Change handle_swbp() to expose bp_vaddr to handler_chain()\n\nChange handle_swbp() to set regs-\u003eip \u003d bp_vaddr in advance, this is\nwhat consumer-\u003ehandler() needs but uprobe_get_swbp_addr() is not\nexported.\n\nThis also simplifies the code and makes it more consistent across\nthe supported architectures. handle_swbp() becomes the only caller\nof uprobe_get_swbp_addr().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\n"
    },
    {
      "commit": "da1816b1caeccdff04531e763bb35d7caa3ed19f",
      "tree": "bbf3b1eda3f969a5115770f0aa1081feafd871cb",
      "parents": [
        "8a7f2fa0dea3b019500961b86d765e6fdd4bffb2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Dec 29 17:49:11 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:11 2013 +0100"
      },
      "message": "uprobes: Teach handler_chain() to filter out the probed task\n\nCurrrently the are 2 problems with pre-filtering:\n\n1. It is not possible to add/remove a task (mm) after uprobe_register()\n\n2. A forked child inherits all breakpoints and uprobe_consumer can not\n   control this.\n\nThis patch does the first step to improve the filtering. handler_chain()\nremoves the breakpoints installed by this uprobe from current-\u003emm if all\nhandlers return UPROBE_HANDLER_REMOVE.\n\nNote that handler_chain() relies on -\u003eregister_rwsem to avoid the race\nwith uprobe_register/unregister which can add/del a consumer, or even\nremove and then insert the new uprobe at the same address.\n\nPerhaps we will add uprobe_apply_mm(uprobe, mm, is_register) and teach\ncopy_mm() to do filter(UPROBE_FILTER_FORK), but I think this change makes\nsense anyway.\n\nNote: instead of checking the retcode from uc-\u003ehandler, we could add\nuc-\u003efilter(UPROBE_FILTER_BPHIT). But I think this is not optimal to\ncall 2 hooks in a row. This buys nothing, and if handler/filter do\nsomething nontrivial they will probably do the same work twice.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "8a7f2fa0dea3b019500961b86d765e6fdd4bffb2",
      "tree": "c6c467e02da75a9e92f8541cf8889dbd0e2fe5fb",
      "parents": [
        "806a98bdf2a862fef0fc880399d677b35ba525ff"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Dec 28 17:58:38 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:10 2013 +0100"
      },
      "message": "uprobes: Reintroduce uprobe_consumer-\u003efilter()\n\nFinally add uprobe_consumer-\u003efilter() and change consumer_filter()\nto actually call this method.\n\nNote that -\u003efilter() accepts mm_struct, not task_struct. Because:\n\n\t1. We do not have for_each_mm_user(mm, task).\n\n\t2. Even if we implement for_each_mm_user(), -\u003efilter() can\n\t   use it itself.\n\n\t3. It is not clear who will actually need this interface to\n\t   do the \"nontrivial\" filtering.\n\nAnother argument is \"enum uprobe_filter_ctx\", consumer-\u003efilter() can\nuse it to figure out why/where it was called. For example, perhaps\nwe can add UPROBE_FILTER_PRE_REGISTER used by build_map_info() to\nquickly \"nack\" the unwanted mm\u0027s. In this case consumer should know\nthat it is called under -\u003ei_mmap_mutex.\n\nSee the previous discussion at http://marc.info/?t\u003d135214229700002\nPerhaps we should pass more arguments, vma/vaddr?\n\nNote: this patch obviously can\u0027t help to filter out the child created\nby fork(), this will be addressed later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "806a98bdf2a862fef0fc880399d677b35ba525ff",
      "tree": "5b322a48c4d22d15e8d1a6c8a6a7e28d77ce62a7",
      "parents": [
        "66d06dffa5ef6f3544997440af63a91ef36a2171"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Dec 27 18:21:11 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:10 2013 +0100"
      },
      "message": "uprobes: Rationalize the usage of filter_chain()\n\nfilter_chain() was added into install_breakpoint/remove_breakpoint to\nsimplify the initial changes but this is sub-optimal.\n\nThis patch shifts the callsite to the callers, register_for_each_vma()\nand uprobe_mmap(). This way:\n\n- It will be easier to add the new arguments. This is the main reason,\n  we can do more optimizations later.\n\n- register_for_each_vma(is_register \u003d\u003e true) can be optimized, we only\n  need to consult the new consumer. The previous consumers were already\n  asked when they called uprobe_register().\n\nThis patch also moves the MMF_HAS_UPROBES check from remove_breakpoint(),\nthis allows to avoid the potentionally costly filter_chain(). Note that\nregister_for_each_vma(is_register \u003d\u003e false) doesn\u0027t really need to take\n-\u003econsumer_rwsem, but I don\u0027t think it makes sense to optimize this and\nintroduce filter_chain_lockless().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "66d06dffa5ef6f3544997440af63a91ef36a2171",
      "tree": "a95c81e492b5c714caa7f24f48fdb20fe0a33024",
      "parents": [
        "06b7bcd8cbd7eb1af331e437ec3d8f5182ae1b7e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Nov 25 22:48:37 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:10 2013 +0100"
      },
      "message": "uprobes: Kill uprobes_mutex[], separate alloc_uprobe() and __uprobe_register()\n\nuprobe_register() and uprobe_unregister() are the only users of\nmutex_lock(uprobes_hash(inode)), and the only reason why we can\u0027t\nsimply remove it is that we need to ensure that delete_uprobe() is\nnot possible after alloc_uprobe() and before consumer_add().\n\nIOW, we need to ensure that when we take uprobe-\u003eregister_rwsem\nthis uprobe is still valid and we didn\u0027t race with _unregister()\nwhich called delete_uprobe() in between.\n\nWith this patch uprobe_register() simply checks uprobe_is_active()\nand retries if it hits this very unlikely race. uprobes_mutex[] is\nno longer needed and can be removed.\n\nThere is another reason for this change, prepare_uprobe() should be\nfolded into alloc_uprobe() and we do not want to hold the extra locks\naround read_mapping_page/etc.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "06b7bcd8cbd7eb1af331e437ec3d8f5182ae1b7e",
      "tree": "ad2fc6a39d2c5ecfa45f4cd13fd0140839894b52",
      "parents": [
        "441f1eb7db8babe2b6b4bc805f023739dbb70e33"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Nov 25 22:01:42 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:09 2013 +0100"
      },
      "message": "uprobes: Introduce uprobe_is_active()\n\nThe lifetime of uprobe-\u003erb_node and uprobe-\u003einode is not refcounted,\ndelete_uprobe() is called when we detect that uprobe has no consumers,\nand it would be deadly wrong to do this twice.\n\nChange delete_uprobe() to WARN() if it was already called. We use\nRB_CLEAR_NODE() to mark uprobe \"inactive\", then RB_EMPTY_NODE() can\nbe used to detect this case.\n\nRB_EMPTY_NODE() is not used directly, we add the trivial helper for\nthe next change.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "441f1eb7db8babe2b6b4bc805f023739dbb70e33",
      "tree": "4c57b4553ce1b325c677d3e7204a2444fe577a99",
      "parents": [
        "d4d3ccc6d1eb74bd315d49a3829c5ad6c48d21b0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Nov 25 19:54:29 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:08 2013 +0100"
      },
      "message": "uprobes: Kill uprobe_events, use RB_EMPTY_ROOT() instead\n\nuprobe_events counts the number of uprobes in uprobes_tree but\nit is used as a boolean. We can use RB_EMPTY_ROOT() instead.\n\nProbably no_uprobe_events() added by this patch can have more\ncallers, say, mmf_recalc_uprobes().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Anton Arapov \u003canton@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d4d3ccc6d1eb74bd315d49a3829c5ad6c48d21b0",
      "tree": "e8ccc45b9b9f8c72aaea150bf93d4d56cf9dc8d4",
      "parents": [
        "bb929284be40cbbdb347690742557d708fd504a9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Nov 24 18:51:34 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:08 2013 +0100"
      },
      "message": "uprobes: Kill uprobe-\u003ecopy_mutex\n\nNow that -\u003eregister_rwsem is safe under -\u003emmap_sem we can kill\n-\u003ecopy_mutex and abuse down_write(\u0026uprobe-\u003econsumer_rwsem).\n\nThis makes prepare_uprobe() even more ugly, but we should kill\nit anyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bb929284be40cbbdb347690742557d708fd504a9",
      "tree": "6f86aba2f415508fdccb88804bc03bdae3a0e160",
      "parents": [
        "1ff6fee5e62c57d5923b805bb4206acb7953f16e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Nov 24 18:27:08 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:06 2013 +0100"
      },
      "message": "uprobes: Kill UPROBE_RUN_HANDLER flag\n\nSimply remove UPROBE_RUN_HANDLER and the corresponding code.\n\nIt can only help if uprobe has a single consumer, and in fact\nit is no longer needed after handler_chain() was changed to use\n-\u003eregister_rwsem, we simply can not race with uprobe_register().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1ff6fee5e62c57d5923b805bb4206acb7953f16e",
      "tree": "1b573238a506824e34d19b7ae5cba604d00f7b5c",
      "parents": [
        "e591c8d78e49e6206935cf31c4d2b603bbb29166"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Nov 24 18:15:46 2012 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Feb 08 17:47:05 2013 +0100"
      },
      "message": "uprobes: Change filter_chain() to iterate -\u003econsumers list\n\nNow that it safe to use -\u003econsumer_rwsem under -\u003emmap_sem we can\nalmost finish the implementation of filter_chain(). It still lacks\nthe actual uc-\u003efilter(...) call but othewrwise it is ready, just\nit pretends that -\u003efilter() always returns true.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    }
  ],
  "next": "e591c8d78e49e6206935cf31c4d2b603bbb29166"
}
