| commit | 1eae9c3610cdf6ee2fa9322de6000449aa34040b | [log] [tgz] |
|---|---|---|
| author | Nick Maniscalco <maniscalco@fuchsia.infra.roller.google.com> | Thu Nov 13 02:18:14 2025 -0800 |
| committer | Copybara-Service <copybara-worker@google.com> | Thu Nov 13 02:20:05 2025 -0800 |
| tree | 00c39b0a8f92359fe220b3b9d3f92cde5270a521 | |
| parent | e307c3902cf0f80a6974ed789c36ee255d8845e9 [diff] |
[roll] Roll fuchsia [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 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1415574 Original-Revision: d87d35461fc1ca3cd2c246be25fecf0e93c2d109 GitOrigin-RevId: 732eea9cc1a82abb16ee0b380359a9945a8f0f2b Change-Id: I5075e5944349f8414766a6191b495f3a4802d205
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.