Re: [PATCH v4 3/3] soc: qcom: rpmh-rsc: Output debug information from RSC

From: Maulik Shah

Date: Mon Oct 05 2026 - 04:49:01 EST




On 21-09-2026 15:27, Konrad Dybcio wrote:
> On 9/13/26 2:54 PM, Maulik Shah wrote:
[...]
>
>> +print_tcs_data:
>> + /* All TCSes on a given RSC have the same number of commands per TCS. */
>> + for_each_set_bit(i, &cmds_enabled, drv->tcs[0].ncpt) {
>> + addr = read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_ADDR], tcs_id, i);
>> + data = read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_DATA], tcs_id, i);
>> + msgid = read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_MSGID], tcs_id, i);
>> + sts = read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_STATUS], tcs_id, i);
>> + cmd_db_read_name(addr, rname, sizeof(rname));
> This call may fail and must be checked
Added check in v5.

>
> [...]
>
>> +void rpmh_rsc_debug(struct rsc_drv *drv, struct completion *compl)
>> +{
>> + struct irq_data *rsc_irq_data = irq_get_irq_data(drv->irq);
>> + bool gic_irq_sts, aoss_irq_sts = false;
>> + int i, busy = 0;
>> +
>> + dev_err(drv->dev, "Timeout on RSC %s\n", drv->name);
>> +
>> + for (i = 0; i < drv->num_tcs; i++) {
>> + if (!test_bit(i, drv->tcs_in_use))
>> + continue;
>> + busy++;
>> + print_tcs_info(drv, i, &aoss_irq_sts);
> 2. P2 — Patch 3 retains only the last TCS’s AOSS completion state
> rpmh_rsc_debug() iterates all in-use TCSes, but print_tcs_info() assigns
> rather than accumulates:
> *aoss_irq_sts = !!(irq_sts & BIT(tcs_id));

Addressed in v5.

>
>> + }
>> +
>> + if (!rsc_irq_data) {
>> + dev_err(drv->dev, "No IRQ data for RSC:%s\n", drv->name);
>> + return;
>> + }
>> +
>> + irq_get_irqchip_state(drv->irq, IRQCHIP_STATE_PENDING, &gic_irq_sts);
> This call can reportedly also fail
Added check in v5.

Thanks,
Maulik