VirtualBox

Changeset 43657 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Oct 16, 2012 3:34:05 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
81423
Message:

VMM: APIC refactor. Moved APIC base MSR to the VCPU (where it belongs) for lockless accesses.

Location:
trunk/include/VBox/vmm
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.mac

    r41906 r43657  
    44
    55;
    6 ; Copyright (C) 2006-2010 Oracle Corporation
     6; Copyright (C) 2006-2012 Oracle Corporation
    77;
    88; This file is part of VirtualBox Open Source Edition (OSE), as
     
    194194    .msrSFMASK          resb    8
    195195    .msrKERNELGSBASE    resb    8
    196     .au32SizePadding    resb    32
     196    .msrApicBase        resb    8
     197    .au32SizePadding    resb    24
    197198endstruc
    198199
     
    206207
    207208%endif
     209
  • trunk/include/VBox/vmm/cpumctx.h

    r42427 r43657  
    400400    uint64_t        msrSFMASK;          /**< syscall flag mask. */
    401401    uint64_t        msrKERNELGSBASE;    /**< swapgs exchange value. */
     402    uint64_t        msrApicBase;        /**< The local APIC base (IA32_APIC_BASE MSR). */
    402403    /** @} */
    403404
    404405    /** Size padding. */
    405     uint32_t        au32SizePadding[8];
     406    uint32_t        au32SizePadding[6];
    406407} CPUMCTX;
    407408#pragma pack()
  • trunk/include/VBox/vmm/hm_vmx.h

    r43390 r43657  
    429429    struct
    430430    {
     431        /** Bits set here -must- be set in the correpsonding VM-execution controls. */
    431432        uint32_t        disallowed0;
     433        /** Bits cleared here -must- be cleared in the corresponding VM-execution
     434         *  controls. */
    432435        uint32_t        allowed1;
    433436    } n;
  • trunk/include/VBox/vmm/pdmapi.h

    r40907 r43657  
    4747VMMDECL(bool)       PDMHasIoApic(PVM pVM);
    4848VMMDECL(int)        PDMApicHasPendingIrq(PVM pVM, bool *pfPending);
    49 VMMDECL(int)        PDMApicSetBase(PVM pVM, uint64_t u64Base);
    50 VMMDECL(int)        PDMApicGetBase(PVM pVM, uint64_t *pu64Base);
     49VMMDECL(int)        PDMApicSetBase(PVMCPU pVCpu, uint64_t u64Base);
     50VMMDECL(int)        PDMApicGetBase(PVMCPU pVCpu, uint64_t *pu64Base);
     51VMMDECL(int)        PDMApicGetBaseFromApic(PVMCPU pVCpu, uint64_t *pu64Base);
    5152VMMDECL(int)        PDMApicSetTPR(PVMCPU pVCpu, uint8_t u8TPR);
    5253VMMDECL(int)        PDMApicGetTPR(PVMCPU pVCpu, uint8_t *pu8TPR, bool *pfPending);
  • trunk/include/VBox/vmm/pdmdev.h

    r43472 r43657  
    10781078     * @returns Pending interrupt number.
    10791079     * @param   pDevIns         Device instance of the APIC.
     1080     * @param   idCpu           The VCPU Id.
    10801081     * @param   puTagSrc        Where to return the tag source.
    10811082     */
    1082     DECLR3CALLBACKMEMBER(int, pfnGetInterruptR3,(PPDMDEVINS pDevIns, uint32_t *puTagSrc));
     1083    DECLR3CALLBACKMEMBER(int, pfnGetInterruptR3,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t *puTagSrc));
    10831084
    10841085    /**
     
    10871088     * @returns Pending interrupt yes/no
    10881089     * @param   pDevIns         Device instance of the APIC.
    1089      */
    1090     DECLR3CALLBACKMEMBER(bool, pfnHasPendingIrqR3,(PPDMDEVINS pDevIns));
     1090     * @param   idCpu           The VCPU Id.
     1091     */
     1092    DECLR3CALLBACKMEMBER(bool, pfnHasPendingIrqR3,(PPDMDEVINS pDevIns, VMCPUID idCpu));
    10911093
    10921094    /**
     
    10941096     *
    10951097     * @param   pDevIns         Device instance of the APIC.
     1098     * @param   idCpu           The VCPU Id.
    10961099     * @param   u64Base         The new base.
    10971100     */
    1098     DECLR3CALLBACKMEMBER(void, pfnSetBaseR3,(PPDMDEVINS pDevIns, uint64_t u64Base));
     1101    DECLR3CALLBACKMEMBER(void, pfnSetBaseR3,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint64_t u64Base));
    10991102
    11001103    /**
     
    11031106     * @returns Current base.
    11041107     * @param   pDevIns         Device instance of the APIC.
    1105      */
    1106     DECLR3CALLBACKMEMBER(uint64_t, pfnGetBaseR3,(PPDMDEVINS pDevIns));
     1108     * @param   idCpu           The VCPU Id.
     1109     */
     1110    DECLR3CALLBACKMEMBER(uint64_t, pfnGetBaseR3,(PPDMDEVINS pDevIns, VMCPUID idCpu));
    11071111
    11081112    /**
     
    11101114     *
    11111115     * @param   pDevIns         Device instance of the APIC.
    1112      * @param   idCpu           VCPU id
     1116     * @param   idCpu           The VCPU id.
    11131117     * @param   u8TPR           The new TPR.
    11141118     */
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