Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions scripts/templates/validation/param.cpp.mako
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@ namespace validation_layer
ZEParameterValidation *zeChecker = new ZEParameterValidation;
ZESParameterValidation *zesChecker = new ZESParameterValidation;
ZETParameterValidation *zetChecker = new ZETParameterValidation;
ZERParameterValidation *zerChecker = new ZERParameterValidation;
parameterChecker.zeValidation = zeChecker;
parameterChecker.zetValidation = zetChecker;
parameterChecker.zesValidation = zesChecker;
parameterChecker.zerValidation = zerChecker;
validation_layer::context.getInstance().validationHandlers.push_back(&parameterChecker);
}
}
Expand All @@ -44,6 +46,7 @@ namespace validation_layer
delete parameterChecker.zeValidation;
delete parameterChecker.zetValidation;
delete parameterChecker.zesValidation;
delete parameterChecker.zerValidation;
}
}
%endif
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
Expand All @@ -23,9 +23,11 @@ namespace validation_layer
basic_leakChecker::ZEbasic_leakChecker *zeChecker = new basic_leakChecker::ZEbasic_leakChecker;
basic_leakChecker::ZESbasic_leakChecker *zesChecker = new basic_leakChecker::ZESbasic_leakChecker;
basic_leakChecker::ZETbasic_leakChecker *zetChecker = new basic_leakChecker::ZETbasic_leakChecker;
basic_leakChecker::ZERbasic_leakChecker *zerChecker = new basic_leakChecker::ZERbasic_leakChecker;
basic_leak_checker.zeValidation = zeChecker;
basic_leak_checker.zetValidation = zetChecker;
basic_leak_checker.zesValidation = zesChecker;
basic_leak_checker.zerValidation = zerChecker;
validation_layer::context.getInstance().validationHandlers.push_back(&basic_leak_checker);
}
}
Expand All @@ -35,6 +37,7 @@ namespace validation_layer
delete basic_leak_checker.zeValidation;
delete basic_leak_checker.zetValidation;
delete basic_leak_checker.zesValidation;
delete basic_leak_checker.zerValidation;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ certificationChecker::certificationChecker() {
new certificationChecker::ZEScertificationChecker;
certificationChecker::ZETcertificationChecker *zetChecker =
new certificationChecker::ZETcertificationChecker;
certificationChecker::ZERcertificationChecker *zerChecker =
new certificationChecker::ZERcertificationChecker;
ze_api_version_t certification_version = ZE_API_VERSION_CURRENT;
const auto certification_version_string =
getenv_string("ZEL_CERTIFICATION_CHECKER_VERSION");
Expand All @@ -38,6 +40,7 @@ certificationChecker::certificationChecker() {
certification_checker.zeValidation = zeChecker;
certification_checker.zetValidation = zetChecker;
certification_checker.zesValidation = zesChecker;
certification_checker.zerValidation = zerChecker;
validation_layer::context.getInstance().validationHandlers.push_back(
&certification_checker);
}
Expand All @@ -48,6 +51,7 @@ certificationChecker::~certificationChecker() {
delete certification_checker.zeValidation;
delete certification_checker.zetValidation;
delete certification_checker.zesValidation;
delete certification_checker.zerValidation;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
Expand All @@ -21,9 +21,11 @@ eventsChecker::eventsChecker() {
eventsChecker::ZEeventsChecker *zeChecker = new eventsChecker::ZEeventsChecker;
eventsChecker::ZESeventsChecker *zesChecker = new eventsChecker::ZESeventsChecker;
eventsChecker::ZETeventsChecker *zetChecker = new eventsChecker::ZETeventsChecker;
eventsChecker::ZEReventsChecker *zerChecker = new eventsChecker::ZEReventsChecker;
events_checker.zeValidation = zeChecker;
events_checker.zesValidation = zesChecker;
events_checker.zetValidation = zetChecker;
events_checker.zerValidation = zerChecker;

validation_layer::context.getInstance().validationHandlers.push_back(&events_checker);
}
Expand All @@ -34,6 +36,7 @@ eventsChecker::~eventsChecker() {
delete events_checker.zeValidation;
delete events_checker.zesValidation;
delete events_checker.zetValidation;
delete events_checker.zerValidation;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ namespace validation_layer
ZEParameterValidation *zeChecker = new ZEParameterValidation;
ZESParameterValidation *zesChecker = new ZESParameterValidation;
ZETParameterValidation *zetChecker = new ZETParameterValidation;
ZERParameterValidation *zerChecker = new ZERParameterValidation;
parameterChecker.zeValidation = zeChecker;
parameterChecker.zetValidation = zetChecker;
parameterChecker.zesValidation = zesChecker;
parameterChecker.zerValidation = zerChecker;
validation_layer::context.getInstance().validationHandlers.push_back(&parameterChecker);
}
}
Expand All @@ -34,6 +36,7 @@ namespace validation_layer
delete parameterChecker.zeValidation;
delete parameterChecker.zetValidation;
delete parameterChecker.zesValidation;
delete parameterChecker.zerValidation;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
Expand All @@ -18,9 +18,11 @@ namespace validation_layer
validationCheckerTemplate::ZEvalidationCheckerTemplate *zeChecker = new validationCheckerTemplate::ZEvalidationCheckerTemplate;
validationCheckerTemplate::ZESvalidationCheckerTemplate *zesChecker = new validationCheckerTemplate::ZESvalidationCheckerTemplate;
validationCheckerTemplate::ZETvalidationCheckerTemplate *zetChecker = new validationCheckerTemplate::ZETvalidationCheckerTemplate;
validationCheckerTemplate::ZERvalidationCheckerTemplate *zerChecker = new validationCheckerTemplate::ZERvalidationCheckerTemplate;
templateChecker.zeValidation = zeChecker;
templateChecker.zetValidation = zetChecker;
templateChecker.zesValidation = zesChecker;
templateChecker.zerValidation = zerChecker;
validation_layer::context.getInstance().validationHandlers.push_back(&templateChecker);
}
}
Expand All @@ -30,6 +32,7 @@ namespace validation_layer
delete templateChecker.zeValidation;
delete templateChecker.zetValidation;
delete templateChecker.zesValidation;
delete templateChecker.zerValidation;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
Expand Down Expand Up @@ -33,6 +33,9 @@ namespace validation_layer
public:
ze_result_t zetModuleGetDebugInfoPrologue( zet_module_handle_t hModule, zet_module_debug_info_format_t format, size_t* pSize, uint8_t* pDebugInfo ) override;
};
class ZERvalidationCheckerTemplate : public ZERValidationEntryPoints {
public:
};
bool enableValidationCheckerTemplate = false;
};
extern class validationCheckerTemplate templateChecker;
Expand Down
4 changes: 3 additions & 1 deletion source/lib/error_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ namespace error_state
{
errorDescs[threadId] = std::string();
}
*ppString = errorDescs[threadId].c_str();
if(ppString != nullptr) {
*ppString = errorDescs[threadId].c_str();
}
}
}
9 changes: 8 additions & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -701,4 +701,11 @@ add_test(NAME test_ze_and_zer_tracing_dynamic COMMAND tests --gtest_filter=*Trac
set_property(TEST test_ze_and_zer_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

add_test(NAME test_zer_unsupported_and_ze_tracing_dynamic COMMAND tests --gtest_filter=*TracingParameterizedTest*GivenLoaderWithDynamicTracingEnabledAndZerApisUnsupportedAndBothZeAndZerCallbacksRegisteredWhenCallingBothApisThenTracingWorksForZeOnly*)
set_property(TEST test_zer_unsupported_and_ze_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")
set_property(TEST test_zer_unsupported_and_ze_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")

# ZER API Validation Layer Tests
add_test(NAME test_zer_validation_layer_positive_case COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisAfterZeInitDriversThenExpectNullDriverIsReachedSuccessfully)
set_property(TEST test_zer_validation_layer_positive_case PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1;ZE_ENABLE_VALIDATION_LAYER=1;ZE_ENABLE_PARAMETER_VALIDATION=1;ZE_ENABLE_HANDLE_LIFETIME=0;ZEL_ENABLE_EVENTS_CHECKER=1;ZEL_ENABLE_BASIC_LEAK_CHECKER=1;ZEL_ENABLE_CERTIFICATION_CHECKER=1")

add_test(NAME test_zer_parameter_validation_layer_negative_case COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingZerApiWithParameterValidationEnabledThenExpectValidationsAreTriggered)
set_property(TEST test_zer_parameter_validation_layer_negative_case PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1;ZE_ENABLE_VALIDATION_LAYER=1;ZE_ENABLE_PARAMETER_VALIDATION=1;ZE_ENABLE_HANDLE_LIFETIME=1;ZEL_ENABLE_EVENTS_CHECKER=1;ZEL_ENABLE_BASIC_LEAK_CHECKER=1;ZEL_ENABLE_CERTIFICATION_CHECKER=1")
6 changes: 5 additions & 1 deletion test/loader_api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2311,7 +2311,11 @@ TEST_F(DriverOrderingTest,
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1"));

deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
uint32_t device_count = 1;
std::vector<ze_device_handle_t> devices(device_count);
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDeviceGet(drivers[0], &device_count, devices.data()));

deviceId = zerTranslateDeviceHandleToIdentifier(devices[0]);
EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1"));

ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);
Expand Down
21 changes: 21 additions & 0 deletions test/loader_validation_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "gtest/gtest.h"
#include "loader/ze_loader.h"
#include "ze_api.h"
#include "zer_api.h"

#if defined(_WIN32)
#define putenv_safe _putenv
Expand Down Expand Up @@ -581,3 +582,23 @@ TEST(
status = zeContextDestroy(context);
EXPECT_EQ(ZE_RESULT_SUCCESS, status);
}

TEST(
RuntimeApiParameterValidation,
GivenLevelZeroLoaderPresentWhenCallingZerApiWithParameterValidationEnabledThenExpectValidationsAreTriggered)
{
uint32_t pInitDriversCount = 0;
ze_init_driver_type_desc_t desc = {ZE_STRUCTURE_TYPE_INIT_DRIVER_TYPE_DESC};
desc.flags = UINT32_MAX;
desc.pNext = nullptr;
putenv_safe(const_cast<char *>("ZE_ENABLE_LOADER_INTERCEPT=1"));
putenv_safe(const_cast<char *>("ZEL_TEST_NULL_DRIVER_DISABLE_DDI_EXT=0"));
std::vector<ze_driver_handle_t> drivers;
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, nullptr, &desc));
drivers.resize(pInitDriversCount);
EXPECT_EQ(ZE_RESULT_SUCCESS, zeInitDrivers(&pInitDriversCount, drivers.data(), &desc));
EXPECT_GT(pInitDriversCount, 0);

ze_result_t result = zerGetLastErrorDescription(nullptr);
EXPECT_EQ(ZE_RESULT_ERROR_INVALID_NULL_POINTER, result);
}
Loading