Propagate flush error to initializeDeviceWithFirstSubmission method

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2022-11-10 11:28:41 +00:00
committed by Compute-Runtime-Automation
parent 5266a95c03
commit dffe5fd604
7 changed files with 20 additions and 7 deletions

View File

@ -580,7 +580,7 @@ class CommandStreamReceiverMock : public CommandStreamReceiver {
}
void postInitFlagsSetup() override {}
void initializeDeviceWithFirstSubmission() override {}
SubmissionStatus initializeDeviceWithFirstSubmission() override { return SubmissionStatus::SUCCESS; }
std::map<const void *, size_t> residency;
std::unique_ptr<ExecutionEnvironment> mockExecutionEnvironment;

View File

@ -360,7 +360,7 @@ class CommandStreamReceiver {
lastPreemptionMode = value;
}
virtual void initializeDeviceWithFirstSubmission() = 0;
virtual SubmissionStatus initializeDeviceWithFirstSubmission() = 0;
uint32_t getNumClients() {
return this->numClients.load();

View File

@ -138,7 +138,7 @@ class CommandStreamReceiverHw : public CommandStreamReceiver {
size_t getCmdsSizeForComputeBarrierCommand() const override {
return getCmdSizeForStallingNoPostSyncCommands();
}
void initializeDeviceWithFirstSubmission() override;
SubmissionStatus initializeDeviceWithFirstSubmission() override;
HeapDirtyState &getDshState() {
return dshState;

View File

@ -1476,12 +1476,12 @@ void CommandStreamReceiverHw<GfxFamily>::createKernelArgsBufferAllocation() {
}
template <typename GfxFamily>
void CommandStreamReceiverHw<GfxFamily>::initializeDeviceWithFirstSubmission() {
SubmissionStatus CommandStreamReceiverHw<GfxFamily>::initializeDeviceWithFirstSubmission() {
auto lock = obtainUniqueOwnership();
auto &commandStream = getCS(EncodeBatchBufferStartOrEnd<GfxFamily>::getBatchBufferEndSize());
auto commandStreamStart = commandStream.getUsed();
this->flushSmallTask(commandStream, commandStreamStart);
return this->flushSmallTask(commandStream, commandStreamStart);
}
template <typename GfxFamily>

View File

@ -368,7 +368,9 @@ bool Device::createEngine(uint32_t deviceCsrIndex, EngineTypeUsage engineTypeUsa
defaultEngineIndex = deviceCsrIndex;
if (osContext->isDebuggableContext()) {
commandStreamReceiver->initializeDeviceWithFirstSubmission();
if (SubmissionStatus::SUCCESS != commandStreamReceiver->initializeDeviceWithFirstSubmission()) {
return false;
}
}
}

View File

@ -173,7 +173,7 @@ class MockCommandStreamReceiver : public CommandStreamReceiver {
}
return isLocked;
}
void initializeDeviceWithFirstSubmission() override {}
SubmissionStatus initializeDeviceWithFirstSubmission() override { return SubmissionStatus::SUCCESS; }
static constexpr size_t tagSize = 256;
static volatile uint32_t mockTagAddress[tagSize];

View File

@ -2410,4 +2410,15 @@ HWTEST_F(CommandStreamReceiverHwTest, givenOutOfMemoryFailureOnFlushWhenFlushing
commandStreamReceiver.flushReturnValue = SubmissionStatus::OUT_OF_HOST_MEMORY;
EXPECT_EQ(SubmissionStatus::OUT_OF_HOST_MEMORY, commandStreamReceiver.flushTagUpdate());
}
HWTEST_F(CommandStreamReceiverHwTest, givenOutOfMemoryFailureOnFlushWhenInitializingDeviceWithFirstSubmissionThenErrorIsPropagated) {
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
commandStreamReceiver.flushReturnValue = SubmissionStatus::OUT_OF_MEMORY;
EXPECT_EQ(SubmissionStatus::OUT_OF_MEMORY, commandStreamReceiver.initializeDeviceWithFirstSubmission());
commandStreamReceiver.flushReturnValue = SubmissionStatus::OUT_OF_HOST_MEMORY;
EXPECT_EQ(SubmissionStatus::OUT_OF_HOST_MEMORY, commandStreamReceiver.initializeDeviceWithFirstSubmission());
}