# Debug ARC (RPMh hardware block)

Source: [https://docs.qualcomm.com/doc/80-88500-3/topic/debugging_rpmh_hardware_block_arc.html](https://docs.qualcomm.com/doc/80-88500-3/topic/debugging_rpmh_hardware_block_arc.html)

ARC handles complex hardware blocks that need additional coordination.

- Coordinates between ARC and other accelerators when needed (CPRF, VRM, DDR\_AUX, and so on)
- Vote units are in operating level

## Voltage rails

- CX or MX
- SSC\_CX or SSC\_MX
- VDD\_MSS
- EBI
- GFX

- General resources with power states
    - XO
    - DDR\_SS

## Debug scenarios

CMM script checks the following when it parses for each resource (for example, power rail).
- General status
- Vote from each client
- Internal state

The following debugging scenarios are considered.
- ARC has not transitioned a state of resource – debug is done by reviewing the internal state of the resource
- ARC does not go to the expected state
    - Debug is done by reviewing votes from each client
    - Further debug is done by reviewing the internal state of the resource

## ARC dump script

The `arc_dump.cmm [op=<output file path>]` script dumps information for each ARC resource. If the output file not specified, the script dumps the output on the TRACE32 area. For RM list and DRV list, check the generated ARC dump.

    RM0 : cx
        Status
            Enable: 1
        OLs
            Curr :  0x2
            Agg :   0x1
            Dest :  0x1
            Solved: 0x0
            Seq :   0x1
        Sequencer
            Busy :  1          //Seq busy–‘hang’
            PC :    108
            Instr : 0x400F
        Votes
            DRV0 : 0x0
            DRV1 : 0x0
            DRV2 : 0x1*       //Decider DRV
            ...               //Other DRV votes
            DRV29 : 0x0
    
    RM1 : mx
    ...                       //Other RM details
    ARC_RM Map
    ARC_DRV MapCopy to clipboard

## ARC dump script for DRV filter

The `arc_dump.cmm drvs=mss,aop [op=<output file path>]` command enables you to filter output to specific DRVs. For MSS\_SW and AOP dumps, the following are applicable:

- Vote on each ARC resource
- Current and destination OLs
- Sequencer state

The following is the dump script for the DRV filter:

    DRV10 : mss
        RM0 : cx
            vote :    0x0
            curr_ol : 0x6
            dest_ol : 0x6
            seq_busy: 0x0
        ...                  //Intermediate RMs
        RM6 : mss
            vote : 0x4*      //Decider vote
            curr_ol : 0x4
            dest_ol : 0x4
            seq_busy: 0x0
        ...
    
    DRV6 : aop
        RM0 : cx
            vote : 0x6*      //Decider vote
            curr_ol : 0x6
            dest_ol : 0x6
            seq_busy: 0x0
        ...                  //Rest of RMsCopy to clipboard

## ARC dump script for RM filter

The `arc_dump.cmm rms=mx,mss [op=<output file path>]` command enables you to filter the output to a specific RM.

For CX and MSS resource dumps, the following are applicable.
- Various operating levels
- Sequencer state
- DRV votes

The following is the dump script for the RM filter.

    RM1 : mx
        Status
            Enable:  1
        OLs
            Curr :   0x4
            Agg :    0x4
            Dest :   0x4
            Solved : 0x0
            Seq :    0x4
        Sequencer
            Busy :   0
            PC :     36
            Instr :  0x5005
        Votes
            DRV0 : 0x0
            DRV1 : 0x0
            DRV2 : 0x4*      //Decider DRV
            ...              //Other DRV votes
            DRV29 : 0x0
    RM6 : mss
    ...                     //MSS details  Copy to clipboard

**Parent Topic:** [RPMh debugging](https://docs.qualcomm.com/doc/80-88500-3/topic/81_RPMh_hardening_and_debugging_.html)

Last Published: Sep 26, 2023

[Previous Topic
Debug AOP script](https://docs.qualcomm.com/bundle/publicresource/80-88500-3/topics/82_Debug_AOP_script.md) [Next Topic
Debug BCM (RPMh hardware block)](https://docs.qualcomm.com/bundle/publicresource/80-88500-3/topics/debugging_bcm_rpmh_hardware_block.md)