VirtualBox

Changeset 30725 in vbox


Ignore:
Timestamp:
Jul 8, 2010 8:56:22 AM (15 years ago)
Author:
vboxsync
Message:

BusLogic: Fix for W2K and ACPI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevBusLogic.cpp

    r30723 r30725  
    790790 * @returns nothing.
    791791 * @param   pBusLogic  Pointer to the BusLogic device instance.
    792  */
    793 static void buslogicSetInterrupt(PBUSLOGIC pBusLogic)
     792 * @param   fSuppressIrq    Flag to suppress IRQ generation regardless of fIRQEnabled
     793 */
     794static void buslogicSetInterrupt(PBUSLOGIC pBusLogic, bool fSuppressIrq)
    794795{
    795796    LogFlowFunc(("pBusLogic=%#p\n", pBusLogic));
     
    862863 *
    863864 * @returns nothing.
    864  * @param   pBusLogic   Pointer to the BusLogic device instance
    865  */
    866 static void buslogicCommandComplete(PBUSLOGIC pBusLogic)
     865 * @param   pBusLogic       Pointer to the BusLogic device instance
     866 * @param   fSuppressIrq    Flag to suppress IRQ generation regardless of current state
     867 */
     868static void buslogicCommandComplete(PBUSLOGIC pBusLogic, bool fSuppressIrq)
    867869{
    868870    LogFlowFunc(("pBusLogic=%#p\n", pBusLogic));
     
    880882        pBusLogic->regInterrupt |= BUSLOGIC_REGISTER_INTERRUPT_COMMAND_COMPLETE;
    881883
    882         buslogicSetInterrupt(pBusLogic);
     884        buslogicSetInterrupt(pBusLogic, fSuppressIrq);
    883885    }
    884886
     
    941943
    942944    pBusLogic->regInterrupt |= BUSLOGIC_REGISTER_INTERRUPT_INCOMING_MAILBOX_LOADED;
    943     buslogicSetInterrupt(pBusLogic);
     945    buslogicSetInterrupt(pBusLogic, false);
    944946
    945947    PDMCritSectLeave(&pBusLogic->CritSectIntr);
     
    12641266{
    12651267    int rc = VINF_SUCCESS;
     1268    bool fSuppressIrq = false;
    12661269
    12671270    LogFlowFunc(("pBusLogic=%#p\n", pBusLogic));
     
    14511454            else
    14521455                pBusLogic->fIRQEnabled = true;
     1456            /* No interrupt signaled regardless of enable/disable. */
     1457            fSuppressIrq = true;
    14531458            break;
    14541459        }
     
    14841489        pBusLogic->regStatus |= BUSLOGIC_REGISTER_STATUS_DATA_IN_REGISTER_READY;
    14851490    else
    1486         buslogicCommandComplete(pBusLogic);
     1491        buslogicCommandComplete(pBusLogic, fSuppressIrq);
    14871492
    14881493    return rc;
     
    15341539                 * interrupt the guest if enabled.
    15351540                 */
    1536                 buslogicCommandComplete(pBusLogic);
     1541                buslogicCommandComplete(pBusLogic, false);
    15371542            }
    15381543            break;
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