feat(aarch64): add Jetson Orin support and UEFI memory map virtualization - #366
Open
ForeverYolo wants to merge 16 commits into
Open
feat(aarch64): add Jetson Orin support and UEFI memory map virtualization#366ForeverYolo wants to merge 16 commits into
ForeverYolo wants to merge 16 commits into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds NVIDIA Jetson Orin (AArch64) board support and extends AArch64 virtualization features (UEFI-related config/plumbing, early cache handling, IRQ/GIC improvements, and UART output behavior), along with some tooling/build-matrix updates to integrate the new platform.
Changes:
- Added Jetson Orin board definition and build/run assets (board config, linker script, DTS, runner, cargo config template).
- Introduced AArch64 UEFI-related configuration types and a new
aarch64::uefimodule, and invoked arch-specific arg-based config fromrust_main. - Updated UART/GIC handling (sequential UART gating, GICv3 redistributor layout handling, GICv2 inject fix) and build/test scripts (FEATURES removal, Jenkins matrix update).
Reviewed changes
Copilot reviewed 46 out of 46 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/kconfig/requirements.txt | Adds tomli dependency for Python < 3.11 compatibility. |
| tools/kconfig/kconfig_cli.py | Makes TOML parsing work on Python < 3.11 via tomli fallback. |
| src/main.rs | Calls new arch_config_by_args() during primary init. |
| src/logging.rs | Adds optional sequential UART output gating before printing. |
| src/device/uart/uart_16550.rs | Adds console_free_check() for 16550 UART. |
| src/device/uart/pl011.rs | Adds console_free_check() for PL011 UART. |
| src/device/uart/mod.rs | Re-exports console_free_check() for supported AArch64 UARTs. |
| src/device/irqchip/gicv3/vgic.rs | Registers handler for “unused” GICR redistributor regions. |
| src/device/irqchip/gicv3/mod.rs | Refactors GICR base discovery to use a computed layout; exposes unused bases. |
| src/device/irqchip/gicv3/gicr.rs | Implements GICR base layout discovery for non-contiguous redistributor frames. |
| src/device/irqchip/gicv2/gic.rs | Adjusts LR programming to avoid SGI-related interrupt loss. |
| src/config.rs | Bumps CONFIG_MAGIC_VERSION to reflect config struct layout changes. |
| src/arch/x86_64/mod.rs | Adds no-op arch_config_by_args() for API parity. |
| src/arch/riscv64/mod.rs | Adds no-op arch_config_by_args() for API parity. |
| src/arch/loongarch64/mod.rs | Adds no-op arch_config_by_args() for API parity. |
| src/arch/aarch64/zone.rs | Adds UEFI config types into AArch64 zone config; updates cache invalidation callsite. |
| src/arch/aarch64/uefi.rs | New module for UEFI memory map virtualization logic. |
| src/arch/aarch64/trap.rs | Adds sysreg decode and narrows trapped sysreg handling to ICC_SGI1R_EL1. |
| src/arch/aarch64/mod.rs | Adds optional UEFI module and wires it into arch_config_by_args(). |
| src/arch/aarch64/entry.rs | Adds early cache invalidation mask support per CPU in boot asm. |
| src/arch/aarch64/cpu.rs | Updates HCR_EL2 configuration (includes PAC-related bits). |
| src/arch/aarch64/cache.rs | Moves cache-line-size detection into invalidate_dcache_range(). |
| platform/riscv64/qemu-plic/test/runner.sh | Removes FEATURES-based logging/handling in runner. |
| platform/riscv64/qemu-aia/test/runner.sh | Removes FEATURES-based logging/handling in runner. |
| platform/aarch64/zcu102/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/sysoul_x3300/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/rk3588/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/rk3568/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/qemu-gicv3/test/runner.sh | Removes FEATURES-based logic; standardizes runner behavior. |
| platform/aarch64/qemu-gicv3/board.rs | Adds early cache invalidate masks, expands root CPUs, adds extra IO regions/IRQs, adds UefiConfig::NoUefi. |
| platform/aarch64/qemu-gicv2/test/runner.sh | Removes FEATURES-based logic; fixes GIC version selection to v2. |
| platform/aarch64/qemu-gicv2/board.rs | Adds early cache invalidate masks, expands root CPUs, adds IO regions, adds UefiConfig::NoUefi. |
| platform/aarch64/phytium-pi/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/ok6254-c/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| platform/aarch64/jeston-orin/test/runner.sh | Adds a new runner for the Jetson Orin platform. |
| platform/aarch64/jeston-orin/platform.mk | Adds make/QEMU integration for the Jetson Orin platform. |
| platform/aarch64/jeston-orin/linker.ld | Adds a Jetson Orin-specific linker script. |
| platform/aarch64/jeston-orin/kconfig/defconfig | Adds a defconfig for Jetson Orin (AArch64 + GICv3 + sequential output + UEFI support). |
| platform/aarch64/jeston-orin/image/dts/zone0.dts | Adds a Jetson Orin zone0 DT source including UEFI-related /chosen properties. |
| platform/aarch64/jeston-orin/image/dts/Makefile | Adds DTB build rules for the Orin DTS. |
| platform/aarch64/jeston-orin/cargo/config.template.toml | Adds per-board cargo runner/rustflags template for Orin. |
| platform/aarch64/jeston-orin/board.rs | Adds Jetson Orin board definition, memory regions, IRQ bitmap, and UEFI config values. |
| platform/aarch64/imx8mp/board.rs | Extends board arch config with UefiConfig::NoUefi. |
| kconfig/Kconfig | Adds Kconfig options for AArch64 UEFI support and sequential output. |
| kconfig/cfg_map.toml | Maps new Kconfig symbols to Rust cfg flags. |
| Jenkinsfile | Adds Jetson Orin to the Jenkins build matrix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
agicy
reviewed
Jul 26, 2026
Define cache invalidation masks for all AArch64 boards, complete the Dayu200 zone configuration, and fix the qemu-gicv2 fw-cfg mapping. Correct UART idle checks and safely decode trapped system-register accesses, including XZR operands.
Contributor
Author
|
In d6b4b50 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add NVIDIA Jetson Orin platform support and improve AArch64 virtualization for UEFI boot and platform-specific hardware behavior.
Changes
FEATURES-based runner logicConfiguration
Jetson Orin uses the following Kconfig options: