VirtualBox

Changeset 47123 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Jul 12, 2013 3:31:44 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87217
Message:

VMM/HM: Dispatch host NMIs on Intel. Added separate STAM counter for host NMIs with the necessary changes to old, new VT-x, AMD-V code.

Location:
trunk/include/VBox/vmm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r47109 r47123  
    15271527
    15281528
    1529 #if RT_INLINE_ASM_GNU_STYLE
    1530 # define __STR(x)   #x
    1531 # define STR(x)     __STR(x)
    1532 #endif
    1533 
    1534 
    15351529/** @defgroup grp_vmx_asm   vmx assembly helpers
    15361530 * @ingroup grp_vmx
     
    15471541 */
    15481542DECLASM(int) VMXRestoreHostState(uint32_t fRestoreHostFlags, PVMXRESTOREHOST pRestoreHost);
     1543
     1544
     1545/**
     1546 * Dispatches an NMI to the host.
     1547 */
     1548DECLASM(int) VMXDispatchHostNmi(void);
    15491549
    15501550
     
    15681568       "ja       2f                                             \n\t"
    15691569       "je       1f                                             \n\t"
    1570        "movl     $"STR(VERR_VMX_INVALID_VMXON_PTR)", %0         \n\t"
     1570       "movl     $"RT_XSTR(VERR_VMX_INVALID_VMXON_PTR)", %0     \n\t"
    15711571       "jmp      2f                                             \n\t"
    15721572       "1:                                                      \n\t"
    1573        "movl     $"STR(VERR_VMX_VMXON_FAILED)", %0              \n\t"
     1573       "movl     $"RT_XSTR(VERR_VMX_VMXON_FAILED)", %0          \n\t"
    15741574       "2:                                                      \n\t"
    15751575       "add      $8, %%esp                                      \n\t"
     
    16481648       ".byte   0x66, 0x0F, 0xC7, 0x34, 0x24  # VMCLEAR [esp]   \n\t"
    16491649       "jnc     1f                                              \n\t"
    1650        "movl    $"STR(VERR_VMX_INVALID_VMCS_PTR)", %0           \n\t"
     1650       "movl    $"RT_XSTR(VERR_VMX_INVALID_VMCS_PTR)", %0       \n\t"
    16511651       "1:                                                      \n\t"
    16521652       "add     $8, %%esp                                       \n\t"
     
    16961696       ".byte   0x0F, 0xC7, 0x34, 0x24  # VMPTRLD [esp]         \n\t"
    16971697       "jnc     1f                                              \n\t"
    1698        "movl    $"STR(VERR_VMX_INVALID_VMCS_PTR)", %0           \n\t"
     1698       "movl    $"RT_XSTR(VERR_VMX_INVALID_VMCS_PTR)", %0       \n\t"
    16991699       "1:                                                      \n\t"
    17001700       "add     $8, %%esp                                       \n\t"
     
    17501750       "ja     2f                                               \n\t"
    17511751       "je     1f                                               \n\t"
    1752        "movl   $"STR(VERR_VMX_INVALID_VMCS_PTR)", %0            \n\t"
     1752       "movl   $"RT_XSTR(VERR_VMX_INVALID_VMCS_PTR)", %0        \n\t"
    17531753       "jmp    2f                                               \n\t"
    17541754       "1:                                                      \n\t"
    1755        "movl   $"STR(VERR_VMX_INVALID_VMCS_FIELD)", %0          \n\t"
     1755       "movl   $"RT_XSTR(VERR_VMX_INVALID_VMCS_FIELD)", %0      \n\t"
    17561756       "2:                                                      \n\t"
    17571757       :"=rm"(rc)
     
    18541854# if RT_INLINE_ASM_GNU_STYLE
    18551855    __asm__ __volatile__ (
    1856        "movl   $"STR(VINF_SUCCESS)", %0                          \n\t"
     1856       "movl   $"RT_XSTR(VINF_SUCCESS)", %0                      \n\t"
    18571857       ".byte  0x0F, 0x78, 0xc2        # VMREAD eax, edx         \n\t"
    18581858       "ja     2f                                                \n\t"
    18591859       "je     1f                                                \n\t"
    1860        "movl   $"STR(VERR_VMX_INVALID_VMCS_PTR)", %0             \n\t"
     1860       "movl   $"RT_XSTR(VERR_VMX_INVALID_VMCS_PTR)", %0         \n\t"
    18611861       "jmp    2f                                                \n\t"
    18621862       "1:                                                       \n\t"
    1863        "movl   $"STR(VERR_VMX_INVALID_VMCS_FIELD)", %0           \n\t"
     1863       "movl   $"RT_XSTR(VERR_VMX_INVALID_VMCS_FIELD)", %0       \n\t"
    18641864       "2:                                                       \n\t"
    18651865       :"=&r"(rc),
  • trunk/include/VBox/vmm/vm.h

    r46833 r47123  
    149149        struct HMCPU    s;
    150150#endif
    151         uint8_t             padding[5504];      /* multiple of 64 */
     151        uint8_t             padding[5568];      /* multiple of 64 */
    152152    } hm;
    153153
     
    226226
    227227    /** Align the following members on page boundary. */
    228     uint8_t                 abAlignment2[256];
     228    uint8_t                 abAlignment2[192];
    229229
    230230    /** PGM part. */
  • trunk/include/VBox/vmm/vm.mac

    r46268 r47123  
    135135
    136136    .cpum                   resb 3584
    137     .hm                     resb 5504
     137    .hm                     resb 5568
    138138    .em                     resb 1472
    139139    .iem                    resb 3072
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