Skip to content

armv8: Support loading 32-bit OS in AArch32 execution state

york sun u-boot 7 versions – New

Get series with b4
b4 am AM4PR0401MB173283FF916EC9C333C20D089AB70@AM4PR0401MB1732.eurprd04.prod.outlook.com

Versions newest first · linked by author and title

  1. v8 Latest posting 2/20 of 3 patches 0 repliesNew
  2. v8 posting 1/23 patches 0 repliesSuperseded
  3. v72 patches 0 repliesSuperseded
Earlier versions · 4
VersionPostedPatchesRepliesStatus
v60 of 2 patches0 repliesSuperseded
v41 of 2 patches0 repliesSuperseded
v31 of 2 patches0 repliesSuperseded
v12 patches0 repliesSuperseded

Patches in v8 posting 2/2 No applies recorded yet

None of the 3 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v8 yet.

Read the v8 thread

Cover letter [U-Boot] [PATCH v8 0/3] armv8: Support loading 32-bit OS in AArch32 execution state
Quoted 49 lines · Alison Wang

This series is to support loading a 32-bit OS, the execution state will change from AArch64 to AArch32 when jumping to kernel. The architecture information will be got through checking FIT image, then U-Boot will load 32-bit OS or 64-bit OS automatically.

Spin-table method is used for secondary cores to load 32-bit OS.
The architecture information will be got through checking FIT image and saved in the os_arch element of spin-table, then the secondary cores will check os_arch and jump to 32-bit OS or 64-bit OS automatically.

PSCI method can also be used for secondary cores to load 32-bit OS.
As PSCI and secure monitor firmware framework are enabled, loading 32-bit OS is supported in such case. The default target exception level returned to U-Boot is EL2, so the corresponding work to switch to AArch32 EL2 and jump to 32-bit OS are done in U-Boot and secure firmware together.

---------------------------------------
Changes in v8:
- Fix the issue when U-Boot is running in EL2 or EL1.
- Support loading 32-bit OS with PSCI enabled.

Changes in v7:
- Move the call for armv8_switch_to_el2_m into the first patch.

Changes in v6:
- Modified armv8_switch_to_el1(). It will always jump to ep when switching to AArch64 or AArch32 modes.
- Make other platforms compatible with the new armv8_switch_to_el2() and armv8_switch_to_el1().
- Make secondary_switch_to_el1() always jump to ep when switching to AArch64 or AArch32 modes.

Changes in v5:
- Modified armv8_switch_to_el2(). It will always jump to ep when switching to AArch64 or AArch32 modes.
- Make secondary_switch_to_el2() always jump to ep when switching to AArch64 or AArch32 modes.

Changes in v4:
- Correct config ARM64_SUPPORT_AARCH32.
- Omit arch and ftaddr arguments.
- Rename "xreg5" to "tmp".
- Use xxx_RES1 to combine all RES1 fields in xxx register.
- Use an immediate cmp directly.
- Use #ifdef for CONFIG_ARM64_SUPPORT_AARCH32.

Changes in v3:
- Comments the functions and the arguments.
- Rename the real parameters.
- Use the macros instead of the magic values.
- Remove the redundant codes.
- Clean up all of the mess in boot_jump_linux().
- Add CONFIG_ARM64_SUPPORT_AARCH32 to detect for some ARM64 system doesn't support AArch32 state.
- Adjust the arguments for armv8_switch_to_el2_m and armv8_switch_to_el1_m.

Changes in v2:
- armv8_switch_to_el2_aarch32() is removed. armv8_switch_to_el2_m is used to switch to AArch64 EL2 or AArch32 Hyp.
- armv8_switch_to_el1_aarch32() is removed. armv8_switch_to_el1_m is used to switch to AArch64 EL1 or AArch32 SVC.
- Support to call armv8_switch_to_el2_m and armv8_switch_to_el1_m.

Quoted 3 lines

----------------------------------------------------------------
Alison Wang (3):
armv8: Support loading 32-bit OS in AArch32 execution state

Squashed with Alex Graf's patch "ls2080: efi_loader: Move EL2 switch to function call based version".

Quoted 3 lines

armv8: fsl-layerscape: SMP support for loading 32-bit OS
armv8: fsl-layerscape: Support loading 32-bit OS with PSCI enabled

This set is applied to fsl-qoriq, awaiting upstream. Thanks.

York