@@ -56,11 +56,14 @@ namespace loader
5656
5757 uint32_t total_driver_handle_count = 0 ;
5858
59- if (!loader::context->sortingInProgress .exchange (true ) && !loader::context->instrumentationEnabled ) {
60- std::call_once (loader::context->coreDriverSortOnce , []() {
61- loader::context->driverSorting (&loader::context->zeDrivers , nullptr , false );
62- });
63- loader::context->sortingInProgress .store (false );
59+ {
60+ std::lock_guard<std::mutex> lock (loader::context->sortMutex );
61+ if (!loader::context->sortingInProgress .exchange (true ) && !loader::context->instrumentationEnabled ) {
62+ std::call_once (loader::context->coreDriverSortOnce , []() {
63+ loader::context->driverSorting (&loader::context->zeDrivers , nullptr , false );
64+ });
65+ loader::context->sortingInProgress .store (false );
66+ }
6467 }
6568
6669 for ( auto & drv : loader::context->zeDrivers )
@@ -138,12 +141,14 @@ namespace loader
138141 ze_result_t result = ZE_RESULT_SUCCESS;
139142
140143 uint32_t total_driver_handle_count = 0 ;
141-
142- if (!loader::context->sortingInProgress .exchange (true ) && !loader::context->instrumentationEnabled ) {
143- std::call_once (loader::context->coreDriverSortOnce , [desc]() {
144- loader::context->driverSorting (&loader::context->zeDrivers , desc, false );
145- });
146- loader::context->sortingInProgress .store (false );
144+ {
145+ std::lock_guard<std::mutex> lock (loader::context->sortMutex );
146+ if (!loader::context->sortingInProgress .exchange (true ) && !loader::context->instrumentationEnabled ) {
147+ std::call_once (loader::context->coreDriverSortOnce , [desc]() {
148+ loader::context->driverSorting (&loader::context->zeDrivers , desc, false );
149+ });
150+ loader::context->sortingInProgress .store (false );
151+ }
147152 }
148153
149154 for ( auto & drv : loader::context->zeDrivers )
0 commit comments