VirtualBox

Changeset 83127 in vbox for trunk/src/VBox/Devices/Storage


Ignore:
Timestamp:
Feb 21, 2020 10:46:07 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136240
Message:

DevBusLogic: Generalized commands that do not set CMDC.

File:
1 edited

Legend:

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

    r83126 r83127  
    11901190 * @param   pThis           Pointer to the shared BusLogic instance data.
    11911191 * @param   fSuppressIrq    Flag to suppress IRQ generation regardless of current state
    1192  */
    1193 static void buslogicCommandComplete(PPDMDEVINS pDevIns, PBUSLOGIC pThis, bool fSuppressIrq)
     1192 * @param   fNoComplStat    Flag to suppress command completion status as well
     1193 */
     1194static void buslogicCommandComplete(PPDMDEVINS pDevIns, PBUSLOGIC pThis, bool fSuppressIrq, bool fSuppressCMDC)
    11941195{
    11951196    LogFlowFunc(("pThis=%#p\n", pThis));
     
    12001201    pThis->iReply = 0;
    12011202
    1202     /* The Enable OMBR command does not set CMDC when successful. */
    1203     if (pThis->uOperationCode != BUSLOGICCOMMAND_ENABLE_OUTGOING_MAILBOX_AVAILABLE_INTERRUPT)
     1203    /* Some commands do not set CMDC when successful. */
     1204    if (!fSuppressCMDC)
    12041205    {
    12051206        /* Notify that the command is complete. */
     
    18121813    int rc = VINF_SUCCESS;
    18131814    bool fSuppressIrq = false;
     1815    bool fSuppressCMDC = false;
    18141816
    18151817    LogFlowFunc(("pThis=%#p\n", pThis));
     
    18541856            pThis->cbReplyParametersLeft = 0;
    18551857            fSuppressIrq = true;
     1858            fSuppressCMDC = true;
    18561859            break;
    18571860#else
     
    22602263                pThis->LocalRam.structured.autoSCSIData.uReserved6 = uEnable;
    22612264                fSuppressIrq = true;
     2265                fSuppressCMDC = true;
    22622266            }
    22632267            break;
     
    23442348        pThis->regStatus |= BL_STAT_DIRRDY;
    23452349    else if (!pThis->cbCommandParametersLeft)
    2346         buslogicCommandComplete(pDevIns, pThis, fSuppressIrq);
     2350        buslogicCommandComplete(pDevIns, pThis, fSuppressIrq, fSuppressCMDC );
    23472351
    23482352    return rc;
     
    24142418                     */
    24152419                    if (pThis->uOperationCode == BUSLOGICCOMMAND_FETCH_HOST_ADAPTER_LOCAL_RAM)
    2416                         buslogicCommandComplete(pDevIns, pThis, true /* fSuppressIrq */);
     2420                        buslogicCommandComplete(pDevIns, pThis, true /* fSuppressIrq */, true /* fSuppressCMDC */ );
    24172421                    else
    2418                         buslogicCommandComplete(pDevIns, pThis, false);
     2422                        buslogicCommandComplete(pDevIns, pThis, false, false);
    24192423                }
    24202424            }
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