VirtualBox

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


Ignore:
Timestamp:
Sep 14, 2023 8:58:53 AM (19 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
159088
Message:

VMM/CPUM: Log more ID registers, bugref:10525

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId-armv8.cpp

    r101114 r101119  
    557557 */
    558558
     559/** CLIDR_EL1 field descriptions.   */
     560static DBGFREGSUBFIELD const g_aClidrEl1Fields[] =
     561{
     562    DBGFREGSUBFIELD_RO("Ctype1\0"     "Cache 1 type field",                                          0, 3, 0),
     563    DBGFREGSUBFIELD_RO("Ctype2\0"     "Cache 2 type field",                                          3, 3, 0),
     564    DBGFREGSUBFIELD_RO("Ctype3\0"     "Cache 3 type field",                                          6, 3, 0),
     565    DBGFREGSUBFIELD_RO("Ctype4\0"     "Cache 4 type field",                                          9, 3, 0),
     566    DBGFREGSUBFIELD_RO("Ctype5\0"     "Cache 5 type field",                                         12, 3, 0),
     567    DBGFREGSUBFIELD_RO("Ctype6\0"     "Cache 6 type field",                                         15, 3, 0),
     568    DBGFREGSUBFIELD_RO("Ctype7\0"     "Cache 7 type field",                                         18, 3, 0),
     569    DBGFREGSUBFIELD_RO("LoUIS\0"      "Level of Unification Inner Shareable",                       21, 3, 0),
     570    DBGFREGSUBFIELD_RO("LoC\0"        "Level of Coherence for the cache hierarchy",                 24, 3, 0),
     571    DBGFREGSUBFIELD_RO("LoUU\0"       "Level of Unification Uniprocessor",                          27, 3, 0),
     572    DBGFREGSUBFIELD_RO("ICB\0"        "Inner cache boundary",                                       30, 3, 0),
     573    DBGFREGSUBFIELD_RO("Ttype1\0"     "Cache 1 - Tag cache type",                                   33, 2, 0),
     574    DBGFREGSUBFIELD_RO("Ttype2\0"     "Cache 2 - Tag cache type",                                   35, 2, 0),
     575    DBGFREGSUBFIELD_RO("Ttype3\0"     "Cache 3 - Tag cache type",                                   37, 2, 0),
     576    DBGFREGSUBFIELD_RO("Ttype4\0"     "Cache 4 - Tag cache type",                                   39, 2, 0),
     577    DBGFREGSUBFIELD_RO("Ttype5\0"     "Cache 5 - Tag cache type",                                   41, 2, 0),
     578    DBGFREGSUBFIELD_RO("Ttype6\0"     "Cache 6 - Tag cache type",                                   43, 2, 0),
     579    DBGFREGSUBFIELD_RO("Ttype7\0"     "Cache 7 - Tag cache type",                                   45, 2, 0),
     580    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   47, 17, 0),
     581    DBGFREGSUBFIELD_TERMINATOR()
     582};
     583
     584
     585/** ID_AA64PFR0_EL1 field descriptions.   */
     586static DBGFREGSUBFIELD const g_aIdAa64PfR0Fields[] =
     587{
     588    DBGFREGSUBFIELD_RO("EL0\0"       "EL0 Exception level handling",                                 0, 4, 0),
     589    DBGFREGSUBFIELD_RO("EL1\0"       "EL1 Exception level handling",                                 4, 4, 0),
     590    DBGFREGSUBFIELD_RO("EL2\0"       "EL2 Exception level handling",                                 8, 4, 0),
     591    DBGFREGSUBFIELD_RO("EL3\0"       "EL3 Exception level handling",                                12, 4, 0),
     592    DBGFREGSUBFIELD_RO("FP\0"        "Floating-point",                                              16, 4, 0),
     593    DBGFREGSUBFIELD_RO("AdvSIMD\0"   "Advanced SIMD",                                               20, 4, 0),
     594    DBGFREGSUBFIELD_RO("GIC\0"       "System register GIC CPU interface",                           24, 4, 0),
     595    DBGFREGSUBFIELD_RO("RAS\0"       "RAS Extension version",                                       28, 4, 0),
     596    DBGFREGSUBFIELD_RO("SVE\0"       "Scalable Vector Extension",                                   32, 4, 0),
     597    DBGFREGSUBFIELD_RO("SEL2\0"      "Secure EL2",                                                  36, 4, 0),
     598    DBGFREGSUBFIELD_RO("MPAM\0"      "MPAM Extension major version number",                         40, 4, 0),
     599    DBGFREGSUBFIELD_RO("AMU\0"       "Activity Monitors Extension support",                         44, 4, 0),
     600    DBGFREGSUBFIELD_RO("DIT\0"       "Data Independent Timing",                                     48, 4, 0),
     601    DBGFREGSUBFIELD_RO("RME\0"       "Realm Management Extension",                                  52, 4, 0),
     602    DBGFREGSUBFIELD_RO("CSV2\0"      "Speculative use of out of branch targets",                    56, 4, 0),
     603    DBGFREGSUBFIELD_RO("CSV3\0"      "Speculative use of faulting data",                            60, 4, 0),
     604    DBGFREGSUBFIELD_TERMINATOR()
     605};
     606
     607
     608/** ID_AA64PFR1_EL1 field descriptions.   */
     609static DBGFREGSUBFIELD const g_aIdAa64PfR1Fields[] =
     610{
     611    DBGFREGSUBFIELD_RO("BT\0"        "Branch Target Identification mechanism",                       0, 4, 0),
     612    DBGFREGSUBFIELD_RO("SSBS\0"      "Speculative Store Bypassing controls",                         4, 4, 0),
     613    DBGFREGSUBFIELD_RO("MTE\0"       "Memory Tagging Extension support",                             8, 4, 0),
     614    DBGFREGSUBFIELD_RO("RAS_frac\0"  "RAS Extension fractional field",                              12, 4, 0),
     615    DBGFREGSUBFIELD_RO("MPAM_frac\0" "MPAM Extension minor version",                                16, 4, 0),
     616    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    20, 4, 0),
     617    DBGFREGSUBFIELD_RO("SME\0"       "Scalable Matrix Extension",                                   24, 4, 0),
     618    DBGFREGSUBFIELD_RO("RNDR_trap\0" "Random Number trap to EL3",                                   28, 4, 0),
     619    DBGFREGSUBFIELD_RO("CSV2_frac\0" "CSV2 fractional version field",                               32, 4, 0),
     620    DBGFREGSUBFIELD_RO("NMI\0"       "Non-maskable Interrupt support",                              36, 4, 0),
     621    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    40, 4, 0),
     622    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    44, 4, 0),
     623    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    48, 4, 0),
     624    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    52, 4, 0),
     625    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    56, 4, 0),
     626    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    60, 4, 0),
     627    DBGFREGSUBFIELD_TERMINATOR()
     628};
     629
    559630
    560631/** ID_AA64ISAR0_EL1 field descriptions.   */
     
    682753    DBGFREGSUBFIELD_RO("EVT\0"       "Enhanced Virtualization Traps support",                       56, 4, 0),
    683754    DBGFREGSUBFIELD_RO("E0PD\0"      "E0PD mechanism support",                                      60, 4, 0),
     755    DBGFREGSUBFIELD_TERMINATOR()
     756};
     757
     758
     759/** ID_AA64DFR0_EL1 field descriptions.   */
     760static DBGFREGSUBFIELD const g_aIdAa64DfR0Fields[] =
     761{
     762    DBGFREGSUBFIELD_RO("DebugVer\0"  "Debug architecture version",                                   0, 4, 0),
     763    DBGFREGSUBFIELD_RO("TraceVer\0"  "Trace support",                                                4, 4, 0),
     764    DBGFREGSUBFIELD_RO("PMUVer\0"    "Performance Monitors Extension version",                       8, 4, 0),
     765    DBGFREGSUBFIELD_RO("BRPs\0"      "Number of breakpoints minus 1",                               12, 4, 0),
     766    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    16, 4, 0),
     767    DBGFREGSUBFIELD_RO("WRPs\0"      "Number of watchpoints minus 1",                               20, 4, 0),
     768    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    24, 4, 0),
     769    DBGFREGSUBFIELD_RO("CTX_CMPs\0"  "Number of context-aware breakpoints minus 1",                 28, 4, 0),
     770    DBGFREGSUBFIELD_RO("PMSVer\0"    "Statistical Profiling Extension version",                     32, 4, 0),
     771    DBGFREGSUBFIELD_RO("DoubleLock\0"  "OS Double Lock support",                                    36, 4, 0),
     772    DBGFREGSUBFIELD_RO("TraceFilt\0" "Armv8.4 Self-hosted Trace Extension version",                 40, 4, 0),
     773    DBGFREGSUBFIELD_RO("TraceBuffer\0" "Trace Buffer Extension",                                    44, 4, 0),
     774    DBGFREGSUBFIELD_RO("MTPMU\0"     "Multi-threaded PMU extension",                                48, 4, 0),
     775    DBGFREGSUBFIELD_RO("BRBE\0"      "Branch Record Buffer Extension",                              52, 4, 0),
     776    DBGFREGSUBFIELD_RO("Res0\0"      "Reserved",                                                    56, 4, 0),
     777    DBGFREGSUBFIELD_RO("HPMN0\0"     "Zero PMU event counters for guest",                           60, 4, 0),
     778    DBGFREGSUBFIELD_TERMINATOR()
     779};
     780
     781
     782/** ID_AA64DFR1_EL1 field descriptions.   */
     783static DBGFREGSUBFIELD const g_aIdAa64DfR1Fields[] =
     784{
     785    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                    0, 4, 0),
     786    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                    4, 4, 0),
     787    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                    8, 4, 0),
     788    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   12, 4, 0),
     789    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   16, 4, 0),
     790    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   20, 4, 0),
     791    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   24, 4, 0),
     792    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   28, 4, 0),
     793    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   32, 4, 0),
     794    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   36, 4, 0),
     795    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   40, 4, 0),
     796    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   44, 4, 0),
     797    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   48, 4, 0),
     798    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   52, 4, 0),
     799    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   56, 4, 0),
     800    DBGFREGSUBFIELD_RO("Res0\0"       "Reserved",                                                   60, 4, 0),
    684801    DBGFREGSUBFIELD_TERMINATOR()
    685802};
     
    807924    }
    808925
     926    /** @todo MIDR_EL1. */
     927
     928    cpumR3CpuIdInfoIdRegDetails(pHlp, "CLIDR_EL1",
     929                                pVM->cpum.s.HostIdRegs.u64RegClidrEl1,
     930                                pVM->cpum.s.GuestIdRegs.u64RegClidrEl1,
     931                                g_aClidrEl1Fields, iVerbosity > 1);
     932
     933    cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64PFR0_EL1",
     934                                pVM->cpum.s.HostIdRegs.u64RegIdAa64Pfr0El1,
     935                                pVM->cpum.s.GuestIdRegs.u64RegIdAa64Pfr0El1,
     936                                g_aIdAa64PfR0Fields, iVerbosity > 1);
     937
     938    cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64PFR1_EL1",
     939                                pVM->cpum.s.HostIdRegs.u64RegIdAa64Pfr1El1,
     940                                pVM->cpum.s.GuestIdRegs.u64RegIdAa64Pfr1El1,
     941                                g_aIdAa64PfR1Fields, iVerbosity > 1);
     942
    809943    cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64ISAR0_EL1",
    810944                                pVM->cpum.s.HostIdRegs.u64RegIdAa64Isar0El1,
     
    837971                                g_aIdAa64MmfR2Fields, iVerbosity > 1);
    838972
    839     /** @todo Other ID and feature registers. */
    840 }
     973    cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64DFR0_EL1",
     974                                pVM->cpum.s.HostIdRegs.u64RegIdAa64Dfr0El1,
     975                                pVM->cpum.s.GuestIdRegs.u64RegIdAa64Dfr0El1,
     976                                g_aIdAa64DfR0Fields, iVerbosity > 1);
     977
     978    cpumR3CpuIdInfoIdRegDetails(pHlp, "ID_AA64DFR1_EL1",
     979                                pVM->cpum.s.HostIdRegs.u64RegIdAa64Dfr1El1,
     980                                pVM->cpum.s.GuestIdRegs.u64RegIdAa64Dfr1El1,
     981                                g_aIdAa64DfR1Fields, iVerbosity > 1);
     982}
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