{"push_id":887971291,"size":16,"distinct_size":16,"ref":"refs/heads/valex","head":"5c9b262d6b2c31dce09615ddde435646cbb24402","before":"2b67789dc1500ace2218f8e206f1ef97445bb0fe","commits":[{"sha":"ed121f0af1dbfeb1953396691d342ca606031752","author":{"email":"5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","name":"Viresh Kumar"},"message":"workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues\n\nAdapted for 3.4 from lsk-v3.10\n\nWorkqueues can be performance or power-oriented. Currently, most workqueues are\nbound to the CPU they were created on. This gives good performance (due to cache\neffects) at the cost of potentially waking up otherwise idle cores (Idle from\nscheduler's perspective. Which may or may not be physically idle) just to\nprocess some work. To save power, we can allow the work to be rescheduled on a\ncore that is already awake.\n\nWorkqueues created with the WQ_UNBOUND flag will allow some power savings.\nHowever, we don't change the default behaviour of the system.  To enable\npower-saving behaviour, a new config option CONFIG_WQ_POWER_EFFICIENT needs to\nbe turned on. This option can also be overridden by the\nworkqueue.power_efficient boot parameter.\n\ntj: Updated config description and comments.  Renamed\n    CONFIG_WQ_POWER_EFFICIENT to CONFIG_WQ_POWER_EFFICIENT_DEFAULT.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nReviewed-by: Amit Kucheria <amit.kucheria@linaro.org>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n(cherry picked from commit cee22a15052faa817e3ec8985a28154d3fabc7aa)\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/ed121f0af1dbfeb1953396691d342ca606031752"},{"sha":"05c8b3a8fbb8ad2fad3f73ea09f36005568df2b2","author":{"email":"5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","name":"Viresh Kumar"},"message":"workqueue: Add system wide power_efficient workqueues\n\nAdapted for 3.4 from lsk-v3.10\n\nThis patch adds system wide workqueues aligned towards power saving. This is\ndone by allocating them with WQ_UNBOUND flag if 'wq_power_efficient' is set to\n'true'.\n\ntj: updated comments a bit.\n\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n(cherry picked from commit 0668106ca3865ba945e155097fb042bf66d364d3)\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/05c8b3a8fbb8ad2fad3f73ea09f36005568df2b2"},{"sha":"42d603d4634c848c2a82f01733a0ffa936333bd3","author":{"email":"5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","name":"Viresh Kumar"},"message":"block: queue work on power efficient wq\n\nAdapted for 3.4 from lsk-v3.10\n\nBlock layer uses workqueues for multiple purposes. There is no real dependency\nof scheduling these on the cpu which scheduled them.\n\nOn a idle system, it is observed that and idle cpu wakes up many times just to\nservice this work. It would be better if we can schedule it on a cpu which the\nscheduler believes to be the most appropriate one.\n\nThis patch replaces normal workqueues with power efficient versions.\n\nCc: Jens Axboe <axboe@kernel.dk>\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n(cherry picked from commit 695588f9454bdbc7c1a2fbb8a6bfdcfba6183348)\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/42d603d4634c848c2a82f01733a0ffa936333bd3"},{"sha":"628082722855faf2e2d6aea31f4bb916868b2bc3","author":{"email":"5ff32272b3d9f86512eddc8e0af523fc6f7924e5@linaro.org","name":"Viresh Kumar"},"message":"PHYLIB: queue work on system_power_efficient_wq\n\nAdapted for 3.4 from lsk-v3.10\n\nPhylib uses workqueues for multiple purposes. There is no real dependency of\nscheduling these on the cpu which scheduled them.\n\nOn a idle system, it is observed that and idle cpu wakes up many times just to\nservice this work. It would be better if we can schedule it on a cpu which the\nscheduler believes to be the most appropriate one.\n\nThis patch replaces system_wq with system_power_efficient_wq for PHYLIB.\n\nCc: David S. Miller <davem@davemloft.net>\nCc: netdev@vger.kernel.org\nSigned-off-by: Viresh Kumar <viresh.kumar@linaro.org>\nAcked-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n(cherry picked from commit bbb47bdeae756f04b896b55b51f230f3eb21f207)\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/628082722855faf2e2d6aea31f4bb916868b2bc3"},{"sha":"8a7a3d41b122ac5735a0b7be3f3217d3495ed1ea","author":{"email":"b51b9a92386687a9ac927cebfa0f978adeb8cea5@linaro.org","name":"Mark Brown"},"message":"ASoC: pcm: Use the power efficient workqueue for delayed powerdown\n\nAdapted for 3.4 from lsk-v3.10\n\nThere is no need to use a normal per-CPU workqueue for delayed power downs\nas they're not timing or performance critical and waking up a core for them\nwould defeat some of the point.\n\nSigned-off-by: Mark Brown <broonie@linaro.org>\nReviewed-by: Viresh Kumar <viresh.kumar@linaro.org>\n(cherry picked from commit d4e1a73acd4e894f8332f2093bceaef585cfab67)\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/8a7a3d41b122ac5735a0b7be3f3217d3495ed1ea"},{"sha":"5edb49e4f7ddf3b9b35dbce2232ed552313f9761","author":{"email":"b51b9a92386687a9ac927cebfa0f978adeb8cea5@linaro.org","name":"Mark Brown"},"message":"regulator: core: Use the power efficient workqueue for delayed powerdown\n\nThere is no need to use a normal per-CPU workqueue for delayed power downs\nas they're not timing or performance critical and waking up a core for them\nwould defeat some of the point.\n\nSigned-off-by: Mark Brown <broonie@linaro.org>\nReviewed-by: Viresh Kumar <viresh.kumar@linaro.org>\nAcked-by: Liam Girdwood <liam.r.girdwood@intel.com>\n(cherry picked from commit 070260f07c7daec311f2466eb9d1df475d5a46f8)\n\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/5edb49e4f7ddf3b9b35dbce2232ed552313f9761"},{"sha":"c0ea8e8128b43d4fd628bc2adbda35bc9a1a6854","author":{"email":"b51b9a92386687a9ac927cebfa0f978adeb8cea5@linaro.org","name":"Mark Brown"},"message":"ASoC: jack: Use power efficient workqueue\n\nThe accessory detect debounce work is not performance sensitive so let\nthe scheduler run it wherever is most efficient rather than in a per CPU\nworkqueue by using the system power efficient workqueue.\n\nSigned-off-by: Mark Brown <broonie@linaro.org>\nAcked-by: Viresh Kumar <viresh.kumar@linaro.org>\n(cherry picked from commit e6058aaadcd473e5827720dc143af56aabbeecc7)\n\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/c0ea8e8128b43d4fd628bc2adbda35bc9a1a6854"},{"sha":"cf2c76ce7da931351177bc40759e9c6b32bbce1b","author":{"email":"611d453c03d02ce713e72b62ff6a901ea7e9cd77@gmail.com","name":"Sasha Levin"},"message":"hashtable: introduce a small and naive hashtable\n\nThis hashtable implementation is using hlist buckets to provide a simple\nhashtable to prevent it from getting reimplemented all over the kernel.\n\nSigned-off-by: Sasha Levin <levinsasha928@gmail.com>\n[ Merging this now, so that subsystems can start applying Sasha's\n  patches that use this   - Linus ]\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/cf2c76ce7da931351177bc40759e9c6b32bbce1b"},{"sha":"973e8dc042fcb1caba0ce2056ac93b9eccfa8a24","author":{"email":"e642b69ed2fc111e09ffdc37feb733a52253340d@oracle.com","name":"Sasha Levin"},"message":"workqueue: use new hashtable implementation\n\nSwitch workqueues to use the new hashtable implementation. This reduces the\namount of generic unrelated code in the workqueues.\n\nThis patch depends on d9b482c (\"hashtable: introduce a small and naive\nhashtable\") which was merged in v3.6.\n\nAcked-by: Tejun Heo <tj@kernel.org>\nSigned-off-by: Sasha Levin <sasha.levin@oracle.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n\nConflicts:\n\n\tkernel/workqueue.c\n\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>\n\nConflicts:\n\n\tkernel/workqueue.c\n\nConflicts:\n\tkernel/workqueue.c","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/973e8dc042fcb1caba0ce2056ac93b9eccfa8a24"},{"sha":"19b6410ab07d2b2637c184ab27f116ebe701297f","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"workqueue: fix find_worker_executing_work() brekage from hashtable conversion\n\n42f8570f43 (\"workqueue: use new hashtable implementation\") incorrectly\nmade busy workers hashed by the pointer value of worker instead of\nwork.  This broke find_worker_executing_work() which in turn broke a\nlot of fundamental operations of workqueue - non-reentrancy and\nflushing among others.  The flush malfunction triggered warning in\ndisk event code in Fengguang's automated test.\n\n write_dev_root_ (3265) used greatest stack depth: 2704 bytes left\n ------------[ cut here ]------------\n WARNING: at /c/kernel-tests/src/stable/block/genhd.c:1574 disk_clear_events+0x\\\ncf/0x108()\n Hardware name: Bochs\n Modules linked in:\n Pid: 3328, comm: ata_id Not tainted 3.7.0-01930-gbff6343 #1167\n Call Trace:\n  [<ffffffff810997c4>] warn_slowpath_common+0x83/0x9c\n  [<ffffffff810997f7>] warn_slowpath_null+0x1a/0x1c\n  [<ffffffff816aea77>] disk_clear_events+0xcf/0x108\n  [<ffffffff811bd8be>] check_disk_change+0x27/0x59\n  [<ffffffff822e48e2>] cdrom_open+0x49/0x68b\n  [<ffffffff81ab0291>] idecd_open+0x88/0xb7\n  [<ffffffff811be58f>] __blkdev_get+0x102/0x3ec\n  [<ffffffff811bea08>] blkdev_get+0x18f/0x30f\n  [<ffffffff811bebfd>] blkdev_open+0x75/0x80\n  [<ffffffff8118f510>] do_dentry_open+0x1ea/0x295\n  [<ffffffff8118f5f0>] finish_open+0x35/0x41\n  [<ffffffff8119c720>] do_last+0x878/0xa25\n  [<ffffffff8119c993>] path_openat+0xc6/0x333\n  [<ffffffff8119cf37>] do_filp_open+0x38/0x86\n  [<ffffffff81190170>] do_sys_open+0x6c/0xf9\n  [<ffffffff8119021e>] sys_open+0x21/0x23\n  [<ffffffff82c1c3d9>] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-by: Fengguang Wu <fengguang.wu@intel.com>\nCc: Sasha Levin <sasha.levin@oracle.com>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/19b6410ab07d2b2637c184ab27f116ebe701297f"},{"sha":"a50c46ab08c79f496c7424ddefaa87368e6da3c3","author":{"email":"a8167b9d27aca9c6624754deb52c4c6420eded04@huawei.com","name":"Li Zefan"},"message":"cgroup: use new hashtable implementation\n\nSwitch cgroup to use the new hashtable implementation. No functional changes.\n\nSigned-off-by: Li Zefan <lizefan@huawei.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>\n\nConflicts:\n\n\tkernel/cgroup.c\n\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/a50c46ab08c79f496c7424ddefaa87368e6da3c3"},{"sha":"844304b2f775485d693191f8594ceaffecd96c38","author":{"email":"e642b69ed2fc111e09ffdc37feb733a52253340d@oracle.com","name":"Sasha Levin"},"message":"block,elevator: use new hashtable implementation\n\nSwitch elevator to use the new hashtable implementation. This reduces the\namount of generic unrelated code in the elevator.\n\nThis also removes the dymanic allocation of the hash table. The size of the table is\nconstant so there's no point in paying the price of an extra dereference when accessing\nit.\n\nThis patch depends on d9b482c (\"hashtable: introduce a small and naive\nhashtable\") which was merged in v3.6.\n\nSigned-off-by: Sasha Levin <sasha.levin@oracle.com>\nSigned-off-by: Jens Axboe <axboe@kernel.dk>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/844304b2f775485d693191f8594ceaffecd96c38"},{"sha":"3afd31e6ae8a46d352ddf50c47441ff444af563d","author":{"email":"611d453c03d02ce713e72b62ff6a901ea7e9cd77@gmail.com","name":"Sasha Levin"},"message":"mm/ksm.c: use new hashtable implementation\n\nSwitch ksm to use the new hashtable implementation.  This reduces the\namount of generic unrelated code in the ksm module.\n\nSigned-off-by: Sasha Levin <levinsasha928@gmail.com>\nAcked-by: Hugh Dickins <hughd@google.com>\nCc: Michal Hocko <mhocko@suse.cz>\nCc: Konstantin Khlebnikov <khlebnikov@openvz.org>\nCc: Mel Gorman <mgorman@suse.de>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\nSigned-off-by: Luis Cruz <ljc2491@gmail.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/3afd31e6ae8a46d352ddf50c47441ff444af563d"},{"sha":"333798b5c522bf55fa6b7994bbfe817b5690756a","author":{"email":"9edab3d8932dbb8f20eb55cd8199c20e7fb56c12@oracle.com","name":"Jeff Liu"},"message":"binfmt_elf.c: use get_random_int() to fix entropy depleting\n\nChanges:\n--------\nv4->v3:\n- s/random_stack_user()/get_atrandom_bytes()/\n- Move this function to ahead of its use to avoid the predeclaration.\n\nv3->v2:\n- Tweak code comments of random_stack_user().\n- Remove redundant bits mask and shift upon the random variable.\n\nv2->v1:\n- Fix random copy to check up buffer length that are not 4-byte multiples.\n\nv3 can be found at:\nhttp://www.spinics.net/lists/linux-fsdevel/msg59597.html\nv2 can be found at:\nhttp://www.spinics.net/lists/linux-fsdevel/msg59418.html\nv1 can be found at:\nhttp://www.spinics.net/lists/linux-fsdevel/msg59128.html\n\nThanks,\n-Jeff\n\nEntropy is quickly depleted under normal operations like ls(1), cat(1),\netc...  between 2.6.30 to current mainline, for instance:\n\n$ cat /proc/sys/kernel/random/entropy_avail\n3428\n$ cat /proc/sys/kernel/random/entropy_avail\n2911\n$cat /proc/sys/kernel/random/entropy_avail\n2620\n\nWe observed this problem has been occurring since 2.6.30 with\nfs/binfmt_elf.c: create_elf_tables()->get_random_bytes(), introduced by\nf06295b44c296c8f (\"ELF: implement AT_RANDOM for glibc PRNG seeding\").\n\n/*\n * Generate 16 random bytes for userspace PRNG seeding.\n */\nget_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));\n\nThe patch introduces a wrapper around get_random_int() which has lower\noverhead than calling get_random_bytes() directly.\n\nWith this patch applied:\n$ cat /proc/sys/kernel/random/entropy_avail\n2731\n$ cat /proc/sys/kernel/random/entropy_avail\n2802\n$ cat /proc/sys/kernel/random/entropy_avail\n2878\n\nAnalyzed by John Sobecki.\n\nSigned-off-by: Jie Liu <jeff.liu@oracle.com>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: Al Viro <viro@zeniv.linux.org.uk>\nCc: Andreas Dilger <aedilger@gmail.com>\nCc: Alan Cox <alan@linux.intel.com>\nCc: Arnd Bergmann <arnn@arndb.de>\nCc: John Sobecki <john.sobecki@oracle.com>\nCc: James Morris <james.l.morris@oracle.com>\nCc: Jakub Jelinek <jakub@redhat.com>\nCc: Ted Ts'o <tytso@mit.edu>\nCc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\nCc: Kees Cook <keescook@chromium.org>\nCc: Ulrich Drepper <drepper@redhat.com>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/333798b5c522bf55fa6b7994bbfe817b5690756a"},{"sha":"49d1f277fb79e314367de2345c9becc57c92c423","author":{"email":"c0f122cd185966be6dba33f6e0bc5de2dbbd0b33@codeaurora.org","name":"Ashwin Chaugule"},"message":"Optimized ARM RWSEM algorithm\n\nRWSEM implementation for ARM using atomic functions.\nHeavily based on arch/sh/include/asm/rwsem.h\n\nSigned-off-by: Ashwin Chaugule <ashwinc@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/49d1f277fb79e314367de2345c9becc57c92c423"},{"sha":"5c9b262d6b2c31dce09615ddde435646cbb24402","author":{"email":"4b76f4633775802b14d62988517a544ce3d4b758@gmail.com","name":"Andrei F"},"message":"lib: Update RWSEM to Linux 3.10\n\nSquashed commit of the following:\n\ncommit 28f9a942e4e1578c0e26e8211ba49bdf520de95c\nAuthor: Davidlohr Bueso <davidlohr.bueso@hp.com>\nDate:   Tue May 7 06:46:02 2013 -0700\n\n    rwsem: no need for explicit signed longs\n\n    Change explicit \"signed long\" declarations into plain \"long\" as suggested\n    by Peter Hurley.\n\n    Signed-off-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Reviewed-by: Michel Lespinasse <walken@google.com>\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 353ad88b6af95bc7bb127b3b5b1cfa36c72a7b67\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:46:00 2013 -0700\n\n    rwsem: do not block readers at head of queue if other readers are active\n\n    This change fixes a race condition where a reader might determine it\n    needs to block, but by the time it acquires the wait_lock the rwsem has\n    active readers and no queued waiters.\n\n    In this situation the reader can run in parallel with the existing\n    active readers; it does not need to block until the active readers\n    complete.\n\n    Thanks to Peter Hurley for noticing this possible race.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit e9149aa93e4e6919da4fe9e77a27f9c6a0159463\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:59 2013 -0700\n\n    rwsem: implement support for write lock stealing on the fastpath\n\n    When we decide to wake up readers, we must first grant them as many read\n    locks as necessary, and then actually wake up all these readers.  But in\n    order to know how many read shares to grant, we must first count the\n    readers at the head of the queue.  This might take a while if there are\n    many readers, and we want to be protected against a writer stealing the\n    lock while we're counting.  To that end, we grant the first reader lock\n    before counting how many more readers are queued.\n\n    We also require some adjustments to the wake_type semantics.\n\n    RWSEM_WAKE_NO_ACTIVE used to mean that we had found the count to be\n    RWSEM_WAITING_BIAS, in which case the rwsem was known to be free as\n    nobody could steal it while we hold the wait_lock.  This doesn't make\n    sense once we implement fastpath write lock stealing, so we now use\n    RWSEM_WAKE_ANY in that case.\n\n    Similarly, when rwsem_down_write_failed found that a read lock was\n    active, it would use RWSEM_WAKE_READ_OWNED which signalled that new\n    readers could be woken without checking first that the rwsem was\n    available.  We can't do that anymore since the existing readers might\n    release their read locks, and a writer could steal the lock before we\n    wake up additional readers.  So, we have to use a new RWSEM_WAKE_READERS\n    value to indicate we only want to wake readers, but we don't currently\n    hold any read lock.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 20addabcb540eb4b4e11d7e8af037543767e081d\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:58 2013 -0700\n\n    rwsem: simplify __rwsem_do_wake\n\n    This is mostly for cleanup value:\n\n    - We don't need several gotos to handle the case where the first\n      waiter is a writer. Two simple tests will do (and generate very\n      similar code).\n\n    - In the remainder of the function, we know the first waiter is a reader,\n      so we don't have to double check that. We can use do..while loops\n      to iterate over the readers to wake (generates slightly better code).\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit e56c8eea2628841a06a2420e2c6ca8b8c6bd4434\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:57 2013 -0700\n\n    rwsem: skip initial trylock in rwsem_down_write_failed\n\n    We can skip the initial trylock in rwsem_down_write_failed() if there\n    are known active lockers already, thus saving one likely-to-fail\n    cmpxchg.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Acked-by: Rik van Riel <riel@redhat.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 286040cc550df96bef6e97a5bc0231ded9a0187b\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:56 2013 -0700\n\n    rwsem: avoid taking wait_lock in rwsem_down_write_failed\n\n    In rwsem_down_write_failed(), if there are active locks after we wake up\n    (i.e.  the lock got stolen from us), skip taking the wait_lock and go\n    back to sleep immediately.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Acked-by: Rik van Riel <riel@redhat.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 6c7229b31a4c099157242c58f5d33ce728daff4b\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:55 2013 -0700\n\n    rwsem: use cmpxchg for trying to steal write lock\n\n    Using rwsem_atomic_update to try stealing the write lock forced us to\n    undo the adjustment in the failure path.  We can have simpler and faster\n    code by using cmpxchg instead.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Acked-by: Rik van Riel <riel@redhat.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 85dcaeae08b5738f8ea0b08734ab97e57bb9e8e2\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:54 2013 -0700\n\n    rwsem: more agressive lock stealing in rwsem_down_write_failed\n\n    Some small code simplifications can be achieved by doing more agressive\n    lock stealing:\n\n    - When rwsem_down_write_failed() notices that there are no active locks\n      (and thus no thread to wake us if we decided to sleep), it used to wake\n      the first queued process. However, stealing the lock is also sufficient\n      to deal with this case, so we don't need this check anymore.\n\n    - In try_get_writer_sem(), we can steal the lock even when the first waiter\n      is a reader. This is correct because the code path that wakes readers is\n      protected by the wait_lock. As to the performance effects of this change,\n      they are expected to be minimal: readers are still granted the lock\n      (rather than having to acquire it themselves) when they reach the front\n      of the wait queue, so we have essentially the same behavior as in\n      rwsem-spinlock.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 082a2e9c40e01d70c59ca4e3a9b552b81d573332\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:53 2013 -0700\n\n    rwsem: simplify rwsem_down_write_failed\n\n    When waking writers, we never grant them the lock - instead, they have\n    to acquire it themselves when they run, and remove themselves from the\n    wait_list when they succeed.\n\n    As a result, we can do a few simplifications in rwsem_down_write_failed():\n\n    - We don't need to check for !waiter.task since __rwsem_do_wake() doesn't\n      remove writers from the wait_list\n\n    - There is no point releaseing the wait_lock before entering the wait loop,\n      as we will need to reacquire it immediately. We can change the loop so\n      that the lock is always held at the start of each loop iteration.\n\n    - We don't need to get a reference on the task structure, since the task\n      is responsible for removing itself from the wait_list. There is no risk,\n      like in the rwsem_down_read_failed() case, that a task would wake up and\n      exit (thus destroying its task structure) while __rwsem_do_wake() is\n      still running - wait_lock protects against that.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 6b3306dccd59d5dcf22e55a27827bccf51a796e1\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:52 2013 -0700\n\n    rwsem: simplify rwsem_down_read_failed\n\n    When trying to acquire a read lock, the RWSEM_ACTIVE_READ_BIAS\n    adjustment doesn't cause other readers to block, so we never have to\n    worry about waking them back after canceling this adjustment in\n    rwsem_down_read_failed().\n\n    We also never want to steal the lock in rwsem_down_read_failed(), so we\n    don't have to grab the wait_lock either.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit c6b315c32d1ffbb33c75ab5e0f8ee27c89d206c4\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:51 2013 -0700\n\n    rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed\n\n    Remove the rwsem_down_failed_common function and replace it with two\n    identical copies of its code in rwsem_down_{read,write}_failed.\n\n    This is because we want to make different optimizations in\n    rwsem_down_{read,write}_failed; we are adding this pure-duplication\n    step as a separate commit in order to make it easier to check the\n    following steps.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 7d2869248ccd7971fc1b79e4bf22cb4be446faf4\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:50 2013 -0700\n\n    rwsem: shorter spinlocked section in rwsem_down_failed_common()\n\n    This change reduces the size of the spinlocked and TASK_UNINTERRUPTIBLE\n    sections in rwsem_down_failed_common():\n\n    - We only need the sem->wait_lock to insert ourselves on the wait_list;\n      the waiter node can be prepared outside of the wait_lock.\n\n    - The task state only needs to be set to TASK_UNINTERRUPTIBLE immediately\n      before checking if we actually need to sleep; it doesn't need to protect\n      the entire function.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 8c163f8ddf5c0bd018706dbdd44fb96a073401d0\nAuthor: Michel Lespinasse <walken@google.com>\nDate:   Tue May 7 06:45:49 2013 -0700\n\n    rwsem: make the waiter type an enumeration rather than a bitmask\n\n    We are not planning to add some new waiter flags, so we can convert the\n    waiter type into an enumeration.\n\n    Background: David Howells suggested I do this back when I tried adding\n    a new waiter type for unfair readers. However, I believe the cleanup\n    applies regardless of that use case.\n\n    Signed-off-by: Michel Lespinasse <walken@google.com>\n    Reviewed-by: Rik van Riel <riel@redhat.com>\n    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>\n    Acked-by: Davidlohr Bueso <davidlohr.bueso@hp.com>\n    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n\ncommit 9a126edbed8ccfedda04d5c3fe256cd139d4bcca\nAuthor: Alex Shi <alex.shi@intel.com>\nDate:   Tue Feb 5 21:11:55 2013 +0800\n\n    rwsem: Implement writer lock-stealing for better scalability\n\n    Commit 5a505085f043 (\"mm/rmap: Convert the struct anon_vma::mutex\n    to an rwsem\") changed struct anon_vma::mutex to an rwsem, which\n    caused aim7 fork_test performance to drop by 50%.\n\n    Yuanhan Liu did the following excellent analysis:\n\n        https://lkml.org/lkml/2013/1/29/84\n\n    and found that the regression is caused by strict, serialized,\n    FIFO sequential write-ownership of rwsems. Ingo suggested\n    implementing opportunistic lock-stealing for the front writer\n    task in the waitqueue.\n\n    Yuanhan Liu implemented lock-stealing for spinlock-rwsems,\n    which indeed recovered much of the regression - confirming\n    the analysis that the main factor in the regression was the\n    FIFO writer-fairness of rwsems.\n\n    In this patch we allow lock-stealing to happen when the first\n    waiter is also writer. With that change in place the\n    aim7 fork_test performance is fully recovered on my\n    Intel NHM EP, NHM EX, SNB EP 2S and 4S test-machines.\n\n    Reported-by: lkp@linux.intel.com\n    Reported-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\n    Signed-off-by: Alex Shi <alex.shi@intel.com>\n    Cc: David Howells <dhowells@redhat.com>\n    Cc: Michel Lespinasse <walken@google.com>\n    Cc: Linus Torvalds <torvalds@linux-foundation.org>\n    Cc: Andrew Morton <akpm@linux-foundation.org>\n    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>\n    Cc: Anton Blanchard <anton@samba.org>\n    Cc: Arjan van de Ven <arjan@linux.intel.com>\n    Cc: paul.gortmaker@windriver.com\n    Link: https://lkml.org/lkml/2013/1/29/84\n    Link: http://lkml.kernel.org/r/1360069915-31619-1-git-send-email-alex.shi@intel.com\n    [ Small stylistic fixes, updated changelog. ]\n    Signed-off-by: Ingo Molnar <mingo@kernel.org>\n\ncommit 77302ff69a93cfba32aaee98d2bb864ba8886e40\nAuthor: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nDate:   Fri Feb 1 18:59:16 2013 +0800\n\n    rwsem-spinlock: Implement writer lock-stealing for better scalability\n\n    We (Linux Kernel Performance project) found a regression\n    introduced by commit:\n\n      5a505085f043 mm/rmap: Convert the struct anon_vma::mutex to an rwsem\n\n    which converted all anon_vma::mutex locks rwsem write locks.\n\n    The semantics are the same, but the behavioral difference is\n    quite huge in some cases. After investigating it we found the\n    root cause: mutexes support lock stealing while rwsems don't.\n\n    Here is the link for the detailed regression report:\n\n      https://lkml.org/lkml/2013/1/29/84\n\n    Ingo suggested adding write lock stealing to rwsems:\n\n        \"I think we should allow lock-steal between rwsem writers - that\n         will not hurt fairness as most rwsem fairness concerns relate to\n         reader vs. writer fairness\"\n\n    And here is the rwsem-spinlock version.\n\n    With this patch, we got a double performance increase in one\n    test box with following aim7 workfile:\n\n        FILESIZE: 1M\n        POOLSIZE: 10M\n        10 fork_test\n\n     /usr/bin/time output w/o patch                       /usr/bin/time_output with patch\n     -- Percent of CPU this job got: 369%                 Percent of CPU this job got: 537%\n     Voluntary context switches: 640595016                Voluntary context switches: 157915561\n\n    We got a 45% increase in CPU usage and saved about 3/4 voluntary context switches.\n\n    Reported-by: LKP project <lkp@linux.intel.com>\n    Suggested-by: Ingo Molnar <mingo@kernel.org>\n    Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\n    Cc: Alex Shi <alex.shi@intel.com>\n    Cc: David Howells <dhowells@redhat.com>\n    Cc: Michel Lespinasse <walken@google.com>\n    Cc: Linus Torvalds <torvalds@linux-foundation.org>\n    Cc: Andrew Morton <akpm@linux-foundation.org>\n    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>\n    Cc: Anton Blanchard <anton@samba.org>\n    Cc: Arjan van de Ven <arjan@linux.intel.com>\n    Cc: paul.gortmaker@windriver.com\n    Link: http://lkml.kernel.org/r/1359716356-23865-1-git-send-email-yuanhan.liu@linux.intel.com\n    Signed-off-by: Ingo Molnar <mingo@kernel.org>\n\ncommit 95f8b6683b3f83e40a8ab0d93a9d155954b64396\nAuthor: Andrei F <luxneb@gmail.com>\nDate:   Wed Aug 21 21:49:39 2013 +0400\n\n    ARM: rwsem: Update header from initial implementation\n\n    Cleanup due to:\n\n    c16a87ce063f79e0ec7d25ce2950e1bc6db03c72 rwsem: Cleanup includes\n    1c8ed640d918290ddc1de5ada02ef6686a733c9f rwsem: Move duplicate struct rwsem declaration to linux/rwsem.h\n    12249b34414dba7f386aadcf6be7ca36c6878300 rwsem: Move duplicate init macros and functions to linux/rwsem.h\n    41e5887fa39ab272d9266a09cbefdef270e28b93 rwsem: Unify the duplicate rwsem_is_locked() inlines\n    aac72277fda6ef788bb8d5deaa502ce9b9b6e472 rwsem: Move duplicate function prototypes to linux/rwsem.h","distinct":true,"url":"https://api.github.com/repos/sigma-1/valex_kernel_lt03wifi/commits/5c9b262d6b2c31dce09615ddde435646cbb24402"}]}