Skip to content

Commit 9419e70

Browse files
fix: zero kernel residency container for shared system usm pointers
Signed-off-by: Zbigniew Zdanowicz <[email protected]>
1 parent f96fc55 commit 9419e70

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

level_zero/core/source/kernel/kernel_imp.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,7 @@ ze_result_t KernelImp::setArgBuffer(uint32_t argIndex, size_t argSize, const voi
776776

777777
if (allocData == nullptr) {
778778
if (NEO::debugManager.flags.DisableSystemPointerKernelArgument.get() != 1) {
779+
argumentsResidencyContainer[argIndex] = nullptr;
779780
const auto &argAsPtr = kernelImmData->getDescriptor().payloadMappings.explicitArgs[argIndex].as<NEO::ArgDescPointer>();
780781
auto patchLocation = ptrOffset(getCrossThreadData(), argAsPtr.stateless);
781782
patchWithRequiredSize(const_cast<uint8_t *>(patchLocation), argAsPtr.pointerSize, reinterpret_cast<uintptr_t>(requestedAddress));

level_zero/core/test/unit_tests/sources/kernel/test_kernel.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,18 +333,21 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
333333
EXPECT_EQ(mockKernel.kernelArgInfos[0].allocIdMemoryManagerCounter, svmAllocsManager->allocationsCounter);
334334
EXPECT_EQ(mockKernel.kernelArgInfos[0].allocId, allocData->getAllocId());
335335

336+
const auto &argumentsResidencyContainer = mockKernel.getArgumentsResidencyContainer();
336337
// different value - called
337338
auto secondSvmAllocation = svmAllocsManager->createSVMAlloc(4096, allocationProperties, context->rootDeviceIndices, context->deviceBitfields);
338339
svmAllocsManager->getSVMAlloc(secondSvmAllocation)->setAllocId(3u);
339340
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(secondSvmAllocation), &secondSvmAllocation));
340341
EXPECT_EQ(++callCounter, mockKernel.setArgBufferWithAllocCalled);
342+
EXPECT_NE(nullptr, argumentsResidencyContainer[0]);
341343

342344
// nullptr - not called, argInfo is updated
343345
EXPECT_FALSE(mockKernel.kernelArgInfos[0].isSetToNullptr);
344346
EXPECT_EQ(mockKernel.kernelArgInfos[0].isSetToNullptr, kernelArgInfos[0].isSetToNullptr);
345347
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(nullptr), nullptr));
346348
EXPECT_EQ(callCounter, mockKernel.setArgBufferWithAllocCalled);
347349
EXPECT_TRUE(mockKernel.kernelArgInfos[0].isSetToNullptr);
350+
EXPECT_EQ(nullptr, argumentsResidencyContainer[0]);
348351

349352
// nullptr again - not called
350353
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(nullptr), nullptr));
@@ -355,6 +358,7 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
355358
EXPECT_EQ(ZE_RESULT_SUCCESS, mockKernel.setArgBuffer(0, sizeof(secondSvmAllocation), &secondSvmAllocation));
356359
EXPECT_EQ(++callCounter, mockKernel.setArgBufferWithAllocCalled);
357360
EXPECT_FALSE(mockKernel.kernelArgInfos[0].isSetToNullptr);
361+
EXPECT_NE(nullptr, argumentsResidencyContainer[0]);
358362

359363
// allocations counter == 0 called
360364
svmAllocsManager->allocationsCounter = 0;
@@ -374,6 +378,7 @@ TEST_F(SetKernelArgCacheTest, givenValidBufferArgumentWhenSetMultipleTimesThenSe
374378
ASSERT_EQ(mockKernel.kernelArgInfos[0].value, secondSvmAllocation);
375379
ASSERT_EQ(mockKernel.kernelArgInfos[0].allocId, 0u);
376380
EXPECT_EQ(callCounter, mockKernel.setArgBufferWithAllocCalled);
381+
EXPECT_EQ(nullptr, argumentsResidencyContainer[0]);
377382

378383
svmAllocsManager->freeSVMAlloc(svmAllocation);
379384
}

0 commit comments

Comments
 (0)