diff --git a/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs b/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
index 2990fb52a5..b1b1a1a8bb 100644
--- a/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
+++ b/Ryujinx.Graphics.Gpu/Memory/MemoryManager.cs
@@ -115,8 +115,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
         /// <param name="pa">CPU virtual address to map into</param>
         /// <param name="va">GPU virtual address to be mapped</param>
         /// <param name="size">Size in bytes of the mapping</param>
-        /// <returns>GPU virtual address of the mapping</returns>
-        public ulong Map(ulong pa, ulong va, ulong size)
+        public void Map(ulong pa, ulong va, ulong size)
         {
             lock (_pageTable)
             {
@@ -127,8 +126,6 @@ namespace Ryujinx.Graphics.Gpu.Memory
                     SetPte(va + offset, pa + offset);
                 }
             }
-
-            return va;
         }
 
         /// <summary>
diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs b/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
index fb97322930..c229677568 100644
--- a/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
+++ b/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostAsGpu/NvHostAsGpuDeviceFile.cs
@@ -223,8 +223,9 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
                         long virtualAddress = arguments.Offset + arguments.BufferOffset;
 
                         physicalAddress += arguments.BufferOffset;
+                        addressSpaceContext.Gmm.Map((ulong)physicalAddress, (ulong)virtualAddress, (ulong)arguments.MappingSize);
 
-                        if ((long)addressSpaceContext.Gmm.Map((ulong)physicalAddress, (ulong)virtualAddress, (ulong)arguments.MappingSize) < 0)
+                        if (virtualAddress < 0)
                         {
                             string message = string.Format(mapErrorMsg, virtualAddress, arguments.MappingSize, pageSize);
 
@@ -265,7 +266,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
                 {
                     if (addressSpaceContext.ValidateFixedBuffer(arguments.Offset, size, pageSize))
                     {
-                        arguments.Offset = (long)addressSpaceContext.Gmm.Map((ulong)physicalAddress, (ulong)arguments.Offset, (ulong)size);
+                        addressSpaceContext.Gmm.Map((ulong)physicalAddress, (ulong)arguments.Offset, (ulong)size);
                     }
                     else
                     {
@@ -283,7 +284,9 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
                     {
                         _memoryAllocator.AllocateRange(va, (ulong)size, freeAddressStartPosition);
                     }
-                    arguments.Offset = (long)addressSpaceContext.Gmm.Map((ulong)physicalAddress, va, (ulong)size);
+                    
+                    addressSpaceContext.Gmm.Map((ulong)physicalAddress, va, (ulong)size);
+                    arguments.Offset = (long)va;
                 }
 
                 if (arguments.Offset < 0)
@@ -332,12 +335,14 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
                     return NvInternalResult.InvalidInput;
                 }
 
-                long result = (long)gmm.Map(
+                long shiftedGpuOffset = (long)((ulong)arguments[index].GpuOffset << 16);
+
+                gmm.Map(
                     ((ulong)arguments[index].MapOffset << 16) + (ulong)map.Address,
-                     (ulong)arguments[index].GpuOffset << 16,
+                     (ulong)shiftedGpuOffset,
                      (ulong)arguments[index].Pages     << 16);
 
-                if (result < 0)
+                if (shiftedGpuOffset < 0)
                 {
                     Logger.Warning?.Print(LogClass.ServiceNv,
                         $"Page 0x{arguments[index].GpuOffset:x16} size 0x{arguments[index].Pages:x16} not allocated!");
diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs b/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
index ca20aab505..4a532cd734 100644
--- a/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
+++ b/Ryujinx.HLE/HOS/Services/Nv/NvDrvServices/NvHostChannel/NvHostChannelDeviceFile.cs
@@ -253,7 +253,8 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
                         if (va != NvMemoryAllocator.PteUnmapped && va <= uint.MaxValue && (va + (uint)map.Size) <= uint.MaxValue)
                         {
                             _memoryAllocator.AllocateRange(va, (uint)map.Size, freeAddressStartPosition);
-                            map.DmaMapAddress = (long)gmm.Map((ulong)map.Address, va, (uint)map.Size);
+                            gmm.Map((ulong)map.Address, va, (uint)map.Size);
+                            map.DmaMapAddress = (long)va;
                         }
                         else
                         {