diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
index a859a7abdcda1a60005f375f4a939446b44fa2d3..54074af75c5096d49e5625fb4c3f0196e2bf10e7 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
@@ -143,7 +143,7 @@ NvResult nvhost_ctrl::IocCtrlEventWait(const std::vector<u8>& input, std::vector
         }
     }();
 
-    must_unmark_fail = true;
+    must_unmark_fail = false;
 
     const auto check_failing = [&]() {
         if (events[slot].fails > 2) {
@@ -164,6 +164,7 @@ NvResult nvhost_ctrl::IocCtrlEventWait(const std::vector<u8>& input, std::vector
 
     if (params.timeout == 0) {
         if (check_failing()) {
+            events[slot].fails = 0;
             return NvResult::Success;
         }
         return NvResult::Timeout;
@@ -180,6 +181,7 @@ NvResult nvhost_ctrl::IocCtrlEventWait(const std::vector<u8>& input, std::vector
     }
 
     if (check_failing()) {
+        event.fails = 0;
         return NvResult::Success;
     }
 
diff --git a/src/video_core/engines/puller.cpp b/src/video_core/engines/puller.cpp
index 37f2ced18fa897bae793ea00c0033100d509a4b3..3866c8746d505af98c9599da3ccd871e5c6fd260 100644
--- a/src/video_core/engines/puller.cpp
+++ b/src/video_core/engines/puller.cpp
@@ -118,7 +118,7 @@ void Puller::ProcessSemaphoreTriggerMethod() {
 }
 
 void Puller::ProcessSemaphoreRelease() {
-    memory_manager.Write<u32>(regs.semaphore_address.SemaphoreAddress(), regs.semaphore_release);
+    rasterizer->SignalSemaphore(regs.semaphore_address.SemaphoreAddress(), regs.semaphore_release);
 }
 
 void Puller::ProcessSemaphoreAcquire() {
diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp
index 1820823b22cb1a68fe43bc4c1ba9d586eee50499..bea1c27d0652757e7b98cc8fbc8c98218846fa11 100644
--- a/src/video_core/texture_cache/util.cpp
+++ b/src/video_core/texture_cache/util.cpp
@@ -755,7 +755,7 @@ bool IsValidEntry(const Tegra::MemoryManager& gpu_memory, const TICEntry& config
     if (address == 0) {
         return false;
     }
-    if (address > (1ULL << 48)) {
+    if (address >= (1ULL << 40)) {
         return false;
     }
     if (gpu_memory.GpuToCpuAddress(address).has_value()) {