[RFC PATCH] drivers: bus: add ARM CCI support
Nicolas Pitre
nicolas.pitre at linaro.org
Thu Apr 18 13:54:04 EDT 2013
On Thu, 18 Apr 2013, Stephen Boyd wrote:
> On 04/11/13 07:47, Lorenzo Pieralisi wrote:
> > diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
> > new file mode 100644
> > index 0000000..81953de
> > --- /dev/null
> > +++ b/drivers/bus/arm-cci.c
> [...]
> > +static void notrace cci_port_control(unsigned int port, bool enable)
> > +{
> > + void __iomem *base = ports[port].base;
> > +
> > + if (!base)
> > + return;
> > +
> > + writel_relaxed(enable, base + CCI_PORT_CTRL);
> > + while (readl_relaxed(cci_ctrl_base + CCI_CTRL_STATUS) & 0x1)
> > + ;
>
> cpu_relax()?
In some cases there is no more cache coherence when this is called and
the hardware might not be in a good state to cope with whatever action
people might be tempted to insert into cpu_relax(). After the CCI is
disabled it is important to keep a low profile and not touch anything
global. With some early hardware revision, even a DMB here was harmful.
Nicolas
More information about the linux-arm-kernel
mailing list