{"push_id":972233831,"size":18,"distinct_size":18,"ref":"refs/heads/master","head":"4e54169986d5197cc51ee1069922364c9a92d1be","before":"2178cbc68f3602dc0b5949b9be2c8383ad3d93ef","commits":[{"sha":"e93ad19d05648397ef3bcb838d26aec06c245dc0","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"cpuset: make mm migration asynchronous\n\nIf \"cpuset.memory_migrate\" is set, when a process is moved from one\ncpuset to another with a different memory node mask, pages in used by\nthe process are migrated to the new set of nodes.  This was performed\nsynchronously in the ->attach() callback, which is synchronized\nagainst process management.  Recently, the synchronization was changed\nfrom per-process rwsem to global percpu rwsem for simplicity and\noptimization.\n\nCombined with the synchronous mm migration, this led to deadlocks\nbecause mm migration could schedule a work item which may in turn try\nto create a new worker blocking on the process management lock held\nfrom cgroup process migration path.\n\nThis heavy an operation shouldn't be performed synchronously from that\ndeep inside cgroup migration in the first place.  This patch punts the\nactual migration to an ordered workqueue and updates cgroup process\nmigration and cpuset config update paths to flush the workqueue after\nall locks are released.  This way, the operations still seem\nsynchronous to userland without entangling mm migration with process\nmanagement synchronization.  CPU hotplug can also invoke mm migration\nbut there's no reason for it to wait for mm migrations and thus\ndoesn't synchronize against their completions.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-and-tested-by: Christian Borntraeger <borntraeger@de.ibm.com>\nCc: stable@vger.kernel.org # v4.4+","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/e93ad19d05648397ef3bcb838d26aec06c245dc0"},{"sha":"aa226ff4a1ce79f229c6b7a4c0a14e17fececd01","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"cgroup: make sure a parent css isn't offlined before its children\n\nThere are three subsystem callbacks in css shutdown path -\ncss_offline(), css_released() and css_free().  Except for\ncss_released(), cgroup core didn't guarantee the order of invocation.\ncss_offline() or css_free() could be called on a parent css before its\nchildren.  This behavior is unexpected and led to bugs in cpu and\nmemory controller.\n\nThis patch updates offline path so that a parent css is never offlined\nbefore its children.  Each css keeps online_cnt which reaches zero iff\nitself and all its children are offline and offline_css() is invoked\nonly after online_cnt reaches zero.\n\nThis fixes the memory controller bug and allows the fix for cpu\ncontroller.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-and-tested-by: Christian Borntraeger <borntraeger@de.ibm.com>\nReported-by: Brian Christiansen <brian.o.christiansen@gmail.com>\nLink: http://lkml.kernel.org/g/5698A023.9070703@de.ibm.com\nLink: http://lkml.kernel.org/g/CAKB58ikDkzc8REt31WBkD99+hxNzjK4+FBmhkgS+NVrC9vjMSg@mail.gmail.com\nCc: Heiko Carstens <heiko.carstens@de.ibm.com>\nCc: Peter Zijlstra <peterz@infradead.org>\nCc: stable@vger.kernel.org","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/aa226ff4a1ce79f229c6b7a4c0a14e17fececd01"},{"sha":"8bb5ef79bc0f4016ecf79e8dce6096a3c63603e4","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"cgroup: make sure a parent css isn't freed before its children\n\nThere are three subsystem callbacks in css shutdown path -\ncss_offline(), css_released() and css_free().  Except for\ncss_released(), cgroup core didn't guarantee the order of invocation.\ncss_offline() or css_free() could be called on a parent css before its\nchildren.  This behavior is unexpected and led to bugs in cpu and\nmemory controller.\n\nThe previous patch updated ordering for css_offline() which fixes the\ncpu controller issue.  While there currently isn't a known bug caused\nby misordering of css_free() invocations, let's fix it too for\nconsistency.\n\ncss_free() ordering can be trivially fixed by moving putting of the\nparent css below css_free() invocation.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nCc: Peter Zijlstra <peterz@infradead.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/8bb5ef79bc0f4016ecf79e8dce6096a3c63603e4"},{"sha":"fb3296335500aaff61333df8eabbccf28761c79d","author":{"email":"08e19e96e5a6ac61790e54f6ea8bc3b1fdb92d4d@broadcom.com","name":"Danesh Petigara"},"message":"drivers: ata: wake port before DMA stop for ALPM\n\nThe AHCI driver code stops and starts port DMA engines at will\nwithout considering the power state of the particular port. The\nAHCI specification isn't very clear on how to handle this scenario,\nleaving implementation open to interpretation.\n\nBroadcom's STB SATA host controller is unable to handle port DMA\ncontroller restarts when the port in question is in low power mode.\nWhen a port enters partial or slumber mode, its PHY is powered down.\nWhen a controller restart is requested, the controller's internal\nstate machine expects the PHY to be brought back up by software which\nnever happens in this case, resulting in failures.\n\nTo avoid this situation, logic is added to manually wake up the port\njust before its DMA engine is stopped, if the port happens to be in\na low power state. HBA initiated power management ensures that the port\neventually returns to its configured low power state, when the link is\nidle (as per the conditions listed in the spec). A new host flag is also\nadded to ensure this logic is only exercised for hosts with the above\nlimitation.\n\ntj: Formatting changes.\n\nSigned-off-by: Danesh Petigara <dpetigara@broadcom.com>\nReviewed-by: Markus Mayer <mmayer@broadcom.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/fb3296335500aaff61333df8eabbccf28761c79d"},{"sha":"b00622fc34e9d45069bd6e328dfd47ea2ef61468","author":{"email":"47253168cf85700675d267e3faa36db3fb600ea3@cisco.com","name":"Shikha Jain"},"message":"libata: blacklist a Viking flash model for MWDMA corruption\n\nViking flash model VRFDFC22048UCHC-TE causes data corruption in MWDMA mode.\n\nCc: xe-kernel@external.cisco.com\nSigned-off-by: Shikha Jain <shikjain@cisco.com>\nSigned-off-by: Anil Veliyankara Madam <aveliyan@cisco.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/b00622fc34e9d45069bd6e328dfd47ea2ef61468"},{"sha":"566d1827df2ef0cbe921d3d6946ac3007b1a6938","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"libata: disable forced PORTS_IMPL for >= AHCI 1.3\n\nSome early controllers incorrectly reported zero ports in PORTS_IMPL\nregister and the ahci driver fabricates PORTS_IMPL from the number of\nports in those cases.  This hasn't mattered but with the new nvme\ncontrollers there are cases where zero PORTS_IMPL is valid and should\nbe honored.\n\nDisable the workaround for >= AHCI 1.3.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-by: Andy Lutomirski <luto@amacapital.net>\nLink: http://lkml.kernel.org/g/CALCETrU7yMvXEDhjAUShoHEhDwifJGapdw--BKxsP0jmjKGmRw@mail.gmail.com\nCc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>\nCc: stable@vger.kernel.org","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/566d1827df2ef0cbe921d3d6946ac3007b1a6938"},{"sha":"9a2ddda572a002633a64b1ae5f4bc49cfcbf495f","author":{"email":"f75897670c17327c42ab201733fb8a81ff9f4c34@tremily.us","name":"W. Trevor King"},"message":"Documentation: cgroup: Fix 'cgroup-legacy' -> 'cgroup-v1'\n\nThis should have happened in 6255c46f (cgroup: rename cgroup\ndocumentations, 2016-01-11).\n\nSigned-off-by: W. Trevor King <wking@tremily.us>\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/9a2ddda572a002633a64b1ae5f4bc49cfcbf495f"},{"sha":"a588afc920bc50e894f6ae2874c4281c795e0979","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"libata-sff: use WARN instead of BUG on illegal host state machine state\n\nata_sff_hsm_move() triggers BUG if it sees a host state machine state\nthat it dind't expect.  The risk for data corruption when the\ncondition occurs is low as it's highly unlikely that it would lead to\nspurious completion of commands.  The BUG occasionally triggered for\nsubtle race conditions in the driver.  Let's downgrade it to WARN so\nthat it doesn't kill the machine unnecessarily.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nCc: Dmitry Vyukov <dvyukov@google.com>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/a588afc920bc50e894f6ae2874c4281c795e0979"},{"sha":"23d11a58a9a60dcb52c8fc6494efce908b24c295","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"workqueue: skip flush dependency checks for legacy workqueues\n\nfca839c00a12 (\"workqueue: warn if memory reclaim tries to flush\n!WQ_MEM_RECLAIM workqueue\") implemented flush dependency warning which\ntriggers if a PF_MEMALLOC task or WQ_MEM_RECLAIM workqueue tries to\nflush a !WQ_MEM_RECLAIM workquee.\n\nThis assumes that workqueues marked with WQ_MEM_RECLAIM sit in memory\nreclaim path and making it depend on something which may need more\nmemory to make forward progress can lead to deadlocks.  Unfortunately,\nworkqueues created with the legacy create*_workqueue() interface\nalways have WQ_MEM_RECLAIM regardless of whether they are depended\nupon memory reclaim or not.  These spurious WQ_MEM_RECLAIM markings\ncause spurious triggering of the flush dependency checks.\n\n  WARNING: CPU: 0 PID: 6 at kernel/workqueue.c:2361 check_flush_dependency+0x138/0x144()\n  workqueue: WQ_MEM_RECLAIM deferwq:deferred_probe_work_func is flushing !WQ_MEM_RECLAIM events:lru_add_drain_per_cpu\n  ...\n  Workqueue: deferwq deferred_probe_work_func\n  [<c0017acc>] (unwind_backtrace) from [<c0013134>] (show_stack+0x10/0x14)\n  [<c0013134>] (show_stack) from [<c0245f18>] (dump_stack+0x94/0xd4)\n  [<c0245f18>] (dump_stack) from [<c0026f9c>] (warn_slowpath_common+0x80/0xb0)\n  [<c0026f9c>] (warn_slowpath_common) from [<c0026ffc>] (warn_slowpath_fmt+0x30/0x40)\n  [<c0026ffc>] (warn_slowpath_fmt) from [<c00390b8>] (check_flush_dependency+0x138/0x144)\n  [<c00390b8>] (check_flush_dependency) from [<c0039ca0>] (flush_work+0x50/0x15c)\n  [<c0039ca0>] (flush_work) from [<c00c51b0>] (lru_add_drain_all+0x130/0x180)\n  [<c00c51b0>] (lru_add_drain_all) from [<c00f728c>] (migrate_prep+0x8/0x10)\n  [<c00f728c>] (migrate_prep) from [<c00bfbc4>] (alloc_contig_range+0xd8/0x338)\n  [<c00bfbc4>] (alloc_contig_range) from [<c00f8f18>] (cma_alloc+0xe0/0x1ac)\n  [<c00f8f18>] (cma_alloc) from [<c001cac4>] (__alloc_from_contiguous+0x38/0xd8)\n  [<c001cac4>] (__alloc_from_contiguous) from [<c001ceb4>] (__dma_alloc+0x240/0x278)\n  [<c001ceb4>] (__dma_alloc) from [<c001cf78>] (arm_dma_alloc+0x54/0x5c)\n  [<c001cf78>] (arm_dma_alloc) from [<c0355ea4>] (dmam_alloc_coherent+0xc0/0xec)\n  [<c0355ea4>] (dmam_alloc_coherent) from [<c039cc4c>] (ahci_port_start+0x150/0x1dc)\n  [<c039cc4c>] (ahci_port_start) from [<c0384734>] (ata_host_start.part.3+0xc8/0x1c8)\n  [<c0384734>] (ata_host_start.part.3) from [<c03898dc>] (ata_host_activate+0x50/0x148)\n  [<c03898dc>] (ata_host_activate) from [<c039d558>] (ahci_host_activate+0x44/0x114)\n  [<c039d558>] (ahci_host_activate) from [<c039f05c>] (ahci_platform_init_host+0x1d8/0x3c8)\n  [<c039f05c>] (ahci_platform_init_host) from [<c039e6bc>] (tegra_ahci_probe+0x448/0x4e8)\n  [<c039e6bc>] (tegra_ahci_probe) from [<c0347058>] (platform_drv_probe+0x50/0xac)\n  [<c0347058>] (platform_drv_probe) from [<c03458cc>] (driver_probe_device+0x214/0x2c0)\n  [<c03458cc>] (driver_probe_device) from [<c0343cc0>] (bus_for_each_drv+0x60/0x94)\n  [<c0343cc0>] (bus_for_each_drv) from [<c03455d8>] (__device_attach+0xb0/0x114)\n  [<c03455d8>] (__device_attach) from [<c0344ab8>] (bus_probe_device+0x84/0x8c)\n  [<c0344ab8>] (bus_probe_device) from [<c0344f48>] (deferred_probe_work_func+0x68/0x98)\n  [<c0344f48>] (deferred_probe_work_func) from [<c003b738>] (process_one_work+0x120/0x3f8)\n  [<c003b738>] (process_one_work) from [<c003ba48>] (worker_thread+0x38/0x55c)\n  [<c003ba48>] (worker_thread) from [<c0040f14>] (kthread+0xdc/0xf4)\n  [<c0040f14>] (kthread) from [<c000f778>] (ret_from_fork+0x14/0x3c)\n\nFix it by marking workqueues created via create*_workqueue() with\n__WQ_LEGACY and disabling flush dependency checks on them.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-and-tested-by: Thierry Reding <thierry.reding@gmail.com>\nLink: http://lkml.kernel.org/g/20160126173843.GA11115@ulmo.nvidia.com\nFixes: fca839c00a12 (\"workqueue: warn if memory reclaim tries to flush !WQ_MEM_RECLAIM workqueue\")","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/23d11a58a9a60dcb52c8fc6494efce908b24c295"},{"sha":"8eee1d3ed5b6fc8e14389567c9a6f53f82bb7224","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"libata: fix sff host state machine locking while polling\n\nThe bulk of ATA host state machine is implemented by\nata_sff_hsm_move().  The function is called from either the interrupt\nhandler or, if polling, a work item.  Unlike from the interrupt path,\nthe polling path calls the function without holding the host lock and\nata_sff_hsm_move() selectively grabs the lock.\n\nThis is completely broken.  If an IRQ triggers while polling is in\nprogress, the two can easily race and end up accessing the hardware\nand updating state machine state at the same time.  This can put the\nstate machine in an illegal state and lead to a crash like the\nfollowing.\n\n  kernel BUG at drivers/ata/libata-sff.c:1302!\n  invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN\n  Modules linked in:\n  CPU: 1 PID: 10679 Comm: syz-executor Not tainted 4.5.0-rc1+ #300\n  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011\n  task: ffff88002bd00000 ti: ffff88002e048000 task.ti: ffff88002e048000\n  RIP: 0010:[<ffffffff83a83409>]  [<ffffffff83a83409>] ata_sff_hsm_move+0x619/0x1c60\n  ...\n  Call Trace:\n   <IRQ>\n   [<ffffffff83a84c31>] __ata_sff_port_intr+0x1e1/0x3a0 drivers/ata/libata-sff.c:1584\n   [<ffffffff83a85611>] ata_bmdma_port_intr+0x71/0x400 drivers/ata/libata-sff.c:2877\n   [<     inline     >] __ata_sff_interrupt drivers/ata/libata-sff.c:1629\n   [<ffffffff83a85bf3>] ata_bmdma_interrupt+0x253/0x580 drivers/ata/libata-sff.c:2902\n   [<ffffffff81479f98>] handle_irq_event_percpu+0x108/0x7e0 kernel/irq/handle.c:157\n   [<ffffffff8147a717>] handle_irq_event+0xa7/0x140 kernel/irq/handle.c:205\n   [<ffffffff81484573>] handle_edge_irq+0x1e3/0x8d0 kernel/irq/chip.c:623\n   [<     inline     >] generic_handle_irq_desc include/linux/irqdesc.h:146\n   [<ffffffff811a92bc>] handle_irq+0x10c/0x2a0 arch/x86/kernel/irq_64.c:78\n   [<ffffffff811a7e4d>] do_IRQ+0x7d/0x1a0 arch/x86/kernel/irq.c:240\n   [<ffffffff86653d4c>] common_interrupt+0x8c/0x8c arch/x86/entry/entry_64.S:520\n   <EOI>\n   [<     inline     >] rcu_lock_acquire include/linux/rcupdate.h:490\n   [<     inline     >] rcu_read_lock include/linux/rcupdate.h:874\n   [<ffffffff8164b4a1>] filemap_map_pages+0x131/0xba0 mm/filemap.c:2145\n   [<     inline     >] do_fault_around mm/memory.c:2943\n   [<     inline     >] do_read_fault mm/memory.c:2962\n   [<     inline     >] do_fault mm/memory.c:3133\n   [<     inline     >] handle_pte_fault mm/memory.c:3308\n   [<     inline     >] __handle_mm_fault mm/memory.c:3418\n   [<ffffffff816efb16>] handle_mm_fault+0x2516/0x49a0 mm/memory.c:3447\n   [<ffffffff8127dc16>] __do_page_fault+0x376/0x960 arch/x86/mm/fault.c:1238\n   [<ffffffff8127e358>] trace_do_page_fault+0xe8/0x420 arch/x86/mm/fault.c:1331\n   [<ffffffff8126f514>] do_async_page_fault+0x14/0xd0 arch/x86/kernel/kvm.c:264\n   [<ffffffff86655578>] async_page_fault+0x28/0x30 arch/x86/entry/entry_64.S:986\n\nFix it by ensuring that the polling path is holding the host lock\nbefore entering ata_sff_hsm_move() so that all hardware accesses and\nstate updates are performed under the host lock.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-and-tested-by: Dmitry Vyukov <dvyukov@google.com>\nLink: http://lkml.kernel.org/g/CACT4Y+b_JsOxJu2EZyEf+mOXORc_zid5V1-pLZSroJVxyWdSpw@mail.gmail.com\nCc: stable@vger.kernel.org","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/8eee1d3ed5b6fc8e14389567c9a6f53f82bb7224"},{"sha":"041bd12e272c53a35c54c13875839bcb98c999ce","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"Revert \"workqueue: make sure delayed work run in local cpu\"\n\nThis reverts commit 874bbfe600a660cba9c776b3957b1ce393151b76.\n\nWorkqueue used to implicity guarantee that work items queued without\nexplicit CPU specified are put on the local CPU.  Recent changes in\ntimer broke the guarantee and led to vmstat breakage which was fixed\nby 176bed1de5bf (\"vmstat: explicitly schedule per-cpu work on the CPU\nwe need it to run on\").\n\nvmstat is the most likely to expose the issue and it's quite possible\nthat there are other similar problems which are a lot more difficult\nto trigger.  As a preventive measure, 874bbfe600a6 (\"workqueue: make\nsure delayed work run in local cpu\") was applied to restore the local\nCPU guarnatee.  Unfortunately, the change exposed a bug in timer code\nwhich got fixed by 22b886dd1018 (\"timers: Use proper base migration in\nadd_timer_on()\").  Due to code restructuring, the commit couldn't be\nbackported beyond certain point and stable kernels which only had\n874bbfe600a6 started crashing.\n\nThe local CPU guarantee was accidental more than anything else and we\nwant to get rid of it anyway.  As, with the vmstat case fixed,\n874bbfe600a6 is causing more problems than it's fixing, it has been\ndecided to take the chance and officially break the guarantee by\nreverting the commit.  A debug feature will be added to force foreign\nCPU assignment to expose cases relying on the guarantee and fixes for\nthe individual cases will be backported to stable as necessary.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nFixes: 874bbfe600a6 (\"workqueue: make sure delayed work run in local cpu\")\nLink: http://lkml.kernel.org/g/20160120211926.GJ10810@quack.suse.cz\nCc: stable@vger.kernel.org\nCc: Mike Galbraith <umgwanakikbuti@gmail.com>\nCc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>\nCc: Daniel Bilik <daniel.bilik@neosystem.cz>\nCc: Jan Kara <jack@suse.cz>\nCc: Shaohua Li <shli@fb.com>\nCc: Sasha Levin <sasha.levin@oracle.com>\nCc: Ben Hutchings <ben@decadent.org.uk>\nCc: Thomas Gleixner <tglx@linutronix.de>\nCc: Daniel Bilik <daniel.bilik@neosystem.cz>\nCc: Jiri Slaby <jslaby@suse.cz>\nCc: Michal Hocko <mhocko@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/041bd12e272c53a35c54c13875839bcb98c999ce"},{"sha":"ef557180447fa9a7a0affd3abb21ecceb4b5e125","author":{"email":"d1e2fad1f6337a0a3a08db0a5375a8a96150db4c@gmail.com","name":"Mike Galbraith"},"message":"workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs\n\nWORK_CPU_UNBOUND work items queued to a bound workqueue always run\nlocally.  This is a good thing normally, but not when the user has\nasked us to keep unbound work away from certain CPUs.  Round robin\nthese to wq_unbound_cpumask CPUs instead, as perturbation avoidance\ntrumps performance.\n\ntj: Cosmetic and comment changes.  WARN_ON_ONCE() dropped from empty\n    (wq_unbound_cpumask AND cpu_online_mask).  If we want that, it\n    should be done when config changes.\n\nSigned-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/ef557180447fa9a7a0affd3abb21ecceb4b5e125"},{"sha":"f303fccb82928790ec58eea82722bd5c54d300b3","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"workqueue: implement \"workqueue.debug_force_rr_cpu\" debug feature\n\nWorkqueue used to guarantee local execution for work items queued\nwithout explicit target CPU.  The guarantee is gone now which can\nbreak some usages in subtle ways.  To flush out those cases, this\npatch implements a debug feature which forces round-robin CPU\nselection for all such work items.\n\nThe debug feature defaults to off and can be enabled with a kernel\nparameter.  The default can be flipped with a debug config option.\n\nIf you hit this commit during bisection, please refer to 041bd12e272c\n(\"Revert \"workqueue: make sure delayed work run in local cpu\"\") for\nmore information and ping me.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/f303fccb82928790ec58eea82722bd5c54d300b3"},{"sha":"342decff2b846b46fa61eb5ee40986fab79a9a32","author":{"email":"da19f0d1311a690ef93489efaf9b0ff7bd44ca5d@linux.intel.com","name":"Alexandra Yates"},"message":"ahci: Intel DNV device IDs SATA\n\nAdding Intel codename DNV platform device IDs for SATA.\n\nSigned-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>\nSigned-off-by: Tejun Heo <tj@kernel.org>\nCc: stable@vger.kernel.org","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/342decff2b846b46fa61eb5ee40986fab79a9a32"},{"sha":"d6e022f1d207a161cd88e08ef0371554680ffc46","author":{"email":"546b05909706652891a87f7bfe385ae147f61f91@kernel.org","name":"Tejun Heo"},"message":"workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup\n\nWhen looking up the pool_workqueue to use for an unbound workqueue,\nworkqueue assumes that the target CPU is always bound to a valid NUMA\nnode.  However, currently, when a CPU goes offline, the mapping is\ndestroyed and cpu_to_node() returns NUMA_NO_NODE.\n\nThis has always been broken but hasn't triggered often enough before\n874bbfe600a6 (\"workqueue: make sure delayed work run in local cpu\").\nAfter the commit, workqueue forcifully assigns the local CPU for\ndelayed work items without explicit target CPU to fix a different\nissue.  This widens the window where CPU can go offline while a\ndelayed work item is pending causing delayed work items dispatched\nwith target CPU set to an already offlined CPU.  The resulting\nNUMA_NO_NODE mapping makes workqueue try to queue the work item on a\nNULL pool_workqueue and thus crash.\n\nWhile 874bbfe600a6 has been reverted for a different reason making the\nbug less visible again, it can still happen.  Fix it by mapping\nNUMA_NO_NODE to the default pool_workqueue from unbound_pwq_by_node().\nThis is a temporary workaround.  The long term solution is keeping CPU\n-> NODE mapping stable across CPU off/online cycles which is being\nworked on.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nReported-by: Mike Galbraith <umgwanakikbuti@gmail.com>\nCc: Tang Chen <tangchen@cn.fujitsu.com>\nCc: Rafael J. Wysocki <rafael@kernel.org>\nCc: Len Brown <len.brown@intel.com>\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/g/1454424264.11183.46.camel@gmail.com\nLink: http://lkml.kernel.org/g/1453702100-2597-1-git-send-email-tangchen@cn.fujitsu.com","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/d6e022f1d207a161cd88e08ef0371554680ffc46"},{"sha":"9aece75c138d93bde79a2baeb9187a1109b4e952","author":{"email":"69652caca27c8b940640ad396ab71f93cacec34f@linux-foundation.org","name":"Linus Torvalds"},"message":"Merge branch 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue fixes from Tejun Heo:\n \"Workqueue fixes for v4.5-rc3.\n\n   - Remove a spurious triggering of flush dependency warning.\n\n   - Officially break local execution guarantee of unbound work items\n     and add a debug feature to flush out usages which depend on it.\n\n   - Work around CPU -> NODE mapping becoming invalid on CPU offline.\n\n  The branch is young but pushing out early as stable kernels are being\n  affected\"\n\n* 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: handle NUMA_NO_NODE for unbound pool_workqueue lookup\n  workqueue: implement \"workqueue.debug_force_rr_cpu\" debug feature\n  workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs\n  Revert \"workqueue: make sure delayed work run in local cpu\"\n  workqueue: skip flush dependency checks for legacy workqueues","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/9aece75c138d93bde79a2baeb9187a1109b4e952"},{"sha":"fb0dc5f129bc2d4763bdc237b8df0e1708c03e1e","author":{"email":"69652caca27c8b940640ad396ab71f93cacec34f@linux-foundation.org","name":"Linus Torvalds"},"message":"Merge branch 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup fixes from Tejun Heo:\n\n - The destruction path of cgroup objects are asynchronous and\n   multi-staged and some of them ended up destroying parents before\n   children leading to failures in cpu and memory controllers.  Ensure\n   that parents are always destroyed after children.\n\n - cpuset mm node migration was performed synchronously while holding\n   threadgroup and cgroup mutexes and the recent threadgroup locking\n   update resulted in a possible deadlock.  The migration is best effort\n   and shouldn't have been performed under those locks to begin with.\n   Made asynchronous.\n\n - Minor documentation fix.\n\n* 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  Documentation: cgroup: Fix 'cgroup-legacy' -> 'cgroup-v1'\n  cgroup: make sure a parent css isn't freed before its children\n  cgroup: make sure a parent css isn't offlined before its children\n  cpuset: make mm migration asynchronous","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/fb0dc5f129bc2d4763bdc237b8df0e1708c03e1e"},{"sha":"4e54169986d5197cc51ee1069922364c9a92d1be","author":{"email":"69652caca27c8b940640ad396ab71f93cacec34f@linux-foundation.org","name":"Linus Torvalds"},"message":"Merge branch 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata\n\nPull libata fixes from Tejun Heo:\n\n - PORTS_IMPL workaround for very early ahci controllers is misbehaving\n   on new systems.  Disabled on recent ahci versions.\n\n - Old-style PIO state machine had a horrible locking problem.  Don't\n   know how we've been getting away this far.  Fixed.\n\n - Other device specific updates.\n\n* 'for-4.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:\n  ahci: Intel DNV device IDs SATA\n  libata: fix sff host state machine locking while polling\n  libata-sff: use WARN instead of BUG on illegal host state machine state\n  libata: disable forced PORTS_IMPL for >= AHCI 1.3\n  libata: blacklist a Viking flash model for MWDMA corruption\n  drivers: ata: wake port before DMA stop for ALPM","distinct":true,"url":"https://api.github.com/repos/torvalds/linux/commits/4e54169986d5197cc51ee1069922364c9a92d1be"}]}