Re: [RFC 1/8] drivers: add generic remoteproc framework

From: Grant Likely
Date: Mon Jun 27 2011 - 18:27:15 EST


On Mon, Jun 27, 2011 at 09:52:30PM +0000, Grosen, Mark wrote:
> > From: Grant Likely
> > Sent: Monday, June 27, 2011 1:50 PM
>
> Grant, thanks for the feedback. I'll try to answer one of your
> questions below and leave the rest for Ohad.
>
> Mark
>
> > > +Every remoteproc implementation must provide these handlers:
> > > +
> > > +struct rproc_ops {
> > > + int (*start)(struct rproc *rproc, u64 bootaddr);
> > > + int (*stop)(struct rproc *rproc);
> > > +};
> > > +
> > > +The ->start() handler takes a rproc handle and an optional bootaddr
> > argument,
> > > +and should power on the device and boot it (using the bootaddr
> > argument
> > > +if the hardware requires one).
> >
> > Naive question: Why is bootaddr an argument? Wouldn't rproc drivers
> > keep track of the boot address in their driver private data?
>
> Our AMPs (remote processors) have a variety of boot mechanisms that vary
> across the different SoCs (yes, TI likes HW diversity). In some cases, the
> boot address is more like an entry point and that comes from the firmware,
> so it is not a static attribute of a driver. Correct me if I misunderstood
> your question.

More to the point, I would expect the boot_address to be a property of
the rproc instance because it represents the configuration of the
remote processor. It seems odd that the caller of ->start would know
better than the rproc driver about the entry point of the processor.

g.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/