diff --git a/opencl/test/unit_test/os_interface/linux/cl_mem_cache_clos_tests_xe_hpc.cpp b/opencl/test/unit_test/os_interface/linux/cl_mem_cache_clos_tests_xe_hpc.cpp index 3e481a280c..f4124e0967 100644 --- a/opencl/test/unit_test/os_interface/linux/cl_mem_cache_clos_tests_xe_hpc.cpp +++ b/opencl/test/unit_test/os_interface/linux/cl_mem_cache_clos_tests_xe_hpc.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -38,6 +38,7 @@ struct BuffersWithClMemCacheClosTests : public DrmMemoryManagerLocalMemoryPrelim multiTileArchInfo.TileCount = (memoryInfo->getDrmRegionInfos().size() - 1); multiTileArchInfo.IsValid = (multiTileArchInfo.TileCount > 0); + mock->engineInfoQueried = false; mock->queryEngineInfo(); clDevice = std::make_unique(device.get()); diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 54c10aea00..8af5a7ca93 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -815,6 +815,8 @@ int Drm::getOaTimestampFrequency(int &frequency) { } bool Drm::queryEngineInfo() { + UNRECOVERABLE_IF(engineInfoQueried); + engineInfoQueried = true; return Drm::queryEngineInfo(false); } diff --git a/shared/source/os_interface/linux/drm_neo.h b/shared/source/os_interface/linux/drm_neo.h index a6158d0523..0238dac8af 100644 --- a/shared/source/os_interface/linux/drm_neo.h +++ b/shared/source/os_interface/linux/drm_neo.h @@ -363,6 +363,7 @@ class Drm : public DriverModel { std::atomic gpuFaultCheckCounter{0u}; bool memoryInfoQueried = false; + bool engineInfoQueried = false; private: int getParamIoctl(DrmParam param, int *dstValue); diff --git a/shared/test/common/libult/linux/drm_mock.h b/shared/test/common/libult/linux/drm_mock.h index ea58c22169..64ec823c2b 100644 --- a/shared/test/common/libult/linux/drm_mock.h +++ b/shared/test/common/libult/linux/drm_mock.h @@ -33,6 +33,7 @@ class DrmMock : public Drm { using Drm::completionFenceSupported; using Drm::contextDebugSupported; using Drm::engineInfo; + using Drm::engineInfoQueried; using Drm::fenceVal; using Drm::generateElfUUID; using Drm::generateUUID; diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp index ddc0562631..a2646e2a4a 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_manager_localmem_prelim_tests.cpp @@ -48,6 +48,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenDrmMemoryManagerWithPrelimSup regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -102,6 +103,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMultiRootDeviceEnvironmentAnd regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique(); @@ -152,6 +154,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMultiRootDeviceEnvironmentAnd regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique(); @@ -192,6 +195,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMultiRootDeviceEnvironmentAnd regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->fdToHandleRetVal = -1; @@ -232,6 +236,7 @@ TEST_F(DrmMemoryManagerUsmSharedHandlePrelimTest, givenMultiRootDeviceEnvironmen regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->fdToHandleRetVal = -1; @@ -265,6 +270,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMultiRootDeviceEnvironmentAnd auto mock = new DrmQueryMock(*executionEnvironment->rootDeviceEnvironments[i]); mock->memoryInfo.reset(nullptr); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->fdToHandleRetVal = -1; @@ -304,6 +310,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, whenCreateUnifiedMemoryAllocationT regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -342,6 +349,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -381,6 +389,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -423,6 +432,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -465,6 +475,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -507,6 +518,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -551,6 +563,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -594,6 +607,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, whenCreateUnifiedMemoryAllocationW hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 3; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; DeviceBitfield devices = 0b11; @@ -641,6 +655,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenKMDSupportForCrossTileMigrati hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 3; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; DeviceBitfield devices = 0b101; @@ -686,6 +701,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenUseKmdMigrationSetWhenCreateS regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->setBindAvailable(); @@ -730,6 +746,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, MmapFailWhenCreateSharedUnifiedMem regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->setBindAvailable(); @@ -758,6 +775,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenUseKmdMigrationSetWhenCreateS regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->setBindAvailable(); @@ -805,6 +823,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenSetVmAdviseAtomicAttributeWhe regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -851,6 +870,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenSetVmAdviseDevicePreferredLoc regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -908,6 +928,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenKmdMigratedSharedAllocationWh hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 2; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -957,6 +978,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenCreateContextWithAccessCounte regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -999,6 +1021,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenCreateContextWithAccessCounte regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -1055,6 +1078,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenUseKmdMigrationAndUsmInitialP hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 4; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -1098,6 +1122,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenKMDSupportForCrossTileMigrati hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 4; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -1237,6 +1262,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, whenVmAdviseIoctlFailsThenCreateSh regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.vmAdviseReturn = -1; @@ -1261,6 +1287,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenUseKmdMigrationSetWhenCreateS regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.mmapOffsetReturn = -1; @@ -1288,6 +1315,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenUseKmdMigrationSetWhenCreateS hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 2; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -1335,6 +1363,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenCreateKmdMigratedSharedAlloca hwInfo->gtSystemInfo.MultiTileArchInfo.TileCount = 2; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); SVMAllocsManager unifiedMemoryManager(memoryManager, false); @@ -1380,6 +1409,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMmapFailWhenCreateUnifiedMemo regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.mmapOffsetReturn = -1; @@ -1398,6 +1428,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenGemCreateExtFailWhenCreateUni regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.gemCreateExtReturn = -1; @@ -1419,6 +1450,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMemoryInfoWhenAllocateWithAli regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -1447,6 +1479,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenAlignmentAndSizeWhenMmapRetur regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -1490,6 +1523,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenAlignmentAndSizeWhenMmapRetur regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -1532,6 +1566,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenInvalidCacheRegionWhenMmapRet regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; @@ -1572,6 +1607,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMemoryInfoAndFailedMmapOffset regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.mmapOffsetReturn = -1; @@ -1592,6 +1628,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMemoryInfoAndDisabledMmapBOCr regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.mmapOffsetReturn = -1; @@ -1615,6 +1652,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMemoryInfoAndNotUseObjectMmap regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.mmapOffsetReturn = -1; @@ -1639,6 +1677,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenMemoryInfoAndFailedGemCreateE regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->context.gemCreateExtReturn = -1; @@ -1981,6 +2020,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenPrintBOCreateDestroyResultFla auto gpuAddress = 0x1234u; auto size = MemoryConstants::pageSize64k; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); testing::internal::CaptureStdout(); @@ -2014,6 +2054,7 @@ TEST_F(DrmMemoryManagerLocalMemoryPrelimTest, givenPrintBOCreateDestroyResultFla regionInfo[1].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, DrmMockHelper::getEngineOrMemoryInstanceValue(0, 0)}; mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + mock->engineInfoQueried = false; mock->queryEngineInfo(); mock->ioctlCallsCount = 0; mock->setBindAvailable();