Re: Issue with fw_devlink=on on 5.14

From: Maxime Ripard
Date: Fri Sep 17 2021 - 11:48:32 EST


On Fri, Sep 17, 2021 at 06:32:45AM +0200, Jernej Škrabec wrote:
> Dne petek, 17. september 2021 ob 04:55:22 CEST je Saravana Kannan napisal(a):
> > On Wed, Sep 15, 2021 at 11:59 AM Jernej Škrabec
> >
> > <jernej.skrabec@xxxxxxxxx> wrote:
> > > /cc linux-kernel@xxxxxxxxxxxxxxx
> > >
> > > Dne sreda, 15. september 2021 ob 20:36:11 CEST je Saravana Kannan
> napisal(a):
> > > > On Wed, Sep 15, 2021 at 11:23 AM Saravana Kannan <saravanak@xxxxxxxxxx>
> > >
> > > wrote:
> > > > > On Wed, Sep 15, 2021 at 11:07 AM Jernej Škrabec
> > > > >
> > > > > <jernej.skrabec@xxxxxxxxx> wrote:
> > > > > > Hi Saravana!
> > > > > >
> > > > > > I noticed that in kernel 5.14, at least on Allwinner H3, deinterlace
> > >
> > > driver
> > >
> > > > > > doesn't load anymore if fw_devlink is set to on. If I set it to off,
> > >
> > > driver
> > >
> > > > > > loads and works without problems. If I remove interconnects property
> > > > > > in
> > >
> > > DT
> > >
> > > > > > node and use driver hack instead, it also loads and work ok.
> > > > > >
> > > > > > For reference, I speak about this node:
> > > > > > https://elixir.bootlin.com/linux/v5.14/source/arch/arm/boot/dts/sun8
> > > > > > i-h3.dtsi#L153> >
> > > > Oh the dts file please. Not dtsi. I need the full picture of
> > > > dependencies.
> > >
> > > I just dumped DTB from the board I use for testing this:
> > > http://ix.io/3yZB
> >
> > I was basically asking for this:
> > arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts
> >
> > > > -Saravana
> > > >
> > > > > > Do you have any clue why it doesn't work?
> > > > >
> > > > > Kinda busy today and I'll take a close look later, but if you delete
> > > > > "interconnect" but it works, then it seems like you have no driver for
> > > > > your "mbus" interconnect? Is that expected?
> > >
> > > Ah, you're completely right. There is no MBUS driver (yet), since current
> > > purpose of that node is to determine DMA memory offsets and for that you
> > > don't need a driver.
> >
> > Can you explain more how you get the DMA memory offsets in the code
> > from this node?
>
> Maxime, can you help with this?

Sure, Jernej is right, the interconnects binding with the dma-mem name
is here to describe the path DMA accesses take between devices.

In our case, the registers accesses go through the usual busses, but the
DMA accesses go through a separate one controlled by the mbus controller
Jernej was talking about.

The driver core will then take this into account and apply any DMA
mapping the mbus controller has:
https://elixir.bootlin.com/linux/latest/source/drivers/of/address.c#L582

So it's entirely transparent to the consumer driver.

Maxime

Attachment: signature.asc
Description: PGP signature