diff --git a/shared/source/generated/xe_hpc_core/hw_cmds_generated_xe_hpc_core.inl b/shared/source/generated/xe_hpc_core/hw_cmds_generated_xe_hpc_core.inl index ab50901e93..8d2ff72de7 100644 --- a/shared/source/generated/xe_hpc_core/hw_cmds_generated_xe_hpc_core.inl +++ b/shared/source/generated/xe_hpc_core/hw_cmds_generated_xe_hpc_core.inl @@ -4794,8 +4794,8 @@ struct MI_FLUSH_DW { /// DWORD 1..2 uint64_t Reserved_32 : BITFIELD_RANGE(0, 1); - uint64_t DestinationAddress : BITFIELD_RANGE(2, 47); - uint64_t Reserved_80 : BITFIELD_RANGE(48, 63); + uint64_t DestinationAddressType : BITFIELD_RANGE(2, 2); + uint64_t DestinationAddress : BITFIELD_RANGE(3, 63); /// DWORD 3..4 uint64_t ImmediateData; @@ -4888,7 +4888,7 @@ struct MI_FLUSH_DW { } typedef enum tagDESTINATIONADDRESS { - DESTINATIONADDRESS_BIT_SHIFT = 2, + DESTINATIONADDRESS_BIT_SHIFT = 3, DESTINATIONADDRESS_ALIGN_SIZE = 4, } DESTINATIONADDRESS; diff --git a/shared/test/unit_test/command_container/command_encoder_tests.cpp b/shared/test/unit_test/command_container/command_encoder_tests.cpp index 14b2ec7a13..268fb14f4f 100644 --- a/shared/test/unit_test/command_container/command_encoder_tests.cpp +++ b/shared/test/unit_test/command_container/command_encoder_tests.cpp @@ -52,6 +52,22 @@ HWTEST_F(CommandEncoderTests, givenImmDataWriteWhenProgrammingMiFlushDwThenSetAl EXPECT_EQ(0u, static_cast(miFlushDwCmd->getNotifyEnable())); } +HWTEST2_F(CommandEncoderTests, given57bitVaForDestinationAddressWhenProgrammingMiFlushDwThenVerifyAll57bitsAreUsed, IsPVC) { + using MI_FLUSH_DW = typename FamilyType::MI_FLUSH_DW; + uint8_t buffer[2 * sizeof(MI_FLUSH_DW)] = {}; + LinearStream linearStream(buffer, sizeof(buffer)); + + const uint64_t setGpuAddress = 0xffffffffffffffff; + const uint64_t verifyGpuAddress = 0xfffffffffffffff8; + + MiFlushArgs args; + args.commandWithPostSync = true; + EncodeMiFlushDW::programMiFlushDw(linearStream, setGpuAddress, 0, args, *defaultHwInfo); + auto miFlushDwCmd = reinterpret_cast(buffer); + + EXPECT_EQ(verifyGpuAddress, miFlushDwCmd->getDestinationAddress()); +} + HWTEST_F(CommandEncoderTests, whenEncodeMemoryPrefetchCalledThenDoNothing) { uint8_t buffer[MemoryConstants::pageSize] = {}; LinearStream linearStream(buffer, sizeof(buffer));