fix: adjust interupt wait api expectations

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2024-10-16 16:42:17 +00:00
committed by Compute-Runtime-Automation
parent c982981dde
commit b17fabb120
2 changed files with 14 additions and 6 deletions

View File

@@ -98,15 +98,16 @@ Event *Event::create(const EventDescriptor &eventDescriptor, const ze_event_desc
bool interruptMode = false;
bool kmdWaitMode = false;
bool externalInterruptWait = false;
if (extendedDesc && (extendedDesc->stype == ZEX_INTEL_STRUCTURE_TYPE_EVENT_SYNC_MODE_EXP_DESC)) {
auto eventSyncModeDesc = reinterpret_cast<const zex_intel_event_sync_mode_exp_desc_t *>(extendedDesc);
interruptMode = (eventSyncModeDesc->syncModeFlags & ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_SIGNAL_INTERRUPT);
kmdWaitMode = (eventSyncModeDesc->syncModeFlags & ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_LOW_POWER_WAIT);
bool externalInterrupt = (eventSyncModeDesc->syncModeFlags & ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_EXTERNAL_INTERRUPT_WAIT);
externalInterruptWait = (eventSyncModeDesc->syncModeFlags & ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_EXTERNAL_INTERRUPT_WAIT);
if (externalInterrupt) {
if (externalInterruptWait) {
event->setExternalInterruptId(eventSyncModeDesc->externalInterruptId);
UNRECOVERABLE_IF(eventSyncModeDesc->externalInterruptId > 0 && eventDescriptor.eventPoolAllocation);
}
@@ -117,10 +118,10 @@ Event *Event::create(const EventDescriptor &eventDescriptor, const ze_event_desc
if (interruptMode) {
event->enableInterruptMode();
}
if (kmdWaitMode) {
event->enableKmdWaitMode();
}
if (externalInterruptWait || (interruptMode && kmdWaitMode)) {
event->enableKmdWaitMode();
}
return event.release();

View File

@@ -83,7 +83,7 @@ HWTEST2_F(InOrderCmdListTests, givenInvalidPnextStructWhenCreatingEventThenIgnor
HWTEST2_F(InOrderCmdListTests, givenEventSyncModeDescPassedWhenCreatingEventThenEnableNewModes, MatchAny) {
ze_event_pool_desc_t eventPoolDesc = {};
eventPoolDesc.flags = ZE_EVENT_POOL_FLAG_HOST_VISIBLE;
eventPoolDesc.count = 6;
eventPoolDesc.count = 7;
auto eventPool = std::unique_ptr<L0::EventPool>(EventPool::create(driverHandle.get(), context, 0, nullptr, &eventPoolDesc, returnValue));
@@ -4518,10 +4518,17 @@ HWTEST2_F(InOrderCmdListTests, givenStandaloneCbEventWhenPassingExternalInterrup
syncModeDesc.syncModeFlags = ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_SIGNAL_INTERRUPT;
auto event1 = createStandaloneCbEvent(reinterpret_cast<const ze_base_desc_t *>(&syncModeDesc));
EXPECT_EQ(NEO::InterruptId::notUsed, event1->externalInterruptId);
EXPECT_FALSE(event1->isKmdWaitModeEnabled());
syncModeDesc.syncModeFlags = ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_EXTERNAL_INTERRUPT_WAIT;
auto event2 = createStandaloneCbEvent(reinterpret_cast<const ze_base_desc_t *>(&syncModeDesc));
EXPECT_EQ(syncModeDesc.externalInterruptId, event2->externalInterruptId);
EXPECT_TRUE(event2->isKmdWaitModeEnabled());
syncModeDesc.syncModeFlags = ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_EXTERNAL_INTERRUPT_WAIT | ZEX_INTEL_EVENT_SYNC_MODE_EXP_FLAG_LOW_POWER_WAIT;
auto event3 = createStandaloneCbEvent(reinterpret_cast<const ze_base_desc_t *>(&syncModeDesc));
EXPECT_EQ(syncModeDesc.externalInterruptId, event3->externalInterruptId);
EXPECT_TRUE(event3->isKmdWaitModeEnabled());
}
HWTEST2_F(InOrderCmdListTests, givenStandaloneEventWhenCallingAppendThenSuccess, IsAtLeastXeHpCore) {