Skip to content

Validate that the ARM64 binaries are 64KB page size compatible#2251

Merged
stoo-davies merged 3 commits into
NVIDIA:mainfrom
stoo-davies:stoo-arm64-page-checks-work
Jun 8, 2026
Merged

Validate that the ARM64 binaries are 64KB page size compatible#2251
stoo-davies merged 3 commits into
NVIDIA:mainfrom
stoo-davies:stoo-arm64-page-checks-work

Conversation

@stoo-davies

Copy link
Copy Markdown
Contributor

Description

Issue 334 requests that all ARM64 binaries support kernels with 64KB page sizes.
That appears to be the default in the linker that rust is using, and the built in linker that go uses. We also don't appear to be directly calling any system calls that would require page size or page aligned buffers.

This PR adds some validation to the build process, to check the compatibility after compile.

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Related Issues (Optional)

#334

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

Signed-off-by: Stoo Davies <189670495+stoo-davies@users.noreply.github.com>
Signed-off-by: Stoo Davies <189670495+stoo-davies@users.noreply.github.com>
@stoo-davies stoo-davies requested a review from a team as a code owner June 5, 2026 17:42
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 98d01580-ad9f-4f42-8c79-4f9929b3bca6

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Signed-off-by: Stoo Davies <189670495+stoo-davies@users.noreply.github.com>
@stoo-davies stoo-davies requested a review from chet June 5, 2026 19:52
@stoo-davies

Copy link
Copy Markdown
Contributor Author

Output from the checks in this PR. The script allows for checking more than 1 path per binary, so it's expected to get some SKIP messages...

  build-bluefield-binaries

  OK   page_size=0x10000 load_segments=2 /workspace/target/aarch64-unknown-linux-gnu/release/forge-dpu-agent
  SKIP missing /workspace/target/release/forge-dpu-agent
  OK   page_size=0x10000 load_segments=2 /workspace/target/aarch64-unknown-linux-gnu/release/forge-dhcp-server
  SKIP missing /workspace/target/release/forge-dhcp-server
  OK   page_size=0x10000 load_segments=2 /workspace/target/aarch64-unknown-linux-gnu/release/carbide-fmds
  SKIP missing /workspace/target/release/carbide-fmds
  OK   page_size=0x10000 load_segments=2 /workspace/target/aarch64-unknown-linux-gnu/release/forge-dpu-otel-agent
  SKIP missing /workspace/target/release/forge-dpu-otel-agent

  build-boot-artifacts-bfb / build

  OK   page_size=0x10000 load_segments=2 /workspace/target/aarch64-unknown-linux-gnu/release/forge-scout
  SKIP missing /workspace/target/release/forge-scout
  SKIP missing /workspace/target/aarch64-unknown-linux-gnu/release/forge-dpu-agent
  OK   page_size=0x10000 load_segments=2 /workspace/target/release/forge-dpu-agent
  SKIP missing /workspace/target/aarch64-unknown-linux-gnu/release/forge-dhcp-server
  OK   page_size=0x10000 load_segments=2 /workspace/target/release/forge-dhcp-server
  SKIP missing /workspace/target/aarch64-unknown-linux-gnu/release/forge-dpu-otel-agent
  OK   page_size=0x10000 load_segments=2 /workspace/target/release/forge-dpu-otel-agent

  build-release-container-aarch64 / build

  [cargo-make] INFO - Running Task: check-aarch64-release-container-services-page-size
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide-api
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide-dns
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide-admin-cli
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide-dsx-exchange-consumer
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/forge-dpu-agent
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/forge-dhcp-server
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/forge-hw-health
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/forge-log-parser
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/ssh-console
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/carbide-bmc-proxy
  OK   page_size=0x10000 load_segments=2 /carbide/target/release/libdhcp.so

@stoo-davies stoo-davies enabled auto-merge (squash) June 5, 2026 21:10
@rwthompsonii

Copy link
Copy Markdown
Contributor

I'm ok with the script, but I'd lightly suggest, and you can ignore, that you should just structure the actual check in the justfile/makefile as a post-build step, rather than building into each of the build steps, that is, create a "page check" target that has a pre-requisite of the build steps you've modified, and have the calling target call that one instead. it makes it far easier to see what places need this, and it's easier to use it again later, if we build more things, rather than having to remember to inject this script into each calling location.

@stoo-davies stoo-davies merged commit 65b199a into NVIDIA:main Jun 8, 2026
54 checks passed
@stoo-davies stoo-davies deleted the stoo-arm64-page-checks-work branch June 8, 2026 21:04
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.

2 participants