{"push_id":885307338,"size":6,"distinct_size":6,"ref":"refs/heads/cm-13.0","head":"1531a82c85ab105b5134857dd4c91e2e88421e42","before":"0b78b4263655a4522bc7e75bb23427e4efa8e0e6","commits":[{"sha":"617e06eb7cdfff2f22afad0caecc7da63dbee6f7","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"workqueue: make all workqueues non-reentrant\n\nBy default, each per-cpu part of a bound workqueue operates separately\nand a work item may be executing concurrently on different CPUs.  The\nbehavior avoids some cross-cpu traffic but leads to subtle weirdities\nand not-so-subtle contortions in the API.\n\n* There's no sane usefulness in allowing a single work item to be\n  executed concurrently on multiple CPUs.  People just get the\n  behavior unintentionally and get surprised after learning about it.\n  Most either explicitly synchronize or use non-reentrant/ordered\n  workqueue but this is error-prone.\n\n* flush_work() can't wait for multiple instances of the same work item\n  on different CPUs.  If a work item is executing on cpu0 and then\n  queued on cpu1, flush_work() can only wait for the one on cpu1.\n\n  Unfortunately, work items can easily cross CPU boundaries\n  unintentionally when the queueing thread gets migrated.  This means\n  that if multiple queuers compete, flush_work() can't even guarantee\n  that the instance queued right before it is finished before\n  returning.\n\n* flush_work_sync() was added to work around some of the deficiencies\n  of flush_work().  In addition to the usual flushing, it ensures that\n  all currently executing instances are finished before returning.\n  This operation is expensive as it has to walk all CPUs and at the\n  same time fails to address competing queuer case.\n\n  Incorrectly using flush_work() when flush_work_sync() is necessary\n  is an easy error to make and can lead to bugs which are difficult to\n  reproduce.\n\n* Similar problems exist for flush_delayed_work[_sync]().\n\nOther than the cross-cpu access concern, there's no benefit in\nallowing parallel execution and it's plain silly to have this level of\ncontortion for workqueue which is widely used from core code to\nextremely obscure drivers.\n\nThis patch makes all workqueues non-reentrant.  If a work item is\nexecuting on a different CPU when queueing is requested, it is always\nqueued to that CPU.  This guarantees that any given work item can be\nexecuting on one CPU at maximum and if a work item is queued and\nexecuting, both are on the same CPU.\n\nThe only behavior change which may affect workqueue users negatively\nis that non-reentrancy overrides the affinity specified by\nqueue_work_on().  On a reentrant workqueue, the affinity specified by\nqueue_work_on() is always followed.  Now, if the work item is\nexecuting on one of the CPUs, the work item will be queued there\nregardless of the requested affinity.  I've reviewed all workqueue\nusers which request explicit affinity, and, fortunately, none seems to\nbe crazy enough to exploit parallel execution of the same work item.\n\nThis adds an additional busy_hash lookup if the work item was\npreviously queued on a different CPU.  This shouldn't be noticeable\nunder any sane workload.  Work item queueing isn't a very\nhigh-frequency operation and they don't jump across CPUs all the time.\nIn a micro benchmark to exaggerate this difference - measuring the\ntime it takes for two work items to repeatedly jump between two CPUs a\nnumber (10M) of times with busy_hash table densely populated, the\ndifference was around 3%.\n\nWhile the overhead is measureable, it is only visible in pathological\ncases and the difference isn't huge.  This change brings much needed\nsanity to workqueue and makes its behavior consistent with timer.  I\nthink this is the right tradeoff to make.\n\nThis enables significant simplification of workqueue API.\nSimplification patches will follow.\n\nChange-Id: If75d4e2ca886df9e0b6e18801d421ee8d0c6bb83\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/617e06eb7cdfff2f22afad0caecc7da63dbee6f7"},{"sha":"2d4353a64fef58ba2dbac329793abfc41279e074","author":{"email":"85e533f2e78486213c4d69f71462342ec0c62734@redhat.com","name":"Mike Snitzer"},"message":"block: disable entropy contributions for nonrot devices\n\nClear QUEUE_FLAG_ADD_RANDOM in all block drivers that set\nQUEUE_FLAG_NONROT.\n\nHistorically, all block devices have automatically made entropy\ncontributions.  But as previously stated in commit e2e1a148 (\"block: add\nsysfs knob for turning off disk entropy contributions\"):\n    - On SSD disks, the completion times aren't as random as they\n      are for rotational drives. So it's questionable whether they\n      should contribute to the random pool in the first place.\n    - Calling add_disk_randomness() has a lot of overhead.\n\nThere are more reliable sources for randomness than non-rotational block\ndevices.  From a security perspective it is better to err on the side of\ncaution than to allow entropy contributions from unreliable \"random\"\nsources.\n\nSigned-off-by: Mike Snitzer <snitzer@redhat.com>\nSigned-off-by: Jens Axboe <axboe@fb.com>\n\nConflicts:\n\tdrivers/block/nbd.c\n\tdrivers/block/null_blk.c\n\tdrivers/block/nvme-core.c\n\tdrivers/block/rsxx/dev.c\n\tdrivers/block/skd_main.c\n\tdrivers/block/zram/zram_drv.c\n\tdrivers/md/bcache/super.c\n\tdrivers/s390/block/scm_blk.c\n\tdrivers/s390/block/xpram.c\n\nChange-Id: I733f051d20a48f2afce68b7113fd9f1261be430b","distinct":true,"url":"https://api.github.com/repos/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/2d4353a64fef58ba2dbac329793abfc41279e074"},{"sha":"d0b32d1680f006c9aeb32d901026cefdc70b8533","author":{"email":"5bf2c31a802732976706723e592169e08aa33ffd@yahoo.es","name":"Hein Tibosch"},"message":"lib/decompress.c add __init to decompress_method and data\n\nFix the warning:\n\n  WARNING: vmlinux.o(.text+0x14cfd8): Section mismatch in reference from the variable compressed_formats to the function .init.text:gunzip()\n  The function compressed_formats() references\n  the function __init gunzip().\n  etc..\n\nWithin decompress.c, compressed_formats[] needs 'a __initdata annotation',\nbecause some of it's data members refer to functions which will be\nunloaded after init.\n\nConsequently, its user decompress_method() will get the __init prefix.\n\nChange-Id: Icf48aef5b2e8d72a66a70e9426afc9c40495054d\nSigned-off-by: Hein Tibosch <hein_tibosch@yahoo.es>\nCc: Albin Tonnerre <albin.tonnerre@free-electrons.com>\nCc: Phillip Lougher <phillip@lougher.demon.co.uk>\nCc: \"H. Peter Anvin\" <hpa@zytor.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/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/d0b32d1680f006c9aeb32d901026cefdc70b8533"},{"sha":"59c3ee848e9fec1277ffb80419b75e1c38471ae5","author":{"email":"0674548f4d596393408a51d6287a76ebba2f42aa@kernel.org","name":"Yinghai Lu"},"message":"initramfs: support initramfs that is bigger than 2GiB\n\nNow with 64bit bzImage and kexec tools, we support ramdisk that size is\nbigger than 2g, as we could put it above 4G.\n\nFound compressed initramfs image could not be decompressed properly.  It\nturns out that image length is int during decompress detection, and it\nwill become < 0 when length is more than 2G.  Furthermore, during\ndecompressing len as int is used for inbuf count, that has problem too.\n\nChange len to long, that should be ok as on 32 bit platform long is\n32bits.\n\nTested with following compressed initramfs image as root with kexec.\n\tgzip, bzip2, xz, lzma, lzop, lz4.\nrun time for populate_rootfs():\n   size        name       Nehalem-EX  Westmere-EX  Ivybridge-EX\n 9034400256 root_img     :   26s           24s          30s\n 3561095057 root_img.lz4 :   28s           27s          27s\n 3459554629 root_img.lzo :   29s           29s          28s\n 3219399480 root_img.gz  :   64s           62s          49s\n 2251594592 root_img.xz  :  262s          260s         183s\n 2226366598 root_img.lzma:  386s          376s         277s\n 2901482513 root_img.bz2 :  635s          599s\n\nChange-Id: I959d03c7b5f3ac6ba45fdd32e94294ad2add8a66\nSigned-off-by: Yinghai Lu <yinghai@kernel.org>\nCc: \"H. Peter Anvin\" <hpa@zytor.com>\nCc: Ingo Molnar <mingo@elte.hu>\nCc: Rashika Kheria <rashika.kheria@gmail.com>\nCc: Josh Triplett <josh@joshtriplett.org>\nCc: Kyungsik Lee <kyungsik.lee@lge.com>\nCc: P J P <ppandit@redhat.com>\nCc: Al Viro <viro@zeniv.linux.org.uk>\nCc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>\nCc: \"Daniel M. Weeks\" <dan@danweeks.net>\nCc: Alexandre Courbot <acourbot@nvidia.com>\nCc: Jan Beulich <JBeulich@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/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/59c3ee848e9fec1277ffb80419b75e1c38471ae5"},{"sha":"7159e352bd520528888808b1d54489640e29c76b","author":{"email":"0674548f4d596393408a51d6287a76ebba2f42aa@kernel.org","name":"Yinghai Lu"},"message":"initrd: fix lz4 decompress with initrd\n\nDuring testing initrd (>2G) support, find decompress/lz4 does not work\nwith initrd at all.\n\ndecompress_* should support:\n1. inbuf[]/outbuf[] for kernel preboot.\n2. inbuf[]/flush() for initramfs\n3. fill()/flush() for initrd.\n\nin the unlz4 does not handle case 3, as input len is passed as 0, and it\nfailed in first try.\n\nFix that add one extra if (fill) checking, and get out if EOF from the\nfill().\n\nChange-Id: I1dd64c8e788b71e43c90216e42e21d40fd9ffed9\nSigned-off-by: Yinghai Lu <yinghai@kernel.org>\nCc: Kyungsik Lee <kyungsik.lee@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/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/7159e352bd520528888808b1d54489640e29c76b"},{"sha":"1531a82c85ab105b5134857dd4c91e2e88421e42","author":{"email":"0f1ca2e3f3ec907196536fa6d4d8a8645c9b3795@gmail.com","name":"Quarx2k"},"message":"Update lmk","distinct":true,"url":"https://api.github.com/repos/CM-LG-MSM8226/android_kernel_lge_msm8226/commits/1531a82c85ab105b5134857dd4c91e2e88421e42"}]}