RE: [PATCH V2 2/2] mailbox: imx: support RST channel

From: Peng Fan
Date: Sun Aug 28 2022 - 20:41:21 EST


> Subject: Re: [PATCH V2 2/2] mailbox: imx: support RST channel
>
> Hi,
>
> On Wed, 2022-06-15 at 21:00 +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@xxxxxxx>
> >
> > i.MX generic MU supports MU-A/B reset feature.
> >
> > When stop/start remotecore, MU is not reset. So when Linux stop
> > remotecore, the MU-B side BCR may contain valid configuration, because
> > MU-B is not reset. So when linux start Mcore again and notify Mcore,
> > Mcore is not ready to handle MU interrupt and cause issues. So need
> > reset MU when stop Mcore.
> >
> > Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
>
> It looks like this patch causes i.MX8qxp MEK boot failure with v6.0- rc1. After
> reverting commit 82ab513baed5895c8b0e991557a12fd38d5f25f0,
> it boots ok.

Thanks for your test. Indeed, I only take generic MU into consideration and broke
i.MX8QXP SCU MU. The following patch could resolve the issue, after more
test, I will send a formal patch:

diff --git a/drivers/mailbox/imx-mailbox.c b/drivers/mailbox/imx-mailbox.c
index f36cb0048ce7..e373ea8b4705 100644
--- a/drivers/mailbox/imx-mailbox.c
+++ b/drivers/mailbox/imx-mailbox.c
@@ -893,7 +893,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx7ulp = {
.xTR = 0x20,
.xRR = 0x40,
.xSR = {0x60, 0x60, 0x60, 0x60},
- .xCR = {0x64, 0x64, 0x64, 0x64},
+ .xCR = {0x64, 0x64, 0x64, 0x64, 0x64},
};

static const struct imx_mu_dcfg imx_mu_cfg_imx8ulp = {
@@ -916,7 +916,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx8ulp_s4 = {
.xTR = 0x200,
.xRR = 0x280,
.xSR = {0xC, 0x118, 0x124, 0x12C},
- .xCR = {0x110, 0x114, 0x120, 0x128},
+ .xCR = {0x8, 0x110, 0x114, 0x120, 0x128},
};

static const struct imx_mu_dcfg imx_mu_cfg_imx93_s4 = {
@@ -927,7 +927,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx93_s4 = {
.xTR = 0x200,
.xRR = 0x280,
.xSR = {0xC, 0x118, 0x124, 0x12C},
- .xCR = {0x110, 0x114, 0x120, 0x128},
+ .xCR = {0x8, 0x110, 0x114, 0x120, 0x128},
};

static const struct imx_mu_dcfg imx_mu_cfg_imx8_scu = {
@@ -938,7 +938,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx8_scu = {
.xTR = 0x0,
.xRR = 0x10,
.xSR = {0x20, 0x20, 0x20, 0x20},
- .xCR = {0x24, 0x24, 0x24, 0x24},
+ .xCR = {0x24, 0x24, 0x24, 0x24, 0x24},
};

static const struct imx_mu_dcfg imx_mu_cfg_imx8_seco = {
@@ -949,7 +949,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx8_seco = {
.xTR = 0x0,
.xRR = 0x10,
.xSR = {0x20, 0x20, 0x20, 0x20},
- .xCR = {0x24, 0x24, 0x24, 0x24},
+ .xCR = {0x24, 0x24, 0x24, 0x24, 0x24},
};

static const struct of_device_id imx_mu_dt_ids[] = {
--
2.37.1
Thanks,
Peng.
>
> There are a lot imx_mu and imx-scu error logs:
>
> ----------------------------8<------------------------------------
> [ 1.166567] imx-scu system-controller: RPC send msg timeout
> [ 1.171843] imx_scu_soc_id: get soc info failed, ret -110
> [ 1.177221] imx-scu system-controller: failed to initialize SoC
> info: -22
> [ 1.184019] imx-scu system-controller: NXP i.MX SCU Initialized
> [ 1.230605] imx-scu system-controller: RPC send msg timeout
> [ 1.270559] imx-scu system-controller: RPC send msg timeout
> [ 1.310561] imx-scu system-controller: RPC send msg timeout
> [ 1.350560] imx-scu system-controller: RPC send msg timeout
> [ 1.390560] imx-scu system-controller: RPC send msg timeout
> [ 1.430561] imx-scu system-controller: RPC send msg timeout
> [ 1.470559] imx-scu system-controller: RPC send msg timeout
> [ 1.510559] imx-scu system-controller: RPC send msg timeout
> [ 1.550559] imx-scu system-controller: RPC send msg timeout
> [ 1.590559] imx-scu system-controller: RPC send msg timeout
> [ 1.630561] imx-scu system-controller: RPC send msg timeout
> [ 1.670558] imx-scu system-controller: RPC send msg timeout
> [ 1.710559] imx-scu system-controller: RPC send msg timeout
> [ 1.750558] imx-scu system-controller: RPC send msg timeout
> [ 1.790559] imx-scu system-controller: RPC send msg timeout
> [ 1.830562] imx-scu system-controller: RPC send msg timeout
> [ 1.870559] imx-scu system-controller: RPC send msg timeout
> [ 1.910559] imx-scu system-controller: RPC send msg timeout
> [ 1.950561] imx-scu system-controller: RPC send msg timeout
> [ 1.990592] imx-scu system-controller: RPC send msg timeout
> [ 1.995838] imx_mu 5d1c0000.mailbox: Try increasing
> MBOX_TX_QUEUE_LEN
> [ 2.002262] imx-scu system-controller: RPC send msg failed: -105
> [ 2.008260] imx_mu 5d1c0000.mailbox: Try increasing
> MBOX_TX_QUEUE_LEN
> [ 2.014682] imx-scu system-controller: RPC send msg failed: -105
> [ 2.020681] imx_mu 5d1c0000.mailbox: Try increasing
> MBOX_TX_QUEUE_LEN
> [ 2.027103] imx-scu system-controller: RPC send msg failed: -105
> [ 2.033105] imx_mu 5d1c0000.mailbox: Try increasing
> MBOX_TX_QUEUE_LEN
> [ 2.039526] imx-scu system-controller: RPC send msg failed: -105
> [ 2.045526] imx_mu 5d1c0000.mailbox: Try increasing
> MBOX_TX_QUEUE_LEN
> [ 2.051949] imx-scu system-controller: RPC send msg failed: -105
> ----------------------------8<------------------------------------
>
> Regards,
> Liu Ying