VirtualBox

Changeset 12487 in vbox for trunk/src


Ignore:
Timestamp:
Sep 16, 2008 1:04:14 PM (16 years ago)
Author:
vboxsync
Message:

multiple LAPICs intermediate commit

Location:
trunk/src/VBox
Files:
2 edited

Legend:

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

    r11284 r12487  
    180180#ifndef VBOX
    181181    QEMUTimer *timer;
    182 
    183182    struct APICState *next_apic;
    184183#else /* VBOX */
     184#ifdef VBOX_WITH_SMP_GUESTS
     185    //struct APICState *next_apic;
     186#endif
    185187    /** The device instance - R3 Ptr. */
    186188    PPDMDEVINSR3    pDevInsR3;
     
    15431545    APICState *s = PDMINS_2_DATA(pDevIns, APICState *);
    15441546
     1547#ifdef VBOX_WITH_SMP_GUESTS
     1548    LogRel(("[SMP] apicMMIORead %p at %ullx\n", pDevIns, (uint64_t)GCPhysAddr));
     1549#endif
     1550
    15451551    STAM_COUNTER_INC(&CTXSUFF(s->StatMMIORead));
    15461552    switch (cb)
     
    16741680    bool            fGCEnabled;
    16751681    bool            fR0Enabled;
     1682
     1683#ifndef VBOX_WITH_SMP_GUESTS
    16761684    Assert(iInstance == 0);
     1685#else
     1686    LogRel(("[SMP] apicConstruct: %d %p\n", iInstance, pDevIns));
     1687#endif
    16771688
    16781689    /*
     
    17081719        pThis->lvt[i] = 1 << 16; /* mask LVT */
    17091720    pThis->spurious_vec = 0xff;
     1721
    17101722
    17111723    /*
     
    17711783    {
    17721784        if (   fIOAPIC                       /* If IOAPIC is enabled, enable Local APIC in any case */
    1773             || (   u32Ebx == X86_CPUID_VENDOR_INTEL_EBX
    1774                 && u32Ecx == X86_CPUID_VENDOR_INTEL_ECX
    1775                 && u32Edx == X86_CPUID_VENDOR_INTEL_EDX /* GenuineIntel */)
    1776             || (   u32Ebx == X86_CPUID_VENDOR_AMD_EBX
    1777                 && u32Ecx == X86_CPUID_VENDOR_AMD_ECX
    1778                 && u32Edx == X86_CPUID_VENDOR_AMD_EDX   /* AuthenticAMD */))
     1785               || (   u32Ebx == X86_CPUID_VENDOR_INTEL_EBX
     1786                      && u32Ecx == X86_CPUID_VENDOR_INTEL_ECX
     1787                      && u32Edx == X86_CPUID_VENDOR_INTEL_EDX /* GenuineIntel */)
     1788               || (   u32Ebx == X86_CPUID_VENDOR_AMD_EBX
     1789                      && u32Ecx == X86_CPUID_VENDOR_AMD_ECX
     1790                      && u32Edx == X86_CPUID_VENDOR_AMD_EDX   /* AuthenticAMD */))
    17791791        {
    17801792            LogRel(("Activating Local APIC\n"));
     
    18621874    PDM_DEVREG_CLASS_PIC,
    18631875    /* cMaxInstances */
     1876#ifdef VBOX_WITH_SMP_GUESTS
     1877    8,
     1878#else
    18641879    1,
     1880#endif
    18651881    /* cbInstance */
    18661882    sizeof(APICState),
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r12432 r12487  
    431431        {
    432432            ComPtr<IHostFloppyDrive> hostFloppyDrive;
    433             hrc = floppyDrive->GetHostDrive(hostFloppyDrive.asOutParam());              H();
     433            hrc = floppyDrive->GetHostDrive(hostFloppyDrive.asOutParam());                  H();
    434434            if (hostFloppyDrive)
    435435            {
     
    500500     * Advanced Programmable Interrupt Controller.
    501501     */
     502#ifdef VBOX_WITH_SMP_GUESTS
     503    rc = CFGMR3InsertNode(pDevices, "apic", &pDev);                                 RC_CHECK();
     504    /* We need LAPIC per-CPU, as it allows cross-calls */
     505    for (ULONG ulInstance = 0; ulInstance < cCpus; ulInstance++)
     506    {
     507        char szInstance[4]; Assert(ulInstance <= 999);
     508        RTStrPrintf(szInstance, sizeof(szInstance), "%lu", ulInstance);
     509        rc = CFGMR3InsertNode(pDev, szInstance, &pInst);
     510        RC_CHECK();
     511        rc = CFGMR3InsertInteger(pInst, "Trusted",              1);     /* boolean */   RC_CHECK();
     512        rc = CFGMR3InsertNode(pInst,    "Config", &pCfg);                               RC_CHECK();
     513        rc = CFGMR3InsertInteger(pCfg,  "IOAPIC", fIOAPIC);                             RC_CHECK();
     514    }
     515#else
    502516    rc = CFGMR3InsertNode(pDevices, "apic", &pDev);                                 RC_CHECK();
    503517    rc = CFGMR3InsertNode(pDev,     "0", &pInst);                                   RC_CHECK();
     
    505519    rc = CFGMR3InsertNode(pInst,    "Config", &pCfg);                               RC_CHECK();
    506520    rc = CFGMR3InsertInteger(pCfg,  "IOAPIC", fIOAPIC);                             RC_CHECK();
     521#endif
    507522
    508523    if (fIOAPIC)
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