VirtualBox

Changeset 24138 in vbox for trunk/src


Ignore:
Timestamp:
Oct 28, 2009 1:18:51 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
54059
Message:

Missing Set/ClearInterruptFF cases for R0 & RC.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMGC/PDMGCDevice.cpp

    r24125 r24138  
    370370    PDMDEV_ASSERT_DEVINS(pDevIns);
    371371    PVM pVM = pDevIns->Internal.s.pVMRC;
     372
     373    if (pVM->pdm.s.Apic.pfnLocalInterruptRC)
     374    {
     375        LogFlow(("pdmRCPicHlp_SetInterruptFF: caller='%p'/%d: Setting local interrupt on LAPIC\n",
     376                 pDevIns, pDevIns->iInstance));
     377        /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
     378        pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, 0, 1);
     379        return;
     380    }
     381
    372382    PVMCPU pVCpu = &pVM->aCpus[0];  /* for PIC we always deliver to CPU 0, MP use APIC */
    373383
     
    384394    PDMDEV_ASSERT_DEVINS(pDevIns);
    385395    PVM pVM = pDevIns->Internal.s.CTX_SUFF(pVM);
     396
     397    if (pVM->pdm.s.Apic.pfnLocalInterruptRC)
     398    {
     399        /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
     400        LogFlow(("pdmRCPicHlp_ClearInterruptFF: caller='%s'/%d: Clearing local interrupt on LAPIC\n",
     401                 pDevIns, pDevIns->iInstance));
     402        /* Lower the LAPIC's LINT0 line instead of signaling the CPU directly. */
     403        pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, 0, 0);
     404        return;
     405    }
     406
    386407    PVMCPU pVCpu = &pVM->aCpus[0];  /* for PIC we always deliver to CPU 0, MP use APIC */
    387408
  • trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp

    r24125 r24138  
    386386    PDMDEV_ASSERT_DEVINS(pDevIns);
    387387    PVM    pVM   = pDevIns->Internal.s.pVMR0;
     388
     389    if (pVM->pdm.s.Apic.pfnLocalInterruptR0)
     390    {
     391        LogFlow(("pdmR0PicHlp_SetInterruptFF: caller='%p'/%d: Setting local interrupt on LAPIC\n",
     392                 pDevIns, pDevIns->iInstance));
     393        /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
     394        pVM->pdm.s.Apic.pfnLocalInterruptR0(pVM->pdm.s.Apic.pDevInsR0, 0, 1);
     395        return;
     396    }
     397
    388398    PVMCPU pVCpu = &pVM->aCpus[0];      /* for PIC we always deliver to CPU 0, MP use APIC */
    389399
     
    400410    PDMDEV_ASSERT_DEVINS(pDevIns);
    401411    PVM    pVM   = pDevIns->Internal.s.pVMR0;
     412
     413    if (pVM->pdm.s.Apic.pfnLocalInterruptR0)
     414    {
     415        /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */
     416        LogFlow(("pdmR0PicHlp_ClearInterruptFF: caller='%s'/%d: Clearing local interrupt on LAPIC\n",
     417                 pDevIns, pDevIns->iInstance));
     418        /* Lower the LAPIC's LINT0 line instead of signaling the CPU directly. */
     419        pVM->pdm.s.Apic.pfnLocalInterruptR0(pVM->pdm.s.Apic.pDevInsR0, 0, 0);
     420        return;
     421    }
     422
    402423    PVMCPU pVCpu = &pVM->aCpus[0];      /* for PIC we always deliver to CPU 0, MP use APIC */
    403424
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