VirtualBox

Changeset 72468 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jun 7, 2018 9:38:33 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
122953
Message:

IEM: Missing IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX() for svm instructions. Added comment to vmcall and vmmcall explaining why no CPU features are checked when decoding. bugref:9044

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r72451 r72468  
    304304{
    305305    IEMOP_MNEMONIC(vmcall, "vmcall");
     306    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the VMX instructions. ASSUMING no lock for now. */
     307
     308    /* Note! We do not check any CPUMFEATURES::fSvm here as we (GIM) generally
     309             want all hypercalls regardless of instruction used, and if a
     310             hypercall isn't handled by GIM or HMSvm will raise an #UD.
     311             (NEM/win makes ASSUMPTIONS about this behavior.)  */
    306312    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmcall);
    307313}
     
    437443{
    438444    IEMOP_MNEMONIC(vmrun, "vmrun");
     445    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    439446    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmrun);
    440447}
     
    447454{
    448455    IEMOP_MNEMONIC(vmmcall, "vmmcall");
     456    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
     457
     458    /* Note! We do not check any CPUMFEATURES::fSvm here as we (GIM) generally
     459             want all hypercalls regardless of instruction used, and if a
     460             hypercall isn't handled by GIM or HMSvm will raise an #UD.
     461             (NEM/win makes ASSUMPTIONS about this behavior.) */
    449462    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmmcall);
    450463}
     
    455468{
    456469    IEMOP_MNEMONIC(vmload, "vmload");
     470    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    457471    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmload);
    458472}
     
    467481{
    468482    IEMOP_MNEMONIC(vmsave, "vmsave");
     483    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    469484    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmsave);
    470485}
     
    479494{
    480495    IEMOP_MNEMONIC(stgi, "stgi");
     496    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    481497    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_stgi);
    482498}
     
    491507{
    492508    IEMOP_MNEMONIC(clgi, "clgi");
     509    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    493510    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_clgi);
    494511}
     
    503520{
    504521    IEMOP_MNEMONIC(invlpga, "invlpga");
     522    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    505523    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_invlpga);
    506524}
     
    515533{
    516534    IEMOP_MNEMONIC(skinit, "skinit");
     535    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); /** @todo check prefix effect on the SVM instructions. ASSUMING no lock for now. */
    517536    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_skinit);
    518537}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette