VirtualBox

Changeset 106920 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Nov 11, 2024 1:09:38 AM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165846
Message:

/Config.kmk,Devices/Makefile.kmk,VMM/*: Introducing VBOX_WITH_MINIMAL_R0 for win.arm64 and similar build configurations not really needing much from VMMR0.r0/VBoxSup.sys. jiraref:VBP-1449

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r106061 r106920  
    7878
    7979#include <iprt/asm.h>
    80 #include <iprt/asm-amd64-x86.h>
     80#ifdef RT_ARCH_AMD64
     81# include <iprt/asm-amd64-x86.h>
     82#endif
    8183#include <iprt/critsect.h>
    8284#include <iprt/mem.h>
     
    102104*   Defined Constants And Macros                                                                                                 *
    103105*********************************************************************************************************************************/
    104 #if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING)
     106#if    (defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING)) \
     107    && !defined(VBOX_WITH_MINIMAL_R0)
    105108/** Define this to enable the periodic preemption timer. */
    106109# define GVMM_SCHED_WITH_PPT
     
    914917                        gvmmR0InitPerVMData(pGVM, iHandle, cCpus, pSession);
    915918                        pGVM->gvmm.s.VMMemObj  = hVMMemObj;
     919#ifndef VBOX_WITH_MINIMAL_R0
    916920                        rc = GMMR0InitPerVMData(pGVM);
    917921                        int rc2 = PGMR0InitPerVMData(pGVM, hVMMemObj);
     922#else
     923                        int rc2 = VINF_SUCCESS;
     924#endif
    918925                        int rc3 = VMMR0InitPerVMData(pGVM);
     926#ifndef VBOX_WITH_MINIMAL_R0
    919927                        CPUMR0InitPerVMData(pGVM);
    920928                        DBGFR0InitPerVMData(pGVM);
     
    922930                        IOMR0InitPerVMData(pGVM);
    923931                        TMR0InitPerVMData(pGVM);
     932#endif
    924933                        if (RT_SUCCESS(rc) && RT_SUCCESS(rc2) && RT_SUCCESS(rc3))
    925934                        {
     
    10301039                                            gvmmR0CreateDestroyUnlock(pGVMM);
    10311040
     1041#ifndef VBOX_WITH_MINIMAL_R0
    10321042                                            CPUMR0RegisterVCpuThread(&pGVM->aCpus[0]);
     1043#endif
    10331044
    10341045                                            *ppGVM = pGVM;
     
    13531364    }
    13541365
     1366#ifndef VBOX_WITH_MINIMAL_R0
    13551367    GMMR0CleanupVM(pGVM);
    1356 #ifdef VBOX_WITH_NEM_R0
     1368# ifdef VBOX_WITH_NEM_R0
    13571369    NEMR0CleanupVM(pGVM);
    1358 #endif
     1370# endif
    13591371    PDMR0CleanupVM(pGVM);
    13601372    IOMR0CleanupVM(pGVM);
     
    13621374    PGMR0CleanupVM(pGVM);
    13631375    TMR0CleanupVM(pGVM);
     1376#endif
    13641377    VMMR0CleanupVM(pGVM);
    13651378}
     
    16001613                    if (RT_SUCCESS(rc))
    16011614                    {
     1615#ifndef VBOX_WITH_MINIMAL_R0
    16021616                        CPUMR0RegisterVCpuThread(pGVCpu);
     1617#endif
    16031618
    16041619#ifdef GVMM_SCHED_WITH_HR_WAKE_UP_TIMER
  • trunk/src/VBox/VMM/VMMR0/VMMR0.cpp

    r106061 r106920  
    6363#include <VBox/log.h>
    6464
    65 #include <iprt/asm-amd64-x86.h>
     65#ifdef RT_ARCH_AMD64
     66# include <iprt/asm-amd64-x86.h>
     67#endif
    6668#include <iprt/assert.h>
    6769#include <iprt/crc.h>
     
    139141DECLEXPORT(int) ModuleInit(void *hMod)
    140142{
     143    RT_NOREF_PV(hMod);
     144
    141145#ifdef VBOX_WITH_DTRACE_R0
    142146    /*
     
    169173        if (RT_SUCCESS(rc))
    170174        {
     175#ifndef VBOX_WITH_MINIMAL_R0
    171176            rc = GMMR0Init();
    172177            if (RT_SUCCESS(rc))
     
    180185                    if (RT_SUCCESS(rc))
    181186                    {
     187#endif /* !VBOX_WITH_MINIMAL_R0 */
    182188                        rc = IntNetR0Init();
    183189                        if (RT_SUCCESS(rc))
    184190                        {
    185 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     191#ifndef VBOX_WITH_MINIMAL_R0
     192# ifdef VBOX_WITH_PCI_PASSTHROUGH
    186193                            rc = PciRawR0Init();
    187 #endif
     194# endif
    188195                            if (RT_SUCCESS(rc))
    189196                            {
     
    191198                                if (RT_SUCCESS(rc))
    192199                                {
    193 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     200# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    194201                                    rc = vmmR0TripleFaultHackInit();
    195202                                    if (RT_SUCCESS(rc))
    196 #endif
     203# endif
    197204                                    {
    198 #ifdef VBOX_WITH_NEM_R0
     205# ifdef VBOX_WITH_NEM_R0
    199206                                        rc = NEMR0Init();
    200207                                        if (RT_SUCCESS(rc))
    201 #endif
     208# endif
     209#endif /* !VBOX_WITH_MINIMAL_R0 */
    202210                                        {
    203211                                            LogFlow(("ModuleInit: returns success\n"));
    204212                                            return VINF_SUCCESS;
    205213                                        }
     214
     215                                        /*
     216                                         * Bail out.
     217                                         */
     218#ifndef VBOX_WITH_MINIMAL_R0
    206219                                    }
    207 
    208                                     /*
    209                                      * Bail out.
    210                                      */
    211 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     220# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    212221                                    vmmR0TripleFaultHackTerm();
    213 #endif
     222# endif
    214223                                }
    215224                                else
    216225                                    LogRel(("ModuleInit: CPUMR0ModuleInit -> %Rrc\n", rc));
    217 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     226# ifdef VBOX_WITH_PCI_PASSTHROUGH
    218227                                PciRawR0Term();
    219 #endif
     228# endif
    220229                            }
    221230                            else
    222231                                LogRel(("ModuleInit: PciRawR0Init -> %Rrc\n", rc));
    223232                            IntNetR0Term();
     233#endif /* !VBOX_WITH_MINIMAL_R0 */
    224234                        }
    225235                        else
    226236                            LogRel(("ModuleInit: IntNetR0Init -> %Rrc\n", rc));
     237#ifndef VBOX_WITH_MINIMAL_R0
    227238                        PGMDeregisterStringFormatTypes();
    228239                    }
     
    237248            else
    238249                LogRel(("ModuleInit: GMMR0Init -> %Rrc\n", rc));
     250#endif /* !VBOX_WITH_MINIMAL_R0 */
    239251            GVMMR0Term();
    240252        }
     
    259271DECLEXPORT(void) ModuleTerm(void *hMod)
    260272{
    261     NOREF(hMod);
    262273    LogFlow(("ModuleTerm:\n"));
    263 
     274    RT_NOREF_PV(hMod);
     275
     276#ifndef VBOX_WITH_MINIMAL_R0
    264277    /*
    265278     * Terminate the CPUM module (Local APIC cleanup).
    266279     */
    267280    CPUMR0ModuleTerm();
     281#endif
    268282
    269283    /*
     
    272286    IntNetR0Term();
    273287
     288#ifndef VBOX_WITH_MINIMAL_R0
    274289    /*
    275290     * PGM (Darwin), HM and PciRaw global cleanup.
    276291     */
    277 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     292# ifdef VBOX_WITH_PCI_PASSTHROUGH
    278293    PciRawR0Term();
    279 #endif
     294# endif
    280295    PGMDeregisterStringFormatTypes();
    281296    HMR0Term();
    282 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     297# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    283298    vmmR0TripleFaultHackTerm();
     299# endif
     300# ifdef VBOX_WITH_NEM_R0
     301    NEMR0Term();
     302# endif
     303#endif /* !VBOX_WITH_MINIMAL_R0 */
     304
     305    /*
     306     * Destroy the GMM and GVMM instances.
     307     */
     308#ifndef VBOX_WITH_MINIMAL_R0
     309    GMMR0Term();
    284310#endif
    285 #ifdef VBOX_WITH_NEM_R0
    286     NEMR0Term();
    287 #endif
    288 
    289     /*
    290      * Destroy the GMM and GVMM instances.
    291      */
    292     GMMR0Term();
    293311    GVMMR0Term();
    294312
     
    448466    if (RT_SUCCESS(rc))
    449467    {
     468#ifndef VBOX_WITH_MINIMAL_R0
    450469        /*
    451470         * Init HM, CPUM and PGM.
     
    469488                            if (RT_SUCCESS(rc))
    470489                            {
    471 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     490# ifdef VBOX_WITH_PCI_PASSTHROUGH
    472491                                rc = PciRawR0InitVM(pGVM);
    473 #endif
     492# endif
    474493                                if (RT_SUCCESS(rc))
    475494                                {
     
    477496                                    if (RT_SUCCESS(rc))
    478497                                    {
     498#endif /* !VBOX_WITH_MINIMAL_R0 */
    479499                                        GVMMR0DoneInitVM(pGVM);
     500#ifndef VBOX_WITH_MINIMAL_R0
    480501                                        PGMR0DoneInitVM(pGVM);
     502#endif
    481503
    482504                                        /*
     
    488510
    489511                                        /* bail out*/
     512#ifndef VBOX_WITH_MINIMAL_R0
    490513                                        //GIMR0TermVM(pGVM);
    491514                                    }
    492 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     515# ifdef VBOX_WITH_PCI_PASSTHROUGH
    493516                                    PciRawR0TermVM(pGVM);
    494 #endif
     517# endif
    495518                                }
    496519                            }
     
    501524            HMR0TermVM(pGVM);
    502525        }
     526#endif /* !VBOX_WITH_MINIMAL_R0 */
    503527    }
    504528
     
    566590    }
    567591
    568 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     592#ifndef VBOX_WITH_MINIMAL_R0
     593# ifdef VBOX_WITH_PCI_PASSTHROUGH
    569594    PciRawR0TermVM(pGVM);
     595# endif
    570596#endif
    571597
     
    575601    if (GVMMR0DoingTermVM(pGVM))
    576602    {
     603#ifndef VBOX_WITH_MINIMAL_R0
    577604        GIMR0TermVM(pGVM);
    578605
     
    580607         *        here to make sure we don't leak any shared pages if we crash... */
    581608        HMR0TermVM(pGVM);
     609#endif
    582610    }
    583611
     
    620648}
    621649
     650
     651#ifndef VBOX_WITH_MINIMAL_R0
    622652
    623653/**
     
    966996}
    967997
     998#endif /* !VBOX_WITH_MINIMAL_R0 */
    968999
    9691000/**
     
    10171048                VMCPU_FF_SET(pVCpu, VMCPU_FF_TO_R3);
    10181049
     1050#ifndef VBOX_WITH_MINIMAL_R0
    10191051            /* Invoke the HM-specific thread-context callback. */
    10201052            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1053#endif
    10211054
    10221055            /* Restore preemption. */
     
    10271060        case RTTHREADCTXEVENT_OUT:
    10281061        {
     1062#ifndef VBOX_WITH_MINIMAL_R0
    10291063            /* Invoke the HM-specific thread-context callback. */
    10301064            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1065#endif
    10311066
    10321067            /*
     
    10401075
    10411076        default:
     1077#ifndef VBOX_WITH_MINIMAL_R0
    10421078            /* Invoke the HM-specific thread-context callback. */
    10431079            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1080#endif
    10441081            break;
    10451082    }
     
    10631100    Assert(pVCpu->vmmr0.s.hCtxHook == NIL_RTTHREADCTXHOOK);
    10641101
    1065 #if 1 /* To disable this stuff change to zero. */
     1102#ifndef VBOX_WITH_MINIMAL_R0
     1103
     1104# if 1 /* To disable this stuff change to zero. */
    10661105    int rc = RTThreadCtxHookCreate(&pVCpu->vmmr0.s.hCtxHook, 0, vmmR0ThreadCtxCallback, pVCpu);
    10671106    if (RT_SUCCESS(rc))
     
    10701109        return rc;
    10711110    }
    1072 #else
     1111# else
    10731112    RT_NOREF(vmmR0ThreadCtxCallback);
    10741113    int rc = VERR_NOT_SUPPORTED;
     1114# endif
    10751115#endif
    10761116
    10771117    pVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK;
    10781118    pVCpu->pGVM->vmm.s.fIsUsingContextHooks = false;
    1079     if (rc == VERR_NOT_SUPPORTED)
    1080         return VINF_SUCCESS;
    1081 
    1082     LogRelMax(32, ("RTThreadCtxHookCreate failed! rc=%Rrc pVCpu=%p idCpu=%RU32\n", rc, pVCpu, pVCpu->idCpu));
    1083     return VINF_SUCCESS; /* Just ignore it, we can live without context hooks. */
     1119#ifndef VBOX_WITH_MINIMAL_R0
     1120    if (rc != VERR_NOT_SUPPORTED) /* Just ignore it, we can live without context hooks. */
     1121        LogRelMax(32, ("RTThreadCtxHookCreate failed! rc=%Rrc pVCpu=%p idCpu=%RU32\n", rc, pVCpu, pVCpu->idCpu));
     1122#endif
     1123    return VINF_SUCCESS;
    10841124}
    10851125
     
    10931133VMMR0_INT_DECL(void) VMMR0ThreadCtxHookDestroyForEmt(PVMCPUCC pVCpu)
    10941134{
     1135#ifndef VBOX_WITH_MINIMAL_R0
    10951136    int rc = RTThreadCtxHookDestroy(pVCpu->vmmr0.s.hCtxHook);
    10961137    AssertRC(rc);
     1138#endif
    10971139    pVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK;
    10981140}
    10991141
     1142#ifndef VBOX_WITH_MINIMAL_R0
    11001143
    11011144/**
     
    11611204}
    11621205
     1206#endif /* !VBOX_WITH_MINIMAL_R0 */
    11631207
    11641208/**
     
    13801424    switch (enmOperation)
    13811425    {
     1426#ifndef VBOX_WITH_MINIMAL_R0
    13821427        /*
    13831428         * Run guest code using the available hardware acceleration technology.
     
    14201465                        GVMMR0SchedUpdatePeriodicPreemptionTimer(pGVM, pGVCpu->idHostCpu, TMCalcHostTimerFrequency(pGVM, pGVCpu));
    14211466
    1422 #ifdef VMM_R0_TOUCH_FPU
     1467# ifdef VMM_R0_TOUCH_FPU
    14231468                    /*
    14241469                     * Make sure we've got the FPU state loaded so and we don't need to clear
     
    14271472                     */
    14281473                    CPUMR0TouchHostFpu();
    1429 #endif
     1474# endif
    14301475                    int  rc;
    14311476                    bool fPreemptRestored = false;
     
    14791524                                rc = VERR_VMM_WRONG_HM_VMCPU_STATE;
    14801525                            }
    1481 #if 0
     1526# if 0
    14821527                            /** @todo Get rid of this. HM shouldn't disable the context hook. */
    14831528                            else if (RT_UNLIKELY(vmmR0ThreadCtxHookIsEnabled(pGVCpu)))
     
    14881533                                rc = VERR_VMM_CONTEXT_HOOK_STILL_ENABLED;
    14891534                            }
    1490 #endif
     1535# endif
    14911536
    14921537                            VMMRZCallRing3Disable(pGVCpu); /* Lazy bird: Simpler just disabling it again... */
     
    15341579                    /* Fire dtrace probe and collect statistics. */
    15351580                    VBOXVMM_R0_VMM_RETURN_TO_RING3_HM(pGVCpu, CPUMQueryGuestCtxPtr(pGVCpu), rc);
    1536 #ifdef VBOX_WITH_STATISTICS
     1581# ifdef VBOX_WITH_STATISTICS
    15371582                    vmmR0RecordRC(pGVM, pGVCpu, rc);
    1538 #endif
     1583# endif
    15391584                    VMMRZCallRing3Enable(pGVCpu);
    15401585
     
    15851630        }
    15861631
    1587 #ifdef VBOX_WITH_NEM_R0
    1588 # if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
     1632# ifdef VBOX_WITH_NEM_R0
     1633#  if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
    15891634        case VMMR0_DO_NEM_RUN:
    15901635        {
     
    15921637             * Setup the longjmp machinery and execute guest code (calls NEMR0RunGuestCode).
    15931638             */
    1594 ifdef VBOXSTRICTRC_STRICT_ENABLED
     1639 ifdef VBOXSTRICTRC_STRICT_ENABLED
    15951640            int rc = vmmR0CallRing3SetJmp2(&pGVCpu->vmmr0.s.AssertJmpBuf, (PFNVMMR0SETJMP2)NEMR0RunGuestCode, pGVM, idCpu);
    1596 else
     1641 else
    15971642            int rc = vmmR0CallRing3SetJmp2(&pGVCpu->vmmr0.s.AssertJmpBuf, NEMR0RunGuestCode, pGVM, idCpu);
    1598 endif
     1643 endif
    15991644            STAM_COUNTER_INC(&pGVM->vmm.s.StatRunGC);
    16001645
     
    16051650             */
    16061651            VBOXVMM_R0_VMM_RETURN_TO_RING3_NEM(pGVCpu, CPUMQueryGuestCtxPtr(pGVCpu), rc);
    1607 ifdef VBOX_WITH_STATISTICS
     1652 ifdef VBOX_WITH_STATISTICS
    16081653            vmmR0RecordRC(pGVM, pGVCpu, rc);
     1654#   endif
     1655            break;
     1656        }
    16091657#  endif
    1610             break;
    1611         }
    16121658# endif
    1613 #endif
     1659
     1660#endif /* !VBOX_WITH_MINIMAL_R0 */
    16141661
    16151662        /*
     
    18671914            break;
    18681915
     1916#ifndef VBOX_WITH_MINIMAL_R0
     1917
    18691918        /*
    18701919         * Attempt to enable hm mode and check the current setting.
     
    20282077            break;
    20292078
    2030 #ifdef VBOX_WITH_PAGE_SHARING
     2079# ifdef VBOX_WITH_PAGE_SHARING
    20312080        case VMMR0_DO_GMM_CHECK_SHARED_MODULES:
    20322081        {
     
    20392088            break;
    20402089        }
    2041 #endif
    2042 
    2043 #if defined(VBOX_STRICT) && HC_ARCH_BITS == 64
     2090# endif
     2091
     2092# if defined(VBOX_STRICT) && HC_ARCH_BITS == 64
    20442093        case VMMR0_DO_GMM_FIND_DUPLICATE_PAGE:
    20452094            if (u64Arg)
     
    20472096            rc = GMMR0FindDuplicatePageReq(pGVM, (PGMMFINDDUPLICATEPAGEREQ)pReqHdr);
    20482097            break;
    2049 #endif
     2098# endif
    20502099
    20512100        case VMMR0_DO_GMM_QUERY_STATISTICS:
     
    20602109            rc = GMMR0ResetStatisticsReq(pGVM, (PGMMRESETSTATISTICSSREQ)pReqHdr);
    20612110            break;
     2111
     2112#endif /* !VBOX_WITH_MINIMAL_R0 */
    20622113
    20632114        /*
     
    20882139        }
    20892140
     2141#ifndef VBOX_WITH_MINIMAL_R0
    20902142        /*
    20912143         * PDM Wrappers.
     
    21312183            break;
    21322184        }
     2185#endif /* !VBOX_WITH_MINIMAL_R0 */
    21332186
    21342187        /*
     
    21932246            break;
    21942247
    2195 #if 0 //def VBOX_WITH_PCI_PASSTHROUGH
     2248#if 0 //defined(VBOX_WITH_PCI_PASSTHROUGH) && !defined(VBOX_WITH_MINIMAL_R0)
    21962249        /*
    21972250         * Requests to host PCI driver service.
     
    22042257#endif
    22052258
     2259#ifndef VBOX_WITH_MINIMAL_R0
     2260
    22062261        /*
    22072262         * NEM requests.
    22082263         */
    2209 #ifdef VBOX_WITH_NEM_R0
    2210 # if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
     2264# ifdef VBOX_WITH_NEM_R0
     2265#  if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
    22112266        case VMMR0_DO_NEM_INIT_VM:
    22122267            if (u64Arg || pReqHdr || idCpu != 0)
     
    22632318            break;
    22642319
    2265 #   if 1 && defined(DEBUG_bird)
     2320#    if 1 && defined(DEBUG_bird)
    22662321        case VMMR0_DO_NEM_EXPERIMENT:
    22672322            if (pReqHdr)
     
    22692324            rc = NEMR0DoExperiment(pGVM, idCpu, u64Arg);
    22702325            break;
    2271 #   endif
     2326#    endif
     2327#  endif
    22722328# endif
    2273 #endif
    22742329
    22752330        /*
     
    23212376         * DBGF requests.
    23222377         */
    2323 #ifdef VBOX_WITH_DBGF_TRACING
     2378# ifdef VBOX_WITH_DBGF_TRACING
    23242379        case VMMR0_DO_DBGF_TRACER_CREATE:
    23252380        {
     
    23342389            if (!pReqHdr || u64Arg)
    23352390                return VERR_INVALID_PARAMETER;
    2336 # if 0 /** @todo */
     2391#  if 0 /** @todo */
    23372392            rc = DBGFR0TracerGenCallReqHandler(pGVM, (PDBGFTRACERGENCALLREQ)pReqHdr, idCpu);
    2338 # else
     2393#  else
    23392394            rc = VERR_NOT_IMPLEMENTED;
     2395#  endif
     2396            break;
     2397        }
    23402398# endif
    2341             break;
    2342         }
    2343 #endif
    23442399
    23452400        case VMMR0_DO_DBGF_BP_INIT:
     
    23942449            break;
    23952450        }
     2451
     2452#endif /* n!VBOX_WITH_MINIMAL_R0 */
    23962453
    23972454        /*
     
    24212478
    24222479
     2480#ifndef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx to ARM64 */
    24232481/**
    24242482 * This is just a longjmp wrapper function for VMMR0EntryEx calls.
     
    24372495                              pGVCpu->vmmr0.s.pSession);
    24382496}
     2497#endif
    24392498
    24402499
     
    24562515                            PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession)
    24572516{
     2517#ifndef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx to ARM64 - see RTAssertShouldPanic */
    24582518    /*
    24592519     * Requests that should only happen on the EMT thread will be
     
    24882548        return VERR_VM_THREAD_NOT_EMT;
    24892549    }
     2550#else
     2551    RT_NOREF(pVM);
     2552#endif
    24902553    return vmmR0EntryExWorker(pGVM, idCpu, enmOperation, pReq, u64Arg, pSession);
    24912554}
     
    31913254static bool vmmR0LoggerFlushInnerToParent(PVMMR0PERVCPULOGGER pR0Log, PRTLOGBUFFERDESC pBufDesc)
    31923255{
     3256#ifdef RT_ARCH_AMD64
    31933257    uint32_t const cbToFlush = pBufDesc->offBuf;
    31943258    if (pR0Log->fFlushToParentVmmDbg)
     
    31963260    if (pR0Log->fFlushToParentVmmRel)
    31973261        RTLogWriteVmm(pBufDesc->pchBuf, cbToFlush, true /*fRelease*/);
     3262#else
     3263    RT_NOREF(pR0Log, pBufDesc);
     3264#endif
    31983265    return true;
    31993266}
     
    36223689DECLEXPORT(bool) RTCALL RTAssertShouldPanic(void)
    36233690{
    3624 #if 0
     3691#ifdef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx/vmmR0CallRing3LongJmp to ARM64 */
    36253692    return true;
    36263693#else
  • trunk/src/VBox/VMM/VMMR0/VMMR0.def

    r106061 r106920  
    3030
    3131    ; code
    32     GIMGetMmio2Regions
    33     PDMQueueAlloc
    34     PDMQueueInsert
    35     PGMHandlerPhysicalPageTempOff
    36     PGMShwMakePageWritable
    37     PGMPhysSimpleWriteGCPhys
    38     PGMPhysSimpleReadGCPtr
    39     PGMPhysSimpleWriteGCPtr
    40     PGMPhysReadGCPtr
    41     PGMPhysWriteGCPtr
    42     PGMPhysSimpleDirtyWriteGCPtr
    43     PDMR0DeviceRegisterModule
    44     PDMR0DeviceDeregisterModule
    45     IOMMmioResetRegion
    46     IOMMmioMapMmio2Page
    47     RTLogDefaultInstance
    48     RTLogDefaultInstanceEx
    49     RTLogGetDefaultInstanceEx
    50     RTLogRelGetDefaultInstance
    51     RTLogRelGetDefaultInstanceEx
    52     RTLogLogger
    53     RTLogLoggerEx
    54     RTLogLoggerExV
    55     RTStrPrintf
    56     RTTimeMilliTS
    57     RTTraceBufAddMsgF
    58     RTTraceBufAddPos
    59     RTTraceBufAddPosMsgF
    60     TMTimerFromMilli
    61     TMTimerFromMicro
    62     TMTimerFromNano
    63     TMTimerGet
    64     TMTimerGetFreq
    65     TMTimerIsActive
    66     TMTimerIsLockOwner
    67     TMTimerLock
    68     TMTimerSet
    69     TMTimerSetRelative
    70     TMTimerSetMillies
    71     TMTimerSetMicro
    72     TMTimerSetNano
    73     TMTimerSetFrequencyHint
    74     TMTimerStop
    75     TMTimerUnlock
    76     VMMGetSvnRev
     32    GIMGetMmio2Regions                      ; not-arm64
     33    PDMQueueAlloc                           ; not-arm64
     34    PDMQueueInsert                          ; not-arm64
     35    PGMHandlerPhysicalPageTempOff           ; not-arm64
     36    PGMShwMakePageWritable                  ; not-arm64
     37    PGMPhysSimpleWriteGCPhys                ; not-arm64
     38    PGMPhysSimpleReadGCPtr                  ; not-arm64
     39    PGMPhysSimpleWriteGCPtr                 ; not-arm64
     40    PGMPhysReadGCPtr                        ; not-arm64
     41    PGMPhysWriteGCPtr                       ; not-arm64
     42    PGMPhysSimpleDirtyWriteGCPtr            ; not-arm64
     43    PDMR0DeviceRegisterModule               ; not-arm64
     44    PDMR0DeviceDeregisterModule             ; not-arm64
     45    IOMMmioResetRegion                      ; not-arm64
     46    IOMMmioMapMmio2Page                     ; not-arm64
     47    RTLogDefaultInstance                   
     48    RTLogDefaultInstanceEx                 
     49    RTLogGetDefaultInstanceEx               
     50    RTLogRelGetDefaultInstance             
     51    RTLogRelGetDefaultInstanceEx           
     52    RTLogLogger                             
     53    RTLogLoggerEx                           
     54    RTLogLoggerExV                         
     55    RTStrPrintf                             
     56    RTTimeMilliTS                           
     57    RTTraceBufAddMsgF                       
     58    RTTraceBufAddPos                       
     59    RTTraceBufAddPosMsgF                   
     60    TMTimerFromMilli                        ; not-arm64
     61    TMTimerFromMicro                        ; not-arm64
     62    TMTimerFromNano                         ; not-arm64
     63    TMTimerGet                              ; not-arm64
     64    TMTimerGetFreq                          ; not-arm64
     65    TMTimerIsActive                         ; not-arm64
     66    TMTimerIsLockOwner                      ; not-arm64
     67    TMTimerLock                             ; not-arm64
     68    TMTimerSet                              ; not-arm64
     69    TMTimerSetRelative                      ; not-arm64
     70    TMTimerSetMillies                       ; not-arm64
     71    TMTimerSetMicro                         ; not-arm64
     72    TMTimerSetNano                          ; not-arm64
     73    TMTimerSetFrequencyHint                 ; not-arm64
     74    TMTimerStop                             ; not-arm64
     75    TMTimerUnlock                           ; not-arm64
     76    VMMGetSvnRev                            ; not-arm64
    7777
    7878    ; Internal Networking
     
    9090    RTAssertMsg2Weak
    9191    RTAssertShouldPanic
    92     RTCrc32
    93     RTOnceSlow
    94     RTTimeNanoTSLegacySyncInvarNoDelta
    95     RTTimeNanoTSLegacySyncInvarWithDelta
    96     RTTimeNanoTSLegacyAsync
    97     RTTimeNanoTSLFenceSyncInvarNoDelta
    98     RTTimeNanoTSLFenceSyncInvarWithDelta
    99     RTTimeNanoTSLFenceAsync
     92    RTCrc32                                 ; not-arm64
     93    RTOnceSlow                             
     94    RTTimeNanoTSLegacySyncInvarNoDelta      ; not-arm64
     95    RTTimeNanoTSLegacySyncInvarWithDelta    ; not-arm64
     96    RTTimeNanoTSLegacyAsync                 ; not-arm64
     97    RTTimeNanoTSLFenceSyncInvarNoDelta      ; not-arm64
     98    RTTimeNanoTSLFenceSyncInvarWithDelta    ; not-arm64
     99    RTTimeNanoTSLFenceAsync                 ; not-arm64   
    100100    RTTimeSystemNanoTS
    101101    RTTimeNanoTS
    102     ASMMultU64ByU32DivByU32             ; not-os2
    103     ASMAtomicXchgU8                     ; not-x86
    104     ASMAtomicXchgU16                    ; not-x86
    105     ASMBitFirstSet                      ; not-x86
    106     ASMNopPause                         ; not-x86
    107     nocrt_memchr
    108     nocrt_memcmp
    109     nocrt_memcpy
    110     memcpy=nocrt_memcpy                 ; not-os2
    111     nocrt_memmove
    112     nocrt_memset
    113     memset=nocrt_memset                 ; not-os2
    114     nocrt_strcpy
    115     nocrt_strcmp
    116     nocrt_strchr
    117     nocrt_strlen
     102    ASMAtomicXchgU8                         ; not-arm64
     103    ASMAtomicXchgU16                        ; not-arm64
     104    ASMBitFirstSet                          ; not-arm64
     105    ASMNopPause                             ; not-arm64
     106    nocrt_memchr                            ; not-arm64
     107    nocrt_memcmp                            ; not-arm64
     108    nocrt_memcpy                            ; not-arm64
     109    memcpy=nocrt_memcpy                     ; not-arm64
     110    nocrt_memmove                           ; not-arm64
     111    nocrt_memset                            ; not-arm64
     112    memset=nocrt_memset                     ; not-arm64
     113    nocrt_strcpy                            ; not-arm64
     114    nocrt_strcmp                            ; not-arm64
     115    nocrt_strchr                            ; not-arm64
     116    nocrt_strlen                            ; not-arm64
    118117
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