{"push_id":1457354092,"size":21,"distinct_size":21,"ref":"refs/heads/32.2.A.5.11","head":"2fa3c4e8c2731990578fcffcd66b6a076c14a77f","before":"c9f9e87f71984c7bae29bc95e51ca084d756c053","commits":[{"sha":"1ec6af5e32ccef8887487b6859846387e626d1d0","author":{"name":"franciscofranco","email":"0ac3193ff3d7b4e68ae404d59f776924e2be9ac9@gmail.com"},"message":"display: add a simple api to query the display state (on/off) at any point in time\n\nSigned-off-by: franciscofranco <franciscofranco.1990@gmail.com>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/1ec6af5e32ccef8887487b6859846387e626d1d0"},{"sha":"a6154c2e802ac030fe680a6c57fba6ea8125b12e","author":{"name":"Francisco Franco","email":"0ac3193ff3d7b4e68ae404d59f776924e2be9ac9@gmail.com"},"message":"[PORT/FPC1145] drivers: fingerprint: boost cpufreq on unlock\n\nTo reduce wake-up latency when using the fingerprint scanner we\nregister an input device and send a \"key press\" when the scanner\nis being used during screen off. This will boost the cpus through\ncpu-boost and reduce the screen on latency.\n\nGeneral idea \"stole\" from this commit https://github.com/sultanxda/android_kernel_oneplus_msm8996/commit/f19458566eeab8ffc287df3ba50a41697351dfbb\n\nSigned-off-by: Francisco Franco <franciscofranco.1990@gmail.com>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/a6154c2e802ac030fe680a6c57fba6ea8125b12e"},{"sha":"2bcba80fd33ac5fdaa48903a1fce03f125be4436","author":{"name":"Francisco Franco","email":"0ac3193ff3d7b4e68ae404d59f776924e2be9ac9@gmail.com"},"message":"[PORT/FPC1145] drivers: fingerprint: boost tasks to the big cores when the scanner is used\n\nSigned-off-by: Francisco Franco <franciscofranco.1990@gmail.com>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/2bcba80fd33ac5fdaa48903a1fce03f125be4436"},{"sha":"e3801cb5bd91a21682f84ec1b758191f0c5c4e37","author":{"name":"Linus Torvalds","email":"ead7104581934751970e9decb2db5deb20a9e407@linux-foundation.org"},"message":"mm: remove gup_flags FOLL_WRITE games from __get_user_pages()\n\ncommit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 upstream.\n\nThis is an ancient bug that was actually attempted to be fixed once\n(badly) by me eleven years ago in commit 4ceb5db9757a (\"Fix\nget_user_pages() race for write access\") but that was then undone due to\nproblems on s390 by commit f33ea7f404e5 (\"fix get_user_pages bug\").\n\nIn the meantime, the s390 situation has long been fixed, and we can now\nfix it by checking the pte_dirty() bit properly (and do it better).  The\ns390 dirty bit was implemented in abf09bed3cce (\"s390/mm: implement\nsoftware dirty bits\") which made it into v3.9.  Earlier kernels will\nhave to look at the page state itself.\n\nAlso, the VM has become more scalable, and what used a purely\ntheoretical race back then has become easier to trigger.\n\nTo fix it, we introduce a new internal FOLL_COW flag to mark the \"yes,\nwe already did a COW\" rather than play racy games with FOLL_WRITE that\nis very fundamental, and then use the pte dirty flag to validate that\nthe FOLL_COW flag is still valid.\n\nChange-Id: I83a08fd1f9c8928c0ed95286f737c27cc7811576\nReported-and-tested-by: Phil \"not Paul\" Oester <kernel@linuxace.com>\nAcked-by: Hugh Dickins <hughd@google.com>\nReviewed-by: Michal Hocko <mhocko@suse.com>\nCc: Andy Lutomirski <luto@kernel.org>\nCc: Kees Cook <keescook@chromium.org>\nCc: Oleg Nesterov <oleg@redhat.com>\nCc: Willy Tarreau <w@1wt.eu>\nCc: Nick Piggin <npiggin@gmail.com>\nCc: Greg Thelen <gthelen@google.com>\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n[wt: s/gup.c/memory.c; s/follow_page_pte/follow_page_mask;\n     s/faultin_page/__get_user_page]\nSigned-off-by: Willy Tarreau <w@1wt.eu>\nSigned-off-by: Paul Keith <javelinanddart@gmail.com>\nSigned-off-by: Francisco Franco <franciscofranco.1990@gmail.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/e3801cb5bd91a21682f84ec1b758191f0c5c4e37"},{"sha":"5ddba9e3077cba5606405555f3275041364937bc","author":{"name":"Tommy-Geenexus","email":"4ad1e7c13388d78ac01a12342c329880d5c18abd@gmail.com"},"message":"input: clearpad_core: tone down logging","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/5ddba9e3077cba5606405555f3275041364937bc"},{"sha":"5a335ea9ba2151cf0d8bab2a3fb807c942fe0b01","author":{"name":"Signed-off-by: angelsl","email":"8ea3432c3f672655cd299cdd114a2d7900540d6d@gmail.com"},"message":"input: clearpad_core: Don't break when wakeup_gesture toggled during sleep\nLet the wakeup_gesture attribute affect the next suspend of the\ntouchscreen, so that if wakeup_gesture is toggled while the touchscreen\nis suspended, the driver/touchscreen doesn't get confused (because the\ndriver wakes it up assuming it is in normal suspend, but the touchscreen\nis in tap-to-wake mode -- or vice versa).\n\nThis fixes the problem where phone calls cannot be answered with\ntap-to-wake on.\n\nChange-Id: I7fa5a826e84bd4a4b6cd25b8c249d2e83c628d3f\nSigned-off-by: angelsl <hidingfromhidden@gmail.com>\n(cherry picked from commit 6dc479f)\n\nadapted to kitakami source\n\nSigned-off-by: zachariasmaladroit <zacharias.maladroit@gmail.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/5a335ea9ba2151cf0d8bab2a3fb807c942fe0b01"},{"sha":"26db5994c67109779d5fb31358a14b6e384eb1eb","author":{"name":"Harm Hanemaaijer","email":"c05aab859844e752751908c3b3dba12b01bd0410@yahoo.com"},"message":"Speed up console framebuffer imageblit function\n\nEspecially on platforms with a slower CPU but a relatively high\nframebuffer fill bandwidth, like current ARM devices, the existing\nconsole monochrome imageblit function used to draw console text is\nsuboptimal for common pixel depths such as 16bpp and 32bpp. The existing\ncode is quite general and can deal with several pixel depths. By creating\nspecial case functions for 16bpp and 32bpp, by far the most common pixel\nformats used on modern systems, a significant speed-up is attained\nwhich can be readily felt on ARM-based devices like the Raspberry Pi\nand the Allwinner platform, but should help any platform using the\nfb layer.\n\nThe special case functions allow constant folding, eliminating a number\nof instructions including divide operations, and allow the use of an\nunrolled loop, eliminating instructions with a variable shift size,\nreducing source memory access instructions, and eliminating excessive\nbranching. These unrolled loops also allow much better code optimization\nby the C compiler. The code that selects which optimized variant is used\nis also simplified, eliminating integer divide instructions.\n\nThe speed-up, measured by timing 'cat file.txt' in the console, varies\nbetween 40% and 70%, when testing on the Raspberry Pi and Allwinner\nARM-based platforms, depending on font size and the pixel depth, with\nthe greater benefit for 32bpp.\n\nSigned-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/26db5994c67109779d5fb31358a14b6e384eb1eb"},{"sha":"97f8f2e667505fa08d2f1de4c7d4b9583c1bfcb3","author":{"name":"Sudeep KarkadaNagesha","email":"aa9089e611cf027c713d0e27bd421a3b241347df@arm.com"},"message":"of/device: add helper to get cpu device node from logical cpu index\n\nMultiple drivers need to get the cpu device node from the cpu logical\nindex and then access the of_node.\n\nThis patch adds helper function to fetch the device node directly.\n\nAcked-by: Rob Herring <rob.herring@calxeda.com>\nSigned-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/97f8f2e667505fa08d2f1de4c7d4b9583c1bfcb3"},{"sha":"855bcbe9eb487a292db52f1bbed8f8b764b3c048","author":{"name":"Lorenzo Pieralisi","email":"4d7b4dbe898a2b7e1890a3f7add8330fb0f08d60@arm.com"},"message":"arm64: add PSCI CPU_SUSPEND based cpu_suspend support\n\nThis patch implements the cpu_suspend cpu operations method through\nthe PSCI CPU_SUSPEND API. The PSCI implementation translates the idle state\nindex passed by the cpu_suspend core call into a valid PSCI state according to\nthe PSCI states initialized at boot by the PSCI suspend backend.\n\nEntry point is set to cpu_resume physical address, that represents the\ndefault kernel execution address following a CPU reset.\n\nIdle state indices missing a DT node description are initialized to power\nstate standby WFI so that if called by the idle driver they provide the\ndefault behaviour.\n\nSigned-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\nSigned-off-by: Mark Brown <broonie@linaro.org>\n\nAdapted to commit 6efd357 (\"PSCI: Add initial support for PSCIv0.2 functions\")\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/855bcbe9eb487a292db52f1bbed8f8b764b3c048"},{"sha":"88f6773802df074fccb086c128bd7ace7427167a","author":{"name":"Lorenzo Pieralisi","email":"4d7b4dbe898a2b7e1890a3f7add8330fb0f08d60@arm.com"},"message":"arm64: boot: dts: update rtsm aemv8 dts with PSCI and idle states\n\nThis patch updates the RTSM dts file with PSCI bindings and nodes\ndescribing the AEMv8 model idle states parameters.\n\nPSCI function IDs compliancy with PSCI v0.2 is still under development\nso this patch provides PSCI function IDs for demonstration purposes only.\n\nSigned-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/88f6773802df074fccb086c128bd7ace7427167a"},{"sha":"3b236e3a2d3c05bad765795a82daa9ac80fdaa02","author":{"name":"Mark Brown","email":"bf2c7ef56f4d087c7cc4d81e9839c8674e3b6b2e@linaro.org"},"message":"cpuidle: Add cpumask to ease backporting\n\nTo make backporting a little easier provide a cpumask variable in the\ndriver struct - the core won't do anything with it but it's less code\nto maintain.\n\nSigned-off-by: Mark Brown <broonie@linaro.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/3b236e3a2d3c05bad765795a82daa9ac80fdaa02"},{"sha":"d0a5dcf36856c5bf19dc9df197f54ee08e4baf55","author":{"name":"Lorenzo Pieralisi","email":"4d7b4dbe898a2b7e1890a3f7add8330fb0f08d60@arm.com"},"message":"drivers: cpuidle: implement DT based idle states infrastructure\n\nOn most common ARM systems, the low-power states a CPU can be put into are\nnot discoverable in HW and require device tree bindings to describe\npower down suspend operations and idle states parameters.\n\nIn order to enable DT based idle states and configure idle drivers, this\npatch implements the bulk infrastructure required to parse the device tree\nidle states bindings and initialize the corresponding CPUidle driver states\ndata.\n\nThe parsing API accepts a start index that defines the first idle state\nthat should be initialized by the parsing code in order to give new and\nlegacy driver flexibility over which states should be parsed using the\nnew DT mechanism.\n\nThe idle states node(s) is obtained from the phandle list of the first cpu\nin the driver cpumask;  the kernel checks that the idle state node phandle\nis the same for all CPUs in the driver cpumask before declaring the idle state\nas valid and start parsing its content.\n\nThe idle state enter function pointer is initialized through DT match\nstructures passed in by the CPUidle driver, so that ARM legacy code can\ncope with platform specific idle entry method based on compatible\nstring matching and the code used to initialize the enter function pointer\ncan be moved to the DT generic layer.\n\nAcked-by: Catalin Marinas <catalin.marinas@arm.com>\nAcked-by: Daniel Lezcano <daniel.lezcano@linaro.org>\nSigned-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\nSigned-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>\n(cherry picked from commit 9f14da345599c14b329cf5ac9499ad322056dd32)\nSigned-off-by: Mark Brown <broonie@kernel.org>\n\nConflicts:\n\tdrivers/cpuidle/Kconfig\n\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/d0a5dcf36856c5bf19dc9df197f54ee08e4baf55"},{"sha":"82beb9955e498701bb946611e3124aaff0a28442","author":{"name":"Lorenzo Pieralisi","email":"4d7b4dbe898a2b7e1890a3f7add8330fb0f08d60@arm.com"},"message":"arm64: kernel: introduce cpu_init_idle CPU operation\n\nThe CPUidle subsystem on ARM64 machines requires the idle states\nimplementation back-end to initialize idle states parameter upon\nboot. This patch adds a hook in the CPU operations structure that\nshould be initialized by the CPU operations back-end in order to\nprovide a function that initializes cpu idle states.\n\nThis patch also adds the infrastructure to arm64 kernel required\nto export the CPU operations based initialization interface, so\nthat drivers (ie CPUidle) can use it when they are initialized\nat probe time.\n\nReviewed-by: Catalin Marinas <catalin.marinas@arm.com>\nSigned-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\nSigned-off-by: Catalin Marinas <catalin.marinas@arm.com>\n(cherry picked from commit d64f84f696463c58e1908510e45b0f5d450f737a)\nSigned-off-by: Mark Brown <broonie@kernel.org>\n\nConflicts:\n\tarch/arm64/kernel/Makefile\n\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/82beb9955e498701bb946611e3124aaff0a28442"},{"sha":"3916c68334796b257c8faa68f828e042bf5032b1","author":{"name":"Lorenzo Pieralisi","email":"4d7b4dbe898a2b7e1890a3f7add8330fb0f08d60@arm.com"},"message":"drivers: cpuidle: CPU idle ARM64 driver\n\nThis patch implements a generic CPU idle driver for ARM64 machines.\n\nIt relies on the DT idle states infrastructure to initialize idle\nstates count and respective parameters. Current code assumes the driver\nis managing idle states on all possible CPUs but can be easily\ngeneralized to support heterogenous systems and build cpumasks at\nruntime using MIDRs or DT cpu nodes compatible properties.\n\nThe driver relies on the arm64 CPU operations to call the idle\ninitialization hook used to parse and save suspend back-end specific\nidle states information upon probing.\n\nIdle state index 0 is always initialized as a simple wfi state, ie always\nconsidered present and functional on all ARM64 platforms.\n\nIdle state indices higher than 0 trigger idle state entry by calling\nthe cpu_suspend function, that triggers the suspend operation through\nthe CPU operations suspend back-end hook. cpu_suspend passes the idle\nstate index as a parameter so that the CPU operations suspend back-end\ncan retrieve the required idle state data by using the idle state\nindex to execute a look-up on its internal data structures.\n\nReviewed-by: Ashwin Chaugule <ashwin.chaugule@linaro.org>\nReviewed-by: Catalin Marinas <catalin.marinas@arm.com>\nSigned-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\nSigned-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>\n(cherry picked from commit 3299b63de384159579143d4abdfb94013e0b5470)\nSigned-off-by: Mark Brown <broonie@kernel.org>\n\nConflicts:\n\tdrivers/cpuidle/Kconfig\n\tdrivers/cpuidle/Makefile\n\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/3916c68334796b257c8faa68f828e042bf5032b1"},{"sha":"2b05e3b2a0c78ed324b2364177cc92ad03f9b167","author":{"name":"RyTek","email":"42991bb8fb19d0c99aac44966730928c391ac567@outlook.com"},"message":"diffconfig: enable ARM64 cpuidle driver","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/2b05e3b2a0c78ed324b2364177cc92ad03f9b167"},{"sha":"6b0f1498229c0d6fa5bcbb375463b864033a14cd","author":{"name":"Waiman Long","email":"65679e2ce00c6e0cc2dfd4b35628d2fc0318e447@hpe.com"},"message":"sched/fair: Avoid redundant idle_cpu() call in update_sg_lb_stats()\n\nPart of the responsibility of the update_sg_lb_stats() function is to\nupdate the idle_cpus statistical counter in struct sg_lb_stats. This\ncheck is done by calling idle_cpu(). The idle_cpu() function, in\nturn, checks a number of fields within the run queue structure such\nas rq->curr and rq->nr_running.\n\nWith the current layout of the run queue structure, rq->curr and\nrq->nr_running are in separate cachelines. The rq->curr variable is\nchecked first followed by nr_running. As nr_running is also accessed\nby update_sg_lb_stats() earlier, it makes no sense to load another\ncacheline when nr_running is not 0 as idle_cpu() will always return\nfalse in this case.\n\nThis patch eliminates this redundant cacheline load by checking the\ncached nr_running before calling idle_cpu().\n\nSigned-off-by: Waiman Long <Waiman.Long@hpe.com>\nSigned-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nCc: Douglas Hatch <doug.hatch@hpe.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Mike Galbraith <efault@gmx.de>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Scott J Norton <scott.norton@hpe.com>\nCc: Thomas Gleixner <tglx@linutronix.de>\nLink: http://lkml.kernel.org/r/1448478580-26467-2-git-send-email-Waiman.Long@hpe.com\nSigned-off-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/6b0f1498229c0d6fa5bcbb375463b864033a14cd"},{"sha":"38016c1e5d3221eb970cc2bcea9a66f2507f88b9","author":{"name":"Roman Pen","email":"70ab104e493eca2d37e50165b06dfac43daf18d5@profitbricks.com"},"message":"workqueue: fix ghost PENDING flag while doing MQ IO\n\nThe bug in a workqueue leads to a stalled IO request in MQ ctx->rq_list\nwith the following backtrace:\n\n[  601.347452] INFO: task kworker/u129:5:1636 blocked for more than 120 seconds.\n[  601.347574]       Tainted: G           O    4.4.5-1-storage+ #6\n[  601.347651] \"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n[  601.348142] kworker/u129:5  D ffff880803077988     0  1636      2 0x00000000\n[  601.348519] Workqueue: ibnbd_server_fileio_wq ibnbd_dev_file_submit_io_worker [ibnbd_server]\n[  601.348999]  ffff880803077988 ffff88080466b900 ffff8808033f9c80 ffff880803078000\n[  601.349662]  ffff880807c95000 7fffffffffffffff ffffffff815b0920 ffff880803077ad0\n[  601.350333]  ffff8808030779a0 ffffffff815b01d5 0000000000000000 ffff880803077a38\n[  601.350965] Call Trace:\n[  601.351203]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60\n[  601.351444]  [<ffffffff815b01d5>] schedule+0x35/0x80\n[  601.351709]  [<ffffffff815b2dd2>] schedule_timeout+0x192/0x230\n[  601.351958]  [<ffffffff812d43f7>] ? blk_flush_plug_list+0xc7/0x220\n[  601.352208]  [<ffffffff810bd737>] ? ktime_get+0x37/0xa0\n[  601.352446]  [<ffffffff815b0920>] ? bit_wait+0x60/0x60\n[  601.352688]  [<ffffffff815af784>] io_schedule_timeout+0xa4/0x110\n[  601.352951]  [<ffffffff815b3a4e>] ? _raw_spin_unlock_irqrestore+0xe/0x10\n[  601.353196]  [<ffffffff815b093b>] bit_wait_io+0x1b/0x70\n[  601.353440]  [<ffffffff815b056d>] __wait_on_bit+0x5d/0x90\n[  601.353689]  [<ffffffff81127bd0>] wait_on_page_bit+0xc0/0xd0\n[  601.353958]  [<ffffffff81096db0>] ? autoremove_wake_function+0x40/0x40\n[  601.354200]  [<ffffffff81127cc4>] __filemap_fdatawait_range+0xe4/0x140\n[  601.354441]  [<ffffffff81127d34>] filemap_fdatawait_range+0x14/0x30\n[  601.354688]  [<ffffffff81129a9f>] filemap_write_and_wait_range+0x3f/0x70\n[  601.354932]  [<ffffffff811ced3b>] blkdev_fsync+0x1b/0x50\n[  601.355193]  [<ffffffff811c82d9>] vfs_fsync_range+0x49/0xa0\n[  601.355432]  [<ffffffff811cf45a>] blkdev_write_iter+0xca/0x100\n[  601.355679]  [<ffffffff81197b1a>] __vfs_write+0xaa/0xe0\n[  601.355925]  [<ffffffff81198379>] vfs_write+0xa9/0x1a0\n[  601.356164]  [<ffffffff811c59d8>] kernel_write+0x38/0x50\n\nThe underlying device is a null_blk, with default parameters:\n\n  queue_mode    = MQ\n  submit_queues = 1\n\nVerification that nullb0 has something inflight:\n\nroot@pserver8:~# cat /sys/block/nullb0/inflight\n       0        1\nroot@pserver8:~# find /sys/block/nullb0/mq/0/cpu* -name rq_list -print -exec cat {} \\;\n...\n/sys/block/nullb0/mq/0/cpu2/rq_list\nCTX pending:\n        ffff8838038e2400\n...\n\nDuring debug it became clear that stalled request is always inserted in\nthe rq_list from the following path:\n\n   save_stack_trace_tsk + 34\n   blk_mq_insert_requests + 231\n   blk_mq_flush_plug_list + 281\n   blk_flush_plug_list + 199\n   wait_on_page_bit + 192\n   __filemap_fdatawait_range + 228\n   filemap_fdatawait_range + 20\n   filemap_write_and_wait_range + 63\n   blkdev_fsync + 27\n   vfs_fsync_range + 73\n   blkdev_write_iter + 202\n   __vfs_write + 170\n   vfs_write + 169\n   kernel_write + 56\n\nSo blk_flush_plug_list() was called with from_schedule == true.\n\nIf from_schedule is true, that means that finally blk_mq_insert_requests()\noffloads execution of __blk_mq_run_hw_queue() and uses kblockd workqueue,\ni.e. it calls kblockd_schedule_delayed_work_on().\n\nThat means, that we race with another CPU, which is about to execute\n__blk_mq_run_hw_queue() work.\n\nFurther debugging shows the following traces from different CPUs:\n\n  CPU#0                                  CPU#1\n  ----------------------------------     -------------------------------\n  reqeust A inserted\n  STORE hctx->ctx_map[0] bit marked\n  kblockd_schedule...() returns 1\n  <schedule to kblockd workqueue>\n                                         request B inserted\n                                         STORE hctx->ctx_map[1] bit marked\n                                         kblockd_schedule...() returns 0\n  *** WORK PENDING bit is cleared ***\n  flush_busy_ctxs() is executed, but\n  bit 1, set by CPU#1, is not observed\n\nAs a result request B pended forever.\n\nThis behaviour can be explained by speculative LOAD of hctx->ctx_map on\nCPU#0, which is reordered with clear of PENDING bit and executed _before_\nactual STORE of bit 1 on CPU#1.\n\nThe proper fix is an explicit full barrier <mfence>, which guarantees\nthat clear of PENDING bit is to be executed before all possible\nspeculative LOADS or STORES inside actual work function.\n\nSigned-off-by: Roman Pen <roman.penyaev@profitbricks.com>\nCc: Gioh Kim <gi-oh.kim@profitbricks.com>\nCc: Michael Wang <yun.wang@profitbricks.com>\nCc: Tejun Heo <tj@kernel.org>\nCc: Jens Axboe <axboe@kernel.dk>\nCc: linux-block@vger.kernel.org\nCc: linux-kernel@vger.kernel.org\nCc: stable@vger.kernel.org\nSigned-off-by: Tejun Heo <tj@kernel.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/38016c1e5d3221eb970cc2bcea9a66f2507f88b9"},{"sha":"21de071ae7d6d80522596ffc85111b9d4a4f149f","author":{"name":"Vik Heyndrickx","email":"b0c86faedc71b28a9d5b0b2690bc7cb2db3e6ddf@veribox.net"},"message":"sched/loadavg: Fix loadavg artifacts on fully idle and on fully loaded systems\n\nSystems show a minimal load average of 0.00, 0.01, 0.05 even when they\nhave no load at all.\n\nUptime and /proc/loadavg on all systems with kernels released during the\nlast five years up until kernel version 4.6-rc5, show a 5- and 15-minute\nminimum loadavg of 0.01 and 0.05 respectively. This should be 0.00 on\nidle systems, but the way the kernel calculates this value prevents it\nfrom getting lower than the mentioned values.\n\nLikewise but not as obviously noticeable, a fully loaded system with no\nprocesses waiting, shows a maximum 1/5/15 loadavg of 1.00, 0.99, 0.95\n(multiplied by number of cores).\n\nOnce the (old) load becomes 93 or higher, it mathematically can never\nget lower than 93, even when the active (load) remains 0 forever.\nThis results in the strange 0.00, 0.01, 0.05 uptime values on idle\nsystems.  Note: 93/2048 = 0.0454..., which rounds up to 0.05.\n\nIt is not correct to add a 0.5 rounding (=1024/2048) here, since the\nresult from this function is fed back into the next iteration again,\nso the result of that +0.5 rounding value then gets multiplied by\n(2048-2037), and then rounded again, so there is a virtual \"ghost\"\nload created, next to the old and active load terms.\n\nBy changing the way the internally kept value is rounded, that internal\nvalue equivalent now can reach 0.00 on idle, and 1.00 on full load. Upon\nincreasing load, the internally kept load value is rounded up, when the\nload is decreasing, the load value is rounded down.\n\nThe modified code was tested on nohz=off and nohz kernels. It was tested\non vanilla kernel 4.6-rc5 and on centos 7.1 kernel 3.10.0-327. It was\ntested on single, dual, and octal cores system. It was tested on virtual\nhosts and bare hardware. No unwanted effects have been observed, and the\nproblems that the patch intended to fix were indeed gone.\n\nTested-by: Damien Wyart <damien.wyart@free.fr>\nSigned-off-by: Vik Heyndrickx <vik.heyndrickx@veribox.net>\nSigned-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nCc: <stable@vger.kernel.org>\nCc: Doug Smythies <dsmythies@telus.net>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Mike Galbraith <efault@gmx.de>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Thomas Gleixner <tglx@linutronix.de>\nFixes: 0f004f5a696a (\"sched: Cure more NO_HZ load average woes\")\nLink: http://lkml.kernel.org/r/e8d32bff-d544-7748-72b5-3c86cc71f09f@veribox.net\nSigned-off-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/21de071ae7d6d80522596ffc85111b9d4a4f149f"},{"sha":"1959f7fb169934ca52f8a2e538373e94a8318182","author":{"name":"Gaurav Jindal (Gaurav Jindal)","email":"4c002cae5edf8dbb576247777be831538f3371e9@spreadtrum.com"},"message":"sched/idle: Optimize the generic idle loop\n\nCurrently, smp_processor_id() is used to fetch the current CPU in\ncpu_idle_loop(). Every time the idle thread runs, it fetches the\ncurrent CPU using smp_processor_id().\n\nSince the idle thread is per CPU, the current CPU is constant, so we\ncan lift the load out of the loop, saving execution cycles/time in the\nloop.\n\nx86-64:\n\nBefore patch (execution in loop):\n\t148:    0f ae e8                lfence\n\t14b:    65 8b 04 25 00 00 00 00 mov %gs:0x0,%eax\n\t152:    00\n\t153:    89 c0                   mov %eax,%eax\n\t155:    49 0f a3 04 24          bt %rax,(%r12)\n\nAfter patch (execution in loop):\n\t150:    0f ae e8                lfence\n\t153:    4d 0f a3 34 24          bt %r14,(%r12)\n\nARM64:\n\nBefore patch (execution in loop):\n\t168:    d5033d9f        dsb     ld\n\t16c:    b9405661        ldr     w1,[x19,#84]\n\t170:    1100fc20        add     w0,w1,#0x3f\n\t174:    6b1f003f        cmp     w1,wzr\n\t178:    1a81b000        csel    w0,w0,w1,lt\n\t17c:    130c7000        asr     w0,w0,#6\n\t180:    937d7c00        sbfiz   x0,x0,#3,#32\n\t184:    f8606aa0        ldr     x0,[x21,x0]\n\t188:    9ac12401        lsr     x1,x0,x1\n\t18c:    36000e61        tbz     w1,#0,358\n\nAfter patch (execution in loop):\n\t1a8:    d50339df        dsb     ld\n\t1ac:    f8776ac0        ldr     x0,[x22,x23]\n\tab0:    ea18001f        tst     x0,x24\n\t1b4:    54000ea0        b.eq    388\n\nFurther observance on ARM64 for 4 seconds shows that cpu_idle_loop is\ncalled 8672 times. Shifting the code will save instructions executed\nin loop and eventually time as well.\n\nSigned-off-by: Gaurav Jindal <gaurav.jindal@spreadtrum.com>\nSigned-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nReviewed-by: Sanjeev Yadav <sanjeev.yadav@spreadtrum.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Mike Galbraith <efault@gmx.de>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Thomas Gleixner <tglx@linutronix.de>\nLink: http://lkml.kernel.org/r/20160512101330.GA488@gauravjindalubtnb.del.spreadtrum.com\nSigned-off-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/1959f7fb169934ca52f8a2e538373e94a8318182"},{"sha":"e0b2fc54b4dbb1d3aa9071265f249099117b8a0c","author":{"name":"Morten Rasmussen","email":"f95c80e30c2d43d52e1b9d0d91742c149bf3e846@arm.com"},"message":"sched/fair: Optimize find_idlest_cpu() when there is no choice\n\nIn the current find_idlest_group()/find_idlest_cpu() search we end up\ncalling find_idlest_cpu() in a sched_group containing only one CPU in\nthe end. Checking idle-states becomes pointless when there is no\nalternative, so bail out instead.\n\nSigned-off-by: Morten Rasmussen <morten.rasmussen@arm.com>\nSigned-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Mike Galbraith <efault@gmx.de>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: Thomas Gleixner <tglx@linutronix.de>\nCc: dietmar.eggemann@arm.com\nCc: linux-kernel@vger.kernel.org\nCc: mgalbraith@suse.de\nCc: vincent.guittot@linaro.org\nCc: yuyang.du@intel.com\nLink: http://lkml.kernel.org/r/1466615004-3503-4-git-send-email-morten.rasmussen@arm.com\nSigned-off-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: RyTek <rytek1128@outlook.com>","distinct":true,"url":"https://api.github.com/repos/RyTekk/sony_kernel_kitakami_8994/commits/e0b2fc54b4dbb1d3aa9071265f249099117b8a0c"}]}
{"actor":{"display_login":"RyTekk"}}