[roll] Roll fuchsia [kernel][gicv3] Support LPI and ITS MSI-X On ARM64 platforms with a GICv3 Interrupt Translation Service (such as GCE t2a-standard-4), PCI devices such as NVMe and Virtio use MSI-X interrupts translated by the GICv3 ITS into Locality-specific Peripheral Interrupts (LPIs, INTID >= 8192). Previously, Zircon's GICv3 driver returned ZX_ERR_NOT_SUPPORTED for all MSI operations and masked ICC_IAR1_EL1 with 0x3ff, preventing MSI-X allocation and LPI dispatch. Update the GICv3 driver to support Redistributor LPIs and ITS-backed MSI/MSI-X interrupts: 1. Add GICR LPI (GICR_PROPBASER, GICR_PENDBASER, GICR_INVLPIR, GICR_INVALLR, GICR_SYNCR) and GICv3 ITS (GITS_*) register definitions in arm_gicv3_regs.h. 2. Read the ITS physical base address passed by the bootloader in zbi_dcfg_arm_gic_v3_driver_t::its_phys, with a fallback to mmio_phys + 0x80000 when gicr_offset >= 0xa0000. 3. Allocate and program the shared 64-KiB LPI configuration table and per-CPU 64-KiB LPI pending tables with Shareability WARL handling, and enable GICR_CTLR_ENABLE_LPIS on each CPU. 4. Probe and configure GITS_BASER device and collection tables (handling 64K/16K/4K page size and Shareability WARL fields) and the 64-KiB GITS_CBASER command queue, enable GITS_CTLR, map Collection 0 to CPU 0 (MAPC), and map PCI bus 0 device IDs (MAPD) sized according to GITS_TYPER.ITT_entry_size. 5. Implement gic_msi_is_supported, gic_msi_supports_masking, gic_msi_mask_unmask, gic_msi_alloc_block, gic_msi_free_block, and gic_msi_register_handler targeting GITS_TRANSLATER and issuing batched MAPTI, INV, and SYNC commands. 6. Update gic_handle_irq to mask ICC_IAR1_EL1 with 0xffffff (24-bit INTID) and dispatch LPIs (INTID >= 8192). Original-Original-Bug: None Test: Booted minimal.arm64 on GCE (t2a-standard-4) and verified GICv3 Test: ITS initialization, virtio-rng and nvme MSI-X interrupts, and Test: fxfs mount on NVMe. Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1882420 Original-Original-Revision: ffac7771dd435f0dbedbecbbe254167c962164ca GitOrigin-RevId: a86d56a67a6d51c0aed5afc0f7903514c85907d1 Change-Id: I08be4b6706189d60af7c9261ebe4418087158d2f Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1883219 Cr-Commit-Position: refs/heads/main@{#205381}
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.