Skip to content

feat(test): add Graviton5 (Neoverse V3) CPU feature baselines#6039

Draft
not4s wants to merge 1 commit into
firecracker-microvm:mainfrom
not4s:jaehoc/g5-cpu-baseline
Draft

feat(test): add Graviton5 (Neoverse V3) CPU feature baselines#6039
not4s wants to merge 1 commit into
firecracker-microvm:mainfrom
not4s:jaehoc/g5-cpu-baseline

Conversation

@not4s

@not4s not4s commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Changes

Registers AWS Graviton5 (Neoverse V3, MIDR part 0xd84) so the aarch64 CPU-feature tests recognise it:

  • utils_cpuid.py: add ARM_NEOVERSE_V3 and map 0xd84 → ARM_NEOVERSE_V3 (mirrors the existing N1/V1/V2 entries).
  • test_cpu_features_aarch64.py: G5_FEATS = G4_FEATS | {afp, ecv} + V3 match cases.
  • test_cpu_features_host_vs_guest.py: V3 case (same SVE/PAC host-only set as V2; wfxt gated on host≥6.1 and guest≥6.1).

Reason

Part of onboarding AWS Graviton5 (m9g.metal) to Firecracker. The aarch64 CPU-feature tests key off the CPU model, so on a Graviton5 host they currently fall through (unrecognised MIDR 0xd84) and fail. Registering V3 with its expected guest feature set lets test_cpu_features_aarch64 and test_cpu_features_host_vs_guest pass on G5, following the same pattern used for G4 (Neoverse V2).

License Acceptance

By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following Developer
Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md.

PR Checklist

  • I have read and understand CONTRIBUTING.md.
  • I have run tools/devtool checkbuild --all to verify that the PR passes
    build checks on all supported architectures.
  • I have run tools/devtool checkstyle to verify that the PR passes the
    automated style checks.
  • I have described what is done in these changes, why they are needed, and
    how they are solving the problem in a clear and encompassing way.
  • I have updated any relevant documentation (both in code and in the docs)
    in the PR.
  • I have mentioned all user-facing changes in CHANGELOG.md.
  • If a specific issue led to this PR, this PR closes the issue.
  • When making API changes, I have followed the
    Runbook for Firecracker API changes.
  • I have tested all new and changed functionalities in unit tests and/or
    integration tests.
  • I have linked an issue to every new TODO.

  • This functionality cannot be added in rust-vmm.

@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.85%. Comparing base (5ac3f5f) to head (c5f231d).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #6039   +/-   ##
=======================================
  Coverage   82.85%   82.85%           
=======================================
  Files         277      277           
  Lines       30633    30633           
=======================================
  Hits        25381    25381           
  Misses       5252     5252           
Flag Coverage Δ
5.10-m5n.metal 83.09% <ø> (-0.01%) ⬇️
5.10-m6a.metal 82.44% <ø> (-0.01%) ⬇️
5.10-m6g.metal 79.89% <ø> (-0.01%) ⬇️
5.10-m6i.metal 83.09% <ø> (-0.01%) ⬇️
5.10-m7a.metal-48xl 82.44% <ø> (-0.01%) ⬇️
5.10-m7g.metal 79.90% <ø> (ø)
5.10-m7i.metal-24xl 83.07% <ø> (-0.01%) ⬇️
5.10-m7i.metal-48xl 83.07% <ø> (-0.01%) ⬇️
5.10-m8g.metal-24xl 79.89% <ø> (-0.01%) ⬇️
5.10-m8g.metal-48xl 79.89% <ø> (ø)
5.10-m8i.metal-48xl 83.07% <ø> (-0.01%) ⬇️
5.10-m8i.metal-96xl 83.07% <ø> (-0.01%) ⬇️
6.1-m5n.metal 83.12% <ø> (-0.01%) ⬇️
6.1-m6a.metal 82.47% <ø> (-0.01%) ⬇️
6.1-m6g.metal 79.89% <ø> (-0.01%) ⬇️
6.1-m6i.metal 83.12% <ø> (ø)
6.1-m7a.metal-48xl 82.46% <ø> (-0.01%) ⬇️
6.1-m7g.metal 79.89% <ø> (-0.01%) ⬇️
6.1-m7i.metal-24xl 83.13% <ø> (-0.01%) ⬇️
6.1-m7i.metal-48xl 83.13% <ø> (ø)
6.1-m8g.metal-24xl 79.89% <ø> (ø)
6.1-m8g.metal-48xl 79.89% <ø> (-0.01%) ⬇️
6.1-m8i.metal-48xl 83.14% <ø> (-0.01%) ⬇️
6.1-m8i.metal-96xl 83.13% <ø> (ø)
6.18-m5n.metal 83.12% <ø> (ø)
6.18-m6a.metal 82.47% <ø> (ø)
6.18-m6g.metal 79.89% <ø> (-0.01%) ⬇️
6.18-m6i.metal 83.12% <ø> (-0.01%) ⬇️
6.18-m7a.metal-48xl 82.46% <ø> (ø)
6.18-m7g.metal 79.89% <ø> (-0.01%) ⬇️
6.18-m7i.metal-24xl 83.13% <ø> (-0.02%) ⬇️
6.18-m7i.metal-48xl 83.13% <ø> (-0.02%) ⬇️
6.18-m8g.metal-24xl 79.89% <ø> (-0.01%) ⬇️
6.18-m8g.metal-48xl 79.89% <ø> (ø)
6.18-m8i.metal-48xl 83.13% <ø> (ø)
6.18-m8i.metal-96xl 83.13% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Register Graviton5 so the aarch64 CPU feature tests recognise it:
- utils_cpuid.py: add the ARM_NEOVERSE_V3 CpuModel and map MIDR part
  0xd84 (r0p1) to it.
- test_cpu_features_aarch64.py: G5_FEATS = G4_FEATS | {afp, ecv} and
  the ARM_NEOVERSE_V3 match cases for the default and SVE/PAC
  templates. wfxt (FEAT_WFxT) reaches the guest from the 6.1 guest
  kernel, so add it to the guest baseline when the guest kernel is
  >= 6.1.
- test_cpu_features_host_vs_guest.py: add the ARM_NEOVERSE_V3 case.
  Same SVE/PAC host-only set as G4, plus the shared ssbs host/guest
  handling.

Feature sets captured on m9g.metal-48xl across 5.10/6.1/6.18 hosts.

Signed-off-by: Jay Chung <jaehoc@amazon.com>
@not4s
not4s force-pushed the jaehoc/g5-cpu-baseline branch from 79cf1a9 to c5f231d Compare July 17, 2026 16:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant