# emonti/qualcomm-opensource-tools architecture

> Architecture diagram of the GitHub repository emonti/qualcomm-opensource-tools, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/emonti/qualcomm-opensource-tools
- Repository: https://github.com/emonti/qualcomm-opensource-tools

## Overview

This repository is primarily a Qualcomm/Linux RAM-dump analysis tool: a user supplies dump memory and kernel symbols to ramparse, which initializes a dump reader and runs selected registered parsers to produce diagnostic output. Its analysis spans kernel state, memory mappings, hardware subsystems, and debug traces. The tree also contains separate DCC and IPC-logging utilities. Source excerpts support the main reader, dispatcher, selected parser calls, and trace handling; many parser implementations are indexed but unsampled, so their internal links are not asserted.

Main entry points: [`linux-ramdump-parser-v2/ramdump.py`](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramdump.py) (Dump reader), [`linux-ramdump-parser-v2/debug_image_v2.py`](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/debug_image_v2.py) (Debug-image decoder), [`linux-ramdump-parser-v2/ramparse.py`](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramparse.py) (CLI dispatcher), [`linux-ramdump-parser-v2/parsers`](https://github.com/emonti/qualcomm-opensource-tools/tree/master/linux-ramdump-parser-v2/parsers) (Kernel state parsers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Parsing entry"]
  node_ramparse["CLI dispatcher<br/>[ramparse.py]"]
  node_parser_registry["Parser registry<br/>[parser_util.py]"]
end

subgraph group_core["Dump access"]
  node_ramdump["Dump reader<br/>[ramdump.py]"]
  node_address_translation["Address translation<br/>[mmu.py]"]
  node_architecture_support["Architecture helpers<br/>[bitops.py]"]
  node_output["Diagnostic output<br/>[print_out.py]"]
end

subgraph group_analysis["Kernel analysis"]
  node_kernel_state["Kernel state parsers"]
  node_workqueue["Workqueue analysis<br/>[workqueue.py]"]
  node_watchdog["Watchdog analysis<br/>[watchdog.py]"]
  node_memory_analysis["Memory analysis"]
end

subgraph group_hardware["Hardware diagnostics"]
  node_iommu_parser["IOMMU analysis<br/>[iommu.py]"]
  node_iommu_helpers["IOMMU helpers<br/>[iommulib.py]"]
  node_cpr_analysis["CPR diagnostics<br/>[cpr3_info.py]"]
end

subgraph group_debug["Trace and logging"]
  node_debug_image_parser["Debug-image parser<br/>[debug_image.py]"]
  node_debug_image["Debug-image decoder<br/>[debug_image_v2.py]"]
  node_qdss["QDSS trace decoder<br/>[qdss.py]"]
  node_watchdog_decode["Watchdog decoder<br/>[watchdog_v2.py]"]
  node_ipc_parser["IPC-log parser<br/>[ipc_logging.py]"]
end

node_user(("Analyst"))
node_dcc_tool["DCC parser<br/>[dcc_parser.py]"]
node_ipc_tool["IPC logging tool<br/>[ipc_logging.py]"]

node_user -->|"provides dump options"| node_ramparse
node_ramparse -->|"loads parser options"| node_parser_registry
node_ramparse -->|"initializes reader"| node_ramdump
node_parser_registry -.->|"registers parsers"| node_kernel_state
node_ramdump -->|"uses translation"| node_address_translation
node_ramdump -.->|"uses helpers"| node_architecture_support
node_kernel_state -.->|"reads dump state"| node_ramdump
node_workqueue -->|"reads kernel state"| node_ramdump
node_watchdog -.->|"reads dump state"| node_ramdump
node_memory_analysis -.->|"reads dump state"| node_ramdump
node_iommu_parser -->|"uses helpers"| node_iommu_helpers
node_iommu_parser -.->|"reads mappings"| node_ramdump
node_cpr_analysis -->|"reads regulator state"| node_ramdump
node_debug_image_parser -->|"delegates decoding"| node_debug_image
node_debug_image -->|"sets trace context"| node_qdss
node_debug_image -->|"uses decoder"| node_watchdog_decode
node_debug_image -.->|"reads dump data"| node_ramdump
node_kernel_state -.->|"writes diagnostics"| node_output
node_qdss -->|"prints trace data"| node_output
node_watchdog_decode -->|"prints registers"| node_output

click node_ramparse "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramparse.py"
click node_parser_registry "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parser_util.py"
click node_ramdump "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramdump.py"
click node_address_translation "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/mmu.py"
click node_architecture_support "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/bitops.py"
click node_kernel_state "https://github.com/emonti/qualcomm-opensource-tools/tree/master/linux-ramdump-parser-v2/parsers"
click node_workqueue "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/workqueue.py"
click node_watchdog "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/watchdog.py"
click node_memory_analysis "https://github.com/emonti/qualcomm-opensource-tools/tree/master/linux-ramdump-parser-v2/parsers"
click node_iommu_parser "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/iommu.py"
click node_iommu_helpers "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/iommulib.py"
click node_cpr_analysis "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/cpr3_info.py"
click node_debug_image_parser "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/debug_image.py"
click node_debug_image "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/debug_image_v2.py"
click node_qdss "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/qdss.py"
click node_watchdog_decode "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/watchdog_v2.py"
click node_output "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/print_out.py"
click node_dcc_tool "https://github.com/emonti/qualcomm-opensource-tools/blob/master/dcc_parser/dcc_parser.py"
click node_ipc_tool "https://github.com/emonti/qualcomm-opensource-tools/blob/master/ipc_logging/ipc_logging.py"
click node_ipc_parser "https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/ipc_logging.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ramparse,node_parser_registry toneBlue
class node_ramdump,node_address_translation,node_architecture_support,node_output toneAmber
class node_kernel_state,node_workqueue,node_watchdog,node_memory_analysis toneMint
class node_iommu_parser,node_iommu_helpers,node_cpr_analysis toneRose
class node_debug_image_parser,node_debug_image,node_qdss,node_watchdog_decode,node_ipc_parser,node_user toneIndigo
class node_dcc_tool,node_ipc_tool toneTeal
```

## Components

### Parsing entry

- [CLI dispatcher](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramparse.py): `linux-ramdump-parser-v2/ramparse.py`
- [Parser registry](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parser_util.py): `linux-ramdump-parser-v2/parser_util.py`

### Dump access

- [Dump reader](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/ramdump.py): `linux-ramdump-parser-v2/ramdump.py`
- [Address translation](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/mmu.py): `linux-ramdump-parser-v2/mmu.py`
- [Architecture helpers](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/bitops.py): `linux-ramdump-parser-v2/bitops.py`
- [Diagnostic output](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/print_out.py): `linux-ramdump-parser-v2/print_out.py`

### Kernel analysis

- [Kernel state parsers](https://github.com/emonti/qualcomm-opensource-tools/tree/master/linux-ramdump-parser-v2/parsers): `linux-ramdump-parser-v2/parsers`
- [Workqueue analysis](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/workqueue.py): `linux-ramdump-parser-v2/parsers/workqueue.py`
- [Watchdog analysis](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/watchdog.py): `linux-ramdump-parser-v2/parsers/watchdog.py`
- [Memory analysis](https://github.com/emonti/qualcomm-opensource-tools/tree/master/linux-ramdump-parser-v2/parsers): `linux-ramdump-parser-v2/parsers`

### Hardware diagnostics

- [IOMMU analysis](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/iommu.py): `linux-ramdump-parser-v2/parsers/iommu.py`
- [IOMMU helpers](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/iommulib.py): `linux-ramdump-parser-v2/iommulib.py`
- [CPR diagnostics](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/cpr3_info.py): `linux-ramdump-parser-v2/parsers/cpr3_info.py`

### Trace and logging

- [Debug-image parser](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/debug_image.py): `linux-ramdump-parser-v2/parsers/debug_image.py`
- [Debug-image decoder](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/debug_image_v2.py): `linux-ramdump-parser-v2/debug_image_v2.py`
- [QDSS trace decoder](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/qdss.py): `linux-ramdump-parser-v2/qdss.py`
- [Watchdog decoder](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/watchdog_v2.py): `linux-ramdump-parser-v2/watchdog_v2.py`
- [IPC-log parser](https://github.com/emonti/qualcomm-opensource-tools/blob/master/linux-ramdump-parser-v2/parsers/ipc_logging.py): `linux-ramdump-parser-v2/parsers/ipc_logging.py`

### Other components

- **Analyst**
- [DCC parser](https://github.com/emonti/qualcomm-opensource-tools/blob/master/dcc_parser/dcc_parser.py): `dcc_parser/dcc_parser.py`
- [IPC logging tool](https://github.com/emonti/qualcomm-opensource-tools/blob/master/ipc_logging/ipc_logging.py): `ipc_logging/ipc_logging.py`

## Connections

- Analyst → CLI dispatcher: provides dump options (evidence: `linux-ramdump-parser-v2/ramparse.py`)
- CLI dispatcher → Parser registry: loads parser options (evidence: `linux-ramdump-parser-v2/ramparse.py`)
- CLI dispatcher → Dump reader: initializes reader (evidence: `linux-ramdump-parser-v2/ramparse.py`)
- Parser registry → Kernel state parsers: registers parsers (evidence: `linux-ramdump-parser-v2/parsers/cpr3_info.py`)
- Dump reader → Address translation: uses translation (evidence: `linux-ramdump-parser-v2/ramdump.py`)
- Dump reader → Architecture helpers: uses helpers
- Kernel state parsers → Dump reader: reads dump state
- Workqueue analysis → Dump reader: reads kernel state (evidence: `linux-ramdump-parser-v2/parsers/workqueue.py`)
- Watchdog analysis → Dump reader: reads dump state
- Memory analysis → Dump reader: reads dump state
- IOMMU analysis → IOMMU helpers: uses helpers (evidence: `linux-ramdump-parser-v2/parsers/iommu.py`)
- IOMMU analysis → Dump reader: reads mappings
- CPR diagnostics → Dump reader: reads regulator state (evidence: `linux-ramdump-parser-v2/parsers/cpr3_info.py`)
- Debug-image parser → Debug-image decoder: delegates decoding (evidence: `linux-ramdump-parser-v2/parsers/debug_image.py`)
- Debug-image decoder → QDSS trace decoder: sets trace context (evidence: `linux-ramdump-parser-v2/debug_image_v2.py`)
- Debug-image decoder → Watchdog decoder: uses decoder (evidence: `linux-ramdump-parser-v2/debug_image_v2.py`)
- Debug-image decoder → Dump reader: reads dump data
- Kernel state parsers → Diagnostic output: writes diagnostics (evidence: `linux-ramdump-parser-v2/parsers/cpr3_info.py`)
- QDSS trace decoder → Diagnostic output: prints trace data (evidence: `linux-ramdump-parser-v2/qdss.py`)
- Watchdog decoder → Diagnostic output: prints registers (evidence: `linux-ramdump-parser-v2/watchdog_v2.py`)
