All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adam Ford <aford173@gmail.com>
To: Nicolas Dufresne <nicolas@ndufresne.ca>
Cc: linux-media <linux-media@vger.kernel.org>,
	 Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Chris Healy <cphealy@gmail.com>,
	 Rob Herring <robh+dt@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	 Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	 Fabio Estevam <festevam@gmail.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Lucas Stach <l.stach@pengutronix.de>,
	devicetree <devicetree@vger.kernel.org>,
	 arm-soc <linux-arm-kernel@lists.infradead.org>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	 "open list:HANTRO VPU CODEC DRIVER"
	<linux-rockchip@lists.infradead.org>,
	 "open list:STAGING SUBSYSTEM" <linux-staging@lists.linux.dev>
Subject: Re: [RFC 0/5] Split iMX8MQ Hantro VPU into G1 and G2 with blk-ctrl support
Date: Mon, 6 Dec 2021 17:25:23 -0600	[thread overview]
Message-ID: <CAHCN7xLh-daWTOJXxQmrjprX8uT6xn5WjvZo1M3xPW4W27vusw@mail.gmail.com> (raw)
In-Reply-To: <CAHCN7xKb4YhH83oOnbXtkAKWk-3QWNNxE8EhVJ=i7xKW0wjYXw@mail.gmail.com>

On Mon, Dec 6, 2021 at 4:30 PM Adam Ford <aford173@gmail.com> wrote:
>
> On Mon, Dec 6, 2021 at 2:51 PM Nicolas Dufresne <nicolas@ndufresne.ca> wrote:
> >
> > Le dimanche 05 décembre 2021 à 13:51 -0600, Adam Ford a écrit :
> > > On Sun, Dec 5, 2021 at 12:16 PM Adam Ford <aford173@gmail.com> wrote:
> > > >
> > > > Currently, the VPU in the i.MQ8MQ is appearing as one codec, but in reality, it's
> > > > two IP blocks called G1 and G2.  There is initialization code in VPU code to
> > > > pull some clocks, resets and other features which has been integrated into
> > > > the vpu-blk-ctrl for the i.MX8M Mini and a similar method can be used to make
> > > > the VPU codec's operate as stand-alone cores without having to know the details
> > > > of each other or the quirks unique to the i.MX8MQ, so the remaining code can be
> > > > left more generic.
> > > >
> > > > This series was started by Lucas Stach, and picked up by me so some patches have
> > > > his s-o-b and mine where I might have changed a few minor items.  It's in an RFC state
> > > > because the G2 VP9 operations appear to hang, but the parent code from which I started doesn't
> > > > appear to show VP9 support, and it looks like it should.
> > > >
> > > > since the g-streamer and media trees are in a constant state of change, this series is based on
> > > > git://linuxtv.org/hverkuil/media_tree.git for-v5.17e
> > > >
> > >
> > > I forgot to post Fluster results.
> > >
> > > Before the patches to this branch:
> > >
> > > 2gst-main] root@localhost:~/gstreamer/fluster# ./fluster.py list -c |grep -i v4l
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > > [gst-main] root@localhost:~/gstreamer/fluster#
> > >
> > > There was no VP9 support.
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > GStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 58.787 secs
> > >
> > > AFTER this series, two decoders appear:
> > >
> > > [   15.919137] hantro-vpu 38300000.video-codec: registered
> > > nxp,imx8mq-vpu-g1-dec as /dev/video0
> > > [   15.983579] hantro-vpu 38310000.video-codec: registered
> > > nxp,imx8mq-vpu-g2-dec as /dev/video1
> > >
> > > VP9 was listed:
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >
> > > ./fluster.py run -d GStreamer-VP8-V4L2SL-Gst1.0
> > > Ran 55/61 tests successfully               in 8.565 secs
> > >
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 60.269 secs
> > >
> > > Same results for H.264
> > >
> > > VP9 Hangs, where it didn't even appear as available before:
> > >
> > > ./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
> > > ****************************************************************************************************
> > > Running test suite VP9-TEST-VECTORS with decoder GStreamer-VP9-V4L2SL-Gst1.0
> > > Using 4 parallel job(s)
> > > ****************************************************************************************************
> > >
> > > [TEST SUITE      ] (DECODER                    ) TEST VECTOR
> > >                           ... RESULT
> > > ----------------------------------------------------------------------
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-00.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-01.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-02.webm                     ... Succes
> > >
> > > <hang > - and yes, 'Success' didnt' finish writing to the serial port.
> >
> > Looks like hope to me ! Do you get further with -j 1 (one concurrent decode) ?
>
> Anything after the first attempt appears to fail.  I haven't figured
> out if it's the G2 code or the power domain stuff.  Since VP9 didn't
> work I migrated it to use the vpu-blk-ctrl, I can't really compare to
> know if it was a regression or an improvement.
>
> :-)
>
I managed to get the vpu-blk-ctrl updated to address the G2 hanging.

./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
Ran 144/303 tests successfully               in 224.847 secs

Since I couldn't get it to work before the split, I am not sure if
this is good or not.  I also wasn't sure if I needed to allocate more
CMA for this.

If/when people can give me some feedback on the RFC's, I'll submit an
updated formal patch for both the i.MQ8MQ and the i.MQ8M Mini as one
series based on  "for-v5.17e" from
git://linuxtv.org/hverkuil/media_tree.git

I wasn't sure if I needed to break up the migration from a combined
VPU to split G1 and G2.  I might need some help/suggestions on the
YAML, because I struggle with that part a little, but I'd like the 8MM
to use the 8MQ dt-binding yaml file since they are so similar.

I hope to have some more time this week because my weekends are
completely booked for the rest of the year, and leave for London, on
23 Dec 2021 and I won't return until 5 Jan 2022.


> adam
>
> >
> > >
> > >
> > >
> > > > Adam Ford (2):
> > > >   media: hantro: split i.MX8MQ G1 and G2 code
> > > >   arm64: dts: imx8mq: Split i.MX8MQ G1 and G2 with vpu-blk-ctrl
> > > >
> > > > Lucas Stach (3):
> > > >   dt-bindings: power: imx8mq: add defines for VPU blk-ctrl domains
> > > >   dt-bindings: soc: add binding for i.MX8MQ VPU blk-ctrl
> > > >   soc: imx: imx8m-blk-ctrl: add i.MX8MQ VPU blk-ctrl
> > > >
> > > >  .../soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml      |  71 +++++++++++
> > > >  arch/arm64/boot/dts/freescale/imx8mq.dtsi     |  69 ++++++----
> > > >  drivers/soc/imx/imx8m-blk-ctrl.c              |  67 ++++++++++
> > > >  drivers/staging/media/hantro/hantro_drv.c     |   4 +-
> > > >  drivers/staging/media/hantro/hantro_hw.h      |   2 +-
> > > >  drivers/staging/media/hantro/imx8m_vpu_hw.c   | 119 +++---------------
> > > >  include/dt-bindings/power/imx8mq-power.h      |   3 +
> > > >  7 files changed, 205 insertions(+), 130 deletions(-)
> > > >  create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml
> > > >
> > > > --
> > > > 2.32.0
> > > >
> >

WARNING: multiple messages have this Message-ID (diff)
From: Adam Ford <aford173@gmail.com>
To: Nicolas Dufresne <nicolas@ndufresne.ca>
Cc: linux-media <linux-media@vger.kernel.org>,
	 Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Chris Healy <cphealy@gmail.com>,
	 Rob Herring <robh+dt@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	 Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	 Fabio Estevam <festevam@gmail.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Lucas Stach <l.stach@pengutronix.de>,
	devicetree <devicetree@vger.kernel.org>,
	 arm-soc <linux-arm-kernel@lists.infradead.org>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	 "open list:HANTRO VPU CODEC DRIVER"
	<linux-rockchip@lists.infradead.org>,
	 "open list:STAGING SUBSYSTEM" <linux-staging@lists.linux.dev>
Subject: Re: [RFC 0/5] Split iMX8MQ Hantro VPU into G1 and G2 with blk-ctrl support
Date: Mon, 6 Dec 2021 17:25:23 -0600	[thread overview]
Message-ID: <CAHCN7xLh-daWTOJXxQmrjprX8uT6xn5WjvZo1M3xPW4W27vusw@mail.gmail.com> (raw)
In-Reply-To: <CAHCN7xKb4YhH83oOnbXtkAKWk-3QWNNxE8EhVJ=i7xKW0wjYXw@mail.gmail.com>

On Mon, Dec 6, 2021 at 4:30 PM Adam Ford <aford173@gmail.com> wrote:
>
> On Mon, Dec 6, 2021 at 2:51 PM Nicolas Dufresne <nicolas@ndufresne.ca> wrote:
> >
> > Le dimanche 05 décembre 2021 à 13:51 -0600, Adam Ford a écrit :
> > > On Sun, Dec 5, 2021 at 12:16 PM Adam Ford <aford173@gmail.com> wrote:
> > > >
> > > > Currently, the VPU in the i.MQ8MQ is appearing as one codec, but in reality, it's
> > > > two IP blocks called G1 and G2.  There is initialization code in VPU code to
> > > > pull some clocks, resets and other features which has been integrated into
> > > > the vpu-blk-ctrl for the i.MX8M Mini and a similar method can be used to make
> > > > the VPU codec's operate as stand-alone cores without having to know the details
> > > > of each other or the quirks unique to the i.MX8MQ, so the remaining code can be
> > > > left more generic.
> > > >
> > > > This series was started by Lucas Stach, and picked up by me so some patches have
> > > > his s-o-b and mine where I might have changed a few minor items.  It's in an RFC state
> > > > because the G2 VP9 operations appear to hang, but the parent code from which I started doesn't
> > > > appear to show VP9 support, and it looks like it should.
> > > >
> > > > since the g-streamer and media trees are in a constant state of change, this series is based on
> > > > git://linuxtv.org/hverkuil/media_tree.git for-v5.17e
> > > >
> > >
> > > I forgot to post Fluster results.
> > >
> > > Before the patches to this branch:
> > >
> > > 2gst-main] root@localhost:~/gstreamer/fluster# ./fluster.py list -c |grep -i v4l
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > > [gst-main] root@localhost:~/gstreamer/fluster#
> > >
> > > There was no VP9 support.
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > GStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 58.787 secs
> > >
> > > AFTER this series, two decoders appear:
> > >
> > > [   15.919137] hantro-vpu 38300000.video-codec: registered
> > > nxp,imx8mq-vpu-g1-dec as /dev/video0
> > > [   15.983579] hantro-vpu 38310000.video-codec: registered
> > > nxp,imx8mq-vpu-g2-dec as /dev/video1
> > >
> > > VP9 was listed:
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >
> > > ./fluster.py run -d GStreamer-VP8-V4L2SL-Gst1.0
> > > Ran 55/61 tests successfully               in 8.565 secs
> > >
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 60.269 secs
> > >
> > > Same results for H.264
> > >
> > > VP9 Hangs, where it didn't even appear as available before:
> > >
> > > ./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
> > > ****************************************************************************************************
> > > Running test suite VP9-TEST-VECTORS with decoder GStreamer-VP9-V4L2SL-Gst1.0
> > > Using 4 parallel job(s)
> > > ****************************************************************************************************
> > >
> > > [TEST SUITE      ] (DECODER                    ) TEST VECTOR
> > >                           ... RESULT
> > > ----------------------------------------------------------------------
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-00.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-01.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-02.webm                     ... Succes
> > >
> > > <hang > - and yes, 'Success' didnt' finish writing to the serial port.
> >
> > Looks like hope to me ! Do you get further with -j 1 (one concurrent decode) ?
>
> Anything after the first attempt appears to fail.  I haven't figured
> out if it's the G2 code or the power domain stuff.  Since VP9 didn't
> work I migrated it to use the vpu-blk-ctrl, I can't really compare to
> know if it was a regression or an improvement.
>
> :-)
>
I managed to get the vpu-blk-ctrl updated to address the G2 hanging.

./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
Ran 144/303 tests successfully               in 224.847 secs

Since I couldn't get it to work before the split, I am not sure if
this is good or not.  I also wasn't sure if I needed to allocate more
CMA for this.

If/when people can give me some feedback on the RFC's, I'll submit an
updated formal patch for both the i.MQ8MQ and the i.MQ8M Mini as one
series based on  "for-v5.17e" from
git://linuxtv.org/hverkuil/media_tree.git

I wasn't sure if I needed to break up the migration from a combined
VPU to split G1 and G2.  I might need some help/suggestions on the
YAML, because I struggle with that part a little, but I'd like the 8MM
to use the 8MQ dt-binding yaml file since they are so similar.

I hope to have some more time this week because my weekends are
completely booked for the rest of the year, and leave for London, on
23 Dec 2021 and I won't return until 5 Jan 2022.


> adam
>
> >
> > >
> > >
> > >
> > > > Adam Ford (2):
> > > >   media: hantro: split i.MX8MQ G1 and G2 code
> > > >   arm64: dts: imx8mq: Split i.MX8MQ G1 and G2 with vpu-blk-ctrl
> > > >
> > > > Lucas Stach (3):
> > > >   dt-bindings: power: imx8mq: add defines for VPU blk-ctrl domains
> > > >   dt-bindings: soc: add binding for i.MX8MQ VPU blk-ctrl
> > > >   soc: imx: imx8m-blk-ctrl: add i.MX8MQ VPU blk-ctrl
> > > >
> > > >  .../soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml      |  71 +++++++++++
> > > >  arch/arm64/boot/dts/freescale/imx8mq.dtsi     |  69 ++++++----
> > > >  drivers/soc/imx/imx8m-blk-ctrl.c              |  67 ++++++++++
> > > >  drivers/staging/media/hantro/hantro_drv.c     |   4 +-
> > > >  drivers/staging/media/hantro/hantro_hw.h      |   2 +-
> > > >  drivers/staging/media/hantro/imx8m_vpu_hw.c   | 119 +++---------------
> > > >  include/dt-bindings/power/imx8mq-power.h      |   3 +
> > > >  7 files changed, 205 insertions(+), 130 deletions(-)
> > > >  create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml
> > > >
> > > > --
> > > > 2.32.0
> > > >
> >

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

WARNING: multiple messages have this Message-ID (diff)
From: Adam Ford <aford173@gmail.com>
To: Nicolas Dufresne <nicolas@ndufresne.ca>
Cc: linux-media <linux-media@vger.kernel.org>,
	 Benjamin Gaignard <benjamin.gaignard@collabora.com>,
	Chris Healy <cphealy@gmail.com>,
	 Rob Herring <robh+dt@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	 Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	 Fabio Estevam <festevam@gmail.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Lucas Stach <l.stach@pengutronix.de>,
	devicetree <devicetree@vger.kernel.org>,
	 arm-soc <linux-arm-kernel@lists.infradead.org>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	 "open list:HANTRO VPU CODEC DRIVER"
	<linux-rockchip@lists.infradead.org>,
	 "open list:STAGING SUBSYSTEM" <linux-staging@lists.linux.dev>
Subject: Re: [RFC 0/5] Split iMX8MQ Hantro VPU into G1 and G2 with blk-ctrl support
Date: Mon, 6 Dec 2021 17:25:23 -0600	[thread overview]
Message-ID: <CAHCN7xLh-daWTOJXxQmrjprX8uT6xn5WjvZo1M3xPW4W27vusw@mail.gmail.com> (raw)
In-Reply-To: <CAHCN7xKb4YhH83oOnbXtkAKWk-3QWNNxE8EhVJ=i7xKW0wjYXw@mail.gmail.com>

On Mon, Dec 6, 2021 at 4:30 PM Adam Ford <aford173@gmail.com> wrote:
>
> On Mon, Dec 6, 2021 at 2:51 PM Nicolas Dufresne <nicolas@ndufresne.ca> wrote:
> >
> > Le dimanche 05 décembre 2021 à 13:51 -0600, Adam Ford a écrit :
> > > On Sun, Dec 5, 2021 at 12:16 PM Adam Ford <aford173@gmail.com> wrote:
> > > >
> > > > Currently, the VPU in the i.MQ8MQ is appearing as one codec, but in reality, it's
> > > > two IP blocks called G1 and G2.  There is initialization code in VPU code to
> > > > pull some clocks, resets and other features which has been integrated into
> > > > the vpu-blk-ctrl for the i.MX8M Mini and a similar method can be used to make
> > > > the VPU codec's operate as stand-alone cores without having to know the details
> > > > of each other or the quirks unique to the i.MX8MQ, so the remaining code can be
> > > > left more generic.
> > > >
> > > > This series was started by Lucas Stach, and picked up by me so some patches have
> > > > his s-o-b and mine where I might have changed a few minor items.  It's in an RFC state
> > > > because the G2 VP9 operations appear to hang, but the parent code from which I started doesn't
> > > > appear to show VP9 support, and it looks like it should.
> > > >
> > > > since the g-streamer and media trees are in a constant state of change, this series is based on
> > > > git://linuxtv.org/hverkuil/media_tree.git for-v5.17e
> > > >
> > >
> > > I forgot to post Fluster results.
> > >
> > > Before the patches to this branch:
> > >
> > > 2gst-main] root@localhost:~/gstreamer/fluster# ./fluster.py list -c |grep -i v4l
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > > [gst-main] root@localhost:~/gstreamer/fluster#
> > >
> > > There was no VP9 support.
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > GStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 58.787 secs
> > >
> > > AFTER this series, two decoders appear:
> > >
> > > [   15.919137] hantro-vpu 38300000.video-codec: registered
> > > nxp,imx8mq-vpu-g1-dec as /dev/video0
> > > [   15.983579] hantro-vpu 38310000.video-codec: registered
> > > nxp,imx8mq-vpu-g2-dec as /dev/video1
> > >
> > > VP9 was listed:
> > >
> > >     GStreamer-H.264-V4L2-Gst1.0: GStreamer H.264 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.264-V4L2SL-Gst1.0: GStreamer H.264 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-H.265-V4L2-Gst1.0: GStreamer H.265 V4L2 decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2-Gst1.0: GStreamer VP8 V4L2 decoder for GStreamer 1.0... ❌
> > >     GStreamer-VP8-V4L2SL-Gst1.0: GStreamer VP8 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-VP9-V4L2SL-Gst1.0: GStreamer VP9 V4L2SL decoder for
> > > GStreamer 1.0... ✔️
> > >     GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for
> > > GStreamer 1.0... ❌
> > >
> > > ./fluster.py run -d GStreamer-VP8-V4L2SL-Gst1.0
> > > Ran 55/61 tests successfully               in 8.565 secs
> > >
> > >
> > > ./fluster.py run -dGStreamer-H.264-V4L2SL-Gst1.0
> > > Ran 90/135 tests successfully               in 60.269 secs
> > >
> > > Same results for H.264
> > >
> > > VP9 Hangs, where it didn't even appear as available before:
> > >
> > > ./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
> > > ****************************************************************************************************
> > > Running test suite VP9-TEST-VECTORS with decoder GStreamer-VP9-V4L2SL-Gst1.0
> > > Using 4 parallel job(s)
> > > ****************************************************************************************************
> > >
> > > [TEST SUITE      ] (DECODER                    ) TEST VECTOR
> > >                           ... RESULT
> > > ----------------------------------------------------------------------
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-00.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-01.webm                     ... Success
> > > [VP9-TEST-VECTORS] (GStreamer-VP9-V4L2SL-Gst1.0)
> > > vp90-2-00-quantizer-02.webm                     ... Succes
> > >
> > > <hang > - and yes, 'Success' didnt' finish writing to the serial port.
> >
> > Looks like hope to me ! Do you get further with -j 1 (one concurrent decode) ?
>
> Anything after the first attempt appears to fail.  I haven't figured
> out if it's the G2 code or the power domain stuff.  Since VP9 didn't
> work I migrated it to use the vpu-blk-ctrl, I can't really compare to
> know if it was a regression or an improvement.
>
> :-)
>
I managed to get the vpu-blk-ctrl updated to address the G2 hanging.

./fluster.py run -d GStreamer-VP9-V4L2SL-Gst1.0
Ran 144/303 tests successfully               in 224.847 secs

Since I couldn't get it to work before the split, I am not sure if
this is good or not.  I also wasn't sure if I needed to allocate more
CMA for this.

If/when people can give me some feedback on the RFC's, I'll submit an
updated formal patch for both the i.MQ8MQ and the i.MQ8M Mini as one
series based on  "for-v5.17e" from
git://linuxtv.org/hverkuil/media_tree.git

I wasn't sure if I needed to break up the migration from a combined
VPU to split G1 and G2.  I might need some help/suggestions on the
YAML, because I struggle with that part a little, but I'd like the 8MM
to use the 8MQ dt-binding yaml file since they are so similar.

I hope to have some more time this week because my weekends are
completely booked for the rest of the year, and leave for London, on
23 Dec 2021 and I won't return until 5 Jan 2022.


> adam
>
> >
> > >
> > >
> > >
> > > > Adam Ford (2):
> > > >   media: hantro: split i.MX8MQ G1 and G2 code
> > > >   arm64: dts: imx8mq: Split i.MX8MQ G1 and G2 with vpu-blk-ctrl
> > > >
> > > > Lucas Stach (3):
> > > >   dt-bindings: power: imx8mq: add defines for VPU blk-ctrl domains
> > > >   dt-bindings: soc: add binding for i.MX8MQ VPU blk-ctrl
> > > >   soc: imx: imx8m-blk-ctrl: add i.MX8MQ VPU blk-ctrl
> > > >
> > > >  .../soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml      |  71 +++++++++++
> > > >  arch/arm64/boot/dts/freescale/imx8mq.dtsi     |  69 ++++++----
> > > >  drivers/soc/imx/imx8m-blk-ctrl.c              |  67 ++++++++++
> > > >  drivers/staging/media/hantro/hantro_drv.c     |   4 +-
> > > >  drivers/staging/media/hantro/hantro_hw.h      |   2 +-
> > > >  drivers/staging/media/hantro/imx8m_vpu_hw.c   | 119 +++---------------
> > > >  include/dt-bindings/power/imx8mq-power.h      |   3 +
> > > >  7 files changed, 205 insertions(+), 130 deletions(-)
> > > >  create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx8mq-vpu-blk-ctrl.yaml
> > > >
> > > > --
> > > > 2.32.0
> > > >
> >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-12-06 23:25 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-05 18:16 [RFC 0/5] Split iMX8MQ Hantro VPU into G1 and G2 with blk-ctrl support Adam Ford
2021-12-05 18:16 ` Adam Ford
2021-12-05 18:16 ` Adam Ford
2021-12-05 18:16 ` [RFC 1/5] dt-bindings: power: imx8mq: add defines for VPU blk-ctrl domains Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16 ` [RFC 2/5] dt-bindings: soc: add binding for i.MX8MQ VPU blk-ctrl Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-06 14:25   ` Rob Herring
2021-12-06 14:25     ` Rob Herring
2021-12-06 14:25     ` Rob Herring
2021-12-05 18:16 ` [RFC 3/5] soc: imx: imx8m-blk-ctrl: add " Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16 ` [RFC 4/5] media: hantro: split i.MX8MQ G1 and G2 code Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16 ` [RFC 5/5] arm64: dts: imx8mq: Split i.MX8MQ G1 and G2 with vpu-blk-ctrl Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 18:16   ` Adam Ford
2021-12-05 19:51 ` [RFC 0/5] Split iMX8MQ Hantro VPU into G1 and G2 with blk-ctrl support Adam Ford
2021-12-05 19:51   ` Adam Ford
2021-12-05 19:51   ` Adam Ford
2021-12-06 20:51   ` Nicolas Dufresne
2021-12-06 20:51     ` Nicolas Dufresne
2021-12-06 20:51     ` Nicolas Dufresne
2021-12-06 22:30     ` Adam Ford
2021-12-06 22:30       ` Adam Ford
2021-12-06 22:30       ` Adam Ford
2021-12-06 23:25       ` Adam Ford [this message]
2021-12-06 23:25         ` Adam Ford
2021-12-06 23:25         ` Adam Ford

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=CAHCN7xLh-daWTOJXxQmrjprX8uT6xn5WjvZo1M3xPW4W27vusw@mail.gmail.com \
    --to=aford173@gmail.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=cphealy@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=ezequiel@vanguardiasur.com.ar \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=nicolas@ndufresne.ca \
    --cc=p.zabel@pengutronix.de \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.