mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 15:53:45 +08:00
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:
committed by
Compute-Runtime-Automation
parent
869768a01a
commit
3a2d3b9274
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user