On Tue, Jan 29, 2019 at 05:28:48PM +0900, Sugaya, Taichi wrote:
> Hi,
> 
> On 2019/01/22 20:50, Russell King - ARM Linux admin wrote:
> > On Tue, Jan 22, 2019 at 08:36:03PM +0900, Sugaya, Taichi wrote:
> > > Hi
> > > 
> > > On 2018/12/04 22:32, Rob Herring wrote:
> > > > On Tue, Dec 4, 2018 at 5:30 AM Sugaya, Taichi
> > > > <sugaya.tai...@socionext.com> wrote:
> > > > > 
> > > > > Hi
> > > > > 
> > > > > On 2018/12/04 0:49, Rob Herring wrote:
> > > > > > On Mon, Dec 3, 2018 at 1:42 AM Sugaya, Taichi
> > > > > > <sugaya.tai...@socionext.com> wrote:
> > > > > > > 
> > > > > > > Hi,
> > > > > > > 
> > > > > > > On 2018/11/30 17:16, Stephen Boyd wrote:
> > > > > > > > Quoting Sugaya, Taichi (2018-11-29 04:24:51)
> > > > > > > > > On 2018/11/28 11:01, Stephen Boyd wrote:
> > > > > > > > > > Quoting Sugaya Taichi (2018-11-18 17:01:07)
> > > > > > > > > > >       create mode 100644 
> > > > > > > > > > > Documentation/devicetree/bindings/soc/socionext/socionext,m10v.txt
> > > > > > > > > > > 
> > > > > > > > > > > diff --git 
> > > > > > > > > > > a/Documentation/devicetree/bindings/soc/socionext/socionext,m10v.txt
> > > > > > > > > > >  
> > > > > > > > > > > b/Documentation/devicetree/bindings/soc/socionext/socionext,m10v.txt
> > > > > > > > > > > new file mode 100644
> > > > > > > > > > > index 0000000..f5d906c
> > > > > > > > > > > --- /dev/null
> > > > > > > > > > > +++ 
> > > > > > > > > > > b/Documentation/devicetree/bindings/soc/socionext/socionext,m10v.txt
> > > > > > > > > > > @@ -0,0 +1,12 @@
> > > > > > > > > > > +Socionext M10V SMP trampoline driver binding
> > > > > > > > > > > +
> > > > > > > > > > > +This is a driver to wait for sub-cores while boot 
> > > > > > > > > > > process.
> > > > > > > > > > > +
> > > > > > > > > > > +- compatible: should be "socionext,smp-trampoline"
> > > > > > > > > > > +- reg: should be <0x4C000100 0x100>
> > > > > > > > > > > +
> > > > > > > > > > > +EXAMPLE
> > > > > > > > > > > +       trampoline: trampoline@0x4C000100 {
> > > > > > > > > > Drop the 0x part of unit addresses.
> > > > > > > > > 
> > > > > > > > > Okay.
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > > > +               compatible = "socionext,smp-trampoline";
> > > > > > > > > > > +               reg = <0x4C000100 0x100>;
> > > > > > > > > > Looks like a software construct, which we wouldn't want to 
> > > > > > > > > > put into DT
> > > > > > > > > > this way. DT doesn't describe drivers.
> > > > > > > > > We would like to use this node only getting the address of the
> > > > > > > > > trampoline area
> > > > > > > > > in which sub-cores wait.  (They have finished to go to this 
> > > > > > > > > area in previous
> > > > > > > > > bootloader process.)
> > > > > > > > 
> > > > > > > > Is this area part of memory, or a special SRAM? If it's part of 
> > > > > > > > memory,
> > > > > > > > I would expect this node to be under the reserved-memory node 
> > > > > > > > and
> > > > > > > > pointed to by some other node that uses this region. Could even 
> > > > > > > > be the
> > > > > > > > CPU nodes.
> > > > > > > 
> > > > > > > Yes, 0x4C000100 is a part of memory under the reserved-memory 
> > > > > > > node. So
> > > > > > > we would like to use the SRAM ( allocated 0x00000000 ) area 
> > > > > > > instead.
> > > > > > > BTW, sorry, the trampoline address of this example is simply 
> > > > > > > wrong.  We
> > > > > > > were going to use a part of the SRAM from the beginning.
> > > > > > > 
> > > > > > > > 
> > > > > > > > > 
> > > > > > > > > So should we embed the constant value in source codes instead 
> > > > > > > > > of getting
> > > > > > > > > from
> > > > > > > > > DT because the address is constant at the moment? Or is there 
> > > > > > > > > other
> > > > > > > > > approach?
> > > > > > > > > 
> > > > > > > > 
> > > > > > > > If it's constant then that also works. Why does it need to come 
> > > > > > > > from DT
> > > > > > > > at all then?
> > > > > > > 
> > > > > > > We think it is not good to embed constant value in driver codes 
> > > > > > > and do
> > > > > > > not have another way...
> > > > > > > Are there better ways?
> > > > > > 
> > > > > > If this is just memory, can you use the standard spin-table binding 
> > > > > > in
> > > > > > the DT spec? There are some requirements like 64-bit values even on
> > > > > > 32-bit machines (though this gets violated).
> > > > > 
> > > > > The spin-table seems to be used on only 64-bit arch. Have it ever 
> > > > > worked
> > > > > on 32-bit machine?
> > > > 
> > > > Yes.
> > > > 
> > > > > And I would like not to use it because avoid violation.
> > > > 
> > > > The issue now that I remember is cpu-release-addr is defined to always
> > > > be a 64-bit value while some platforms made it a 32-bit value.
> > > > 'cpu-release-addr' is also used for some other enable-methods.
> > > 
> > > I have a question about the spin-table.
> > > The code "smp_spin_table.c" is only in "arch/arm64/kernel" directory so 
> > > can
> > > not be compiled in arm-v7 arch. That means the spin-table can not be used
> > > arm-v7 arch..? , or is there the way to compile the code in arm-v7 arch?
> > 
> > Why do you think you need it?  Do you have no way to control individual
> > CPUs?
> > 
> > We are going through a process in 32-bit eliminating the "spin table"
> > stuff from platforms.
> > 
> 
> Not always necessary to us and considering the history I think it is not
> suitable to use the spin-table.
> I try to use another way.

Please do - the "spin" approach was a hack to allow ARM Ltd's platforms
to work.  These platforms have no power control or reset of secondary
CPUs and no low power states (so can't suspend/resume).  Early firmware
only had the capabilities to release _all_ secondary CPUs to the kernel
together.  The "spin" approach is incompatible with suspend/resume,
hibernate, and kexec features of the kernel.

Real platforms do not have these problems, and thus should not use the
spin-table approach.

Modern platforms use PSCI to make the control of low power modes and
secondary CPUs independent of the kernel.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up

Reply via email to