mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-01 14:09:47 +00:00
545.29.02
This commit is contained in:
@@ -808,6 +808,7 @@ static const CHIPS_RELEASED sChipsReleased[] = {
|
||||
{ 0x20B2, 0x147f, 0x10de, "NVIDIA A100-SXM4-80GB" },
|
||||
{ 0x20B2, 0x1622, 0x10de, "NVIDIA A100-SXM4-80GB" },
|
||||
{ 0x20B2, 0x1623, 0x10de, "NVIDIA A100-SXM4-80GB" },
|
||||
{ 0x20B2, 0x1625, 0x10de, "NVIDIA PG509-210" },
|
||||
{ 0x20B3, 0x14a7, 0x10de, "NVIDIA A100-SXM-64GB" },
|
||||
{ 0x20B3, 0x14a8, 0x10de, "NVIDIA A100-SXM-64GB" },
|
||||
{ 0x20B5, 0x1533, 0x10de, "NVIDIA A100 80GB PCIe" },
|
||||
@@ -815,6 +816,7 @@ static const CHIPS_RELEASED sChipsReleased[] = {
|
||||
{ 0x20B6, 0x1492, 0x10de, "NVIDIA PG506-232" },
|
||||
{ 0x20B7, 0x1532, 0x10de, "NVIDIA A30" },
|
||||
{ 0x20B7, 0x1804, 0x10de, "NVIDIA A30" },
|
||||
{ 0x20B7, 0x1852, 0x10de, "NVIDIA A30" },
|
||||
{ 0x20BD, 0x17f4, 0x10de, "NVIDIA A800-SXM4-40GB" },
|
||||
{ 0x20F1, 0x145f, 0x10de, "NVIDIA A100-PCIE-40GB" },
|
||||
{ 0x20F3, 0x179b, 0x10de, "NVIDIA A800-SXM4-80GB" },
|
||||
@@ -899,6 +901,8 @@ static const CHIPS_RELEASED sChipsReleased[] = {
|
||||
{ 0x2331, 0x1626, 0x10de, "NVIDIA H100 PCIe" },
|
||||
{ 0x2339, 0x17fc, 0x10de, "NVIDIA H100" },
|
||||
{ 0x233A, 0x183a, 0x10de, "NVIDIA H800 NVL" },
|
||||
{ 0x2342, 0x16eb, 0x10de, "GH200 120GB" },
|
||||
{ 0x2342, 0x1809, 0x10de, "GH200 480GB" },
|
||||
{ 0x2414, 0x0000, 0x0000, "NVIDIA GeForce RTX 3060 Ti" },
|
||||
{ 0x2420, 0x0000, 0x0000, "NVIDIA GeForce RTX 3080 Ti Laptop GPU" },
|
||||
{ 0x2438, 0x0000, 0x0000, "NVIDIA RTX A5500 Laptop GPU" },
|
||||
|
||||
@@ -151,11 +151,28 @@ void pmaAddrtreePrintTree(void *pMap, const char* str);
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaAddrtreeChangeState(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState);
|
||||
void pmaAddrtreeChangeStateAttrib(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
void pmaAddrtreeChangeStateAttribEx(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState,PMA_PAGESTATUS newStateMask);
|
||||
void pmaAddrtreeChangePageStateAttrib(void * pMap, NvU64 startFrame, NvU64 pageSize,
|
||||
PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
void pmaAddrtreeChangeStateAttribEx(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
void pmaAddrtreeChangePageStateAttribEx(void * pMap, NvU64 startFrame, NvU64 pageSize,
|
||||
PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
|
||||
/*!
|
||||
* @brief Changes the state & attrib bits specified by mask
|
||||
*
|
||||
* Changes the state of the bits given the physical frame number
|
||||
* and the number of frames to change
|
||||
*
|
||||
* @param[in] pMap The addrtree to change
|
||||
* @param[in] frameNum The frame number to change
|
||||
* @param[in] numFrames The number of frames to change
|
||||
* @param[in] newState The new state to change to
|
||||
* @param[in] newStateMask Specific bits to write
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaAddrtreeChangeBlockStateAttrib(void *pMap, NvU64 frameNum,
|
||||
NvU64 numFrames,
|
||||
PMA_PAGESTATUS newState,
|
||||
PMA_PAGESTATUS newStateMask);
|
||||
|
||||
/*!
|
||||
* @brief Read the page state & attrib bits
|
||||
|
||||
@@ -178,10 +178,9 @@ typedef NV_STATUS (*pmaEvictRangeCb_t)(void *ctxPtr, NvU64 physBegin, NvU64 phys
|
||||
*/
|
||||
typedef void *(*pmaMapInit_t)(NvU64 numFrames, NvU64 addrBase, PMA_STATS *pPmaStats, NvBool bProtected);
|
||||
typedef void (*pmaMapDestroy_t)(void *pMap);
|
||||
typedef void (*pmaMapChangeState_t)(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState);
|
||||
typedef void (*pmaMapChangeStateAttrib_t)(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
typedef void (*pmaMapChangeStateAttribEx_t)(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
typedef void (*pmaMapChangePageStateAttrib_t)(void *pMap, NvU64 startFrame, NvU64 pageSize, PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
typedef void (*pmaMapChangePageStateAttribEx_t)(void *pMap, NvU64 startFrame, NvU64 pageSize, PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
typedef void (*pmaMapChangeBlockStateAttrib_t)(void *pMap, NvU64 frameNum, NvU64 numFrames, PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
typedef PMA_PAGESTATUS (*pmaMapRead_t)(void *pMap, NvU64 frameNum, NvBool readAttrib);
|
||||
typedef NV_STATUS (*pmaMapScanContiguous_t)(void *pMap, NvU64 addrBase, NvU64 rangeStart, NvU64 rangeEnd,
|
||||
NvU64 numPages, NvU64 *freelist, NvU64 pageSize, NvU64 alignment,
|
||||
@@ -201,10 +200,9 @@ struct _PMA_MAP_INFO
|
||||
NvU32 mode;
|
||||
pmaMapInit_t pmaMapInit;
|
||||
pmaMapDestroy_t pmaMapDestroy;
|
||||
pmaMapChangeState_t pmaMapChangeState;
|
||||
pmaMapChangeStateAttrib_t pmaMapChangeStateAttrib;
|
||||
pmaMapChangeStateAttribEx_t pmaMapChangeStateAttribEx;
|
||||
pmaMapChangePageStateAttrib_t pmaMapChangePageStateAttrib;
|
||||
pmaMapChangePageStateAttribEx_t pmaMapChangePageStateAttribEx;
|
||||
pmaMapChangeBlockStateAttrib_t pmaMapChangeBlockStateAttrib;
|
||||
pmaMapRead_t pmaMapRead;
|
||||
pmaMapScanContiguous_t pmaMapScanContiguous;
|
||||
pmaMapScanDiscontiguous_t pmaMapScanDiscontiguous;
|
||||
|
||||
@@ -89,34 +89,6 @@ void pmaRegmapDestroy(void *pMap);
|
||||
NvU64 pmaRegmapGetEvictingFrames(void *pMap);
|
||||
void pmaRegmapSetEvictingFrames(void *pMap, NvU64 frameEvictionsInProcess);
|
||||
|
||||
/*!
|
||||
* @brief Changes the recorded state bits
|
||||
*
|
||||
* Changes the state of the bits given the physical frame number
|
||||
*
|
||||
* @param[in] pMap The regmap to change
|
||||
* @param[in] frameNum The frame number to change
|
||||
* @param[in] newState The new state to change to
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaRegmapChangeState(void *pMap, NvU64 frameNum, PMA_PAGESTATUS newState);
|
||||
|
||||
/*!
|
||||
* @brief Changes the recorded state & attrib bits
|
||||
*
|
||||
* Changes the state of the bits given the physical frame number
|
||||
*
|
||||
* @param[in] pMap The regmap to change
|
||||
* @param[in] frameNum The frame number to change
|
||||
* @param[in] newState The new state to change to
|
||||
* @param[in] writeAttrib Write attribute bits as well
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaRegmapChangeStateAttrib(void *pMap, NvU64 frameNum,
|
||||
PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
|
||||
/*!
|
||||
* @brief Changes the recorded state & attrib bits for an entire page
|
||||
*
|
||||
@@ -131,8 +103,8 @@ void pmaRegmapChangeStateAttrib(void *pMap, NvU64 frameNum,
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaRegmapChangePageStateAttrib(void * pMap, NvU64 frameNumStart, NvU64 pageSize,
|
||||
PMA_PAGESTATUS newState, NvBool writeAttrib);
|
||||
void pmaRegmapChangePageStateAttribEx(void * pMap, NvU64 frameNumStart, NvU64 pageSize,
|
||||
PMA_PAGESTATUS newState, PMA_PAGESTATUS newStateMask);
|
||||
|
||||
/*!
|
||||
* @brief Changes the state & attrib bits specified by mask
|
||||
@@ -150,6 +122,25 @@ void pmaRegmapChangeStateAttribEx(void *pMap, NvU64 frameNum,
|
||||
PMA_PAGESTATUS newState,
|
||||
PMA_PAGESTATUS newStateMask);
|
||||
|
||||
/*!
|
||||
* @brief Changes the state & attrib bits specified by mask
|
||||
*
|
||||
* Changes the state of the bits given the physical frame number
|
||||
* and the number of frames to change
|
||||
*
|
||||
* @param[in] pMap The regmap to change
|
||||
* @param[in] frameNum The frame number to change
|
||||
* @param[in] numFrames The number of frames to change
|
||||
* @param[in] newState The new state to change to
|
||||
* @param[in] newStateMask Specific bits to write
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void pmaRegmapChangeBlockStateAttrib(void *pMap, NvU64 frameNum,
|
||||
NvU64 numFrames,
|
||||
PMA_PAGESTATUS newState,
|
||||
PMA_PAGESTATUS newStateMask);
|
||||
|
||||
/*!
|
||||
* @brief Read the page state & attrib bits
|
||||
*
|
||||
|
||||
@@ -2404,6 +2404,8 @@ kbusUpdateRmAperture_GM107
|
||||
{
|
||||
pFmt = pKernelBus->bar2[gfid].pFmt;
|
||||
|
||||
NV_CHECK_OR_RETURN(LEVEL_ERROR, pFmt != NULL, NV_ERR_INVALID_ARGUMENT);
|
||||
|
||||
// MMU_MAP_CTX
|
||||
mapTarget.pLevelFmt = mmuFmtFindLevelWithPageShift(pFmt->pRoot,
|
||||
BIT_IDX_64(pageSize));
|
||||
|
||||
@@ -2776,6 +2776,10 @@ kchannelCtrlCmdGetClassEngineid_IMPL
|
||||
return NV_ERR_OBJECT_NOT_FOUND;
|
||||
}
|
||||
|
||||
NV_CHECK_OR_RETURN(LEVEL_ERROR,
|
||||
pParams->hObject != RES_GET_CLIENT_HANDLE(pKernelChannel),
|
||||
NV_ERR_INVALID_ARGUMENT);
|
||||
|
||||
if (IS_VIRTUAL_WITHOUT_SRIOV(pGpu) ||
|
||||
(IS_VIRTUAL_WITH_SRIOV(pGpu) && gpuIsWarBug200577889SriovHeavyEnabled(pGpu)))
|
||||
{
|
||||
|
||||
@@ -1738,8 +1738,9 @@ kgraphicsCreateGoldenImageChannel_IMPL
|
||||
NvU32 classNum;
|
||||
MIG_INSTANCE_REF ref;
|
||||
NvU32 objectType;
|
||||
NvU32 primarySliSubDeviceInstance;
|
||||
|
||||
// XXX This should be removed when braodcast SLI support is deprecated
|
||||
// XXX This should be removed when broadcast SLI support is deprecated
|
||||
if (!gpumgrIsParentGPU(pGpu))
|
||||
{
|
||||
return NV_OK;
|
||||
@@ -1750,6 +1751,8 @@ kgraphicsCreateGoldenImageChannel_IMPL
|
||||
// FIXME these allocations corrupt BC state
|
||||
NV_ASSERT_OK_OR_RETURN(
|
||||
rmapiutilAllocClientAndDeviceHandles(pRmApi, pGpu, &hClientId, &hDeviceId, &hSubdeviceId));
|
||||
// rmapiutilAllocClientAndDeviceHandles allocates a subdevice object for this subDeviceInstance
|
||||
primarySliSubDeviceInstance = gpumgrGetSubDeviceInstanceFromGpu(pGpu);
|
||||
|
||||
NV_ASSERT_OK_OR_RETURN(serverGetClientUnderLock(&g_resServ, hClientId, &pClientId));
|
||||
|
||||
@@ -1765,6 +1768,11 @@ kgraphicsCreateGoldenImageChannel_IMPL
|
||||
{
|
||||
NvHandle hSecondary;
|
||||
NV2080_ALLOC_PARAMETERS nv2080AllocParams;
|
||||
NvU32 thisSubDeviceInstance = gpumgrGetSubDeviceInstanceFromGpu(pGpu);
|
||||
|
||||
// Skip if already allocated by rmapiutilAllocClientAndDeviceHandles()
|
||||
if (thisSubDeviceInstance == primarySliSubDeviceInstance)
|
||||
SLI_LOOP_CONTINUE;
|
||||
|
||||
// Allocate a subDevice
|
||||
NV_CHECK_OK_OR_GOTO(status, LEVEL_ERROR,
|
||||
@@ -1772,7 +1780,7 @@ kgraphicsCreateGoldenImageChannel_IMPL
|
||||
cleanup);
|
||||
|
||||
portMemSet(&nv2080AllocParams, 0, sizeof(nv2080AllocParams));
|
||||
nv2080AllocParams.subDeviceId = gpumgrGetSubDeviceInstanceFromGpu(pGpu);
|
||||
nv2080AllocParams.subDeviceId = thisSubDeviceInstance;
|
||||
|
||||
NV_CHECK_OK(status, LEVEL_SILENT,
|
||||
pRmApi->AllocWithHandle(pRmApi,
|
||||
|
||||
@@ -390,8 +390,8 @@ memmgrInitInternalChannels_IMPL
|
||||
IS_MIG_ENABLED(pGpu) ||
|
||||
gpuIsCCorApmFeatureEnabled(pGpu) ||
|
||||
IsSLIEnabled(pGpu) ||
|
||||
RMCFG_FEATURE_ARCH_PPC64LE ||
|
||||
RMCFG_FEATURE_ARCH_AARCH64)
|
||||
NVCPU_IS_PPC64LE ||
|
||||
NVCPU_IS_AARCH64)
|
||||
{
|
||||
// BUG 4167899: Temporarily skip CeUtils creation on platforms where it fails
|
||||
NV_PRINTF(LEVEL_INFO, "Skipping global CeUtils creation\n");
|
||||
|
||||
@@ -1890,8 +1890,8 @@ __pmaAddrtreeChangePageStateAttribEx
|
||||
// This function wraps the real __pmaAddrtreeChangePageStateAttribEx
|
||||
// to allow addrtree to set 128KB page size
|
||||
//
|
||||
static void
|
||||
_pmaAddrtreeChangePageStateAttribEx
|
||||
void
|
||||
pmaAddrtreeChangePageStateAttribEx
|
||||
(
|
||||
void *pMap,
|
||||
NvU64 frameNumStart,
|
||||
@@ -1939,35 +1939,24 @@ pmaAddrtreeChangeStateAttribEx
|
||||
PMA_PAGESTATUS newStateMask
|
||||
)
|
||||
{
|
||||
_pmaAddrtreeChangePageStateAttribEx(pMap, frameNum, _PMA_64KB, newState, newStateMask);
|
||||
pmaAddrtreeChangePageStateAttribEx(pMap, frameNum, _PMA_64KB, newState, newStateMask);
|
||||
}
|
||||
|
||||
// TODO: merge this on PMA level
|
||||
void pmaAddrtreeChangeState(void *pTree, NvU64 frameNum, PMA_PAGESTATUS newState)
|
||||
{
|
||||
pmaAddrtreeChangeStateAttribEx(pTree, frameNum, newState, STATE_MASK);
|
||||
}
|
||||
|
||||
// TODO: merge this on PMA level
|
||||
void pmaAddrtreeChangeStateAttrib(void *pTree, NvU64 frameNum, PMA_PAGESTATUS newState, NvBool writeAttrib)
|
||||
{
|
||||
PMA_PAGESTATUS mask = writeAttrib ? MAP_MASK : STATE_MASK;
|
||||
pmaAddrtreeChangeStateAttribEx(pTree, frameNum, newState, mask);
|
||||
}
|
||||
|
||||
// TODO: merge this on PMA level
|
||||
void
|
||||
pmaAddrtreeChangePageStateAttrib
|
||||
pmaAddrtreeChangeBlockStateAttrib
|
||||
(
|
||||
void * pTree,
|
||||
NvU64 frameNumStart,
|
||||
NvU64 pageSize,
|
||||
void *pMap,
|
||||
NvU64 frame,
|
||||
NvU64 len,
|
||||
PMA_PAGESTATUS newState,
|
||||
NvBool writeAttrib
|
||||
PMA_PAGESTATUS writeMask
|
||||
)
|
||||
{
|
||||
PMA_PAGESTATUS mask = writeAttrib ? MAP_MASK : STATE_MASK;
|
||||
_pmaAddrtreeChangePageStateAttribEx(pTree, frameNumStart, pageSize, newState, mask);
|
||||
while (len != 0)
|
||||
{
|
||||
len--;
|
||||
pmaAddrtreeChangeStateAttribEx(pMap, frame + len, newState, writeMask);
|
||||
}
|
||||
}
|
||||
|
||||
PMA_PAGESTATUS pmaAddrtreeRead
|
||||
|
||||
@@ -651,7 +651,7 @@ NV_STATUS pmaNumaAllocate
|
||||
status = NV_ERR_NO_MEMORY;
|
||||
break;
|
||||
}
|
||||
pPma->pMapInfo->pmaMapChangeStateAttrib(pMap, frameOffset, allocOption, NV_TRUE);
|
||||
pPma->pMapInfo->pmaMapChangeStateAttribEx(pMap, frameOffset, allocOption, MAP_MASK);
|
||||
}
|
||||
if (status != NV_OK)
|
||||
break;
|
||||
|
||||
@@ -97,7 +97,7 @@ _pmaRollback
|
||||
|
||||
for (j = 0; j < framesPerPage; j++)
|
||||
{
|
||||
pPma->pMapInfo->pmaMapChangeState(pPma->pRegions[regId], (frameNum + j), oldState);
|
||||
pPma->pMapInfo->pmaMapChangeStateAttribEx(pPma->pRegions[regId], (frameNum + j), oldState, STATE_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -110,7 +110,7 @@ _pmaRollback
|
||||
frameNum = PMA_ADDR2FRAME(pPages[failCount], addrBase);
|
||||
for(i = 0; i < failFrame; i++)
|
||||
{
|
||||
pPma->pMapInfo->pmaMapChangeState(pPma->pRegions[regId], (frameNum + i), oldState);
|
||||
pPma->pMapInfo->pmaMapChangeStateAttribEx(pPma->pRegions[regId], (frameNum + i), oldState, STATE_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -208,10 +208,9 @@ pmaInitialize(PMA *pPma, NvU32 initFlags)
|
||||
//
|
||||
pMapInfo->pmaMapInit = pmaRegmapInit;
|
||||
pMapInfo->pmaMapDestroy = pmaRegmapDestroy;
|
||||
pMapInfo->pmaMapChangeState = pmaRegmapChangeState;
|
||||
pMapInfo->pmaMapChangeStateAttrib = pmaRegmapChangeStateAttrib;
|
||||
pMapInfo->pmaMapChangeStateAttribEx = pmaRegmapChangeStateAttribEx;
|
||||
pMapInfo->pmaMapChangePageStateAttrib = pmaRegmapChangePageStateAttrib;
|
||||
pMapInfo->pmaMapChangePageStateAttribEx = pmaRegmapChangePageStateAttribEx;
|
||||
pMapInfo->pmaMapChangeBlockStateAttrib = pmaRegmapChangeBlockStateAttrib;
|
||||
pMapInfo->pmaMapRead = pmaRegmapRead;
|
||||
pMapInfo->pmaMapScanContiguous = pmaRegmapScanContiguous;
|
||||
pMapInfo->pmaMapScanDiscontiguous = pmaRegmapScanDiscontiguous;
|
||||
@@ -246,10 +245,9 @@ pmaInitialize(PMA *pPma, NvU32 initFlags)
|
||||
{
|
||||
pMapInfo->pmaMapInit = pmaAddrtreeInit;
|
||||
pMapInfo->pmaMapDestroy = pmaAddrtreeDestroy;
|
||||
pMapInfo->pmaMapChangeState = pmaAddrtreeChangeState;
|
||||
pMapInfo->pmaMapChangeStateAttrib = pmaAddrtreeChangeStateAttrib;
|
||||
pMapInfo->pmaMapChangeStateAttribEx = pmaAddrtreeChangeStateAttribEx;
|
||||
pMapInfo->pmaMapChangePageStateAttrib = pmaAddrtreeChangePageStateAttrib;
|
||||
pMapInfo->pmaMapChangePageStateAttribEx = pmaAddrtreeChangePageStateAttribEx;
|
||||
pMapInfo->pmaMapChangeBlockStateAttrib = pmaAddrtreeChangeBlockStateAttrib;
|
||||
pMapInfo->pmaMapRead = pmaAddrtreeRead;
|
||||
pMapInfo->pmaMapScanContiguous = pmaAddrtreeScanContiguous;
|
||||
pMapInfo->pmaMapScanDiscontiguous = pmaAddrtreeScanDiscontiguous;
|
||||
@@ -1084,11 +1082,8 @@ pmaAllocatePages_retry:
|
||||
frameBase,
|
||||
frameBase + numFramesAllocated - 1);
|
||||
|
||||
for (i = 0; i < numPagesAllocatedSoFar; i++)
|
||||
{
|
||||
pPma->pMapInfo->pmaMapChangePageStateAttrib(pMap, frameBase + (i * framesPerPage),
|
||||
pageSize, pinOption, NV_TRUE);
|
||||
}
|
||||
pPma->pMapInfo->pmaMapChangeBlockStateAttrib(pMap, frameBase, numPagesAllocatedSoFar * framesPerPage,
|
||||
pinOption, MAP_MASK);
|
||||
|
||||
if (blacklistOffFlag && blacklistOffPerRegion[regId])
|
||||
{
|
||||
@@ -1134,8 +1129,8 @@ pmaAllocatePages_retry:
|
||||
}
|
||||
lastFrameRangeEnd = frameBase + framesPerPage - 1;
|
||||
|
||||
pPma->pMapInfo->pmaMapChangePageStateAttrib(pMap, PMA_ADDR2FRAME(pPages[i], addrBase),
|
||||
pageSize, pinOption, NV_TRUE);
|
||||
pPma->pMapInfo->pmaMapChangePageStateAttribEx(pMap, PMA_ADDR2FRAME(pPages[i], addrBase),
|
||||
pageSize, pinOption, MAP_MASK);
|
||||
|
||||
}
|
||||
NV_PRINTF(LEVEL_INFO, "0x%llx through 0x%llx \n",
|
||||
@@ -1267,7 +1262,7 @@ pmaPinPages
|
||||
}
|
||||
else
|
||||
{
|
||||
pPma->pMapInfo->pmaMapChangeState(pPma->pRegions[regId], (frameNum + j), STATE_PIN);
|
||||
pPma->pMapInfo->pmaMapChangeStateAttribEx(pPma->pRegions[regId], (frameNum + j), STATE_PIN, STATE_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1320,7 +1315,7 @@ pmaUnpinPages
|
||||
}
|
||||
else
|
||||
{
|
||||
pPma->pMapInfo->pmaMapChangeState(pPma->pRegions[regId], (frameNum + j), STATE_UNPIN);
|
||||
pPma->pMapInfo->pmaMapChangeStateAttribEx(pPma->pRegions[regId], (frameNum + j), STATE_UNPIN, STATE_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
||||
@@ -177,6 +177,7 @@ mmuWalkSetUserCtx
|
||||
MMU_WALK_USER_CTX *pUserCtx
|
||||
)
|
||||
{
|
||||
NV_ASSERT_OR_RETURN(NULL != pWalk, NV_ERR_INVALID_STATE);
|
||||
|
||||
pWalk->pUserCtx = pUserCtx;
|
||||
return NV_OK;
|
||||
@@ -223,9 +224,12 @@ mmuWalkFindLevel
|
||||
)
|
||||
{
|
||||
const MMU_WALK_LEVEL *pLevel = &pWalk->root;
|
||||
while (pLevel->pFmt != pLevelFmt)
|
||||
while (pLevel != NULL && pLevel->pFmt != pLevelFmt)
|
||||
{
|
||||
NvU32 subLevel;
|
||||
|
||||
NV_ASSERT_OR_RETURN(pLevel->pFmt != NULL, NULL);
|
||||
|
||||
// Single sub-level always continues.
|
||||
if (1 == pLevel->pFmt->numSubLevels)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user