595.44.05

This commit is contained in:
russellcnv
2026-04-02 17:01:33 -07:00
parent 667aaff654
commit b04fce9aeb
17 changed files with 199 additions and 23 deletions

View File

@@ -79,7 +79,7 @@ ccflags-y += -I$(src)/common/inc
ccflags-y += -I$(src)
ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
ccflags-y += -D__KERNEL__ -DMODULE -DNVRM
ccflags-y += -DNV_VERSION_STRING=\"595.44.03\"
ccflags-y += -DNV_VERSION_STRING=\"595.44.05\"
# Include and link Tegra out-of-tree modules.
ifneq ($(wildcard /usr/src/nvidia/nvidia-public),)

View File

@@ -3222,10 +3222,25 @@ uvm_gpu_phys_address_t uvm_gpu_peer_phys_address(uvm_gpu_t *owning_gpu, NvU64 ad
uvm_gpu_address_t uvm_gpu_peer_copy_address(uvm_gpu_t *owning_gpu, NvU64 address, uvm_gpu_t *accessing_gpu)
{
uvm_gpu_identity_mapping_t *gpu_peer_mapping;
const bool mig_peers_use_phys = uvm_gpus_are_smc_peers(owning_gpu, accessing_gpu) &&
accessing_gpu->parent->ce_phys_vidmem_write_supported;
if (accessing_gpu->parent->peer_copy_mode == UVM_GPU_PEER_COPY_MODE_PHYSICAL)
// MIG peers do not create peer vidmem mappings like other peers. They do
// create their vidmem identity mappings to cover all possible physical
// addresses, even those of other MIG peers.
// Use vidmem this identity mapping if CEs need to use virtual addresses.
if (uvm_gpus_are_smc_peers(owning_gpu, accessing_gpu) && !mig_peers_use_phys) {
uvm_gpu_phys_address_t phys_address = uvm_gpu_peer_phys_address(owning_gpu, address, accessing_gpu);
return uvm_gpu_address_virtual_from_vidmem_phys(accessing_gpu, phys_address.address);
}
// Use physical addresses for MIGs peers if CE allows it. Irespective of
// the peer copy mode.
if (accessing_gpu->parent->peer_copy_mode == UVM_GPU_PEER_COPY_MODE_PHYSICAL || mig_peers_use_phys)
return uvm_gpu_address_from_phys(uvm_gpu_peer_phys_address(owning_gpu, address, accessing_gpu));
// MIG peers do not create peer GPU mappings so it should never reach here.
UVM_ASSERT(!uvm_gpus_are_smc_peers(owning_gpu, accessing_gpu));
UVM_ASSERT(accessing_gpu->parent->peer_copy_mode == UVM_GPU_PEER_COPY_MODE_VIRTUAL);
gpu_peer_mapping = uvm_gpu_get_peer_mapping(accessing_gpu, owning_gpu->id);