[roll] Roll fuchsia [pci] Enhanced legacy interrupt support

This change contains the majority of the implementation for RFC-0070.

When a userspace PCI_IRQ_MODE_LEGACY IRQ is triggered the bus driver's
IRQ worker will now disable that driver's IRQ generation ability until
the interrupt is handled and acked. This is functionally similar to how
the kernel PCI driver handles this, except it must be done in userspace.

A new legacy IRQ mode, PCI_IRQ_MODE_LEGACY_NOACK, has been added. In
this mode the bus driver will allow up to a configured number of
interrupts per second from a given device before determining a device
has too many spurious IRQs. In the event that this happens the device's
IRQ generation will be disabled until the device changes IRQ modes. In
this CL that limit is 512 interrupts a second, or an interrupt every 2
milliseconds. This presently is set at bus level, but can be both
adjusted and moved to per-device constraints in the future if testing
finds it necessary. Since high performance devices will be using MSI
or MSI-X typically, we may find this limit to be acceptable in practice
provided the bus driver's CPU usage stays low.

Original-Bug: 32978, 71188
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/472848
Original-Revision: b19112d265ccfc0738d8d09a661a744f3a992eb1
GitOrigin-RevId: 7c80781da7f6dd83c4041e902acce498bc09d019
Change-Id: Ib0c194e5629281777cb5e80196ff4ff8326f2576
1 file changed
tree: a8ca1973848c989c107f2deb49848d9494d5913e
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

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 via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.