Skip to content

Disable SME on iOS - #433

Open
fbarchard wants to merge 1 commit into
pytorch:mainfrom
fbarchard:fix-apple-sme-ios
Open

fbarchard wants to merge 1 commit into
pytorch:mainfrom
fbarchard:fix-apple-sme-ios

Conversation

@fbarchard

Copy link
Copy Markdown
Contributor

Check hw.optional.arm.sme_max_svl_b > 0 before enabling SME feature flags to ensure SME is only reported when the OS allows user-space execution.

Fixes #432

… > 0

Apple processors like A18/A19 physically support SME/SME2 in hardware,
so hw.optional.arm.FEAT_SME returns true. However, XNU on iOS disables
user-mode (EL0) SME execution (arm_sme_version() == 0), causing instructions
like SMSTART to fault with EXC_BAD_INSTRUCTION.

macOS and iPadOS (e.g. on M4) support and enable user-mode SME, setting
hw.optional.arm.sme_max_svl_b > 0.

Check hw.optional.arm.sme_max_svl_b > 0 before enabling SME feature flags
to ensure SME is only reported when the OS allows user-space execution.
@meta-cla meta-cla Bot added the cla signed label Sep 4, 2026
lemenkov pushed a commit to lemenkov/libyuv that referenced this pull request Sep 19, 2026
Apple processors (such as A18/A19) may report
hw.optional.arm.FEAT_SME = 1 even when the XNU kernel on iOS disables
EL0 (user-mode) SME execution (hw.optional.arm.sme_max_svl_b == 0),
which causes SMSTART or RDSVL to fault with EXC_BAD_INSTRUCTION.
Gate SME/SME2 flags on have_feature("hw.optional.arm.sme_max_svl_b")
being nonzero. See pytorch/cpuinfo#432 and
pytorch/cpuinfo#433.

Also add SME2 detection test in cpu_test.cc and LIBYUV_DISABLE_SME2
environment variable support in unit_test.cc.

Test: libyuv_unittest --gtest_filter=*TestLinuxAArch64*
Bug: 8339302
Change-Id: If3e4d425ebaa89bf27965295ebdb43b844797ca1
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8428226
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Commit-Queue: Frank Barchard <fbarchard@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

iOS disables user-mode SME execution, causing SMSTART to fault with EXC_BAD_INSTRUCTION on A18/A19

2 participants