qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] CC_DST problem


From: Fabrice Bellard
Subject: Re: [Qemu-devel] CC_DST problem
Date: Wed, 29 Aug 2007 22:58:00 +0200
User-agent: Thunderbird 1.5.0.9 (X11/20070212)

Alexander Graf wrote:
Hi,

I'm still trying to implement SVM correctly and hit a serious problem.
If I set CC_OP to EFLAGS / DYNAMIC after each instruction (so most
conditional operations are based on EFLAGS) everything works as expected.
If using CC_OP==CC_OP_EFLAGS only CC_SRC should be used and CC_DST is
supposed to be completely ignored.

So I set CC_DST to 0 (this happens when leaving and rejoining the
virtual machine, so this is the real problem) and if I do that, I get
funny segmentation faults in x86_64 guest userspace programs running in
the virtual machine (this is exactly what I see in kvm with my current
patchset as well), while 32 bit userspace programs simply hang.
So I guess this is the real problem.

Is there any logical reason CC_DST could be used with CC_OP==CC_OP_EFLAGS?

Attached to this email you will find a small patch that triggers this
problem.

Thanks for any reply that could help on this,

Alexander Graf

If you play with the CC_OP logic, it is better to disable the eflags optimization code in the translator (optimize_flags() function).

Regarding the implementation for SVM, you can look at how the CC are handled in SMM (do_smm_enter and helper_rsm). I see no particular problem here.

I suggest to try to suppress the additions in the static translator state as I feel most of the SVM intercepts can be tested in helpers where speed is not critical.

Regards,

Fabrice.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]