VirtualBox

Ignore:
Timestamp:
May 15, 2020 6:30:29 AM (5 years ago)
Author:
vboxsync
Message:

AMD IOMMU: bugref:9654 Bits.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Bus/DevIommuAmd.cpp

    r84314 r84315  
    26372637
    26382638/**
    2639  * Halts command processing.
    2640  *
    2641  * @param   pDevIns     The IOMMU device instance.
    2642  */
    2643 static void iommuAmdHaltCmdProcessing(PPDMDEVINS pDevIns)
    2644 {
    2645     IOMMU_ASSERT_LOCKED(pDevIns);
    2646 
    2647     PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
    2648     ASMAtomicAndU64(&pThis->Status.u64, ~IOMMU_STATUS_CMD_BUF_RUNNING);
    2649 }
    2650 
    2651 
    2652 /**
    26532639 * Wakes up the command thread if there are commands to be processed or if
    26542640 * processing is requested to be stopped by software.
     
    37103696    AssertCompile(sizeof(EVT_GENERIC_T) == sizeof(EVT_CMD_HW_ERR_T));
    37113697    PCEVT_GENERIC_T pEvent = (PCEVT_GENERIC_T)pEvtCmdHwErr;
     3698    PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
    37123699
    37133700    IOMMU_LOCK_NORET(pDevIns);
     
    37153702    iommuAmdSetHwError(pDevIns, (PCEVT_GENERIC_T)pEvent);
    37163703    iommuAmdWriteEvtLogEntry(pDevIns, (PCEVT_GENERIC_T)pEvent);
    3717     iommuAmdHaltCmdProcessing(pDevIns);
     3704    ASMAtomicAndU64(&pThis->Status.u64, ~IOMMU_STATUS_CMD_BUF_RUNNING);
    37183705
    37193706    IOMMU_UNLOCK(pDevIns);
     
    38043791    AssertCompile(sizeof(EVT_GENERIC_T) == sizeof(EVT_ILLEGAL_DTE_T));
    38053792    PCEVT_GENERIC_T pEvent = (PCEVT_GENERIC_T)pEvtIllegalCmd;
     3793    PIOMMU pThis = PDMDEVINS_2_DATA(pDevIns, PIOMMU);
    38063794
    38073795    IOMMU_LOCK_NORET(pDevIns);
    38083796
    38093797    iommuAmdWriteEvtLogEntry(pDevIns, pEvent);
    3810     iommuAmdHaltCmdProcessing(pDevIns);
     3798    ASMAtomicAndU64(&pThis->Status.u64, ~IOMMU_STATUS_CMD_BUF_RUNNING);
    38113799
    38123800    IOMMU_UNLOCK(pDevIns);
     
    47684756
    47694757        IOMMU_STATUS_T const Status = iommuAmdGetStatus(pThis);
    4770         if (Status.u64 & IOMMU_STATUS_CMD_BUF_RUNNING)
     4758        if (Status.n.u1CmdBufRunning)
    47714759        {
    47724760            /* Get the offset we need to read the command from memory (circular buffer offset). */
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