)]}'
{
  "log": [
    {
      "commit": "2ad0d52699700a91660a406a4046017a2d7f246a",
      "tree": "eda80942d8671e60ef2d991fc68816784a41135c",
      "parents": [
        "e61cf2e3a5b452cfefcb145021f5a8ea88735cc1",
        "e2948e5af8eeb6c945000772b7613b0323a0a203"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 11:51:45 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 11:51:45 2018 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nPull networking fixes from David Miller:\n\n 1) Fix races in IPVS, from Tan Hu.\n\n 2) Missing unbind in matchall classifier, from Hangbin Liu.\n\n 3) Missing act_ife action release, from Vlad Buslov.\n\n 4) Cure lockdep splats in ila, from Cong Wang.\n\n 5) veth queue leak on link delete, from Toshiaki Makita.\n\n 6) Disable isdn\u0027s IIOCDBGVAR ioctl, it exposes kernel addresses. From\n    Kees Cook.\n\n 7) RCU usage fixup in XDP, from Tariq Toukan.\n\n 8) Two TCP ULP fixes from Daniel Borkmann.\n\n 9) r8169 needs REALTEK_PHY as a Kconfig dependency, from Heiner\n    Kallweit.\n\n10) Always take tcf_lock with BH disabled, otherwise we can deadlock\n    with rate estimator code paths. From Vlad Buslov.\n\n11) Don\u0027t use MSI-X on RTL8106e r8169 chips, they don\u0027t resume properly.\n    From Jian-Hong Pan.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (41 commits)\n  ip6_vti: fix creating fallback tunnel device for vti6\n  ip_vti: fix a null pointer deferrence when create vti fallback tunnel\n  r8169: don\u0027t use MSI-X on RTL8106e\n  net: lan743x_ptp: convert to ktime_get_clocktai_ts64\n  net: sched: always disable bh when taking tcf_lock\n  ip6_vti: simplify stats handling in vti6_xmit\n  bpf: fix redirect to map under tail calls\n  r8169: add missing Kconfig dependency\n  tools/bpf: fix bpf selftest test_cgroup_storage failure\n  bpf, sockmap: fix sock_map_ctx_update_elem race with exist/noexist\n  bpf, sockmap: fix map elem deletion race with smap_stop_sock\n  bpf, sockmap: fix leakage of smap_psock_map_entry\n  tcp, ulp: fix leftover icsk_ulp_ops preventing sock from reattach\n  tcp, ulp: add alias for all ulp modules\n  bpf: fix a rcu usage warning in bpf_prog_array_copy_core()\n  samples/bpf: all XDP samples should unload xdp/bpf prog on SIGTERM\n  net/xdp: Fix suspicious RCU usage warning\n  net/mlx5e: Delete unneeded function argument\n  Documentation: networking: ti-cpsw: correct cbs parameters for Eth1 100Mb\n  isdn: Disable IIOCDBGVAR\n  ...\n"
    },
    {
      "commit": "e2948e5af8eeb6c945000772b7613b0323a0a203",
      "tree": "234e8c98ca4fff8799cb7bb2f23ba09126061cfb",
      "parents": [
        "cd1aa9c2c665cafbd05b83507d3f1096f3912aa4"
      ],
      "author": {
        "name": "Haishuang Yan",
        "email": "yanhaishuang@cmss.chinamobile.com",
        "time": "Sun Aug 19 15:05:05 2018 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 19 11:26:39 2018 -0700"
      },
      "message": "ip6_vti: fix creating fallback tunnel device for vti6\n\nWhen set fb_tunnels_only_for_init_net to 1, don\u0027t create fallback tunnel\ndevice for vti6 when a new namespace is created.\n\nTested:\n[root@builder2 ~]# modprobe ip6_tunnel\n[root@builder2 ~]# modprobe ip6_vti\n[root@builder2 ~]# echo 1 \u003e /proc/sys/net/core/fb_tunnels_only_for_init_net\n[root@builder2 ~]# unshare -n\n[root@builder2 ~]# ip link\n1: lo: \u003cLOOPBACK\u003e mtu 65536 qdisc noop state DOWN mode DEFAULT group\ndefault qlen 1000\n    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n\nSigned-off-by: Haishuang Yan \u003cyanhaishuang@cmss.chinamobile.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cd1aa9c2c665cafbd05b83507d3f1096f3912aa4",
      "tree": "6ca253f3b8ddc6da6e057b6139893737ccd64fc5",
      "parents": [
        "7bb05b85bc2d1a1b647b91424b2ed4a18e6ecd81"
      ],
      "author": {
        "name": "Haishuang Yan",
        "email": "yanhaishuang@cmss.chinamobile.com",
        "time": "Sun Aug 19 15:05:04 2018 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 19 11:26:39 2018 -0700"
      },
      "message": "ip_vti: fix a null pointer deferrence when create vti fallback tunnel\n\nAfter set fb_tunnels_only_for_init_net to 1, the itn-\u003efb_tunnel_dev will\nbe NULL and will cause following crash:\n\n[ 2742.849298] BUG: unable to handle kernel NULL pointer dereference at 0000000000000941\n[ 2742.851380] PGD 800000042c21a067 P4D 800000042c21a067 PUD 42aaed067 PMD 0\n[ 2742.852818] Oops: 0002 [#1] SMP PTI\n[ 2742.853570] CPU: 7 PID: 2484 Comm: unshare Kdump: loaded Not tainted 4.18.0-rc8+ #2\n[ 2742.855163] Hardware name: Fedora Project OpenStack Nova, BIOS seabios-1.7.5-11.el7 04/01/2014\n[ 2742.856970] RIP: 0010:vti_init_net+0x3a/0x50 [ip_vti]\n[ 2742.858034] Code: 90 83 c0 48 c7 c2 20 a1 83 c0 48 89 fb e8 6e 3b f6 ff 85 c0 75 22 8b 0d f4 19 00 00 48 8b 93 00 14 00 00 48 8b 14 ca 48 8b 12 \u003cc6\u003e 82 41 09 00 00 04 c6 82 38 09 00 00 45 5b c3 66 0f 1f 44 00 00\n[ 2742.861940] RSP: 0018:ffff9be28207fde0 EFLAGS: 00010246\n[ 2742.863044] RAX: 0000000000000000 RBX: ffff8a71ebed4980 RCX: 0000000000000013\n[ 2742.864540] RDX: 0000000000000000 RSI: 0000000000000013 RDI: ffff8a71ebed4980\n[ 2742.866020] RBP: ffff8a71ea717000 R08: ffffffffc083903c R09: ffff8a71ea717000\n[ 2742.867505] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8a71ebed4980\n[ 2742.868987] R13: 0000000000000013 R14: ffff8a71ea5b49c0 R15: 0000000000000000\n[ 2742.870473] FS:  00007f02266c9740(0000) GS:ffff8a71ffdc0000(0000) knlGS:0000000000000000\n[ 2742.872143] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[ 2742.873340] CR2: 0000000000000941 CR3: 000000042bc20006 CR4: 00000000001606e0\n[ 2742.874821] Call Trace:\n[ 2742.875358]  ops_init+0x38/0xf0\n[ 2742.876078]  setup_net+0xd9/0x1f0\n[ 2742.876789]  copy_net_ns+0xb7/0x130\n[ 2742.877538]  create_new_namespaces+0x11a/0x1d0\n[ 2742.878525]  unshare_nsproxy_namespaces+0x55/0xa0\n[ 2742.879526]  ksys_unshare+0x1a7/0x330\n[ 2742.880313]  __x64_sys_unshare+0xe/0x20\n[ 2742.881131]  do_syscall_64+0x5b/0x180\n[ 2742.881933]  entry_SYSCALL_64_after_hwframe+0x44/0xa9\n\nReproduce:\necho 1 \u003e /proc/sys/net/core/fb_tunnels_only_for_init_net\nmodprobe ip_vti\nunshare -n\n\nFixes: 79134e6ce2c9 (\"net: do not create fallback tunnels for non-default namespaces\")\nCc: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: Haishuang Yan \u003cyanhaishuang@cmss.chinamobile.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7bb05b85bc2d1a1b647b91424b2ed4a18e6ecd81",
      "tree": "07c5919e028acc213b45364ccd93c2be17d3232e",
      "parents": [
        "0b3e776e2e809b808875b10e35d1047c5c548da4"
      ],
      "author": {
        "name": "Jian-Hong Pan",
        "email": "jian-hong@endlessm.com",
        "time": "Fri Aug 17 13:07:35 2018 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 19 11:01:09 2018 -0700"
      },
      "message": "r8169: don\u0027t use MSI-X on RTL8106e\n\nFound the ethernet network on ASUS X441UAR doesn\u0027t come back on resume\nfrom suspend when using MSI-X.  The chip is RTL8106e - version 39.\n\n[   21.848357] libphy: r8169: probed\n[   21.848473] r8169 0000:02:00.0 eth0: RTL8106e, 0c:9d:92:32:67:b4, XID\n44900000, IRQ 127\n[   22.518860] r8169 0000:02:00.0 enp2s0: renamed from eth0\n[   29.458041] Generic PHY r8169-200:00: attached PHY driver [Generic\nPHY] (mii_bus:phy_addr\u003dr8169-200:00, irq\u003dIGNORE)\n[   63.227398] r8169 0000:02:00.0 enp2s0: Link is Up - 100Mbps/Full -\nflow control off\n[  124.514648] Generic PHY r8169-200:00: attached PHY driver [Generic\nPHY] (mii_bus:phy_addr\u003dr8169-200:00, irq\u003dIGNORE)\n\nHere is the ethernet controller in detail:\n\n02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd.\nRTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller [10ec:8136]\n(rev 07)\n\tSubsystem: ASUSTeK Computer Inc. RTL810xE PCI Express Fast\nEthernet controller [1043:200f]\n\tFlags: bus master, fast devsel, latency 0, IRQ 16\n\tI/O ports at e000 [size\u003d256]\n\tMemory at ef100000 (64-bit, non-prefetchable) [size\u003d4K]\n\tMemory at e0000000 (64-bit, prefetchable) [size\u003d16K]\n\tCapabilities: \u003caccess denied\u003e\n\tKernel driver in use: r8169\n\tKernel modules: r8169\n\nFalling back to MSI fixes the issue.\n\nFixes: 6c6aa15fdea5 (\"r8169: improve interrupt handling\")\nSigned-off-by: Jian-Hong Pan \u003cjian-hong@endlessm.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0b3e776e2e809b808875b10e35d1047c5c548da4",
      "tree": "4ca174f9a9b090c04616803623a78f2e04d8b3cf",
      "parents": [
        "653cd284a8a857ddfcf24f5bc3bd204a229f6c9f"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Aug 15 19:49:49 2018 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 19 10:56:40 2018 -0700"
      },
      "message": "net: lan743x_ptp: convert to ktime_get_clocktai_ts64\n\ntimekeeping_clocktai64() has been renamed to ktime_get_clocktai_ts64()\nfor consistency with the other ktime_get_* access functions.\n\nRename the new caller that has come up as well.\n\nQuestion: this is the only ptp driver that sets the hardware time\nto the current system time in TAI. Why does it do that?\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "653cd284a8a857ddfcf24f5bc3bd204a229f6c9f",
      "tree": "2ffd3178a3e8277b7b42ade98edcfeb5bed976c7",
      "parents": [
        "bb107456ba5a85e50567d56b0c8050c2ad199e9b"
      ],
      "author": {
        "name": "Vlad Buslov",
        "email": "vladbu@mellanox.com",
        "time": "Tue Aug 14 21:46:16 2018 +0300"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Aug 19 10:46:21 2018 -0700"
      },
      "message": "net: sched: always disable bh when taking tcf_lock\n\nRecently, ops-\u003einit() and ops-\u003edump() of all actions were modified to\nalways obtain tcf_lock when accessing private action state. Actions that\ndon\u0027t depend on tcf_lock for synchronization with their data path use\nnon-bh locking API. However, tcf_lock is also used to protect rate\nestimator stats in softirq context by timer callback.\n\nChange ops-\u003einit() and ops-\u003edump() of all actions to disable bh when using\ntcf_lock to prevent deadlock reported by following lockdep warning:\n\n[  105.470398] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  105.475014] WARNING: inconsistent lock state\n[  105.479628] 4.18.0-rc8+ #664 Not tainted\n[  105.483897] --------------------------------\n[  105.488511] inconsistent {SOFTIRQ-ON-W} -\u003e {IN-SOFTIRQ-W} usage.\n[  105.494871] swapper/16/0 [HC0[0]:SC1[1]:HE1:SE0] takes:\n[  105.500449] 00000000f86c012e (\u0026(\u0026p-\u003etcfa_lock)-\u003erlock){+.?.}, at: est_fetch_counters+0x3c/0xa0\n[  105.509696] {SOFTIRQ-ON-W} state was registered at:\n[  105.514925]   _raw_spin_lock+0x2c/0x40\n[  105.519022]   tcf_bpf_init+0x579/0x820 [act_bpf]\n[  105.523990]   tcf_action_init_1+0x4e4/0x660\n[  105.528518]   tcf_action_init+0x1ce/0x2d0\n[  105.532880]   tcf_exts_validate+0x1d8/0x200\n[  105.537416]   fl_change+0x55a/0x268b [cls_flower]\n[  105.542469]   tc_new_tfilter+0x748/0xa20\n[  105.546738]   rtnetlink_rcv_msg+0x56a/0x6d0\n[  105.551268]   netlink_rcv_skb+0x18d/0x200\n[  105.555628]   netlink_unicast+0x2d0/0x370\n[  105.559990]   netlink_sendmsg+0x3b9/0x6a0\n[  105.564349]   sock_sendmsg+0x6b/0x80\n[  105.568271]   ___sys_sendmsg+0x4a1/0x520\n[  105.572547]   __sys_sendmsg+0xd7/0x150\n[  105.576655]   do_syscall_64+0x72/0x2c0\n[  105.580757]   entry_SYSCALL_64_after_hwframe+0x49/0xbe\n[  105.586243] irq event stamp: 489296\n[  105.590084] hardirqs last  enabled at (489296): [\u003cffffffffb507e639\u003e] _raw_spin_unlock_irq+0x29/0x40\n[  105.599765] hardirqs last disabled at (489295): [\u003cffffffffb507e745\u003e] _raw_spin_lock_irq+0x15/0x50\n[  105.609277] softirqs last  enabled at (489292): [\u003cffffffffb413a6a3\u003e] irq_enter+0x83/0xa0\n[  105.618001] softirqs last disabled at (489293): [\u003cffffffffb413a800\u003e] irq_exit+0x140/0x190\n[  105.626813]\n               other info that might help us debug this:\n[  105.633976]  Possible unsafe locking scenario:\n\n[  105.640526]        CPU0\n[  105.643325]        ----\n[  105.646125]   lock(\u0026(\u0026p-\u003etcfa_lock)-\u003erlock);\n[  105.650747]   \u003cInterrupt\u003e\n[  105.653717]     lock(\u0026(\u0026p-\u003etcfa_lock)-\u003erlock);\n[  105.658514]\n                *** DEADLOCK ***\n\n[  105.665349] 1 lock held by swapper/16/0:\n[  105.669629]  #0: 00000000a640ad99 ((\u0026est-\u003etimer)){+.-.}, at: call_timer_fn+0x10b/0x550\n[  105.678200]\n               stack backtrace:\n[  105.683194] CPU: 16 PID: 0 Comm: swapper/16 Not tainted 4.18.0-rc8+ #664\n[  105.690249] Hardware name: Supermicro SYS-2028TP-DECR/X10DRT-P, BIOS 2.0b 03/30/2017\n[  105.698626] Call Trace:\n[  105.701421]  \u003cIRQ\u003e\n[  105.703791]  dump_stack+0x92/0xeb\n[  105.707461]  print_usage_bug+0x336/0x34c\n[  105.711744]  mark_lock+0x7c9/0x980\n[  105.715500]  ? print_shortest_lock_dependencies+0x2e0/0x2e0\n[  105.721424]  ? check_usage_forwards+0x230/0x230\n[  105.726315]  __lock_acquire+0x923/0x26f0\n[  105.730597]  ? debug_show_all_locks+0x240/0x240\n[  105.735478]  ? mark_lock+0x493/0x980\n[  105.739412]  ? check_chain_key+0x140/0x1f0\n[  105.743861]  ? __lock_acquire+0x836/0x26f0\n[  105.748323]  ? lock_acquire+0x12e/0x290\n[  105.752516]  lock_acquire+0x12e/0x290\n[  105.756539]  ? est_fetch_counters+0x3c/0xa0\n[  105.761084]  _raw_spin_lock+0x2c/0x40\n[  105.765099]  ? est_fetch_counters+0x3c/0xa0\n[  105.769633]  est_fetch_counters+0x3c/0xa0\n[  105.773995]  est_timer+0x87/0x390\n[  105.777670]  ? est_fetch_counters+0xa0/0xa0\n[  105.782210]  ? lock_acquire+0x12e/0x290\n[  105.786410]  call_timer_fn+0x161/0x550\n[  105.790512]  ? est_fetch_counters+0xa0/0xa0\n[  105.795055]  ? del_timer_sync+0xd0/0xd0\n[  105.799249]  ? __lock_is_held+0x93/0x110\n[  105.803531]  ? mark_held_locks+0x20/0xe0\n[  105.807813]  ? _raw_spin_unlock_irq+0x29/0x40\n[  105.812525]  ? est_fetch_counters+0xa0/0xa0\n[  105.817069]  ? est_fetch_counters+0xa0/0xa0\n[  105.821610]  run_timer_softirq+0x3c4/0x9f0\n[  105.826064]  ? lock_acquire+0x12e/0x290\n[  105.830257]  ? __bpf_trace_timer_class+0x10/0x10\n[  105.835237]  ? __lock_is_held+0x25/0x110\n[  105.839517]  __do_softirq+0x11d/0x7bf\n[  105.843542]  irq_exit+0x140/0x190\n[  105.847208]  smp_apic_timer_interrupt+0xac/0x3b0\n[  105.852182]  apic_timer_interrupt+0xf/0x20\n[  105.856628]  \u003c/IRQ\u003e\n[  105.859081] RIP: 0010:cpuidle_enter_state+0xd8/0x4d0\n[  105.864395] Code: 46 ff 48 89 44 24 08 0f 1f 44 00 00 31 ff e8 cf ec 46 ff 80 7c 24 07 00 0f 85 1d 02 00 00 e8 9f 90 4b ff fb 66 0f 1f 44 00 00 \u003c4c\u003e 8b 6c 24 08 4d 29 fd 0f 80 36 03 00 00 4c 89 e8 48 ba cf f7 53\n[  105.884288] RSP: 0018:ffff8803ad94fd20 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff13\n[  105.892494] RAX: 0000000000000000 RBX: ffffe8fb300829c0 RCX: ffffffffb41e19e1\n[  105.899988] RDX: 0000000000000007 RSI: dffffc0000000000 RDI: ffff8803ad9358ac\n[  105.907503] RBP: ffffffffb6636300 R08: 0000000000000004 R09: 0000000000000000\n[  105.914997] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000004\n[  105.922487] R13: ffffffffb6636140 R14: ffffffffb66362d8 R15: 000000188d36091b\n[  105.929988]  ? trace_hardirqs_on_caller+0x141/0x2d0\n[  105.935232]  do_idle+0x28e/0x320\n[  105.938817]  ? arch_cpu_idle_exit+0x40/0x40\n[  105.943361]  ? mark_lock+0x8c1/0x980\n[  105.947295]  ? _raw_spin_unlock_irqrestore+0x32/0x60\n[  105.952619]  cpu_startup_entry+0xc2/0xd0\n[  105.956900]  ? cpu_in_idle+0x20/0x20\n[  105.960830]  ? _raw_spin_unlock_irqrestore+0x32/0x60\n[  105.966146]  ? trace_hardirqs_on_caller+0x141/0x2d0\n[  105.971391]  start_secondary+0x2b5/0x360\n[  105.975669]  ? set_cpu_sibling_map+0x1330/0x1330\n[  105.980654]  secondary_startup_64+0xa5/0xb0\n\nTaking tcf_lock in sample action with bh disabled causes lockdep to issue a\nwarning regarding possible irq lock inversion dependency between tcf_lock,\nand psample_groups_lock that is taken when holding tcf_lock in sample init:\n\n[  162.108959]  Possible interrupt unsafe locking scenario:\n\n[  162.116386]        CPU0                    CPU1\n[  162.121277]        ----                    ----\n[  162.126162]   lock(psample_groups_lock);\n[  162.130447]                                local_irq_disable();\n[  162.136772]                                lock(\u0026(\u0026p-\u003etcfa_lock)-\u003erlock);\n[  162.143957]                                lock(psample_groups_lock);\n[  162.150813]   \u003cInterrupt\u003e\n[  162.153808]     lock(\u0026(\u0026p-\u003etcfa_lock)-\u003erlock);\n[  162.158608]\n                *** DEADLOCK ***\n\nIn order to prevent potential lock inversion dependency between tcf_lock\nand psample_groups_lock, extract call to psample_group_get() from tcf_lock\nprotected section in sample action init function.\n\nFixes: 4e232818bd32 (\"net: sched: act_mirred: remove dependency on rtnl lock\")\nFixes: 764e9a24480f (\"net: sched: act_vlan: remove dependency on rtnl lock\")\nFixes: 729e01260989 (\"net: sched: act_tunnel_key: remove dependency on rtnl lock\")\nFixes: d77284956656 (\"net: sched: act_sample: remove dependency on rtnl lock\")\nFixes: e8917f437006 (\"net: sched: act_gact: remove dependency on rtnl lock\")\nFixes: b6a2b971c0b0 (\"net: sched: act_csum: remove dependency on rtnl lock\")\nFixes: 2142236b4584 (\"net: sched: act_bpf: remove dependency on rtnl lock\")\nSigned-off-by: Vlad Buslov \u003cvladbu@mellanox.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e61cf2e3a5b452cfefcb145021f5a8ea88735cc1",
      "tree": "bbabaf0d4753d6880ecbaddd8daa0164d49c1c61",
      "parents": [
        "1009aa1205c2c5e9101437dcadfa195708d863bf",
        "28a1f3ac1d0c8558ee4453d9634dad891a6e922e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 10:38:36 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 10:38:36 2018 -0700"
      },
      "message": "Merge tag \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\nPull first set of KVM updates from Paolo Bonzini:\n \"PPC:\n   - minor code cleanups\n\n  x86:\n   - PCID emulation and CR3 caching for shadow page tables\n   - nested VMX live migration\n   - nested VMCS shadowing\n   - optimized IPI hypercall\n   - some optimizations\n\n  ARM will come next week\"\n\n* tag \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (85 commits)\n  kvm: x86: Set highest physical address bits in non-present/reserved SPTEs\n  KVM/x86: Use CC_SET()/CC_OUT in arch/x86/kvm/vmx.c\n  KVM: X86: Implement PV IPIs in linux guest\n  KVM: X86: Add kvm hypervisor init time platform setup callback\n  KVM: X86: Implement \"send IPI\" hypercall\n  KVM/x86: Move X86_CR4_OSXSAVE check into kvm_valid_sregs()\n  KVM: x86: Skip pae_root shadow allocation if tdp enabled\n  KVM/MMU: Combine flushing remote tlb in mmu_set_spte()\n  KVM: vmx: skip VMWRITE of HOST_{FS,GS}_BASE when possible\n  KVM: vmx: skip VMWRITE of HOST_{FS,GS}_SEL when possible\n  KVM: vmx: always initialize HOST_{FS,GS}_BASE to zero during setup\n  KVM: vmx: move struct host_state usage to struct loaded_vmcs\n  KVM: vmx: compute need to reload FS/GS/LDT on demand\n  KVM: nVMX: remove a misleading comment regarding vmcs02 fields\n  KVM: vmx: rename __vmx_load_host_state() and vmx_save_host_state()\n  KVM: vmx: add dedicated utility to access guest\u0027s kernel_gs_base\n  KVM: vmx: track host_state.loaded using a loaded_vmcs pointer\n  KVM: vmx: refactor segmentation code in vmx_save_host_state()\n  kvm: nVMX: Fix fault priority for VMX operations\n  kvm: nVMX: Fix fault vector for VMX operation at CPL \u003e 0\n  ...\n"
    },
    {
      "commit": "1009aa1205c2c5e9101437dcadfa195708d863bf",
      "tree": "49e76c84522866fae25ba37372aef241b8713c3f",
      "parents": [
        "1d0926e99de7b486321e3db924b445531eea5e18",
        "627672cf431b0379c07cc8d146f907cda6797222"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 09:56:38 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 09:56:38 2018 -0700"
      },
      "message": "Merge tag \u0027riscv-for-linus-4.19-mw0\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux\n\nPull RISC-V updates from Palmer Dabbelt:\n \"This contains some major improvements to the RISC-V port, including\n  the necessary interrupt controller and timer support to actually make\n  it to userspace. Support for three devices has been added:\n\n   - the ISA-mandated timers on RISC-V systems.\n\n   - the ISA-mandated first-level interrupt controller on RISC-V\n     systems, which is handled as part of our core arch code because\n     it\u0027s very small and tightly tied to the ISA.\n\n   - SiFive\u0027s platform-level interrupt controller, which talks to the\n     actual devices.\n\n  In addition to these new devices, there are a handful of cleanups all\n  over the RISC-V tree:\n\n   - build fixes for various configurations:\n      * A fix to the vDSO build\u0027s makefile so it respects CFLAGS.\n      * The addition of __lshrti3, a libgcc derived function necessary\n        for some 32-bit configurations.\n      * !SMP \u0026\u0026 PERF_EVENTS\n\n   - Cleanups to the arch code to remove the remnants of old versions of\n     the drivers that were just properly submitted.\n      * Some dead code from the timer driver, most of which wasn\u0027t ever\n        even compiled.\n      * Cleanups of some interrupt #defines, which are now local to the\n        interrupt handling code.\n\n   - Fixes to ptrace(), which while not being sufficient to fully make\n     GDB work are at least sufficient to get simple GDB tasks to work.\n\n   - Early printk support via RISC-V\u0027s architecturally mandated SBI\n     console device.\n\n   - A fix to our early debug trap handler to ensure it\u0027s always\n     aligned.\n\n  These patches have all been through a fairly extensive review process,\n  but as this enables a whole pile of functionality (ie, userspace) I\u0027m\n  confident we\u0027ll need to submit a few more patches. The only concrete\n  issues I know about are the sys_riscv_flush_icache patches, but as I\n  managed to screw those up on Friday I figured it\u0027d be best to let them\n  bake another week.\n\n  This tag boots a Fedora root filesystem on QEMU\u0027s master branch for\n  me, and before this morning\u0027s rebase (from 4.18-rc8 to 4.18) it booted\n  on the HiFive Unleashed.\n\n  Thanks to Christoph Hellwig and the other guys at WD for getting the\n  new drivers in shape!\"\n\n* tag \u0027riscv-for-linus-4.19-mw0\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux:\n  dt-bindings: interrupt-controller: SiFive Plaform Level Interrupt Controller\n  dt-bindings: interrupt-controller: RISC-V local interrupt controller\n  RISC-V: Fix !CONFIG_SMP compilation error\n  irqchip: add a SiFive PLIC driver\n  RISC-V: Add the directive for alignment of stvec\u0027s value\n  clocksource: new RISC-V SBI timer driver\n  RISC-V: implement low-level interrupt handling\n  RISC-V: add a definition for the SIE SEIE bit\n  RISC-V: remove INTERRUPT_CAUSE_* defines from asm/irq.h\n  RISC-V: simplify software interrupt / IPI code\n  RISC-V: remove timer leftovers\n  RISC-V: Add early printk support via the SBI console\n  RISC-V: Don\u0027t increment sepc after breakpoint.\n  RISC-V: implement __lshrti3.\n  RISC-V: Use KBUILD_CFLAGS instead of KCFLAGS when building the vDSO\n"
    },
    {
      "commit": "1d0926e99de7b486321e3db924b445531eea5e18",
      "tree": "5c0b4d166b8182abd6eece4746f877a41d8156c3",
      "parents": [
        "08b5fa819970c318e58ab638f497633c25971813",
        "3d27c4de8d4fb2d4099ff324671792aa2578c6f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 09:30:44 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 19 09:30:44 2018 -0700"
      },
      "message": "Merge tag \u0027char-misc-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc\n\nPull UIO fix from Greg KH:\n \"Here is a single UIO fix that I forgot to send before 4.18-final came\n  out. It reverts a UIO patch that went in the 4.18 development window\n  that was causing problems.\n\n  This patch has been in linux-next for a while with no problems, I just\n  forgot to send it earlier, or as part of the larger char/misc patch\n  series from yesterday, my fault\"\n\n* tag \u0027char-misc-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:\n  Revert \"uio: use request_threaded_irq instead\"\n"
    },
    {
      "commit": "08b5fa819970c318e58ab638f497633c25971813",
      "tree": "a08793025bd43f5efa99ca67f71ea5a50687b41c",
      "parents": [
        "7f02e1ce4a13edf295fcedbc663a8ca69bc1ff6e",
        "13fe7056bebb4015c6231a07a1be4d3aebbfe979"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:48:07 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:48:07 2018 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\nPull input updates from Dmitry Torokhov:\n\n - a new driver for Rohm BU21029 touch controller\n\n - new bitmap APIs: bitmap_alloc, bitmap_zalloc and bitmap_free\n\n - updates to Atmel, eeti. pxrc and iforce drivers\n\n - assorted driver cleanups and fixes.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (57 commits)\n  MAINTAINERS: Add PhoenixRC Flight Controller Adapter\n  Input: do not use WARN() in input_alloc_absinfo()\n  Input: mark expected switch fall-throughs\n  Input: raydium_i2c_ts - use true and false for boolean values\n  Input: evdev - switch to bitmap API\n  Input: gpio-keys - switch to bitmap_zalloc()\n  Input: elan_i2c_smbus - cast sizeof to int for comparison\n  bitmap: Add bitmap_alloc(), bitmap_zalloc() and bitmap_free()\n  md: Avoid namespace collision with bitmap API\n  dm: Avoid namespace collision with bitmap API\n  Input: pm8941-pwrkey - add resin entry\n  Input: pm8941-pwrkey - abstract register offsets and event code\n  Input: iforce - reorganize joystick configuration lists\n  Input: atmel_mxt_ts - move completion to after config crc is updated\n  Input: atmel_mxt_ts - don\u0027t report zero pressure from T9\n  Input: atmel_mxt_ts - zero terminate config firmware file\n  Input: atmel_mxt_ts - refactor config update code to add context struct\n  Input: atmel_mxt_ts - config CRC may start at T71\n  Input: atmel_mxt_ts - remove unnecessary debug on ENOMEM\n  Input: atmel_mxt_ts - remove duplicate setup of ABS_MT_PRESSURE\n  ...\n"
    },
    {
      "commit": "7f02e1ce4a13edf295fcedbc663a8ca69bc1ff6e",
      "tree": "db8b1bb648918b0364d6d4f93b7b61877e2ac20d",
      "parents": [
        "9a96d63aa83c629e0c71f377fea7066fcf66d765",
        "ddb34f480d1b8051bc18e6ff22e93a6c9a33f94f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:45:27 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:45:27 2018 -0700"
      },
      "message": "Merge tag \u0027hwlock-v4.19\u0027 of git://github.com/andersson/remoteproc\n\nPull hwspinlock updates from Bjorn Andersson:\n \"This introduces devres helpers and an API to request a lock by name,\n  then migrates the sprd SPI driver to use these\"\n\n* tag \u0027hwlock-v4.19\u0027 of git://github.com/andersson/remoteproc:\n  hwspinlock: Fix incorrect return pointers\n  spi: sprd: Change to use devm_hwspin_lock_request_specific()\n  spi: sprd: Replace of_hwspin_lock_get_id() with of_hwspin_lock_get_id_byname()\n  hwspinlock: Fix one comment mistake\n  hwspinlock: Remove redundant config\n  hwspinlock: Add devm_xxx() APIs to register/unregister one hwlock controller\n  hwspinlock: Add devm_xxx() APIs to request/free hwlock\n  hwspinlock: Add one new API to support getting a specific hwlock by the name\n"
    },
    {
      "commit": "9a96d63aa83c629e0c71f377fea7066fcf66d765",
      "tree": "a4e412082af999004018a4087625acec2891b10f",
      "parents": [
        "c54fc8658b501b412d006886ebe3e8543a30a122",
        "00b645e0b4e4a3e5f8d88a4e9acf7e80045c34b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:43:57 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:43:57 2018 -0700"
      },
      "message": "Merge tag \u0027rpmsg-v4.19\u0027 of git://github.com/andersson/remoteproc\n\nPull rpmsg updates from Bjorn Andersson:\n \"This fixes a few compile and kerneldoc warnings, allows rpmsg devices\n  to handle power domains, allow for labeling GLINK edges and supports\n  compat for rpmsg_char\"\n\n* tag \u0027rpmsg-v4.19\u0027 of git://github.com/andersson/remoteproc:\n  rpmsg: Add compat ioctl for rpmsg char driver\n  rpmsg: glink: Store edge name for glink device\n  dt-bindings: soc: qcom: Add label for GLINK bindings\n  rpmsg: core: add support to power domains for devices\n  rpmsg: smd: fix kerneldoc warnings\n  rpmsg: glink: Fix various kerneldoc warnings.\n  rpmsg: glink: correctly annotate intent members\n  rpmsg: smd: Add missing include of sizes.h\n"
    },
    {
      "commit": "c54fc8658b501b412d006886ebe3e8543a30a122",
      "tree": "beb6a843a1c838f0499d8417706296a8c97e0f0e",
      "parents": [
        "6eaac34ff30e189fda28110298ca9fbfb2f51e28",
        "b2201ee554a5811f569f31280b0079e7d6177606"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:42:04 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:42:04 2018 -0700"
      },
      "message": "Merge tag \u0027rproc-v4.19\u0027 of git://github.com/andersson/remoteproc\n\nPull remoteproc updates from Bjorn Andersson:\n \"This adds support for pre-start and post-shutdown hooks for remoteproc\n  subdevices, refactors the Qualcomm Hexagon support to allow reuse\n  between several drivers, makes authentication in the MDT file loader\n  optional, migrates a few format strings to use %pK and migrates the\n  Davinci driver to use the reset framework\"\n\n* tag \u0027rproc-v4.19\u0027 of git://github.com/andersson/remoteproc:\n  remoteproc/davinci: use the reset framework\n  remoteproc/davinci: Mark error recovery as disabled\n  remoteproc: st_slim: replace \"%p\" with \"%pK\"\n  remoteproc: replace \"%p\" with \"%pK\"\n  remoteproc: qcom: fix Q6V5_WCSS dependencies\n  remoteproc: Reset table_ptr in rproc_start() failure paths\n  remoteproc: qcom: q6v5-pil: fix modem hang on SDM845 after axis2 clk unvote\n  remoteproc: qcom q6v5: fix modular build\n  remoteproc: Introduce prepare and unprepare for subdevices\n  remoteproc: rename subdev probe and remove functions\n  remoteproc: Make client initialize ops in rproc_subdev\n  remoteproc: Make start and stop in subdev optional\n  remoteproc: Rename subdev functions to start/stop\n  remoteproc: qcom: Introduce Hexagon V5 based WCSS driver\n  remoteproc: qcom: q6v5-pil: Use common q6v5 helpers\n  remoteproc: qcom: adsp: Use common q6v5 helpers\n  remoteproc: q6v5: Extract common resource handling\n  remoteproc: qcom: mdt_loader: Make the firmware authentication optional\n"
    },
    {
      "commit": "6eaac34ff30e189fda28110298ca9fbfb2f51e28",
      "tree": "f2c2d70b12f3e745cfa2e3e6406d9ea6e843e8c0",
      "parents": [
        "13bf2cf9e2d1e0e56088ec6342c2726704100647",
        "12aea518a202bc7c947553840f1d93f8129b41b2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:16:57 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 16:16:57 2018 -0700"
      },
      "message": "Merge tag \u0027linux-watchdog-4.19-rc1\u0027 of git://www.linux-watchdog.org/linux-watchdog\n\nPull watchdog updates from Wim Van Sebroeck:\n\n - add MEN 16z069 IP-Core driver\n\n - renesas-wdt: add support for the R8A77990 wdt\n\n - stm32_iwdg: Add stm32mp1 support and pclk feature\n\n - sp805_wdt, orion_wdt, sprd_wdt: several improvements\n\n - imx2_wdt, stmp3xxx: switch to SPDX identifier\n\n* tag \u0027linux-watchdog-4.19-rc1\u0027 of git://www.linux-watchdog.org/linux-watchdog:\n  watchdog: fix dependencies of menz69_wdt.o\n  watchdog: sp805: Add clock-frequency property\n  watchdog: add driver for the MEN 16z069 IP-Core\n  watchdog: sprd_wdt: Remove redundant dev_err call in sprd_wdt_probe()\n  watchdog: stmp3xxx: Switch to SPDX identifier\n  watchdog: imx2_wdt: Switch to SPDX identifier\n  watchdog: sp805: set WDOG_HW_RUNNING when appropriate\n  watchdog: sp805: add \u0027timeout-sec\u0027 DT property support\n  dt-bindings: watchdog: Add optional \u0027timeout-sec\u0027 property for sp805\n  dt-bindings: watchdog: Consolidate SP805 binding docs\n  watchdog: orion_wdt: Mark watchdog as active when running at probe\n  watchdog: stm32: add pclk feature for stm32mp1\n  dt-bindings: watchdog: add stm32mp1 support\n  dt-bindings: watchdog: renesas-wdt: Add support for the R8A77990 wdt\n"
    },
    {
      "commit": "13bf2cf9e2d1e0e56088ec6342c2726704100647",
      "tree": "b75f76b2376244e64471dd5c6867aaaf3cb0298c",
      "parents": [
        "bbd60bffaf780464298cb7a39852f7f1065f1726",
        "3257d86182cc27eda83d6854787256641f7c574b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 15:55:59 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 15:55:59 2018 -0700"
      },
      "message": "Merge tag \u0027dmaengine-4.19-rc1\u0027 of git://git.infradead.org/users/vkoul/slave-dma\n\nPull DMAengine updates from Vinod Koul:\n \"This round brings couple of framework changes, a new driver and usual\n  driver updates:\n\n   - new managed helper for dmaengine framework registration\n\n   - split dmaengine pause capability to pause and resume and allow\n     drivers to report that individually\n\n   - update dma_request_chan_by_mask() to handle deferred probing\n\n   - move imx-sdma to use virt-dma\n\n   - new driver for Actions Semi Owl family S900 controller\n\n   - minor updates to intel, renesas, mv_xor, pl330 etc\"\n\n* tag \u0027dmaengine-4.19-rc1\u0027 of git://git.infradead.org/users/vkoul/slave-dma: (46 commits)\n  dmaengine: Add Actions Semi Owl family S900 DMA driver\n  dt-bindings: dmaengine: Add binding for Actions Semi Owl SoCs\n  dmaengine: sh: rcar-dmac: Should not stop the DMAC by rcar_dmac_sync_tcr()\n  dmaengine: mic_x100_dma: use the new helper to simplify the code\n  dmaengine: add a new helper dmaenginem_async_device_register\n  dmaengine: imx-sdma: add memcpy interface\n  dmaengine: imx-sdma: add SDMA_BD_MAX_CNT to replace \u00270xffff\u0027\n  dmaengine: dma_request_chan_by_mask() to handle deferred probing\n  dmaengine: pl330: fix irq race with terminate_all\n  dmaengine: Revert \"dmaengine: mv_xor_v2: enable COMPILE_TEST\"\n  dmaengine: mv_xor_v2: use {lower,upper}_32_bits to configure HW descriptor address\n  dmaengine: mv_xor_v2: enable COMPILE_TEST\n  dmaengine: mv_xor_v2: move unmap to before callback\n  dmaengine: mv_xor_v2: convert callback to helper function\n  dmaengine: mv_xor_v2: kill the tasklets upon exit\n  dmaengine: mv_xor_v2: explicitly freeup irq\n  dmaengine: sh: rcar-dmac: Add dma_pause operation\n  dmaengine: sh: rcar-dmac: add a new function to clear CHCR.DE with barrier\n  dmaengine: idma64: Support dmaengine_terminate_sync()\n  dmaengine: hsu: Support dmaengine_terminate_sync()\n  ...\n"
    },
    {
      "commit": "bbd60bffaf780464298cb7a39852f7f1065f1726",
      "tree": "1338cf7dd93214382127a53b88969e870fbb837a",
      "parents": [
        "307797159ac25fe5a2048bf5c6a5718298edca57",
        "7f38abf220e2c800a2c451372e9f07ed5fd0ea49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 15:54:05 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 15:54:05 2018 -0700"
      },
      "message": "Merge tag \u0027mmc-v4.19\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc\n\nPull MMC updates from Ulf Hansson:\n \"Updates for MMC for v4.19.\n\n  MMC core:\n   - Add some fine-grained hooks to further support HS400 tuning\n   - Improve error path for bus width setting for HS400es\n   - Use a common method when checking R1 status\n\n  MMC host:\n   - renesas_sdhi: Add r8a77990 support\n   - renesas_sdhi: Add eMMC HS400 mode support\n   - tmio/renesas_sdhi: Improve tuning/clock management\n   - tmio: Add eMMC HS400 mode support\n   - sunxi: Add support for 3.3V eMMC DDR mode\n   - mmci: Initial support to manage variant specific callbacks\n   - sdhci: Don\u0027t try 3.3V I/O voltage if not supported\n   - sdhci-pci-dwc-mshc: Add driver to support Synopsys dwc mshc SDHCI PCI\n   - sdhci-of-dwcmshc: Add driver to support Synopsys DWC MSHC SDHCI\n   - sdhci-msm: Add support for new version sdcc V5\n   - sdhci-pci-o2micro: Add support for O2 eMMC HS200 mode\n   - sdhci-pci-o2micro: Add support for O2 hardware tuning\n   - sdhci-pci-o2micro: Add MSI interrupt support for O2 SD host\n   - sdhci-pci: Add support for Intel ICP\n   - sdhci-tegra: Prevent ACMD23 and HS200 mode on Tegra 3\n   - sdhci-tegra: Fix eMMC DDR52 mode\n   - sdhci-tegra: Improve clock management\n   - dw_mmc-rockchip: Document compatible string for px30\n   - sdhci-esdhc-imx: Add support for 3.3V eMMC DDR mode\n   - sdhci-of-esdhc: Set proper DMA mask for ls104x chips\n   - sdhci-of-esdhc: Improve clock management\n   - sdhci-of-arasan: Add a quirk to manage unstable clocks\n   - dw_mmc-exynos: Address potential external abort during system resume\n   - pxamci: Add support for common MMC DT bindings\n   - pxamci: Several cleanups and improvements\n   - pxamci: Merge immutable branch for pxa to switch to DMA slave maps\"\n\n* tag \u0027mmc-v4.19\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (56 commits)\n  mmc: core: improve reasonableness of bus width setting for HS400es\n  mmc: tmio: remove unneeded variable in tmio_mmc_start_command()\n  mmc: renesas_sdhi: Fix sampling clock position selecting\n  mmc: tmio: Fix tuning flow\n  mmc: sunxi: remove output of virtual base address\n  dt-bindings: mmc: rockchip-dw-mshc: add description for px30\n  mmc: renesas_sdhi: Add r8a77990 support\n  mmc: sunxi: allow 3.3V DDR when DDR is available\n  mmc: mmci: Add and implement a -\u003edma_setup() callback for qcom dml\n  mmc: mmci: Initial support to manage variant specific callbacks\n  mmc: tegra: Force correct divider calculation on DDR50/52\n  mmc: sdhci: Add MSI interrupt support for O2 SD host\n  mmc: sdhci: Add support for O2 hardware tuning\n  mmc: sdhci: Export sdhci tuning function symbol\n  mmc: sdhci: Change O2 Host HS200 mode clock frequency to 200MHz\n  mmc: sdhci: Add support for O2 eMMC HS200 mode\n  mmc: tegra: Add and use tegra_sdhci_get_max_clock()\n  mmc: sdhci-esdhc-imx: fix indent\n  mmc: sdhci-esdhc-imx: disable clocks before changing frequency\n  mmc: tegra: prevent ACMD23 on Tegra 3\n  ...\n"
    },
    {
      "commit": "bb107456ba5a85e50567d56b0c8050c2ad199e9b",
      "tree": "8f7e6dbebebdd52027025a535b802922dd684b46",
      "parents": [
        "6e3bf9b04f79a009a7ff336ba7353ab565daaec8"
      ],
      "author": {
        "name": "Haishuang Yan",
        "email": "yanhaishuang@cmss.chinamobile.com",
        "time": "Sat Aug 18 22:43:48 2018 +0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 18 13:46:54 2018 -0700"
      },
      "message": "ip6_vti: simplify stats handling in vti6_xmit\n\nSame as ip_vti, use iptunnel_xmit_stats to updates stats in tunnel xmit\ncode path.\n\nSigned-off-by: Haishuang Yan \u003cyanhaishuang@cmss.chinamobile.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "307797159ac25fe5a2048bf5c6a5718298edca57",
      "tree": "cc45222a2de182292a65f6f17a959d3c3a4d4ec1",
      "parents": [
        "771c035372a036f83353eef46dbb829780330234"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 12:30:42 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 12:30:42 2018 -0700"
      },
      "message": "pcmcia: remove long deprecated pcmcia_request_exclusive_irq() function\n\nThis function was created as a deprecated fallback case back in 2010 by\ncommit eb14120f743d (\"pcmcia: re-work pcmcia_request_irq()\") for legacy\ncases.\n\nActual in-kernel users haven\u0027t been around for a long while.  The last\nin-kernel user was apparently removed four years ago by commit\n5f5316fcd08e (\"am2150: Update nmclan_cs.c to use update PCMCIA API\").\n\nJust remove it entirely.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "771c035372a036f83353eef46dbb829780330234",
      "tree": "ad508b447984cee53096cdd078158c47d0cd206c",
      "parents": [
        "a18d783fedfe6f9b720afe901db9501ce116ed81"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 12:19:56 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 12:19:56 2018 -0700"
      },
      "message": "deprecate the \u0027__deprecated\u0027 attribute warnings entirely and for good\n\nWe haven\u0027t had lots of deprecation warnings lately, but the rdma use of\nit made them flare up again.\n\nThey are not useful.  They annoy everybody, and nobody ever does\nanything about them, because it\u0027s always \"somebody elses problem\".  And\nwhen people start thinking that warnings are normal, they stop looking\nat them, and the real warnings that mean something go unnoticed.\n\nIf you want to get rid of a function, just get rid of it.  Convert every\nuser to the new world order.\n\nAnd if you can\u0027t do that, then don\u0027t annoy everybody else with your\nmarking that says \"I couldn\u0027t be bothered to fix this, so I\u0027ll just spam\neverybody elses build logs with warnings about my laziness\".\n\nMake a kernelnewbies wiki page about things that could be cleaned up,\nwrite a blog post about it, or talk to people on the mailing lists.  But\ndon\u0027t add warnings to the kernel build about cleanup that you think\nshould happen but you aren\u0027t doing yourself.\n\nDon\u0027t.  Just don\u0027t.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a18d783fedfe6f9b720afe901db9501ce116ed81",
      "tree": "12e100b5b31657d11bfc5dc3e2ddd124f3690cb3",
      "parents": [
        "d5acba26bfa097a618be425522b1ec4269d3edaf",
        "d2fc88a61b4ea99f574bde16e92718e22f312136"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:44:53 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:44:53 2018 -0700"
      },
      "message": "Merge tag \u0027driver-core-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core\n\nPull driver core updates from Greg KH:\n \"Here are all of the driver core and related patches for 4.19-rc1.\n\n  Nothing huge here, just a number of small cleanups and the ability to\n  now stop the deferred probing after init happens.\n\n  All of these have been in linux-next for a while with only a merge\n  issue reported\"\n\n* tag \u0027driver-core-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (21 commits)\n  base: core: Remove WARN_ON from link dependencies check\n  drivers/base: stop new probing during shutdown\n  drivers: core: Remove glue dirs from sysfs earlier\n  driver core: remove unnecessary function extern declare\n  sysfs.h: fix non-kernel-doc comment\n  PM / Domains: Stop deferring probe at the end of initcall\n  iommu: Remove IOMMU_OF_DECLARE\n  iommu: Stop deferring probe at end of initcalls\n  pinctrl: Support stopping deferred probe after initcalls\n  dt-bindings: pinctrl: add a \u0027pinctrl-use-default\u0027 property\n  driver core: allow stopping deferred probe after init\n  driver core: add a debugfs entry to show deferred devices\n  sysfs: Fix internal_create_group() for named group updates\n  base: fix order of OF initialization\n  linux/device.h: fix kernel-doc notation warning\n  Documentation: update firmware loader fallback reference\n  kobject: Replace strncpy with memcpy\n  drivers: base: cacheinfo: use OF property_read_u32 instead of get_property,read_number\n  kernfs: Replace strncpy with memcpy\n  device: Add #define dev_fmt similar to #define pr_fmt\n  ...\n"
    },
    {
      "commit": "d5acba26bfa097a618be425522b1ec4269d3edaf",
      "tree": "7abb08032d4b79b34eb1386aa007a811e1964839",
      "parents": [
        "2475c515d4031c494ff452508a8bf8c281ec6e56",
        "128f38041035001276e964cda1cf951f218d965d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:04:51 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:04:51 2018 -0700"
      },
      "message": "Merge tag \u0027char-misc-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc\n\nPull char/misc driver updates from Greg KH:\n \"Here is the bit set of char/misc drivers for 4.19-rc1\n\n  There is a lot here, much more than normal, seems like everyone is\n  writing new driver subsystems these days... Anyway, major things here\n  are:\n\n   - new FSI driver subsystem, yet-another-powerpc low-level hardware\n     bus\n\n   - gnss, finally an in-kernel GPS subsystem to try to tame all of the\n     crazy out-of-tree drivers that have been floating around for years,\n     combined with some really hacky userspace implementations. This is\n     only for GNSS receivers, but you have to start somewhere, and this\n     is great to see.\n\n  Other than that, there are new slimbus drivers, new coresight drivers,\n  new fpga drivers, and loads of DT bindings for all of these and\n  existing drivers.\n\n  All of these have been in linux-next for a while with no reported\n  issues\"\n\n* tag \u0027char-misc-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (255 commits)\n  android: binder: Rate-limit debug and userspace triggered err msgs\n  fsi: sbefifo: Bump max command length\n  fsi: scom: Fix NULL dereference\n  misc: mic: SCIF Fix scif_get_new_port() error handling\n  misc: cxl: changed asterisk position\n  genwqe: card_base: Use true and false for boolean values\n  misc: eeprom: assignment outside the if statement\n  uio: potential double frees if __uio_register_device() fails\n  eeprom: idt_89hpesx: clean up an error pointer vs NULL inconsistency\n  misc: ti-st: Fix memory leak in the error path of probe()\n  android: binder: Show extra_buffers_size in trace\n  firmware: vpd: Fix section enabled flag on vpd_section_destroy\n  platform: goldfish: Retire pdev_bus\n  goldfish: Use dedicated macros instead of manual bit shifting\n  goldfish: Add missing includes to goldfish.h\n  mux: adgs1408: new driver for Analog Devices ADGS1408/1409 mux\n  dt-bindings: mux: add adi,adgs1408\n  Drivers: hv: vmbus: Cleanup synic memory free path\n  Drivers: hv: vmbus: Remove use of slow_virt_to_phys()\n  Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind()\n  ...\n"
    },
    {
      "commit": "2475c515d4031c494ff452508a8bf8c281ec6e56",
      "tree": "0303935bbd919ec522bf0fe02066f09b391d2b57",
      "parents": [
        "336722eb9d9732c5a497fb6299bf38cde413592b",
        "e4f6a44c4aeca9eda153302abb0c14d053914f72"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:00:00 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 11:00:00 2018 -0700"
      },
      "message": "Merge tag \u0027staging-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging\n\nPull staging and IIO updates from Greg KH:\n \"Here are the big staging/iio patches for 4.19-rc1.\n\n  Lots of churn here, with tons of cleanups happening in staging\n  drivers, a removal of an old crypto driver that no one was using\n  (skein), and the addition of some new IIO drivers. Also added was a\n  \"gasket\" driver from Google that needs loads of work and the erofs\n  filesystem.\n\n  Even with adding all of the new drivers and a new filesystem, we are\n  only adding about 1000 lines overall to the kernel linecount, which\n  shows just how much cleanup happened, and how big the unused crypto\n  driver was.\n\n  All of these have been in the linux-next tree for a while now with no\n  reported issues\"\n\n* tag \u0027staging-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (903 commits)\n  staging:rtl8192u: Remove unused macro definitions - Style\n  staging:rtl8192u: Add spaces around \u0027+\u0027 operator - Style\n  staging:rtl8192u: Remove stale comment - Style\n  staging: rtl8188eu: remove unused mp_custom_oid.h\n  staging: fbtft: Add spaces around / - Style\n  staging: fbtft: Erases some repetitive usage of function name - Style\n  staging: fbtft: Adjust some empty-line problems - Style\n  staging: fbtft: Removes one nesting level to help readability - Style\n  staging: fbtft: Changes gamma table to define.\n  staging: fbtft: A bit more information on dev_err.\n  staging: fbtft: Fixes some alignment issues - Style\n  staging: fbtft: Puts macro arguments in parenthesis to avoid precedence issues - Style\n  staging: rtl8188eu: remove unused array dB_Invert_Table\n  staging: rtl8188eu: remove whitespace, add missing blank line\n  staging: rtl8188eu: use is_multicast_ether_addr in rtw_sta_mgt.c\n  staging: rtl8188eu: remove whitespace - style\n  staging: rtl8188eu: cleanup block comment - style\n  staging: rtl8188eu: use is_multicast_ether_addr in rtl8188eu_xmit.c\n  staging: rtl8188eu: use is_multicast_ether_addr in recv_linux.c\n  staging: rtlwifi: refactor rtl_get_tcb_desc\n  ...\n"
    },
    {
      "commit": "336722eb9d9732c5a497fb6299bf38cde413592b",
      "tree": "3b547c3bb7ec0d6dcc8d915e6b76a4f12e2f7bff",
      "parents": [
        "5695d5d1970f975de059bb6dec76941440f62488",
        "47ac76662ca9c5852fd353093f19de3ae85f2e66"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 10:50:41 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 10:50:41 2018 -0700"
      },
      "message": "Merge tag \u0027tty-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty\n\nPull tty/serial driver updates from Greg KH:\n \"Here is the big tty and serial driver pull request for 4.19-rc1.\n\n  It\u0027s not all that big, just a number of small serial driver updates\n  and fixes, along with some better vt handling for unicode characters\n  for those using braille terminals.\n\n  All of these patches have been in linux-next for a long time with no\n  reported issues\"\n\n* tag \u0027tty-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (73 commits)\n  tty: serial: 8250: Revert NXP SC16C2552 workaround\n  serial: 8250_exar: Read INT0 from slave device, too\n  tty: rocket: Fix possible buffer overwrite on register_PCI\n  serial: 8250_dw: Add ACPI support for uart on Broadcom SoC\n  serial: 8250_dw: always set baud rate in dw8250_set_termios\n  dt-bindings: serial: Add binding for uartlite\n  tty: serial: uartlite: Add support for suspend and resume\n  tty: serial: uartlite: Add clock adaptation\n  tty: serial: uartlite: Add structure for private data\n  serial: sh-sci: Improve support for separate TEI and DRI interrupts\n  serial: sh-sci: Remove SCIx_RZ_SCIFA_REGTYPE\n  serial: sh-sci: Allow for compressed SCIF address\n  serial: sh-sci: Improve interrupts description\n  serial: 8250: Use cached port name directly in messages\n  serial: 8250_exar: Drop unused variable in pci_xr17v35x_setup()\n  vt: drop unused struct vt_struct\n  vt: avoid a VLA in the unicode screen scroll function\n  vt: add /dev/vcsu* to devices.txt\n  vt: coherence validation code for the unicode screen buffer\n  vt: selection: take screen contents from uniscr if available\n  ...\n"
    },
    {
      "commit": "5695d5d1970f975de059bb6dec76941440f62488",
      "tree": "6b03381a0b103324c286a83ebb4154719b514feb",
      "parents": [
        "1f7a4c73a739a63b3f108d8eda6f947fdc70dd65",
        "29c692c96b3a39cd1911fb79cd2505af8d070f07"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 10:21:49 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 18 10:21:49 2018 -0700"
      },
      "message": "Merge tag \u0027usb-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb\n\nPull USB/PHY updates from Greg KH:\n \"Here is the big USB and phy driver patch set for 4.19-rc1.\n\n  Nothing huge but there was a lot of work that happened this\n  development cycle:\n\n   - lots of type-c work, with drivers graduating out of staging, and\n     displayport support being added.\n\n   - new PHY drivers\n\n   - the normal collection of gadget driver updates and fixes\n\n   - code churn to work on the urb handling path, using irqsave()\n     everywhere in anticipation of making this codepath a lot simpler in\n     the future.\n\n   - usbserial driver fixes and reworks\n\n   - other misc changes\n\n  All of these have been in linux-next with no reported issues for a\n  while\"\n\n* tag \u0027usb-4.19-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (159 commits)\n  USB: serial: pl2303: add a new device id for ATEN\n  usb: renesas_usbhs: Kconfig: convert to SPDX identifiers\n  usb: dwc3: gadget: Check MaxPacketSize from descriptor\n  usb: dwc2: Turn on uframe_sched on \"stm32f4x9_fsotg\" platforms\n  usb: dwc2: Turn on uframe_sched on \"amlogic\" platforms\n  usb: dwc2: Turn on uframe_sched on \"his\" platforms\n  usb: dwc2: Turn on uframe_sched on \"bcm\" platforms\n  usb: dwc2: gadget: ISOC\u0027s starting flow improvement\n  usb: dwc2: Make dwc2_readl/writel functions endianness-agnostic.\n  usb: dwc3: core: Enable AutoRetry feature in the controller\n  usb: dwc3: Set default mode for dwc_usb31\n  usb: gadget: udc: renesas_usb3: Add register of usb role switch\n  usb: dwc2: replace ioread32/iowrite32_rep with dwc2_readl/writel_rep\n  usb: dwc2: Modify dwc2_readl/writel functions prototype\n  usb: dwc3: pci: Intel Merrifield can be host\n  usb: dwc3: pci: Supply device properties via driver data\n  arm64: dts: dwc3: description of incr burst type\n  usb: dwc3: Enable undefined length INCR burst type\n  usb: dwc3: add global soc bus configuration reg0\n  usb: dwc3: Describe \u0027wakeup_work\u0027 field of struct dwc3_pci\n  ...\n"
    },
    {
      "commit": "6e3bf9b04f79a009a7ff336ba7353ab565daaec8",
      "tree": "12e5914158a802b7761b0b44d953ac06f6c51fcc",
      "parents": [
        "3fe49d699a9604eed851eb45e1e0adab0e25688e",
        "f6069b9aa9934ede26f41ac0781fce241279ad43"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 18 10:02:49 2018 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 18 10:02:49 2018 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf\n\nDaniel Borkmann says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npull-request: bpf 2018-08-18\n\nThe following pull-request contains BPF updates for your *net* tree.\n\nThe main changes are:\n\n1) Fix a BPF selftest failure in test_cgroup_storage due to rlimit\n   restrictions, from Yonghong.\n\n2) Fix a suspicious RCU rcu_dereference_check() warning triggered\n   from removing a device\u0027s XDP memory allocator by using the correct\n   rhashtable lookup function, from Tariq.\n\n3) A batch of BPF sockmap and ULP fixes mainly fixing leaks and races\n   as well as enforcing module aliases for ULPs. Another fix for BPF\n   map redirect to make them work again with tail calls, from Daniel.\n\n4) Fix XDP BPF samples to unload their programs upon SIGTERM, from Jesper.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "3fe49d699a9604eed851eb45e1e0adab0e25688e",
      "tree": "a9a307f2dc93f8aec686d9a0a9f22a0a54ae53bc",
      "parents": [
        "bfdd19ad80f203f42f05fd32a31c678c9c524ef9",
        "feb9f55c33e5114127238a2c87c069b4f30d1f23"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 18 09:59:19 2018 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Aug 18 09:59:19 2018 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf\n\nPablo Neira Ayuso says:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nNetfilter/IPVS fixes for net\n\nThe following patchset contains Netfilter/IPVS fixes for your net tree:\n\n1) Infinite loop in IPVS when net namespace is released, from\n   Tan Hu.\n\n2) Do not show negative timeouts in ip_vs_conn by using the new\n   jiffies_delta_to_msecs(), patches from Matteo Croce.\n\n3) Set F_IFACE flag for linklocal addresses in ip6t_rpfilter,\n   from Florian Westphal.\n\n4) Fix overflow in set size allocation, from Taehee Yoo.\n\n5) Use netlink_dump_start() from ctnetlink to fix memleak from\n   the error path, again from Florian.\n\n6) Register nfnetlink_subsys in last place, otherwise netns\n   init path may lose race and see net-\u003enft uninitialized data.\n   This also reverts previous attempt to fix this by increase\n   netns refcount, patches from Florian.\n\n7) Remove conntrack entries on layer 4 protocol tracker module\n   removal, from Florian.\n\n8) Use GFP_KERNEL_ACCOUNT for xtables blob allocation, from\n   Michal Hocko.\n\n9) Get tproxy documentation in sync with existing codebase,\n   from Mate Eckl.\n\n10) Honor preset layer 3 protocol via ctx-\u003efamily in the new nft_ct\n    timeout infrastructure, from Harsha Sharma.\n\n11) Let uapi nfnetlink_osf.h compile standalone with no errors,\n    from Dmitry V. Levin.\n\n12) Missing braces compilation warning in nft_tproxy, patch from\n    Mate Eclk.\n\n13) Disregard bogus check to bail out on non-anonymous sets from\n    the dynamic set update extension.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "1f7a4c73a739a63b3f108d8eda6f947fdc70dd65",
      "tree": "6ce80b373421aab2d704e2c4b3a50faa2104b086",
      "parents": [
        "6ada4e2826794bdf8d88f938a9ced0b80894b037",
        "edcd9d977354304cb85aee61c2b96809edce41ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 17:27:58 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 17:27:58 2018 -0700"
      },
      "message": "Merge tag \u00279p-for-4.19-2\u0027 of git://github.com/martinetd/linux\n\nPull 9p updates from Dominique Martinet:\n \"This contains mostly fixes (6 to be backported to stable) and a few\n  changes, here is the breakdown:\n\n   - rework how fids are attributed by replacing some custom tracking in\n     a list by an idr\n\n   - for packet-based transports (virtio/rdma) validate that the packet\n     length matches what the header says\n\n   - a few race condition fixes found by syzkaller\n\n   - missing argument check when NULL device is passed in sys_mount\n\n   - a few virtio fixes\n\n   - some spelling and style fixes\"\n\n* tag \u00279p-for-4.19-2\u0027 of git://github.com/martinetd/linux: (21 commits)\n  net/9p/trans_virtio.c: add null terminal for mount tag\n  9p/virtio: fix off-by-one error in sg list bounds check\n  9p: fix whitespace issues\n  9p: fix multiple NULL-pointer-dereferences\n  fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed\n  9p: validate PDU length\n  net/9p/trans_fd.c: fix race by holding the lock\n  net/9p/trans_fd.c: fix race-condition by flushing workqueue before the kfree()\n  net/9p/virtio: Fix hard lockup in req_done\n  net/9p/trans_virtio.c: fix some spell mistakes in comments\n  9p/net: Fix zero-copy path in the 9p virtio transport\n  9p: Embed wait_queue_head into p9_req_t\n  9p: Replace the fidlist with an IDR\n  9p: Change p9_fid_create calling convention\n  9p: Fix comment on smp_wmb\n  net/9p/client.c: version pointer uninitialized\n  fs/9p/v9fs.c: fix spelling mistake \"Uknown\" -\u003e \"Unknown\"\n  net/9p: fix error path of p9_virtio_probe\n  9p/net/protocol.c: return -ENOMEM when kmalloc() failed\n  net/9p/client.c: add missing \u0027\\n\u0027 at the end of p9_debug()\n  ...\n"
    },
    {
      "commit": "6ada4e2826794bdf8d88f938a9ced0b80894b037",
      "tree": "4a39e46d6c4502ae9346566b2e384dcc2205c014",
      "parents": [
        "9bd553929f68921be0f2014dd06561e0c8249a0d",
        "1e9264192961aa519595170aa8b0f7651a2ad28e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:49:31 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:49:31 2018 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (patches from Andrew)\n\nMerge updates from Andrew Morton:\n\n - a few misc things\n\n - a few Y2038 fixes\n\n - ntfs fixes\n\n - arch/sh tweaks\n\n - ocfs2 updates\n\n - most of MM\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (111 commits)\n  mm/hmm.c: remove unused variables align_start and align_end\n  fs/userfaultfd.c: remove redundant pointer uwq\n  mm, vmacache: hash addresses based on pmd\n  mm/list_lru: introduce list_lru_shrink_walk_irq()\n  mm/list_lru.c: pass struct list_lru_node* as an argument to __list_lru_walk_one()\n  mm/list_lru.c: move locking from __list_lru_walk_one() to its caller\n  mm/list_lru.c: use list_lru_walk_one() in list_lru_walk_node()\n  mm, swap: make CONFIG_THP_SWAP depend on CONFIG_SWAP\n  mm/sparse: delete old sparse_init and enable new one\n  mm/sparse: add new sparse_init_nid() and sparse_init()\n  mm/sparse: move buffer init/fini to the common place\n  mm/sparse: use the new sparse buffer functions in non-vmemmap\n  mm/sparse: abstract sparse buffer allocations\n  mm/hugetlb.c: don\u0027t zero 1GiB bootmem pages\n  mm, page_alloc: double zone\u0027s batchsize\n  mm/oom_kill.c: document oom_lock\n  mm/hugetlb: remove gigantic page support for HIGHMEM\n  mm, oom: remove sleep from under oom_lock\n  kernel/dma: remove unsupported gfp_mask parameter from dma_alloc_from_contiguous()\n  mm/cma: remove unsupported gfp_mask parameter from cma_alloc()\n  ...\n"
    },
    {
      "commit": "1e9264192961aa519595170aa8b0f7651a2ad28e",
      "tree": "2f4779564aaeb410d8645beb86962c7415561ab2",
      "parents": [
        "5241d4727479aad77af50b80757c38268bfa4560"
      ],
      "author": {
        "name": "Colin Ian King",
        "email": "colin.king@canonical.com",
        "time": "Fri Aug 17 15:50:07 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:33 2018 -0700"
      },
      "message": "mm/hmm.c: remove unused variables align_start and align_end\n\nVariables align_start and align_end are being assigned but are never\nused hence they are redundant and can be removed.\n\nCleans up clang warnings:\n  warning: variable \u0027align_start\u0027 set but not used [-Wunused-but-set-variable]\n  warning: variable \u0027align_size\u0027 set but not used [-Wunused-but-set-variable]\n\nLink: http://lkml.kernel.org/r/20180714161124.3923-1-colin.king@canonical.com\nSigned-off-by: Colin Ian King \u003ccolin.king@canonical.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@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": "5241d4727479aad77af50b80757c38268bfa4560",
      "tree": "8638c1713966d4cea62912ecd24a374e4baf7ce0",
      "parents": [
        "ddbf369c0a33924f76d092985bd20d9310f43d7f"
      ],
      "author": {
        "name": "Colin Ian King",
        "email": "colin.king@canonical.com",
        "time": "Fri Aug 17 15:50:01 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "fs/userfaultfd.c: remove redundant pointer uwq\n\nPointer uwq is being assigned but is never used hence it is redundant\nand can be removed.\n\nCleans up clang warning:\n  warning: variable \u0027uwq\u0027 set but not used [-Wunused-but-set-variable]\n\nLink: http://lkml.kernel.org/r/20180717090802.18357-1-colin.king@canonical.com\nSigned-off-by: Colin Ian King \u003ccolin.king@canonical.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@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": "ddbf369c0a33924f76d092985bd20d9310f43d7f",
      "tree": "cd24a886c4e71a26ad3f51e830a5e33e1b488b32",
      "parents": [
        "6b51e88199ca4f75ff647eff28efd30bfcb08dc4"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Fri Aug 17 15:49:58 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm, vmacache: hash addresses based on pmd\n\nWhen perf profiling a wide variety of different workloads, it was found\nthat vmacache_find() had higher than expected cost: up to 0.08% of cpu\nutilization in some cases.  This was found to rival other core VM\nfunctions such as alloc_pages_vma() with thp enabled and default\nmempolicy, and the conditionals in __get_vma_policy().\n\nVMACACHE_HASH() determines which of the four per-task_struct slots a vma\nis cached for a particular address.  This currently depends on the pfn,\nso pfn 5212 occupies a different vmacache slot than its neighboring pfn\n5213.\n\nvmacache_find() iterates through all four of current\u0027s vmacache slots\nwhen looking up an address.  Hashing based on pfn, an address has\n~1/VMACACHE_SIZE chance of being cached in the first vmacache slot, or\nabout 25%, *if* the vma is cached.\n\nThis patch hashes an address by its pmd instead of pte to optimize for\nworkloads with good spatial locality.  This results in a higher\nprobability of vmas being cached in the first slot that is checked:\nnormally ~70% on the same workloads instead of 25%.\n\n[rientjes@google.com: various updates]\n  Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1807231532290.109445@chino.kir.corp.google.com\nLink: http://lkml.kernel.org/r/alpine.DEB.2.21.1807091749150.114630@chino.kir.corp.google.com\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Davidlohr Bueso \u003cdave@stgolabs.net\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b51e88199ca4f75ff647eff28efd30bfcb08dc4",
      "tree": "6c1411444d28a3a77c36bfddb92576b43469245f",
      "parents": [
        "6e018968f8d384d84484eba8e4c90489a25d7095"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:49:55 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/list_lru: introduce list_lru_shrink_walk_irq()\n\nProvide list_lru_shrink_walk_irq() and let it behave like\nlist_lru_walk_one() except that it locks the spinlock with\nspin_lock_irq().  This is used by scan_shadow_nodes() because its lock\nnests within the i_pages lock which is acquired with IRQ.  This change\nallows to use proper locking promitives instead hand crafted\nlock_irq_disable() plus spin_lock().\n\nThere is no EXPORT_SYMBOL provided because the current user is in-kernel\nonly.\n\nAdd list_lru_shrink_walk_irq() which acquires the spinlock with the\nproper locking primitives.\n\nLink: http://lkml.kernel.org/r/20180716111921.5365-5-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e018968f8d384d84484eba8e4c90489a25d7095",
      "tree": "41dcb86fb5b712b48b6e2a7e7dedcdb2d3e157e0",
      "parents": [
        "6cfe57a96ba33139c57056185d5eee9018e3dedc"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:49:51 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/list_lru.c: pass struct list_lru_node* as an argument to __list_lru_walk_one()\n\n__list_lru_walk_one() is invoked with struct list_lru *lru, int nid as\nthe first two argument.  Those two are only used to retrieve struct\nlist_lru_node.  Since this is already done by the caller of the function\nfor the locking, we can pass struct list_lru_node* directly and avoid\nthe dance around it.\n\nLink: http://lkml.kernel.org/r/20180716111921.5365-4-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cfe57a96ba33139c57056185d5eee9018e3dedc",
      "tree": "801e1dd228acd93078bd7548879f7577d16cc486",
      "parents": [
        "87a5ffc163966b2eb675c9c863c0caccab3183f6"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:49:48 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/list_lru.c: move locking from __list_lru_walk_one() to its caller\n\nMove the locking inside __list_lru_walk_one() to its caller.  This is a\npreparation step in order to introduce list_lru_walk_one_irq() which\ndoes spin_lock_irq() instead of spin_lock() for the locking.\n\nLink: http://lkml.kernel.org/r/20180716111921.5365-3-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87a5ffc163966b2eb675c9c863c0caccab3183f6",
      "tree": "f6f58cabced305d5cfac56d31b78d118aae0f008",
      "parents": [
        "14fef28414c365a979311821bbf1018a8290cc0f"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:49:45 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/list_lru.c: use list_lru_walk_one() in list_lru_walk_node()\n\nPatch series \"mm/list_lru: Add list_lru_shrink_walk_irq() and a user\".\n\nThis series removes the local_irq_disable() around\nlist_lru_shrink_walk() (as used by mm/workingset) by adding\nlist_lru_shrink_walk_irq().\n\nVladimir Davydov preferred this over `irq\u0027 argument which I added to\nstruct list_lru.\n\nThe initial post (of this series) received a Reviewed-by tag by Vladimir\nDavydov which I added to each patch of the series.  The series applies\non top of akpm\u0027s tree which has Kirill\u0027s shrink_slab series and does not\nclash with it (akpm asked me to wait a week or so and repost it then).\n\nI tested the code paths by triggering the OOM-killer via memory over\ncommit and lockdep did not complain (nor did I see any warnings).\n\nThis patch (of 4):\n\nlist_lru_walk_node() invokes __list_lru_walk_one() with -1 as the\nmemcg_idx parameter.  The same can be achieved by list_lru_walk_one() and\npassing NULL as memcg argument which then gets converted into -1.  This is\na preparation step when the spin_lock() function is lifted to the caller\nof __list_lru_walk_one().  Invoke list_lru_walk_one() instead\n__list_lru_walk_one() when possible.\n\nLink: http://lkml.kernel.org/r/20180716111921.5365-2-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fef28414c365a979311821bbf1018a8290cc0f",
      "tree": "acf988e3dce9ab19c6285a56d8266cf7698b3209",
      "parents": [
        "2a3cb8baef71e4dad4a6ec17f5f0db9e05f46a01"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Aug 17 15:49:41 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm, swap: make CONFIG_THP_SWAP depend on CONFIG_SWAP\n\nCONFIG_THP_SWAP should depend on CONFIG_SWAP, because it\u0027s unreasonable\nto optimize swapping for THP (Transparent Huge Page) without basic\nswapping support.\n\nIn original code, when CONFIG_SWAP\u003dn and CONFIG_THP_SWAP\u003dy,\nsplit_swap_cluster() will not be built because it is in swapfile.c, but\nit will be called in huge_memory.c.  This doesn\u0027t trigger a build error\nin practice because the call site is enclosed by PageSwapCache(), which\nis defined to be constant 0 when CONFIG_SWAP\u003dn.  But this is fragile and\nshould be fixed.\n\nThe comments are fixed too to reflect the latest progress.\n\nLink: http://lkml.kernel.org/r/20180713021228.439-1-ying.huang@intel.com\nFixes: 38d8b4e6bdc8 (\"mm, THP, swap: delay splitting THP during swap out\")\nSigned-off-by: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nReviewed-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Shaohua Li \u003cshli@kernel.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Hansen \u003cdave.hansen@linux.intel.com\u003e\nCc: Zi Yan \u003czi.yan@cs.rutgers.edu\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a3cb8baef71e4dad4a6ec17f5f0db9e05f46a01",
      "tree": "37b814b70e116b69e9385568e98f44a1125a4e0d",
      "parents": [
        "85c77f79139062901727cc3bd87a65212c8c0a32"
      ],
      "author": {
        "name": "Pavel Tatashin",
        "email": "pasha.tatashin@oracle.com",
        "time": "Fri Aug 17 15:49:37 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/sparse: delete old sparse_init and enable new one\n\nRename new_sparse_init() to sparse_init() which enables it.  Delete old\nsparse_init() and all the code that became obsolete with.\n\n[pasha.tatashin@oracle.com: remove unused sparse_mem_maps_populate_node()]\n  Link: http://lkml.kernel.org/r/20180716174447.14529-6-pasha.tatashin@oracle.com\nLink: http://lkml.kernel.org/r/20180712203730.8703-6-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\t[powerpc]\nTested-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Abdul Haleem \u003cabdhalee@linux.vnet.ibm.com\u003e\nCc: Baoquan He \u003cbhe@redhat.com\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jérôme Glisse \u003cjglisse@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Souptick Joarder \u003cjrdr.linux@gmail.com\u003e\nCc: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Wei Yang \u003crichard.weiyang@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85c77f79139062901727cc3bd87a65212c8c0a32",
      "tree": "4c8431fb94fe6b48094856a0a7229573e7f38454",
      "parents": [
        "afda57bc13410459fc957e93341ade7bebca36e2"
      ],
      "author": {
        "name": "Pavel Tatashin",
        "email": "pasha.tatashin@oracle.com",
        "time": "Fri Aug 17 15:49:33 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/sparse: add new sparse_init_nid() and sparse_init()\n\nsparse_init() requires to temporary allocate two large buffers: usemap_map\nand map_map.  Baoquan He has identified that these buffers are so large\nthat Linux is not bootable on small memory machines, such as a kdump boot.\nThe buffers are especially large when CONFIG_X86_5LEVEL is set, as they\nare scaled to the maximum physical memory size.\n\nBaoquan provided a fix, which reduces these sizes of these buffers, but it\nis much better to get rid of them entirely.\n\nAdd a new way to initialize sparse memory: sparse_init_nid(), which only\noperates within one memory node, and thus allocates memory either in large\ncontiguous block or allocates section by section.  This eliminates the\nneed for use of temporary buffers.\n\nFor simplified bisecting and review temporarly call sparse_init()\nnew_sparse_init(), the new interface is going to be enabled as well as old\ncode removed in the next patch.\n\nLink: http://lkml.kernel.org/r/20180712203730.8703-5-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nTested-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nTested-by: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\t[powerpc]\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Abdul Haleem \u003cabdhalee@linux.vnet.ibm.com\u003e\nCc: Baoquan He \u003cbhe@redhat.com\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jérôme Glisse \u003cjglisse@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Souptick Joarder \u003cjrdr.linux@gmail.com\u003e\nCc: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Wei Yang \u003crichard.weiyang@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afda57bc13410459fc957e93341ade7bebca36e2",
      "tree": "c74fe86943c151a0d9430189404d8a9493c0410a",
      "parents": [
        "e131c06b14b8601e2b1dbc7ec9cc6418c293a067"
      ],
      "author": {
        "name": "Pavel Tatashin",
        "email": "pasha.tatashin@oracle.com",
        "time": "Fri Aug 17 15:49:30 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/sparse: move buffer init/fini to the common place\n\nNow that both variants of sparse memory use the same buffers to populate\nmemory map, we can move sparse_buffer_init()/sparse_buffer_fini() to the\ncommon place.\n\nLink: http://lkml.kernel.org/r/20180712203730.8703-4-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\t[powerpc]\nTested-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Abdul Haleem \u003cabdhalee@linux.vnet.ibm.com\u003e\nCc: Baoquan He \u003cbhe@redhat.com\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jérôme Glisse \u003cjglisse@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Souptick Joarder \u003cjrdr.linux@gmail.com\u003e\nCc: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Wei Yang \u003crichard.weiyang@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e131c06b14b8601e2b1dbc7ec9cc6418c293a067",
      "tree": "e396cccbb1fdb005f54f89b40e4c3f06e5f4aa9f",
      "parents": [
        "35fd1eb1e8212c02f6eae24335a9e5b80f9519b4"
      ],
      "author": {
        "name": "Pavel Tatashin",
        "email": "pasha.tatashin@oracle.com",
        "time": "Fri Aug 17 15:49:26 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/sparse: use the new sparse buffer functions in non-vmemmap\n\nnon-vmemmap sparse also allocated large contiguous chunk of memory, and if\nfails falls back to smaller allocations.  Use the same functions to\nallocate buffer as the vmemmap-sparse\n\nLink: http://lkml.kernel.org/r/20180712203730.8703-3-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\t[powerpc]\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nTested-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Abdul Haleem \u003cabdhalee@linux.vnet.ibm.com\u003e\nCc: Baoquan He \u003cbhe@redhat.com\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jérôme Glisse \u003cjglisse@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Souptick Joarder \u003cjrdr.linux@gmail.com\u003e\nCc: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Wei Yang \u003crichard.weiyang@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35fd1eb1e8212c02f6eae24335a9e5b80f9519b4",
      "tree": "623e76f9707e5535a74f74dce659ef6782467fe4",
      "parents": [
        "330d6e489a0ab49136561d7f792b1d81bcdbb83c"
      ],
      "author": {
        "name": "Pavel Tatashin",
        "email": "pasha.tatashin@oracle.com",
        "time": "Fri Aug 17 15:49:21 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/sparse: abstract sparse buffer allocations\n\nPatch series \"sparse_init rewrite\", v6.\n\nIn sparse_init() we allocate two large buffers to temporary hold usemap\nand memmap for the whole machine.  However, we can avoid doing that if\nwe changed sparse_init() to operated on per-node bases instead of doing\nit on the whole machine beforehand.\n\nAs shown by Baoquan\n  http://lkml.kernel.org/r/20180628062857.29658-1-bhe@redhat.com\n\nThe buffers are large enough to cause machine stop to boot on small\nmemory systems.\n\nAnother benefit of these changes is that they also obsolete\nCONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER.\n\nThis patch (of 5):\n\nWhen struct pages are allocated for sparse-vmemmap VA layout, we first try\nto allocate one large buffer, and than if that fails allocate struct pages\nfor each section as we go.\n\nThe code that allocates buffer is uses global variables and is spread\nacross several call sites.\n\nCleanup the code by introducing three functions to handle the global\nbuffer:\n\nsparse_buffer_init()\tinitialize the buffer\nsparse_buffer_fini()\tfree the remaining part of the buffer\nsparse_buffer_alloc()\talloc from the buffer, and if buffer is empty\nreturn NULL\n\nDefine these functions in sparse.c instead of sparse-vmemmap.c because\nlater we will use them for non-vmemmap sparse allocations as well.\n\n[akpm@linux-foundation.org: use PTR_ALIGN()]\n[akpm@linux-foundation.org: s/BUG_ON/WARN_ON/]\nLink: http://lkml.kernel.org/r/20180712203730.8703-2-pasha.tatashin@oracle.com\nSigned-off-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\t[powerpc]\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nTested-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Steven Sistare \u003csteven.sistare@oracle.com\u003e\nCc: Daniel Jordan \u003cdaniel.m.jordan@oracle.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jérôme Glisse \u003cjglisse@redhat.com\u003e\nCc: Souptick Joarder \u003cjrdr.linux@gmail.com\u003e\nCc: Baoquan He \u003cbhe@redhat.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Wei Yang \u003crichard.weiyang@gmail.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Abdul Haleem \u003cabdhalee@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "330d6e489a0ab49136561d7f792b1d81bcdbb83c",
      "tree": "3e051312557b545b5b4483ae2f35589bc0271c27",
      "parents": [
        "d8a759b5703519d37fa5b752f825cbfc06b57906"
      ],
      "author": {
        "name": "Cannon Matthews",
        "email": "cannonmatthews@google.com",
        "time": "Fri Aug 17 15:49:17 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/hugetlb.c: don\u0027t zero 1GiB bootmem pages\n\nWhen using 1GiB pages during early boot, use the new\nmemblock_virt_alloc_try_nid_raw() to allocate memory without zeroing it.\nZeroing out hundreds or thousands of GiB in a single core memset() call\nis very slow, and can make early boot last upwards of 20-30 minutes on\nmulti TiB machines.\n\nThe memory does not need to be zero\u0027d as the hugetlb pages are always\nzero\u0027d on page fault.\n\nTested: Booted with ~3800 1G pages, and it booted successfully in\nroughly the same amount of time as with 0, as opposed to the 25+ minutes\nit would take before.\n\nLink: http://lkml.kernel.org/r/20180711213313.92481-1-cannonmatthews@google.com\nSigned-off-by: Cannon Matthews \u003ccannonmatthews@google.com\u003e\nAcked-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andres Lagar-Cavilla \u003candreslc@google.com\u003e\nCc: Peter Feiner \u003cpfeiner@google.com\u003e\nCc: David Matlack \u003cdmatlack@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d8a759b5703519d37fa5b752f825cbfc06b57906",
      "tree": "85d134bbc80ebce9dd9dacd6e9eeee7fba5e65f4",
      "parents": [
        "a195d3f5b74f3f45a6742f9063b5e95a2522b46d"
      ],
      "author": {
        "name": "Aaron Lu",
        "email": "aaron.lu@intel.com",
        "time": "Fri Aug 17 15:49:14 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm, page_alloc: double zone\u0027s batchsize\n\nTo improve page allocator\u0027s performance for order-0 pages, each CPU has\na Per-CPU-Pageset(PCP) per zone.  Whenever an order-0 page is needed,\nPCP will be checked first before asking pages from Buddy.  When PCP is\nused up, a batch of pages will be fetched from Buddy to improve\nperformance and the size of batch can affect performance.\n\nzone\u0027s batch size gets doubled last time by commit ba56e91c9401(\"mm:\npage_alloc: increase size of per-cpu-pages\") over ten years ago.  Since\nthen, CPU has envolved a lot and CPU\u0027s cache sizes also increased.\n\nDave Hansen is concerned the current batch size doesn\u0027t fit well with\nmodern hardware and suggested me to do two things: first, use a page\nallocator intensive benchmark, e.g.  will-it-scale/page_fault1 to find\nout how performance changes with different batch sizes on various\nmachines and then choose a new default batch size; second, see how this\nnew batch size work with other workloads.\n\nIn the first test, we saw performance gains on high-core-count systems\nand little to no effect on older systems with more modest core counts.\nIn this phase\u0027s test data, two candidates: 63 and 127 are chosen.\n\nIn the second step, ebizzy, oltp, kbuild, pigz, netperf, vm-scalability\nand more will-it-scale sub-tests are tested to see how these two\ncandidates work with these workloads and decides a new default according\nto their results.\n\nMost test results are flat.  will-it-scale/page_fault2 process mode has\n10%-18% performance increase on 4-sockets Skylake and Broadwell.\nvm-scalability/lru-file-mmap-read has 17%-47% performance increase for\n4-sockets servers while for 2-sockets servers, it caused 3%-8% performance\ndrop.  Further analysis showed that, with a larger pcp-\u003ebatch and thus\nlarger pcp-\u003ehigh(the relationship of pcp-\u003ehigh\u003d6 * pcp-\u003ebatch is\nmaintained in this patch), zone lock contention shifted to LRU add side\nlock contention and that caused performance drop.  This performance drop\nmight be mitigated by others\u0027 work on optimizing LRU lock.\n\nAnother downside of increasing pcp-\u003ebatch is, when PCP is used up and need\nto fetch a batch of pages from Buddy, since batch is increased, that time\ncan be longer than before.  My understanding is, this doesn\u0027t affect\nslowpath where direct reclaim and compaction dominates.  For fastpath,\nthroughput is a win(according to will-it-scale/page_fault1) but worst\nlatency can be larger now.\n\nOverall, I think double the batch size from 31 to 63 is relatively safe\nand provide good performance boost for high-core-count systems.\n\nThe two phase\u0027s test results are listed below(all tests are done with THP\ndisabled).\n\nPhase one(will-it-scale/page_fault1) test results:\n\nSkylake-EX: increased batch size has a good effect on zone-\u003elock\ncontention, though LRU contention will rise at the same time and\nlimited the final performance increase.\n\nbatch   score     change   zone_contention   lru_contention   total_contention\n 31   15345900    +0.00%       64%                 8%           72%\n 53   17903847   +16.67%       32%                38%           70%\n 63   17992886   +17.25%       24%                45%           69%\n 73   18022825   +17.44%       10%                61%           71%\n119   18023401   +17.45%        4%                66%           70%\n127   18029012   +17.48%        3%                66%           69%\n137   18036075   +17.53%        4%                66%           70%\n165   18035964   +17.53%        2%                67%           69%\n188   18101105   +17.95%        2%                67%           69%\n223   18130951   +18.15%        2%                67%           69%\n255   18118898   +18.07%        2%                67%           69%\n267   18101559   +17.96%        2%                67%           69%\n299   18160468   +18.34%        2%                68%           70%\n320   18139845   +18.21%        2%                67%           69%\n393   18160869   +18.34%        2%                68%           70%\n424   18170999   +18.41%        2%                68%           70%\n458   18144868   +18.24%        2%                68%           70%\n467   18142366   +18.22%        2%                68%           70%\n498   18154549   +18.30%        1%                68%           69%\n511   18134525   +18.17%        1%                69%           70%\n\nBroadwell-EX: similar pattern as Skylake-EX.\n\nbatch   score     change   zone_contention   lru_contention   total_contention\n 31   16703983    +0.00%       67%                 7%           74%\n 53   18195393    +8.93%       43%                28%           71%\n 63   18288885    +9.49%       38%                33%           71%\n 73   18344329    +9.82%       35%                37%           72%\n119   18535529   +10.96%       24%                46%           70%\n127   18513596   +10.83%       23%                48%           71%\n137   18514327   +10.84%       23%                48%           71%\n165   18511840   +10.82%       22%                49%           71%\n188   18593478   +11.31%       17%                53%           70%\n223   18601667   +11.36%       17%                52%           69%\n255   18774825   +12.40%       12%                58%           70%\n267   18754781   +12.28%        9%                60%           69%\n299   18892265   +13.10%        7%                63%           70%\n320   18873812   +12.99%        8%                62%           70%\n393   18891174   +13.09%        6%                64%           70%\n424   18975108   +13.60%        6%                64%           70%\n458   18932364   +13.34%        8%                62%           70%\n467   18960891   +13.51%        5%                65%           70%\n498   18944526   +13.41%        5%                64%           69%\n511   18960839   +13.51%        5%                64%           69%\n\nSkylake-EP: although increased batch reduced zone-\u003elock contention, but\nthe effect is not as good as EX: zone-\u003elock contention is still as high as\n20% with a very high batch value instead of 1% on Skylake-EX or 5% on\nBroadwell-EX.  Also, total_contention actually decreased with a higher\nbatch but that doesn\u0027t translate to performance increase.\n\nbatch   score    change   zone_contention   lru_contention   total_contention\n 31   9554867    +0.00%       66%                 3%           69%\n 53   9855486    +3.15%       63%                 3%           66%\n 63   9980145    +4.45%       62%                 4%           66%\n 73   10092774   +5.63%       62%                 5%           67%\n119   10310061   +7.90%       45%                19%           64%\n127   10342019   +8.24%       42%                19%           61%\n137   10358182   +8.41%       42%                21%           63%\n165   10397060   +8.81%       37%                24%           61%\n188   10341808   +8.24%       34%                26%           60%\n223   10349135   +8.31%       31%                27%           58%\n255   10327189   +8.08%       28%                29%           57%\n267   10344204   +8.26%       27%                29%           56%\n299   10325043   +8.06%       25%                30%           55%\n320   10310325   +7.91%       25%                31%           56%\n393   10293274   +7.73%       21%                31%           52%\n424   10311099   +7.91%       21%                32%           53%\n458   10321375   +8.02%       21%                32%           53%\n467   10303881   +7.84%       21%                32%           53%\n498   10332462   +8.14%       20%                33%           53%\n511   10325016   +8.06%       20%                32%           52%\n\nBroadwell-EP: zone-\u003elock and lru lock had an agreement to make sure\nperformance doesn\u0027t increase and they successfully managed to keep total\ncontention at 70%.\n\nbatch   score    change   zone_contention   lru_contention   total_contention\n 31   10121178   +0.00%       19%                50%           69%\n 53   10142366   +0.21%        6%                63%           69%\n 63   10117984   -0.03%       11%                58%           69%\n 73   10123330   +0.02%        7%                63%           70%\n119   10108791   -0.12%        2%                67%           69%\n127   10166074   +0.44%        3%                66%           69%\n137   10141574   +0.20%        3%                66%           69%\n165   10154499   +0.33%        2%                68%           70%\n188   10124921   +0.04%        2%                67%           69%\n223   10137399   +0.16%        2%                67%           69%\n255   10143289   +0.22%        0%                68%           68%\n267   10123535   +0.02%        1%                68%           69%\n299   10140952   +0.20%        0%                68%           68%\n320   10163170   +0.41%        0%                68%           68%\n393   10000633   -1.19%        0%                69%           69%\n424   10087998   -0.33%        0%                69%           69%\n458   10187116   +0.65%        0%                69%           69%\n467   10146790   +0.25%        0%                69%           69%\n498   10197958   +0.76%        0%                69%           69%\n511   10152326   +0.31%        0%                69%           69%\n\nHaswell-EP: similar to Broadwell-EP.\n\nbatch   score   change   zone_contention   lru_contention   total_contention\n 31   10442205   +0.00%       14%                48%           62%\n 53   10442255   +0.00%        5%                57%           62%\n 63   10452059   +0.09%        6%                57%           63%\n 73   10482349   +0.38%        5%                59%           64%\n119   10454644   +0.12%        3%                60%           63%\n127   10431514   -0.10%        3%                59%           62%\n137   10423785   -0.18%        3%                60%           63%\n165   10481216   +0.37%        2%                61%           63%\n188   10448755   +0.06%        2%                61%           63%\n223   10467144   +0.24%        2%                61%           63%\n255   10480215   +0.36%        2%                61%           63%\n267   10484279   +0.40%        2%                61%           63%\n299   10466450   +0.23%        2%                61%           63%\n320   10452578   +0.10%        2%                61%           63%\n393   10499678   +0.55%        1%                62%           63%\n424   10481454   +0.38%        1%                62%           63%\n458   10473562   +0.30%        1%                62%           63%\n467   10484269   +0.40%        0%                62%           62%\n498   10505599   +0.61%        0%                62%           62%\n511   10483395   +0.39%        0%                62%           62%\n\nWestmere-EP: contention is pretty small so not interesting.  Note too high\na batch value could hurt performance.\n\nbatch   score   change   zone_contention   lru_contention   total_contention\n 31   4831523   +0.00%        2%                 3%            5%\n 53   4834086   +0.05%        2%                 4%            6%\n 63   4834262   +0.06%        2%                 3%            5%\n 73   4832851   +0.03%        2%                 4%            6%\n119   4830534   -0.02%        1%                 3%            4%\n127   4827461   -0.08%        1%                 4%            5%\n137   4827459   -0.08%        1%                 3%            4%\n165   4820534   -0.23%        0%                 4%            4%\n188   4817947   -0.28%        0%                 3%            3%\n223   4809671   -0.45%        0%                 3%            3%\n255   4802463   -0.60%        0%                 4%            4%\n267   4801634   -0.62%        0%                 3%            3%\n299   4798047   -0.69%        0%                 3%            3%\n320   4793084   -0.80%        0%                 3%            3%\n393   4785877   -0.94%        0%                 3%            3%\n424   4782911   -1.01%        0%                 3%            3%\n458   4779346   -1.08%        0%                 3%            3%\n467   4780306   -1.06%        0%                 3%            3%\n498   4780589   -1.05%        0%                 3%            3%\n511   4773724   -1.20%        0%                 3%            3%\n\nSkylake-Desktop: similar to Westmere-EP, nothing interesting.\n\nbatch   score   change   zone_contention   lru_contention   total_contention\n 31   3906608   +0.00%        2%                 3%            5%\n 53   3940164   +0.86%        2%                 3%            5%\n 63   3937289   +0.79%        2%                 3%            5%\n 73   3940201   +0.86%        2%                 3%            5%\n119   3933240   +0.68%        2%                 3%            5%\n127   3930514   +0.61%        2%                 4%            6%\n137   3938639   +0.82%        0%                 3%            3%\n165   3908755   +0.05%        0%                 3%            3%\n188   3905621   -0.03%        0%                 3%            3%\n223   3903015   -0.09%        0%                 4%            4%\n255   3889480   -0.44%        0%                 3%            3%\n267   3891669   -0.38%        0%                 4%            4%\n299   3898728   -0.20%        0%                 4%            4%\n320   3894547   -0.31%        0%                 4%            4%\n393   3875137   -0.81%        0%                 4%            4%\n424   3874521   -0.82%        0%                 3%            3%\n458   3880432   -0.67%        0%                 4%            4%\n467   3888715   -0.46%        0%                 3%            3%\n498   3888633   -0.46%        0%                 4%            4%\n511   3875305   -0.80%        0%                 5%            5%\n\nHaswell-Desktop: zone-\u003elock is pretty low as other desktops, though lru\ncontention is higher than other desktops.\n\nbatch   score   change   zone_contention   lru_contention   total_contention\n 31   3511158   +0.00%        2%                 5%            7%\n 53   3555445   +1.26%        2%                 6%            8%\n 63   3561082   +1.42%        2%                 6%            8%\n 73   3547218   +1.03%        2%                 6%            8%\n119   3571319   +1.71%        1%                 7%            8%\n127   3549375   +1.09%        0%                 6%            6%\n137   3560233   +1.40%        0%                 6%            6%\n165   3555176   +1.25%        2%                 6%            8%\n188   3551501   +1.15%        0%                 8%            8%\n223   3531462   +0.58%        0%                 7%            7%\n255   3570400   +1.69%        0%                 7%            7%\n267   3532235   +0.60%        1%                 8%            9%\n299   3562326   +1.46%        0%                 6%            6%\n320   3553569   +1.21%        0%                 8%            8%\n393   3539519   +0.81%        0%                 7%            7%\n424   3549271   +1.09%        0%                 8%            8%\n458   3528885   +0.50%        0%                 8%            8%\n467   3526554   +0.44%        0%                 7%            7%\n498   3525302   +0.40%        0%                 9%            9%\n511   3527556   +0.47%        0%                 8%            8%\n\nSandybridge-Desktop: the 0% contention isn\u0027t accurate but caused by\ndropped fractional part. Since multiple contention path\u0027s contentions\nare all under 1% here, with some arithmetic operations like add, the\nfinal deviation could be as large as 3%.\n\nbatch   score   change   zone_contention   lru_contention   total_contention\n 31   1744495   +0.00%        0%                 0%            0%\n 53   1755341   +0.62%        0%                 0%            0%\n 63   1758469   +0.80%        0%                 0%            0%\n 73   1759626   +0.87%        0%                 0%            0%\n119   1770417   +1.49%        0%                 0%            0%\n127   1768252   +1.36%        0%                 0%            0%\n137   1767848   +1.34%        0%                 0%            0%\n165   1765088   +1.18%        0%                 0%            0%\n188   1766918   +1.29%        0%                 0%            0%\n223   1767866   +1.34%        0%                 0%            0%\n255   1768074   +1.35%        0%                 0%            0%\n267   1763187   +1.07%        0%                 0%            0%\n299   1765620   +1.21%        0%                 0%            0%\n320   1767603   +1.32%        0%                 0%            0%\n393   1764612   +1.15%        0%                 0%            0%\n424   1758476   +0.80%        0%                 0%            0%\n458   1758593   +0.81%        0%                 0%            0%\n467   1757915   +0.77%        0%                 0%            0%\n498   1753363   +0.51%        0%                 0%            0%\n511   1755548   +0.63%        0%                 0%            0%\n\nPhase two test results:\nNote: all percent change is against base(batch\u003d31).\n\nebizzy.throughput (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    2410037±7%     2600451±2% +7.9%     2602878 +8.0%\nlkp-bdw-ex1     1493328        1489243    -0.3%     1492145 -0.1%\nlkp-skl-2sp2    1329674        1345891    +1.2%     1351056 +1.6%\nlkp-bdw-ep2      711511         711511     0.0%      710708 -0.1%\nlkp-wsm-ep2       75750          75528    -0.3%       75441 -0.4%\nlkp-skl-d01      264126         262791    -0.5%      264113 +0.0%\nlkp-hsw-d01      176601         176328    -0.2%      176368 -0.1%\nlkp-sb02          98937          98937    +0.0%       99030 +0.1%\n\nkbuild.buildtime (less is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     107.00        107.67  +0.6%        107.11  +0.1%\nlkp-bdw-ex1       97.33         97.33  +0.0%         97.42  +0.1%\nlkp-skl-2sp2     180.00        179.83  -0.1%        179.83  -0.1%\nlkp-bdw-ep2      178.17        179.17  +0.6%        177.50  -0.4%\nlkp-wsm-ep2      737.00        738.00  +0.1%        738.00  +0.1%\nlkp-skl-d01      642.00        653.00  +1.7%        653.00  +1.7%\nlkp-hsw-d01     1310.00       1316.00  +0.5%       1311.00  +0.1%\n\nnetperf/TCP_STREAM.Throughput_total_Mbps (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     948790        947144  -0.2%        948333 -0.0%\nlkp-bdw-ex1      904224        904366  +0.0%        904926 +0.1%\nlkp-skl-2sp2     239731        239607  -0.1%        239565 -0.1%\nlk-bdw-ep2       365764        365933  +0.0%        365951 +0.1%\nlkp-wsm-ep2       93736         93803  +0.1%         93808 +0.1%\nlkp-skl-d01       77314         77303  -0.0%         77375 +0.1%\nlkp-hsw-d01       58617         60387  +3.0%         60208 +2.7%\nlkp-sb02          29990         30137  +0.5%         30103 +0.4%\n\noltp.transactions (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-bdw-ex1      9073276       9100377     +0.3%    9036344     -0.4%\nlkp-skl-2sp2     8898717       8852054     -0.5%    8894459     -0.0%\nlkp-bdw-ep2     13426155      13384654     -0.3%   13333637     -0.7%\nlkp-hsw-ep2     13146314      13232784     +0.7%   13193163     +0.4%\nlkp-wsm-ep2      5035355       5019348     -0.3%    5033418     -0.0%\nlkp-skl-d01       418485       4413339     -0.1%    4419039     +0.0%\nlkp-hsw-d01      3517817±5%    3396120±3%  -3.5%    3455138±3%  -1.8%\n\npigz.throughput (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    1.513e+08     1.507e+08 -0.4%      1.511e+08 -0.2%\nlkp-bdw-ex1     2.060e+08     2.052e+08 -0.4%      2.044e+08 -0.8%\nlkp-skl-2sp2    8.836e+08     8.845e+08 +0.1%      8.836e+08 -0.0%\nlkp-bdw-ep2     8.275e+08     8.464e+08 +2.3%      8.330e+08 +0.7%\nlkp-wsm-ep2     2.224e+08     2.221e+08 -0.2%      2.218e+08 -0.3%\nlkp-skl-d01     1.177e+08     1.177e+08 -0.0%      1.176e+08 -0.1%\nlkp-hsw-d01     1.154e+08     1.154e+08 +0.1%      1.154e+08 -0.0%\nlkp-sb02        0.633e+08     0.633e+08 +0.1%      0.633e+08 +0.0%\n\nwill-it-scale.malloc1.processes (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1      620181       620484 +0.0%         620240 +0.0%\nlkp-bdw-ex1      1403610      1401201 -0.2%        1417900 +1.0%\nlkp-skl-2sp2     1288097      1284145 -0.3%        1283907 -0.3%\nlkp-bdw-ep2      1427879      1427675 -0.0%        1428266 +0.0%\nlkp-hsw-ep2      1362546      1353965 -0.6%        1354759 -0.6%\nlkp-wsm-ep2      2099657      2107576 +0.4%        2100226 +0.0%\nlkp-skl-d01      1476835      1476358 -0.0%        1474487 -0.2%\nlkp-hsw-d01      1308810      1303429 -0.4%        1301299 -0.6%\nlkp-sb02          589286       589284 -0.0%         588101 -0.2%\n\nwill-it-scale.malloc1.threads (higher is better)\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     21289         21125     -0.8%      21241     -0.2%\nlkp-bdw-ex1      28114         28089     -0.1%      28007     -0.4%\nlkp-skl-2sp2     91866         91946     +0.1%      92723     +0.9%\nlkp-bdw-ep2      37637         37501     -0.4%      37317     -0.9%\nlkp-hsw-ep2      43673         43590     -0.2%      43754     +0.2%\nlkp-wsm-ep2      28577         28298     -1.0%      28545     -0.1%\nlkp-skl-d01     175277        173343     -1.1%     173082     -1.3%\nlkp-hsw-d01     130303        129566     -0.6%     129250     -0.8%\nlkp-sb02        113742±3%     116911     +2.8%     116417±3%  +2.4%\n\nwill-it-scale.malloc2.processes (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    1.206e+09     1.206e+09 -0.0%      1.206e+09 +0.0%\nlkp-bdw-ex1     1.319e+09     1.319e+09 -0.0%      1.319e+09 +0.0%\nlkp-skl-2sp2    8.000e+08     8.021e+08 +0.3%      7.995e+08 -0.1%\nlkp-bdw-ep2     6.582e+08     6.634e+08 +0.8%      6.513e+08 -1.1%\nlkp-hsw-ep2     6.671e+08     6.669e+08 -0.0%      6.665e+08 -0.1%\nlkp-wsm-ep2     1.805e+08     1.806e+08 +0.0%      1.804e+08 -0.1%\nlkp-skl-d01     1.611e+08     1.611e+08 -0.0%      1.610e+08 -0.0%\nlkp-hsw-d01     1.333e+08     1.332e+08 -0.0%      1.332e+08 -0.0%\nlkp-sb02         82485104      82478206 -0.0%       82473546 -0.0%\n\nwill-it-scale.malloc2.threads (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    1.574e+09     1.574e+09 -0.0%      1.574e+09 -0.0%\nlkp-bdw-ex1     1.737e+09     1.737e+09 +0.0%      1.737e+09 -0.0%\nlkp-skl-2sp2    9.161e+08     9.162e+08 +0.0%      9.181e+08 +0.2%\nlkp-bdw-ep2     7.856e+08     8.015e+08 +2.0%      8.113e+08 +3.3%\nlkp-hsw-ep2     6.908e+08     6.904e+08 -0.1%      6.907e+08 -0.0%\nlkp-wsm-ep2     2.409e+08     2.409e+08 +0.0%      2.409e+08 -0.0%\nlkp-skl-d01     1.199e+08     1.199e+08 -0.0%      1.199e+08 -0.0%\nlkp-hsw-d01     1.029e+08     1.029e+08 -0.0%      1.029e+08 +0.0%\nlkp-sb02         68081213      68061423 -0.0%       68076037 -0.0%\n\nwill-it-scale.page_fault2.processes (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    14509125±4%   16472364 +13.5%       17123117 +18.0%\nlkp-bdw-ex1     14736381      16196588  +9.9%       16364011 +11.0%\nlkp-skl-2sp2     6354925       6435444  +1.3%        6436644  +1.3%\nlkp-bdw-ep2      8749584       8834422  +1.0%        8827179  +0.9%\nlkp-hsw-ep2      8762591       8845920  +1.0%        8825697  +0.7%\nlkp-wsm-ep2      3036083       3030428  -0.2%        3021741  -0.5%\nlkp-skl-d01      2307834       2304731  -0.1%        2286142  -0.9%\nlkp-hsw-d01      1806237       1800786  -0.3%        1795943  -0.6%\nlkp-sb02          842616        837844  -0.6%         833921  -1.0%\n\nwill-it-scale.page_fault2.threads\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     1623294       1615132±2% -0.5%     1656777    +2.1%\nlkp-bdw-ex1      1995714       2025948    +1.5%     2113753±3% +5.9%\nlkp-skl-2sp2     2346708       2415591    +2.9%     2416919    +3.0%\nlkp-bdw-ep2      2342564       2344882    +0.1%     2300206    -1.8%\nlkp-hsw-ep2      1820658       1831681    +0.6%     1844057    +1.3%\nlkp-wsm-ep2      1725482       1733774    +0.5%     1740517    +0.9%\nlkp-skl-d01      1832833       1823628    -0.5%     1806489    -1.4%\nlkp-hsw-d01      1427913       1427287    -0.0%     1420226    -0.5%\nlkp-sb02          750626        748615    -0.3%      746621    -0.5%\n\nwill-it-scale.page_fault3.processes (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    24382726      24400317 +0.1%       24668774 +1.2%\nlkp-bdw-ex1     35399750      35683124 +0.8%       35829492 +1.2%\nlkp-skl-2sp2    28136820      28068248 -0.2%       28147989 +0.0%\nlkp-bdw-ep2     37269077      37459490 +0.5%       37373073 +0.3%\nlkp-hsw-ep2     36224967      36114085 -0.3%       36104908 -0.3%\nlkp-wsm-ep2     16820457      16911005 +0.5%       16968596 +0.9%\nlkp-skl-d01      7721138       7725904 +0.1%        7756740 +0.5%\nlkp-hsw-d01      7611979       7650928 +0.5%        7651323 +0.5%\nlkp-sb02         3781546       3796502 +0.4%        3796827 +0.4%\n\nwill-it-scale.page_fault3.threads (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     1865820±3%   1900917±2%  +1.9%     1826245±4%  -2.1%\nlkp-bdw-ex1      3094060      3148326     +1.8%     3150036     +1.8%\nlkp-skl-2sp2     3952940      3953898     +0.0%     3989360     +0.9%\nlkp-bdw-ep2      3420373±3%   3643964     +6.5%     3644910±5%  +6.6%\nlkp-hsw-ep2      2609635±2%   2582310±3%  -1.0%     2780459     +6.5%\nlkp-wsm-ep2      4395001      4417196     +0.5%     4432499     +0.9%\nlkp-skl-d01      5363977      5400003     +0.7%     5411370     +0.9%\nlkp-hsw-d01      5274131      5311294     +0.7%     5319359     +0.9%\nlkp-sb02         2917314      2913004     -0.1%     2935286     +0.6%\n\nwill-it-scale.read1.processes (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    73762279±14%  69322519±10% -6.0%    69349855±13%  -6.0% (result unstable)\nlkp-bdw-ex1     1.701e+08     1.704e+08    +0.1%    1.705e+08     +0.2%\nlkp-skl-2sp2    63111570      63113953     +0.0%    63836573      +1.1%\nlkp-bdw-ep2     79247409      79424610     +0.2%    78012656      -1.6%\nlkp-hsw-ep2     67677026      68308800     +0.9%    67539106      -0.2%\nlkp-wsm-ep2     13339630      13939817     +4.5%    13766865      +3.2%\nlkp-skl-d01     10969487      10972650     +0.0%    no data\nlkp-hsw-d01     9857342±2%    10080592±2%  +2.3%    10131560      +2.8%\nlkp-sb02        5189076        5197473     +0.2%    5163253       -0.5%\n\nwill-it-scale.read1.threads (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    62468045±12%  73666726±7% +17.9%    79553123±12% +27.4% (result unstable)\nlkp-bdw-ex1     1.62e+08      1.624e+08    +0.3%    1.614e+08     -0.3%\nlkp-skl-2sp2    58319780      59181032     +1.5%    59821353      +2.6%\nlkp-bdw-ep2     74057992      75698171     +2.2%    74990869      +1.3%\nlkp-hsw-ep2     63672959      63639652     -0.1%    64387051      +1.1%\nlkp-wsm-ep2     13489943      13526058     +0.3%    13259032      -1.7%\nlkp-skl-d01     10297906      10338796     +0.4%    10407328      +1.1%\nlkp-hsw-d01      9636721       9667376     +0.3%     9341147      -3.1%\nlkp-sb02         4801938       4804496     +0.1%     4802290      +0.0%\n\nwill-it-scale.write1.processes (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    1.111e+08     1.104e+08±2%  -0.7%   1.122e+08±2%  +1.0%\nlkp-bdw-ex1     1.392e+08     1.399e+08     +0.5%   1.397e+08     +0.4%\nlkp-skl-2sp2     59369233      58994841     -0.6%    58715168     -1.1%\nlkp-bdw-ep2      61820979      CPU throttle          63593123     +2.9%\nlkp-hsw-ep2      57897587      57435605     -0.8%    56347450     -2.7%\nlkp-wsm-ep2       7814203       7918017±2%  +1.3%     7669068     -1.9%\nlkp-skl-d01       8886557       8971422     +1.0%     8818366     -0.8%\nlkp-hsw-d01       9171001±5%    9189915     +0.2%     9483909     +3.4%\nlkp-sb02          4475406       4475294     -0.0%     4501756     +0.6%\n\nwill-it-scale.write1.threads (higer is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    1.058e+08     1.055e+08±2%  -0.2%   1.065e+08  +0.7%\nlkp-bdw-ex1     1.316e+08     1.300e+08     -1.2%   1.308e+08  -0.6%\nlkp-skl-2sp2     54492421      56086678     +2.9%    55975657  +2.7%\nlkp-bdw-ep2      59360449      59003957     -0.6%    58101262  -2.1%\nlkp-hsw-ep2      53346346±2%   52530876     -1.5%    52902487  -0.8%\nlkp-wsm-ep2       7774006       7800092±2%  +0.3%     7558833  -2.8%\nlkp-skl-d01       8346174       8235695     -1.3%     no data\nlkp-hsw-d01       8636244       8655731     +0.2%     8658868  +0.3%\nlkp-sb02          4181820       4204107     +0.5%     4182992  +0.0%\n\nvm-scalability.anon-r-rand.throughput (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    11933873±3%   12356544±2%  +3.5%   12188624     +2.1%\nlkp-bdw-ex1      7114424±2%    7330949±2%  +3.0%    7392419     +3.9%\nlkp-skl-2sp2     6773277±5%    6492332±8%  -4.1%    6543962     -3.4%\nlkp-bdw-ep2      7133846±4%    7233508     +1.4%    7013518±3%  -1.7%\nlkp-hsw-ep2      4576626       4527098     -1.1%    4551679     -0.5%\nlkp-wsm-ep2      2583599       2592492     +0.3%    2588039     +0.2%\nlkp-hsw-d01       998199±2%    1028311     +3.0%    1006460±2%  +0.8%\nlkp-sb02          570572        567854     -0.5%     568449     -0.4%\n\nvm-scalability.anon-r-rand-mt.throughput (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     1789419       1787830     -0.1%    1788208     -0.1%\nlkp-bdw-ex1      3492595±2%    3554966±2%  +1.8%    3558835±3%  +1.9%\nlkp-skl-2sp2     3856238±2%    3975403±4%  +3.1%    3994600     +3.6%\nlkp-bdw-ep2      3726963±11%   3809292±6%  +2.2%    3871924±4%  +3.9%\nlkp-hsw-ep2      2131760±3%    2033578±4%  -4.6%    2130727±6%  -0.0%\nlkp-wsm-ep2      2369731       2368384     -0.1%    2370252     +0.0%\nlkp-skl-d01      1207128       1206220     -0.1%    1205801     -0.1%\nlkp-hsw-d01       964317        992329±2%  +2.9%     992099±2%  +2.9%\nlkp-sb02          567137        567346     +0.0%     566144     -0.2%\n\nvm-scalability.lru-file-mmap-read.throughput (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1    19560469±6%   23018999     +17.7%   23418800     +19.7%\nlkp-bdw-ex1     17769135±14%  26141676±3%  +47.1%   26284723±5%  +47.9%\nlkp-skl-2sp2    14056512      13578884      -3.4%   13146214      -6.5%\nlkp-bdw-ep2     15336542      14737654      -3.9%   14088159      -8.1%\nlkp-hsw-ep2     16275498      15756296      -3.2%   15018090      -7.7%\nlkp-wsm-ep2     11272160      11237231      -0.3%   11310047      +0.3%\nlkp-skl-d01      7322119       7324569      +0.0%    7184148      -1.9%\nlkp-hsw-d01      6449234       6404542      -0.7%    6356141      -1.4%\nlkp-sb02         3517943       3520668      +0.1%    3527309      +0.3%\n\nvm-scalability.lru-file-mmap-read-rand.throughput (higher is better)\n\nmachine         batch\u003d31      batch\u003d63             batch\u003d127\nlkp-skl-4sp1     1689052       1697553  +0.5%       1698726  +0.6%\nlkp-bdw-ex1      1675246       1699764  +1.5%       1712226  +2.2%\nlkp-skl-2sp2     1800533       1799749  -0.0%       1800581  +0.0%\nlkp-bdw-ep2      1807422       1807758  +0.0%       1804932  -0.1%\nlkp-hsw-ep2      1809807       1808781  -0.1%       1807811  -0.1%\nlkp-wsm-ep2      1800198       1802434  +0.1%       1801236  +0.1%\nlkp-skl-d01       696689        695537  -0.2%        694106  -0.4%\nlkp-hsw-d01       698364        698666  +0.0%        696686  -0.2%\nlkp-sb02          258939        258787  -0.1%        258199  -0.3%\n\nLink: http://lkml.kernel.org/r/20180711055855.29072-1-aaron.lu@intel.com\nSigned-off-by: Aaron Lu \u003caaron.lu@intel.com\u003e\nSuggested-by: Dave Hansen \u003cdave.hansen@intel.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nAcked-by: Jesper Dangaard Brouer \u003cbrouer@redhat.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Kemi Wang \u003ckemi.wang@intel.com\u003e\nCc: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Jesper Dangaard Brouer \u003cbrouer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a195d3f5b74f3f45a6742f9063b5e95a2522b46d",
      "tree": "3de24cc97571ff50527318393f6d033c2a7de766",
      "parents": [
        "40d18ebffb3974272a920c41f2d74431152cae98"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Aug 17 15:49:10 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/oom_kill.c: document oom_lock\n\nAdd comments describing oom_lock\u0027s scope.\n\nRequested-by: David Rientjes \u003crientjes@google.com\u003e\nLink: http://lkml.kernel.org/r/20180711120121.25635-1-mhocko@kernel.org\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "40d18ebffb3974272a920c41f2d74431152cae98",
      "tree": "b6cdb93346179235c89855013827c33d7569cdf5",
      "parents": [
        "9bfe5ded054b8e28a94c78580f233d6879a00146"
      ],
      "author": {
        "name": "Mike Kravetz",
        "email": "mike.kravetz@oracle.com",
        "time": "Fri Aug 17 15:49:07 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/hugetlb: remove gigantic page support for HIGHMEM\n\nThis reverts ee8f248d266e (\"hugetlb: add phys addr to struct\nhuge_bootmem_page\").\n\nAt one time powerpc used this field and supporting code.  However that\nwas removed with commit 79cc38ded1e1 (\"powerpc/mm/hugetlb: Add support\nfor reserving gigantic huge pages via kernel command line\").\n\nThere are no users of this field and supporting code, so remove it.\n\nLink: http://lkml.kernel.org/r/20180711195913.1294-1-mike.kravetz@oracle.com\nSigned-off-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: \"Aneesh Kumar K . V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Michael Ellerman \u003cmpe@ellerman.id.au\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Cannon Matthews \u003ccannonmatthews@google.com\u003e\nCc: Becky Bruce \u003cbeckyb@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bfe5ded054b8e28a94c78580f233d6879a00146",
      "tree": "0ad9d7261ab77ac01995e16abc1564c1d14bc872",
      "parents": [
        "d834c5ab83febf9624ad3b16c3c348aa1e02014c"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Aug 17 15:49:04 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm, oom: remove sleep from under oom_lock\n\nTetsuo has pointed out that since 27ae357fa82b (\"mm, oom: fix concurrent\nmunlock and oom reaper unmap, v3\") we have a strong synchronization\nbetween the oom_killer and victim\u0027s exiting because both have to take\nthe oom_lock.  Therefore the original heuristic to sleep for a short\ntime in out_of_memory doesn\u0027t serve the original purpose.\n\nMoreover Tetsuo has noticed that the short sleep can be more harmful\nthan actually useful.  Hammering the system with many processes can lead\nto a starvation when the task holding the oom_lock can block for a long\ntime (minutes) and block any further progress because the oom_reaper\ndepends on the oom_lock as well.\n\nDrop the short sleep from out_of_memory when we hold the lock.  Keep the\nsleep when the trylock fails to throttle the concurrent OOM paths a bit.\nThis should be solved in a more reasonable way (e.g.  sleep proportional\nto the time spent in the active reclaiming etc.) but this is much more\ncomplex thing to achieve.  This is a quick fixup to remove a stale code.\n\nLink: http://lkml.kernel.org/r/20180709074706.30635-1-mhocko@kernel.org\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReported-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d834c5ab83febf9624ad3b16c3c348aa1e02014c",
      "tree": "9482d8c63427faf708dde2e4c7eafc81183a5cec",
      "parents": [
        "6518202970c1052148daaef9a8096711775e43a2"
      ],
      "author": {
        "name": "Marek Szyprowski",
        "email": "m.szyprowski@samsung.com",
        "time": "Fri Aug 17 15:49:00 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "kernel/dma: remove unsupported gfp_mask parameter from dma_alloc_from_contiguous()\n\nThe CMA memory allocator doesn\u0027t support standard gfp flags for memory\nallocation, so there is no point having it as a parameter for\ndma_alloc_from_contiguous() function.  Replace it by a boolean no_warn\nargument, which covers all the underlaying cma_alloc() function\nsupports.\n\nThis will help to avoid giving false feeling that this function supports\nstandard gfp flags and callers can pass __GFP_ZERO to get zeroed buffer,\nwhat has already been an issue: see commit dd65a941f6ba (\"arm64:\ndma-mapping: clear buffers allocated with FORCE_CONTIGUOUS flag\").\n\nLink: http://lkml.kernel.org/r/20180709122020eucas1p21a71b092975cb4a3b9954ffc63f699d1~-sqUFoa-h2939329393eucas1p2Y@eucas1p2.samsung.com\nSigned-off-by: Marek Szyprowski \u003cm.szyprowski@samsung.com\u003e\nAcked-by: Michał Nazarewicz \u003cmina86@mina86.com\u003e\nAcked-by: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Laura Abbott \u003clabbott@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6518202970c1052148daaef9a8096711775e43a2",
      "tree": "31719115058e9c681cf648b2fbc849c285ff356a",
      "parents": [
        "50c150f26261e723523f077a67378736fa7511a4"
      ],
      "author": {
        "name": "Marek Szyprowski",
        "email": "m.szyprowski@samsung.com",
        "time": "Fri Aug 17 15:48:57 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:32 2018 -0700"
      },
      "message": "mm/cma: remove unsupported gfp_mask parameter from cma_alloc()\n\ncma_alloc() doesn\u0027t really support gfp flags other than __GFP_NOWARN, so\nconvert gfp_mask parameter to boolean no_warn parameter.\n\nThis will help to avoid giving false feeling that this function supports\nstandard gfp flags and callers can pass __GFP_ZERO to get zeroed buffer,\nwhat has already been an issue: see commit dd65a941f6ba (\"arm64:\ndma-mapping: clear buffers allocated with FORCE_CONTIGUOUS flag\").\n\nLink: http://lkml.kernel.org/r/20180709122019eucas1p2340da484acfcc932537e6014f4fd2c29~-sqTPJKij2939229392eucas1p2j@eucas1p2.samsung.com\nSigned-off-by: Marek Szyprowski \u003cm.szyprowski@samsung.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nAcked-by: Michał Nazarewicz \u003cmina86@mina86.com\u003e\nAcked-by: Laura Abbott \u003clabbott@redhat.com\u003e\nAcked-by: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Joonsoo Kim \u003cjs1304@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50c150f26261e723523f077a67378736fa7511a4",
      "tree": "77fc7d377b42a0ef136953fe1b956a3d4fec5f9b",
      "parents": [
        "c98aff649349d9147915a19d378c9c3c1bd85de0"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@surriel.com",
        "time": "Fri Aug 17 15:48:53 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "Revert \"mm: always flush VMA ranges affected by zap_page_range\"\n\nThere was a bug in Linux that could cause madvise (and mprotect?) system\ncalls to return to userspace without the TLB having been flushed for all\nthe pages involved.\n\nThis could happen when multiple threads of a process made simultaneous\nmadvise and/or mprotect calls.\n\nThis was noticed in the summer of 2017, at which time two solutions\nwere created:\n\n  56236a59556c (\"mm: refactor TLB gathering API\")\n  99baac21e458 (\"mm: fix MADV_[FREE|DONTNEED] TLB flush miss problem\")\nand\n  4647706ebeee (\"mm: always flush VMA ranges affected by zap_page_range\")\n\nWe need only one of these solutions, and the former appears to be a\nlittle more efficient than the latter, so revert that one.\n\nThis reverts 4647706ebeee6e50 (\"mm: always flush VMA ranges affected by\nzap_page_range\")\n\nLink: http://lkml.kernel.org/r/20180706131019.51e3a5f0@imladris.surriel.com\nSigned-off-by: Rik van Riel \u003criel@surriel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Andy Lutomirski \u003cluto@kernel.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Nicholas Piggin \u003cnpiggin@gmail.com\u003e\nCc: Nadav Amit \u003cnadav.amit@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c98aff649349d9147915a19d378c9c3c1bd85de0",
      "tree": "5af2720e65d8360b66d6b736b3f89a5a58f83589",
      "parents": [
        "9258631b33374f20d856032c3542b76ad7f5a312"
      ],
      "author": {
        "name": "Baoquan He",
        "email": "bhe@redhat.com",
        "time": "Fri Aug 17 15:48:49 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/sparse: optimize memmap allocation during sparse_init()\n\nIn sparse_init(), two temporary pointer arrays, usemap_map and map_map\nare allocated with the size of NR_MEM_SECTIONS.  They are used to store\neach memory section\u0027s usemap and mem map if marked as present.  With the\nhelp of these two arrays, continuous memory chunk is allocated for\nusemap and memmap for memory sections on one node.  This avoids too many\nmemory fragmentations.  Like below diagram, \u00271\u0027 indicates the present\nmemory section, \u00270\u0027 means absent one.  The number \u0027n\u0027 could be much\nsmaller than NR_MEM_SECTIONS on most of systems.\n\n  |1|1|1|1|0|0|0|0|1|1|0|0|...|1|0||1|0|...|1||0|1|...|0|\n  -------------------------------------------------------\n   0 1 2 3         4 5         i   i+1     n-1   n\n\nIf we fail to populate the page tables to map one section\u0027s memmap, its\n-\u003esection_mem_map will be cleared finally to indicate that it\u0027s not\npresent.  After use, these two arrays will be released at the end of\nsparse_init().\n\nIn 4-level paging mode, each array costs 4M which can be ignorable.\nWhile in 5-level paging, they costs 256M each, 512M altogether.  Kdump\nkernel Usually only reserves very few memory, e.g 256M.  So, even thouth\nthey are temporarily allocated, still not acceptable.\n\nIn fact, there\u0027s no need to allocate them with the size of\nNR_MEM_SECTIONS.  Since the -\u003esection_mem_map clearing has been deferred\nto the last, the number of present memory sections are kept the same\nduring sparse_init() until we finally clear out the memory section\u0027s\n-\u003esection_mem_map if its usemap or memmap is not correctly handled.\nThus in the middle whenever for_each_present_section_nr() loop is taken,\nthe i-th present memory section is always the same one.\n\nHere only allocate usemap_map and map_map with the size of\n\u0027nr_present_sections\u0027.  For the i-th present memory section, install its\nusemap and memmap to usemap_map[i] and mam_map[i] during allocation.\nThen in the last for_each_present_section_nr() loop which clears the\nfailed memory section\u0027s -\u003esection_mem_map, fetch usemap and memmap from\nusemap_map[] and map_map[] array and set them into mem_section[]\naccordingly.\n\n[akpm@linux-foundation.org: coding-style fixes]\nLink: http://lkml.kernel.org/r/20180628062857.29658-5-bhe@redhat.com\nSigned-off-by: Baoquan He \u003cbhe@redhat.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Dave Hansen \u003cdave.hansen@intel.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Oscar Salvador \u003cosalvador@techadventures.net\u003e\nCc: Pankaj Gupta \u003cpagupta@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9258631b33374f20d856032c3542b76ad7f5a312",
      "tree": "00e7273c9049559b1e266af60f745995eeaa594e",
      "parents": [
        "07a34a8c36521c37119259d937d1389c3f5f6db9"
      ],
      "author": {
        "name": "Baoquan He",
        "email": "bhe@redhat.com",
        "time": "Fri Aug 17 15:48:45 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/sparse.c: add a new parameter \u0027data_unit_size\u0027 for alloc_usemap_and_memmap\n\nIt\u0027s used to pass the size of map data unit into\nalloc_usemap_and_memmap, and is preparation for next patch.\n\nLink: http://lkml.kernel.org/r/20180228032657.32385-4-bhe@redhat.com\nSigned-off-by: Baoquan He \u003cbhe@redhat.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Pankaj Gupta \u003cpagupta@redhat.com\u003e\nCc: Dave Hansen \u003cdave.hansen@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": "07a34a8c36521c37119259d937d1389c3f5f6db9",
      "tree": "c1378da8a9aef210acfa79f54d8c3258960f69bf",
      "parents": [
        "f2fc10e0b3fe7d1aecbd2cab6bf0007b6771e16d"
      ],
      "author": {
        "name": "Baoquan He",
        "email": "bhe@redhat.com",
        "time": "Fri Aug 17 15:48:42 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/sparsemem.c: defer the ms-\u003esection_mem_map clearing\n\nIn sparse_init(), if CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER\u003dy, system\nwill allocate one continuous memory chunk for mem maps on one node and\npopulate the relevant page tables to map memory section one by one.  If\nfail to populate for a certain mem section, print warning and its\n-\u003esection_mem_map will be cleared to cancel the marking of being\npresent.  Like this, the number of mem sections marked as present could\nbecome less during sparse_init() execution.\n\nHere just defer the ms-\u003esection_mem_map clearing if failed to populate\nits page tables until the last for_each_present_section_nr() loop.  This\nis in preparation for later optimizing the mem map allocation.\n\n[akpm@linux-foundation.org: remove now-unused local `ms\u0027, per Oscar]\nLink: http://lkml.kernel.org/r/20180228032657.32385-3-bhe@redhat.com\nSigned-off-by: Baoquan He \u003cbhe@redhat.com\u003e\nAcked-by: Dave Hansen \u003cdave.hansen@intel.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Pankaj Gupta \u003cpagupta@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2fc10e0b3fe7d1aecbd2cab6bf0007b6771e16d",
      "tree": "54ba9725c59a875521f0982e7bf3579547f8a007",
      "parents": [
        "7e010df53c80197b23119e7d7b95892aa13629df"
      ],
      "author": {
        "name": "Baoquan He",
        "email": "bhe@redhat.com",
        "time": "Fri Aug 17 15:48:38 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/sparse.c: add a static variable nr_present_sections\n\nPatch series \"mm/sparse: Optimize memmap allocation during\nsparse_init()\", v6.\n\nIn sparse_init(), two temporary pointer arrays, usemap_map and map_map\nare allocated with the size of NR_MEM_SECTIONS.  They are used to store\neach memory section\u0027s usemap and mem map if marked as present.  In\n5-level paging mode, this will cost 512M memory though they will be\nreleased at the end of sparse_init().  System with few memory, like\nkdump kernel which usually only has about 256M, will fail to boot\nbecause of allocation failure if CONFIG_X86_5LEVEL\u003dy.\n\nIn this patchset, optimize the memmap allocation code to only use\nusemap_map and map_map with the size of nr_present_sections.  This makes\nkdump kernel boot up with normal crashkernel\u003d\u0027\u0027 setting when\nCONFIG_X86_5LEVEL\u003dy.\n\nThis patch (of 5):\n\nnr_present_sections is used to record how many memory sections are\nmarked as present during system boot up, and will be used in the later\npatch.\n\nLink: http://lkml.kernel.org/r/20180228032657.32385-2-bhe@redhat.com\nSigned-off-by: Baoquan He \u003cbhe@redhat.com\u003e\nAcked-by: Dave Hansen \u003cdave.hansen@intel.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Pankaj Gupta \u003cpagupta@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e010df53c80197b23119e7d7b95892aa13629df",
      "tree": "f3ccbb92a84546afac2dbec2a5781765ee56444c",
      "parents": [
        "ac7fb3ad2717c56cee70456ffe9d808230db528e"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:34 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm: use special value SHRINKER_REGISTERING instead of list_empty() check\n\nThe patch introduces a special value SHRINKER_REGISTERING to use instead\nof list_empty() to differ a registering shrinker from unregistered\nshrinker.  Why we need that at all?\n\nShrinker registration is split in two parts.  The first one is\nprealloc_shrinker(), which allocates shrinker memory and reserves ID in\nshrinker_idr.  This function can fail.  The second is\nregister_shrinker_prepared(), and it finalizes the registration.  This\nfunction actually makes shrinker available to be used from\nshrink_slab(), and it can\u0027t fail.\n\nOne shrinker may be based on more then one LRU lists.  So, we never\nclear the bit in memcg shrinker maps, when (one of) corresponding LRU\nlist becomes empty, since other LRU lists may be not empty.  See\nsuperblock shrinker for example: it is based on two LRU lists:\ns_inode_lru and s_dentry_lru.  We do not want to clear shrinker bit,\nwhen there are no inodes in s_inode_lru, as s_dentry_lru may contain\ndentries.\n\nInstead of that, we use special algorithm to detect shrinkers having no\nelements at all its LRU lists, and this is made in shrink_slab_memcg().\nSee the comment in this function for the details.\n\nAlso, in shrink_slab_memcg() we clear shrinker bit in the map, when we\nmeet unregistered shrinker (bit is set, while there is no a shrinker in\nIDR).  Otherwise, we would have done that at the moment of shrinker\nunregistration for all memcgs (and this looks worse, since iteration\nover all memcg may take much time).  Also this would have imposed\nrestrictions on shrinker unregistration order for its users: they would\nhave had to guarantee, there are no new elements after\nunregister_shrinker() (otherwise, a new added element would have set a\nbit).\n\nSo, if we meet a set bit in map and no shrinker in IDR when we\u0027re\niterating over the map in shrink_slab_memcg(), this means the\ncorresponding shrinker is unregistered, and we must clear the bit.\n\nAnother case is shrinker registration.  We want two things there:\n\n1) do_shrink_slab() can be called only for completely registered\n   shrinkers;\n\n2) shrinker internal lists may be populated in any order with\n   register_shrinker_prepared() (let\u0027s talk on the example with sb).  Both\n   of:\n\n  a)list_lru_add(\u0026inode-\u003ei_sb-\u003es_inode_lru, \u0026inode-\u003ei_lru); [cpu0]\n    memcg_set_shrinker_bit();                               [cpu0]\n    ...\n    register_shrinker_prepared();                           [cpu1]\n\n  and\n\n  b)register_shrinker_prepared();                           [cpu0]\n    ...\n    list_lru_add(\u0026inode-\u003ei_sb-\u003es_inode_lru, \u0026inode-\u003ei_lru); [cpu1]\n    memcg_set_shrinker_bit();                               [cpu1]\n\n   are legitimate.  We don\u0027t want to impose restriction here and to\n   force people to use only (b) variant.  We don\u0027t want to force people to\n   care, there is no elements in LRU lists before the shrinker is\n   completely registered.  Internal users of LRU lists and shrinker code\n   are two different subsystems, and they have to be closed in themselves\n   each other.\n\nIn (a) case we have the bit set before shrinker is completely\nregistered.  We don\u0027t want do_shrink_slab() is called at this moment, so\nwe have to detect such the registering shrinkers.\n\nBefore this patch list_empty() (shrinker is not linked to the list)\ncheck was used for that.  So, in (a) there could be a bit set, but we\ndon\u0027t call do_shrink_slab() unless shrinker is linked to the list.  It\u0027s\njust an indicator, I just overloaded linking to the list.\n\nThis was not the best solution, since it\u0027s better not to touch the\nshrinker memory from shrink_slab_memcg() before it\u0027s completely\nregistered (this also will be useful in the future to make shrink_slab()\ncompletely lockless).\n\nSo, this patch introduces better way to detect registering shrinker,\nwhich allows not to dereference shrinker memory.  It\u0027s just a ~0UL\nvalue, which we insert into the IDR during ID allocation.  After\nshrinker is ready to be used, we insert actual shrinker pointer in the\nIDR, and it becomes available to shrink_slab_memcg().\n\nWe can\u0027t use NULL instead of this new value for this purpose as:\nshrink_slab_memcg() already uses NULL to detect unregistered shrinkers,\nand we don\u0027t want the function sees NULL and clears the bit, otherwise\n(a) won\u0027t work.\n\nThis is the only thing the patch makes: the better way to detect\nregistering shrinker.  Nothing else this patch makes.\n\nAlso this gives a better assembler, but it\u0027s minor side of the patch:\n\nBefore:\n  callq  \u003cidr_find\u003e\n  mov    %rax,%r15\n  test   %rax,%rax\n  je     \u003cshrink_slab_memcg+0x1d5\u003e\n  mov    0x20(%rax),%rax\n  lea    0x20(%r15),%rdx\n  cmp    %rax,%rdx\n  je     \u003cshrink_slab_memcg+0xbd\u003e\n  mov    0x8(%rsp),%edx\n  mov    %r15,%rsi\n  lea    0x10(%rsp),%rdi\n  callq  \u003cdo_shrink_slab\u003e\n\nAfter:\n  callq  \u003cidr_find\u003e\n  mov    %rax,%r15\n  lea    -0x1(%rax),%rax\n  cmp    $0xfffffffffffffffd,%rax\n  ja     \u003cshrink_slab_memcg+0x1cd\u003e\n  mov    0x8(%rsp),%edx\n  mov    %r15,%rsi\n  lea    0x10(%rsp),%rdi\n  callq  ffffffff810cefd0 \u003cdo_shrink_slab\u003e\n\n[ktkhai@virtuozzo.com: add #ifdef CONFIG_MEMCG_KMEM around idr_replace()]\n  Link: http://lkml.kernel.org/r/758b8fec-7573-47eb-b26a-7b2847ae7b8c@virtuozzo.com\nLink: http://lkml.kernel.org/r/153355467546.11522.4518015068123480218.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac7fb3ad2717c56cee70456ffe9d808230db528e",
      "tree": "fd2642220084707e8c907b859b493752d1b3775b",
      "parents": [
        "f90280d6b7963fa8925258ed66b4f567fe73dfea"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:30 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/vmscan.c: move check for SHRINKER_NUMA_AWARE to do_shrink_slab()\n\nIn case of shrink_slab_memcg() we do not zero nid, when shrinker is not\nnuma-aware.  This is not a real problem, since currently all memcg-aware\nshrinkers are numa-aware too (we have two: super_block shrinker and\nworkingset shrinker), but something may change in the future.\n\nLink: http://lkml.kernel.org/r/153320759911.18959.8842396230157677671.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f90280d6b7963fa8925258ed66b4f567fe73dfea",
      "tree": "82d475279fb4781f3a48de216a683f3e1c662caa",
      "parents": [
        "9b996468cfdba09f688f52dba4287de596194613"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:25 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/vmscan.c: clear shrinker bit if there are no objects related to memcg\n\nTo avoid further unneed calls of do_shrink_slab() for shrinkers, which\nalready do not have any charged objects in a memcg, their bits have to\nbe cleared.\n\nThis patch introduces a lockless mechanism to do that without races\nwithout parallel list lru add.  After do_shrink_slab() returns\nSHRINK_EMPTY the first time, we clear the bit and call it once again.\nThen we restore the bit, if the new return value is different.\n\nNote, that single smp_mb__after_atomic() in shrink_slab_memcg() covers\ntwo situations:\n\n1)list_lru_add()     shrink_slab_memcg\n    list_add_tail()    for_each_set_bit() \u003c--- read bit\n                         do_shrink_slab() \u003c--- missed list update (no barrier)\n    \u003cMB\u003e                 \u003cMB\u003e\n    set_bit()            do_shrink_slab() \u003c--- seen list update\n\nThis situation, when the first do_shrink_slab() sees set bit, but it\ndoesn\u0027t see list update (i.e., race with the first element queueing), is\nrare.  So we don\u0027t add \u003cMB\u003e before the first call of do_shrink_slab()\ninstead of this to do not slow down generic case.  Also, it\u0027s need the\nsecond call as seen in below in (2).\n\n2)list_lru_add()      shrink_slab_memcg()\n    list_add_tail()     ...\n    set_bit()           ...\n  ...                   for_each_set_bit()\n  do_shrink_slab()        do_shrink_slab()\n    clear_bit()           ...\n  ...                     ...\n  list_lru_add()          ...\n    list_add_tail()       clear_bit()\n    \u003cMB\u003e                  \u003cMB\u003e\n    set_bit()             do_shrink_slab()\n\nThe barriers guarantee that the second do_shrink_slab() in the right\nside task sees list update if really cleared the bit.  This case is\ndrawn in the code comment.\n\n[Results/performance of the patchset]\n\nAfter the whole patchset applied the below test shows signify increase\nof performance:\n\n  $echo 1 \u003e /sys/fs/cgroup/memory/memory.use_hierarchy\n  $mkdir /sys/fs/cgroup/memory/ct\n  $echo 4000M \u003e /sys/fs/cgroup/memory/ct/memory.kmem.limit_in_bytes\n      $for i in `seq 0 4000`; do mkdir /sys/fs/cgroup/memory/ct/$i;\n\t\t\t    echo $$ \u003e /sys/fs/cgroup/memory/ct/$i/cgroup.procs;\n\t\t\t    mkdir -p s/$i; mount -t tmpfs $i s/$i;\n\t\t\t    touch s/$i/file; done\n\nThen, 5 sequential calls of drop caches:\n\n  $time echo 3 \u003e /proc/sys/vm/drop_caches\n\n1)Before:\n  0.00user 13.78system 0:13.78elapsed 99%CPU\n  0.00user 5.59system 0:05.60elapsed 99%CPU\n  0.00user 5.48system 0:05.48elapsed 99%CPU\n  0.00user 8.35system 0:08.35elapsed 99%CPU\n  0.00user 8.34system 0:08.35elapsed 99%CPU\n\n2)After\n  0.00user 1.10system 0:01.10elapsed 99%CPU\n  0.00user 0.00system 0:00.01elapsed 64%CPU\n  0.00user 0.01system 0:00.01elapsed 82%CPU\n  0.00user 0.00system 0:00.01elapsed 64%CPU\n  0.00user 0.01system 0:00.01elapsed 82%CPU\n\nThe results show the performance increases at least in 548 times.\n\nShakeel Butt tested this patchset with fork-bomb on his configuration:\n\n \u003e I created 255 memcgs, 255 ext4 mounts and made each memcg create a\n \u003e file containing few KiBs on corresponding mount. Then in a separate\n \u003e memcg of 200 MiB limit ran a fork-bomb.\n \u003e\n \u003e I ran the \"perf record -ag -- sleep 60\" and below are the results:\n \u003e\n \u003e Without the patch series:\n \u003e Samples: 4M of event \u0027cycles\u0027, Event count (approx.): 3279403076005\n \u003e +  36.40%            fb.sh  [kernel.kallsyms]    [k] shrink_slab\n \u003e +  18.97%            fb.sh  [kernel.kallsyms]    [k] list_lru_count_one\n \u003e +   6.75%            fb.sh  [kernel.kallsyms]    [k] super_cache_count\n \u003e +   0.49%            fb.sh  [kernel.kallsyms]    [k] down_read_trylock\n \u003e +   0.44%            fb.sh  [kernel.kallsyms]    [k] mem_cgroup_iter\n \u003e +   0.27%            fb.sh  [kernel.kallsyms]    [k] up_read\n \u003e +   0.21%            fb.sh  [kernel.kallsyms]    [k] osq_lock\n \u003e +   0.13%            fb.sh  [kernel.kallsyms]    [k] shmem_unused_huge_count\n \u003e +   0.08%            fb.sh  [kernel.kallsyms]    [k] shrink_node_memcg\n \u003e +   0.08%            fb.sh  [kernel.kallsyms]    [k] shrink_node\n \u003e\n \u003e With the patch series:\n \u003e Samples: 4M of event \u0027cycles\u0027, Event count (approx.): 2756866824946\n \u003e +  47.49%            fb.sh  [kernel.kallsyms]    [k] down_read_trylock\n \u003e +  30.72%            fb.sh  [kernel.kallsyms]    [k] up_read\n \u003e +   9.51%            fb.sh  [kernel.kallsyms]    [k] mem_cgroup_iter\n \u003e +   1.69%            fb.sh  [kernel.kallsyms]    [k] shrink_node_memcg\n \u003e +   1.35%            fb.sh  [kernel.kallsyms]    [k] mem_cgroup_protected\n \u003e +   1.05%            fb.sh  [kernel.kallsyms]    [k] queued_spin_lock_slowpath\n \u003e +   0.85%            fb.sh  [kernel.kallsyms]    [k] _raw_spin_lock\n \u003e +   0.78%            fb.sh  [kernel.kallsyms]    [k] lruvec_lru_size\n \u003e +   0.57%            fb.sh  [kernel.kallsyms]    [k] shrink_node\n \u003e +   0.54%            fb.sh  [kernel.kallsyms]    [k] queue_work_on\n \u003e +   0.46%            fb.sh  [kernel.kallsyms]    [k] shrink_slab_memcg\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112561772.4097.11011071937553113003.stgit@localhost.localdomain\nLink: http://lkml.kernel.org/r/153063070859.1818.11870882950920963480.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b996468cfdba09f688f52dba4287de596194613",
      "tree": "08aec8315f3849e4f813a3c2de88ade769bca3bb",
      "parents": [
        "aeed1d325d429ac9699c4bf62d17156d60905519"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:21 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm: add SHRINK_EMPTY shrinker methods return value\n\nWe need to distinguish the situations when shrinker has very small\namount of objects (see vfs_pressure_ratio() called from\nsuper_cache_count()), and when it has no objects at all.  Currently, in\nthe both of these cases, shrinker::count_objects() returns 0.\n\nThe patch introduces new SHRINK_EMPTY return value, which will be used\nfor \"no objects at all\" case.  It\u0027s is a refactoring mostly, as\nSHRINK_EMPTY is replaced by 0 by all callers of do_shrink_slab() in this\npatch, and all the magic will happen in further.\n\nLink: http://lkml.kernel.org/r/153063069574.1818.11037751256699341813.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aeed1d325d429ac9699c4bf62d17156d60905519",
      "tree": "9e9ab4a31d4d326c6cfab4d2998cc315ffd4ba1a",
      "parents": [
        "b0dedc49a2daa0f44ddc51fbf686b2ef012fccbf"
      ],
      "author": {
        "name": "Vladimir Davydov",
        "email": "vdavydov.dev@gmail.com",
        "time": "Fri Aug 17 15:48:17 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/vmscan.c: generalize shrink_slab() calls in shrink_node()\n\nThe patch makes shrink_slab() be called for root_mem_cgroup in the same\nway as it\u0027s called for the rest of cgroups.  This simplifies the logic\nand improves the readability.\n\n[ktkhai@virtuozzo.com: wrote changelog]\nLink: http://lkml.kernel.org/r/153063068338.1818.11496084754797453962.stgit@localhost.localdomain\nSigned-off-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0dedc49a2daa0f44ddc51fbf686b2ef012fccbf",
      "tree": "52f4091c462699b0f7c4de0986c61d776e9d03ba",
      "parents": [
        "fae91d6d8be5e20c47e459dbeb3d43bd5f9486f4"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:14 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/vmscan.c: iterate only over charged shrinkers during memcg shrink_slab()\n\nUsing the preparations made in previous patches, in case of memcg\nshrink, we may avoid shrinkers, which are not set in memcg\u0027s shrinkers\nbitmap.  To do that, we separate iterations over memcg-aware and\n!memcg-aware shrinkers, and memcg-aware shrinkers are chosen via\nfor_each_set_bit() from the bitmap.  In case of big nodes, having many\nisolated environments, this gives significant performance growth.  See\nnext patches for the details.\n\nNote that the patch does not respect to empty memcg shrinkers, since we\nnever clear the bitmap bits after we set it once.  Their shrinkers will\nbe called again, with no shrinked objects as result.  This functionality\nis provided by next patches.\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112558507.4097.12713813335683345488.stgit@localhost.localdomain\nLink: http://lkml.kernel.org/r/153063066653.1818.976035462801487910.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fae91d6d8be5e20c47e459dbeb3d43bd5f9486f4",
      "tree": "7d227abafd9e6105061eab2df9ec5fdaf101c834",
      "parents": [
        "dfd2f10ccfd7e6bd2a096eaf42e76a7229776322"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:10 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/list_lru.c: set bit in memcg shrinker bitmap on first list_lru item appearance\n\nIntroduce set_shrinker_bit() function to set shrinker-related bit in\nmemcg shrinker bitmap, and set the bit after the first item is added and\nin case of reparenting destroyed memcg\u0027s items.\n\nThis will allow next patch to make shrinkers be called only, in case of\nthey have charged objects at the moment, and to improve shrink_slab()\nperformance.\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112557572.4097.17315791419810749985.stgit@localhost.localdomain\nLink: http://lkml.kernel.org/r/153063065671.1818.15914674956134687268.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfd2f10ccfd7e6bd2a096eaf42e76a7229776322",
      "tree": "07b48453dc21b1fec366f74cf36e53430583d0be",
      "parents": [
        "3b82c4dcc2f0f98f2aca3b9dc9b88721e962eec9"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:06 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/memcontrol.c: export mem_cgroup_is_root()\n\nThis will be used in next patch.\n\nLink: http://lkml.kernel.org/r/153063064347.1818.1987011484100392706.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b82c4dcc2f0f98f2aca3b9dc9b88721e962eec9",
      "tree": "8e9510af5eb9ccb31a0f7e77d0665af07be81477",
      "parents": [
        "9bec5c35bfa3d41b046594b5890f772ed737f1fd"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:48:01 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/list_lru.c: pass lru argument to memcg_drain_list_lru_node()\n\nThis is just refactoring to allow next patches to have lru pointer in\nmemcg_drain_list_lru_node().\n\nLink: http://lkml.kernel.org/r/153063063164.1818.55009531386089350.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9bec5c35bfa3d41b046594b5890f772ed737f1fd",
      "tree": "e1735c258897c8aeda52e41529b2184b20cc69f6",
      "parents": [
        "44bd4a4759d5a714767aa6be7e806ab54b7fa3a8"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:58 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/list_lru: pass dst_memcg argument to memcg_drain_list_lru_node()\n\nThis is just refactoring to allow the next patches to have dst_memcg\npointer in memcg_drain_list_lru_node().\n\nLink: http://lkml.kernel.org/r/153063062118.1818.2761273817739499749.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "44bd4a4759d5a714767aa6be7e806ab54b7fa3a8",
      "tree": "ffcec1c2e3367ad4e86e80add04ab8840f10b1ed",
      "parents": [
        "c92e8e10cafeaaedc84f23fed1bfcf9cf07399c2"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:54 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "mm/list_lru.c: add memcg argument to list_lru_from_kmem()\n\nThis is just refactoring to allow the next patches to have memcg pointer\nin list_lru_from_kmem().\n\nLink: http://lkml.kernel.org/r/153063060664.1818.9541345386733498582.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c92e8e10cafeaaedc84f23fed1bfcf9cf07399c2",
      "tree": "5c3f793dbaffe4a5abfddaf74f1c21276e09a1f4",
      "parents": [
        "2b3648a6ff83bd2a59b427d3537cc570933659b5"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:50 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "fs: propagate shrinker::id to list_lru\n\nAdd list_lru::shrinker_id field and populate it by registered shrinker\nid.\n\nThis will be used to set correct bit in memcg shrinkers map by lru code\nin next patches, after there appeared the first related to memcg element\nin list_lru.\n\nLink: http://lkml.kernel.org/r/153063059758.1818.14866596416857717800.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b3648a6ff83bd2a59b427d3537cc570933659b5",
      "tree": "63ed0938da702c559607dba89983cb9c2d13fd0a",
      "parents": [
        "39887653aab4cffb0074d0d3c4f392e61b67d22b"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:45 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:31 2018 -0700"
      },
      "message": "fs/super.c: refactor alloc_super()\n\nDo two list_lru_init_memcg() calls after prealloc_super().\ndestroy_unused_super() in fail path is OK with this.  Next patch needs\nsuch the order.\n\nLink: http://lkml.kernel.org/r/153063058712.1818.3382490999719078571.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39887653aab4cffb0074d0d3c4f392e61b67d22b",
      "tree": "81bc116a1556395a6e3cd5adbf40faefdb21bbe7",
      "parents": [
        "0a4465d340282f92719f4e3a56545a848e638d15"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:41 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/workingset.c: refactor workingset_init()\n\nUse prealloc_shrinker()/register_shrinker_prepared() instead of\nregister_shrinker().  This will be used in next patch.\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112550112.4097.16606173020912323761.stgit@localhost.localdomain\nLink: http://lkml.kernel.org/r/153063057666.1818.17625951186610808734.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a4465d340282f92719f4e3a56545a848e638d15",
      "tree": "cf12e7b70e65823552cb91a4bdf01ac694b76d43",
      "parents": [
        "b05706f1001fe662bafe198814c5999fd996dce0"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:37 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm, memcg: assign memcg-aware shrinkers bitmap to memcg\n\nImagine a big node with many cpus, memory cgroups and containers.  Let\nwe have 200 containers, every container has 10 mounts, and 10 cgroups.\nAll container tasks don\u0027t touch foreign containers mounts.  If there is\nintensive pages write, and global reclaim happens, a writing task has to\niterate over all memcgs to shrink slab, before it\u0027s able to go to\nshrink_page_list().\n\nIteration over all the memcg slabs is very expensive: the task has to\nvisit 200 * 10 \u003d 2000 shrinkers for every memcg, and since there are\n2000 memcgs, the total calls are 2000 * 2000 \u003d 4000000.\n\nSo, the shrinker makes 4 million do_shrink_slab() calls just to try to\nisolate SWAP_CLUSTER_MAX pages in one of the actively writing memcg via\nshrink_page_list().  I\u0027ve observed a node spending almost 100% in\nkernel, making useless iteration over already shrinked slab.\n\nThis patch adds bitmap of memcg-aware shrinkers to memcg.  The size of\nthe bitmap depends on bitmap_nr_ids, and during memcg life it\u0027s\nmaintained to be enough to fit bitmap_nr_ids shrinkers.  Every bit in\nthe map is related to corresponding shrinker id.\n\nNext patches will maintain set bit only for really charged memcg.  This\nwill allow shrink_slab() to increase its performance in significant way.\nSee the last patch for the numbers.\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112549031.4097.3576147070498769979.stgit@localhost.localdomain\n[ktkhai@virtuozzo.com: add comment to mem_cgroup_css_online()]\n  Link: http://lkml.kernel.org/r/521f9e5f-c436-b388-fe83-4dc870bfb489@virtuozzo.com\nLink: http://lkml.kernel.org/r/153063056619.1818.12550500883688681076.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b05706f1001fe662bafe198814c5999fd996dce0",
      "tree": "410cd6b75b91449ed8e26e9d70f04256fc00422d",
      "parents": [
        "b4c2b231c3ba155623591fb6301ed97b95e1c039"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:33 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/memcontrol.c: move up for_each_mem_cgroup{, _tree} defines\n\nNext patch requires these defines are above their current position, so\nhere they are moved to declarations.\n\nLink: http://lkml.kernel.org/r/153063055665.1818.5200425793649695598.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4c2b231c3ba155623591fb6301ed97b95e1c039",
      "tree": "531384204bd56bc90a2e1136065576f100b50672",
      "parents": [
        "84c07d11aa619c6d24c682f469b10f344f0c02aa"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:29 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm: assign id to every memcg-aware shrinker\n\nIntroduce shrinker::id number, which is used to enumerate memcg-aware\nshrinkers.  The number start from 0, and the code tries to maintain it\nas small as possible.\n\nThis will be used to represent a memcg-aware shrinkers in memcg\nshrinkers map.\n\nSince all memcg-aware shrinkers are based on list_lru, which is\nper-memcg in case of !CONFIG_MEMCG_KMEM only, the new functionality will\nbe under this config option.\n\n[ktkhai@virtuozzo.com: v9]\n  Link: http://lkml.kernel.org/r/153112546435.4097.10607140323811756557.stgit@localhost.localdomain\nLink: http://lkml.kernel.org/r/153063054586.1818.6041047871606697364.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "84c07d11aa619c6d24c682f469b10f344f0c02aa",
      "tree": "650fe3f561253d3f04004efc1d124cb2b25b84b0",
      "parents": [
        "e0295238e50f1aa16d4c902c837fd8d17861b698"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:25 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm: introduce CONFIG_MEMCG_KMEM as combination of CONFIG_MEMCG \u0026\u0026 !CONFIG_SLOB\n\nIntroduce new config option, which is used to replace repeating\nCONFIG_MEMCG \u0026\u0026 !CONFIG_SLOB pattern.  Next patches add a little more\nmemcg+kmem related code, so let\u0027s keep the defines more clearly.\n\nLink: http://lkml.kernel.org/r/153063053670.1818.15013136946600481138.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0295238e50f1aa16d4c902c837fd8d17861b698",
      "tree": "f728f80f6d51d5be0992d1c1281388758c414d6e",
      "parents": [
        "a36aab890c2166744e6299dc55ef2c38cb6616c0"
      ],
      "author": {
        "name": "Kirill Tkhai",
        "email": "ktkhai@virtuozzo.com",
        "time": "Fri Aug 17 15:47:21 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/list_lru.c: combine code under the same define\n\nPatch series \"Improve shrink_slab() scalability (old complexity was O(n^2), new is O(n))\", v8.\n\nThis patcheset solves the problem with slow shrink_slab() occuring on\nthe machines having many shrinkers and memory cgroups (i.e., with many\ncontainers).  The problem is complexity of shrink_slab() is O(n^2) and\nit grows too fast with the growth of containers numbers.\n\nLet us have 200 containers, and every container has 10 mounts and 10\ncgroups.  All container tasks are isolated, and they don\u0027t touch foreign\ncontainers mounts.\n\nIn case of global reclaim, a task has to iterate all over the memcgs and\nto call all the memcg-aware shrinkers for all of them.  This means, the\ntask has to visit 200 * 10 \u003d 2000 shrinkers for every memcg, and since\nthere are 2000 memcgs, the total calls of do_shrink_slab() are 2000 *\n2000 \u003d 4000000.\n\n4 million calls are not a number operations, which can takes 1 cpu\ncycle.  E.g., super_cache_count() accesses at least two lists, and makes\narifmetical calculations.  Even, if there are no charged objects, we do\nthese calculations, and replaces cpu caches by read memory.  I observed\nnodes spending almost 100% time in kernel, in case of intensive writing\nand global reclaim.  The writer consumes pages fast, but it\u0027s need to\nshrink_slab() before the reclaimer reached shrink pages function (and\nfrees SWAP_CLUSTER_MAX pages).  Even if there is no writing, the\niterations just waste the time, and slows reclaim down.\n\nLet\u0027s see the small test below:\n\n  $echo 1 \u003e /sys/fs/cgroup/memory/memory.use_hierarchy\n  $mkdir /sys/fs/cgroup/memory/ct\n  $echo 4000M \u003e /sys/fs/cgroup/memory/ct/memory.kmem.limit_in_bytes\n  $for i in `seq 0 4000`;\n          do mkdir /sys/fs/cgroup/memory/ct/$i;\n          echo $$ \u003e /sys/fs/cgroup/memory/ct/$i/cgroup.procs;\n          mkdir -p s/$i; mount -t tmpfs $i s/$i; touch s/$i/file;\n  done\n\nThen, let\u0027s see drop caches time (5 sequential calls):\n\n  $time echo 3 \u003e /proc/sys/vm/drop_caches\n\n  0.00user 13.78system 0:13.78elapsed 99%CPU\n  0.00user 5.59system 0:05.60elapsed 99%CPU\n  0.00user 5.48system 0:05.48elapsed 99%CPU\n  0.00user 8.35system 0:08.35elapsed 99%CPU\n  0.00user 8.34system 0:08.35elapsed 99%CPU\n\nThe last four calls don\u0027t actually shrink anything.  So, the iterations\nover slab shrinkers take 5.48 seconds.  Not so good for scalability.\n\nThe patchset solves the problem by making shrink_slab() of O(n)\ncomplexity.  There are following functional actions:\n\n1) Assign id to every registered memcg-aware shrinker.\n\n2) Maintain per-memcgroup bitmap of memcg-aware shrinkers, and set a\n   shrinker-related bit after the first element is added to lru list\n   (also, when removed child memcg elements are reparanted).\n\n3) Split memcg-aware shrinkers and !memcg-aware shrinkers, and call a\n   shrinker if its bit is set in memcg\u0027s shrinker bitmap.  (Also, there is\n   a functionality to clear the bit, after last element is shrinked).\n\nThis gives significant performance increase.  The result after patchset\nis applied:\n\n  $time echo 3 \u003e /proc/sys/vm/drop_caches\n\n  0.00user 1.10system 0:01.10elapsed 99%CPU\n  0.00user 0.00system 0:00.01elapsed 64%CPU\n  0.00user 0.01system 0:00.01elapsed 82%CPU\n  0.00user 0.00system 0:00.01elapsed 64%CPU\n  0.00user 0.01system 0:00.01elapsed 82%CPU\n\nThe results show the performance increases at least in 548 times.\n\nSo, the patchset makes shrink_slab() of less complexity and improves the\nperformance in such types of load I pointed.  This will give a profit in\ncase of !global reclaim case, since there also will be less\ndo_shrink_slab() calls.\n\nThis patch (of 17):\n\nThese two pairs of blocks of code are under the same #ifdef #else\n#endif.\n\nLink: http://lkml.kernel.org/r/153063052519.1818.9393587113056959488.stgit@localhost.localdomain\nSigned-off-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nTested-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Philippe Ombredanne \u003cpombredanne@nexb.com\u003e\nCc: Sahitya Tummala \u003cstummala@codeaurora.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Matthias Kaehlcke \u003cmka@chromium.org\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: Waiman Long \u003clongman@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nCc: Mel Gorman \u003cmgorman@techsingularity.net\u003e\nCc: Josef Bacik \u003cjbacik@fb.com\u003e\nCc: Guenter Roeck \u003clinux@roeck-us.net\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Li RongQing \u003clirongqing@baidu.com\u003e\nCc: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a36aab890c2166744e6299dc55ef2c38cb6616c0",
      "tree": "a0d9770eafbe56b8df377c6d814fa824a50568c6",
      "parents": [
        "4e40987f12de2f244d0d2ef64730aca92922c95a"
      ],
      "author": {
        "name": "Mike Rapoport",
        "email": "rppt@linux.vnet.ibm.com",
        "time": "Fri Aug 17 15:47:17 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/memblock.c: replace u64 with phys_addr_t where appropriate\n\nMost functions in memblock already use phys_addr_t to represent a\nphysical address with __memblock_free_late() being an exception.\n\nThis patch replaces u64 with phys_addr_t in __memblock_free_late() and\nswitches several format strings from %llx to %pa to avoid casting from\nphys_addr_t to u64.\n\nLink: http://lkml.kernel.org/r/1530637506-1256-1-git-send-email-rppt@linux.vnet.ibm.com\nSigned-off-by: Mike Rapoport \u003crppt@linux.vnet.ibm.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Matthew Wilcox \u003cwilly@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": "4e40987f12de2f244d0d2ef64730aca92922c95a",
      "tree": "4f4061d4e964df3edbe19d8a6b5a756425409546",
      "parents": [
        "29ef680ae7c21110af8e6416d84d8a72fc147b14"
      ],
      "author": {
        "name": "Oscar Salvador",
        "email": "osalvador@suse.de",
        "time": "Fri Aug 17 15:47:14 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/sparse.c: make sparse_init_one_section void and remove check\n\nsparse_init_one_section() is being called from two sites: sparse_init()\nand sparse_add_one_section().  The former calls it from a\nfor_each_present_section_nr() loop, and the latter marks the section as\npresent before calling it.  This means that when\nsparse_init_one_section() gets called, we already know that the section\nis present.  So there is no point to double check that in the function.\n\nThis removes the check and makes the function void.\n\n[ross.zwisler@linux.intel.com: fix error path in sparse_add_one_section]\n  Link: http://lkml.kernel.org/r/20180706190658.6873-1-ross.zwisler@linux.intel.com\n[ross.zwisler@linux.intel.com: simplification suggested by Oscar]\n  Link: http://lkml.kernel.org/r/20180706223358.742-1-ross.zwisler@linux.intel.com\nLink: http://lkml.kernel.org/r/20180702154325.12196-1-osalvador@techadventures.net\nSigned-off-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Oscar Salvador \u003cosalvador@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29ef680ae7c21110af8e6416d84d8a72fc147b14",
      "tree": "e051bc36f19520a0f2a3951f064ac5224b388168",
      "parents": [
        "d39f8fb4b7776dcb09ec3bf7a321547083078ee3"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Aug 17 15:47:11 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "memcg, oom: move out_of_memory back to the charge path\n\nCommit 3812c8c8f395 (\"mm: memcg: do not trap chargers with full\ncallstack on OOM\") has changed the ENOMEM semantic of memcg charges.\nRather than invoking the oom killer from the charging context it delays\nthe oom killer to the page fault path (pagefault_out_of_memory).  This\nin turn means that many users (e.g.  slab or g-u-p) will get ENOMEM when\nthe corresponding memcg hits the hard limit and the memcg is is OOM.\nThis is behavior is inconsistent with !memcg case where the oom killer\nis invoked from the allocation context and the allocator keeps retrying\nuntil it succeeds.\n\nThe difference in the behavior is user visible.  mmap(MAP_POPULATE)\nmight result in not fully populated ranges while the mmap return code\ndoesn\u0027t tell that to the userspace.  Random syscalls might fail with\nENOMEM etc.\n\nThe primary motivation of the different memcg oom semantic was the\ndeadlock avoidance.  Things have changed since then, though.  We have an\nasync oom teardown by the oom reaper now and so we do not have to rely\non the victim to tear down its memory anymore.  Therefore we can return\nto the original semantic as long as the memcg oom killer is not handed\nover to the users space.\n\nThere is still one thing to be careful about here though.  If the oom\nkiller is not able to make any forward progress - e.g.  because there is\nno eligible task to kill - then we have to bail out of the charge path\nto prevent from same class of deadlocks.  We have basically two options\nhere.  Either we fail the charge with ENOMEM or force the charge and\nallow overcharge.  The first option has been considered more harmful\nthan useful because rare inconsistencies in the ENOMEM behavior is hard\nto test for and error prone.  Basically the same reason why the page\nallocator doesn\u0027t fail allocations under such conditions.  The later\nmight allow runaways but those should be really unlikely unless somebody\nmisconfigures the system.  E.g.  allowing to migrate tasks away from the\nmemcg to a different unlimited memcg with move_charge_at_immigrate\ndisabled.\n\nLink: http://lkml.kernel.org/r/20180628151101.25307-1-mhocko@kernel.org\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nAcked-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Shakeel Butt \u003cshakeelb@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d39f8fb4b7776dcb09ec3bf7a321547083078ee3",
      "tree": "eafa9d3aa3dd1ef7db3bbf2b56163232d15c409f",
      "parents": [
        "0207df4fa1a869281ddbf72db6203dbf036b3e1a"
      ],
      "author": {
        "name": "Mike Rapoport",
        "email": "rppt@linux.vnet.ibm.com",
        "time": "Fri Aug 17 15:47:07 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm: make DEFERRED_STRUCT_PAGE_INIT explicitly depend on SPARSEMEM\n\nThe deferred memory initialization relies on section definitions, e.g\nPAGES_PER_SECTION, that are only available when CONFIG_SPARSEMEM\u003dy on\nmost architectures.\n\nInitially DEFERRED_STRUCT_PAGE_INIT depended on explicit\nARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT configuration option, but since\nthe commit 2e3ca40f03bb13709df4 (\"mm: relax deferred struct page\nrequirements\") this requirement was relaxed and now it is possible to\nenable DEFERRED_STRUCT_PAGE_INIT on architectures that support\nDISCONTINGMEM and NO_BOOTMEM which causes build failures.\n\nFor instance, setting SMP\u003dy and DEFERRED_STRUCT_PAGE_INIT\u003dy on arc\ncauses the following build failure:\n\n    CC      mm/page_alloc.o\n  mm/page_alloc.c: In function \u0027update_defer_init\u0027:\n  mm/page_alloc.c:321:14: error: \u0027PAGES_PER_SECTION\u0027\n  undeclared (first use in this function); did you mean \u0027USEC_PER_SEC\u0027?\n        (pfn \u0026 (PAGES_PER_SECTION - 1)) \u003d\u003d 0) {\n                ^~~~~~~~~~~~~~~~~\n                USEC_PER_SEC\n  mm/page_alloc.c:321:14: note: each undeclared identifier is reported only once for each function it appears in\n  In file included from include/linux/cache.h:5:0,\n                   from include/linux/printk.h:9,\n                   from include/linux/kernel.h:14,\n                   from include/asm-generic/bug.h:18,\n                   from arch/arc/include/asm/bug.h:32,\n                   from include/linux/bug.h:5,\n                   from include/linux/mmdebug.h:5,\n                   from include/linux/mm.h:9,\n                   from mm/page_alloc.c:18:\n  mm/page_alloc.c: In function \u0027deferred_grow_zone\u0027:\n  mm/page_alloc.c:1624:52: error: \u0027PAGES_PER_SECTION\u0027 undeclared (first use in this function); did you mean \u0027USEC_PER_SEC\u0027?\n    unsigned long nr_pages_needed \u003d ALIGN(1 \u003c\u003c order, PAGES_PER_SECTION);\n                                                      ^\n  include/uapi/linux/kernel.h:11:47: note: in definition of macro \u0027__ALIGN_KERNEL_MASK\u0027\n   #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) \u0026 ~(mask))\n                                                 ^~~~\n  include/linux/kernel.h:58:22: note: in expansion of macro \u0027__ALIGN_KERNEL\u0027\n   #define ALIGN(x, a)  __ALIGN_KERNEL((x), (a))\n                        ^~~~~~~~~~~~~~\n  mm/page_alloc.c:1624:34: note: in expansion of macro \u0027ALIGN\u0027\n    unsigned long nr_pages_needed \u003d ALIGN(1 \u003c\u003c order, PAGES_PER_SECTION);\n                                    ^~~~~\n  In file included from include/asm-generic/bug.h:18:0,\n                   from arch/arc/include/asm/bug.h:32,\n                   from include/linux/bug.h:5,\n                   from include/linux/mmdebug.h:5,\n                   from include/linux/mm.h:9,\n                   from mm/page_alloc.c:18:\n  mm/page_alloc.c: In function \u0027free_area_init_node\u0027:\n  mm/page_alloc.c:6379:50: error: \u0027PAGES_PER_SECTION\u0027 undeclared (first use in this function); did you mean \u0027USEC_PER_SEC\u0027?\n    pgdat-\u003estatic_init_pgcnt \u003d min_t(unsigned long, PAGES_PER_SECTION,\n                                                    ^\n  include/linux/kernel.h:812:22: note: in definition of macro \u0027__typecheck\u0027\n     (!!(sizeof((typeof(x) *)1 \u003d\u003d (typeof(y) *)1)))\n                        ^\n  include/linux/kernel.h:836:24: note: in expansion of macro \u0027__safe_cmp\u0027\n    __builtin_choose_expr(__safe_cmp(x, y), \\\n                          ^~~~~~~~~~\n  include/linux/kernel.h:904:27: note: in expansion of macro \u0027__careful_cmp\u0027\n   #define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), \u003c)\n                             ^~~~~~~~~~~~~\n  mm/page_alloc.c:6379:29: note: in expansion of macro \u0027min_t\u0027\n    pgdat-\u003estatic_init_pgcnt \u003d min_t(unsigned long, PAGES_PER_SECTION,\n                               ^~~~~\n  include/linux/kernel.h:836:2: error: first argument to \u0027__builtin_choose_expr\u0027 not a constant\n    __builtin_choose_expr(__safe_cmp(x, y), \\\n    ^\n  include/linux/kernel.h:904:27: note: in expansion of macro \u0027__careful_cmp\u0027\n   #define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), \u003c)\n                             ^~~~~~~~~~~~~\n  mm/page_alloc.c:6379:29: note: in expansion of macro \u0027min_t\u0027\n    pgdat-\u003estatic_init_pgcnt \u003d min_t(unsigned long, PAGES_PER_SECTION,\n                               ^~~~~\n  scripts/Makefile.build:317: recipe for target \u0027mm/page_alloc.o\u0027 failed\n\nLet\u0027s make the DEFERRED_STRUCT_PAGE_INIT explicitly depend on SPARSEMEM\nas the systems that support DISCONTIGMEM do not seem to have that huge\namounts of memory that would make DEFERRED_STRUCT_PAGE_INIT relevant.\n\nLink: http://lkml.kernel.org/r/1530279308-24988-1-git-send-email-rppt@linux.vnet.ibm.com\nSigned-off-by: Mike Rapoport \u003crppt@linux.vnet.ibm.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Randy Dunlap \u003crdunlap@infradead.org\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0207df4fa1a869281ddbf72db6203dbf036b3e1a",
      "tree": "ff843a903d9149fd06632658d4984dc724e5e7fa",
      "parents": [
        "50f8b92f21d23789bd4ada593e8ddc56cc4f79fe"
      ],
      "author": {
        "name": "Andrey Ryabinin",
        "email": "aryabinin@virtuozzo.com",
        "time": "Fri Aug 17 15:47:04 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "kernel/memremap, kasan: make ZONE_DEVICE with work with KASAN\n\nKASAN learns about hotadded memory via the memory hotplug notifier.\ndevm_memremap_pages() intentionally skips calling memory hotplug\nnotifiers.  So KASAN doesn\u0027t know anything about new memory added by\ndevm_memremap_pages().  This causes a crash when KASAN tries to access\nnon-existent shadow memory:\n\n BUG: unable to handle kernel paging request at ffffed0078000000\n RIP: 0010:check_memory_region+0x82/0x1e0\n Call Trace:\n  memcpy+0x1f/0x50\n  pmem_do_bvec+0x163/0x720\n  pmem_make_request+0x305/0xac0\n  generic_make_request+0x54f/0xcf0\n  submit_bio+0x9c/0x370\n  submit_bh_wbc+0x4c7/0x700\n  block_read_full_page+0x5ef/0x870\n  do_read_cache_page+0x2b8/0xb30\n  read_dev_sector+0xbd/0x3f0\n  read_lba.isra.0+0x277/0x670\n  efi_partition+0x41a/0x18f0\n  check_partition+0x30d/0x5e9\n  rescan_partitions+0x18c/0x840\n  __blkdev_get+0x859/0x1060\n  blkdev_get+0x23f/0x810\n  __device_add_disk+0x9c8/0xde0\n  pmem_attach_disk+0x9a8/0xf50\n  nvdimm_bus_probe+0xf3/0x3c0\n  driver_probe_device+0x493/0xbd0\n  bus_for_each_drv+0x118/0x1b0\n  __device_attach+0x1cd/0x2b0\n  bus_probe_device+0x1ac/0x260\n  device_add+0x90d/0x1380\n  nd_async_device_register+0xe/0x50\n  async_run_entry_fn+0xc3/0x5d0\n  process_one_work+0xa0a/0x1810\n  worker_thread+0x87/0xe80\n  kthread+0x2d7/0x390\n  ret_from_fork+0x3a/0x50\n\nAdd kasan_add_zero_shadow()/kasan_remove_zero_shadow() - post mm_init()\ninterface to map/unmap kasan_zero_page at requested virtual addresses.\nAnd use it to add/remove the shadow memory for hotplugged/unplugged\ndevice memory.\n\nLink: http://lkml.kernel.org/r/20180629164932.740-1-aryabinin@virtuozzo.com\nFixes: 41e94a851304 (\"add devm_memremap_pages\")\nSigned-off-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nReported-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nTested-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nCc: Alexander Potapenko \u003cglider@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50f8b92f21d23789bd4ada593e8ddc56cc4f79fe",
      "tree": "ac23602fa31f41df2466e584f6e024364f10f888",
      "parents": [
        "a718e28f538441a3b6612da9ff226973376cdf0f"
      ],
      "author": {
        "name": "Song Liu",
        "email": "songliubraving@fb.com",
        "time": "Fri Aug 17 15:47:00 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm: thp: pass correct vm_flags to hugepage_vma_check()\n\nkhugepaged_enter_vma_merge() passes a stale vma-\u003evm_flags to\nhugepage_vma_check().  The argument vm_flags contains the latest value.\nTherefore, it is necessary to pass this vm_flags into\nhugepage_vma_check().\n\nWith this bug, madvise(MADV_HUGEPAGE) for mmap files in shmem fails to\nput memory in huge pages.  Here is an example of failed madvise():\n\n   /* mount /dev/shm with huge\u003dadvise:\n    *     mount -o remount,huge\u003dadvise /dev/shm */\n   /* create file /dev/shm/huge */\n   #define HUGE_FILE \"/dev/shm/huge\"\n\n   fd \u003d open(HUGE_FILE, O_RDONLY);\n   ptr \u003d mmap(NULL, FILE_SIZE, PROT_READ, MAP_PRIVATE, fd, 0);\n   ret \u003d madvise(ptr, FILE_SIZE, MADV_HUGEPAGE);\n\nmadvise() will return 0, but this memory region is never put in huge\npage (check from /proc/meminfo: ShmemHugePages).\n\nLink: http://lkml.kernel.org/r/20180629181752.792831-1-songliubraving@fb.com\nFixes: 02b75dc8160d (\"mm: thp: register mm for khugepaged when merging vma for shmem\")\nSigned-off-by: Song Liu \u003csongliubraving@fb.com\u003e\nReviewed-by: Rik van Riel \u003criel@surriel.com\u003e\nReviewed-by: Yang Shi \u003cyang.shi@linux.alibaba.com\u003e\nCc: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a718e28f538441a3b6612da9ff226973376cdf0f",
      "tree": "b5830c2c461c94774130af6d18428e578731c82d",
      "parents": [
        "31f21da18132fc971297175077fafa3bd4184dc1"
      ],
      "author": {
        "name": "Andrey Ryabinin",
        "email": "aryabinin@virtuozzo.com",
        "time": "Fri Aug 17 15:46:57 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/fadvise.c: fix signed overflow UBSAN complaint\n\nSigned integer overflow is undefined according to the C standard.  The\noverflow in ksys_fadvise64_64() is deliberate, but since it is signed\noverflow, UBSAN complains:\n\n\tUBSAN: Undefined behaviour in mm/fadvise.c:76:10\n\tsigned integer overflow:\n\t4 + 9223372036854775805 cannot be represented in type \u0027long long int\u0027\n\nUse unsigned types to do math.  Unsigned overflow is defined so UBSAN\nwill not complain about it.  This patch doesn\u0027t change generated code.\n\n[akpm@linux-foundation.org: add comment explaining the casts]\nLink: http://lkml.kernel.org/r/20180629184453.7614-1-aryabinin@virtuozzo.com\nSigned-off-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nReported-by: \u003cicytxw@gmail.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Alexander Potapenko \u003cglider@google.com\u003e\nCc: Dmitry Vyukov \u003cdvyukov@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31f21da18132fc971297175077fafa3bd4184dc1",
      "tree": "b81e68c4fc17f16c43b2ea8466b9a71b2dc9182a",
      "parents": [
        "4d0a5402f505eafe5b0a77f2dc77bb6c2e25a714"
      ],
      "author": {
        "name": "Colin Ian King",
        "email": "colin.king@canonical.com",
        "time": "Fri Aug 17 15:46:54 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/swap_slots.c: make swap_slots_cache_mutex and swap_slots_cache_enable_mutex static\n\nThe mutexes swap_slots_cache_mutex and swap_slots_cache_enable_mutex are\nlocal to the source and do not need to be in global scope, so make them\nstatic.\n\nCleans up sparse warnings:\n  symbol \u0027swap_slots_cache_mutex\u0027 was not declared. Should it be static?\n  symbol \u0027swap_slots_cache_enable_mutex\u0027 was not declared. Should it be static?\n\nLink: http://lkml.kernel.org/r/20180624182536.4937-1-colin.king@canonical.com\nSigned-off-by: Colin Ian King \u003ccolin.king@canonical.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@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": "4d0a5402f505eafe5b0a77f2dc77bb6c2e25a714",
      "tree": "086650b11c3478731497fa43d8e257afa7abb132",
      "parents": [
        "dcfe4df3d57f08f7bf4acdd36c89763fe188cf3c"
      ],
      "author": {
        "name": "Colin Ian King",
        "email": "colin.king@canonical.com",
        "time": "Fri Aug 17 15:46:50 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/zsmalloc.c: make several functions and a struct static\n\nThe functions zs_page_isolate, zs_page_migrate, zs_page_putback,\nlock_zspage, trylock_zspage and structure zsmalloc_aops are local to\nsource and do not need to be in global scope, so make them static.\n\nCleans up sparse warnings:\n  symbol \u0027zs_page_isolate\u0027 was not declared. Should it be static?\n  symbol \u0027zs_page_migrate\u0027 was not declared. Should it be static?\n  symbol \u0027zs_page_putback\u0027 was not declared. Should it be static?\n  symbol \u0027zsmalloc_aops\u0027 was not declared. Should it be static?\n  symbol \u0027lock_zspage\u0027 was not declared. Should it be static?\n  symbol \u0027trylock_zspage\u0027 was not declared. Should it be static?\n\n[arnd@arndb.de: hide unused lock_zspage]\n  Link: http://lkml.kernel.org/r/20180706130924.3891230-1-arnd@arndb.de\nLink: http://lkml.kernel.org/r/20180624213322.13776-1-colin.king@canonical.com\nSigned-off-by: Colin Ian King \u003ccolin.king@canonical.com\u003e\nReviewed-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Minchan Kim \u003cminchan@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": "dcfe4df3d57f08f7bf4acdd36c89763fe188cf3c",
      "tree": "d0e2738e10485ac9fa16fb4d8306782536739c5a",
      "parents": [
        "f745c6f5fe75734f3b35d9d4e6ebe2a7d010ddda"
      ],
      "author": {
        "name": "Greg Thelen",
        "email": "gthelen@google.com",
        "time": "Fri Aug 17 15:46:47 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "mm/page-writeback.c: update stale account_page_redirty() comment\n\nCommit 93f78d882865 (\"writeback: move backing_dev_info-\u003ebdi_stat[] into\nbdi_writeback\") replaced BDI_DIRTIED with WB_DIRTIED in\naccount_page_redirty().  Update comment to track that change.\n\n  BDI_DIRTIED \u003d\u003e WB_DIRTIED\n  BDI_WRITTEN \u003d\u003e WB_WRITTEN\n\nLink: http://lkml.kernel.org/r/20180625171526.173483-1-gthelen@google.com\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Tejun Heo \u003ctj@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": "f745c6f5fe75734f3b35d9d4e6ebe2a7d010ddda",
      "tree": "43ca4ae252cd6d4b6b8f4493183cca79d77a6762",
      "parents": [
        "d46eb14b735b11927d4bdc2d1854c311af19de6d"
      ],
      "author": {
        "name": "Shakeel Butt",
        "email": "shakeelb@google.com",
        "time": "Fri Aug 17 15:46:44 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "fs, mm: account buffer_head to kmemcg\n\nThe buffer_head can consume a significant amount of system memory and is\ndirectly related to the amount of page cache.  In our production\nenvironment we have observed that a lot of machines are spending a\nsignificant amount of memory as buffer_head and can not be left as\nsystem memory overhead.\n\nCharging buffer_head is not as simple as adding __GFP_ACCOUNT to the\nallocation.  The buffer_heads can be allocated in a memcg different from\nthe memcg of the page for which buffer_heads are being allocated.  One\nconcrete example is memory reclaim.  The reclaim can trigger I/O of\npages of any memcg on the system.  So, the right way to charge\nbuffer_head is to extract the memcg from the page for which buffer_heads\nare being allocated and then use targeted memcg charging API.\n\n[shakeelb@google.com: use __GFP_ACCOUNT for directed memcg charging]\n  Link: http://lkml.kernel.org/r/20180702220208.213380-1-shakeelb@google.com\nLink: http://lkml.kernel.org/r/20180627191250.209150-3-shakeelb@google.com\nSigned-off-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Amir Goldstein \u003camir73il@gmail.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Alexander 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": "d46eb14b735b11927d4bdc2d1854c311af19de6d",
      "tree": "fffe3fa953dec4dde9de89cb985d767fd168c8a6",
      "parents": [
        "dc0b58643aff8b378086f25cce6789ccba68cbcb"
      ],
      "author": {
        "name": "Shakeel Butt",
        "email": "shakeelb@google.com",
        "time": "Fri Aug 17 15:46:39 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:30 2018 -0700"
      },
      "message": "fs: fsnotify: account fsnotify metadata to kmemcg\n\nPatch series \"Directed kmem charging\", v8.\n\nThe Linux kernel\u0027s memory cgroup allows limiting the memory usage of the\njobs running on the system to provide isolation between the jobs.  All\nthe kernel memory allocated in the context of the job and marked with\n__GFP_ACCOUNT will also be included in the memory usage and be limited\nby the job\u0027s limit.\n\nThe kernel memory can only be charged to the memcg of the process in\nwhose context kernel memory was allocated.  However there are cases\nwhere the allocated kernel memory should be charged to the memcg\ndifferent from the current processes\u0027s memcg.  This patch series\ncontains two such concrete use-cases i.e.  fsnotify and buffer_head.\n\nThe fsnotify event objects can consume a lot of system memory for large\nor unlimited queues if there is either no or slow listener.  The events\nare allocated in the context of the event producer.  However they should\nbe charged to the event consumer.  Similarly the buffer_head objects can\nbe allocated in a memcg different from the memcg of the page for which\nbuffer_head objects are being allocated.\n\nTo solve this issue, this patch series introduces mechanism to charge\nkernel memory to a given memcg.  In case of fsnotify events, the memcg\nof the consumer can be used for charging and for buffer_head, the memcg\nof the page can be charged.  For directed charging, the caller can use\nthe scope API memalloc_[un]use_memcg() to specify the memcg to charge\nfor all the __GFP_ACCOUNT allocations within the scope.\n\nThis patch (of 2):\n\nA lot of memory can be consumed by the events generated for the huge or\nunlimited queues if there is either no or slow listener.  This can cause\nsystem level memory pressure or OOMs.  So, it\u0027s better to account the\nfsnotify kmem caches to the memcg of the listener.\n\nHowever the listener can be in a different memcg than the memcg of the\nproducer and these allocations happen in the context of the event\nproducer.  This patch introduces remote memcg charging API which the\nproducer can use to charge the allocations to the memcg of the listener.\n\nThere are seven fsnotify kmem caches and among them allocations from\ndnotify_struct_cache, dnotify_mark_cache, fanotify_mark_cache and\ninotify_inode_mark_cachep happens in the context of syscall from the\nlistener.  So, SLAB_ACCOUNT is enough for these caches.\n\nThe objects from fsnotify_mark_connector_cachep are not accounted as\nthey are small compared to the notification mark or events and it is\nunclear whom to account connector to since it is shared by all events\nattached to the inode.\n\nThe allocations from the event caches happen in the context of the event\nproducer.  For such caches we will need to remote charge the allocations\nto the listener\u0027s memcg.  Thus we save the memcg reference in the\nfsnotify_group structure of the listener.\n\nThis patch has also moved the members of fsnotify_group to keep the size\nsame, at least for 64 bit build, even with additional member by filling\nthe holes.\n\n[shakeelb@google.com: use GFP_KERNEL_ACCOUNT rather than open-coding it]\n  Link: http://lkml.kernel.org/r/20180702215439.211597-1-shakeelb@google.com\nLink: http://lkml.kernel.org/r/20180627191250.209150-2-shakeelb@google.com\nSigned-off-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@kernel.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Amir Goldstein \u003camir73il@gmail.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Roman Gushchin \u003cguro@fb.com\u003e\nCc: Alexander 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": "dc0b58643aff8b378086f25cce6789ccba68cbcb",
      "tree": "3fbf85c994eb3c030be3cbc7c1beef0910c12a71",
      "parents": [
        "1a9b4b3d75679fbe8c3bb8fb7e957ea693b6a89c"
      ],
      "author": {
        "name": "Roman Gushchin",
        "email": "guro@fb.com",
        "time": "Fri Aug 17 15:46:36 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: introduce mem_cgroup_put() helper\n\nIntroduce the mem_cgroup_put() helper, which helps to eliminate guarding\nmemcg css release with \"#ifdef CONFIG_MEMCG\" in multiple places.\n\nLink: http://lkml.kernel.org/r/20180623000600.5818-2-guro@fb.com\nSigned-off-by: Roman Gushchin \u003cguro@fb.com\u003e\nReviewed-by: Shakeel Butt \u003cshakeelb@google.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@kernel.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a9b4b3d75679fbe8c3bb8fb7e957ea693b6a89c",
      "tree": "fc1bc338462e660d33b13b4a47c399e0e4ca4f42",
      "parents": [
        "a3266bd49c721e2e0a71f352d83713fbd60caadb"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Aug 17 15:46:32 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: provide a fallback for PAGE_KERNEL_EXEC for architectures\n\nSome architectures just don\u0027t have PAGE_KERNEL_EXEC.  The mm/nommu.c and\nmm/vmalloc.c code have been using PAGE_KERNEL as a fallback for years.\nMove this fallback to asm-generic.\n\nLink: http://lkml.kernel.org/r/20180510185507.2439-3-mcgrof@kernel.org\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\nSuggested-by: Matthew Wilcox \u003cwilly@infradead.org\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3266bd49c721e2e0a71f352d83713fbd60caadb",
      "tree": "2a1fd45483467ffd8687f60e06c9b497dc40aee0",
      "parents": [
        "3172e5e61c8a78f690c50f221fdeedce35d0b1e4"
      ],
      "author": {
        "name": "Luis R. Rodriguez",
        "email": "mcgrof@kernel.org",
        "time": "Fri Aug 17 15:46:29 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: provide a fallback for PAGE_KERNEL_RO for architectures\n\nSome architectures do not define certain PAGE_KERNEL_* flags, this is\neither because:\n\n a) The way to implement some of these flags is *not yet ported*, or\n b) The architecture *has no way* to describe them\n\nOver time we have accumulated a few PAGE_KERNEL_* fallback workarounds\nfor architectures in the kernel which do not define them using\n*relatively safe* equivalents.  Move these scattered fallback hacks into\nasm-generic.\n\nWe start off with PAGE_KERNEL_RO using PAGE_KERNEL as a fallback.  This\nhas been in place on the firmware loader for years.  Move the fallback\ninto the respective asm-generic header.\n\nLink: http://lkml.kernel.org/r/20180510185507.2439-2-mcgrof@kernel.org\nSigned-off-by: Luis R. Rodriguez \u003cmcgrof@kernel.org\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3172e5e61c8a78f690c50f221fdeedce35d0b1e4",
      "tree": "8d1696575a1269f7009cd0960181120e9811fc77",
      "parents": [
        "4fbce633910ed80b135b84160a22b219080c8082"
      ],
      "author": {
        "name": "Oscar Salvador",
        "email": "osalvador@suse.de",
        "time": "Fri Aug 17 15:46:25 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm/memory_hotplug.c: drop unnecessary checks from register_mem_sect_under_node()\n\nCallers of register_mem_sect_under_node() are always passing a valid\nmemory_block (not NULL), so we can safely drop the check for NULL.\n\nIn the same way, register_mem_sect_under_node() is only called in case\nthe node is online, so we can safely remove that check as well.\n\nLink: http://lkml.kernel.org/r/20180622111839.10071-5-osalvador@techadventures.net\nSigned-off-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Reza Arbab \u003carbab@linux.vnet.ibm.com\u003e\nTested-by: Jonathan Cameron \u003cJonathan.Cameron@huawei.com\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fbce633910ed80b135b84160a22b219080c8082",
      "tree": "719985a2f3a69277b26a6e3ba124829b7bf44eee",
      "parents": [
        "d5b6f6a3610b05e6712cb9c61a85a6dff16e91cf"
      ],
      "author": {
        "name": "Oscar Salvador",
        "email": "osalvador@suse.de",
        "time": "Fri Aug 17 15:46:22 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm/memory_hotplug.c: make register_mem_sect_under_node() a callback of walk_memory_range()\n\nlink_mem_sections() and walk_memory_range() share most of the code, so\nwe can use convert link_mem_sections() into a dummy function that calls\nwalk_memory_range() with a callback to register_mem_sect_under_node().\n\nThis patch converts register_mem_sect_under_node() in order to match a\nwalk_memory_range\u0027s callback, getting rid of the check_nid argument and\nchecking instead if the system is still boothing, since we only have to\ncheck for the nid if the system is in such state.\n\nLink: http://lkml.kernel.org/r/20180622111839.10071-4-osalvador@techadventures.net\nSigned-off-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nSuggested-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Reza Arbab \u003carbab@linux.vnet.ibm.com\u003e\nTested-by: Jonathan Cameron \u003cJonathan.Cameron@huawei.com\u003e\nReviewed-by: Pavel Tatashin \u003cpavel.tatashin@microsoft.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5b6f6a3610b05e6712cb9c61a85a6dff16e91cf",
      "tree": "d5899d3a64bc6232a7c2112fe614a97f86482446",
      "parents": [
        "b9ff036082cd1793a59b35c4432644fe44620664"
      ],
      "author": {
        "name": "Oscar Salvador",
        "email": "osalvador@suse.de",
        "time": "Fri Aug 17 15:46:18 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm/memory_hotplug.c: call register_mem_sect_under_node()\n\nWhen hotplugging memory, it is possible that two calls are being made to\nregister_mem_sect_under_node().\n\nOne comes from __add_section()-\u003ehotplug_memory_register() and the other\nfrom add_memory_resource()-\u003elink_mem_sections() if we had to register a\nnew node.\n\nIn case we had to register a new node, hotplug_memory_register() will\nonly handle/allocate the memory_block\u0027s since\nregister_mem_sect_under_node() will return right away because the node\nit is not online yet.\n\nI think it is better if we leave hotplug_memory_register() to\nhandle/allocate only memory_block\u0027s and make link_mem_sections() to call\nregister_mem_sect_under_node().\n\nSo this patch removes the call to register_mem_sect_under_node() from\nhotplug_memory_register(), and moves the call to link_mem_sections() out\nof the condition, so it will always be called.  In this way we only have\none place where the memory sections are registered.\n\nLink: http://lkml.kernel.org/r/20180622111839.10071-3-osalvador@techadventures.net\nSigned-off-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Reza Arbab \u003carbab@linux.vnet.ibm.com\u003e\nTested-by: Jonathan Cameron \u003cJonathan.Cameron@huawei.com\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9ff036082cd1793a59b35c4432644fe44620664",
      "tree": "74e2dc390ff80a6fea8c22e4667987c0e2ed36d4",
      "parents": [
        "930eaac5eed23bb52061a50f674753a319216041"
      ],
      "author": {
        "name": "Oscar Salvador",
        "email": "osalvador@suse.de",
        "time": "Fri Aug 17 15:46:15 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm/memory_hotplug.c: make add_memory_resource use __try_online_node\n\nThis is a small cleanup for the memhotplug code.  A lot more could be\ndone, but it is better to start somewhere.  I tried to unify/remove\nduplicated code.\n\nThe following is what this patchset does:\n\n1) add_memory_resource() has code to allocate a node in case it was\n   offline.  Since try_online_node has some code for that as well, I just\n   made add_memory_resource() to use that so we can remove duplicated\n   code..  This is better explained in patch 1/4.\n\n2) register_mem_sect_under_node() will be called only from\n   link_mem_sections()\n\n3) Make register_mem_sect_under_node() a callback of\n   walk_memory_range()\n\n4) Drop unnecessary checks from register_mem_sect_under_node()\n\nI have done some tests and I could not see anything broken because of\nthis patchset.\n\nadd_memory_resource() contains code to allocate a new node in case it is\nnecessary.  Since try_online_node() also has some code for this purpose,\nlet us make use of that and remove duplicate code.\n\nThis introduces __try_online_node(), which is called by\nadd_memory_resource() and try_online_node().  __try_online_node() has\ntwo new parameters, start_addr of the node, and if the node should be\nonlined and registered right away.  This is always wanted if we are\ncalling from do_cpu_up(), but not when we are calling from memhotplug\ncode.  Nothing changes from the point of view of the users of\ntry_online_node(), since try_online_node passes start_addr\u003d0 and\nonline_node\u003dtrue to __try_online_node().\n\nLink: http://lkml.kernel.org/r/20180622111839.10071-2-osalvador@techadventures.net\nSigned-off-by: Oscar Salvador \u003cosalvador@suse.de\u003e\nReviewed-by: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nTested-by: Reza Arbab \u003carbab@linux.vnet.ibm.com\u003e\nTested-by: Jonathan Cameron \u003cJonathan.Cameron@huawei.com\u003e\nCc: Pasha Tatashin \u003cPavel.Tatashin@microsoft.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vlastimil Babka \u003cvbabka@suse.cz\u003e\nCc: Pavel Tatashin \u003cpasha.tatashin@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "930eaac5eed23bb52061a50f674753a319216041",
      "tree": "87b2d5080f95003a95039d26a52601dc7072f710",
      "parents": [
        "6ca342d020e8b8315d430d3a7d7c65daadfb4d8b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Aug 17 15:46:11 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm/list_lru.c: fold __list_lru_count_one() into its caller\n\n__list_lru_count_one() has a single callsite.\n\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nCc: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ca342d020e8b8315d430d3a7d7c65daadfb4d8b",
      "tree": "c51936e10cd1aa01bbcfa8eb3995146e7cb43bed",
      "parents": [
        "ae1e16da14b2bca94272c9f23c930be48994b2bb"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:46:08 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: workingset: make shadow_lru_isolate() use locking suffix\n\nshadow_lru_isolate() disables interrupts and acquires a lock.  It could\nuse spin_lock_irq() instead.  It also uses local_irq_enable() while it\ncould use spin_unlock_irq()/xa_unlock_irq().\n\nUse proper suffix for lock/unlock in order to enable/disable interrupts\nduring release/acquire of a lock.\n\nLink: http://lkml.kernel.org/r/20180622151221.28167-3-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae1e16da14b2bca94272c9f23c930be48994b2bb",
      "tree": "7fd18d588191fc977e9f02b0eda49292280d5893",
      "parents": [
        "9ea9a68064035dee70f465f605a3e63990e33bd9"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Aug 17 15:46:05 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: workingset: remove local_irq_disable() from count_shadow_nodes()\n\nPatch series \"mm: use irq locking suffix instead local_irq_disable()\".\n\nA small series which avoids using local_irq_disable()/local_irq_enable()\nbut instead does spin_lock_irq()/spin_unlock_irq() so it is within the\ncontext of the lock which it belongs to.  Patch #1 is a cleanup where\nlocal_irq_.*() remained after the lock was removed.\n\nThis patch (of 2):\n\nIn 0c7c1bed7e13 (\"mm: make counting of list_lru_one::nr_items lockless\")\nthe\n\n\tspin_lock(\u0026nlru-\u003elock);\n\nstatement was replaced with\n\n\trcu_read_lock();\n\nin __list_lru_count_one().  The comment in count_shadow_nodes() says\nthat the local_irq_disable() is required because the lock must be\nacquired with disabled interrupts and (spin_lock()) does not do so.\nSince the lock is replaced with rcu_read_lock() the local_irq_disable()\nis no longer needed.  The code path is\n\n  list_lru_shrink_count()\n    -\u003e list_lru_count_one()\n      -\u003e __list_lru_count_one()\n        -\u003e rcu_read_lock()\n        -\u003e list_lru_from_memcg_idx()\n        -\u003e rcu_read_unlock()\n\nRemove the local_irq_disable() statement.\n\nLink: http://lkml.kernel.org/r/20180622151221.28167-2-bigeasy@linutronix.de\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReviewed-by: Kirill Tkhai \u003cktkhai@virtuozzo.com\u003e\nAcked-by: Vladimir Davydov \u003cvdavydov.dev@gmail.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ea9a68064035dee70f465f605a3e63990e33bd9",
      "tree": "bab1e0e6b994cf84e92d31162241d012ea2e08fb",
      "parents": [
        "974e6d66b6b5c6e2d6a3ccc18b2f9a0b472be5b4"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Fri Aug 17 15:46:01 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm: drop VM_BUG_ON from __get_free_pages\n\nThere is no real reason to blow up just because the caller doesn\u0027t know\nthat __get_free_pages cannot return highmem pages.  Simply fix that up\nsilently.  Even if we have some confused users such a fixup will not be\nharmful.\n\n[akpm@linux-foundation.org: mask off __GFP_HIGHMEM]\nLink: http://lkml.kernel.org/r/20180622162841.25114-1-mhocko@kernel.org\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jiankang Chen \u003cchenjiankang1@huawei.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Yisheng Xie \u003cxieyisheng1@huawei.com\u003e\nCc: Hanjun Guo \u003cguohanjun@huawei.com\u003e\nCc: Kefeng Wang \u003cwangkefeng.wang@huawei.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "974e6d66b6b5c6e2d6a3ccc18b2f9a0b472be5b4",
      "tree": "0aa559789db47a6dfff9a572b2553bbcbd272016",
      "parents": [
        "5b7a1d406062449a4d51aea1df37a73285ced1dc"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Aug 17 15:45:57 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm, hugetlbfs: pass fault address to cow handler\n\nThis is to take better advantage of the general huge page copying\noptimization.  Where, the target subpage will be copied last to avoid\nthe cache lines of target subpage to be evicted when copying other\nsubpages.  This works better if the address of the target subpage is\navailable when copying huge page.  So hugetlbfs page fault handlers are\nchanged to pass that information to hugetlb_cow().  This will benefit\nworkloads which don\u0027t access the begin of the hugetlbfs huge page after\nthe page fault under heavy cache contention.\n\nLink: http://lkml.kernel.org/r/20180524005851.4079-5-ying.huang@intel.com\nSigned-off-by: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nReviewed-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Andi Kleen \u003candi.kleen@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Shaohua Li \u003cshli@fb.com\u003e\nCc: Christopher Lameter \u003ccl@linux.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nCc: Anshuman Khandual \u003ckhandual@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b7a1d406062449a4d51aea1df37a73285ced1dc",
      "tree": "1174c43809b8b1c3303a5b053f1644b620e53e7d",
      "parents": [
        "c9f4cd71383576a916e7fca99c490fc92a289f5a"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Aug 17 15:45:53 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm, hugetlbfs: rename address to haddr in hugetlb_cow()\n\nTo take better advantage of general huge page copying optimization, the\ntarget subpage address will be passed to hugetlb_cow(), then\ncopy_user_huge_page().  So we will use both target subpage address and\nhuge page size aligned address in hugetlb_cow().  To distinguish between\nthem, \"haddr\" is used for huge page size aligned address to be\nconsistent with Transparent Huge Page naming convention.\n\nNow, only huge page size aligned address is used in hugetlb_cow(), so\nthe \"address\" is renamed to \"haddr\" in hugetlb_cow() in this patch.\nNext patch will use target subpage address in hugetlb_cow() too.\n\nThe patch is just code cleanup without any functionality changes.\n\nLink: http://lkml.kernel.org/r/20180524005851.4079-4-ying.huang@intel.com\nSigned-off-by: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nSuggested-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nSuggested-by: Michal Hocko \u003cmhocko@suse.com\u003e\nReviewed-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Andi Kleen \u003candi.kleen@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Shaohua Li \u003cshli@fb.com\u003e\nCc: Christopher Lameter \u003ccl@linux.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Punit Agrawal \u003cpunit.agrawal@arm.com\u003e\nCc: Anshuman Khandual \u003ckhandual@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9f4cd71383576a916e7fca99c490fc92a289f5a",
      "tree": "cc5394b12ba767d954e6e56d888cfe670c05126d",
      "parents": [
        "c6ddfb6c58903262d2d77042c41dba58cf775d88"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Aug 17 15:45:49 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm, huge page: copy target sub-page last when copy huge page\n\nHuge page helps to reduce TLB miss rate, but it has higher cache\nfootprint, sometimes this may cause some issue.  For example, when\ncopying huge page on x86_64 platform, the cache footprint is 4M.  But on\na Xeon E5 v3 2699 CPU, there are 18 cores, 36 threads, and only 45M LLC\n(last level cache).  That is, in average, there are 2.5M LLC for each\ncore and 1.25M LLC for each thread.\n\nIf the cache contention is heavy when copying the huge page, and we copy\nthe huge page from the begin to the end, it is possible that the begin\nof huge page is evicted from the cache after we finishing copying the\nend of the huge page.  And it is possible for the application to access\nthe begin of the huge page after copying the huge page.\n\nIn c79b57e462b5d (\"mm: hugetlb: clear target sub-page last when clearing\nhuge page\"), to keep the cache lines of the target subpage hot, the\norder to clear the subpages in the huge page in clear_huge_page() is\nchanged to clearing the subpage which is furthest from the target\nsubpage firstly, and the target subpage last.  The similar order\nchanging helps huge page copying too.  That is implemented in this\npatch.  Because we have put the order algorithm into a separate\nfunction, the implementation is quite simple.\n\nThe patch is a generic optimization which should benefit quite some\nworkloads, not for a specific use case.  To demonstrate the performance\nbenefit of the patch, we tested it with vm-scalability run on\ntransparent huge page.\n\nWith this patch, the throughput increases ~16.6% in vm-scalability\nanon-cow-seq test case with 36 processes on a 2 socket Xeon E5 v3 2699\nsystem (36 cores, 72 threads).  The test case set\n/sys/kernel/mm/transparent_hugepage/enabled to be always, mmap() a big\nanonymous memory area and populate it, then forked 36 child processes,\neach writes to the anonymous memory area from the begin to the end, so\ncause copy on write.  For each child process, other child processes\ncould be seen as other workloads which generate heavy cache pressure.\nAt the same time, the IPC (instruction per cycle) increased from 0.63 to\n0.78, and the time spent in user space is reduced ~7.2%.\n\nLink: http://lkml.kernel.org/r/20180524005851.4079-3-ying.huang@intel.com\nSigned-off-by: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nReviewed-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nCc: Andi Kleen \u003candi.kleen@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Shaohua Li \u003cshli@fb.com\u003e\nCc: Christopher Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6ddfb6c58903262d2d77042c41dba58cf775d88",
      "tree": "9837d0e30fea1e416d5ae6b198e0bafc910b422b",
      "parents": [
        "ac22b46a0b65dbeccbf4d458db95687e825bde90"
      ],
      "author": {
        "name": "Huang Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Aug 17 15:45:46 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "mm, clear_huge_page: move order algorithm into a separate function\n\nPatch series \"mm, huge page: Copy target sub-page last when copy huge\npage\", v2.\n\nHuge page helps to reduce TLB miss rate, but it has higher cache\nfootprint, sometimes this may cause some issue.  For example, when\ncopying huge page on x86_64 platform, the cache footprint is 4M.  But on\na Xeon E5 v3 2699 CPU, there are 18 cores, 36 threads, and only 45M LLC\n(last level cache).  That is, in average, there are 2.5M LLC for each\ncore and 1.25M LLC for each thread.\n\nIf the cache contention is heavy when copying the huge page, and we copy\nthe huge page from the begin to the end, it is possible that the begin\nof huge page is evicted from the cache after we finishing copying the\nend of the huge page.  And it is possible for the application to access\nthe begin of the huge page after copying the huge page.\n\nIn c79b57e462b5d (\"mm: hugetlb: clear target sub-page last when clearing\nhuge page\"), to keep the cache lines of the target subpage hot, the\norder to clear the subpages in the huge page in clear_huge_page() is\nchanged to clearing the subpage which is furthest from the target\nsubpage firstly, and the target subpage last.  The similar order\nchanging helps huge page copying too.  That is implemented in this\npatchset.\n\nThe patchset is a generic optimization which should benefit quite some\nworkloads, not for a specific use case.  To demonstrate the performance\nbenefit of the patchset, we have tested it with vm-scalability run on\ntransparent huge page.\n\nWith this patchset, the throughput increases ~16.6% in vm-scalability\nanon-cow-seq test case with 36 processes on a 2 socket Xeon E5 v3 2699\nsystem (36 cores, 72 threads).  The test case set\n/sys/kernel/mm/transparent_hugepage/enabled to be always, mmap() a big\nanonymous memory area and populate it, then forked 36 child processes,\neach writes to the anonymous memory area from the begin to the end, so\ncause copy on write.  For each child process, other child processes\ncould be seen as other workloads which generate heavy cache pressure.\nAt the same time, the IPC (instruction per cycle) increased from 0.63 to\n0.78, and the time spent in user space is reduced ~7.2%.\n\nThis patch (of 4):\n\nIn c79b57e462b5d (\"mm: hugetlb: clear target sub-page last when clearing\nhuge page\"), to keep the cache lines of the target subpage hot, the\norder to clear the subpages in the huge page in clear_huge_page() is\nchanged to clearing the subpage which is furthest from the target\nsubpage firstly, and the target subpage last.  This optimization could\nbe applied to copying huge page too with the same order algorithm.  To\navoid code duplication and reduce maintenance overhead, in this patch,\nthe order algorithm is moved out of clear_huge_page() into a separate\nfunction: process_huge_page().  So that we can use it for copying huge\npage too.\n\nThis will change the direct calls to clear_user_highpage() into the\nindirect calls.  But with the proper inline support of the compilers,\nthe indirect call will be optimized to be the direct call.  Our tests\nshow no performance change with the patch.\n\nThis patch is a code cleanup without functionality change.\n\nLink: http://lkml.kernel.org/r/20180524005851.4079-2-ying.huang@intel.com\nSigned-off-by: \"Huang, Ying\" \u003cying.huang@intel.com\u003e\nSuggested-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nReviewed-by: Mike Kravetz \u003cmike.kravetz@oracle.com\u003e\nCc: Andi Kleen \u003candi.kleen@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill.shutemov@linux.intel.com\u003e\nCc: Matthew Wilcox \u003cwilly@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Shaohua Li \u003cshli@fb.com\u003e\nCc: Christopher Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac22b46a0b65dbeccbf4d458db95687e825bde90",
      "tree": "55210efe4060c7c457e1a072d532534eb8a8cff2",
      "parents": [
        "5e9d398240b2292b1091f921d29bbab374b755fd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Aug 17 15:45:42 2018 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 17 16:20:29 2018 -0700"
      },
      "message": "ext4: readpages() should submit IO as read-ahead\n\na_ops-\u003ereadpages() is only ever used for read-ahead.  Ensure that we\npass this information down to the block layer.\n\nLink: http://lkml.kernel.org/r/20180621010725.17813-5-axboe@kernel.dk\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nReviewed-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Chris Mason \u003cclm@fb.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "5e9d398240b2292b1091f921d29bbab374b755fd"
}
