Re: [PATCH v6 07/11] bus: mhi: core: Introduce counters to track MHI device state transitions

From: Manivannan Sadhasivam
Date: Fri Aug 07 2020 - 01:13:32 EST


On Mon, Jul 27, 2020 at 07:02:16PM -0700, Bhaumik Bhatt wrote:
> Use counters to track MHI device state transitions such as those
> to M0, M2, or M3 states. This can help in better debug, allowing
> the user to see the number of transitions to a certain MHI state
> when queried using debugfs entries or via other mechanisms.
>
> Signed-off-by: Bhaumik Bhatt <bbhatt@xxxxxxxxxxxxxx>

Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>

A minor nit below...

> ---
> drivers/bus/mhi/core/pm.c | 4 ++++
> include/linux/mhi.h | 2 ++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c
> index 27bb471..ce4d969 100644
> --- a/drivers/bus/mhi/core/pm.c
> +++ b/drivers/bus/mhi/core/pm.c
> @@ -256,6 +256,7 @@ int mhi_pm_m0_transition(struct mhi_controller *mhi_cntrl)
> dev_err(dev, "Unable to transition to M0 state\n");
> return -EIO;
> }
> + mhi_cntrl->M0++;
>
> /* Wake up the device */
> read_lock_bh(&mhi_cntrl->pm_lock);
> @@ -326,6 +327,8 @@ void mhi_pm_m1_transition(struct mhi_controller *mhi_cntrl)
> mhi_cntrl->dev_state = MHI_STATE_M2;
>
> write_unlock_irq(&mhi_cntrl->pm_lock);
> +
> + mhi_cntrl->M2++;
> wake_up_all(&mhi_cntrl->state_event);
>
> /* If there are any pending resources, exit M2 immediately */
> @@ -362,6 +365,7 @@ int mhi_pm_m3_transition(struct mhi_controller *mhi_cntrl)
> return -EIO;
> }
>
> + mhi_cntrl->M3++;
> wake_up_all(&mhi_cntrl->state_event);
>
> return 0;
> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
> index a8379b3..e38de6d 100644
> --- a/include/linux/mhi.h
> +++ b/include/linux/mhi.h
> @@ -328,6 +328,7 @@ struct mhi_controller_config {
> * @dev_state: MHI device state
> * @dev_wake: Device wakeup count
> * @pending_pkts: Pending packets for the controller
> + * @M0, M2, M3, M3_fast: Counters to track number of device MHI state changes
> * @transition_list: List of MHI state transitions
> * @transition_lock: Lock for protecting MHI state transition list
> * @wlock: Lock for protecting device wakeup
> @@ -407,6 +408,7 @@ struct mhi_controller {
> enum mhi_state dev_state;
> atomic_t dev_wake;
> atomic_t pending_pkts;
> + u32 M0, M2, M3, M3_fast;

Are you using M3_fast anywhere in current series? If not, please drop it for
now.

Thanks,
Mani

> struct list_head transition_list;
> spinlock_t transition_lock;
> spinlock_t wlock;
> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>