Enhance logs in EuThread
- do not overwrite memoryHandle in resumeThread() when thread is not stopped - add SIP Commands Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
parent
d9f47d6d7d
commit
4d6a2d0a57
|
@ -71,12 +71,13 @@ class EuThread {
|
|||
return false;
|
||||
}
|
||||
state = State::Stopped;
|
||||
PRINT_DEBUGGER_THREAD_LOG("Stopped thread: %s", toString().c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool verifyStopped(uint8_t newCounter) {
|
||||
|
||||
PRINT_DEBUGGER_INFO_LOG("EuThread::verifyStopped() Thread: %s newCounter == %d oldCounter == %d", toString().c_str(), (int32_t)newCounter, (int32_t)systemRoutineCounter);
|
||||
PRINT_DEBUGGER_THREAD_LOG("EuThread::verifyStopped() Thread: %s newCounter == %d oldCounter == %d", toString().c_str(), (int32_t)newCounter, (int32_t)systemRoutineCounter);
|
||||
|
||||
if (newCounter == systemRoutineCounter) {
|
||||
if (newCounter % 2 != 0) {
|
||||
|
@ -115,11 +116,13 @@ class EuThread {
|
|||
}
|
||||
|
||||
bool resumeThread() {
|
||||
memoryHandle = invalidHandle;
|
||||
if (state != State::Stopped) {
|
||||
PRINT_DEBUGGER_THREAD_LOG("Resuming already RUNNING thread: %s", toString().c_str());
|
||||
return false;
|
||||
}
|
||||
PRINT_DEBUGGER_THREAD_LOG("Resumed thread: %s", toString().c_str());
|
||||
state = State::Running;
|
||||
memoryHandle = invalidHandle;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -153,7 +156,7 @@ class EuThread {
|
|||
|
||||
protected:
|
||||
ThreadId threadId;
|
||||
State state = State::Unavailable;
|
||||
std::atomic<State> state = State::Unavailable;
|
||||
uint8_t systemRoutineCounter = 0;
|
||||
std::atomic<uint64_t> memoryHandle = invalidHandle;
|
||||
};
|
||||
|
|
|
@ -47,6 +47,13 @@ class SipKernel {
|
|||
static const size_t maxDbgSurfaceSize;
|
||||
static SipClassType classType;
|
||||
|
||||
enum class COMMAND : uint32_t {
|
||||
RESUME,
|
||||
READY,
|
||||
SLM_READ,
|
||||
SLM_WRITE
|
||||
};
|
||||
|
||||
protected:
|
||||
static bool initSipKernelImpl(SipKernelType type, Device &device);
|
||||
static const SipKernel &getSipKernelImpl(Device &device);
|
||||
|
|
|
@ -27,7 +27,7 @@ void clearUseFlags() {
|
|||
called = false;
|
||||
}
|
||||
|
||||
std::vector<char> createStateSaveAreaHeader() {
|
||||
std::vector<char> createStateSaveAreaHeader(uint32_t version) {
|
||||
SIP::StateSaveAreaHeader stateSaveAreaHeader = {
|
||||
{
|
||||
// versionHeader
|
||||
|
@ -71,7 +71,56 @@ std::vector<char> createStateSaveAreaHeader() {
|
|||
},
|
||||
};
|
||||
|
||||
char *begin = reinterpret_cast<char *>(&stateSaveAreaHeader);
|
||||
SIP::StateSaveAreaHeader stateSaveAreaHeader2 = {
|
||||
{
|
||||
// versionHeader
|
||||
"tssarea", // magic
|
||||
0, // reserved1
|
||||
{ // version
|
||||
2, // major
|
||||
0, // minor
|
||||
0}, // patch
|
||||
40, // size
|
||||
{0, 0, 0}, // reserved2
|
||||
},
|
||||
{
|
||||
// regHeader
|
||||
1, // num_slices
|
||||
1, // num_subslices_per_slice
|
||||
8, // num_eus_per_subslice
|
||||
7, // num_threads_per_eu
|
||||
0, // state_area_offset
|
||||
6144, // state_save_size
|
||||
0, // slm_area_offset
|
||||
0, // slm_bank_size
|
||||
0, // slm_bank_valid
|
||||
4740, // sr_magic_offset
|
||||
{0, 128, 256, 32}, // grf
|
||||
{4096, 1, 256, 32}, // addr
|
||||
{4128, 2, 32, 4}, // flag
|
||||
{4156, 1, 32, 4}, // emask
|
||||
{4160, 2, 128, 16}, // sr
|
||||
{4192, 1, 128, 16}, // cr
|
||||
{4256, 1, 96, 12}, // notification
|
||||
{4288, 1, 128, 16}, // tdr
|
||||
{4320, 10, 256, 32}, // acc
|
||||
{0, 0, 0, 0}, // mme
|
||||
{4672, 1, 32, 4}, // ce
|
||||
{4704, 1, 128, 16}, // sp
|
||||
{4768, 1, 128 * 8, 128}, // cmd
|
||||
{4640, 1, 128, 16}, // tm
|
||||
{0, 0, 0, 0}, // fc
|
||||
{4736, 1, 32, 4}, // dbg
|
||||
},
|
||||
};
|
||||
|
||||
char *begin = nullptr;
|
||||
|
||||
if (version == 1) {
|
||||
begin = reinterpret_cast<char *>(&stateSaveAreaHeader);
|
||||
} else if (version == 2) {
|
||||
begin = reinterpret_cast<char *>(&stateSaveAreaHeader2);
|
||||
}
|
||||
return std::vector<char>(begin, begin + sizeof(stateSaveAreaHeader));
|
||||
}
|
||||
} // namespace MockSipData
|
||||
|
|
|
@ -46,6 +46,6 @@ extern bool returned;
|
|||
extern bool useMockSip;
|
||||
|
||||
void clearUseFlags();
|
||||
std::vector<char> createStateSaveAreaHeader();
|
||||
std::vector<char> createStateSaveAreaHeader(uint32_t version);
|
||||
} // namespace MockSipData
|
||||
} // namespace NEO
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
#include "test.h"
|
||||
|
||||
#include "common/StateSaveAreaHeader.h"
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
struct RawBinarySipFixture : public DeviceFixture {
|
||||
|
@ -348,8 +350,11 @@ TEST_F(StateSaveAreaSipTest, givenCorruptedStateSaveAreaHeaderWhenGetStateSaveAr
|
|||
|
||||
TEST_F(StateSaveAreaSipTest, givenCorrectStateSaveAreaHeaderWhenGetStateSaveAreaSizeCalledThenCorrectDbgSurfaceSizeIsReturned) {
|
||||
MockSipData::useMockSip = true;
|
||||
MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader();
|
||||
MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(1);
|
||||
EXPECT_EQ(0x3F1000u, SipKernel::getSipKernel(*pDevice).getStateSaveAreaSize());
|
||||
|
||||
MockSipData::mockSipKernel->mockStateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2);
|
||||
EXPECT_EQ(0x1800u * 1 * 8 * 7 + alignUp(sizeof(SIP::StateSaveAreaHeader), MemoryConstants::pageSize), SipKernel::getSipKernel(*pDevice).getStateSaveAreaSize());
|
||||
}
|
||||
TEST(DebugBindlessSip, givenActiveDebuggerAndUseBindlessDebugSipWhenGettingSipTypeThenDebugBindlessTypeIsReturned) {
|
||||
DebugManagerStateRestore restorer;
|
||||
|
|
Loading…
Reference in New Issue