{"push_id":928310859,"size":8,"distinct_size":8,"ref":"refs/heads/cm-13.0-franco-hammerhead","head":"5227cfea14d6234d6c09d4f0e4c782f63a07e18d","before":"85b1f47a22afb76b7bdf0430f29e46e7193a4db3","commits":[{"sha":"eee430a645570800065557d4f03f46b9388a6b6e","author":{"email":"9ae5c07c97a9b7156a654b92d02148f372178dd2@gmail.com","name":"Eduard Alfonso"},"message":"Revert \"Implemented CPU_VOLTAGE_CONTROL.\"\n\nThis reverts commit 85b1f47a22afb76b7bdf0430f29e46e7193a4db3.","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/eee430a645570800065557d4f03f46b9388a6b6e"},{"sha":"2461bb60ba6d040074cd5298e1b8a8f0df7bf177","author":{"email":"eee62f459f15dcddf87a8df69e8328e2a2562028@kernel.org","name":"Minchan Kim"},"message":"mm: Per process reclaim\n\nThese day, there are many platforms avaiable in the embedded market\nand they are smarter than kernel which has very limited information\nabout working set so they want to involve memory management more heavily\nlike android's lowmemory killer and ashmem or recent many lowmemory\nnotifier(there was several trial for various company NOKIA, SAMSUNG,\nLinaro, Google ChromeOS, Redhat).\n\nOne of the simple imagine scenario about userspace's intelligence is that\nplatform can manage tasks as forground and backgroud so it would be\nbetter to reclaim background's task pages for end-user's *responsibility*\nalthough it has frequent referenced pages.\n\nThis patch adds new knob \"reclaim under proc/<pid>/\" so task manager\ncan reclaim any target process anytime, anywhere. It could give another\nmethod to platform for using memory efficiently.\n\nIt can avoid process killing for getting free memory, which was really\nterrible experience because I lost my best score of game I had ever\nafter I switch the phone call while I enjoyed the game.\n\nReclaim file-backed pages only.\n\techo file > /proc/PID/reclaim\nReclaim anonymous pages only.\n\techo anon > /proc/PID/reclaim\nReclaim all pages\n\techo all > /proc/PID/reclaim\n\nChange-Id: Iabdb7bc2ef3dc4d94e3ea005fbe18f4cd06739ab\nSigned-off-by: Minchan Kim <minchan@kernel.org>\nPatch-mainline: linux-mm @ 9 May 2013 16:21:24\n[vinmenon@codeaurora.org: trivial merge conflict fixes]\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/2461bb60ba6d040074cd5298e1b8a8f0df7bf177"},{"sha":"276889e6242d23e1f743b0c9ac91a83dfaedcb66","author":{"email":"eee62f459f15dcddf87a8df69e8328e2a2562028@kernel.org","name":"Minchan Kim"},"message":"mm: Enhance per process reclaim to consider shared pages\n\nSome pages could be shared by several processes. (ex, libc)\nIn case of that, it's too bad to reclaim them from the beginnig.\n\nThis patch causes VM to keep them on memory until last task\ntry to reclaim them so shared pages will be reclaimed only if\nall of task has gone swapping out.\n\nThis feature doesn't handle non-linear mapping on ramfs because\nit's very time-consuming and doesn't make sure of reclaiming and\nnot common.\n\nChange-Id: I7e5f34f2e947f5db6d405867fe2ad34863ca40f7\nSigned-off-by: Sangseok Lee <sangseok.lee@lge.com>\nSigned-off-by: Minchan Kim <minchan@kernel.org>\nPatch-mainline: linux-mm @ 9 May 2013 16:21:27\n[vinmenon@codeaurora.org: trivial merge conflict fixes]\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>\n\nConflicts:\n\tmm/vmscan.c","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/276889e6242d23e1f743b0c9ac91a83dfaedcb66"},{"sha":"3dc5cb1496026b06e10459c8cacf2d70cbc16ce7","author":{"email":"eee62f459f15dcddf87a8df69e8328e2a2562028@kernel.org","name":"Minchan Kim"},"message":"mm: Support address range reclaim\n\nThis patch adds address range reclaim of a process.\nThe requirement is following as,\n\nLike webkit1, it uses a address space for handling multi tabs.\nIOW, it uses *one* process model so all tabs shares address space\nof the process. In such scenario, per-process reclaim is rather\ncoarse-grained so this patch supports more fine-grained reclaim\nfor being able to reclaim target address range of the process.\nFor reclaim target range, you should use following format.\n\n\techo [addr] [size-byte] > /proc/pid/reclaim\nThe addr should be page-aligned.\n\nSo now reclaim konb's interface is following as.\n\necho file > /proc/pid/reclaim\n\treclaim file-backed pages only\necho anon > /proc/pid/reclaim\n\treclaim anonymous pages only\necho all > /proc/pid/reclaim\n\treclaim all pages\necho 0x100000 8K > /proc/pid/reclaim\n\treclaim pages in (0x100000 - 0x102000)\n\nChange-Id: I111131d31be1cfcfa246617b634a9a8bc4078098\nSigned-off-by: Minchan Kim <minchan@kernel.org>\nPatch-mainline: linux-mm @ 9 May 2013 08:39:01\n[vinmenon@codeaurora.org: trivial merge conflict fixes]\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/3dc5cb1496026b06e10459c8cacf2d70cbc16ce7"},{"sha":"a4f55fcd83a53f4d4c898b50c1f257a85dc1c68a","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"mm: process reclaim: vmpressure based process reclaim\n\nWith this patch, anon pages of incative tasks can be reclaimed,\ndepending on memory pressure. Memory pressure is detected\nusing vmpressure events. 'N' best tasks in terms of anon\nsize is selected and pages proportional to their tasksize\nis reclaimed. The total number of pages reclaimed at each\nrun of the swap work, can be tuned from userspace, the\ndefault being SWAP_CLUSTER_MAX * 32.\n\nThe patch also adds tracepoints to debug and tune the\nfeature.\n\necho 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim\nto enable the feature.\n\necho <pages> > /sys/module/process_reclaim/parameters/per_swap_size,\nto set the number of pages reclaimed in each scan.\n\n/sys/module/process_reclaim/parameters/reclaim_avg_efficiency, provides\nthe average efficiency (scan to reclaim ratio) of the algorithm.\n\n/sys/module/process_reclaim/parameters/swap_eff_win, to set the window\nperiod (in unit of number of times reclaim is triggered) to detect\nlow efficiency runs.\n\n/sys/module/process_reclaim/parameters/swap_opt_eff, to set the optimal\nefficiency threshold for low efficiency detection.\n\nChange-Id: I895986f10c997d1715761eaaadc4bbbee60db9d2\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/a4f55fcd83a53f4d4c898b50c1f257a85dc1c68a"},{"sha":"bdd433027b3a924cd06e279c2555e532b977d511","author":{"email":"c0c0c8857ed6ec93282de3ee9d47e224acf995af@kernel.org","name":"Shaohua Li"},"message":"atomic: implement generic atomic_dec_if_positive()\n\nThe x86 implementation of atomic_dec_if_positive is quite generic, so make\nit available to all architectures.\n\nThis is needed for \"swap: add a simple detector for inappropriate swapin\nreadahead\".\n\n[akpm@linux-foundation.org: do the \"#define foo foo\" trick in the conventional manner]\nSigned-off-by: Shaohua Li <shli@fusionio.com>\nCc: Stephen Rothwell <sfr@canb.auug.org.au>\nCc: \"David S. Miller\" <davem@davemloft.net>\nCc: Rik van Riel <riel@redhat.com>\nCc: Ingo Molnar <mingo@elte.hu>\nCc: Thomas Gleixner <tglx@linutronix.de>\nCc: \"H. Peter Anvin\" <hpa@zytor.com>\nCc: Benjamin Herrenschmidt <benh@kernel.crashing.org>\nCc: Michal Simek <monstr@monstr.eu>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\nChange-Id: I5c122183bc1a2e4747656c241700e8f25564f47f","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/bdd433027b3a924cd06e279c2555e532b977d511"},{"sha":"8ace8c3e02ce25d038fb26caece59f7ac7f9a27a","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"mm: process_reclaim: do not iterate over stale task structs\n\nswap_fn iterates through the threads of selected tasks after\na rcu_read_unlock which is wrong. But we can't extend the\nrcu_read_lock since it will result in severe performance\nissues. So better avoid iterating over the threads. Just\nlock the group leader and use it further.\n\nChange-Id: I36269b1b6619315f33f6f3b49ec73571a66796f2\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/8ace8c3e02ce25d038fb26caece59f7ac7f9a27a"},{"sha":"5227cfea14d6234d6c09d4f0e4c782f63a07e18d","author":{"email":"5b23f8226e886b22344fc642373ea657dd596b63@linux.vnet.ibm.com","name":"Srivatsa S. Bhat"},"message":"CPU hotplug: Provide lockless versions of callback registration functions\n\n(cherry pick from commit 93ae4f978ca7f26d17df915ac7afc919c1dd0353)\n\nThe following method of CPU hotplug callback registration is not safe\ndue to the possibility of an ABBA deadlock involving the cpu_add_remove_lock\nand the cpu_hotplug.lock.\n\n\tget_online_cpus();\n\n\tfor_each_online_cpu(cpu)\n\t\tinit_cpu(cpu);\n\n\tregister_cpu_notifier(&foobar_cpu_notifier);\n\n\tput_online_cpus();\n\nThe deadlock is shown below:\n\n          CPU 0                                         CPU 1\n          -----                                         -----\n\n   Acquire cpu_hotplug.lock\n   [via get_online_cpus()]\n\n                                              CPU online/offline operation\n                                              takes cpu_add_remove_lock\n                                              [via cpu_maps_update_begin()]\n\n   Try to acquire\n   cpu_add_remove_lock\n   [via register_cpu_notifier()]\n\n                                              CPU online/offline operation\n                                              tries to acquire cpu_hotplug.lock\n                                              [via cpu_hotplug_begin()]\n\n                            *** DEADLOCK! ***\n\nThe problem here is that callback registration takes the locks in one order\nwhereas the CPU hotplug operations take the same locks in the opposite order.\nTo avoid this issue and to provide a race-free method to register CPU hotplug\ncallbacks (along with initialization of already online CPUs), introduce new\nvariants of the callback registration APIs that simply register the callbacks\nwithout holding the cpu_add_remove_lock during the registration. That way,\nwe can avoid the ABBA scenario. However, we will need to hold the\ncpu_add_remove_lock throughout the entire critical section, to protect updates\nto the callback/notifier chain.\n\nThis can be achieved by writing the callback registration code as follows:\n\n\tcpu_maps_update_begin(); [ or cpu_notifier_register_begin(); see below ]\n\n\tfor_each_online_cpu(cpu)\n\t\tinit_cpu(cpu);\n\n\t/* This doesn't take the cpu_add_remove_lock */\n\t__register_cpu_notifier(&foobar_cpu_notifier);\n\n\tcpu_maps_update_done();  [ or cpu_notifier_register_done(); see below ]\n\nNote that we can't use get_online_cpus() here instead of cpu_maps_update_begin()\nbecause the cpu_hotplug.lock is dropped during the invocation of CPU_POST_DEAD\nnotifiers, and hence get_online_cpus() cannot provide the necessary\nsynchronization to protect the callback/notifier chains against concurrent\nreads and writes. On the other hand, since the cpu_add_remove_lock protects\nthe entire hotplug operation (including CPU_POST_DEAD), we can use\ncpu_maps_update_begin/done() to guarantee proper synchronization.\n\nAlso, since cpu_maps_update_begin/done() is like a super-set of\nget/put_online_cpus(), the former naturally protects the critical sections\nfrom concurrent hotplug operations.\n\nSince the names cpu_maps_update_begin/done() don't make much sense in CPU\nhotplug callback registration scenarios, we'll introduce new APIs named\ncpu_notifier_register_begin/done() and map them to cpu_maps_update_begin/done().\n\nIn summary, introduce the lockless variants of un/register_cpu_notifier() and\nalso export the cpu_notifier_register_begin/done() APIs for use by modules.\nThis way, we provide a race-free way to register hotplug callbacks as well as\nperform initialization for the CPUs that are already online.\n\nCc: Thomas Gleixner <tglx@linutronix.de>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Ingo Molnar <mingo@kernel.org>\nAcked-by: Oleg Nesterov <oleg@redhat.com>\nAcked-by: Toshi Kani <toshi.kani@hp.com>\nReviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>\nSigned-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>\nSigned-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>\nBug: 24810447\nChange-Id: I5f85fcb5cfaa5f5f04a29eefc361851e9c345a99","distinct":true,"url":"https://api.github.com/repos/xsynergy510x/android_kernel_samsung_jf/commits/5227cfea14d6234d6c09d4f0e4c782f63a07e18d"}]}