fix: check BANNED in reset_stats before aborting when debugger is enabled
Related-to: GSD-10788 Signed-off-by: Brandon Yates <brandon.yates@intel.com>
This commit is contained in:
parent
62739986bf
commit
ee75c59da5
|
@ -265,8 +265,11 @@ bool Drm::checkResetStatus(OsContext &osContext) {
|
||||||
const auto retVal{ioctlHelper->getResetStats(resetStats, &status, &fault)};
|
const auto retVal{ioctlHelper->getResetStats(resetStats, &status, &fault)};
|
||||||
UNRECOVERABLE_IF(retVal != 0);
|
UNRECOVERABLE_IF(retVal != 0);
|
||||||
auto debuggingEnabled = rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled();
|
auto debuggingEnabled = rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled();
|
||||||
if (!debuggingEnabled && checkToDisableScratchPage() && ioctlHelper->validPageFault(fault.flags)) {
|
if (checkToDisableScratchPage() && ioctlHelper->validPageFault(fault.flags)) {
|
||||||
bool banned = ((status & ioctlHelper->getStatusForResetStats(true)) != 0);
|
bool banned = ((status & ioctlHelper->getStatusForResetStats(true)) != 0);
|
||||||
|
if (!banned && debuggingEnabled) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
IoFunctions::fprintf(stderr, "Segmentation fault from GPU at 0x%llx, ctx_id: %u (%s) type: %d (%s), level: %d (%s), access: %d (%s), banned: %d, aborting.\n",
|
IoFunctions::fprintf(stderr, "Segmentation fault from GPU at 0x%llx, ctx_id: %u (%s) type: %d (%s), level: %d (%s), access: %d (%s), banned: %d, aborting.\n",
|
||||||
fault.addr,
|
fault.addr,
|
||||||
resetStats.contextId,
|
resetStats.contextId,
|
||||||
|
|
|
@ -1449,7 +1449,7 @@ class MockIoctlHelperResetStats : public MockIoctlHelper {
|
||||||
ResetStatsFault resetStatsFaultReturnValue{};
|
ResetStatsFault resetStatsFaultReturnValue{};
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST(DrmTest, GivenResetStatsWithValidFaultAndDebuggingEnabledWhenIsGpuHangIsCalledThenProcessNotTerminated) {
|
TEST(DrmTest, GivenResetStatsWithValidFaultAndContextNotBannedAndDebuggingEnabledWhenIsGpuHangIsCalledThenProcessNotTerminated) {
|
||||||
DebugManagerStateRestore restore;
|
DebugManagerStateRestore restore;
|
||||||
debugManager.flags.DisableScratchPages.set(true);
|
debugManager.flags.DisableScratchPages.set(true);
|
||||||
|
|
||||||
|
@ -1475,7 +1475,7 @@ TEST(DrmTest, GivenResetStatsWithValidFaultAndDebuggingEnabledWhenIsGpuHangIsCal
|
||||||
resetStatsFaultExpected.type = 2;
|
resetStatsFaultExpected.type = 2;
|
||||||
resetStatsFaultExpected.level = 3;
|
resetStatsFaultExpected.level = 3;
|
||||||
|
|
||||||
ioctlHelper->statusReturnValue = 2u;
|
ioctlHelper->statusReturnValue = 0u;
|
||||||
ioctlHelper->resetStatsFaultReturnValue = resetStatsFaultExpected;
|
ioctlHelper->resetStatsFaultReturnValue = resetStatsFaultExpected;
|
||||||
|
|
||||||
drm.ioctlHelper = std::move(ioctlHelper);
|
drm.ioctlHelper = std::move(ioctlHelper);
|
||||||
|
|
Loading…
Reference in New Issue