From 452de80d702592e78ce7193863b01d618a8e9f15 Mon Sep 17 00:00:00 2001 From: Kamil Diedrich Date: Wed, 2 Feb 2022 23:29:55 +0100 Subject: [PATCH] Add 2MB alignment for reserving address space for WSL Fixes sporadic issues in configure address space for some devices running in WSL mode Signed-off-by: Kamil Diedrich --- .../wddm/configure_device_address_space_drm_or_wddm.cpp | 6 +++--- .../configure_device_address_space_drm_or_wddm_test.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/shared/source/os_interface/windows/wddm/configure_device_address_space_drm_or_wddm.cpp b/shared/source/os_interface/windows/wddm/configure_device_address_space_drm_or_wddm.cpp index 5b6171a541..5dd6733616 100644 --- a/shared/source/os_interface/windows/wddm/configure_device_address_space_drm_or_wddm.cpp +++ b/shared/source/os_interface/windows/wddm/configure_device_address_space_drm_or_wddm.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 Intel Corporation + * Copyright (C) 2021-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -108,11 +108,11 @@ bool adjustGfxPartitionLayout(GMM_GFX_PARTITIONING &partitionLayout, uint64_t gp const auto cpuAddressRangeSizeToReserve = getSizeToReserve(); void *reservedRangeBase = nullptr; - if (false == wddm.reserveValidAddressRange(cpuAddressRangeSizeToReserve + GfxPartition::heapGranularity - 1, reservedRangeBase)) { + if (false == wddm.reserveValidAddressRange(cpuAddressRangeSizeToReserve + 2 * MemoryConstants::megaByte, reservedRangeBase)) { DEBUG_BREAK_IF(true); return false; } - auto reservedRangeBaseAligned = alignUp(reservedRangeBase, GfxPartition::heapGranularity); + auto reservedRangeBaseAligned = alignUp(reservedRangeBase, 2 * MemoryConstants::megaByte); auto gfxBase = reinterpret_cast(reservedRangeBaseAligned); auto gfxTop = gfxBase + cpuAddressRangeSizeToReserve; diff --git a/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp b/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp index 3d81f9184b..e832dc62cd 100644 --- a/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp +++ b/shared/test/unit_test/os_interface/wddm_linux/configure_device_address_space_drm_or_wddm_test.cpp @@ -547,7 +547,7 @@ TEST_F(WddmLinuxConfigureReduced48bitDeviceAddressSpaceTest, givenTwoSvmAddressS EXPECT_EQ(NEO::windowsMinAddress, allReserveGpuVaArgs[0].BaseAddress); EXPECT_EQ(0U, allReserveGpuVaArgs[0].MinimumAddress); EXPECT_EQ(0U, allReserveGpuVaArgs[0].MaximumAddress); - EXPECT_EQ(alignUp(reservedCpuBase - allReserveGpuVaArgs[0].BaseAddress, MemoryConstants::pageSize64k), allReserveGpuVaArgs[0].Size); + EXPECT_EQ(alignUp(reservedCpuBase - allReserveGpuVaArgs[0].BaseAddress, 2 * MemoryConstants::megaByte), allReserveGpuVaArgs[0].Size); EXPECT_EQ(this->wddm->getAdapter(), allReserveGpuVaArgs[0].hAdapter); EXPECT_EQ(alignDown(reservedCpuEnd, MemoryConstants::pageSize64k), allReserveGpuVaArgs[1].BaseAddress);