arch/risc-v: Enable VPU initialization for QEMU RV #17767
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes a runtime crash on QEMU
rv-virtwhen the RISC-V Vector extension is enabled.The
riscv_vpuconfig()function, responsible for initializing themstatus.VSbit (Vector Status), was defined but never called during the board-specific startup inqemu_rv_start()for therv-virtplatform. This oversight causedmstatus.VSto remain in theOffstate (0x00), leading to anIllegal Instructionexception (MCAUSE: 0x2) when the OS attempted to save or restore vector context .This patch adds the necessary call to
riscv_vpuconfig()inarch/risc-v/src/qemu-rv/qemu_rv_start.c, ensuring the VPU is correctly initialized on boot.Impact
rv-virt) can now compile and boot successfully without runtime crashes. Users not enabling Vector extensions are unaffected.Testing
Host Environment:
Verification Steps:
Build Verification:
rv-virt:nsh(Configured withCONFIG_ARCH_RV_ISA_V=y).make -jRuntime Verification:
qemu-system-riscv32 \ -nographic \ -M virt \ -bios none \ -kernel ./nuttx \ -cpu max,vlen=256,elen=64This occurs because
mstatus.VSis not correctly initialized, preventing vector instructions from executing.ls,ps). TheIllegal Instructionexception is no longer observed.Boot Log (After Fix):