{"push_id":1877718665,"size":1000,"distinct_size":15673,"ref":"refs/heads/ecmp-pass-mp-hash-in-flow-v3","head":"865f54378284b7b46e626bb8b8663b41559857a4","before":"51337293340df538a3a61d96137707659420ad3c","commits":[{"sha":"0348d2ebec9b00ea87b42dffdb3f393007303b82","author":{"name":"Naoya Horiguchi","email":"dd1049595340a06ff67286dc9114d25ba1f95e21@ah.jp.nec.com"},"message":"mm: hwpoison: introduce idenfity_page_state\n\nFactoring duplicate code into a function.\n\nLink: http://lkml.kernel.org/r/1496305019-5493-10-git-send-email-n-horiguchi@ah.jp.nec.com\nSigned-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/0348d2ebec9b00ea87b42dffdb3f393007303b82"},{"sha":"b6bb9811496d26744c5a91a14c851face8b9f1e7","author":{"name":"David Rientjes","email":"f66fbc5bc952713981aafccdae5a05caf2d2e776@google.com"},"message":"mm, vmpressure: pass-through notification support\n\nBy default, vmpressure events are not pass-through, i.e.  they propagate\nup through the memcg hierarchy until an event notifier is found for any\nthreshold level.\n\nThis presents a difficulty when a thread waiting on a read(2) for a\nvmpressure event cannot distinguish between local memory pressure and\nmemory pressure in a descendant memcg, especially when that thread may\nnot control the memcg hierarchy.\n\nConsider a user-controlled child memcg with a smaller limit than a\ntop-level memcg controlled by the \"Activity Manager\" specified in\nDocumentation/cgroup-v1/memory.txt.  It may register for memory pressure\nnotification for descendant memcgs to make a policy decision: oom kill a\nlow priority job, increase the limit, decrease other limits, etc.  If it\nregisters for memory pressure notification on the top-level memcg, it\ncurrently cannot distinguish between memory pressure in its own memcg or\na descendant memcg, which is user-controlled.\n\nConversely, if a user registers for memory pressure notification on\ntheir own descendant memcg, the Activity Manager does not receive any\npressure notification for that child memcg hierarchy.  Vmpressure events\nare not received for ancestor memcgs if the memcg experiencing pressure\nhave notifiers registered, perhaps outside the knowledge of the thread\nwaiting on read(2) at the top level.\n\nBoth of these are consequences of vmpressure notification not being\npass-through.\n\nThis implements a pass-through behavior for vmpressure events.  When\nwriting to control.event_control, vmpressure event handlers may\noptionally specify a mode.  There are two new modes:\n\n - \"hierarchy\": always propagate memory pressure events up the hierarchy\n   regardless if descendant memcgs have their own notifiers registered,\n   and\n\n - \"local\": only receive notifications when the memcg for which the\n   event is registered experiences memory pressure.\n\nOf course, processes may register for one notification of \"low,local\",\nfor example, and another for \"low\".\n\nIf no mode is specified, the current behavior is maintained for\nbackwards compatibility.\n\nSee the change to Documentation/cgroup-v1/memory.txt for full\nspecification.\n\n[dan.carpenter@oracle.com: free the same pointer we allocated]\n  Link: http://lkml.kernel.org/r/20170613191820.GA20003@elgon.mountain\nLink: http://lkml.kernel.org/r/alpine.DEB.2.10.1705311421320.8946@chino.kir.corp.google.com\nSigned-off-by: David Rientjes <rientjes@google.com>\nSigned-off-by: Dan Carpenter <dan.carpenter@oracle.com>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nCc: Vlastimil Babka <vbabka@suse.cz>\nCc: Minchan Kim <minchan@kernel.org>\nCc: Jonathan Corbet <corbet@lwn.net>\nCc: Anton Vorontsov <anton@enomsg.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/b6bb9811496d26744c5a91a14c851face8b9f1e7"},{"sha":"1860033237d4be09c5d7382585f0c7229367a534","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@suse.com"},"message":"mm: make PR_SET_THP_DISABLE immediately active\n\nPR_SET_THP_DISABLE has a rather subtle semantic.  It doesn't affect any\nexisting mapping because it only updated mm->def_flags which is a\ntemplate for new mappings.\n\nThe mappings created after prctl(PR_SET_THP_DISABLE) have VM_NOHUGEPAGE\nflag set.  This can be quite surprising for all those applications which\ndo not do prctl(); fork() & exec() and want to control their own THP\nbehavior.\n\nAnother usecase when the immediate semantic of the prctl might be useful\nis a combination of pre- and post-copy migration of containers with\nCRIU.  In this case CRIU populates a part of a memory region with data\nthat was saved during the pre-copy stage.  Afterwards, the region is\nregistered with userfaultfd and CRIU expects to get page faults for the\nparts of the region that were not yet populated.  However, khugepaged\ncollapses the pages and the expected page faults do not occur.\n\nIn more general case, the prctl(PR_SET_THP_DISABLE) could be used as a\ntemporary mechanism for enabling/disabling THP process wide.\n\nImplementation wise, a new MMF_DISABLE_THP flag is added.  This flag is\ntested when decision whether to use huge pages is taken either during\npage fault of at the time of THP collapse.\n\nIt should be noted, that the new implementation makes PR_SET_THP_DISABLE\nmaster override to any per-VMA setting, which was not the case\npreviously.\n\nFixes: a0715cc22601 (\"mm, thp: add VM_INIT_DEF_MASK and PRCTL_THP_DISABLE\")\nLink: http://lkml.kernel.org/r/1496415802-30944-1-git-send-email-rppt@linux.vnet.ibm.com\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nSigned-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com>\nCc: Vlastimil Babka <vbabka@suse.cz>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: Arnd Bergmann <arnd@arndb.de>\nCc: \"Kirill A. Shutemov\" <kirill.shutemov@linux.intel.com>\nCc: Pavel Emelyanov <xemul@virtuozzo.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/1860033237d4be09c5d7382585f0c7229367a534"},{"sha":"34c8105792731118b69582562e1178417493e65a","author":{"name":"Sean Christopherson","email":"7bf0642311bd6b908973abe66c5728b3bb42b84d@intel.com"},"message":"mm/memcontrol: exclude @root from checks in mem_cgroup_low\n\nMake @root exclusive in mem_cgroup_low; it is never considered low when\nlooked at directly and is not checked when traversing the tree.  In\neffect, @root is handled identically to how root_mem_cgroup was\npreviously handled by mem_cgroup_low.\n\nIf @root is not excluded from the checks, a cgroup underneath @root will\nnever be considered low during targeted reclaim of @root, e.g.  due to\nmemory.current > memory.high, unless @root is misconfigured to have\nmemory.low > memory.high.\n\nExcluding @root enables using memory.low to prioritize memory usage\nbetween cgroups within a subtree of the hierarchy that is limited by\nmemory.high or memory.max, e.g.  when ROOT owns @root's controls but\ndelegates the @root directory to a USER so that USER can create and\nadminister children of @root.\n\nFor example, given cgroup A with children B and C:\n\n    A\n   / \\\n  B   C\n\nand\n\n  1. A/memory.current > A/memory.high\n  2. A/B/memory.current < A/B/memory.low\n  3. A/C/memory.current >= A/C/memory.low\n\nAs 'A' is high, i.e.  triggers reclaim from 'A', and 'B' is low, we\nshould reclaim from 'C' until 'A' is no longer high or until we can no\nlonger reclaim from 'C'.  If 'A', i.e.  @root, isn't excluded by\nmem_cgroup_low when reclaming from 'A', then 'B' won't be considered low\nand we will reclaim indiscriminately from both 'B' and 'C'.\n\nHere is the test I used to confirm the bug and the patch.\n\n20:00:55@sjchrist-vm ? ~ $ cat ~/.bin/memcg_low_test\n#!/bin/bash\n\nx62mb=$((62<<20))\nx66mb=$((66<<20))\nx94mb=$((94<<20))\nx98mb=$((98<<20))\n\nsetup() {\n    set -e\n\n    if [[ -n $DEBUG ]]; then\n        set -x\n    fi\n\n    trap teardown EXIT HUP INT TERM\n\n    if [[ ! -e /mnt/1gb.swap ]]; then\n        sudo fallocate -l 1G /mnt/1gb.swap > /dev/null\n        sudo mkswap /mnt/1gb.swap > /dev/null\n    fi\n    if ! swapon --show=NAME | grep -q \"/mnt/1gb.swap\"; then\n        sudo swapon /mnt/1gb.swap\n    fi\n\n    if [[ ! -e /cgroup/cgroup.controllers ]]; then\n        sudo mount -t cgroup2 none /cgroup\n    fi\n\n    grep -q memory /cgroup/cgroup.controllers\n\n    sudo sh -c \"echo '+memory' > /cgroup/cgroup.subtree_control\"\n\n    sudo mkdir /cgroup/A && sudo chown $USER:$USER /cgroup/A\n    sudo sh -c \"echo '+memory' > /cgroup/A/cgroup.subtree_control\"\n    sudo sh -c \"echo '96m' > /cgroup/A/memory.high\"\n\n    mkdir /cgroup/A/0\n    mkdir /cgroup/A/1\n\n    echo 64m > /cgroup/A/0/memory.low\n}\n\nteardown() {\n    set +e\n\n    trap - EXIT HUP INT TERM\n\n    if [[ -z $1 ]]; then\n        printf \"\\n\"\n        printf \"%0.s*\" {1..35}\n        printf \"\\nFAILED!\\n\\n\"\n        tail /cgroup/A/**/memory.current\n        printf \"%0.s*\" {1..35}\n        printf \"\\n\\n\"\n    fi\n\n    ps | grep stress | tr -s ' ' | cut -f 2 -d ' ' | xargs -I % kill %\n\n    sleep 2\n\n    if [[ -e /cgroup/A/0 ]]; then\n        rmdir /cgroup/A/0\n    fi\n    if [[ -e /cgroup/A/1 ]]; then\n        rmdir /cgroup/A/1\n    fi\n    if [[ -e /cgroup/A ]]; then\n        sudo rmdir /cgroup/A\n    fi\n}\n\nstress_test() {\n    sudo sh -c \"echo $$ > /cgroup/A/$1/cgroup.procs\"\n    stress --vm 1 --vm-bytes 64M --vm-keep > /dev/null &\n\n    sudo sh -c \"echo $$ > /cgroup/A/$2/cgroup.procs\"\n    stress --vm 1 --vm-bytes 64M --vm-keep > /dev/null &\n\n    sudo sh -c \"echo $$ > /cgroup/cgroup.procs\"\n\n    sleep 1\n\n    # A/0 should be consuming more memory than A/1\n    [[ $(cat /cgroup/A/0/memory.current) -ge $(cat /cgroup/A/1/memory.current) ]]\n\n    # A/0 should be consuming ~64mb\n    [[ $(cat /cgroup/A/0/memory.current) -ge $x62mb ]] && [[ $(cat /cgroup/A/0/memory.current) -le $x66mb ]]\n\n    # A should cumulatively be consuming ~96mb\n    [[ $(cat /cgroup/A/memory.current) -ge $x94mb ]] && [[ $(cat /cgroup/A/memory.current) -le $x98mb ]]\n\n    # Stop the stressors\n    ps | grep stress | tr -s ' ' | cut -f 2 -d ' ' | xargs -I % kill %\n}\n\nteardown 1\nsetup\n\nfor ((i=1;i<=$1;i++)); do\n    printf \"ITERATION $i of $1 - stress_test 0 1\"\n    stress_test 0 1\n    printf \"\\x1b[2K\\r\"\n\n    printf \"ITERATION $i of $1 - stress_test 1 0\"\n    stress_test 1 0\n    printf \"\\x1b[2K\\r\"\n\n    printf \"ITERATION $i of $1 - PASSED\\n\"\ndone\n\nteardown 1\n\necho PASSED!\n\n20:11:26@sjchrist-vm ? ~ $ memcg_low_test 10\n\nLink: http://lkml.kernel.org/r/1496434412-21005-1-git-send-email-sean.j.christopherson@intel.com\nSigned-off-by: Sean Christopherson <sean.j.christopherson@intel.com>\nAcked-by: Vladimir Davydov <vdavydov.dev@gmail.com>\nAcked-by: Balbir Singh <bsingharora@gmail.com>\nAcked-by: Johannes Weiner <hannes@cmpxchg.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/34c8105792731118b69582562e1178417493e65a"},{"sha":"78c72746f56b212ecf768a7e67cee3b7cf89238c","author":{"name":"Yisheng Xie","email":"64378fab58637192bab6bc67f1bd1fc7095c34e9@huawei.com"},"message":"vmalloc: show lazy-purged vma info in vmallocinfo\n\nWhen ioremap a 67112960 bytes vm_area with the vmallocinfo:\n [..]\n 0xec79b000-0xec7fa000  389120 ftl_add_mtd+0x4d0/0x754 pages=94 vmalloc\n 0xec800000-0xecbe1000 4067328 kbox_proc_mem_write+0x104/0x1c4 phys=8b520000 ioremap\n\nwe get the result:\n 0xf1000000-0xf5001000 67112960 devm_ioremap+0x38/0x7c phys=40000000 ioremap\n\nFor the align for ioremap must be less than '1 << IOREMAP_MAX_ORDER':\n\n\tif (flags & VM_IOREMAP)\n\t\talign = 1ul << clamp_t(int, get_count_order_long(size),\n\t\t\tPAGE_SHIFT, IOREMAP_MAX_ORDER);\n\nSo it makes idiot like me a litte puzzled why this was a jump the\nvm_area from 0xec800000-0xecbe1000 to 0xf1000000-0xf5001000, and leaving\n0xed000000-0xf1000000 as a big hole.\n\nThis patch is to show all of vm_area, including vmas which are freeing\nbut still in the vmap_area_list, to make it more clear about why we will\nget 0xf1000000-0xf5001000 in the above case.  And we will get a\nvmallocinfo like:\n\n [..]\n 0xec79b000-0xec7fa000  389120 ftl_add_mtd+0x4d0/0x754 pages=94 vmalloc\n 0xec800000-0xecbe1000 4067328 kbox_proc_mem_write+0x104/0x1c4 phys=8b520000 ioremap\n [..]\n 0xece7c000-0xece7e000    8192 unpurged vm_area\n 0xece7e000-0xece83000   20480 vm_map_ram\n 0xf0099000-0xf00aa000   69632 vm_map_ram\n\nafter this patch.\n\nLink: http://lkml.kernel.org/r/1496649682-20710-1-git-send-email-xieyisheng1@huawei.com\nSigned-off-by: Yisheng Xie <xieyisheng1@huawei.com>\nCc: Michal Hocko <mhocko@suse.com>\nCc: zijun_hu <zijun_hu@htc.com>\nCc: \"Kirill A . Shutemov\" <kirill.shutemov@linux.intel.com>\nCc: Tim Chen <tim.c.chen@linux.intel.com>\nCc: Hanjun Guo <guohanjun@huawei.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/78c72746f56b212ecf768a7e67cee3b7cf89238c"},{"sha":"e35ef6397b8273a0059a2b837c26f92b0ecf8596","author":{"name":"Anshuman Khandual","email":"daf8711482788a1d568dd013da4df163c9d5aeea@linux.vnet.ibm.com"},"message":"mm/cma.c: warn if the CMA area could not be activated\n\nWhile activating a CMA area we check to make sure that all the PFNs in\nthe range are inside the same zone.  This is a requirement for\nalloc_contig_range() to work.  Any CMA area failing the check is\ndisabled for good.  This happens silently right now making all future\ncma_alloc() allocations failure inevitable.\n\nHere we add an error message stating that the CMA area could not be\nactivated which makes it easier to explain any future cma_alloc()\nfailures on it.  While in there, change the bail out goto label from\n'err' to 'not_in_zone' which makes more sense.\n\nLink: http://lkml.kernel.org/r/20170605023729.26303-1-khandual@linux.vnet.ibm.com\nSigned-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>\nCc: \"Aneesh Kumar K.V\" <aneesh.kumar@linux.vnet.ibm.com>\nCc: Joonsoo Kim <iamjoonsoo.kim@lge.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/e35ef6397b8273a0059a2b837c26f92b0ecf8596"},{"sha":"d715cf804a0318e83c75c0a7abd1a4b9ce13e8da","author":{"name":"Liam R. Howlett","email":"3490d6efacae8e61dc708c5ebda8552b2ff8939a@Oracle.com"},"message":"mm/hugetlb.c: warn the user when issues arise on boot due to hugepages\n\nWhen the user specifies too many hugepages or an invalid\ndefault_hugepagesz the communication to the user is implicit in the\nallocation message.  This patch adds a warning when the desired page\ncount is not allocated and prints an error when the default_hugepagesz\nis invalid on boot.\n\nDuring boot hugepages will allocate until there is a fraction of the\nhugepage size left.  That is, we allocate until either the request is\nsatisfied or memory for the pages is exhausted.  When memory for the\npages is exhausted, it will most likely lead to the system failing with\nthe OOM manager not finding enough (or anything) to kill (unless you're\nusing really big hugepages in the order of 100s of MB or in the GBs).\nThe user will most likely see the OOM messages much later in the boot\nsequence than the implicitly stated message.  Worse yet, you may even\nget an OOM for each processor which causes many pages of OOMs on modern\nsystems.  Although these messages will be printed earlier than the OOM\nmessages, at least giving the user errors and warnings will highlight\nthe configuration as an issue.  I'm trying to point the user in the\nright direction by providing a more robust statement of what is failing.\n\nDuring the sysctl or echo command, the user can check the results much\neasier than if the system hangs during boot and the scenario of having\nnothing to OOM for kernel memory is highly unlikely.\n\nMike said:\n \"Before sending out this patch, I asked Liam off list why he was doing\n  it. Was it something he just thought would be useful? Or, was there\n  some type of user situation/need. He said that he had been called in\n  to assist on several occasions when a system OOMed during boot. In\n  almost all of these situations, the user had grossly misconfigured\n  huge pages.\n\n  DB users want to pre-allocate just the right amount of huge pages, but\n  sometimes they can be really off. In such situations, the huge page\n  init code just allocates as many huge pages as it can and reports the\n  number allocated. There is no indication that it quit allocating\n  because it ran out of memory. Of course, a user could compare the\n  number in the message to what they requested on the command line to\n  determine if they got all the huge pages they requested. The thought\n  was that it would be useful to at least flag this situation. That way,\n  the user might be able to better relate the huge page allocation\n  failure to the OOM.\n\n  I'm not sure if the e-mail discussion made it obvious that this is\n  something he has seen on several occasions.\n\n  I see Michal's point that this will only flag the situation where\n  someone configures huge pages very badly. And, a more extensive look\n  at the situation of misconfiguring huge pages might be in order. But,\n  this has happened on several occasions which led to the creation of\n  this patch\"\n\n[akpm@linux-foundation.org: reposition memfmt() to avoid forward declaration]\nLink: http://lkml.kernel.org/r/20170603005413.10380-1-Liam.Howlett@Oracle.com\nSigned-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>\nCc: Michal Hocko <mhocko@suse.com>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>\nCc: Gerald Schaefer <gerald.schaefer@de.ibm.com>\nCc: zhongjiang <zhongjiang@huawei.com>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: \"Kirill A . Shutemov\" <kirill.shutemov@linux.intel.com>\nCc: Mike Kravetz <mike.kravetz@oracle.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/d715cf804a0318e83c75c0a7abd1a4b9ce13e8da"},{"sha":"7ab0e50ad0831e714dcdc3de44a7fe3887732b7c","author":{"name":"Steven Rostedt (VMware)","email":"9f626a07de58780741a9085807c77fd646ef3459@goodmis.org"},"message":"oom, trace: remove ENUM evaluation of COMPACTION_FEEDBACK\n\nAfter enabling CONFIG_TRACE_ENUM_MAP_FILE (which will soon be renamed to\nCONFIG_TRACE_EVAL_MAP_FILE), I am able to examine the enums that have\nbeen evaluated:\n\n # cat /sys/kernel/debug/tracing/enum_map\n\n(which will soon be renamed to eval_map)\n\nAnd it showed some interesting results:\n\n  [..]\n  ZONE_MOVABLE 3 (oom)\n  ZONE_NORMAL 2 (oom)\n  ZONE_DMA32 1 (oom)\n  ZONE_DMA 0 (oom)\n  3 3 (oom)\n  2 2 (oom)\n  1 1 (oom)\n  COMPACT_PRIO_ASYNC 2 (oom)\n  COMPACT_PRIO_SYNC_LIGHT 1 (oom)\n  COMPACT_PRIO_SYNC_FULL 0 (oom)\n  [..]\n  ZONE_DMA 0 (vmscan)\n  3 3 (vmscan)\n  2 2 (vmscan)\n  1 1 (vmscan)\n  COMPACT_PRIO_ASYNC 2 (vmscan)\n  [..]\n  ZONE_DMA 0 (kmem)\n  3 3 (kmem)\n  2 2 (kmem)\n  1 1 (kmem)\n  COMPACT_PRIO_ASYNC 2 (kmem)\n  [..]\n  ZONE_DMA 0 (compaction)\n  3 3 (compaction)\n  2 2 (compaction)\n  1 1 (compaction)\n  COMPACT_PRIO_ASYNC 2 (compaction)\n  [..]\n\nThe name within the parenthesis are the trace systems that the enum/eval\nmaps are associated with. When there's a number evaluated to another\nnumber, that tells me that the TRACE_DEFINE_ENUM() was used on a #define\nand not an enum. As #defines get converted normally, they are not needed\nto be evaluated.\n\nEach of the above trace systems with the number to number evaluation\nincluded the file include/trace/events/mmflags.h which has:\n\n /* High-level compaction status feedback */\n #define COMPACTION_FAILED       1\n #define COMPACTION_WITHDRAWN    2\n #define COMPACTION_PROGRESS     3\n\n[..]\n\n #define COMPACTION_FEEDBACK             \\\n        EM(COMPACTION_FAILED,           \"failed\")       \\\n        EM(COMPACTION_WITHDRAWN,        \"withdrawn\")    \\\n        EMe(COMPACTION_PROGRESS,        \"progress\")\n\nWhich is still needed for the __print_symbolic() usage in the\ntrace_event.  But it is not needed to be evaluated.\n\nRemoving the evaluation part removes the unnecessary evaluations of\nnumbers to numbers.\n\nLink: http://lkml.kernel.org/r/20170615074944.7be9a647@gandalf.local.home\nSigned-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>\nCc: Michal Hocko <mhocko@kernel.org>\nCc: Vlastimil Babka <vbabka@suse.cz>\nCc: David Rientjes <rientjes@google.com>\nCc: Johannes Weiner <hannes@cmpxchg.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/7ab0e50ad0831e714dcdc3de44a7fe3887732b7c"},{"sha":"16981d763501c0e06e434cf6b59f964c520e0ccc","author":{"name":"Dan Williams","email":"11d4d1e92ac6a0e1ab4aaa72a56a5c1cae6b74af@intel.com"},"message":"mm: improve readability of transparent_hugepage_enabled()\n\nTurn the macro into a static inline and rewrite the condition checks for\nbetter readability in preparation for adding another condition.\n\n[ross.zwisler@linux.intel.com: fix logic to make conversion equivalent]\n[akpm@linux-foundation.org: resolve vs mm-make-pr_set_thp_disable-immediately-active.patch]\n[akpm@linux-foundation.org: include coredump.h for MMF_DISABLE_THP]\nLink: http://lkml.kernel.org/r/149739530612.20686.14760671150202647861.stgit@dwillia2-desk3.amr.corp.intel.com\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>\nReviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>\nAcked-by: \"Kirill A. Shutemov\" <kirill.shutemov@linux.intel.com>\nAcked-by: Michal Hocko <mhocko@suse.com>\nCc: Christoph Hellwig <hch@lst.de>\nCc: Jan Kara <jack@suse.cz>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/16981d763501c0e06e434cf6b59f964c520e0ccc"},{"sha":"baabda261424517110ea98c6651f632ebf2561e3","author":{"name":"Dan Williams","email":"11d4d1e92ac6a0e1ab4aaa72a56a5c1cae6b74af@intel.com"},"message":"mm: always enable thp for dax mappings\n\nThe madvise policy for transparent huge pages is meant to avoid unwanted\nallocations of transparent huge pages.  It allows a policy of disabling\nthe extra memory pressure and effort to arrange for a huge page when it\nis not needed.\n\nDAX by definition never incurs this overhead since it is statically\nallocated.  The policy choice makes even less sense for device-dax which\ntries to guarantee a given tlb-fault size.  Specifically, the following\nsetting:\n\n\techo never > /sys/kernel/mm/transparent_hugepage/enabled\n\n...violates that guarantee and silently disables all device-dax\ninstances with a 2M or 1G alignment.  So, let's avoid that non-obvious\nside effect by force enabling thp for dax mappings in all cases.\n\nIt is worth noting that the reason this uses vma_is_dax(), and the\nresulting header include changes, is that previous attempts to add a\nVM_DAX flag were NAKd.\n\nLink: http://lkml.kernel.org/r/149739531127.20686.15813586620597484283.stgit@dwillia2-desk3.amr.corp.intel.com\nSigned-off-by: Dan Williams <dan.j.williams@intel.com>\nReviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>\nCc: Jan Kara <jack@suse.cz>\nCc: Christoph Hellwig <hch@lst.de>\nCc: \"Kirill A. Shutemov\" <kirill.shutemov@linux.intel.com>\nCc: Michal Hocko <mhocko@suse.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/baabda261424517110ea98c6651f632ebf2561e3"},{"sha":"108a7ac448caff8e35e8c3f92f65faad893e5aca","author":{"name":"Will Deacon","email":"b2e33b86f3f248a395aadfb8ef1908ac314f4233@arm.com"},"message":"include/linux/page_ref.h: ensure page_ref_unfreeze is ordered against prior accesses\n\npage_ref_freeze and page_ref_unfreeze are designed to be used as a pair,\nwrapping a critical section where struct pages can be modified without\nhaving to worry about consistency for a concurrent fast-GUP.\n\nWhilst page_ref_freeze has full barrier semantics due to its use of\natomic_cmpxchg, page_ref_unfreeze is implemented using atomic_set, which\ndoesn't provide any barrier semantics and allows the operation to be\nreordered with respect to page modifications in the critical section.\n\nThis patch ensures that page_ref_unfreeze is ordered after any critical\nsection updates, by invoking smp_mb() prior to the atomic_set.\n\nLink: http://lkml.kernel.org/r/1497349722-6731-3-git-send-email-will.deacon@arm.com\nSigned-off-by: Will Deacon <will.deacon@arm.com>\nAcked-by: Steve Capper <steve.capper@arm.com>\nAcked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>\nCc: Mark Rutland <mark.rutland@arm.com>\nCc: Mel Gorman <mgorman@suse.de>\nCc: Vlastimil Babka <vbabka@suse.cz>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/108a7ac448caff8e35e8c3f92f65faad893e5aca"},{"sha":"f4e177d12686bf98b5a047b5187121a71ee0dd8c","author":{"name":"Will Deacon","email":"b2e33b86f3f248a395aadfb8ef1908ac314f4233@arm.com"},"message":"mm/migrate.c: stabilise page count when migrating transparent hugepages\n\nWhen migrating a transparent hugepage, migrate_misplaced_transhuge_page\nguards itself against a concurrent fastgup of the page by checking that\nthe page count is equal to 2 before and after installing the new pmd.\n\nIf the page count changes, then the pmd is reverted back to the original\nentry, however there is a small window where the new (possibly writable)\npmd is installed and the underlying page could be written by userspace.\nRestoring the old pmd could therefore result in loss of data.\n\nThis patch fixes the problem by freezing the page count whilst updating\nthe page tables, which protects against a concurrent fastgup without the\nneed to restore the old pmd in the failure case (since the page count\ncan no longer change under our feet).\n\nLink: http://lkml.kernel.org/r/1497349722-6731-4-git-send-email-will.deacon@arm.com\nSigned-off-by: Will Deacon <will.deacon@arm.com>\nAcked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>\nCc: Mel Gorman <mgorman@suse.de>\nCc: Mark Rutland <mark.rutland@arm.com>\nCc: Steve Capper <steve.capper@arm.com>\nCc: Vlastimil Babka <vbabka@suse.cz>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/f4e177d12686bf98b5a047b5187121a71ee0dd8c"},{"sha":"ed8a555323a6fddadfd9e259fc4e9c41c191ca6c","author":{"name":"Andy Shevchenko","email":"81dea222a65099eed47626c53d6f56bdfbcbb7bf@linux.intel.com"},"message":"zram: use __sysfs_match_string() helper\n\nUse __sysfs_match_string() helper instead of open coded variant.\n\nLink: http://lkml.kernel.org/r/20170609120835.22156-1-andriy.shevchenko@linux.intel.com\nSigned-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\nReviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>\nAcked-by: Minchan Kim <minchan@kernel.org>\nCc: Nitin Gupta <ngupta@vflare.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/ed8a555323a6fddadfd9e259fc4e9c41c191ca6c"},{"sha":"9f123ab544df1c92acd6a029067e8bde44780740","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@kernel.org"},"message":"mm, memory_hotplug: support movable_node for hotpluggable nodes\n\nmovable_node kernel parameter allows making hotpluggable NUMA nodes to\nput all the hotplugable memory into movable zone which allows more or\nless reliable memory hotremove.  At least this is the case for the NUMA\nnodes present during the boot (see find_zone_movable_pfns_for_nodes).\n\nThis is not the case for the memory hotplug, though.\n\n\techo online > /sys/devices/system/memory/memoryXYZ/state\n\nwill default to a kernel zone (usually ZONE_NORMAL) unless the\nparticular memblock is already in the movable zone range which is not\nthe case normally when onlining the memory from the udev rule context\nfor a freshly hotadded NUMA node.  The only option currently is to have\na special udev rule to echo online_movable to all memblocks belonging to\nsuch a node which is rather clumsy.  Not to mention this is inconsistent\nas well because what ended up in the movable zone during the boot will\nend up in a kernel zone after hotremove & hotadd without special care.\n\nIt would be nice to reuse memblock_is_hotpluggable but the runtime\nhotplug doesn't have that information available because the boot and\nhotplug paths are not shared and it would be really non trivial to make\nthem use the same code path because the runtime hotplug doesn't play\nwith the memblock allocator at all.\n\nTeach move_pfn_range that MMOP_ONLINE_KEEP can use the movable zone if\nmovable_node is enabled and the range doesn't overlap with the existing\nnormal zone.  This should provide a reasonable default onlining\nstrategy.\n\nStrictly speaking the semantic is not identical with the boot time\ninitialization because find_zone_movable_pfns_for_nodes covers only the\nhotplugable range as described by the BIOS/FW.  From my experience this\nis usually a full node though (except for Node0 which is special and\nnever goes away completely).  If this turns out to be a problem in the\nreal life we can tweak the code to store hotplug flag into memblocks but\nlet's keep this simple now.\n\nLink: http://lkml.kernel.org/r/20170612111227.GI7476@dhcp22.suse.cz\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nAcked-by: Reza Arbab <arbab@linux.vnet.ibm.com>\nCc: Mel Gorman <mgorman@suse.de>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: Yasuaki Ishimatsu <yasu.isimatu@gmail.com>\nCc: <qiuxishi@huawei.com>\nCc: Kani Toshimitsu <toshi.kani@hpe.com>\nCc: <slaoub@gmail.com>\nCc: Joonsoo Kim <js1304@gmail.com>\nCc: Andi Kleen <ak@linux.intel.com>\nCc: David Rientjes <rientjes@google.com>\nCc: Daniel Kiper <daniel.kiper@oracle.com>\nCc: Igor Mammedov <imammedo@redhat.com>\nCc: Vitaly Kuznetsov <vkuznets@redhat.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/9f123ab544df1c92acd6a029067e8bde44780740"},{"sha":"7f252f277b66854c61d3abdd4c196d6dc64fa333","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@suse.com"},"message":"mm, memory_hotplug: simplify empty node mask handling in new_node_page\n\nnew_node_page tries to allocate the target page on a different NUMA node\nthan the source page.  This makes sense in most cases during the hotplug\nbecause we are likely to offline the whole numa node.  But there are\ncases where there are no other nodes to fallback (e.g.  when offlining\nparts of the only existing node) and we have to fallback to allocating\nfrom the source node.  The current code does that but it can be\nsimplified by checking the nmask and updating it before we even try to\nallocate rather than special casing it.\n\nThis patch shouldn't introduce any functional change.\n\nLink: http://lkml.kernel.org/r/20170608074553.22152-2-mhocko@kernel.org\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Xishi Qiu <qiuxishi@huawei.com>\nCc: zhong jiang <zhongjiang@huawei.com>\nCc: Joonsoo Kim <js1304@gmail.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/7f252f277b66854c61d3abdd4c196d6dc64fa333"},{"sha":"4db9b2efe94967be34e3b136a93251a3c1736dd5","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@suse.com"},"message":"hugetlb, memory_hotplug: prefer to use reserved pages for migration\n\nnew_node_page will try to use the origin's next NUMA node as the\nmigration destination for hugetlb pages.  If such a node doesn't have\nany preallocated pool it falls back to __alloc_buddy_huge_page_no_mpol\nto allocate a surplus page instead.  This is quite subotpimal for any\nconfiguration when hugetlb pages are no distributed to all NUMA nodes\nevenly.  Say we have a hotplugable node 4 and spare hugetlb pages are\nnode 0\n\n  /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages:10000\n  /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages:0\n  /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages:0\n  /sys/devices/system/node/node3/hugepages/hugepages-2048kB/nr_hugepages:0\n  /sys/devices/system/node/node4/hugepages/hugepages-2048kB/nr_hugepages:10000\n  /sys/devices/system/node/node5/hugepages/hugepages-2048kB/nr_hugepages:0\n  /sys/devices/system/node/node6/hugepages/hugepages-2048kB/nr_hugepages:0\n  /sys/devices/system/node/node7/hugepages/hugepages-2048kB/nr_hugepages:0\n\nNow we consume the whole pool on node 4 and try to offline this node.\nAll the allocated pages should be moved to node0 which has enough\npreallocated pages to hold them.  With the current implementation\nofflining very likely fails because hugetlb allocations during runtime\nare much less reliable.\n\nFix this by reusing the nodemask which excludes migration source and try\nto find a first node which has a page in the preallocated pool first and\nfall back to __alloc_buddy_huge_page_no_mpol only when the whole pool is\nconsumed.\n\n[akpm@linux-foundation.org: remove bogus arg from alloc_huge_page_nodemask() stub]\nLink: http://lkml.kernel.org/r/20170608074553.22152-3-mhocko@kernel.org\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Xishi Qiu <qiuxishi@huawei.com>\nCc: zhong jiang <zhongjiang@huawei.com>\nCc: Joonsoo Kim <js1304@gmail.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/4db9b2efe94967be34e3b136a93251a3c1736dd5"},{"sha":"8b9132388964df2cfe151a88fd1dd8219dabf23c","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@suse.com"},"message":"mm: unify new_node_page and alloc_migrate_target\n\nCommit 394e31d2ceb4 (\"mem-hotplug: alloc new page from a nearest\nneighbor node when mem-offline\") has duplicated a large part of\nalloc_migrate_target with some hotplug specific special casing.\n\nTo be more precise it tried to enfore the allocation from a different\nnode than the original page.  As a result the two function diverged in\ntheir shared logic, e.g.  the hugetlb allocation strategy.\n\nLet's unify the two and express different NUMA requirements by the given\nnodemask.  new_node_page will simply exclude the node it doesn't care\nabout and alloc_migrate_target will use all the available nodes.\nalloc_migrate_target will then learn to migrate hugetlb pages more\nsanely and use preallocated pool when possible.\n\nPlease note that alloc_migrate_target used to call alloc_page resp.\nalloc_pages_current so the memory policy of the current context which is\nquite strange when we consider that it is used in the context of\nalloc_contig_range which just tries to migrate pages which stand in the\nway.\n\nLink: http://lkml.kernel.org/r/20170608074553.22152-4-mhocko@kernel.org\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nAcked-by: Vlastimil Babka <vbabka@suse.cz>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Xishi Qiu <qiuxishi@huawei.com>\nCc: zhong jiang <zhongjiang@huawei.com>\nCc: Joonsoo Kim <js1304@gmail.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/8b9132388964df2cfe151a88fd1dd8219dabf23c"},{"sha":"69ed779a1454d9a57ba3738135eec9be550e0613","author":{"name":"David Rientjes","email":"f66fbc5bc952713981aafccdae5a05caf2d2e776@google.com"},"message":"mm, hugetlb: schedule when potentially allocating many hugepages\n\nA few hugetlb allocators loop while calling the page allocator and can\npotentially prevent rescheduling if the page allocator slowpath is not\nutilized.\n\nConditionally schedule when large numbers of hugepages can be allocated.\n\nAnshuman:\n \"Fixes a task which was getting hung while writing like 10000 hugepages\n  (16MB on POWER8) into /proc/sys/vm/nr_hugepages.\"\n\nLink: http://lkml.kernel.org/r/alpine.DEB.2.10.1706091535300.66176@chino.kir.corp.google.com\nSigned-off-by: David Rientjes <rientjes@google.com>\nReviewed-by: Mike Kravetz <mike.kravetz@oracle.com>\nTested-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: \"Aneesh Kumar K.V\" <aneesh.kumar@linux.vnet.ibm.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/69ed779a1454d9a57ba3738135eec9be550e0613"},{"sha":"6a1a8b80728c3ae327a82a6cd772e0d554eebf2e","author":{"name":"Michal Hocko","email":"549a3b539eb67715c6526d830d82ed0bec455278@suse.com"},"message":"mm, memcg: fix potential undefined behavior in mem_cgroup_event_ratelimit()\n\nAlice has reported the following UBSAN splat:\n\n  UBSAN: Undefined behaviour in mm/memcontrol.c:661:17\n  signed integer overflow:\n  -2147483644 - 2147483525 cannot be represented in type 'long int'\n  CPU: 1 PID: 11758 Comm: mybibtex2filena Tainted: P           O 4.9.25-gentoo #4\n  Hardware name: XXXXXX, BIOS YYYYYY\n  Call Trace:\n    dump_stack+0x59/0x87\n    ubsan_epilogue+0xe/0x40\n    handle_overflow+0xbb/0xf0\n    __ubsan_handle_sub_overflow+0x12/0x20\n    memcg_check_events.isra.36+0x223/0x360\n    mem_cgroup_commit_charge+0x55/0x140\n    wp_page_copy+0x34e/0xb80\n    do_wp_page+0x1e6/0x1300\n    handle_mm_fault+0x88b/0x1990\n    __do_page_fault+0x2de/0x8a0\n    do_page_fault+0x1a/0x20\n    error_code+0x67/0x6c\n\nThe reason is that we subtract two signed types.  Let's fix this by\ntruly mimicing time_after and cast the result of the subtraction.\n\nLink: http://lkml.kernel.org/r/20170616150057.GQ30580@dhcp22.suse.cz\nSigned-off-by: Michal Hocko <mhocko@suse.com>\nReported-by: Alice Ferrazzi <alicef@gentoo.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/6a1a8b80728c3ae327a82a6cd772e0d554eebf2e"},{"sha":"c6247f72d46457408d98969c4dfb78adc95053e4","author":{"name":"Matthew Wilcox","email":"dab05283752f8b46b7aa5388d10a6669892e8f16@infradead.org"},"message":"mm/hugetlb.c: replace memfmt with string_get_size\n\nThe hugetlb code has its own function to report human-readable sizes.\nConvert it to use the shared string_get_size() function.  This will lead\nto a minor difference in user visible output (MiB/GiB instead of MB/GB),\nbut some would argue that's desirable anyway.\n\nLink: http://lkml.kernel.org/r/20170606190350.GA20010@bombadil.infradead.org\nSigned-off-by: Matthew Wilcox <mawilcox@microsoft.com>\nCc: Liam R. Howlett <Liam.Howlett@Oracle.com>\nCc: Michal Hocko <mhocko@suse.com>\nCc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>\nCc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>\nCc: Gerald Schaefer <gerald.schaefer@de.ibm.com>\nCc: zhong jiang <zhongjiang@huawei.com>\nCc: Andrea Arcangeli <aarcange@redhat.com>\nCc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/jsitnicki/linux/commits/c6247f72d46457408d98969c4dfb78adc95053e4"}]}
{"actor":{"display_login":"jsitnicki"}}