From: "Slark Xiao" <slark_xiao@163.com>
To: "Krishna Chaitanya Chundru" <krishna.chundru@oss.qualcomm.com>
Cc: mani@kernel.org, mhi@lists.linux.dev,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re:Re: [PATCH] bus: mhi: host: Update session id for each suspend and resume
Date: Tue, 16 Sep 2025 11:26:16 +0800 (CST) [thread overview]
Message-ID: <4205cc0b.3a60.199508f0d03.Coremail.slark_xiao@163.com> (raw)
In-Reply-To: <6510264c-d91a-45f3-b484-18d334c515e8@oss.qualcomm.com>
At 2025-09-15 15:26:33, "Krishna Chaitanya Chundru" <krishna.chundru@oss.qualcomm.com> wrote:
>
>
>On 9/12/2025 3:38 PM, Slark Xiao wrote:
>> On Qualcomm module side, there is a UART print as below:
>> session id: 0x355fe689 state:2
>> session id: 0x1f478e42 state:5
>> The session id reads from register BHI_IMGTXDB(0x218), and the
>> state indicates the D3 or D0 state.
>>
>> In Windows side, MHI driver would update this session id for each
>> suspend/resume progress. We benefit from this mechanism since it
>> could help sync each suspend and resume progress between host and
>> device, especially for some suspend issue which needs to take
>> hundreds or thousands cycle. We can easy to figure out which
>> suspend cycle get a problem and what's happened at that time for
>> both host and device because they have same id.
>>
>> But in Linux side, this session id value would always be 0x0.
>> So we add it for potential debug usage.
>>
>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>> ---
>> drivers/bus/mhi/host/pm.c | 15 +++++++++++++++
>> 1 file changed, 15 insertions(+)
>>
>> diff --git a/drivers/bus/mhi/host/pm.c b/drivers/bus/mhi/host/pm.c
>> index 33d92bf2fc3e..a6573f687363 100644
>> --- a/drivers/bus/mhi/host/pm.c
>> +++ b/drivers/bus/mhi/host/pm.c
>> @@ -864,6 +864,13 @@ int mhi_pm_suspend(struct mhi_controller *mhi_cntrl)
>> struct device *dev = &mhi_cntrl->mhi_dev->dev;
>> enum mhi_pm_state new_state;
>> int ret;
>> + void __iomem *base = mhi_cntrl->bhi;
>> + u32 session_id;
>> +
>> + session_id = MHI_RANDOM_U32_NONZERO(BHI_TXDB_SEQNUM_BMSK);
>> + dev_dbg(dev, "Starting enter suspend, session id: 0x%x\n",
>> + sessin_id);
>> + mhi_write_reg(mhi_cntrl, base, BHI_IMGTXDB, session_id);
>I agree this will help in debugging, but unless it is documented
>in the MHI spec we can't have this. Since in future if there is
>some other purpose for this register we end up facing issues.
>
>if it already part of spec point it in the commit text.
>
>- Krishna Chaitanya.
Hi Krishna,
I am not a member of Qualcomm so I don't have a detailed MHI
spec to describe this register usage.
But I get some information from their Windows MHI driver:
1. There is release note which describe it:
UDE/QMI/win/qcude/installer/ReadMe.txt
UDE/QCUDE.Standalone.Source.1.00.44.Windows-AnyCPU_ReadMe_1.txt
......
MHI driver 1.1.0.2
b. Add write to BHI_IMGTXDB for debug purposes.
......
2.From the code side, there is a same operation for MHI driver
enter into M0:
HostDriver/win/NTAD/MhiHost/Mhi/src/Mhi.c
......
void MhiRequestM0(PMHI_DEV_CTXT MhiCtxt)
{
.....
/* Set BHI_IMGTXDB */
KeQuerySystemTime(&randSeed);
MhiCtxt->SessionID = RtlRandomEx(&randSeed.LowPart);
MhiTrace(TRACE_LEVEL_ERROR, TRACE_FLAG_MHICONFIG, "NEW SessionID: 0x%x\n", MhiCtxt->SessionID);
MHI_WRITE_REG(deviceContext->BHIContext.BhiBase, BHI_IMGTXDB, MhiCtxt->SessionID);
MhiTrace(TRACE_LEVEL_ERROR, TRACE_FLAG_MHICONFIG, "Req -> M0\n");
......
Not sure if above information is enough for this commit.
Thanks
>>
>> if (mhi_cntrl->pm_state == MHI_PM_DISABLE)
>> return -EINVAL;
>> @@ -952,6 +959,14 @@ static int __mhi_pm_resume(struct mhi_controller *mhi_cntrl, bool force)
>> struct device *dev = &mhi_cntrl->mhi_dev->dev;
>> enum mhi_pm_state cur_state;
>> int ret;
>> + void __iomem *base = mhi_cntrl->bhi;
>> + u32 session_id;
>> +
>> + session_id = MHI_RANDOM_U32_NONZERO(BHI_TXDB_SEQNUM_BMSK);
>> + dev_dbg(dev, "Starting enter resume, session id: 0x%x\n",
>> + session_id);
>> +
>> + mhi_write_reg(mhi_cntrl, base, BHI_IMGTXDB, session_id);
>>
>> dev_dbg(dev, "Entered with PM state: %s, MHI state: %s\n",
>> to_mhi_pm_state_str(mhi_cntrl->pm_state),
next prev parent reply other threads:[~2025-09-16 3:26 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-12 10:08 Slark Xiao
2025-09-15 7:26 ` Krishna Chaitanya Chundru
2025-09-16 3:26 ` Slark Xiao [this message]
2025-10-14 7:50 ` Slark Xiao
2025-10-14 12:51 ` Manivannan Sadhasivam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4205cc0b.3a60.199508f0d03.Coremail.slark_xiao@163.com \
--to=slark_xiao@163.com \
--cc=krishna.chundru@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mani@kernel.org \
--cc=mhi@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®