VirtualBox

Changeset 105572 in vbox


Ignore:
Timestamp:
Aug 2, 2024 12:35:51 AM (9 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164244
Message:

VMM/IEM: Fixed some bugs in the 2MB/4MB page invalidation code. bugref:10727

File:
1 edited

Legend:

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

    r105559 r105572  
    798798     * Do the scanning.
    799799     */
    800     for (idxEven = 0; idxEven < idxEvenEnd; idxEven += 2)
     800    for (; idxEven < idxEvenEnd; idxEven += 2)
    801801    {
    802802        if (a_fNonGlobal)
     
    837837
    838838    GCPtrTag &= ~(RTGCPTR)(RT_BIT_64((a_f2MbLargePage ? 21 : 22) - GUEST_PAGE_SHIFT) - 1U);
    839     if (   pTlb->GlobalLargePageRange.uFirstTag >= GCPtrTag
    840         && pTlb->GlobalLargePageRange.uLastTag  <= GCPtrTag)
    841     {
    842         if (   pTlb->NonGlobalLargePageRange.uFirstTag < GCPtrTag
    843             || pTlb->NonGlobalLargePageRange.uLastTag  > GCPtrTag)
     839    if (   GCPtrTag >= pTlb->GlobalLargePageRange.uFirstTag
     840        && GCPtrTag <= pTlb->GlobalLargePageRange.uLastTag)
     841    {
     842        if (   GCPtrTag < pTlb->NonGlobalLargePageRange.uFirstTag
     843            || GCPtrTag > pTlb->NonGlobalLargePageRange.uLastTag)
    844844            iemTlbInvalidateLargePageWorkerInner<a_fDataTlb, a_f2MbLargePage, true, false>(pVCpu, pTlb, GCPtrTag, GCPtrInstrBufPcTag);
    845845        else
    846846            iemTlbInvalidateLargePageWorkerInner<a_fDataTlb, a_f2MbLargePage, true, true>(pVCpu, pTlb, GCPtrTag, GCPtrInstrBufPcTag);
    847847    }
    848     else if (   pTlb->NonGlobalLargePageRange.uFirstTag < GCPtrTag
    849              || pTlb->NonGlobalLargePageRange.uLastTag  > GCPtrTag)
     848    else if (   GCPtrTag < pTlb->NonGlobalLargePageRange.uFirstTag
     849             || GCPtrTag > pTlb->NonGlobalLargePageRange.uLastTag)
    850850    { /* Large pages aren't as likely in the non-global TLB half. */ }
    851851    else
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette