Преглед изворни кода

Merge pull request #12953 from FernandoS27/zero-fps-mah-ass

SMMU: Ensure the backing address range matches the current
liamwhite пре 2 година
родитељ
комит
bc9711cb1e
1 измењених фајлова са 7 додато и 0 уклоњено
  1. 7 0
      src/core/device_memory_manager.inc

+ 7 - 0
src/core/device_memory_manager.inc

@@ -532,6 +532,7 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size
             cache_bytes = 0;
         }
     };
+    size_t old_vpage = (base_vaddress >> Memory::YUZU_PAGEBITS) - 1;
     for (; page != page_end; ++page) {
         CounterAtomicType& count = cached_pages->at(page >> subentries_shift).Count(page);
         auto [asid_2, vpage] = ExtractCPUBacking(page);
@@ -547,6 +548,12 @@ void DeviceMemoryManager<Traits>::UpdatePagesCachedCount(DAddr addr, size_t size
             memory_device_inter = registered_processes[asid_2.id];
         }
 
+        if (vpage != old_vpage + 1) [[unlikely]] {
+            release_pending();
+        }
+
+        old_vpage = vpage;
+
         // Adds or subtracts 1, as count is a unsigned 8-bit value
         count.fetch_add(static_cast<CounterType>(delta), std::memory_order_release);