Skip to content

Restore Windows Arm64 support for CPUs without LSE - #132345

Merged
tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-restore-arm64-baseline
Aug 15, 2026
Merged

tannergooding merged 1 commit into
dotnet:mainfrom
tannergooding:tannergooding-restore-arm64-baseline

Conversation

@tannergooding

Copy link
Copy Markdown
Member

Restore the Windows Arm64 JIT and NativeAOT minimum to Armv8-A by treating LSE as an optional CPU feature. Windows 10 IoT supports NXP i.MX 8 processors without LSE, but the current baseline rejects them during runtime startup.

The ReadyToRun baseline remains Armv8.2-A + RCPC. On affected hardware, R2R images are rejected and execution falls back to the JIT, preserving the existing R2R contract while allowing the process to run.

Fixes #132340

Note

This pull request was created with GitHub Copilot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restores the Windows Arm64 runtime (JIT + NativeAOT) minimum CPU baseline to Armv8-A by treating LSE (Armv8.1 atomics) as an optional feature on Windows, allowing supported Windows 10 IoT Arm64 devices without LSE to run. The ReadyToRun baseline remains higher, so older CPUs will reject incompatible R2R images and fall back to JIT as intended.

Changes:

  • Update Windows Arm64 CPU feature detection so missing LSE no longer marks the CPU as baseline-invalid, while still advertising Atomics when present.
  • Adjust CoreCLR and NativeAOT startup fatal error messaging so Windows Arm64 no longer claims LSE is part of the baseline.
  • Remove the Windows-only LSE requirement from tool-time baseline selection for ARM64 (non-R2R), aligning NativeAOT minimum requirements with Armv8-A.
Show a summary per file
File Description
src/native/minipal/cpufeatures.c Treats LSE/Armv8.1 atomics as optional on Windows Arm64 while still reporting the feature when available.
src/coreclr/vm/codeman.cpp Updates the Arm64 baseline-missing fatal error message so Windows no longer lists LSE as required.
src/coreclr/tools/Common/InstructionSetHelpers.cs Removes the Windows-only “lse” baseline requirement for non-R2R ARM64 builds (NativeAOT minimum).
src/coreclr/nativeaot/Runtime/startup.cpp Mirrors the CoreCLR baseline-missing fatal error message change for NativeAOT startup on Windows Arm64.

Review details

  • Files reviewed: 4/4 changed files
  • Comments generated: 0
  • Review effort level: Lite

@jkotas

jkotas commented Aug 15, 2026

Copy link
Copy Markdown
Member

@tannergooding

Copy link
Copy Markdown
Member Author

/ba-g net.httplistener timeouts

@tannergooding

Copy link
Copy Markdown
Member Author

Could you please to submit a matching PR to update https://github.com/dotnet/docs/blob/main/docs/core/compatibility/jit/11/minimum-hardware-requirements.md as well?

Yes, was going to work on that after I got the product changes done and in for RC1

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Arm64 minimum hardware requirements excludes some Windows 10 IoT supported CPUs

3 participants