[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatib
From: |
Auer, Lukas |
Subject: |
Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node |
Date: |
Sun, 17 Mar 2019 18:57:19 +0000 |
Hi Bin,
On Fri, 2019-03-15 at 09:54 +0800, Bin Meng wrote:
> Hi Lukas,
>
> On Fri, Mar 15, 2019 at 5:01 AM Auer, Lukas
> <address@hidden> wrote:
> > Hi Bin,
> >
> > On Wed, 2019-03-13 at 09:51 +0800, Bin Meng wrote:
> > > Hi Lukas,
> > >
> > > On Tue, Mar 12, 2019 at 10:39 PM Auer, Lukas
> > > <address@hidden> wrote:
> > > > Hi Bin,
> > > >
> > > > On Mon, 2019-03-11 at 23:28 +0800, Bin Meng wrote:
> > > > > Hi Lukas,
> > > > >
> > > > > On Mon, Mar 11, 2019 at 2:03 AM Auer, Lukas
> > > > > <address@hidden> wrote:
> > > > > > Hi Bin,
> > > > > >
> > > > > > On Sun, 2019-03-10 at 22:57 +0800, Bin Meng wrote:
> > > > > > > Hi Lukas,
> > > > > > >
> > > > > > > On Sun, Mar 10, 2019 at 9:44 PM Auer, Lukas
> > > > > > > <address@hidden> wrote:
> > > > > > > > Hi Bin,
> > > > > > > >
> > > > > > > > On Sun, 2019-03-10 at 09:07 +0800, Bin Meng wrote:
> > > > > > > > > Hi Lukas,
> > > > > > > > >
> > > > > > > > > On Mon, Feb 11, 2019 at 6:13 AM Lukas Auer
> > > > > > > > > <address@hidden> wrote:
> > > > > > > > > > Re-add the previous compatible string "riscv-
> > > > > > > > > > virtio-
> > > > > > > > > > soc" to
> > > > > > > > > > the
> > > > > > > > > > soc
> > > > > > > > > > device tree node to allow U-Boot and Linux to bind
> > > > > > > > > > machine-
> > > > > > > > > > specific
> > > > > > > > > > drivers to it. The current compatible string
> > > > > > > > > > "simple-
> > > > > > > > > > bus"
> > > > > > > > > > is
> > > > > > > > > > retained.
> > > > > > > > > >
> > > > > > > > > > This is required by U-Boot to bind devices early,
> > > > > > > > > > as
> > > > > > > > > > part
> > > > > > > > > > of
> > > > > > > > > > the
> > > > > > > > > > pre-relocation driver model.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > I see no problem with U-Boot working with current
> > > > > > > > > compatible
> > > > > > > > > string
> > > > > > > > > "simple-bus". In fact I had planned to remove the
> > > > > > > > > compatible
> > > > > > > > > string
> > > > > > > > > "riscv-virtio-soc" in U-Boot but did not get time to
> > > > > > > > > work
> > > > > > > > > on
> > > > > > > > > it.
> > > > > > > > >
> > > > > > > >
> > > > > > > > It is only required if U-Boot is running in machine-
> > > > > > > > mode.
> > > > > > > > For
> > > > > > > > relocation it needs to use the CLINT driver to send
> > > > > > > > appropriate
> > > > > > > > IPIs to
> > > > > > > > the other harts. To be able to probe the driver, the
> > > > > > > > device
> > > > > > > > and
> > > > > > > > its
> > > > > > > > parent device tree node (soc) must therefore be
> > > > > > > > available
> > > > > > > > in
> > > > > > > > the
> > > > > > > > pre-
> > > > > > > > relocation device model.
> > > > > > > > This patch was the easiest way I could think of for
> > > > > > > > achieving
> > > > > > > > this.
> > > > > > > > It
> > > > > > > > could be that there is a better way of solving this.
> > > > > > > >
> > > > > > >
> > > > > > > I tested your SMP U-Boot series in both M-mode and S-
> > > > > > > mode,
> > > > > > > using
> > > > > > > a 4
> > > > > > > core 'virt' target. Works fine. I am using QEMU 3.1.0 so
> > > > > > > it
> > > > > > > is
> > > > > > > "simple-bus".
> > > > > > >
> > > > > >
> > > > > > That is actually my fault, it should not work.
> > > > > > What is happening is that U-Boot fails to relocate the
> > > > > > secondary
> > > > > > harts,
> > > > > > because the CLINT driver cannot get the memory address of
> > > > > > the
> > > > > > CLINT
> > > > > > device. This error is currently silently ignored.
> > > > >
> > > > > I still don't understand. Why does the CLINT driver fail to
> > > > > get
> > > > > the
> > > > > memory address? U-Boot has been supporting "simpile-bus" for
> > > > > a
> > > > > long
> > > > > time. It was because QEMU 3.0.0 generated the /soc node with
> > > > > "riscv-virtio-soc" compatible string, U-Boot was taught to
> > > > > treat
> > > > > such
> > > > > compatible string as a "simple-bus" too (that was the U-Boot
> > > > > commit
> > > > > 27dc2c130e29)
> > > >
> > > > That's correct. The problem with the default simple-bus U-Boot
> > > > driver
> > > > is that it does not have the DM_FLAG_PRE_RELOC flag set. The
> > > > /soc
> > > > and
> > > > /soc/clint nodes are therefore not available before relocation,
> > > > meaning
> > > > that IPIs cannot be sent to relocate the secondary harts.
> > > >
> > >
> > > Thanks for the clarifications. Now I see the problem. But I think
> > > we
> > > should fix U-Boot "simple-bus" driver instead. As seen on FU540
> > > or
> > > likely other hardware, QEMU generates the "simple-bus" compatible
> > > string for the /soc node, as well as the DT provided by the
> > > hardware.
> > >
> >
> > That makes sense, I can send a patch to set the DM_FLAG_PRE_RELOC
> > flag
> > in the simple-bus U-Boot driver. I think it's best to send it
> > separately from the SMP patch series, since it could affect other
> > boards and it's a bit late in the release cycle. What do you think?
> >
>
> Yes, agreed that the "simple-bus" driver changes should be next U-
> Boot
> release. We should try to get the U-Boot SMP series in the v2019.04
> release.
>
Yes definitely, I have just sent version 3 of the series. I hope it is
ready to go into mainline now.
Thanks,
Lukas
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Bin Meng, 2019/03/09
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Auer, Lukas, 2019/03/10
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Bin Meng, 2019/03/10
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Auer, Lukas, 2019/03/10
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Bin Meng, 2019/03/11
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Auer, Lukas, 2019/03/12
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Bin Meng, 2019/03/12
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Auer, Lukas, 2019/03/14
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node, Bin Meng, 2019/03/14
- Re: [Qemu-devel] [PATCH] hw/riscv/virt: re-add machine-specific compatible string to /soc/ node,
Auer, Lukas <=