Skip to content
Snippets Groups Projects
Commit 7bb6474c authored by lnx build's avatar lnx build Committed by Gerrit - the friendly Code Review server
Browse files

Merge "lrdp-v2: mm: Add page owner stackdepot support" into opensource-tools.lnx.1.0

parents 95ba76bb b8e5d3f3
No related branches found
No related tags found
No related merge requests found
...@@ -43,8 +43,14 @@ class PageTracking(RamParser): ...@@ -43,8 +43,14 @@ class PageTracking(RamParser):
'struct mem_section', 'page_ext') 'struct mem_section', 'page_ext')
trace_offset = self.ramdump.field_offset( trace_offset = self.ramdump.field_offset(
'struct page_ext', 'trace') 'struct page_ext', 'trace')
trace_entries_offset = self.ramdump.field_offset( if self.ramdump.is_config_defined('CONFIG_STACKDEPOT'):
'struct page_ext', 'trace_entries') trace_entries_offset = self.ramdump.field_offset(
'struct stack_record', 'entries')
else:
trace_entries_offset = self.ramdump.field_offset(
'struct page_ext', 'trace_entries')
nr_entries_offset = self.ramdump.field_offset( nr_entries_offset = self.ramdump.field_offset(
'struct page_ext', 'nr_entries') 'struct page_ext', 'nr_entries')
mem_section_size = self.ramdump.sizeof("struct mem_section") mem_section_size = self.ramdump.sizeof("struct mem_section")
...@@ -79,11 +85,32 @@ class PageTracking(RamParser): ...@@ -79,11 +85,32 @@ class PageTracking(RamParser):
page_ext = self.ramdump.read_word( page_ext = self.ramdump.read_word(
mem_section_0_offset + page_ext_offset) mem_section_0_offset + page_ext_offset)
temp_page_ext = page_ext + (pfn * page_ext_size) temp_page_ext = page_ext + (pfn * page_ext_size)
nr_trace_entries = self.ramdump.read_int(
temp_page_ext + nr_entries_offset)
struct_holding_trace_entries = temp_page_ext
order = self.ramdump.read_structure_field( order = self.ramdump.read_structure_field(
temp_page_ext, 'struct page_ext', 'order') temp_page_ext, 'struct page_ext', 'order')
if not self.ramdump.is_config_defined('CONFIG_STACKDEPOT'):
nr_trace_entries = self.ramdump.read_int(
temp_page_ext + nr_entries_offset)
struct_holding_trace_entries = temp_page_ext
else:
handle = self.ramdump.read_structure_field(
temp_page_ext, 'struct page_ext', 'handle')
slabindex = handle & 0x1fffff
handle_offset = (handle >> 0x15) & 0x3ff
handle_offset = handle_offset << 4
stack_slabs = self.ramdump.address_of('stack_slabs')
stack_slabs_size = self.ramdump.sizeof('void *')
slab = self.ramdump.read_word(stack_slabs + ( stack_slabs_size * slabindex))
stack = slab + handle_offset
nr_trace_entries = self.ramdump.read_structure_field(
stack, 'struct stack_record', 'size')
struct_holding_trace_entries = stack
if nr_trace_entries <= 0 or nr_trace_entries > 16: if nr_trace_entries <= 0 or nr_trace_entries > 16:
continue continue
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment