diff options
Diffstat (limited to 'gitlab/issues_text/target_missing/host_missing/accel_missing/2977')
| -rw-r--r-- | gitlab/issues_text/target_missing/host_missing/accel_missing/2977 | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gitlab/issues_text/target_missing/host_missing/accel_missing/2977 b/gitlab/issues_text/target_missing/host_missing/accel_missing/2977 new file mode 100644 index 000000000..63545e09f --- /dev/null +++ b/gitlab/issues_text/target_missing/host_missing/accel_missing/2977 @@ -0,0 +1,11 @@ +QEMU SVM VMCB exit_code is uint32_t when AMD spec requires uint64_t +Description of problem: +QEMU's SVM implementation incorrectly uses a 32-bit parameter for the exit code in the `cpu_vmexit` function, despite the AMD SVM specification requiring a 64-bit exit code field in the VMCB (Virtual Machine Control Block). + +I think the issue is in `target/i386/svm.c` in the `cpu_vmexit` function. + +The `exit_code` parameter is declared as `uint32_t` but should be `uint64_t` according to the AMD SVM specification. This causes exit codes to be truncated to 32 bits, resulting in values like 0xffff_ffff instead of the expected 0xffff_ffff_ffff_ffff. +Steps to reproduce: + +Additional information: +[this](https://stackoverflow.com/questions/79632531/qemu-svm-vmcb-exit-code-is-uint32-t-when-amd-spec-requires-uint64-t?noredirect=1#comment140448815_79632531) question I posted on stack overflow |