{"push_id":1232863197,"size":4,"distinct_size":4,"ref":"refs/heads/main","head":"0b0e724c793c1ca5396601bc93b6e845a6427048","before":"2ab89d65d6c5a3c17e97d8156f6935a916f5152e","commits":[{"sha":"3add622763a9848e8712e1e6dadc05721f464e50","author":{"name":"Tejun Heo","email":"e1d87360d7f4d7b7ebaddc11b54e50a559aaba57@kernel.org"},"message":"workqueue: drop CPU_DYING notifier operation\n\nWorkqueue used CPU_DYING notification to mark GCWQ_DISASSOCIATED.\nThis was necessary because workqueue's CPU_DOWN_PREPARE happened\nbefore other DOWN_PREPARE notifiers and workqueue needed to stay\nassociated across the rest of DOWN_PREPARE.\n\nAfter the previous patch, workqueue's DOWN_PREPARE happens after\nothers and can set GCWQ_DISASSOCIATED directly.  Drop CPU_DYING and\nlet the trustee set GCWQ_DISASSOCIATED after disabling concurrency\nmanagement.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nAcked-by: \"Rafael J. Wysocki\" <rjw@sisk.pl>\nSigned-off-by: franciscofranco <franciscofranco.1990@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tunturn/z3kernel/commits/3add622763a9848e8712e1e6dadc05721f464e50"},{"sha":"6fd3085a9dbcf45b3890679b1baacf3aba446450","author":{"name":"Tejun Heo","email":"e1d87360d7f4d7b7ebaddc11b54e50a559aaba57@kernel.org"},"message":"workqueue: ROGUE workers are UNBOUND workers\n\nCurrently, WORKER_UNBOUND is used to mark workers for the unbound\nglobal_cwq and WORKER_ROGUE is used to mark workers for disassociated\nper-cpu global_cwqs.  Both are used to make the marked worker skip\nconcurrency management and the only place they make any difference is\nin worker_enter_idle() where WORKER_ROGUE is used to skip scheduling\nidle timer, which can easily be replaced with trustee state testing.\n\nThis patch replaces WORKER_ROGUE with WORKER_UNBOUND and drops\nWORKER_ROGUE.  This is to prepare for removing trustee and handling\ndisassociated global_cwqs as unbound.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nAcked-by: \"Rafael J. Wysocki\" <rjw@sisk.pl>\nSigned-off-by: franciscofranco <franciscofranco.1990@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tunturn/z3kernel/commits/6fd3085a9dbcf45b3890679b1baacf3aba446450"},{"sha":"d36b5ab4b56d816809f1038dbe40380f3cf51a4f","author":{"name":"Tejun Heo","email":"e1d87360d7f4d7b7ebaddc11b54e50a559aaba57@kernel.org"},"message":"workqueue: use mutex for global_cwq manager exclusion\n\nPOOL_MANAGING_WORKERS is used to ensure that at most one worker takes\nthe manager role at any given time on a given global_cwq.  Trustee\nlater hitched on it to assume manager adding blocking wait for the\nbit.  As trustee already needed a custom wait mechanism, waiting for\nMANAGING_WORKERS was rolled into the same mechanism.\n\nTrustee is scheduled to be removed.  This patch separates out\nMANAGING_WORKERS wait into per-pool mutex.  Workers use\nmutex_trylock() to test for manager role and trustee uses mutex_lock()\nto claim manager roles.\n\ngcwq_claim/release_management() helpers are added to grab and release\nmanager roles of all pools on a global_cwq.  gcwq_claim_management()\nalways grabs pool manager mutexes in ascending pool index order and\nuses pool index as lockdep subclass.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nAcked-by: \"Rafael J. Wysocki\" <rjw@sisk.pl>\nSigned-off-by: franciscofranco <franciscofranco.1990@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tunturn/z3kernel/commits/d36b5ab4b56d816809f1038dbe40380f3cf51a4f"},{"sha":"0b0e724c793c1ca5396601bc93b6e845a6427048","author":{"name":"Tejun Heo","email":"e1d87360d7f4d7b7ebaddc11b54e50a559aaba57@kernel.org"},"message":"workqueue: drop @bind from create_worker()\n\nCurrently, create_worker()'s callers are responsible for deciding\nwhether the newly created worker should be bound to the associated CPU\nand create_worker() sets WORKER_UNBOUND only for the workers for the\nunbound global_cwq.  Creation during normal operation is always via\nmaybe_create_worker() and @bind is true.  For workers created during\nhotplug, @bind is false.\n\nNormal operation path is planned to be used even while the CPU is\ngoing through hotplug operations or offline and this static decision\nwon't work.\n\nDrop @bind from create_worker() and decide whether to bind by looking\nat GCWQ_DISASSOCIATED.  create_worker() will also set WORKER_UNBOUND\nautmatically if disassociated.  To avoid flipping GCWQ_DISASSOCIATED\nwhile create_worker() is in progress, the flag is now allowed to be\nchanged only while holding all manager_mutexes on the global_cwq.\n\nThis requires that GCWQ_DISASSOCIATED is not cleared behind trustee's\nback.  CPU_ONLINE no longer clears DISASSOCIATED before flushing\ntrustee, which clears DISASSOCIATED before rebinding remaining workers\nif asked to release.  For cases where trustee isn't around, CPU_ONLINE\nclears DISASSOCIATED after flushing trustee.  Also, now, first_idle\nhas UNBOUND set on creation which is explicitly cleared by CPU_ONLINE\nwhile binding it.  These convolutions will soon be removed by further\nsimplification of CPU hotplug path.\n\nSigned-off-by: Tejun Heo <tj@kernel.org>\nAcked-by: \"Rafael J. Wysocki\" <rjw@sisk.pl>\nSigned-off-by: franciscofranco <franciscofranco.1990@gmail.com>","distinct":true,"url":"https://api.github.com/repos/tunturn/z3kernel/commits/0b0e724c793c1ca5396601bc93b6e845a6427048"}]}
{"actor":{"display_login":"tunturn"}}