Message ID | 20240819073020.3291287-1-quic_sibis@quicinc.com |
---|---|
State | Accepted |
Commit | 7b22b7719fc17d5979a991c918c868ab041be5c8 |
Headers | show |
Series | remoteproc: qcom_q6v5_mss: Re-order writes to the IMEM region | expand |
Hi, On Mon, Aug 19, 2024 at 12:30 AM Sibi Sankar <quic_sibis@quicinc.com> wrote: > > Any write access to the IMEM region when the Q6 is setting up XPU > protection on it will result in a XPU violation. Fix this by ensuring > IMEM writes related to the MBA post-mortem logs happen before the Q6 > is brought out of reset. > > Fixes: 318130cc9362 ("remoteproc: qcom_q6v5_mss: Add MBA log extraction support") > Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com> > --- > drivers/remoteproc/qcom_q6v5_mss.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) As discussed offlist, this isn't a perfect fix since writes to this IMEM could happen by other drivers and those could still cause things to go boom if they run in parallel with this driver. That being said: * It seems like a more proper fix needs a coordinated effort between a device's built-in firmware and the modem firmware. This is difficult / near impossible to get done properly. * Even if we do a more proper fix, making this change won't hurt. * This change will immediately improve things by avoiding the XPU violation in the most common case. I've confirmed that the test case I had where things were going boom is fixed. Thus: Reviewed-by: Douglas Anderson <dianders@chromium.org> Tested-by: Douglas Anderson <dianders@chromium.org>
Hi, On Mon, Aug 19, 2024 at 4:40 PM Doug Anderson <dianders@chromium.org> wrote: > > Hi, > > On Mon, Aug 19, 2024 at 12:30 AM Sibi Sankar <quic_sibis@quicinc.com> wrote: > > > > Any write access to the IMEM region when the Q6 is setting up XPU > > protection on it will result in a XPU violation. Fix this by ensuring > > IMEM writes related to the MBA post-mortem logs happen before the Q6 > > is brought out of reset. > > > > Fixes: 318130cc9362 ("remoteproc: qcom_q6v5_mss: Add MBA log extraction support") > > Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com> > > --- > > drivers/remoteproc/qcom_q6v5_mss.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > As discussed offlist, this isn't a perfect fix since writes to this > IMEM could happen by other drivers and those could still cause things > to go boom if they run in parallel with this driver. That being said: > * It seems like a more proper fix needs a coordinated effort between a > device's built-in firmware and the modem firmware. This is difficult / > near impossible to get done properly. > * Even if we do a more proper fix, making this change won't hurt. > * This change will immediately improve things by avoiding the XPU > violation in the most common case. > > I've confirmed that the test case I had where things were going boom > is fixed. Thus: > > Reviewed-by: Douglas Anderson <dianders@chromium.org> > Tested-by: Douglas Anderson <dianders@chromium.org> Just checking in to see if there's anything else needed for this patch to land. Thanks! :-) -Doug
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c index 2a42215ce8e0..32c3531b20c7 100644 --- a/drivers/remoteproc/qcom_q6v5_mss.c +++ b/drivers/remoteproc/qcom_q6v5_mss.c @@ -1162,6 +1162,9 @@ static int q6v5_mba_load(struct q6v5 *qproc) goto disable_active_clks; } + if (qproc->has_mba_logs) + qcom_pil_info_store("mba", qproc->mba_phys, MBA_LOG_SIZE); + writel(qproc->mba_phys, qproc->rmb_base + RMB_MBA_IMAGE_REG); if (qproc->dp_size) { writel(qproc->mba_phys + SZ_1M, qproc->rmb_base + RMB_PMI_CODE_START_REG); @@ -1172,9 +1175,6 @@ static int q6v5_mba_load(struct q6v5 *qproc) if (ret) goto reclaim_mba; - if (qproc->has_mba_logs) - qcom_pil_info_store("mba", qproc->mba_phys, MBA_LOG_SIZE); - ret = q6v5_rmb_mba_wait(qproc, 0, 5000); if (ret == -ETIMEDOUT) { dev_err(qproc->dev, "MBA boot timed out\n");
Any write access to the IMEM region when the Q6 is setting up XPU protection on it will result in a XPU violation. Fix this by ensuring IMEM writes related to the MBA post-mortem logs happen before the Q6 is brought out of reset. Fixes: 318130cc9362 ("remoteproc: qcom_q6v5_mss: Add MBA log extraction support") Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com> --- drivers/remoteproc/qcom_q6v5_mss.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)