@@ -3669,7 +3669,8 @@ nvGpuOpsBuildExternalAllocPtes
3669
3669
NvBool isIndirectPeerSupported ,
3670
3670
NvBool isPeerSupported ,
3671
3671
NvU32 peerId ,
3672
- gpuExternalMappingInfo * pGpuExternalMappingInfo
3672
+ gpuExternalMappingInfo * pGpuExternalMappingInfo ,
3673
+ RmPhysAddr bar1BusAddr
3673
3674
)
3674
3675
{
3675
3676
NV_STATUS status = NV_OK ;
@@ -3864,7 +3865,11 @@ nvGpuOpsBuildExternalAllocPtes
3864
3865
if (nvFieldIsValid32 (& pPteFmt -> fldAtomicDisable .desc ))
3865
3866
nvFieldSetBool (& pPteFmt -> fldAtomicDisable , !atomic , pte .v8 );
3866
3867
3868
+ if (aperture == GMMU_APERTURE_PEER ) {
3869
+ gmmuFieldSetAperture (& pPteFmt -> fldAperture , GMMU_APERTURE_SYS_NONCOH , pte .v8 );
3870
+ } else {
3867
3871
gmmuFieldSetAperture (& pPteFmt -> fldAperture , aperture , pte .v8 );
3872
+ }
3868
3873
3869
3874
if (!isCompressedKind )
3870
3875
{
@@ -3875,7 +3880,11 @@ nvGpuOpsBuildExternalAllocPtes
3875
3880
}
3876
3881
}
3877
3882
3878
- if (aperture == GMMU_APERTURE_PEER )
3883
+ if (aperture == GMMU_APERTURE_PEER ) {
3884
+ fabricBaseAddress = bar1BusAddr ;
3885
+ }
3886
+
3887
+ /*if (aperture == GMMU_APERTURE_PEER)
3879
3888
{
3880
3889
FlaMemory* pFlaMemory = dynamicCast(pMemory, FlaMemory);
3881
3890
nvFieldSet32(&pPteFmt->fldPeerIndex, peerId, pte.v8);
@@ -3914,7 +3923,7 @@ nvGpuOpsBuildExternalAllocPtes
3914
3923
}
3915
3924
}
3916
3925
}
3917
- }
3926
+ }*/
3918
3927
3919
3928
//
3920
3929
// Both memdescGetPhysAddr() and kgmmuEncodePhysAddr() have pretty high overhead.
@@ -4072,7 +4081,8 @@ nvGpuOpsBuildExternalAllocPhysAddrs
4072
4081
NvBool isIndirectPeerSupported ,
4073
4082
NvBool isPeerSupported ,
4074
4083
NvU32 peerId ,
4075
- UvmGpuExternalPhysAddrInfo * pGpuExternalPhysAddrInfo
4084
+ UvmGpuExternalPhysAddrInfo * pGpuExternalPhysAddrInfo ,
4085
+ RmPhysAddr bar1BusAddr
4076
4086
)
4077
4087
{
4078
4088
NV_STATUS status = NV_OK ;
@@ -4145,7 +4155,11 @@ nvGpuOpsBuildExternalAllocPhysAddrs
4145
4155
return NV_ERR_BUFFER_TOO_SMALL ;
4146
4156
4147
4157
4148
- if (aperture == GMMU_APERTURE_PEER )
4158
+ if (aperture == GMMU_APERTURE_PEER ) {
4159
+ fabricBaseAddress = bar1BusAddr ;
4160
+ }
4161
+
4162
+ /*if (aperture == GMMU_APERTURE_PEER)
4149
4163
{
4150
4164
FlaMemory* pFlaMemory = dynamicCast(pMemory, FlaMemory);
4151
4165
@@ -4183,7 +4197,7 @@ nvGpuOpsBuildExternalAllocPhysAddrs
4183
4197
}
4184
4198
}
4185
4199
}
4186
- }
4200
+ }*/
4187
4201
4188
4202
//
4189
4203
// Both memdescGetPhysAddr() and kgmmuEncodePhysAddr() have pretty high overhead.
@@ -4235,6 +4249,7 @@ NV_STATUS nvGpuOpsGetExternalAllocPtesOrPhysAddrs(struct gpuAddressSpace *vaSpac
4235
4249
Memory * pMemory = NULL ;
4236
4250
PMEMORY_DESCRIPTOR pMemDesc = NULL ;
4237
4251
OBJGPU * pMappingGpu = NULL ;
4252
+ RmPhysAddr bar1BusAddr = 0 ;
4238
4253
NvU32 peerId = 0 ;
4239
4254
NvBool isSliSupported = NV_FALSE ;
4240
4255
NvBool isPeerSupported = NV_FALSE ;
@@ -4386,6 +4401,8 @@ NV_STATUS nvGpuOpsGetExternalAllocPtesOrPhysAddrs(struct gpuAddressSpace *vaSpac
4386
4401
& peerId );
4387
4402
if (status != NV_OK )
4388
4403
goto freeGpaMemdesc ;
4404
+
4405
+ bar1BusAddr = gpumgrGetGpuPhysFbAddr (pAdjustedMemDesc -> pGpu );
4389
4406
}
4390
4407
4391
4408
//
@@ -4465,14 +4482,14 @@ NV_STATUS nvGpuOpsGetExternalAllocPtesOrPhysAddrs(struct gpuAddressSpace *vaSpac
4465
4482
{
4466
4483
status = nvGpuOpsBuildExternalAllocPtes (pVAS , pMappingGpu , pAdjustedMemDesc , pMemory , offset , size ,
4467
4484
isIndirectPeerSupported , isPeerSupported , peerId ,
4468
- pGpuExternalMappingInfo );
4485
+ pGpuExternalMappingInfo , bar1BusAddr );
4469
4486
}
4470
4487
4471
4488
if (pGpuExternalPhysAddrInfo != NULL )
4472
4489
{
4473
4490
status = nvGpuOpsBuildExternalAllocPhysAddrs (pVAS , pMappingGpu , pAdjustedMemDesc , pMemory , offset , size ,
4474
4491
isIndirectPeerSupported , isPeerSupported , peerId ,
4475
- pGpuExternalPhysAddrInfo );
4492
+ pGpuExternalPhysAddrInfo , bar1BusAddr );
4476
4493
}
4477
4494
4478
4495
freeGpaMemdesc :
@@ -10309,7 +10326,7 @@ NV_STATUS nvGpuOpsGetChannelResourcePtes(struct gpuAddressSpace *vaSpace,
10309
10326
10310
10327
status = nvGpuOpsBuildExternalAllocPtes (pVAS , pMappingGpu , pMemDesc , NULL ,
10311
10328
offset , size , NV_FALSE , NV_FALSE ,
10312
- 0 , pGpuExternalMappingInfo );
10329
+ 0 , pGpuExternalMappingInfo , 0 );
10313
10330
10314
10331
_nvGpuOpsLocksRelease (& acquiredLocks );
10315
10332
threadStateFree (& threadState , THREAD_STATE_FLAGS_NONE );
0 commit comments