diff options
Diffstat (limited to 'results/classifier/deepseek-2-tmp/output/hypervisor/1809144')
| -rw-r--r-- | results/classifier/deepseek-2-tmp/output/hypervisor/1809144 | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/results/classifier/deepseek-2-tmp/output/hypervisor/1809144 b/results/classifier/deepseek-2-tmp/output/hypervisor/1809144 deleted file mode 100644 index e09a04524..000000000 --- a/results/classifier/deepseek-2-tmp/output/hypervisor/1809144 +++ /dev/null @@ -1,36 +0,0 @@ - -SVM instructions fail with SVME bit enabled - -I was trying to use QEMU/TCG to emulate some stuff that uses SVM. -I know SVM is only partially implemented but I gave it a try anyway. - -I found that if SVM is enabled in the same basic block in which there's a call to VMSAVE/etc, -the call fails as illegal op because the flags don't get updated correctly. - -The pseudocode for the asm I'm running is: - -``` -EFER |= SVME; set the appropriate bit with wrmsr -vmsave -``` - -This is an example of the relevant translate.c code: - -``` - if (!(s->flags & HF_SVME_MASK) || !s->pe) { - goto illegal_op; - } - if (s->cpl != 0) { - gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); - break; - } -``` - -s->flags doesn't get updated after the wrmsr instruction and so QEMU raises an illegal opcode interrupt. - -A quick fix is to make the tb end after `wrmsr` instructions, but it's an hack afaik. -I'm not too comfortable with QEMU's code, so I don't know what a proper fix would be. - -Cheers, - -thebabush \ No newline at end of file |