diff --git a/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp b/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp index 4ce5df27f5..f83279482c 100644 --- a/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp +++ b/shared/source/kernel/kernel_descriptor_from_patchtokens.cpp @@ -392,6 +392,7 @@ void populateArgDescriptor(KernelDescriptor &dst, size_t argNum, const PatchToke dst.kernelAttributes.flags.usesSamplers = true; } break; case PatchTokenBinary::ArgObjectType::Slm: { + markArgAsPatchable(dst, argNum); auto &asBufferArg = dst.payloadMappings.explicitArgs[argNum].as(true); asBufferArg.requiredSlmAlignment = src.metadata.slm.token->SourceOffset; asBufferArg.slmOffset = src.metadata.slm.token->Offset; @@ -416,7 +417,9 @@ void populateArgDescriptor(KernelDescriptor &dst, size_t argNum, const PatchToke } for (auto &byValArg : src.byValMap) { - populateKernelArgDescriptor(dst, argNum, *byValArg); + if (PatchTokenBinary::ArgObjectType::Slm != src.objectType) { + populateKernelArgDescriptor(dst, argNum, *byValArg); + } } if (src.objectId) { diff --git a/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp b/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp index 0804c824a9..065c295977 100644 --- a/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp +++ b/shared/test/unit_test/kernel/kernel_descriptor_from_patchtokens_tests.cpp @@ -1047,6 +1047,7 @@ TEST(KernelDescriptorFromPatchtokens, GivenKernelWithSlmArgumentAndMetadataThenK slmDesc.SourceOffset = 64; kernelTokens.tokens.kernelArgs[0].metadata.slm.token = &slmDesc; + kernelTokens.tokens.kernelArgs[0].byValMap.push_back(&slmDesc); NEO::KernelDescriptor dst = {}; NEO::populateKernelDescriptor(dst, kernelTokens, sizeof(void *)); EXPECT_TRUE(dst.payloadMappings.explicitArgs[0].is());