mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-01-31 13:39:47 +00:00
525.105.17
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 200-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 200-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -468,6 +468,9 @@
|
||||
#define ESC_4000_G4_DEVID 0xA1C1
|
||||
#define ESC_4000_G4_SSDEVID 0x871E
|
||||
|
||||
// Lenovo Tomcat Workstation
|
||||
#define LENOVO_TOMCAT_DEVID 0x1B81
|
||||
#define LENOVO_TOMCAT_SSDEVID 0x104e
|
||||
|
||||
// NVIDIA C51
|
||||
#define NVIDIA_C51_DEVICE_ID_MIN 0x2F0
|
||||
|
||||
@@ -923,16 +923,23 @@ NV_STATUS osAllocPagesInternal(
|
||||
if (nv && (memdescGetFlag(pMemDesc, MEMDESC_FLAGS_ALLOC_32BIT_ADDRESSABLE)))
|
||||
nv->force_dma32_alloc = NV_TRUE;
|
||||
|
||||
status = nv_alloc_pages(
|
||||
NV_GET_NV_STATE(pGpu),
|
||||
NV_RM_PAGES_TO_OS_PAGES(pMemDesc->PageCount),
|
||||
memdescGetContiguity(pMemDesc, AT_CPU),
|
||||
memdescGetCpuCacheAttrib(pMemDesc),
|
||||
pSys->getProperty(pSys,
|
||||
PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS),
|
||||
unencrypted,
|
||||
memdescGetPteArray(pMemDesc, AT_CPU),
|
||||
&pMemData);
|
||||
if (NV_RM_PAGES_TO_OS_PAGES(pMemDesc->PageCount) > NV_U32_MAX)
|
||||
{
|
||||
status = NV_ERR_INVALID_LIMIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = nv_alloc_pages(
|
||||
NV_GET_NV_STATE(pGpu),
|
||||
NV_RM_PAGES_TO_OS_PAGES(pMemDesc->PageCount),
|
||||
memdescGetContiguity(pMemDesc, AT_CPU),
|
||||
memdescGetCpuCacheAttrib(pMemDesc),
|
||||
pSys->getProperty(pSys,
|
||||
PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS),
|
||||
unencrypted,
|
||||
memdescGetPteArray(pMemDesc, AT_CPU),
|
||||
&pMemData);
|
||||
}
|
||||
|
||||
if (nv && nv->force_dma32_alloc)
|
||||
nv->force_dma32_alloc = NV_FALSE;
|
||||
@@ -942,7 +949,7 @@ NV_STATUS osAllocPagesInternal(
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// If the OS layer doesn't think in RM page size, we need to inflate the
|
||||
// PTE array into RM pages.
|
||||
|
||||
@@ -167,12 +167,25 @@ const NvU8 * RmGetGpuUuidRaw(
|
||||
)
|
||||
{
|
||||
NV_STATUS rmStatus;
|
||||
OBJGPU *pGpu = NV_GET_NV_PRIV_PGPU(pNv);
|
||||
OBJGPU *pGpu = NULL;
|
||||
NvU32 gidFlags;
|
||||
NvBool isApiLockTaken = NV_FALSE;
|
||||
|
||||
if (pNv->nv_uuid_cache.valid)
|
||||
goto done;
|
||||
return pNv->nv_uuid_cache.uuid;
|
||||
|
||||
if (!rmapiLockIsOwner())
|
||||
{
|
||||
rmStatus = rmapiLockAcquire(RMAPI_LOCK_FLAGS_READ, RM_LOCK_MODULES_GPU);
|
||||
if (rmStatus != NV_OK)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
isApiLockTaken = NV_TRUE;
|
||||
}
|
||||
|
||||
pGpu = NV_GET_NV_PRIV_PGPU(pNv);
|
||||
|
||||
//
|
||||
// PBI is not present in simulation and the loop inside
|
||||
@@ -193,7 +206,7 @@ const NvU8 * RmGetGpuUuidRaw(
|
||||
rmStatus = gpumgrSetUuid(pNv->gpu_id, pNv->nv_uuid_cache.uuid);
|
||||
if (rmStatus != NV_OK)
|
||||
{
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
pNv->nv_uuid_cache.valid = NV_TRUE;
|
||||
@@ -209,45 +222,35 @@ const NvU8 * RmGetGpuUuidRaw(
|
||||
gidFlags = DRF_DEF(2080_GPU_CMD,_GPU_GET_GID_FLAGS,_TYPE,_SHA1)
|
||||
| DRF_DEF(2080_GPU_CMD,_GPU_GET_GID_FLAGS,_FORMAT,_BINARY);
|
||||
|
||||
if (!rmapiLockIsOwner())
|
||||
{
|
||||
rmStatus = rmapiLockAcquire(RMAPI_LOCK_FLAGS_READ, RM_LOCK_MODULES_GPU);
|
||||
if (rmStatus != NV_OK)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
isApiLockTaken = NV_TRUE;
|
||||
}
|
||||
|
||||
if (pGpu == NULL)
|
||||
{
|
||||
if (isApiLockTaken == NV_TRUE)
|
||||
{
|
||||
rmapiLockRelease();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
if (!pGpu)
|
||||
goto err;
|
||||
|
||||
rmStatus = gpuGetGidInfo(pGpu, NULL, NULL, gidFlags);
|
||||
if (isApiLockTaken == NV_TRUE)
|
||||
{
|
||||
rmapiLockRelease();
|
||||
}
|
||||
|
||||
if (rmStatus != NV_OK)
|
||||
return NULL;
|
||||
goto err;
|
||||
|
||||
if (!pGpu->gpuUuid.isInitialized)
|
||||
return NULL;
|
||||
goto err;
|
||||
|
||||
// copy the uuid from the OBJGPU uuid cache
|
||||
os_mem_copy(pNv->nv_uuid_cache.uuid, pGpu->gpuUuid.uuid, GPU_UUID_LEN);
|
||||
pNv->nv_uuid_cache.valid = NV_TRUE;
|
||||
|
||||
done:
|
||||
if (isApiLockTaken)
|
||||
{
|
||||
rmapiLockRelease();
|
||||
}
|
||||
|
||||
return pNv->nv_uuid_cache.uuid;
|
||||
|
||||
err:
|
||||
if (isApiLockTaken)
|
||||
{
|
||||
rmapiLockRelease();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static NV_STATUS RmGpuUuidRawToString(
|
||||
|
||||
Reference in New Issue
Block a user