VirtualBox

Changeset 60475 in vbox for trunk/src


Ignore:
Timestamp:
Apr 13, 2016 2:23:37 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106575
Message:

VMM/APIC: Have descriptive helpers in all-context code, make things easier to debug.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/APICAll.cpp

    r60471 r60475  
    232232
    233233/**
     234 * Gets the descriptive APIC mode.
     235 *
     236 * @returns The name.
     237 * @param   enmMode     The xAPIC mode.
     238 */
     239const char *apicGetModeName(APICMODE enmMode)
     240{
     241    switch (enmMode)
     242    {
     243        case APICMODE_DISABLED:  return "Disabled";
     244        case APICMODE_XAPIC:     return "xAPIC";
     245        case APICMODE_X2APIC:    return "x2APIC";
     246        default:                 break;
     247    }
     248    return "Invalid";
     249}
     250
     251
     252/**
     253 * Gets the descriptive destination format name.
     254 *
     255 * @returns The destination format name.
     256 * @param   enmDestFormat       The destination format.
     257 */
     258const char *apicGetDestFormatName(XAPICDESTFORMAT enmDestFormat)
     259{
     260    switch (enmDestFormat)
     261    {
     262        case XAPICDESTFORMAT_FLAT:      return "Flat";
     263        case XAPICDESTFORMAT_CLUSTER:   return "Cluster";
     264        default:                        break;
     265    }
     266    return "Invalid";
     267}
     268
     269
     270/**
     271 * Gets the descriptive delivery mode name.
     272 *
     273 * @returns The delivery mode name.
     274 * @param   enmDeliveryMode     The delivery mode.
     275 */
     276const char *apicGetDeliveryModeName(XAPICDELIVERYMODE enmDeliveryMode)
     277{
     278    switch (enmDeliveryMode)
     279    {
     280        case XAPICDELIVERYMODE_FIXED:        return "Fixed";
     281        case XAPICDELIVERYMODE_LOWEST_PRIO:  return "Lowest-priority";
     282        case XAPICDELIVERYMODE_SMI:          return "SMI";
     283        case XAPICDELIVERYMODE_NMI:          return "NMI";
     284        case XAPICDELIVERYMODE_INIT:         return "INIT";
     285        case XAPICDELIVERYMODE_STARTUP:      return "SIPI";
     286        case XAPICDELIVERYMODE_EXTINT:       return "ExtINT";
     287        default:                             break;
     288    }
     289    return "Invalid";
     290}
     291
     292
     293/**
     294 * Gets the descriptive destination mode name.
     295 *
     296 * @returns The destination mode name.
     297 * @param   enmDestMode     The destination mode.
     298 */
     299const char *apicGetDestModeName(XAPICDESTMODE enmDestMode)
     300{
     301    switch (enmDestMode)
     302    {
     303        case XAPICDESTMODE_PHYSICAL:  return "Physical";
     304        case XAPICDESTMODE_LOGICAL:   return "Logical";
     305        default:                      break;
     306    }
     307    return "Invalid";
     308}
     309
     310
     311/**
     312 * Gets the descriptive trigger mode name.
     313 *
     314 * @returns The trigger mode name.
     315 * @param   enmTriggerMode     The trigger mode.
     316 */
     317const char *apicGetTriggerModeName(XAPICTRIGGERMODE enmTriggerMode)
     318{
     319    switch (enmTriggerMode)
     320    {
     321        case XAPICTRIGGERMODE_EDGE:     return "Edge";
     322        case XAPICTRIGGERMODE_LEVEL:    return "Level";
     323        default:                        break;
     324    }
     325    return "Invalid";
     326}
     327
     328
     329/**
     330 * Gets the destination shorthand name.
     331 *
     332 * @returns The destination shorthand name.
     333 * @param   enmDestShorthand     The destination shorthand.
     334 */
     335const char *apicGetDestShorthandName(XAPICDESTSHORTHAND enmDestShorthand)
     336{
     337    switch (enmDestShorthand)
     338    {
     339        case XAPICDESTSHORTHAND_NONE:           return "None";
     340        case XAPICDESTSHORTHAND_SELF:           return "Self";
     341        case XAPIDDESTSHORTHAND_ALL_INCL_SELF:  return "All including self";
     342        case XAPICDESTSHORTHAND_ALL_EXCL_SELF:  return "All excluding self";
     343        default:                                break;
     344    }
     345    return "Invalid";
     346}
     347
     348
     349/**
     350 * Gets the timer mode name.
     351 *
     352 * @returns The timer mode name.
     353 * @param   enmTimerMode         The timer mode.
     354 */
     355const char *apicGetTimerModeName(XAPICTIMERMODE enmTimerMode)
     356{
     357    switch (enmTimerMode)
     358    {
     359        case XAPICTIMERMODE_ONESHOT:        return "One-shot";
     360        case XAPICTIMERMODE_PERIODIC:       return "Periodic";
     361        case XAPICTIMERMODE_TSC_DEADLINE:   return "TSC deadline";
     362        default:                            break;
     363    }
     364    return "Invalid";
     365}
     366
     367
     368/**
    234369 * Gets the APIC mode given the base MSR value.
    235370 *
     
    543678        default:
    544679        {
    545             AssertMsgFailed(("APIC: apicSendIntr: Unknown delivery mode %#x\n", enmDeliveryMode));
     680            AssertMsgFailed(("APIC: apicSendIntr: Unsupported delivery mode %#x (%s)\n", enmDeliveryMode,
     681                             apicGetDeliveryModeName(enmDeliveryMode)));
    546682            break;
    547683        }
     
    10371173                apicClearVectorInReg(&pXApicPage->tmr, uVector);
    10381174            }
     1175
     1176            Log4(("APIC%u: apicSetEoi: Acknowledged %s triggered interrupt. uVector=%#x\n", pVCpu->idCpu,
     1177                  fLevelTriggered ? "level" : "edge", uVector));
    10391178
    10401179            apicSignalNextPendingIntr(pVCpu);
     
    19922131    uint32_t          fBroadcastMask  = UINT32_C(0xff);
    19932132
     2133    Log4(("APIC: apicBusDeliver: fDestMask=%#x enmDestMode=%s enmTriggerMode=%s enmDeliveryMode=%s\n", fDestMask,
     2134          apicGetDestModeName(enmDestMode), apicGetTriggerModeName(enmTriggerMode), apicGetDeliveryModeName(enmDeliveryMode)));
     2135
    19942136    VMCPUSET DestCpuSet;
    19952137    apicGetDestCpuSet(pVM, fDestMask, fBroadcastMask, enmDestMode, enmDeliveryMode, &DestCpuSet);
     
    20762218                {
    20772219                    rcStrict = VERR_INTERNAL_ERROR_3;
    2078                     AssertMsgFailed(("APIC%u: LocalInterrupt: Invalid delivery mode %#x on LINT%d\n", pVCpu->idCpu,
    2079                                      enmDeliveryMode, u8Pin));
     2220                    AssertMsgFailed(("APIC%u: LocalInterrupt: Invalid delivery mode %#x (%s) on LINT%d\n", pVCpu->idCpu,
     2221                                     enmDeliveryMode, apicGetDeliveryModeName(enmDeliveryMode), u8Pin));
    20802222                    break;
    20812223                }
  • trunk/src/VBox/VMM/VMMR3/APIC.cpp

    r60473 r60475  
    147147    SSMFIELD_ENTRY_TERM()
    148148};
    149 
    150 
    151 /**
    152  * Gets the descriptive APIC mode.
    153  *
    154  * @returns The name.
    155  * @param   enmMode     The xAPIC mode.
    156  */
    157 static const char *apicGetModeName(APICMODE enmMode)
    158 {
    159     switch (enmMode)
    160     {
    161         case APICMODE_DISABLED:  return "Disabled";
    162         case APICMODE_XAPIC:     return "xAPIC";
    163         case APICMODE_X2APIC:    return "x2APIC";
    164         default:                 break;
    165     }
    166     return "Invalid";
    167 }
    168 
    169 
    170 /**
    171  * Gets the descriptive destination format name.
    172  *
    173  * @returns The destination format name.
    174  * @param   enmDestFormat       The destination format.
    175  */
    176 static const char *apicGetDestFormatName(XAPICDESTFORMAT enmDestFormat)
    177 {
    178     switch (enmDestFormat)
    179     {
    180         case XAPICDESTFORMAT_FLAT:      return "Flat";
    181         case XAPICDESTFORMAT_CLUSTER:   return "Cluster";
    182         default:                        break;
    183     }
    184     return "Invalid";
    185 }
    186 
    187 
    188 /**
    189  * Gets the descriptive delivery mode name.
    190  *
    191  * @returns The delivery mode name.
    192  * @param   enmDeliveryMode     The delivery mode.
    193  */
    194 static const char *apicGetDeliveryModeName(XAPICDELIVERYMODE enmDeliveryMode)
    195 {
    196     switch (enmDeliveryMode)
    197     {
    198         case XAPICDELIVERYMODE_FIXED:        return "Fixed";
    199         case XAPICDELIVERYMODE_LOWEST_PRIO:  return "Lowest priority";
    200         case XAPICDELIVERYMODE_SMI:          return "SMI";
    201         case XAPICDELIVERYMODE_NMI:          return "NMI";
    202         case XAPICDELIVERYMODE_INIT:         return "INIT";
    203         case XAPICDELIVERYMODE_STARTUP:      return "SIPI";
    204         case XAPICDELIVERYMODE_EXTINT:       return "ExtINT";
    205         default:                             break;
    206     }
    207     return "Invalid";
    208 }
    209 
    210 
    211 /**
    212  * Gets the descriptive destination mode name.
    213  *
    214  * @returns The destination mode name.
    215  * @param   enmDestMode     The destination mode.
    216  */
    217 static const char *apicGetDestModeName(XAPICDESTMODE enmDestMode)
    218 {
    219     switch (enmDestMode)
    220     {
    221         case XAPICDESTMODE_PHYSICAL:  return "Physical";
    222         case XAPICDESTMODE_LOGICAL:   return "Logical";
    223         default:                      break;
    224     }
    225     return "Invalid";
    226 }
    227 
    228 
    229 /**
    230  * Gets the descriptive trigger mode name.
    231  *
    232  * @returns The trigger mode name.
    233  * @param   enmTriggerMode     The trigger mode.
    234  */
    235 static const char *apicGetTriggerModeName(XAPICTRIGGERMODE enmTriggerMode)
    236 {
    237     switch (enmTriggerMode)
    238     {
    239         case XAPICTRIGGERMODE_EDGE:     return "Edge";
    240         case XAPICTRIGGERMODE_LEVEL:    return "Level";
    241         default:                        break;
    242     }
    243     return "Invalid";
    244 }
    245 
    246 
    247 /**
    248  * Gets the destination shorthand name.
    249  *
    250  * @returns The destination shorthand name.
    251  * @param   enmDestShorthand     The destination shorthand.
    252  */
    253 static const char *apicGetDestShorthandName(XAPICDESTSHORTHAND enmDestShorthand)
    254 {
    255     switch (enmDestShorthand)
    256     {
    257         case XAPICDESTSHORTHAND_NONE:           return "None";
    258         case XAPICDESTSHORTHAND_SELF:           return "Self";
    259         case XAPIDDESTSHORTHAND_ALL_INCL_SELF:  return "All including self";
    260         case XAPICDESTSHORTHAND_ALL_EXCL_SELF:  return "All excluding self";
    261         default:                                break;
    262     }
    263     return "Invalid";
    264 }
    265 
    266 
    267 /**
    268  * Gets the timer mode name.
    269  *
    270  * @returns The timer mode name.
    271  * @param   enmTimerMode         The timer mode.
    272  */
    273 static const char *apicGetTimerModeName(XAPICTIMERMODE enmTimerMode)
    274 {
    275     switch (enmTimerMode)
    276     {
    277         case XAPICTIMERMODE_ONESHOT:        return "One-shot";
    278         case XAPICTIMERMODE_PERIODIC:       return "Periodic";
    279         case XAPICTIMERMODE_TSC_DEADLINE:   return "TSC deadline";
    280         default:                            break;
    281     }
    282     return "Invalid";
    283 }
    284149
    285150
  • trunk/src/VBox/VMM/include/APICInternal.h

    r60472 r60475  
    611611RT_C_DECLS_BEGIN
    612612
     613const char             *apicGetModeName(APICMODE enmMode);
     614const char             *apicGetDestFormatName(XAPICDESTFORMAT enmDestFormat);
     615const char             *apicGetDeliveryModeName(XAPICDELIVERYMODE enmDeliveryMode);
     616const char             *apicGetDestModeName(XAPICDESTMODE enmDestMode);
     617const char             *apicGetTriggerModeName(XAPICTRIGGERMODE enmTriggerMode);
     618const char             *apicGetDestShorthandName(XAPICDESTSHORTHAND enmDestShorthand);
     619const char             *apicGetTimerModeName(XAPICTIMERMODE enmTimerMode);
     620
    613621VMMDECL(uint64_t)       APICGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu);
    614622VMMDECL(VBOXSTRICTRC)   APICSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t uBase);
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