[roll] Roll fuchsia Reland "[kernel][scheduler] Use mp_reschedule_self when holding a spinlock" This is a reland of commit d87d35461fc1ca3cd2c246be25fecf0e93c2d109 Original change's description: > [kernel][scheduler] Use mp_reschedule_self when holding a spinlock > > This fixes a bug where triggering a reschedule of the calling CPU > while holding a spinlock could result in an arbitrarily delayed > preemption. > > Now, when holding one or more spinlocks, we use mp_reschedule_self in > Reschedule and RescheduleMask to trigger a future preemption of the > calling CPU once it has released its spinlocks and re-enabled > interrupts. > > This change effectively makes holding a spinlock imply that preemption > is disabled (deferred) and ensure that a deferred preemption will > occur promptly upon dropping the spinlock and re-enabling interrupts. > > While it is now longer necessary to explicitly disable > preemption (e.g. using AutoPreemptDisabler) around spinlock critical > sections that are likely to reschedule, it is still a good idea to do > so because it will likely perform better than this new approach (self > IPI). > > Add kcounter to track number of self-IPI events. > > Original-Bug: 42143537 > Original-Bug: 457759524 > Change-Id: I758cd28bff6cb3bdcc368bcef7d66e8ba7184c70 > Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1415574 > Reviewed-by: John Grossman <johngro@google.com> > Reviewed-by: Corey Tabaka <eieio@google.com> > Fuchsia-Auto-Submit: Nick Maniscalco <maniscalco@google.com> > Commit-Queue: Nick Maniscalco <maniscalco@google.com> Original-Bug: 42143537 Original-Bug: 457759524 Run-All-Tests: true Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1422596 Original-Revision: 3945356324cf44e671f6defb63f7a20f3fdaeb0a GitOrigin-RevId: 9548f5f34ea35a8752d6e12b196a83ffc24122a4 Change-Id: I3f0d424d8efc4cc5403596bf7bb8d27875c7d39c
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.