mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-31 12:11:31 +08:00
fix: Fix mixed deletion errors
Resolves: NEO-16425 Signed-off-by: Jemale Lockett <jemale.lockett@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f126203df3
commit
0de2b26c7c
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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{};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user