VirtualBox

Changeset 81946 in vbox


Ignore:
Timestamp:
Nov 18, 2019 3:58:20 PM (5 years ago)
Author:
vboxsync
Message:

DevIoApic: Split up the device state and flagged the device as new-style. bugref:9218

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevIoApic.cpp

    r81942 r81946  
    168168#define IOAPIC_WITH_PDM_CRITSECT
    169169#ifdef IOAPIC_WITH_PDM_CRITSECT
    170 # define IOAPIC_LOCK(pThis, rcBusy)         (pThis)->CTX_SUFF(pIoApicHlp)->pfnLock((pThis)->CTX_SUFF(pDevIns), (rcBusy))
    171 # define IOAPIC_UNLOCK(pThis)               (pThis)->CTX_SUFF(pIoApicHlp)->pfnUnlock((pThis)->CTX_SUFF(pDevIns))
     170# define IOAPIC_LOCK(a_pDevIns, a_pThis, a_pThisCC, rcBusy)  (a_pThisCC)->pIoApicHlp->pfnLock((a_pDevIns), (rcBusy))
     171# define IOAPIC_UNLOCK(a_pDevIns, a_pThis, a_pThisCC)        (a_pThisCC)->pIoApicHlp->pfnUnlock((a_pDevIns))
    172172#else
    173 # define IOAPIC_LOCK(pThis, rcBusy)         PDMCritSectEnter(&(pThis)->CritSect, (rcBusy))
    174 # define IOAPIC_UNLOCK(pThis)               PDMCritSectLeave(&(pThis)->CritSect)
     173# define IOAPIC_LOCK(a_pDevIns, a_pThis, a_pThisCC, rcBusy)  PDMDevHlpCritSectEnter((a_pDevIns), &(a_pThis)->CritSect, (rcBusy))
     174# define IOAPIC_UNLOCK(a_pDevIns, a_pThis, a_pThisCC)        PDMDevHlpCritSectLeave((a_pDevIns), &(a_pThis)->CritSect)
    175175#endif
    176176
     
    180180*********************************************************************************************************************************/
    181181/**
    182  * The per-VM I/O APIC device state.
     182 * The shared I/O APIC device state.
    183183 */
    184184typedef struct IOAPIC
    185185{
    186     /** The device instance - R3 Ptr. */
    187     PPDMDEVINSR3                pDevInsR3;
    188     /** The IOAPIC helpers - R3 Ptr. */
    189     R3PTRTYPE(PCPDMIOAPICHLP)   pIoApicHlpR3;
    190 
    191     /** The device instance - R0 Ptr. */
    192     PPDMDEVINSR0                pDevInsR0;
    193     /** The IOAPIC helpers - R0 Ptr. */
    194     R0PTRTYPE(PCPDMIOAPICHLP)   pIoApicHlpR0;
    195 
    196     /** The device instance - RC Ptr. */
    197     PPDMDEVINSRC                pDevInsRC;
    198     /** The IOAPIC helpers - RC Ptr. */
    199     RCPTRTYPE(PCPDMIOAPICHLP)   pIoApicHlpRC;
    200 
    201186    /** The ID register. */
    202187    uint8_t volatile        u8Id;
     
    225210    uint32_t                au32TagSrc[IOAPIC_NUM_INTR_PINS];
    226211
     212    /** The internal IRR reflecting state of the interrupt lines. */
     213    uint32_t                uIrr;
    227214    /** Alignment padding. */
    228215    uint32_t                u32Padding2;
    229     /** The internal IRR reflecting state of the interrupt lines. */
    230     uint32_t                uIrr;
    231216
    232217#ifndef IOAPIC_WITH_PDM_CRITSECT
     
    276261#endif
    277262} IOAPIC;
    278 /** Pointer to IOAPIC data. */
     263AssertCompileMemberAlignment(IOAPIC, au64RedirTable, 8);
     264/** Pointer to shared IOAPIC data. */
    279265typedef IOAPIC *PIOAPIC;
    280 /** Pointer to a const IOAPIC data. */
     266/** Pointer to const shared IOAPIC data. */
    281267typedef IOAPIC const *PCIOAPIC;
    282 AssertCompileMemberAlignment(IOAPIC, au64RedirTable, 8);
     268
     269
     270/**
     271 * The I/O APIC device state for ring-3.
     272 */
     273typedef struct IOAPICR3
     274{
     275    /** The IOAPIC helpers. */
     276    R3PTRTYPE(PCPDMIOAPICHLP)   pIoApicHlp;
     277} IOAPICR3;
     278/** Pointer to the I/O APIC device state for ring-3. */
     279typedef IOAPICR3 *PIOAPICR3;
     280
     281
     282/**
     283 * The I/O APIC device state for ring-0.
     284 */
     285typedef struct IOAPICR0
     286{
     287    /** The IOAPIC helpers. */
     288    R0PTRTYPE(PCPDMIOAPICHLP)   pIoApicHlp;
     289} IOAPICR0;
     290/** Pointer to the I/O APIC device state for ring-0. */
     291typedef IOAPICR0 *PIOAPICR0;
     292
     293
     294/**
     295 * The I/O APIC device state for raw-mode.
     296 */
     297typedef struct IOAPICRC
     298{
     299    /** The IOAPIC helpers. */
     300    RCPTRTYPE(PCPDMIOAPICHLP)   pIoApicHlp;
     301} IOAPICRC;
     302/** Pointer to the I/O APIC device state for raw-mode. */
     303typedef IOAPICRC *PIOAPICRC;
     304
     305
     306/** The I/O APIC device state for the current context. */
     307typedef CTX_SUFF(IOAPIC) IOAPICCC;
     308/** Pointer to the I/O APIC device state for the current context. */
     309typedef CTX_SUFF(PIOAPIC) PIOAPICCC;
     310
    283311
    284312#ifndef VBOX_DEVICE_STRUCT_TESTCASE
     
    312340 * Sets the ID register.
    313341 *
    314  * @param   pThis       Pointer to the IOAPIC instance.
     342 * @param   pThis       The shared I/O APIC device state.
    315343 * @param   uValue      The value to set.
    316344 */
     
    326354 *
    327355 * @returns The ID.
    328  * @param   pThis       Pointer to the IOAPIC instance.
     356 * @param   pThis       The shared I/O APIC device state.
    329357 */
    330358DECLINLINE(uint32_t) ioapicGetId(PCIOAPIC pThis)
     
    339367 * Sets the index register.
    340368 *
    341  * @param pThis     Pointer to the IOAPIC instance.
     369 * @param pThis     The shared I/O APIC device state.
    342370 * @param uValue    The value to set.
    343371 */
     
    366394 * (RTE).
    367395 *
    368  * @param   pThis       The IOAPIC instance.
     396 * @param   pDevIns     The device instance.
     397 * @param   pThis       The shared I/O APIC device state.
     398 * @param   pThisCC     The I/O APIC device state for the current context.
    369399 * @param   idxRte      The index of the RTE.
    370400 *
     
    373403 *          function.
    374404 */
    375 static void ioapicSignalIntrForRte(PIOAPIC pThis, uint8_t idxRte)
     405static void ioapicSignalIntrForRte(PPDMDEVINS pDevIns, PIOAPIC pThis, PIOAPICCC pThisCC, uint8_t idxRte)
    376406{
    377407#ifndef IOAPIC_WITH_PDM_CRITSECT
     
    409439         * Deliver to the local APIC via the system/3-wire-APIC bus.
    410440         */
    411         int rc = pThis->CTX_SUFF(pIoApicHlp)->pfnApicBusDeliver(pThis->CTX_SUFF(pDevIns),
    412                                                                 u8Dest,
    413                                                                 u8DestMode,
    414                                                                 u8DeliveryMode,
    415                                                                 u8Vector,
    416                                                                 u8Polarity,
    417                                                                 u8TriggerMode,
    418                                                                 u32TagSrc);
     441        int rc = pThisCC->pIoApicHlp->pfnApicBusDeliver(pDevIns,
     442                                                        u8Dest,
     443                                                        u8DestMode,
     444                                                        u8DeliveryMode,
     445                                                        u8Vector,
     446                                                        u8Polarity,
     447                                                        u8TriggerMode,
     448                                                        u32TagSrc);
    419449        /* Can't reschedule to R3. */
    420450        Assert(rc == VINF_SUCCESS || rc == VERR_APIC_INTR_DISCARDED);
     
    448478 *
    449479 * @returns The redirection table entry.
    450  * @param   pThis       Pointer to the IOAPIC instance.
     480 * @param   pThis       The shared I/O APIC device state.
    451481 * @param   uIndex      The index value.
    452482 */
     
    472502 *
    473503 * @returns Strict VBox status code (VINF_IOM_R3_MMIO_WRITE / VINF_SUCCESS).
    474  * @param   pThis       Pointer to the IOAPIC instance.
     504 * @param   pDevIns     The device instance.
     505 * @param   pThis       The shared I/O APIC device state.
     506 * @param   pThisCC     The I/O APIC device state for the current context.
    475507 * @param   uIndex      The index value.
    476508 * @param   uValue      The value to set.
    477509 */
    478 static VBOXSTRICTRC ioapicSetRedirTableEntry(PIOAPIC pThis, uint32_t uIndex, uint32_t uValue)
     510static VBOXSTRICTRC ioapicSetRedirTableEntry(PPDMDEVINS pDevIns, PIOAPIC pThis, PIOAPICCC pThisCC,
     511                                             uint32_t uIndex, uint32_t uValue)
    479512{
    480513    uint8_t const idxRte = (uIndex - IOAPIC_INDIRECT_INDEX_REDIR_TBL_START) >> 1;
     
    483516                    VINF_SUCCESS);
    484517
    485     VBOXSTRICTRC rc = IOAPIC_LOCK(pThis, VINF_IOM_R3_MMIO_WRITE);
     518    VBOXSTRICTRC rc = IOAPIC_LOCK(pDevIns, pThis, pThisCC, VINF_IOM_R3_MMIO_WRITE);
    486519    if (rc == VINF_SUCCESS)
    487520    {
     
    514547        uint32_t const uPinMask = UINT32_C(1) << idxRte;
    515548        if (pThis->uIrr & uPinMask)
    516             ioapicSignalIntrForRte(pThis, idxRte);
    517 
    518         IOAPIC_UNLOCK(pThis);
     549            ioapicSignalIntrForRte(pDevIns, pThis, pThisCC, idxRte);
     550
     551        IOAPIC_UNLOCK(pDevIns, pThis, pThisCC);
    519552        LogFlow(("IOAPIC: ioapicSetRedirTableEntry: uIndex=%#RX32 idxRte=%u uValue=%#RX32\n", uIndex, idxRte, uValue));
    520553    }
     
    530563 *
    531564 * @returns The data value.
    532  * @param pThis     Pointer to the IOAPIC instance.
     565 * @param pThis     The shared I/O APIC device state.
    533566 */
    534567static uint32_t ioapicGetData(PCIOAPIC pThis)
     
    572605 *
    573606 * @returns Strict VBox status code.
    574  * @param   pThis   Pointer to the IOAPIC instance.
    575  * @param   uValue  The value to set.
    576  */
    577 static VBOXSTRICTRC ioapicSetData(PIOAPIC pThis, uint32_t uValue)
     607 * @param   pDevIns     The device instance.
     608 * @param   pThis       The shared I/O APIC device state.
     609 * @param   pThisCC     The I/O APIC device state for the current context.
     610 * @param   uValue      The value to set.
     611 */
     612static VBOXSTRICTRC ioapicSetData(PPDMDEVINS pDevIns, PIOAPIC pThis, PIOAPICCC pThisCC, uint32_t uValue)
    578613{
    579614    uint8_t const uIndex = pThis->u8Index;
     
    583618    if (   uIndex >= IOAPIC_INDIRECT_INDEX_REDIR_TBL_START
    584619        && uIndex <= pThis->u8LastRteRegIdx)
    585         return ioapicSetRedirTableEntry(pThis, uIndex, uValue);
     620        return ioapicSetRedirTableEntry(pDevIns, pThis, pThisCC, uIndex, uValue);
    586621
    587622    if (uIndex == IOAPIC_INDIRECT_INDEX_ID)
     
    599634static DECLCALLBACK(int) ioapicSetEoi(PPDMDEVINS pDevIns, uint8_t u8Vector)
    600635{
    601     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     636    PIOAPIC   pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     637    PIOAPICCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    602638    STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatSetEoi));
    603639    LogFlow(("IOAPIC: ioapicSetEoi: u8Vector=%#x (%u)\n", u8Vector, u8Vector));
    604640
    605641    bool fRemoteIrrCleared = false;
    606     int rc = IOAPIC_LOCK(pThis, VINF_IOM_R3_MMIO_WRITE);
     642    int rc = IOAPIC_LOCK(pDevIns, pThis, pThisCC, VINF_IOM_R3_MMIO_WRITE);
    607643    if (rc == VINF_SUCCESS)
    608644    {
     
    626662                uint32_t const uPinMask = UINT32_C(1) << idxRte;
    627663                if (pThis->uIrr & uPinMask)
    628                     ioapicSignalIntrForRte(pThis, idxRte);
     664                    ioapicSignalIntrForRte(pDevIns, pThis, pThisCC, idxRte);
    629665            }
    630666        }
    631667
    632         IOAPIC_UNLOCK(pThis);
     668        IOAPIC_UNLOCK(pDevIns, pThis, pThisCC);
    633669        AssertMsg(fRemoteIrrCleared, ("Failed to clear remote IRR for vector %#x (%u)\n", u8Vector, u8Vector));
    634670    }
     
    648684        pThis->au32TagSrc[(a_idxRte)] = !pThis->au32TagSrc[(a_idxRte)] ? uTagSrc : RT_BIT_32(31); \
    649685        pThis->uIrr |= a_PinMask; \
    650         ioapicSignalIntrForRte(pThis, (a_idxRte)); \
     686        ioapicSignalIntrForRte(pDevIns, pThis, pThisCC, (a_idxRte)); \
    651687    } while (0)
    652688
    653     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     689    PIOAPIC   pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     690    PIOAPICCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    654691    LogFlow(("IOAPIC: ioapicSetIrq: iIrq=%d iLevel=%d uTagSrc=%#x\n", iIrq, iLevel, uTagSrc));
    655692
     
    658695    if (RT_LIKELY((unsigned)iIrq < RT_ELEMENTS(pThis->au64RedirTable)))
    659696    {
    660         int rc = IOAPIC_LOCK(pThis, VINF_SUCCESS);
     697        int rc = IOAPIC_LOCK(pDevIns, pThis, pThisCC, VINF_SUCCESS);
    661698        AssertRC(rc);
    662699
     
    676713        {
    677714            pThis->uIrr &= ~uPinMask;
    678             IOAPIC_UNLOCK(pThis);
     715            IOAPIC_UNLOCK(pDevIns, pThis, pThisCC);
    679716            return;
    680717        }
     
    729766        }
    730767
    731         IOAPIC_UNLOCK(pThis);
     768        IOAPIC_UNLOCK(pDevIns, pThis, pThisCC);
    732769    }
    733770#undef IOAPIC_ASSERT_IRQ
     
    740777static DECLCALLBACK(void) ioapicSendMsi(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue, uint32_t uTagSrc)
    741778{
    742     PCIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PCIOAPIC);
     779    PIOAPICCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    743780    LogFlow(("IOAPIC: ioapicSendMsi: GCPhys=%#RGp uValue=%#RX32\n", GCPhys, uValue));
    744781
     
    763800     * Deliver to the local APIC via the system/3-wire-APIC bus.
    764801     */
    765     int rc = pThis->CTX_SUFF(pIoApicHlp)->pfnApicBusDeliver(pDevIns,
    766                                                             u8DestAddr,
    767                                                             u8DestMode,
    768                                                             u8DeliveryMode,
    769                                                             u8Vector,
    770                                                             0 /* u8Polarity - N/A */,
    771                                                             u8TriggerMode,
    772                                                             uTagSrc);
     802    int rc = pThisCC->pIoApicHlp->pfnApicBusDeliver(pDevIns,
     803                                                    u8DestAddr,
     804                                                    u8DestMode,
     805                                                    u8DeliveryMode,
     806                                                    u8Vector,
     807                                                    0 /* u8Polarity - N/A */,
     808                                                    u8TriggerMode,
     809                                                    uTagSrc);
    773810    /* Can't reschedule to R3. */
    774811    Assert(rc == VINF_SUCCESS || rc == VERR_APIC_INTR_DISCARDED); NOREF(rc);
     
    815852static DECLCALLBACK(VBOXSTRICTRC) ioapicMmioWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS off, void const *pv, unsigned cb)
    816853{
    817     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     854    PIOAPIC   pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     855    PIOAPICCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    818856    RT_NOREF_PV(pvUser);
    819857
     
    835873
    836874        case IOAPIC_DIRECT_OFF_DATA:
    837             rc = ioapicSetData(pThis, uValue);
     875            rc = ioapicSetData(pDevIns, pThis, pThisCC, uValue);
    838876            break;
    839877
     
    886924static DECLCALLBACK(int) ioapicR3DbgReg_SetData(void *pvUser, PCDBGFREGDESC pDesc, PCDBGFREGVAL pValue, PCDBGFREGVAL pfMask)
    887925{
     926    PPDMDEVINS pDevIns = (PPDMDEVINS)pvUser;
     927    PIOAPIC    pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     928    PIOAPICCC  pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    888929    RT_NOREF(pDesc, pfMask);
    889      return VBOXSTRICTRC_VAL(ioapicSetData(PDMDEVINS_2_DATA((PPDMDEVINS)pvUser, PIOAPIC), pValue->u32));
     930    return VBOXSTRICTRC_VAL(ioapicSetData(pDevIns, pThis, pThisCC, pValue->u32));
    890931}
    891932
     
    11171158static DECLCALLBACK(void) ioapicR3Reset(PPDMDEVINS pDevIns)
    11181159{
    1119     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     1160    PIOAPIC   pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     1161    PIOAPICCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    11201162    LogFlow(("IOAPIC: ioapicR3Reset: pThis=%p\n", pThis));
    11211163
    11221164    /* There might be devices threads calling ioapicSetIrq() in parallel, hence the lock. */
    1123     IOAPIC_LOCK(pThis, VERR_IGNORED);
     1165    IOAPIC_LOCK(pDevIns, pThis, pThisCC, VERR_IGNORED);
    11241166
    11251167    pThis->uIrr    = 0;
     
    11331175    }
    11341176
    1135     IOAPIC_UNLOCK(pThis);
     1177    IOAPIC_UNLOCK(pDevIns, pThis, pThisCC);
    11361178}
    11371179
     
    11421184static DECLCALLBACK(void) ioapicR3Relocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    11431185{
    1144     RT_NOREF(offDelta);
    1145     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
    1146     LogFlow(("IOAPIC: ioapicR3Relocate: pThis=%p offDelta=%RGi\n", pThis, offDelta));
    1147 
    1148     pThis->pDevInsRC    = PDMDEVINS_2_RCPTR(pDevIns);
    1149     pThis->pIoApicHlpRC += offDelta;
     1186    PIOAPICRC pThisRC = PDMINS_2_DATA_RC(pDevIns, PIOAPICRC);
     1187    LogFlow(("IOAPIC: ioapicR3Relocate: pThis=%p offDelta=%RGi\n", PDMDEVINS_2_DATA(pDevIns, PIOAPIC), offDelta));
     1188
     1189    pThisRC->pIoApicHlp += offDelta;
    11501190}
    11511191
     
    11801220{
    11811221    PDMDEV_CHECK_VERSIONS_RETURN(pDevIns);
    1182     PIOAPIC         pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
    1183     PCPDMDEVHLPR3   pHlp  = pDevIns->pHlpR3;
     1222    PIOAPIC         pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     1223    PIOAPICCC       pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
     1224    PCPDMDEVHLPR3   pHlp    = pDevIns->pHlpR3;
    11841225    LogFlow(("IOAPIC: ioapicR3Construct: pThis=%p iInstance=%d\n", pThis, iInstance));
    11851226    Assert(iInstance == 0); RT_NOREF(iInstance);
    1186 
    1187     /*
    1188      * Initialize the state data.
    1189      */
    1190     pThis->pDevInsR3 = pDevIns;
    1191     pThis->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    1192     pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    11931227
    11941228    /*
     
    12691303    IoApicReg.pfnSetEoi    = ioapicSetEoi;
    12701304    IoApicReg.u32TheEnd    = PDM_IOAPICREG_VERSION;
    1271     rc = PDMDevHlpIoApicRegister(pDevIns, &IoApicReg, &pThis->pIoApicHlpR3);
     1305    rc = PDMDevHlpIoApicRegister(pDevIns, &IoApicReg, &pThisCC->pIoApicHlp);
    12721306    AssertRCReturn(rc, rc);
    12731307
     
    12941328     * Register debugger register access.
    12951329     */
    1296     rc = PDMDevHlpDBGFRegRegister(pDevIns, g_aRegDesc); AssertRC(rc);
     1330    rc = PDMDevHlpDBGFRegRegister(pDevIns, g_aRegDesc);
    12971331    AssertRCReturn(rc, rc);
    12981332
     
    13391373{
    13401374    PDMDEV_CHECK_VERSIONS_RETURN(pDevIns);
    1341     PIOAPIC pThis = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     1375    PIOAPIC     pThis   = PDMDEVINS_2_DATA(pDevIns, PIOAPIC);
     1376    PIOAPICCC   pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PIOAPICCC);
    13421377
    13431378    int rc = PDMDevHlpSetDeviceCritSect(pDevIns, PDMDevHlpCritSectGetNop(pDevIns));
     
    13501385    IoApicReg.pfnSetEoi    = ioapicSetEoi;
    13511386    IoApicReg.u32TheEnd    = PDM_IOAPICREG_VERSION;
    1352     rc = PDMDevHlpIoApicSetUpContext(pDevIns, &IoApicReg, &pThis->CTX_SUFF(pIoApicHlp));
     1387    rc = PDMDevHlpIoApicSetUpContext(pDevIns, &IoApicReg, &pThisCC->pIoApicHlp);
    13531388    AssertRCReturn(rc, rc);
    13541389
     
    13691404    /* .uReserved0 = */             0,
    13701405    /* .szName = */                 "ioapic",
    1371     /* .fFlags = */                 PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RZ,
     1406    /* .fFlags = */                 PDM_DEVREG_FLAGS_DEFAULT_BITS | PDM_DEVREG_FLAGS_RZ | PDM_DEVREG_FLAGS_NEW_STYLE,
    13721407    /* .fClass = */                 PDM_DEVREG_CLASS_PIC,
    13731408    /* .cMaxInstances = */          1,
    13741409    /* .uSharedVersion = */         42,
    13751410    /* .cbInstanceShared = */       sizeof(IOAPIC),
    1376     /* .cbInstanceCC = */           0,
    1377     /* .cbInstanceRC = */           0,
     1411    /* .cbInstanceCC = */           sizeof(IOAPICCC),
     1412    /* .cbInstanceRC = */           sizeof(IOAPICRC),
    13781413    /* .cMaxPciDevices = */         0,
    13791414    /* .cMaxMsixVectors = */        0,
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