Skip to content
Snippets Groups Projects
Commit 527640d8 authored by rhythmp's avatar rhythmp
Browse files

ldrpv2: cachedumplib: Add support for sdm845.

Add decoding information for LLC (System) cache.
Included LLC parse function.

Change-Id: Idd21a68eb6b8bf0cc63d79b640dc167fa78106a4
parent e679730a
No related branches found
No related tags found
No related merge requests found
...@@ -567,6 +567,45 @@ class L1_ICache_KRYO3XX_GOLD(CacheDumpType_v1): ...@@ -567,6 +567,45 @@ class L1_ICache_KRYO3XX_GOLD(CacheDumpType_v1):
output.append(ns) output.append(ns)
output.append(addr) output.append(addr)
class LLC_SYSTEM_CACHE_KRYO3XX(CacheDumpType_v1):
"""Refer to documentation:LLC_HDD"""
def __init__(self):
super(LLC_SYSTEM_CACHE_KRYO3XX, self).__init__()
self.tableformat.addColumn('G0 Valid')
self.tableformat.addColumn('G0 Dirty')
self.tableformat.addColumn('G1 Valid')
self.tableformat.addColumn('G1 Dirty')
self.tableformat.addColumn('SCID')
self.tableformat.addColumn('ECC')
self.tableformat.addColumn('Tag address')
self.unsupported_header_offset = 0
self.TagSize = 2
self.LineSize = 16
self.NumSets = 0x400
self.NumWays = 12
def parse_tag_fn(self, output, data, nset, nway):
if self.TagSize != 2:
raise Exception('cache tag size mismatch')
G0_valid = data[0] & 0x1
G1_valid = (data[0] >> 2) & 0x1
G0_dirty = (data[0] >> 3) & 0x1
G1_dirty = (data[0] >> 4) & 0x1
SCID = (data[0] >> 7) & 0x1f
ECC_bits = (data[0] >> 14) & 0x7f
DONE_bit = (data[1] >> 28) & 0x1
addr = data[1] & 0x3fffffff
output.append(G0_valid)
output.append(G0_dirty)
output.append(G1_valid)
output.append(G1_dirty)
output.append(SCID)
output.append(ECC_bits)
output.append(addr)
L1_DCache_KRYO2XX_SILVER = L1_DCache_A53 L1_DCache_KRYO2XX_SILVER = L1_DCache_A53
L1_ICache_KYRO2XX_SILVER = L1_ICache_A53 L1_ICache_KYRO2XX_SILVER = L1_ICache_A53
...@@ -590,6 +629,12 @@ lookuptable[("sdm845", 0x65, 0x14)] = L1_ICache_KRYO3XX_GOLD() ...@@ -590,6 +629,12 @@ lookuptable[("sdm845", 0x65, 0x14)] = L1_ICache_KRYO3XX_GOLD()
lookuptable[("sdm845", 0x66, 0x14)] = L1_ICache_KRYO3XX_GOLD() lookuptable[("sdm845", 0x66, 0x14)] = L1_ICache_KRYO3XX_GOLD()
lookuptable[("sdm845", 0x67, 0x14)] = L1_ICache_KRYO3XX_GOLD() lookuptable[("sdm845", 0x67, 0x14)] = L1_ICache_KRYO3XX_GOLD()
lookuptable[("sdm845", 0x121, 0x14)] = LLC_SYSTEM_CACHE_KRYO3XX()
lookuptable[("sdm845", 0x122, 0x14)] = LLC_SYSTEM_CACHE_KRYO3XX()
lookuptable[("sdm845", 0x123, 0x14)] = LLC_SYSTEM_CACHE_KRYO3XX()
lookuptable[("sdm845", 0x124, 0x14)] = LLC_SYSTEM_CACHE_KRYO3XX()
# "msmcobalt" # "msmcobalt"
lookuptable[("cobalt", 0x80, 0x14)] = L1_DCache_KRYO2XX_SILVER() lookuptable[("cobalt", 0x80, 0x14)] = L1_DCache_KRYO2XX_SILVER()
lookuptable[("cobalt", 0x81, 0x14)] = L1_DCache_KRYO2XX_SILVER() lookuptable[("cobalt", 0x81, 0x14)] = L1_DCache_KRYO2XX_SILVER()
......
...@@ -52,6 +52,7 @@ class client(object): ...@@ -52,6 +52,7 @@ class client(object):
MSM_DUMP_DATA_LOG_BUF = 0x110 MSM_DUMP_DATA_LOG_BUF = 0x110
MSM_DUMP_DATA_LOG_BUF_FIRST_IDX = 0x111 MSM_DUMP_DATA_LOG_BUF_FIRST_IDX = 0x111
MSM_DUMP_DATA_L2_TLB = 0x120 MSM_DUMP_DATA_L2_TLB = 0x120
MSM_DUMP_DATA_LLC_CACHE = 0x121
MSM_DUMP_DATA_SCANDUMP = 0xEB MSM_DUMP_DATA_SCANDUMP = 0xEB
MSM_DUMP_DATA_MAX = MAX_NUM_ENTRIES MSM_DUMP_DATA_MAX = MAX_NUM_ENTRIES
...@@ -74,6 +75,7 @@ client_types = [ ...@@ -74,6 +75,7 @@ client_types = [
('MSM_DUMP_DATA_TMC_ETF', 'parse_qdss_common'), ('MSM_DUMP_DATA_TMC_ETF', 'parse_qdss_common'),
('MSM_DUMP_DATA_TMC_REG', 'parse_qdss_common'), ('MSM_DUMP_DATA_TMC_REG', 'parse_qdss_common'),
('MSM_DUMP_DATA_L2_TLB', 'parse_l2_tlb'), ('MSM_DUMP_DATA_L2_TLB', 'parse_l2_tlb'),
('MSM_DUMP_DATA_LLC_CACHE', 'parse_system_cache_common'),
] ]
qdss_tag_to_field_name = { qdss_tag_to_field_name = {
...@@ -213,6 +215,23 @@ class DebugImage_v2(): ...@@ -213,6 +215,23 @@ class DebugImage_v2():
print_out_exception() print_out_exception()
outfile.close() outfile.close()
def parse_system_cache_common(self, version, start, end, client_id, ramdump):
client_name = self.dump_data_id_lookup_table[client_id]
bank_number = client_id - client.MSM_DUMP_DATA_LLC_CACHE
filename = '{0}_0x{1:x}'.format(client_name, bank_number)
outfile = ramdump.open_file(filename)
cache_type = lookup_cache_type(ramdump.hw_id, client_id, version)
try:
cache_type.parse(start, end, ramdump, outfile)
except NotImplementedError:
print_out_str('System cache dumping not supported'
% client_name)
except:
print_out_str('!!! Unhandled exception while running {0}'.format(client_name))
print_out_exception()
outfile.close()
def parse_tlb_common(self, version, start, end, client_id, ramdump): def parse_tlb_common(self, version, start, end, client_id, ramdump):
client_name = self.dump_data_id_lookup_table[client_id] client_name = self.dump_data_id_lookup_table[client_id]
core = client_id & 0xF core = client_id & 0xF
...@@ -488,6 +507,10 @@ class DebugImage_v2(): ...@@ -488,6 +507,10 @@ class DebugImage_v2():
client.MSM_DUMP_DATA_L2_CACHE + i] = 'MSM_DUMP_DATA_L2_CACHE' client.MSM_DUMP_DATA_L2_CACHE + i] = 'MSM_DUMP_DATA_L2_CACHE'
self.dump_data_id_lookup_table[ self.dump_data_id_lookup_table[
client.MSM_DUMP_DATA_ETM_REG + i] = 'MSM_DUMP_DATA_ETM_REG' client.MSM_DUMP_DATA_ETM_REG + i] = 'MSM_DUMP_DATA_ETM_REG'
for i in range(0, 4):
self.dump_data_id_lookup_table[
client.MSM_DUMP_DATA_LLC_CACHE + i] = 'MSM_DUMP_DATA_LLC_CACHE'
# 0x100 - tmc-etr registers and 0x101 - for tmc-etf registers # 0x100 - tmc-etr registers and 0x101 - for tmc-etf registers
self.dump_data_id_lookup_table[ self.dump_data_id_lookup_table[
client.MSM_DUMP_DATA_TMC_REG + 1] = 'MSM_DUMP_DATA_TMC_REG' client.MSM_DUMP_DATA_TMC_REG + 1] = 'MSM_DUMP_DATA_TMC_REG'
......
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