mbox series

[0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP

Message ID 1582097265-20170-1-git-send-email-peng.fan@nxp.com (mailing list archive)
Headers show
Series remoteproc: imx_rproc: support i.MX8/8M/7ULP | expand

Message

Peng Fan Feb. 19, 2020, 7:27 a.m. UTC
From: Peng Fan <peng.fan@nxp.com>

This patchset aim to replace NXP vendor imx_rpmsg.c driver.

This patchset is tested with Loic PALLARDY's patch
"remoteproc: add support for co-processor loaded and booted before kernel"
https://patchwork.kernel.org/patch/11265869/,
and inspried from st's remoteproc early boot support.
Since Loic's patch is still under review, just expect your comments :)

Patch [1,2]/9: dt-bindings convert to json and new SoC support
Patch 3/9: skip firmware load when recovery. To i.MX8, firmware is not
           handled by Linux.

Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
      because NXP release image not have resoure table, so add resource
      table in dts

My test dts diff for i.MX8QXP MEK, but I have tested this patchset
for i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:

+
+	imx8x-cm4 {
+		compatible = "fsl,imx8qxp-cm4";
+		rsrc-table = <
+			0x1 0x2 0x0 0x0 0x18 0x5c
+			3
+			/*fw_rsc_vdev*/
+			7 0 1 0 0 0x200
+			/*fw_rsc_vdev_vring*/
+			0x90000000 4096 256 1 0
+			0x90008000 4096 256 2 0
+			3
+			/*fw_rsc_vdev*/
+			7 1 1 0 0 0x200
+			/*fw_rsc_vdev_vring*/
+			0x90010000 4096 256 1 0
+			0x90018000 4096 256 2 0
+		>;
+		early-booted;
+		mbox-names = "tx", "rx", "rxdb";
+		mboxes = <&lsio_mu5 0 1
+			  &lsio_mu5 1 1
+			  &lsio_mu5 3 1>;
+		mub-partition = <3>;
+		memory-region = <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>,
+				<&vdev1vring0>, <&vdev1vring1>, <&vdev0buffer>;
+	};
+
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		vdev0vring0: vdev0vring0@90000000 {
+                       compatible = "shared-dma-pool";
+			reg = <0 0x90000000 0 0x8000>;
+			no-map;
+		};
+
+		vdev0vring1: vdev0vring1@90008000 {
+                       compatible = "shared-dma-pool";
+			reg = <0 0x90008000 0 0x8000>;
+			no-map;
+		};
+
+		vdev1vring0: vdev1vring0@90010000 {
+                       compatible = "shared-dma-pool";
+			reg = <0 0x90010000 0 0x8000>;
+			no-map;
+		};
+
+		vdev1vring1: vdev1vring1@90018000 {
+                       compatible = "shared-dma-pool";
+			reg = <0 0x90018000 0 0x8000>;
+			no-map;
+		};
+
+		vdev0buffer: vdev0buffer {
+                       compatible = "shared-dma-pool";
+			reg = <0 0x90400000 0 0x100000>;
+			no-map;
+		};
+	};
+

Peng Fan (9):
  dt-bindings: remoteproc: Convert imx-rproc to json-schema
  dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
  remoteproc: add support to skip firmware load when recovery
  remoteproc: imx_rproc: surport early booted remote processor
  remoteproc: imx_rproc: parse early-booted property
  remoteproc: imx_proc: enable virtio/mailbox
  remoteproc: imx_rproc: add i.MX8QM/QXP
  remoteproc: imx_rproc: support i.MX7ULP
  remoteproc: imx_rproc: add i.MX8MM support

 .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
 .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
 drivers/remoteproc/imx_rproc.c                     | 455 +++++++++++++++++++--
 drivers/remoteproc/remoteproc_core.c               |  19 +-
 include/linux/remoteproc.h                         |   1 +
 5 files changed, 531 insertions(+), 72 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
 create mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml

Comments

Mathieu Poirier Feb. 19, 2020, 6:24 p.m. UTC | #1
Hi Peng,

On Wed, 19 Feb 2020 at 00:33, <peng.fan@nxp.com> wrote:
>
> From: Peng Fan <peng.fan@nxp.com>
>
> This patchset aim to replace NXP vendor imx_rpmsg.c driver.

You mean remoteproc/imx_rproc.c ?  Upstream rpmsg/imx_rpmsg.c doesn't exist.

>
> This patchset is tested with Loic PALLARDY's patch
> "remoteproc: add support for co-processor loaded and booted before kernel"
> https://patchwork.kernel.org/patch/11265869/,
> and inspried from st's remoteproc early boot support.
> Since Loic's patch is still under review, just expect your comments :)

Did you base your work on top of Loic's because your MCU firmware is
always loaded by the bootloader?  If not please send another revision
of your work without early boot support.  When we have a clear view on
how to proceed with the early boot support you can send another set to
enable that.

Thanks,
Mathieu

>
> Patch [1,2]/9: dt-bindings convert to json and new SoC support
> Patch 3/9: skip firmware load when recovery. To i.MX8, firmware is not
>            handled by Linux.
>
> Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
>       because NXP release image not have resoure table, so add resource
>       table in dts
>
> My test dts diff for i.MX8QXP MEK, but I have tested this patchset
> for i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
>
> +
> +       imx8x-cm4 {
> +               compatible = "fsl,imx8qxp-cm4";
> +               rsrc-table = <
> +                       0x1 0x2 0x0 0x0 0x18 0x5c
> +                       3
> +                       /*fw_rsc_vdev*/
> +                       7 0 1 0 0 0x200
> +                       /*fw_rsc_vdev_vring*/
> +                       0x90000000 4096 256 1 0
> +                       0x90008000 4096 256 2 0
> +                       3
> +                       /*fw_rsc_vdev*/
> +                       7 1 1 0 0 0x200
> +                       /*fw_rsc_vdev_vring*/
> +                       0x90010000 4096 256 1 0
> +                       0x90018000 4096 256 2 0
> +               >;
> +               early-booted;
> +               mbox-names = "tx", "rx", "rxdb";
> +               mboxes = <&lsio_mu5 0 1
> +                         &lsio_mu5 1 1
> +                         &lsio_mu5 3 1>;
> +               mub-partition = <3>;
> +               memory-region = <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>,
> +                               <&vdev1vring0>, <&vdev1vring1>, <&vdev0buffer>;
> +       };
> +
> +       reserved-memory {
> +               #address-cells = <2>;
> +               #size-cells = <2>;
> +               ranges;
> +
> +               vdev0vring0: vdev0vring0@90000000 {
> +                       compatible = "shared-dma-pool";
> +                       reg = <0 0x90000000 0 0x8000>;
> +                       no-map;
> +               };
> +
> +               vdev0vring1: vdev0vring1@90008000 {
> +                       compatible = "shared-dma-pool";
> +                       reg = <0 0x90008000 0 0x8000>;
> +                       no-map;
> +               };
> +
> +               vdev1vring0: vdev1vring0@90010000 {
> +                       compatible = "shared-dma-pool";
> +                       reg = <0 0x90010000 0 0x8000>;
> +                       no-map;
> +               };
> +
> +               vdev1vring1: vdev1vring1@90018000 {
> +                       compatible = "shared-dma-pool";
> +                       reg = <0 0x90018000 0 0x8000>;
> +                       no-map;
> +               };
> +
> +               vdev0buffer: vdev0buffer {
> +                       compatible = "shared-dma-pool";
> +                       reg = <0 0x90400000 0 0x100000>;
> +                       no-map;
> +               };
> +       };
> +
>
> Peng Fan (9):
>   dt-bindings: remoteproc: Convert imx-rproc to json-schema
>   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
>   remoteproc: add support to skip firmware load when recovery
>   remoteproc: imx_rproc: surport early booted remote processor
>   remoteproc: imx_rproc: parse early-booted property
>   remoteproc: imx_proc: enable virtio/mailbox
>   remoteproc: imx_rproc: add i.MX8QM/QXP
>   remoteproc: imx_rproc: support i.MX7ULP
>   remoteproc: imx_rproc: add i.MX8MM support
>
>  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
>  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
>  drivers/remoteproc/imx_rproc.c                     | 455 +++++++++++++++++++--
>  drivers/remoteproc/remoteproc_core.c               |  19 +-
>  include/linux/remoteproc.h                         |   1 +
>  5 files changed, 531 insertions(+), 72 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
>
> --
> 2.16.4
>
Peng Fan Feb. 20, 2020, 1:36 a.m. UTC | #2
Hi Mathieu,

> Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> 
> Hi Peng,
> 
> On Wed, 19 Feb 2020 at 00:33, <peng.fan@nxp.com> wrote:
> >
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > This patchset aim to replace NXP vendor imx_rpmsg.c driver.
> 
> You mean remoteproc/imx_rproc.c ?  Upstream rpmsg/imx_rpmsg.c doesn't
> exist.

imx_rpmsg.c only in NXP vendor tree. This pachset is to use imx_rproc.c for
rpmsg/virtio functions for i.MX SoC.

> 
> >
> > This patchset is tested with Loic PALLARDY's patch
> > "remoteproc: add support for co-processor loaded and booted before
> kernel"
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fpatch%2F11265869%2F&amp;data=02%7C01%7Cpeng.f
> an%40n
> >
> xp.com%7Ce1cb19e535a14b63d0da08d7b568fd56%7C686ea1d3bc2b4c6fa9
> 2cd99c5c
> >
> 301635%7C0%7C0%7C637177334839497832&amp;sdata=aKQ%2Bulco63ba
> YT%2BDZDk0
> > VLt1NpkNuhrY3ssxiRCOcrM%3D&amp;reserved=0,
> > and inspried from st's remoteproc early boot support.
> > Since Loic's patch is still under review, just expect your comments :)
> 
> Did you base your work on top of Loic's because your MCU firmware is always
> loaded by the bootloader? 

I only took Loic's early-boot patch as base and apply my patchset.

The mcu firmware currently only loaded by bootloader or system controller firmware.
NXP released mcu firmware not support being loaded by Linux remoteproc.

 If not please send another revision of your work
> without early boot support.  When we have a clear view on how to proceed
> with the early boot support you can send another set to enable that.

I'll wait your new patch for early boot in remoteproc-core. Then I'll rebase
and send a new version. Since I introduce big changes to imx_rproc.c, so
I'll see whether any comments there.

Thanks,
Peng.

> 
> Thanks,
> Mathieu
> 
> >
> > Patch [1,2]/9: dt-bindings convert to json and new SoC support Patch
> > 3/9: skip firmware load when recovery. To i.MX8, firmware is not
> >            handled by Linux.
> >
> > Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
> >       because NXP release image not have resoure table, so add resource
> >       table in dts
> >
> > My test dts diff for i.MX8QXP MEK, but I have tested this patchset for
> > i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
> >
> > +
> > +       imx8x-cm4 {
> > +               compatible = "fsl,imx8qxp-cm4";
> > +               rsrc-table = <
> > +                       0x1 0x2 0x0 0x0 0x18 0x5c
> > +                       3
> > +                       /*fw_rsc_vdev*/
> > +                       7 0 1 0 0 0x200
> > +                       /*fw_rsc_vdev_vring*/
> > +                       0x90000000 4096 256 1 0
> > +                       0x90008000 4096 256 2 0
> > +                       3
> > +                       /*fw_rsc_vdev*/
> > +                       7 1 1 0 0 0x200
> > +                       /*fw_rsc_vdev_vring*/
> > +                       0x90010000 4096 256 1 0
> > +                       0x90018000 4096 256 2 0
> > +               >;
> > +               early-booted;
> > +               mbox-names = "tx", "rx", "rxdb";
> > +               mboxes = <&lsio_mu5 0 1
> > +                         &lsio_mu5 1 1
> > +                         &lsio_mu5 3 1>;
> > +               mub-partition = <3>;
> > +               memory-region = <&vdev0vring0>, <&vdev0vring1>,
> <&vdev0buffer>,
> > +                               <&vdev1vring0>, <&vdev1vring1>,
> <&vdev0buffer>;
> > +       };
> > +
> > +       reserved-memory {
> > +               #address-cells = <2>;
> > +               #size-cells = <2>;
> > +               ranges;
> > +
> > +               vdev0vring0: vdev0vring0@90000000 {
> > +                       compatible = "shared-dma-pool";
> > +                       reg = <0 0x90000000 0 0x8000>;
> > +                       no-map;
> > +               };
> > +
> > +               vdev0vring1: vdev0vring1@90008000 {
> > +                       compatible = "shared-dma-pool";
> > +                       reg = <0 0x90008000 0 0x8000>;
> > +                       no-map;
> > +               };
> > +
> > +               vdev1vring0: vdev1vring0@90010000 {
> > +                       compatible = "shared-dma-pool";
> > +                       reg = <0 0x90010000 0 0x8000>;
> > +                       no-map;
> > +               };
> > +
> > +               vdev1vring1: vdev1vring1@90018000 {
> > +                       compatible = "shared-dma-pool";
> > +                       reg = <0 0x90018000 0 0x8000>;
> > +                       no-map;
> > +               };
> > +
> > +               vdev0buffer: vdev0buffer {
> > +                       compatible = "shared-dma-pool";
> > +                       reg = <0 0x90400000 0 0x100000>;
> > +                       no-map;
> > +               };
> > +       };
> > +
> >
> > Peng Fan (9):
> >   dt-bindings: remoteproc: Convert imx-rproc to json-schema
> >   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
> >   remoteproc: add support to skip firmware load when recovery
> >   remoteproc: imx_rproc: surport early booted remote processor
> >   remoteproc: imx_rproc: parse early-booted property
> >   remoteproc: imx_proc: enable virtio/mailbox
> >   remoteproc: imx_rproc: add i.MX8QM/QXP
> >   remoteproc: imx_rproc: support i.MX7ULP
> >   remoteproc: imx_rproc: add i.MX8MM support
> >
> >  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
> >  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
> >  drivers/remoteproc/imx_rproc.c                     | 455
> +++++++++++++++++++--
> >  drivers/remoteproc/remoteproc_core.c               |  19 +-
> >  include/linux/remoteproc.h                         |   1 +
> >  5 files changed, 531 insertions(+), 72 deletions(-)  delete mode
> > 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> >  create mode 100644
> > Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
> >
> > --
> > 2.16.4
> >
Mathieu Poirier Feb. 20, 2020, 9:25 p.m. UTC | #3
On Wed, 19 Feb 2020 at 18:36, Peng Fan <peng.fan@nxp.com> wrote:
>
> Hi Mathieu,
>
> > Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> >
> > Hi Peng,
> >
> > On Wed, 19 Feb 2020 at 00:33, <peng.fan@nxp.com> wrote:
> > >
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > This patchset aim to replace NXP vendor imx_rpmsg.c driver.
> >
> > You mean remoteproc/imx_rproc.c ?  Upstream rpmsg/imx_rpmsg.c doesn't
> > exist.
>
> imx_rpmsg.c only in NXP vendor tree. This pachset is to use imx_rproc.c for
> rpmsg/virtio functions for i.MX SoC.
>
> >
> > >
> > > This patchset is tested with Loic PALLARDY's patch
> > > "remoteproc: add support for co-processor loaded and booted before
> > kernel"
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > >
> > hwork.kernel.org%2Fpatch%2F11265869%2F&amp;data=02%7C01%7Cpeng.f
> > an%40n
> > >
> > xp.com%7Ce1cb19e535a14b63d0da08d7b568fd56%7C686ea1d3bc2b4c6fa9
> > 2cd99c5c
> > >
> > 301635%7C0%7C0%7C637177334839497832&amp;sdata=aKQ%2Bulco63ba
> > YT%2BDZDk0
> > > VLt1NpkNuhrY3ssxiRCOcrM%3D&amp;reserved=0,
> > > and inspried from st's remoteproc early boot support.
> > > Since Loic's patch is still under review, just expect your comments :)
> >
> > Did you base your work on top of Loic's because your MCU firmware is always
> > loaded by the bootloader?
>
> I only took Loic's early-boot patch as base and apply my patchset.
>
> The mcu firmware currently only loaded by bootloader or system controller firmware.
> NXP released mcu firmware not support being loaded by Linux remoteproc.

Thanks for bringing this use case to the front.  I suspected such a
scenario existed but didn't spend too much time thinking about it
since none had been brought to our attention.  I will review your
patchset and continue the conversation with Arnaud with it in mind.  I
also invite you to join that conversation.

Regards,
Mathieu

>
>  If not please send another revision of your work
> > without early boot support.  When we have a clear view on how to proceed
> > with the early boot support you can send another set to enable that.
>
> I'll wait your new patch for early boot in remoteproc-core. Then I'll rebase
> and send a new version. Since I introduce big changes to imx_rproc.c, so
> I'll see whether any comments there.
>
> Thanks,
> Peng.
>
> >
> > Thanks,
> > Mathieu
> >
> > >
> > > Patch [1,2]/9: dt-bindings convert to json and new SoC support Patch
> > > 3/9: skip firmware load when recovery. To i.MX8, firmware is not
> > >            handled by Linux.
> > >
> > > Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
> > >       because NXP release image not have resoure table, so add resource
> > >       table in dts
> > >
> > > My test dts diff for i.MX8QXP MEK, but I have tested this patchset for
> > > i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
> > >
> > > +
> > > +       imx8x-cm4 {
> > > +               compatible = "fsl,imx8qxp-cm4";
> > > +               rsrc-table = <
> > > +                       0x1 0x2 0x0 0x0 0x18 0x5c
> > > +                       3
> > > +                       /*fw_rsc_vdev*/
> > > +                       7 0 1 0 0 0x200
> > > +                       /*fw_rsc_vdev_vring*/
> > > +                       0x90000000 4096 256 1 0
> > > +                       0x90008000 4096 256 2 0
> > > +                       3
> > > +                       /*fw_rsc_vdev*/
> > > +                       7 1 1 0 0 0x200
> > > +                       /*fw_rsc_vdev_vring*/
> > > +                       0x90010000 4096 256 1 0
> > > +                       0x90018000 4096 256 2 0
> > > +               >;
> > > +               early-booted;
> > > +               mbox-names = "tx", "rx", "rxdb";
> > > +               mboxes = <&lsio_mu5 0 1
> > > +                         &lsio_mu5 1 1
> > > +                         &lsio_mu5 3 1>;
> > > +               mub-partition = <3>;
> > > +               memory-region = <&vdev0vring0>, <&vdev0vring1>,
> > <&vdev0buffer>,
> > > +                               <&vdev1vring0>, <&vdev1vring1>,
> > <&vdev0buffer>;
> > > +       };
> > > +
> > > +       reserved-memory {
> > > +               #address-cells = <2>;
> > > +               #size-cells = <2>;
> > > +               ranges;
> > > +
> > > +               vdev0vring0: vdev0vring0@90000000 {
> > > +                       compatible = "shared-dma-pool";
> > > +                       reg = <0 0x90000000 0 0x8000>;
> > > +                       no-map;
> > > +               };
> > > +
> > > +               vdev0vring1: vdev0vring1@90008000 {
> > > +                       compatible = "shared-dma-pool";
> > > +                       reg = <0 0x90008000 0 0x8000>;
> > > +                       no-map;
> > > +               };
> > > +
> > > +               vdev1vring0: vdev1vring0@90010000 {
> > > +                       compatible = "shared-dma-pool";
> > > +                       reg = <0 0x90010000 0 0x8000>;
> > > +                       no-map;
> > > +               };
> > > +
> > > +               vdev1vring1: vdev1vring1@90018000 {
> > > +                       compatible = "shared-dma-pool";
> > > +                       reg = <0 0x90018000 0 0x8000>;
> > > +                       no-map;
> > > +               };
> > > +
> > > +               vdev0buffer: vdev0buffer {
> > > +                       compatible = "shared-dma-pool";
> > > +                       reg = <0 0x90400000 0 0x100000>;
> > > +                       no-map;
> > > +               };
> > > +       };
> > > +
> > >
> > > Peng Fan (9):
> > >   dt-bindings: remoteproc: Convert imx-rproc to json-schema
> > >   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
> > >   remoteproc: add support to skip firmware load when recovery
> > >   remoteproc: imx_rproc: surport early booted remote processor
> > >   remoteproc: imx_rproc: parse early-booted property
> > >   remoteproc: imx_proc: enable virtio/mailbox
> > >   remoteproc: imx_rproc: add i.MX8QM/QXP
> > >   remoteproc: imx_rproc: support i.MX7ULP
> > >   remoteproc: imx_rproc: add i.MX8MM support
> > >
> > >  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
> > >  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
> > >  drivers/remoteproc/imx_rproc.c                     | 455
> > +++++++++++++++++++--
> > >  drivers/remoteproc/remoteproc_core.c               |  19 +-
> > >  include/linux/remoteproc.h                         |   1 +
> > >  5 files changed, 531 insertions(+), 72 deletions(-)  delete mode
> > > 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> > >  create mode 100644
> > > Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
> > >
> > > --
> > > 2.16.4
> > >
Peng Fan Feb. 21, 2020, 1:35 a.m. UTC | #4
> Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> 
> On Wed, 19 Feb 2020 at 18:36, Peng Fan <peng.fan@nxp.com> wrote:
> >
> > Hi Mathieu,
> >
> > > Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support
> > > i.MX8/8M/7ULP
> > >
> > > Hi Peng,
> > >
> > > On Wed, 19 Feb 2020 at 00:33, <peng.fan@nxp.com> wrote:
> > > >
> > > > From: Peng Fan <peng.fan@nxp.com>
> > > >
> > > > This patchset aim to replace NXP vendor imx_rpmsg.c driver.
> > >
> > > You mean remoteproc/imx_rproc.c ?  Upstream rpmsg/imx_rpmsg.c
> > > doesn't exist.
> >
> > imx_rpmsg.c only in NXP vendor tree. This pachset is to use
> > imx_rproc.c for rpmsg/virtio functions for i.MX SoC.
> >
> > >
> > > >
> > > > This patchset is tested with Loic PALLARDY's patch
> > > > "remoteproc: add support for co-processor loaded and booted before
> > > kernel"
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2F
> > > > patc
> > > >
> > >
> hwork.kernel.org%2Fpatch%2F11265869%2F&amp;data=02%7C01%7Cpeng.f
> > > an%40n
> > > >
> > >
> xp.com%7Ce1cb19e535a14b63d0da08d7b568fd56%7C686ea1d3bc2b4c6fa9
> > > 2cd99c5c
> > > >
> > >
> 301635%7C0%7C0%7C637177334839497832&amp;sdata=aKQ%2Bulco63ba
> > > YT%2BDZDk0
> > > > VLt1NpkNuhrY3ssxiRCOcrM%3D&amp;reserved=0,
> > > > and inspried from st's remoteproc early boot support.
> > > > Since Loic's patch is still under review, just expect your
> > > > comments :)
> > >
> > > Did you base your work on top of Loic's because your MCU firmware is
> > > always loaded by the bootloader?
> >
> > I only took Loic's early-boot patch as base and apply my patchset.
> >
> > The mcu firmware currently only loaded by bootloader or system controller
> firmware.
> > NXP released mcu firmware not support being loaded by Linux remoteproc.
> 
> Thanks for bringing this use case to the front.  I suspected such a scenario
> existed but didn't spend too much time thinking about it since none had been
> brought to our attention. 

Actually to i.MX7ULP, M4 is booted first from hardware design and it
controls every things, A7 is under control of M4

To i.MX8/8X, M4 is booted by system control unit firmware for quick boot
for automotive CAN and Linux is booted later. Linux could only IPC to M4,
and nothing else.

To i.MX8M, M4 is booted by bootloader, but it could also be booted by Linux,
It is just NXP only support bootloader case.

 I will review your patchset and continue the
> conversation with Arnaud with it in mind.  I also invite you to join that
> conversation.

Appreciate.

Thanks,
Peng.

> 
> Regards,
> Mathieu
> 
> >
> >  If not please send another revision of your work
> > > without early boot support.  When we have a clear view on how to
> > > proceed with the early boot support you can send another set to enable
> that.
> >
> > I'll wait your new patch for early boot in remoteproc-core. Then I'll
> > rebase and send a new version. Since I introduce big changes to
> > imx_rproc.c, so I'll see whether any comments there.
> >
> > Thanks,
> > Peng.
> >
> > >
> > > Thanks,
> > > Mathieu
> > >
> > > >
> > > > Patch [1,2]/9: dt-bindings convert to json and new SoC support
> > > > Patch
> > > > 3/9: skip firmware load when recovery. To i.MX8, firmware is not
> > > >            handled by Linux.
> > > >
> > > > Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
> > > >       because NXP release image not have resoure table, so add
> resource
> > > >       table in dts
> > > >
> > > > My test dts diff for i.MX8QXP MEK, but I have tested this patchset
> > > > for i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
> > > >
> > > > +
> > > > +       imx8x-cm4 {
> > > > +               compatible = "fsl,imx8qxp-cm4";
> > > > +               rsrc-table = <
> > > > +                       0x1 0x2 0x0 0x0 0x18 0x5c
> > > > +                       3
> > > > +                       /*fw_rsc_vdev*/
> > > > +                       7 0 1 0 0 0x200
> > > > +                       /*fw_rsc_vdev_vring*/
> > > > +                       0x90000000 4096 256 1 0
> > > > +                       0x90008000 4096 256 2 0
> > > > +                       3
> > > > +                       /*fw_rsc_vdev*/
> > > > +                       7 1 1 0 0 0x200
> > > > +                       /*fw_rsc_vdev_vring*/
> > > > +                       0x90010000 4096 256 1 0
> > > > +                       0x90018000 4096 256 2 0
> > > > +               >;
> > > > +               early-booted;
> > > > +               mbox-names = "tx", "rx", "rxdb";
> > > > +               mboxes = <&lsio_mu5 0 1
> > > > +                         &lsio_mu5 1 1
> > > > +                         &lsio_mu5 3 1>;
> > > > +               mub-partition = <3>;
> > > > +               memory-region = <&vdev0vring0>, <&vdev0vring1>,
> > > <&vdev0buffer>,
> > > > +                               <&vdev1vring0>,
> <&vdev1vring1>,
> > > <&vdev0buffer>;
> > > > +       };
> > > > +
> > > > +       reserved-memory {
> > > > +               #address-cells = <2>;
> > > > +               #size-cells = <2>;
> > > > +               ranges;
> > > > +
> > > > +               vdev0vring0: vdev0vring0@90000000 {
> > > > +                       compatible = "shared-dma-pool";
> > > > +                       reg = <0 0x90000000 0 0x8000>;
> > > > +                       no-map;
> > > > +               };
> > > > +
> > > > +               vdev0vring1: vdev0vring1@90008000 {
> > > > +                       compatible = "shared-dma-pool";
> > > > +                       reg = <0 0x90008000 0 0x8000>;
> > > > +                       no-map;
> > > > +               };
> > > > +
> > > > +               vdev1vring0: vdev1vring0@90010000 {
> > > > +                       compatible = "shared-dma-pool";
> > > > +                       reg = <0 0x90010000 0 0x8000>;
> > > > +                       no-map;
> > > > +               };
> > > > +
> > > > +               vdev1vring1: vdev1vring1@90018000 {
> > > > +                       compatible = "shared-dma-pool";
> > > > +                       reg = <0 0x90018000 0 0x8000>;
> > > > +                       no-map;
> > > > +               };
> > > > +
> > > > +               vdev0buffer: vdev0buffer {
> > > > +                       compatible = "shared-dma-pool";
> > > > +                       reg = <0 0x90400000 0 0x100000>;
> > > > +                       no-map;
> > > > +               };
> > > > +       };
> > > > +
> > > >
> > > > Peng Fan (9):
> > > >   dt-bindings: remoteproc: Convert imx-rproc to json-schema
> > > >   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
> > > >   remoteproc: add support to skip firmware load when recovery
> > > >   remoteproc: imx_rproc: surport early booted remote processor
> > > >   remoteproc: imx_rproc: parse early-booted property
> > > >   remoteproc: imx_proc: enable virtio/mailbox
> > > >   remoteproc: imx_rproc: add i.MX8QM/QXP
> > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > >   remoteproc: imx_rproc: add i.MX8MM support
> > > >
> > > >  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
> > > >  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
> > > >  drivers/remoteproc/imx_rproc.c                     | 455
> > > +++++++++++++++++++--
> > > >  drivers/remoteproc/remoteproc_core.c               |  19 +-
> > > >  include/linux/remoteproc.h                         |   1 +
> > > >  5 files changed, 531 insertions(+), 72 deletions(-)  delete mode
> > > > 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> > > >  create mode 100644
> > > > Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
> > > >
> > > > --
> > > > 2.16.4
> > > >
Oleksij Rempel Feb. 21, 2020, 6:51 a.m. UTC | #5
Hi Peng,

i can't apply your patches on kernel master HEAD. Do I need some
extras?

Please add me to CC for this driver next time.

On Wed, Feb 19, 2020 at 03:27:36PM +0800, peng.fan@nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> This patchset aim to replace NXP vendor imx_rpmsg.c driver.
> 
> This patchset is tested with Loic PALLARDY's patch
> "remoteproc: add support for co-processor loaded and booted before kernel"
> https://patchwork.kernel.org/patch/11265869/,
> and inspried from st's remoteproc early boot support.
> Since Loic's patch is still under review, just expect your comments :)
> 
> Patch [1,2]/9: dt-bindings convert to json and new SoC support
> Patch 3/9: skip firmware load when recovery. To i.MX8, firmware is not
>            handled by Linux.
> 
> Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
>       because NXP release image not have resoure table, so add resource
>       table in dts
> 
> My test dts diff for i.MX8QXP MEK, but I have tested this patchset
> for i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
> 
> +
> +	imx8x-cm4 {
> +		compatible = "fsl,imx8qxp-cm4";
> +		rsrc-table = <
> +			0x1 0x2 0x0 0x0 0x18 0x5c
> +			3
> +			/*fw_rsc_vdev*/
> +			7 0 1 0 0 0x200
> +			/*fw_rsc_vdev_vring*/
> +			0x90000000 4096 256 1 0
> +			0x90008000 4096 256 2 0
> +			3
> +			/*fw_rsc_vdev*/
> +			7 1 1 0 0 0x200
> +			/*fw_rsc_vdev_vring*/
> +			0x90010000 4096 256 1 0
> +			0x90018000 4096 256 2 0
> +		>;
> +		early-booted;
> +		mbox-names = "tx", "rx", "rxdb";
> +		mboxes = <&lsio_mu5 0 1
> +			  &lsio_mu5 1 1
> +			  &lsio_mu5 3 1>;
> +		mub-partition = <3>;
> +		memory-region = <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>,
> +				<&vdev1vring0>, <&vdev1vring1>, <&vdev0buffer>;
> +	};
> +
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		vdev0vring0: vdev0vring0@90000000 {
> +                       compatible = "shared-dma-pool";
> +			reg = <0 0x90000000 0 0x8000>;
> +			no-map;
> +		};
> +
> +		vdev0vring1: vdev0vring1@90008000 {
> +                       compatible = "shared-dma-pool";
> +			reg = <0 0x90008000 0 0x8000>;
> +			no-map;
> +		};
> +
> +		vdev1vring0: vdev1vring0@90010000 {
> +                       compatible = "shared-dma-pool";
> +			reg = <0 0x90010000 0 0x8000>;
> +			no-map;
> +		};
> +
> +		vdev1vring1: vdev1vring1@90018000 {
> +                       compatible = "shared-dma-pool";
> +			reg = <0 0x90018000 0 0x8000>;
> +			no-map;
> +		};
> +
> +		vdev0buffer: vdev0buffer {
> +                       compatible = "shared-dma-pool";
> +			reg = <0 0x90400000 0 0x100000>;
> +			no-map;
> +		};
> +	};
> +
> 
> Peng Fan (9):
>   dt-bindings: remoteproc: Convert imx-rproc to json-schema
>   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
>   remoteproc: add support to skip firmware load when recovery
>   remoteproc: imx_rproc: surport early booted remote processor
>   remoteproc: imx_rproc: parse early-booted property
>   remoteproc: imx_proc: enable virtio/mailbox
>   remoteproc: imx_rproc: add i.MX8QM/QXP
>   remoteproc: imx_rproc: support i.MX7ULP
>   remoteproc: imx_rproc: add i.MX8MM support
> 
>  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
>  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
>  drivers/remoteproc/imx_rproc.c                     | 455 +++++++++++++++++++--
>  drivers/remoteproc/remoteproc_core.c               |  19 +-
>  include/linux/remoteproc.h                         |   1 +
>  5 files changed, 531 insertions(+), 72 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
> 
> -- 
> 2.16.4
> 
> 
>
Peng Fan Feb. 21, 2020, 6:56 a.m. UTC | #6
Hi Oleksij,

> Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> 
> Hi Peng,
> 
> i can't apply your patches on kernel master HEAD. Do I need some extras?

The patchset is based on Shawn's for-next branch. With Loic' V4 patch
applied as showed in cover-letter.

> 
> Please add me to CC for this driver next time.

I used get_maintainer.pl to get the to/cc list. Will add you in v2, but may
delay for a while, sine early boot stuff not settle down until now.

Thanks,
Peng.

> 
> On Wed, Feb 19, 2020 at 03:27:36PM +0800, peng.fan@nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > This patchset aim to replace NXP vendor imx_rpmsg.c driver.
> >
> > This patchset is tested with Loic PALLARDY's patch
> > "remoteproc: add support for co-processor loaded and booted before
> kernel"
> > https://patchwork.kernel.org/patch/11265869/,
> > and inspried from st's remoteproc early boot support.
> > Since Loic's patch is still under review, just expect your comments :)
> >
> > Patch [1,2]/9: dt-bindings convert to json and new SoC support Patch
> > 3/9: skip firmware load when recovery. To i.MX8, firmware is not
> >            handled by Linux.
> >
> > Patch [4-9]/9: i.MX specific part to support rpmsg/virtio with mbox.
> >       because NXP release image not have resoure table, so add resource
> >       table in dts
> >
> > My test dts diff for i.MX8QXP MEK, but I have tested this patchset for
> > i.MX8QXP MEK, i.MX8MM EVK, i.MX7ULP EVK:
> >
> > +
> > +	imx8x-cm4 {
> > +		compatible = "fsl,imx8qxp-cm4";
> > +		rsrc-table = <
> > +			0x1 0x2 0x0 0x0 0x18 0x5c
> > +			3
> > +			/*fw_rsc_vdev*/
> > +			7 0 1 0 0 0x200
> > +			/*fw_rsc_vdev_vring*/
> > +			0x90000000 4096 256 1 0
> > +			0x90008000 4096 256 2 0
> > +			3
> > +			/*fw_rsc_vdev*/
> > +			7 1 1 0 0 0x200
> > +			/*fw_rsc_vdev_vring*/
> > +			0x90010000 4096 256 1 0
> > +			0x90018000 4096 256 2 0
> > +		>;
> > +		early-booted;
> > +		mbox-names = "tx", "rx", "rxdb";
> > +		mboxes = <&lsio_mu5 0 1
> > +			  &lsio_mu5 1 1
> > +			  &lsio_mu5 3 1>;
> > +		mub-partition = <3>;
> > +		memory-region = <&vdev0vring0>, <&vdev0vring1>,
> <&vdev0buffer>,
> > +				<&vdev1vring0>, <&vdev1vring1>, <&vdev0buffer>;
> > +	};
> > +
> > +	reserved-memory {
> > +		#address-cells = <2>;
> > +		#size-cells = <2>;
> > +		ranges;
> > +
> > +		vdev0vring0: vdev0vring0@90000000 {
> > +                       compatible = "shared-dma-pool";
> > +			reg = <0 0x90000000 0 0x8000>;
> > +			no-map;
> > +		};
> > +
> > +		vdev0vring1: vdev0vring1@90008000 {
> > +                       compatible = "shared-dma-pool";
> > +			reg = <0 0x90008000 0 0x8000>;
> > +			no-map;
> > +		};
> > +
> > +		vdev1vring0: vdev1vring0@90010000 {
> > +                       compatible = "shared-dma-pool";
> > +			reg = <0 0x90010000 0 0x8000>;
> > +			no-map;
> > +		};
> > +
> > +		vdev1vring1: vdev1vring1@90018000 {
> > +                       compatible = "shared-dma-pool";
> > +			reg = <0 0x90018000 0 0x8000>;
> > +			no-map;
> > +		};
> > +
> > +		vdev0buffer: vdev0buffer {
> > +                       compatible = "shared-dma-pool";
> > +			reg = <0 0x90400000 0 0x100000>;
> > +			no-map;
> > +		};
> > +	};
> > +
> >
> > Peng Fan (9):
> >   dt-bindings: remoteproc: Convert imx-rproc to json-schema
> >   dt-bindings: remoteproc: imx-rproc: support i.MX[8,8M,7ULP]
> >   remoteproc: add support to skip firmware load when recovery
> >   remoteproc: imx_rproc: surport early booted remote processor
> >   remoteproc: imx_rproc: parse early-booted property
> >   remoteproc: imx_proc: enable virtio/mailbox
> >   remoteproc: imx_rproc: add i.MX8QM/QXP
> >   remoteproc: imx_rproc: support i.MX7ULP
> >   remoteproc: imx_rproc: add i.MX8MM support
> >
> >  .../devicetree/bindings/remoteproc/imx-rproc.txt   |  33 --
> >  .../devicetree/bindings/remoteproc/imx-rproc.yaml  |  95 +++++
> >  drivers/remoteproc/imx_rproc.c                     | 455
> +++++++++++++++++++--
> >  drivers/remoteproc/remoteproc_core.c               |  19 +-
> >  include/linux/remoteproc.h                         |   1 +
> >  5 files changed, 531 insertions(+), 72 deletions(-)  delete mode
> > 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> >  create mode 100644
> > Documentation/devicetree/bindings/remoteproc/imx-rproc.yaml
> >
> > --
> > 2.16.4
> >
> >
> >
> 
> --
> Pengutronix e.K.                           |
> |
> Steuerwalder Str. 21                       |
> http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone:
> +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:
> +49-5121-206917-5555 |
Uwe Kleine-König Feb. 21, 2020, 7:03 a.m. UTC | #7
Hello,

On Fri, Feb 21, 2020 at 06:56:02AM +0000, Peng Fan wrote:
> > Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> > i can't apply your patches on kernel master HEAD. Do I need some extras?
> 
> The patchset is based on Shawn's for-next branch. With Loic' V4 patch
> applied as showed in cover-letter.

BTW, the generic approach to formalize that is using --base to
git-format-patch (or git-send-email). See
https://people.kernel.org/monsieuricon/all-patches-must-include-base-commit-info

Best regards
Uwe
Peng Fan Feb. 21, 2020, 7:08 a.m. UTC | #8
> Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support i.MX8/8M/7ULP
> 
> Hello,
> 
> On Fri, Feb 21, 2020 at 06:56:02AM +0000, Peng Fan wrote:
> > > Subject: Re: [PATCH 0/9] remoteproc: imx_rproc: support
> > > i.MX8/8M/7ULP i can't apply your patches on kernel master HEAD. Do I
> need some extras?
> >
> > The patchset is based on Shawn's for-next branch. With Loic' V4 patch
> > applied as showed in cover-letter.
> 
> BTW, the generic approach to formalize that is using --base to
> git-format-patch (or git-send-email). See

Thanks for tips. I'll follow when do new patches.

Thanks,
Peng.

> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpeople
> .kernel.org%2Fmonsieuricon%2Fall-patches-must-include-base-commit-info&
> amp;data=02%7C01%7Cpeng.fan%40nxp.com%7C9cd4c63fe8974353439408
> d7b69c1b2f%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63717
> 8653890207488&amp;sdata=6fvjPjemWlSzZVcDMqWPtjuyEFdOBOttGcO7bS
> uxsyY%3D&amp;reserved=0
> 
> Best regards
> Uwe
> 
> --
> Pengutronix e.K.                           | Uwe Kleine-König
> |
> Industrial Linux Solutions                 |
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.
> pengutronix.de%2F&amp;data=02%7C01%7Cpeng.fan%40nxp.com%7C9cd4c
> 63fe8974353439408d7b69c1b2f%7C686ea1d3bc2b4c6fa92cd99c5c301635%
> 7C0%7C0%7C637178653890207488&amp;sdata=1XRpT97ML%2FLpYjdbZb%
> 2BTdp6DfW6FSMq0Jnxv%2B7%2BX59Y%3D&amp;reserved=0 |