From d025a0dbae03df78e761338f84006bf9fc243083 Mon Sep 17 00:00:00 2001
From: David Garibaldi <dgaribal@codeaurora.org>
Date: Wed, 6 Apr 2016 16:55:04 -0700
Subject: [PATCH] lrdpv2: Make QDSS binary data parsing optional

Debug image parsing currently includes QDSS ETM and ETR binary data
parsing by default. However, these two parsing operations can take a
significant amount of time if either of their respective data buffers
are very large. Furthermore, this binary data is not needed for most
common debug image parsing use cases.

Add an argument to optionally disable QDSS ETM and ETR binary data
parsing when debug image parsing has also been selected.

Change-Id: Iab25c15d00dde1bb5dfafb3149e6e55760fd6291
---
 linux-ramdump-parser-v2/debug_image_v2.py      | 5 ++++-
 linux-ramdump-parser-v2/parsers/debug_image.py | 5 ++++-
 linux-ramdump-parser-v2/qdss.py                | 4 +---
 linux-ramdump-parser-v2/ramdump.py             | 1 +
 linux-ramdump-parser-v2/ramparse.py            | 4 ++++
 5 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/linux-ramdump-parser-v2/debug_image_v2.py b/linux-ramdump-parser-v2/debug_image_v2.py
index 6a04104..b937b36 100644
--- a/linux-ramdump-parser-v2/debug_image_v2.py
+++ b/linux-ramdump-parser-v2/debug_image_v2.py
@@ -525,7 +525,10 @@ class DebugImage_v2():
                     getattr(DebugImage_v2, func)(self, dump_data_version, dump_data_addr, dump_data_addr + dump_data_len,
                                                  client_id, ram_dump)
 
-            self.qdss.dump_all(ram_dump)
+            self.qdss.dump_standard(ram_dump)
+            if not ram_dump.skip_qdss_bin:
+                self.qdss.save_etf_bin(ram_dump)
+                self.qdss.save_etr_bin(ram_dump)
             if ram_dump.qtf:
                 self.parse_qtf(ram_dump)
             if ram_dump.dcc:
diff --git a/linux-ramdump-parser-v2/parsers/debug_image.py b/linux-ramdump-parser-v2/parsers/debug_image.py
index 1d0d1ef..827d86b 100644
--- a/linux-ramdump-parser-v2/parsers/debug_image.py
+++ b/linux-ramdump-parser-v2/parsers/debug_image.py
@@ -190,7 +190,10 @@ class DebugImage(RamParser):
                                           client_end, client_name)
             print_out_str('--------')
 
-        self.qdss.dump_all(self.ramdump)
+        self.qdss.dump_standard(self.ramdump)
+        if not self.ramdump.skip_qdss_bin:
+            self.qdss.save_etf_bin(self.ramdump)
+            self.qdss.save_etr_bin(self.ramdump)
 
     def parse(self):
         # use the mem_dump_data variable to detect if debug image feature was compiled in,
diff --git a/linux-ramdump-parser-v2/qdss.py b/linux-ramdump-parser-v2/qdss.py
index 08e2cf1..261d792 100755
--- a/linux-ramdump-parser-v2/qdss.py
+++ b/linux-ramdump-parser-v2/qdss.py
@@ -455,10 +455,8 @@ class QDSSDump():
                 ram_dump.read_u32(self.dbgui_start + data_offset + (4 * i), False)))
         dbgui_out.close()
 
-    def dump_all(self, ram_dump):
+    def dump_standard(self, ram_dump):
         self.print_tmc_etf(ram_dump)
         self.print_tmc_etr(ram_dump)
         self.print_dbgui_registers(ram_dump)
         self.print_all_etm_register(ram_dump)
-        self.save_etf_bin(ram_dump)
-        self.save_etr_bin(ram_dump)
diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py
index 798b1aa..39268ee 100755
--- a/linux-ramdump-parser-v2/ramdump.py
+++ b/linux-ramdump-parser-v2/ramdump.py
@@ -441,6 +441,7 @@ class RamDump():
         self.thread_size = 8192
         self.qtf_path = options.qtf_path
         self.qtf = options.qtf
+        self.skip_qdss_bin = options.skip_qdss_bin
         self.dcc = False
         self.t32_host_system = options.t32_host_system or None
         self.ipc_log_test = options.ipc_test
diff --git a/linux-ramdump-parser-v2/ramparse.py b/linux-ramdump-parser-v2/ramparse.py
index 4c3cc98..aadb286 100755
--- a/linux-ramdump-parser-v2/ramparse.py
+++ b/linux-ramdump-parser-v2/ramparse.py
@@ -134,6 +134,10 @@ if __name__ == '__main__':
                       help='Use QTF tool to parse and save QDSS trace data')
     parser.add_option('', '--qtf-path', dest='qtf_path',
                       help='QTF tool executable')
+    parser.add_option('', '--skip-qdss-bin', action='store_true',
+                      dest='skip_qdss_bin', help='Skip QDSS ETF and ETR '
+                      'binary data parsing from debug image (may save time '
+                      'if large ETM and ETR buffers are present)')
     parser.add_option('', '--ipc-help', dest='ipc_help',
                       help='Help for IPC Logging', action='store_true',
                       default=False)
-- 
GitLab