fix: Fix mixed deletion errors

Resolves: NEO-16425

Signed-off-by: Jemale Lockett <jemale.lockett@intel.com>
This commit is contained in:
Jemale Lockett
2025-10-14 19:10:37 +00:00
committed by Compute-Runtime-Automation
parent f126203df3
commit 0de2b26c7c
8 changed files with 96 additions and 40 deletions

View File

@@ -19,17 +19,17 @@ class EuDebugInterface {
virtual bool isExecQueuePageFaultEnableSupported() { return false; };
virtual ~EuDebugInterface() = default;
virtual std::unique_ptr<EuDebugEventEuAttention> toEuDebugEventEuAttention(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> toEuDebugEventEuAttention(const void *drmType) = 0;
virtual EuDebugEventClient toEuDebugEventClient(const void *drmType) = 0;
virtual EuDebugEventVm toEuDebugEventVm(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventExecQueue> toEuDebugEventExecQueue(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventExecQueuePlacements> toEuDebugEventExecQueuePlacements(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> toEuDebugEventExecQueue(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> toEuDebugEventExecQueuePlacements(const void *drmType) = 0;
virtual EuDebugEventMetadata toEuDebugEventMetadata(const void *drmType) = 0;
virtual EuDebugEventVmBind toEuDebugEventVmBind(const void *drmType) = 0;
virtual EuDebugEventVmBindOp toEuDebugEventVmBindOp(const void *drmType) = 0;
virtual EuDebugEventVmBindOpMetadata toEuDebugEventVmBindOpMetadata(const void *drmType) = 0;
virtual EuDebugEventVmBindUfence toEuDebugEventVmBindUfence(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventPageFault> toEuDebugEventPageFault(const void *drmType) = 0;
virtual std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> toEuDebugEventPageFault(const void *drmType) = 0;
virtual EuDebugEuControl toEuDebugEuControl(const void *drmType) = 0;
virtual EuDebugConnect toEuDebugConnect(const void *drmType) = 0;

View File

@@ -92,7 +92,7 @@ uint32_t EuDebugInterfacePrelim::getParamValue(EuDebugParam param) const {
return 0;
}
std::unique_ptr<EuDebugEventEuAttention> EuDebugInterfacePrelim::toEuDebugEventEuAttention(const void *drmType) {
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> EuDebugInterfacePrelim::toEuDebugEventEuAttention(const void *drmType) {
const prelim_drm_xe_eudebug_event_eu_attention *event = static_cast<const prelim_drm_xe_eudebug_event_eu_attention *>(drmType);
EuDebugEventEuAttention *pEuAttentionEvent = static_cast<EuDebugEventEuAttention *>(malloc(sizeof(EuDebugEventEuAttention) + event->bitmask_size * sizeof(uint8_t)));
@@ -109,7 +109,11 @@ std::unique_ptr<EuDebugEventEuAttention> EuDebugInterfacePrelim::toEuDebugEventE
pEuAttentionEvent->execQueueHandle = event->exec_queue_handle;
pEuAttentionEvent->clientHandle = event->client_handle;
return std::unique_ptr<EuDebugEventEuAttention>(pEuAttentionEvent);
auto deleter = [](EuDebugEventEuAttention *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)>(pEuAttentionEvent, deleter);
}
EuDebugEventClient EuDebugInterfacePrelim::toEuDebugEventClient(const void *drmType) {
@@ -143,7 +147,7 @@ EuDebugEventVm EuDebugInterfacePrelim::toEuDebugEventVm(const void *drmType) {
return euVmEvent;
}
std::unique_ptr<EuDebugEventExecQueue> EuDebugInterfacePrelim::toEuDebugEventExecQueue(const void *drmType) {
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> EuDebugInterfacePrelim::toEuDebugEventExecQueue(const void *drmType) {
const prelim_drm_xe_eudebug_event_exec_queue *event = static_cast<const prelim_drm_xe_eudebug_event_exec_queue *>(drmType);
EuDebugEventExecQueue *pExecQueueEvent = static_cast<EuDebugEventExecQueue *>(malloc(sizeof(EuDebugEventExecQueue) + event->width * sizeof(uint64_t)));
@@ -160,10 +164,14 @@ std::unique_ptr<EuDebugEventExecQueue> EuDebugInterfacePrelim::toEuDebugEventExe
pExecQueueEvent->clientHandle = event->client_handle;
memcpy(pExecQueueEvent->lrcHandle, event->lrc_handle, event->width * sizeof(uint64_t));
return std::unique_ptr<EuDebugEventExecQueue>(pExecQueueEvent);
auto deleter = [](EuDebugEventExecQueue *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)>(pExecQueueEvent, deleter);
}
std::unique_ptr<EuDebugEventExecQueuePlacements> EuDebugInterfacePrelim::toEuDebugEventExecQueuePlacements(const void *drmType) {
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> EuDebugInterfacePrelim::toEuDebugEventExecQueuePlacements(const void *drmType) {
const prelim_drm_xe_eudebug_event_exec_queue_placements *event = static_cast<const prelim_drm_xe_eudebug_event_exec_queue_placements *>(drmType);
EuDebugEventExecQueuePlacements *euExecQueuePlacementsEvent = static_cast<EuDebugEventExecQueuePlacements *>(malloc(sizeof(EuDebugEventExecQueuePlacements) + event->num_placements * sizeof(uint64_t)));
@@ -180,7 +188,11 @@ std::unique_ptr<EuDebugEventExecQueuePlacements> EuDebugInterfacePrelim::toEuDeb
euExecQueuePlacementsEvent->vmHandle = event->vm_handle;
memcpy(euExecQueuePlacementsEvent->instances, event->instances, event->num_placements * sizeof(uint64_t));
return std::unique_ptr<EuDebugEventExecQueuePlacements>(euExecQueuePlacementsEvent);
auto deleter = [](EuDebugEventExecQueuePlacements *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)>(euExecQueuePlacementsEvent, deleter);
}
EuDebugEventMetadata EuDebugInterfacePrelim::toEuDebugEventMetadata(const void *drmType) {
@@ -269,7 +281,7 @@ EuDebugEventVmBindUfence EuDebugInterfacePrelim::toEuDebugEventVmBindUfence(cons
return vmBindUfenceEvent;
}
std::unique_ptr<EuDebugEventPageFault> EuDebugInterfacePrelim::toEuDebugEventPageFault(const void *drmType) {
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> EuDebugInterfacePrelim::toEuDebugEventPageFault(const void *drmType) {
const prelim_drm_xe_eudebug_event_pagefault *event = static_cast<const prelim_drm_xe_eudebug_event_pagefault *>(drmType);
EuDebugEventPageFault *pPageFaultEvent = static_cast<EuDebugEventPageFault *>(malloc(sizeof(EuDebugEventPageFault) + event->bitmask_size * sizeof(uint8_t)));
@@ -287,7 +299,11 @@ std::unique_ptr<EuDebugEventPageFault> EuDebugInterfacePrelim::toEuDebugEventPag
pPageFaultEvent->lrcHandle = event->lrc_handle;
pPageFaultEvent->pagefaultAddress = event->pagefault_address;
return std::unique_ptr<EuDebugEventPageFault>(pPageFaultEvent);
auto deleter = [](EuDebugEventPageFault *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)>(pPageFaultEvent, deleter);
}
EuDebugEuControl EuDebugInterfacePrelim::toEuDebugEuControl(const void *drmType) {

View File

@@ -15,17 +15,17 @@ class EuDebugInterfacePrelim : public EuDebugInterface {
bool isExecQueuePageFaultEnableSupported() override;
uint32_t getAdditionalParamValue(EuDebugParam param) const;
std::unique_ptr<EuDebugEventEuAttention> toEuDebugEventEuAttention(const void *drmType) override;
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> toEuDebugEventEuAttention(const void *drmType) override;
EuDebugEventClient toEuDebugEventClient(const void *drmType) override;
EuDebugEventVm toEuDebugEventVm(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements> toEuDebugEventExecQueuePlacements(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> toEuDebugEventExecQueuePlacements(const void *drmType) override;
EuDebugEventMetadata toEuDebugEventMetadata(const void *drmType) override;
EuDebugEventVmBind toEuDebugEventVmBind(const void *drmType) override;
EuDebugEventVmBindOp toEuDebugEventVmBindOp(const void *drmType) override;
EuDebugEventVmBindOpMetadata toEuDebugEventVmBindOpMetadata(const void *drmType) override;
EuDebugEventVmBindUfence toEuDebugEventVmBindUfence(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault> toEuDebugEventPageFault(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> toEuDebugEventPageFault(const void *drmType) override;
EuDebugEuControl toEuDebugEuControl(const void *drmType) override;
EuDebugConnect toEuDebugConnect(const void *drmType) override;

View File

@@ -91,7 +91,7 @@ uint32_t EuDebugInterfaceUpstream::getParamValue(EuDebugParam param) const {
return 0;
}
std::unique_ptr<EuDebugEventEuAttention> EuDebugInterfaceUpstream::toEuDebugEventEuAttention(const void *drmType) {
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> EuDebugInterfaceUpstream::toEuDebugEventEuAttention(const void *drmType) {
const drm_xe_eudebug_event_eu_attention *event = static_cast<const drm_xe_eudebug_event_eu_attention *>(drmType);
EuDebugEventEuAttention *pEuAttentionEvent = static_cast<EuDebugEventEuAttention *>(malloc(sizeof(EuDebugEventEuAttention) + event->bitmask_size * sizeof(uint8_t)));
@@ -108,7 +108,11 @@ std::unique_ptr<EuDebugEventEuAttention> EuDebugInterfaceUpstream::toEuDebugEven
pEuAttentionEvent->execQueueHandle = event->exec_queue_handle;
pEuAttentionEvent->clientHandle = event->client_handle;
return std::unique_ptr<EuDebugEventEuAttention>(pEuAttentionEvent);
auto deleter = [](EuDebugEventEuAttention *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)>(pEuAttentionEvent, deleter);
}
EuDebugEventClient EuDebugInterfaceUpstream::toEuDebugEventClient(const void *drmType) {
@@ -142,7 +146,7 @@ EuDebugEventVm EuDebugInterfaceUpstream::toEuDebugEventVm(const void *drmType) {
return euVmEvent;
}
std::unique_ptr<EuDebugEventExecQueue> EuDebugInterfaceUpstream::toEuDebugEventExecQueue(const void *drmType) {
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> EuDebugInterfaceUpstream::toEuDebugEventExecQueue(const void *drmType) {
const drm_xe_eudebug_event_exec_queue *event = static_cast<const drm_xe_eudebug_event_exec_queue *>(drmType);
EuDebugEventExecQueue *pExecQueueEvent = static_cast<EuDebugEventExecQueue *>(malloc(sizeof(EuDebugEventExecQueue) + event->width * sizeof(uint64_t)));
@@ -159,11 +163,20 @@ std::unique_ptr<EuDebugEventExecQueue> EuDebugInterfaceUpstream::toEuDebugEventE
pExecQueueEvent->clientHandle = event->client_handle;
memcpy(pExecQueueEvent->lrcHandle, event->lrc_handle, event->width * sizeof(uint64_t));
return std::unique_ptr<EuDebugEventExecQueue>(pExecQueueEvent);
auto deleter = [](EuDebugEventExecQueue *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)>(pExecQueueEvent, deleter);
}
std::unique_ptr<EuDebugEventExecQueuePlacements> EuDebugInterfaceUpstream::toEuDebugEventExecQueuePlacements(const void *drmType) {
return {};
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> EuDebugInterfaceUpstream::toEuDebugEventExecQueuePlacements(const void *drmType) {
auto pExecQueuePlacementsEvent = nullptr;
auto deleter = [](EuDebugEventExecQueuePlacements *ptr) {
};
return std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)>(pExecQueuePlacementsEvent, deleter);
}
EuDebugEventMetadata EuDebugInterfaceUpstream::toEuDebugEventMetadata(const void *drmType) {
@@ -252,7 +265,7 @@ EuDebugEventVmBindUfence EuDebugInterfaceUpstream::toEuDebugEventVmBindUfence(co
return vmBindUfenceEvent;
}
std::unique_ptr<EuDebugEventPageFault> EuDebugInterfaceUpstream::toEuDebugEventPageFault(const void *drmType) {
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> EuDebugInterfaceUpstream::toEuDebugEventPageFault(const void *drmType) {
const drm_xe_eudebug_event_pagefault *event = static_cast<const drm_xe_eudebug_event_pagefault *>(drmType);
EuDebugEventPageFault *pPageFaultEvent = static_cast<EuDebugEventPageFault *>(malloc(sizeof(EuDebugEventPageFault) + event->bitmask_size * sizeof(uint8_t)));
@@ -270,7 +283,11 @@ std::unique_ptr<EuDebugEventPageFault> EuDebugInterfaceUpstream::toEuDebugEventP
pPageFaultEvent->lrcHandle = event->lrc_handle;
pPageFaultEvent->pagefaultAddress = event->pagefault_address;
return std::unique_ptr<EuDebugEventPageFault>(pPageFaultEvent);
auto deleter = [](EuDebugEventPageFault *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)>(pPageFaultEvent, deleter);
}
EuDebugEuControl EuDebugInterfaceUpstream::toEuDebugEuControl(const void *drmType) {

View File

@@ -15,17 +15,17 @@ class EuDebugInterfaceUpstream : public EuDebugInterface {
uint32_t getParamValue(EuDebugParam param) const override;
std::unique_ptr<EuDebugEventEuAttention> toEuDebugEventEuAttention(const void *drmType) override;
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> toEuDebugEventEuAttention(const void *drmType) override;
EuDebugEventClient toEuDebugEventClient(const void *drmType) override;
EuDebugEventVm toEuDebugEventVm(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements> toEuDebugEventExecQueuePlacements(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> toEuDebugEventExecQueuePlacements(const void *drmType) override;
EuDebugEventMetadata toEuDebugEventMetadata(const void *drmType) override;
EuDebugEventVmBind toEuDebugEventVmBind(const void *drmType) override;
EuDebugEventVmBindOp toEuDebugEventVmBindOp(const void *drmType) override;
EuDebugEventVmBindOpMetadata toEuDebugEventVmBindOpMetadata(const void *drmType) override;
EuDebugEventVmBindUfence toEuDebugEventVmBindUfence(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault> toEuDebugEventPageFault(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> toEuDebugEventPageFault(const void *drmType) override;
EuDebugEuControl toEuDebugEuControl(const void *drmType) override;
EuDebugConnect toEuDebugConnect(const void *drmType) override;

View File

@@ -65,7 +65,7 @@ uint32_t MockEuDebugInterface::getParamValue(EuDebugParam param) const {
return 0;
}
std::unique_ptr<EuDebugEventEuAttention> MockEuDebugInterface::toEuDebugEventEuAttention(const void *drmType) {
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> MockEuDebugInterface::toEuDebugEventEuAttention(const void *drmType) {
const drm_xe_eudebug_event_eu_attention *event = static_cast<const drm_xe_eudebug_event_eu_attention *>(drmType);
EuDebugEventEuAttention *pEuAttentionEvent = static_cast<EuDebugEventEuAttention *>(malloc(sizeof(EuDebugEventEuAttention) + event->bitmask_size * sizeof(uint8_t)));
@@ -83,7 +83,9 @@ std::unique_ptr<EuDebugEventEuAttention> MockEuDebugInterface::toEuDebugEventEuA
pEuAttentionEvent->execQueueHandle = event->exec_queue_handle;
pEuAttentionEvent->clientHandle = event->client_handle;
return std::unique_ptr<EuDebugEventEuAttention>(pEuAttentionEvent);
auto deleter = [](EuDebugEventEuAttention *ptr) { free(ptr); };
return std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)>(pEuAttentionEvent, deleter);
}
EuDebugEventClient MockEuDebugInterface::toEuDebugEventClient(const void *drmType) {
return *static_cast<const EuDebugEventClient *>(drmType);
@@ -91,7 +93,7 @@ EuDebugEventClient MockEuDebugInterface::toEuDebugEventClient(const void *drmTyp
EuDebugEventVm MockEuDebugInterface::toEuDebugEventVm(const void *drmType) {
return *static_cast<const EuDebugEventVm *>(drmType);
}
std::unique_ptr<EuDebugEventExecQueue> MockEuDebugInterface::toEuDebugEventExecQueue(const void *drmType) {
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> MockEuDebugInterface::toEuDebugEventExecQueue(const void *drmType) {
const drm_xe_eudebug_event_exec_queue *event = static_cast<const drm_xe_eudebug_event_exec_queue *>(drmType);
EuDebugEventExecQueue *pExecQueueEvent = static_cast<EuDebugEventExecQueue *>(malloc(sizeof(EuDebugEventExecQueue) + event->width * sizeof(uint64_t)));
@@ -108,9 +110,11 @@ std::unique_ptr<EuDebugEventExecQueue> MockEuDebugInterface::toEuDebugEventExecQ
pExecQueueEvent->clientHandle = event->client_handle;
memcpy(pExecQueueEvent->lrcHandle, event->lrc_handle, event->width * sizeof(uint64_t));
return std::unique_ptr<EuDebugEventExecQueue>(pExecQueueEvent);
auto deleter = [](EuDebugEventExecQueue *ptr) { free(ptr); };
return std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)>(pExecQueueEvent, deleter);
}
std::unique_ptr<EuDebugEventExecQueuePlacements> MockEuDebugInterface::toEuDebugEventExecQueuePlacements(const void *drmType) {
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> MockEuDebugInterface::toEuDebugEventExecQueuePlacements(const void *drmType) {
const prelim_drm_xe_eudebug_event_exec_queue_placements *event = static_cast<const prelim_drm_xe_eudebug_event_exec_queue_placements *>(drmType);
EuDebugEventExecQueuePlacements *euExecQueuePlacementsEvent = static_cast<EuDebugEventExecQueuePlacements *>(malloc(sizeof(EuDebugEventExecQueuePlacements) + event->num_placements * sizeof(uint64_t)));
@@ -127,7 +131,11 @@ std::unique_ptr<EuDebugEventExecQueuePlacements> MockEuDebugInterface::toEuDebug
euExecQueuePlacementsEvent->vmHandle = event->vm_handle;
memcpy(euExecQueuePlacementsEvent->instances, event->instances, event->num_placements * sizeof(uint64_t));
return std::unique_ptr<EuDebugEventExecQueuePlacements>(euExecQueuePlacementsEvent);
auto deleter = [](EuDebugEventExecQueuePlacements *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)>(euExecQueuePlacementsEvent, deleter);
}
EuDebugEventMetadata MockEuDebugInterface::toEuDebugEventMetadata(const void *drmType) {
return *static_cast<const EuDebugEventMetadata *>(drmType);
@@ -144,7 +152,7 @@ EuDebugEventVmBindOpMetadata MockEuDebugInterface::toEuDebugEventVmBindOpMetadat
EuDebugEventVmBindUfence MockEuDebugInterface::toEuDebugEventVmBindUfence(const void *drmType) {
return *static_cast<const EuDebugEventVmBindUfence *>(drmType);
}
std::unique_ptr<EuDebugEventPageFault> MockEuDebugInterface::toEuDebugEventPageFault(const void *drmType) {
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> MockEuDebugInterface::toEuDebugEventPageFault(const void *drmType) {
const drm_xe_eudebug_event_pagefault *event = static_cast<const drm_xe_eudebug_event_pagefault *>(drmType);
EuDebugEventPageFault *pPageFaultEvent = static_cast<EuDebugEventPageFault *>(malloc(sizeof(EuDebugEventPageFault) + event->bitmask_size * sizeof(uint8_t)));
@@ -162,7 +170,11 @@ std::unique_ptr<EuDebugEventPageFault> MockEuDebugInterface::toEuDebugEventPageF
pPageFaultEvent->lrcHandle = event->lrc_handle;
pPageFaultEvent->pagefaultAddress = event->pagefault_address;
return std::unique_ptr<EuDebugEventPageFault>(pPageFaultEvent);
auto deleter = [](EuDebugEventPageFault *ptr) {
free(ptr);
};
return std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)>(pPageFaultEvent, deleter);
}
EuDebugEuControl MockEuDebugInterface::toEuDebugEuControl(const void *drmType) {

View File

@@ -18,17 +18,17 @@ class MockEuDebugInterface : public EuDebugInterface {
bool isExecQueuePageFaultEnableSupported() override { return pageFaultEnableSupported; };
uint32_t getParamValue(EuDebugParam param) const override;
std::unique_ptr<EuDebugEventEuAttention> toEuDebugEventEuAttention(const void *drmType) override;
std::unique_ptr<EuDebugEventEuAttention, void (*)(EuDebugEventEuAttention *)> toEuDebugEventEuAttention(const void *drmType) override;
EuDebugEventClient toEuDebugEventClient(const void *drmType) override;
EuDebugEventVm toEuDebugEventVm(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements> toEuDebugEventExecQueuePlacements(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueue, void (*)(EuDebugEventExecQueue *)> toEuDebugEventExecQueue(const void *drmType) override;
std::unique_ptr<EuDebugEventExecQueuePlacements, void (*)(EuDebugEventExecQueuePlacements *)> toEuDebugEventExecQueuePlacements(const void *drmType) override;
EuDebugEventMetadata toEuDebugEventMetadata(const void *drmType) override;
EuDebugEventVmBind toEuDebugEventVmBind(const void *drmType) override;
EuDebugEventVmBindOp toEuDebugEventVmBindOp(const void *drmType) override;
EuDebugEventVmBindOpMetadata toEuDebugEventVmBindOpMetadata(const void *drmType) override;
EuDebugEventVmBindUfence toEuDebugEventVmBindUfence(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault> toEuDebugEventPageFault(const void *drmType) override;
std::unique_ptr<EuDebugEventPageFault, void (*)(EuDebugEventPageFault *)> toEuDebugEventPageFault(const void *drmType) override;
EuDebugEuControl toEuDebugEuControl(const void *drmType) override;
EuDebugConnect toEuDebugConnect(const void *drmType) override;

View File

@@ -128,6 +128,17 @@ TEST(EuDebugInterfaceUpstreamTest, givenValidDrmExecQueueWhenConvertingToInterfa
free(drmExecQueue);
}
TEST(EuDebugInterfaceUpstreamTest, givenExecQueuePlacementsCalledWhenConvertingToInterfaceTypeThenPointerIsEmpty) {
EuDebugInterfaceUpstream euDebugInterface{};
// use an empy drm_xe_eudebug_event_exec_queue since this function is not supported
// for EuDebugInterfaceUpstream (but definition still required)
drm_xe_eudebug_event_exec_queue drmExecQueuePlacements = {};
auto event = euDebugInterface.toEuDebugEventExecQueuePlacements(&drmExecQueuePlacements);
EXPECT_EQ(nullptr, event.get());
}
TEST(EuDebugInterfaceUpstreamTest, givenValidDrmMetadataWhenConvertingToInterfaceTypeThenFieldsAreCorrect) {
EuDebugInterfaceUpstream euDebugInterface{};