L0Debug refactor - move eventsToAck out from ClientConnection

- events to ack are unrelated to client handle

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2022-08-09 16:52:44 +00:00
committed by Compute-Runtime-Automation
parent 869768a01a
commit 3a2d3b9274
3 changed files with 13 additions and 13 deletions

View File

@@ -1400,8 +1400,8 @@ ze_result_t DebugSessionLinux::accessDefaultMemForThreadAll(const zet_debug_memo
ze_result_t DebugSessionLinux::acknowledgeEvent(const zet_debug_event_t *event) {
std::unique_lock<std::mutex> lock(asyncThreadMutex);
for (size_t i = 0; i < clientHandleToConnection[clientHandle]->eventsToAck.size(); i++) {
if (apiEventCompare(*event, clientHandleToConnection[clientHandle]->eventsToAck[i].first)) {
for (size_t i = 0; i < eventsToAck.size(); i++) {
if (apiEventCompare(*event, eventsToAck[i].first)) {
bool perKernelIsaAcked = false;
if (event->type == ZET_DEBUG_EVENT_TYPE_MODULE_LOAD) {
@@ -1429,13 +1429,13 @@ ze_result_t DebugSessionLinux::acknowledgeEvent(const zet_debug_event_t *event)
}
if (!perKernelIsaAcked) {
auto eventToAck = clientHandleToConnection[clientHandle]->eventsToAck[i].second;
auto eventToAck = eventsToAck[i].second;
auto ret = ioctl(PRELIM_I915_DEBUG_IOCTL_ACK_EVENT, &eventToAck);
PRINT_DEBUGGER_INFO_LOG("PRELIM_I915_DEBUG_IOCTL_ACK_EVENT seqno = %llu, ret = %d errno = %d\n", (uint64_t)eventToAck.seqno, ret, ret != 0 ? errno : 0);
}
auto iter = clientHandleToConnection[clientHandle]->eventsToAck.begin() + i;
clientHandleToConnection[clientHandle]->eventsToAck.erase(iter);
auto iter = eventsToAck.begin() + i;
eventsToAck.erase(iter);
return ZE_RESULT_SUCCESS;
}

View File

@@ -145,8 +145,6 @@ struct DebugSessionLinux : DebugSessionImp {
uint64_t contextStateSaveAreaGpuVa = 0;
uint64_t stateBaseAreaGpuVa = 0;
std::vector<std::pair<zet_debug_event_t, prelim_drm_i915_debug_event_ack>> eventsToAck;
std::unordered_map<uint64_t, Module> uuidToModule;
};
@@ -182,7 +180,7 @@ struct DebugSessionLinux : DebugSessionImp {
eventToAck.flags = 0;
debugEvent.flags = ZET_DEBUG_EVENT_FLAG_NEED_ACK;
clientHandleToConnection[clientHandle]->eventsToAck.push_back(
eventsToAck.push_back(
std::pair<zet_debug_event_t, prelim_drm_i915_debug_event_ack>(debugEvent, eventToAck));
}
@@ -246,6 +244,7 @@ struct DebugSessionLinux : DebugSessionImp {
std::mutex internalEventThreadMutex;
std::condition_variable internalEventCondition;
std::queue<std::unique_ptr<uint64_t[]>> internalEventQueue;
std::vector<std::pair<zet_debug_event_t, prelim_drm_i915_debug_event_ack>> eventsToAck;
int fd = 0;
int ioctl(unsigned long request, void *arg);

View File

@@ -272,6 +272,7 @@ struct MockDebugSessionLinux : public L0::DebugSessionLinux {
using L0::DebugSessionLinux::closeAsyncThread;
using L0::DebugSessionLinux::debugArea;
using L0::DebugSessionLinux::euControlInterruptSeqno;
using L0::DebugSessionLinux::eventsToAck;
using L0::DebugSessionLinux::extractVaFromUuidString;
using L0::DebugSessionLinux::getRegisterSetProperties;
using L0::DebugSessionLinux::getStateSaveAreaHeader;
@@ -3845,7 +3846,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenEventWithAckFlagWhenHandlingEventForISAThen
session->handleEvent(&vmBindIsa->base);
EXPECT_EQ(1u, session->apiEvents.size());
EXPECT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size());
EXPECT_EQ(1u, session->eventsToAck.size());
auto event = session->apiEvents.front();
session->apiEvents.pop();
@@ -4039,7 +4040,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventWithAckNeededForIsaWhenHandlingE
memcpy(uuids, uuidsTemp, sizeof(uuidsTemp));
EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size());
EXPECT_EQ(0u, session->eventsToAck.size());
session->handleEvent(&vmBindIsa->base);
@@ -4055,8 +4056,8 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventWithAckNeededForIsaWhenHandlingE
EXPECT_EQ(3u, isaAllocation->vmHandle);
EXPECT_TRUE(isaAllocation->tileInstanced);
ASSERT_EQ(1u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size());
auto eventToAck = session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck[0].second;
ASSERT_EQ(1u, session->eventsToAck.size());
auto eventToAck = session->eventsToAck[0].second;
EXPECT_EQ(vmBindIsa->base.type, eventToAck.type);
EXPECT_EQ(vmBindIsa->base.seqno, eventToAck.seqno);
EXPECT_EQ(0u, handler->debugEventAcked.seqno);
@@ -4236,7 +4237,7 @@ TEST_F(DebugApiLinuxVmBindTest, GivenVmBindEventForIsaWhenReadingEventThenModule
EXPECT_EQ(isaGpuVa, isaMap[isaGpuVa]->bindInfo.gpuVa);
// No event to ACK if vmBind doesn't have ACK flag
EXPECT_EQ(0u, session->clientHandleToConnection[MockDebugSessionLinux::mockClientHandle]->eventsToAck.size());
EXPECT_EQ(0u, session->eventsToAck.size());
zet_debug_event_t event = {};
ze_result_t result = zetDebugReadEvent(session->toHandle(), 0, &event);