fix: BCS MMIO programming

When remap is enabled, we must set different base offset for copy engines.
Copy engines must use BCS0 base.

Related-To: NEO-10678

Signed-off-by: Andrzej Koska <andrzej.koska@intel.com>
This commit is contained in:
Andrzej Koska
2024-05-07 10:19:55 +00:00
committed by Compute-Runtime-Automation
parent 4fd219cdbb
commit e44c7f2627
5 changed files with 70 additions and 2 deletions

View File

@@ -18,6 +18,7 @@ inline bool GfxCoreHelperHw<GfxFamily>::isFusedEuDispatchEnabled(const HardwareI
template <typename GfxFamily>
void *LriHelper<GfxFamily>::program(MI_LOAD_REGISTER_IMM *lriCmd, uint32_t address, uint32_t value, bool remap, bool isBcs) {
MI_LOAD_REGISTER_IMM cmd = GfxFamily::cmdInitLoadRegisterImm;
address += (isBcs && remap) ? RegisterOffsets::bcs0Base : 0x0;
cmd.setRegisterOffset(address);
cmd.setDataDword(value);

View File

@@ -24,6 +24,7 @@ inline bool GfxCoreHelperHw<GfxFamily>::isFusedEuDispatchEnabled(const HardwareI
template <typename GfxFamily>
void *LriHelper<GfxFamily>::program(MI_LOAD_REGISTER_IMM *lriCmd, uint32_t address, uint32_t value, bool remap, bool isBcs) {
MI_LOAD_REGISTER_IMM cmd = Family::cmdInitLoadRegisterImm;
address += (isBcs && remap) ? RegisterOffsets::bcs0Base : 0x0;
cmd.setRegisterOffset(address);
cmd.setDataDword(value);
cmd.setMmioRemapEnable(remap);

View File

@@ -40,6 +40,7 @@ inline constexpr uint32_t csGprR11 = 0x2658;
inline constexpr uint32_t csGprR12 = 0x2660;
inline constexpr uint32_t csGprR13 = 0x2668;
inline constexpr uint32_t csGprR14 = 0x2670;
inline constexpr uint32_t bcs0Base = 0x20000;
inline constexpr uint32_t csPredicateResult = 0x2418;
inline constexpr uint32_t csPredicateResult2 = 0x23BC;