[roll] Roll fuchsia [zircon][interrupt] Fix an issue with virtual interrupt triggering. When a user triggers a virtual interrupt which is configured as a wake source, it may need to poke the boot CPU in the case that the boot CPU is either on its way into suspend, or just starting to come out of it. Part of poking the CPU will involve setting the pending-preempt flag on it to make sure that a reschedule takes place. Doing this involves an ASSERT that the per-cpu blocking-disallowed flag is set. This happens automatically at the start of a hard IRQ handler, so for hardware interrupt wake-sources, this is a given. Virtual interrupts need to hold a spinlock during this poke, so with interrupts off and a spinlock held, blocking is effectively disabled. The per-cpu flag is not set, however, because there exist edge cases where blocking _is_ logically allowed while holding a spinlock with interrupts off. Most notably, when calling into Scheduler::Block. So, when calling the IdlePowerThread trigger function, make sure that interrupts are disabled (as they always should be) and manually set the flag, before setting it back to its previous state during the unwind. Also, add the regression test that Gemini wrote which discovered the issue in the first place. Original-Original-Fixed: 511517231 Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1632018 Original-Original-Revision: 0c86847e7808b66b1314c4dcc1e71442075a102b GitOrigin-RevId: 2b2b2fac682c6781d9d343a690b8f719ef28ad66 Change-Id: Ic28101f1e4f88f6b8af3b99cd7c10c491d32bec3 Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1644075 Cr-Commit-Position: refs/heads/main@{#194360}
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.