mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 22:12:59 +08:00
feature: Add support for V3 state save header
Related-to: NEO-8396 Signed-off-by: Brandon Yates <brandon.yates@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ef37b140de
commit
ab92499b56
@@ -10,6 +10,7 @@
|
||||
#include "shared/source/built_ins/built_ins.h"
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/debugger/debugger.h"
|
||||
#include "shared/source/debugger/debugger_l0.h"
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/execution_environment/execution_environment.h"
|
||||
#include "shared/source/execution_environment/root_device_environment.h"
|
||||
@@ -93,16 +94,26 @@ size_t SipKernel::getStateSaveAreaSize(Device *device) const {
|
||||
return maxDbgSurfaceSize;
|
||||
}
|
||||
|
||||
auto hdr = reinterpret_cast<const SIP::StateSaveAreaHeader *>(stateSaveAreaHeader.data());
|
||||
DEBUG_BREAK_IF(hdr->versionHeader.size * 8 != sizeof(SIP::StateSaveAreaHeader));
|
||||
auto hdr = reinterpret_cast<const NEO::StateSaveAreaHeader *>(stateSaveAreaHeader.data());
|
||||
|
||||
auto numSlices = NEO::GfxCoreHelper::getHighestEnabledSlice(hwInfo);
|
||||
auto stateSaveAreaSize = numSlices *
|
||||
hdr->regHeader.num_subslices_per_slice *
|
||||
hdr->regHeader.num_eus_per_subslice *
|
||||
hdr->regHeader.num_threads_per_eu *
|
||||
hdr->regHeader.state_save_size +
|
||||
hdr->versionHeader.size * 8 + hdr->regHeader.state_area_offset;
|
||||
size_t stateSaveAreaSize = 0;
|
||||
if (hdr->versionHeader.version.major >= 3) {
|
||||
stateSaveAreaSize = numSlices *
|
||||
hdr->regHeaderV3.num_subslices_per_slice *
|
||||
hdr->regHeaderV3.num_eus_per_subslice *
|
||||
hdr->regHeaderV3.num_threads_per_eu *
|
||||
hdr->regHeaderV3.state_save_size +
|
||||
hdr->versionHeader.size * 8 + hdr->regHeaderV3.state_area_offset;
|
||||
|
||||
} else {
|
||||
stateSaveAreaSize = numSlices *
|
||||
hdr->regHeader.num_subslices_per_slice *
|
||||
hdr->regHeader.num_eus_per_subslice *
|
||||
hdr->regHeader.num_threads_per_eu *
|
||||
hdr->regHeader.state_save_size +
|
||||
hdr->versionHeader.size * 8 + hdr->regHeader.state_area_offset;
|
||||
}
|
||||
return alignUp(stateSaveAreaSize, MemoryConstants::pageSize);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "shared/source/helpers/non_copyable_or_moveable.h"
|
||||
#include "shared/source/memory_manager/memory_manager.h"
|
||||
|
||||
#include "common/StateSaveAreaHeader.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <type_traits>
|
||||
@@ -21,6 +23,17 @@ class GraphicsAllocation;
|
||||
class LinearStream;
|
||||
class OSInterface;
|
||||
|
||||
// NOLINTBEGIN
|
||||
struct StateSaveAreaHeader {
|
||||
struct SIP::StateSaveArea versionHeader;
|
||||
union {
|
||||
struct SIP::intelgt_state_save_area regHeader;
|
||||
struct SIP::intelgt_state_save_area_V3 regHeaderV3;
|
||||
};
|
||||
};
|
||||
|
||||
// NOLINTEND
|
||||
|
||||
#pragma pack(1)
|
||||
struct SbaTrackedAddresses {
|
||||
char magic[8] = "sbaarea";
|
||||
@@ -55,19 +68,6 @@ struct DebugAreaHeader {
|
||||
};
|
||||
static_assert(sizeof(DebugAreaHeader) == 32u * sizeof(uint8_t));
|
||||
|
||||
struct alignas(4) DebuggerVersion {
|
||||
uint8_t major;
|
||||
uint8_t minor;
|
||||
uint16_t patch;
|
||||
};
|
||||
struct alignas(8) StateSaveAreaHeader {
|
||||
char magic[8] = "tssarea";
|
||||
uint64_t reserved1;
|
||||
struct DebuggerVersion version;
|
||||
uint8_t size;
|
||||
uint8_t reserved2[3];
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
class DebuggerL0 : public NEO::Debugger, NEO::NonCopyableOrMovableClass {
|
||||
|
||||
Reference in New Issue
Block a user