VirtualBox

Changeset 30724 in vbox


Ignore:
Timestamp:
Jul 8, 2010 8:30:20 AM (15 years ago)
Author:
vboxsync
Message:

Recommitted r63480 - VMMDev: Adding an optional (disabled by default) testing side to the device to assist simple guest benchmarks and tests. Started on a MMIO and IOPort benchmark (for comparison with network performance numbers).

Location:
trunk
Files:
11 edited
4 copied

Legend:

Unmodified
Added
Removed
  • trunk/Makefile.kmk

    r30718 r30724  
    11061106#
    11071107incs:
    1108         $(SED) -f include/VBox/err.sed     --output include/VBox/err.mac   include/VBox/err.h
     1108        $(SED) -f include/VBox/err.sed     --output include/VBox/err.mac           include/VBox/err.h
    11091109        $(APPEND) include/VBox/err.mac '%include "iprt/err.mac"'
    1110         $(SED) -f include/VBox/err.sed     --output include/iprt/err.mac   include/iprt/err.h
    1111         $(SED) -f include/VBox/various.sed --output include/VBox/x86.mac   include/VBox/x86.h
    1112         $(SED) -f include/VBox/various.sed --output include/VBox/param.mac include/VBox/param.h
     1110        $(SED) -f include/VBox/err.sed     --output include/iprt/err.mac           include/iprt/err.h
     1111        $(SED) -f include/VBox/various.sed --output include/VBox/x86.mac           include/VBox/x86.h
     1112        $(SED) -f include/VBox/various.sed --output include/VBox/param.mac         include/VBox/param.h
     1113        $(SED) -f include/VBox/various.sed --output include/VBox/VMMDevTesting.mac include/VBox/VMMDevTesting.h
    11131114
    11141115
  • trunk/include/VBox/err.mac

    r30718 r30724  
    1919%define VERR_INVALID_CPU_ID    (-1018)
    2020%define VERR_TOO_MANY_CPUS    (-1019)
     21%define VERR_SERVICE_DISABLED    (-1020)
    2122%define VINF_EM_FIRST    1100
    2223%define VINF_EM_TERMINATE    1100
     
    157158%define VERR_PGM_INVALID_LARGE_PAGE_RANGE    (-1645)
    158159%define VERR_PGM_PHYS_PAGE_BALLOONED    (-1646)
     160%define VINF_PGM_SHARED_MODULE_ALREADY_REGISTERED    (1647)
     161%define VERR_PGM_SHARED_MODULE_NOT_FOUND    (-1648)
     162%define VINF_PGM_SHARED_MODULE_COLLISION    (1649)
     163%define VERR_PGM_SHARED_MODULE_REGISTRATION_INCONSISTENCY    (-1650)
     164%define VERR_PGM_SHARED_MODULE_FIRST_CHECK    (-1651)
    159165%define VERR_MM_RAM_CONFLICT    (-1700)
    160166%define VERR_MM_HYPER_NO_MEMORY    (-1701)
     
    216222%define VERR_SSM_FIELD_INVALID_PADDING_SIZE    (-1869)
    217223%define VERR_SSM_FIELD_INVALID_VALUE    (-1870)
     224%define VERR_SSM_STREAM_ERROR    (-1871)
    218225%define VERR_VM_ATRESET_NOT_FOUND    (-1900)
    219226%define VERR_VM_REQUEST_INVALID_TYPE    (-1901)
     
    230237%define VERR_VM_DRIVER_VERSION_MISMATCH    (-1912)
    231238%define VERR_VM_SAVE_STATE_NOT_ALLOWED    (-1913)
     239%define VERR_VM_THREAD_IS_EMT    (-1914)
    232240%define VINF_VRDP_SUCCESS    VINF_SUCCESS
    233241%define VERR_VRDP_TIMEOUT    VERR_TIMEOUT
     
    428436%define VERR_VD_RAW_INVALID_TYPE    (-3271)
    429437%define VERR_VD_NOT_ENOUGH_METADATA    (-3272)
     438%define VERR_VD_IOCTX_HALT    (-3273)
    430439%define VERR_VBGL_NOT_INITIALIZED    (-3300)
    431440%define VERR_VBGL_INVALID_ADDR    (-3301)
     
    446455%define VERR_INTNET_INCOMPATIBLE_TRUNK    (-3603)
    447456%define VERR_INTNET_INCOMPATIBLE_FLAGS    (-3604)
     457%define VERR_INTNET_FLT_VNIC_CREATE_FAILED    (-3605)
    448458%define VERR_SUPDRV_COMPONENT_NOT_FOUND    (-3700)
    449459%define VERR_SUPDRV_INTERFACE_NOT_SUPPORTED    (-3701)
     
    487497%define VERR_VMX_UNEXPECTED_EXCEPTION    (-4016)
    488498%define VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_CODE    (-4017)
     499%define VERR_VMX_NOT_IN_VMX_ROOT_MODE    (-4018)
    489500%define VERR_SVM_UNABLE_TO_START_VM    (-4050)
    490501%define VERR_SVM_ILLEGAL_EFER_MSR    (-4051)
     
    505516%define VINF_PARAV_SWITCH_TO_HOST    4400
    506517%define VINF_VHWA_CMD_PENDING    4500
    507 %define VERR_COM_OBJECT_NOT_FOUND    (-4601)
    508 %define VERR_COM_INVALID_VM_STATE    (-4602)
    509 %define VERR_COM_VM_ERROR    (-4603)
    510 %define VERR_COM_FILE_ERROR    (-4604)
    511 %define VERR_COM_IPRT_ERROR    (-4605)
    512 %define VERR_COM_PDM_ERROR    (-4606)
    513 %define VERR_COM_INVALID_OBJECT_STATE    (-4607)
    514 %define VERR_COM_HOST_ERROR    (-4608)
    515 %define VERR_COM_NOT_SUPPORTED    (-4609)
    516 %define VERR_COM_XML_ERROR    (-4610)
    517 %define VERR_COM_INVALID_SESSION_STATE    (-4611)
    518 %define VERR_COM_OBJECT_IN_USE    (-4612)
     518%define VERR_COM_UNEXPECTED    (-4600)
     519%define VERR_COM_VBOX_LOWEST    (-4699)
     520%define VERR_COM_OBJECT_NOT_FOUND    (VERR_COM_VBOX_LOWEST + 1)
     521%define VERR_COM_INVALID_VM_STATE    (VERR_COM_VBOX_LOWEST + 2)
     522%define VERR_COM_VM_ERROR    (VERR_COM_VBOX_LOWEST + 3)
     523%define VERR_COM_FILE_ERROR    (VERR_COM_VBOX_LOWEST + 4)
     524%define VERR_COM_IPRT_ERROR    (VERR_COM_VBOX_LOWEST + 5)
     525%define VERR_COM_PDM_ERROR    (VERR_COM_VBOX_LOWEST + 6)
     526%define VERR_COM_INVALID_OBJECT_STATE    (VERR_COM_VBOX_LOWEST + 7)
     527%define VERR_COM_HOST_ERROR    (VERR_COM_VBOX_LOWEST + 8)
     528%define VERR_COM_NOT_SUPPORTED    (VERR_COM_VBOX_LOWEST + 9)
     529%define VERR_COM_XML_ERROR    (VERR_COM_VBOX_LOWEST + 10)
     530%define VERR_COM_INVALID_SESSION_STATE    (VERR_COM_VBOX_LOWEST + 11)
     531%define VERR_COM_OBJECT_IN_USE    (VERR_COM_VBOX_LOWEST + 12)
     532%define VERR_COM_DONT_CALL_AGAIN    (VERR_COM_VBOX_LOWEST + 13)
    519533%define VERR_CPU_HOTPLUG_NOT_MONITORED_BY_GUEST    (-4700)
    520534%define VINF_AIO_TASK_PENDING    4800
  • trunk/include/VBox/iom.h

    r30718 r30724  
    9191 * @param   pvUser      User argument.
    9292 * @param   uPort       Port number used for the IN operation.
    93  * @param   pu32        Where to store the result.
     93 * @param   pu32        Where to store the result.  This is always a 32-bit
     94 *                      variable regardless of what @a cb might say.
    9495 * @param   cb          Number of bytes read.
    9596 */
  • trunk/include/iprt/err.mac

    r30718 r30724  
    104104%define VERR_CONCURRENT_ACCESS    (-92)
    105105%define VERR_CALLER_NO_REFERENCE    (-93)
    106 %define VERR_LOGON_FAILURE    (-94)
     106%define VERR_NO_CHANGE    (-95)
     107%define VINF_NO_CHANGE    95
     108%define VERR_NO_EXEC_MEMORY    (-96)
    107109%define VERR_FILE_IO_ERROR    (-100)
    108110%define VERR_OPEN_FAILED    (-101)
  • trunk/src/VBox/Devices/Makefile.kmk

    r30718 r30724  
    310310        VMMDev/VMMDev.cpp \
    311311        VMMDev/VMMDevHGCM.cpp \
     312        VMMDev/VMMDevTesting.cpp \
    312313        Network/DevPCNet.cpp \
    313314        Audio/DevIchAc97.cpp \
     
    539540 #
    540541 VBoxDDGC_TEMPLATE       = VBoxRc
    541  VBoxDDGC_SYSSUFF        = .gc
    542542 ifeq ($(KBUILD_TARGET_ARCH),x86)
    543543  VBoxDDGC_DEFS.darwin   = VBOX_WITH_2X_4GB_ADDR_SPACE
     
    557557        Network/DevPCNet.cpp \
    558558        Serial/DevSerial.cpp \
    559         Parallel/DevParallel.cpp
     559        Parallel/DevParallel.cpp \
     560        VMMDev/VMMDevTesting.cpp
    560561
    561562 ifdef VBOX_DYNAMIC_NET_ATTACH
     
    652653#
    653654VBoxDDR0_TEMPLATE       = VBoxR0
    654 VBoxDDR0_SYSSUFF        = .r0
    655655VBoxDDR0_DEFS.darwin.x86= VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0 VBOX_WITH_2X_4GB_ADDR_SPACE
    656656VBoxDDR0_DEFS           = IN_RT_R0
     
    669669        Serial/DevSerial.cpp \
    670670        Parallel/DevParallel.cpp \
     671        VMMDev/VMMDevTesting.cpp \
    671672        \
    672673        Network/DrvIntNet.cpp \
     
    766767 VBoxDD2GC_TEMPLATE       = VBoxRc
    767768 VBoxDD2GC_DEFS           =
    768  VBoxDD2GC_SYSSUFF        = .gc
    769769 VBoxDD2GC_INCS          := \
    770770        $(PATH_SUB_CURRENT)
     
    783783VBoxDD2R0_TEMPLATE       = VBoxR0
    784784VBoxDD2R0_DEFS           = IN_RT_R0
    785 VBoxDD2R0_SYSSUFF        = .r0
    786785VBoxDD2R0_INCS          := \
    787786        $(PATH_SUB_CURRENT)
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r30718 r30724  
    2727#include <VBox/log.h>
    2828#include <VBox/param.h>
    29 #include <VBox/mm.h>
    3029#include <VBox/pgm.h>
    3130#include <VBox/err.h>
     
    4847#ifdef VBOX_WITH_HGCM
    4948# include "VMMDevHGCM.h"
     49#endif
     50#ifndef VBOX_WITHOUT_TESTING_FEATURES
     51# include "VMMDevTesting.h"
    5052#endif
    5153
     
    27282730        pThis->pDrv->pfnUpdateGuestCapabilities(pThis->pDrv, pThis->guestCaps);
    27292731
    2730     /* Generate a unique session id for this VM; it will be changed for each start, reset or restore. 
     2732    /* Generate a unique session id for this VM; it will be changed for each start, reset or restore.
    27312733     * This can be used for restore detection inside the guest.
    27322734     */
    27332735    pThis->idSession = ASMReadTSC();
     2736}
     2737
     2738
     2739/**
     2740 * @interface_method_impl{PDMDEVREG,pfnRelocate}
     2741 */
     2742static DECLCALLBACK(void) vmmdevRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
     2743{
     2744    NOREF(pDevIns);
     2745    NOREF(offDelta);
    27342746}
    27352747
     
    27452757    Assert(iInstance == 0);
    27462758    PDMDEV_CHECK_VERSIONS_RETURN(pDevIns);
    2747 
    2748     /*
    2749      * Validate and read the configuration.
    2750      */
    2751     if (!CFGMR3AreValuesValid(pCfg,
    2752                               "GetHostTimeDisabled\0"
    2753                               "BackdoorLogDisabled\0"
    2754                               "KeepCredentials\0"
    2755                               "HeapEnabled\0"
    2756                               ))
    2757         return VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES;
    2758 
    2759     rc = CFGMR3QueryBoolDef(pCfg, "GetHostTimeDisabled", &pThis->fGetHostTimeDisabled, false);
    2760     if (RT_FAILURE(rc))
    2761         return PDMDEV_SET_ERROR(pDevIns, rc,
    2762                                 N_("Configuration error: Failed querying \"GetHostTimeDisabled\" as a boolean"));
    2763 
    2764     rc = CFGMR3QueryBoolDef(pCfg, "BackdoorLogDisabled", &pThis->fBackdoorLogDisabled, false);
    2765     if (RT_FAILURE(rc))
    2766         return PDMDEV_SET_ERROR(pDevIns, rc,
    2767                                 N_("Configuration error: Failed querying \"BackdoorLogDisabled\" as a boolean"));
    2768 
    2769     rc = CFGMR3QueryBoolDef(pCfg, "KeepCredentials", &pThis->fKeepCredentials, false);
    2770     if (RT_FAILURE(rc))
    2771         return PDMDEV_SET_ERROR(pDevIns, rc,
    2772                                 N_("Configuration error: Failed querying \"KeepCredentials\" as a boolean"));
    2773 
    2774     rc = CFGMR3QueryBoolDef(pCfg, "HeapEnabled", &pThis->fHeapEnabled, true);
    2775     if (RT_FAILURE(rc))
    2776         return PDMDEV_SET_ERROR(pDevIns, rc,
    2777                                 N_("Configuration error: Failed querying \"HeapEnabled\" as a boolean"));
    27782759
    27792760    /*
     
    28282809#endif
    28292810
    2830     /** @todo convert this into a config parameter like we do everywhere else! */
    2831     pThis->cbGuestRAM = MMR3PhysGetRamSize(PDMDevHlpGetVM(pDevIns));
     2811    /*
     2812     * Validate and read the configuration.
     2813     */
     2814    PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns,
     2815                                  "GetHostTimeDisabled|"
     2816                                  "BackdoorLogDisabled|"
     2817                                  "KeepCredentials|"
     2818                                  "HeapEnabled|"
     2819                                  "RamSize|"
     2820                                  "TestingEnabled"
     2821                                  ,
     2822                                  "");
     2823
     2824    rc = CFGMR3QueryU64(pCfg, "RamSize", &pThis->cbGuestRAM);
     2825    if (RT_FAILURE(rc))
     2826        return PDMDEV_SET_ERROR(pDevIns, rc,
     2827                                N_("Configuration error: Failed querying \"RamSize\" as a 64-bit unsigned integer"));
     2828
     2829    rc = CFGMR3QueryBoolDef(pCfg, "GetHostTimeDisabled", &pThis->fGetHostTimeDisabled, false);
     2830    if (RT_FAILURE(rc))
     2831        return PDMDEV_SET_ERROR(pDevIns, rc,
     2832                                N_("Configuration error: Failed querying \"GetHostTimeDisabled\" as a boolean"));
     2833
     2834    rc = CFGMR3QueryBoolDef(pCfg, "BackdoorLogDisabled", &pThis->fBackdoorLogDisabled, false);
     2835    if (RT_FAILURE(rc))
     2836        return PDMDEV_SET_ERROR(pDevIns, rc,
     2837                                N_("Configuration error: Failed querying \"BackdoorLogDisabled\" as a boolean"));
     2838
     2839    rc = CFGMR3QueryBoolDef(pCfg, "KeepCredentials", &pThis->fKeepCredentials, false);
     2840    if (RT_FAILURE(rc))
     2841        return PDMDEV_SET_ERROR(pDevIns, rc,
     2842                                N_("Configuration error: Failed querying \"KeepCredentials\" as a boolean"));
     2843
     2844    rc = CFGMR3QueryBoolDef(pCfg, "HeapEnabled", &pThis->fHeapEnabled, true);
     2845    if (RT_FAILURE(rc))
     2846        return PDMDEV_SET_ERROR(pDevIns, rc,
     2847                                N_("Configuration error: Failed querying \"HeapEnabled\" as a boolean"));
     2848
     2849    rc = CFGMR3QueryBoolDef(pCfg, "RZEnabled", &pThis->fRZEnabled, true);
     2850    if (RT_FAILURE(rc))
     2851        return PDMDEV_SET_ERROR(pDevIns, rc,
     2852                                N_("Configuration error: Failed querying \"RZEnabled\" as a boolean"));
     2853
     2854#ifndef VBOX_WITHOUT_TESTING_FEATURES
     2855    rc = CFGMR3QueryBoolDef(pCfg, "TestingEnabled", &pThis->fTestingEnabled, false);
     2856    if (RT_FAILURE(rc))
     2857        return PDMDEV_SET_ERROR(pDevIns, rc,
     2858                                N_("Configuration error: Failed querying \"TestingEnabled\" as a boolean"));
     2859# ifdef DEBUG_bird /* lazy bird */
     2860    pThis->fTestingEnabled = true;
     2861# endif
     2862    /** @todo image-to-load-filename? */
     2863#endif
    28322864
    28332865    /*
     
    28902922    }
    28912923
     2924#ifndef VBOX_WITHOUT_TESTING_FEATURES
     2925    /*
     2926     * Initialize testing.
     2927     */
     2928    rc = vmmdevTestingInitialize(pDevIns);
     2929    if (RT_FAILURE(rc))
     2930        return rc;
     2931#endif
     2932
    28922933    /*
    28932934     * Get the corresponding connector interface
     
    29492990    pThis->u32HGCMEnabled = 0;
    29502991#endif /* VBOX_WITH_HGCM */
     2992
    29512993    /* In this version of VirtualBox the GUI checks whether "needs host cursor"
    29522994     * changes. */
     
    29552997    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMemBalloonChunks, STAMTYPE_U32, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "Memory balloon size", "/Devices/VMMDev/BalloonChunks");
    29562998
    2957     /* Generate a unique session id for this VM; it will be changed for each start, reset or restore. 
     2999    /* Generate a unique session id for this VM; it will be changed for each start, reset or restore.
    29583000     * This can be used for restore detection inside the guest.
    29593001     */
     
    29723014    "VMMDev",
    29733015    /* szRCMod */
    2974     "",
     3016    "VBoxDDGC.gc",
    29753017    /* szR0Mod */
    2976     "",
     3018    "VBoxDDR0.r0",
    29773019    /* pszDescription */
    29783020    "VirtualBox VMM Device\n",
    29793021    /* fFlags */
    2980     PDM_DEVREG_FLAGS_HOST_BITS_DEFAULT | PDM_DEVREG_FLAGS_GUEST_BITS_DEFAULT,
     3022    PDM_DEVREG_FLAGS_HOST_BITS_DEFAULT | PDM_DEVREG_FLAGS_GUEST_BITS_DEFAULT | PDM_DEVREG_FLAGS_RC | PDM_DEVREG_FLAGS_R0,
    29813023    /* fClass */
    29823024    PDM_DEVREG_CLASS_VMM_DEV,
     
    29903032    NULL,
    29913033    /* pfnRelocate */
    2992     NULL,
     3034    vmmdevRelocate,
    29933035    /* pfnIOCtl */
    29943036    NULL,
  • trunk/src/VBox/Devices/VMMDev/VMMDevState.h

    r30718 r30724  
    164164    /* guest ram size */
    165165    uint64_t    cbGuestRAM;
    166    
     166
    167167    /* unique session id; the id will be different after each start, reset or restore of the VM. */
    168168    uint64_t    idSession;
     
    215215
    216216    /** FLag whether CPU hotplug events are monitored */
    217     bool                 fCpuHotPlugEventsEnabled;
     217    bool                fCpuHotPlugEventsEnabled;
    218218    /** CPU hotplug event */
    219     VMMDevCpuEventType   enmCpuHotPlugEvent;
     219    VMMDevCpuEventType  enmCpuHotPlugEvent;
    220220    /** Core id of the CPU to change */
    221     uint32_t             idCpuCore;
     221    uint32_t            idCpuCore;
    222222    /** Package id of the CPU to changhe */
    223     uint32_t             idCpuPackage;
    224 
    225     uint32_t             StatMemBalloonChunks;
     223    uint32_t            idCpuPackage;
     224
     225    uint32_t            StatMemBalloonChunks;
     226
     227    /** Set if RC/R0 is enabled. */
     228    bool                fRZEnabled;
     229    /** Set if testing is enabled. */
     230    bool                fTestingEnabled;
     231    /** The high timestamp value. */
     232    uint32_t            u32TestingHighTimestamp;
     233
    226234} VMMDevState;
    227235AssertCompileMemberAlignment(VMMDevState, CritSect, 8);
  • trunk/src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp

    r30718 r30724  
    18981898    rc = CFGMR3InsertInteger(pInst, "PCIDeviceNo",    4);                           UPDATE_RC();
    18991899    rc = CFGMR3InsertInteger(pInst, "PCIFunctionNo",  0);                           UPDATE_RC();
     1900    rc = CFGMR3InsertInteger(pCfg,  "RamSize",        g_u32MemorySizeMB * _1M);     UPDATE_RC();
    19001901
    19011902    /* the VMM device's Main driver */
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r30718 r30724  
    16161616    Bstr hwVersion;
    16171617    hrc = pMachine->COMGETTER(HardwareVersion)(hwVersion.asOutParam());                 H();
     1618    rc = CFGMR3InsertInteger(pCfg,  "RamSize",              cbRam);                     RC_CHECK();
    16181619    if (hwVersion.compare(Bstr("1")) == 0) /* <= 2.0.x */
    16191620    {
  • trunk/src/VBox/VMM/VMMGC/VMMGC.def

    r30326 r30724  
    9191    RTTimeNanoTSLFenceSync
    9292    RTTimeNanoTSLFenceAsync
     93    RTTimeNanoTS
    9394    RTCrc32
    9495    ASMMultU64ByU32DivByU32             ; not-os2
  • trunk/src/VBox/VMM/VMMR0/VMMR0.def

    r30326 r30724  
    8383    RTTimeNanoTSLFenceAsync
    8484    RTTimeSystemNanoTS
     85    RTTimeNanoTS
    8586    ASMMultU64ByU32DivByU32             ; not-os2
    8687    ASMAtomicXchgU8                     ; not-x86
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