From efbdaaaa6559d51f1848e9e7963d5f98f288c920 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 2 Jan 2020 20:50:43 +0100 Subject: [PATCH] ProfileViewer: Interpret addresses >= 0xc0000000 as kernel frames --- DevTools/ProfileViewer/Profile.cpp | 3 ++- DevTools/ProfileViewer/ProfileModel.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DevTools/ProfileViewer/Profile.cpp b/DevTools/ProfileViewer/Profile.cpp index e1fc50ae819e9a..8881a43eeeeef8 100644 --- a/DevTools/ProfileViewer/Profile.cpp +++ b/DevTools/ProfileViewer/Profile.cpp @@ -35,7 +35,8 @@ Profile::Profile(const JsonArray& json) if (frames_array.size() < 2) continue; - sample.in_kernel = frames_array.at(1).as_object().get("address").to_number() < (8 * MB); + u32 innermost_frame_address = frames_array.at(1).as_object().get("address").to_number(); + sample.in_kernel = innermost_frame_address >= 0xc0000000 || innermost_frame_address < (8 * MB); for (int i = frames_array.size() - 1; i >= 1; --i) { auto& frame_value = frames_array.at(i); diff --git a/DevTools/ProfileViewer/ProfileModel.cpp b/DevTools/ProfileViewer/ProfileModel.cpp index 427023cdb43518..02d5dde0d46b13 100644 --- a/DevTools/ProfileViewer/ProfileModel.cpp +++ b/DevTools/ProfileViewer/ProfileModel.cpp @@ -92,7 +92,7 @@ GVariant ProfileModel::data(const GModelIndex& index, Role role) const auto* node = static_cast(index.internal_data()); if (role == Role::Icon) { if (index.column() == Column::StackFrame) { - if (node->address() < (8 * MB)) + if (node->address() < (8 * MB) || node->address() >= 0xc0000000) return m_kernel_frame_icon; return m_user_frame_icon; }