VirtualBox

Changeset 68929 in vbox


Ignore:
Timestamp:
Sep 29, 2017 12:31:58 PM (7 years ago)
Author:
vboxsync
Message:

Dev/E1000: (bugref:8942) Fixed Windows XP boot freeze.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manual/user_ChangeLogImpl.xml

    r68926 r68929  
    100100      <listitem>
    101101        <para>EFI: better video mode handling</para>
     102      </listitem>
     103
     104      <listitem>
     105        <para>E1000: Windows XP freeze when booting with unplugged cable</para>
    102106      </listitem>
    103107
  • trunk/src/VBox/Devices/Network/DevE1000.cpp

    r68727 r68929  
    6060 */
    6161#define E1K_INIT_RA0
     62/** @def E1K_LSC_ON_RESET
     63 * E1K_LSC_ON_RESET causes e1000 to generate Link Status Change
     64 * interrupt after hard reset. This makes the E1K_LSC_ON_SLU option unnecessary.
     65 * With unplugged cable, LSC is triggerred for 82543GC only.
     66 */
     67#define E1K_LSC_ON_RESET
    6268/** @def E1K_LSC_ON_SLU
    6369 * E1K_LSC_ON_SLU causes E1000 to generate Link Status Change interrupt when
     
    6571 * that requires it is Mac OS X (see @bugref{4657}).
    6672 */
    67 #define E1K_LSC_ON_SLU
     73//#define E1K_LSC_ON_SLU
    6874/** @def E1K_INIT_LINKUP_DELAY
    6975 * E1K_INIT_LINKUP_DELAY prevents the link going up while the driver is still
     
    16681674    }
    16691675#endif /* E1K_WITH_RXD_CACHE */
     1676#ifdef E1K_LSC_ON_RESET
     1677    E1kLog(("%s Will trigger LSC in %d seconds...\n",
     1678            pThis->szPrf, pThis->cMsLinkUpDelay / 1000));
     1679    e1kArmTimer(pThis, pThis->CTX_SUFF(pLUTimer), pThis->cMsLinkUpDelay * 1000);
     1680#endif /* E1K_LSC_ON_RESET */
    16701681}
    16711682
     
    25762587    E1kLog(("%s Link is down\n", pThis->szPrf));
    25772588    STATUS &= ~STATUS_LU;
     2589#ifdef E1K_LSC_ON_RESET
     2590    Phy::setLinkStatus(&pThis->phy, false);
     2591#endif /* E1K_LSC_ON_RESET */
    25782592    e1kRaiseInterrupt(pThis, VERR_SEM_BUSY, ICR_LSC);
    25792593    if (pThis->pDrvR3)
     
    34143428     * This can happen if we set the link status to down when the Link up timer was
    34153429     * already armed (shortly after e1kLoadDone() or when the cable was disconnected
    3416      * and connect+disconnect the cable very quick.
     3430     * and connect+disconnect the cable very quick. Moreover, 82543GC triggers LSC
     3431     * on reset even if the cable is unplugged (see @bugref{8942}).
    34173432     */
    3418     if (!pThis->fCableConnected)
    3419         return;
    3420 
    3421     e1kR3LinkUp(pThis);
     3433    if (pThis->fCableConnected)
     3434        e1kR3LinkUp(pThis);
     3435#ifdef E1K_LSC_ON_RESET
     3436    else if (pThis->eChip == E1K_CHIP_82543GC)
     3437        e1kR3LinkDown(pThis);
     3438#endif /* E1K_LSC_ON_RESET */
    34223439}
    34233440
     
    76527669                                N_("Configuration error: Failed to get the value of 'TidEnabled'"));
    76537670
    7654     rc = CFGMR3QueryU32Def(pCfg, "LinkUpDelay", (uint32_t*)&pThis->cMsLinkUpDelay, 5000); /* ms */
     7671    rc = CFGMR3QueryU32Def(pCfg, "LinkUpDelay", (uint32_t*)&pThis->cMsLinkUpDelay, 3000); /* ms */
    76557672    if (RT_FAILURE(rc))
    76567673        return PDMDEV_SET_ERROR(pDevIns, rc,
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