VirtualBox

Changeset 90910 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Aug 26, 2021 12:58:20 PM (3 years ago)
Author:
vboxsync
Message:

VMM/PDMCritSect[Rw]Enter*: Don't set cNsMaxTotal back to RT_NS_1MIN after we've entered non-interruptible mode. bugref:6695

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp

    r90657 r90910  
    206206# else /* IN_RING0 */
    207207    uint64_t const          tsStart     = RTTimeNanoTS();
    208     uint64_t                cNsMaxTotal = RT_NS_5MIN;
     208    uint64_t const          cNsMaxTotalDef = RT_NS_5MIN;
     209    uint64_t                cNsMaxTotal = cNsMaxTotalDef;
    209210    uint64_t const          cNsMaxRetry = RT_NS_15SEC;
    210211    uint32_t                cMsMaxOne   = RT_MS_5SEC;
     
    283284            AssertMsg(rcTerm == VINF_SUCCESS || rcTerm == VERR_NOT_SUPPORTED || rcTerm == VINF_THREAD_IS_TERMINATING,
    284285                      ("rcTerm=%Rrc\n", rcTerm));
    285             if (rcTerm == VERR_NOT_SUPPORTED)
     286            if (rcTerm == VERR_NOT_SUPPORTED && cNsMaxTotal == cNsMaxTotalDef)
    286287                cNsMaxTotal = RT_NS_1MIN;
    287288
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSectRw.cpp

    r90677 r90910  
    390390# ifdef IN_RING0
    391391    uint64_t const          tsStart           = RTTimeNanoTS();
    392     uint64_t                cNsMaxTotal       = RT_NS_5MIN;
     392    uint64_t const          cNsMaxTotalDef    = RT_NS_5MIN;
     393    uint64_t                cNsMaxTotal       = cNsMaxTotalDef;
    393394    uint32_t                cMsMaxOne         = RT_MS_5SEC;
    394395    bool                    fNonInterruptible = false;
     
    455456                AssertMsg(rcTerm == VINF_SUCCESS || rcTerm == VERR_NOT_SUPPORTED || rcTerm == VINF_THREAD_IS_TERMINATING,
    456457                          ("rcTerm=%Rrc\n", rcTerm));
    457                 if (rcTerm == VERR_NOT_SUPPORTED)
     458                if (rcTerm == VERR_NOT_SUPPORTED && cNsMaxTotal == cNsMaxTotalDef)
    458459                    cNsMaxTotal = RT_NS_1MIN;
    459460
     
    11481149# ifdef IN_RING0
    11491150    uint64_t const          tsStart           = RTTimeNanoTS();
    1150     uint64_t                cNsMaxTotal       = RT_NS_5MIN;
     1151    uint64_t const          cNsMaxTotalDef    = RT_NS_5MIN;
     1152    uint64_t                cNsMaxTotal       = cNsMaxTotalDef;
    11511153    uint32_t                cMsMaxOne         = RT_MS_5SEC;
    11521154    bool                    fNonInterruptible = false;
     
    12151217                AssertMsg(rcTerm == VINF_SUCCESS || rcTerm == VERR_NOT_SUPPORTED || rcTerm == VINF_THREAD_IS_TERMINATING,
    12161218                          ("rcTerm=%Rrc\n", rcTerm));
    1217                 if (rcTerm == VERR_NOT_SUPPORTED)
     1219                if (rcTerm == VERR_NOT_SUPPORTED && cNsMaxTotal == cNsMaxTotalDef)
    12181220                    cNsMaxTotal = RT_NS_1MIN;
    12191221
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