VirtualBox

Changeset 11979 in vbox for trunk/src


Ignore:
Timestamp:
Sep 2, 2008 1:00:58 PM (16 years ago)
Author:
vboxsync
Message:

Attempt to fix cpuid fixups (nasty code).

Location:
trunk/src/VBox/VMM/PATM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/PATMA.asm

    r8155 r11979  
    15431543    jb      cpuid_centaur
    15441544
     1545    ; Dirty assumptions in patmCorrectFixup about the pointer fixup order!!!!
    15451546cpuid_def:
    15461547    mov     eax, PATM_CPUID_DEF_PTR
  • trunk/src/VBox/VMM/PATM/PATMPatch.cpp

    r9344 r11979  
    156156#endif
    157157
     158                /**
     159                 * BE VERY CAREFUL WITH THESE FIXUPS. TAKE INTO ACCOUNT THAT PROBLEMS MAY ARISE WHEN RESTORING A SAVED STATE WITH
     160                 * A DIFFERENT HYPERVISOR LAYOUT.
     161                 */
    158162                switch (pAsmRecord->uReloc[i])
    159163                {
     
    231235
    232236                case PATM_CPUID_STD_PTR:
     237                    /* @todo dirty hack when correcting this fixup (state restore) */
    233238                    dest = CPUMGetGuestCpuIdStdGCPtr(pVM);
    234239                    break;
    235240
    236241                case PATM_CPUID_EXT_PTR:
     242                    /* @todo dirty hack when correcting this fixup (state restore) */
    237243                    dest = CPUMGetGuestCpuIdExtGCPtr(pVM);
    238244                    break;
    239245
    240246                case PATM_CPUID_CENTAUR_PTR:
     247                    /* @todo dirty hack when correcting this fixup (state restore) */
    241248                    dest = CPUMGetGuestCpuIdCentaurGCPtr(pVM);
    242249                    break;
    243250
    244251                case PATM_CPUID_DEF_PTR:
     252                    /* @todo dirty hack when correcting this fixup (state restore) */
    245253                    dest = CPUMGetGuestCpuIdDefGCPtr(pVM);
    246254                    break;
     
    278286
    279287                case PATM_VM_FORCEDACTIONS:
     288                    /* @todo dirty assumptions when correcting this fixup during saved state loading. */
    280289                    dest = pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions);
    281290                    break;
  • trunk/src/VBox/VMM/PATM/PATMSSM.cpp

    r11976 r11979  
    872872        if (    *pFixup >= pVM->pVMGC
    873873            &&  *pFixup < pVM->pVMGC + 32)
     874        {
     875            LogFlow(("Changing fForcedActions fixup from %x to %x\n", *pFixup, pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions)));
    874876            *pFixup = pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions);
     877        }
     878        else
     879        if (    *pFixup >= pVM->pVMGC
     880            &&  *pFixup < pVM->pVMGC + 8192)
     881        {
     882            static int cCpuidFixup = 0;
     883#ifdef LOG_ENABLED
     884            RTRCPTR oldFixup = *pFixup;
     885#endif
     886            /* very dirty assumptions about the cpuid patch */
     887
     888            switch(cCpuidFixup % 4)
     889            {
     890            case 0:
     891                *pFixup = CPUMGetGuestCpuIdDefGCPtr(pVM);
     892                break;
     893            case 1:
     894                *pFixup = CPUMGetGuestCpuIdStdGCPtr(pVM);
     895                break;
     896            case 2:
     897                *pFixup = CPUMGetGuestCpuIdExtGCPtr(pVM);
     898                break;
     899            case 3:
     900                *pFixup = CPUMGetGuestCpuIdCentaurGCPtr(pVM);
     901                break;
     902            }
     903            LogFlow(("Changing cpuid fixup %d from %x to %x\n", cCpuidFixup, oldFixup, *pFixup));
     904            cCpuidFixup++;
     905        }
    875906        else
    876907            AssertMsgFailed(("Unexpected fixup value %x\n", *pFixup));
Note: See TracChangeset for help on using the changeset viewer.

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