On Feb 25, 2014 2:28 AM, "Will Deacon" <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote:
>
> On Mon, Feb 24, 2014 at 03:12:21PM +0000, srikanth TS wrote:
> > Hi Will Deacon,
>
> Hello,
>
> > Currently SMMU driver expecting all stream ID used by respective master
> > should be defined in the DT.
> >
> > We want to know how to handle in the case of virtual functions dynamically
> > created and destroyed.
> >
> > Is PCI driver responsible for creating stream ID respective BDand
> > requesting SMMU to add to the mapping table[stream Id to context mapping
> > table]?
> >
> > Or is there any right way of doing it?
>
> Correct, the driver currently doesn't support dynamic mappings (mainly
> because I didn't want to try and invent something that I couldn't test).
>
> There are a couple of ways to solve this:
>
>   (1) Add a way for a PCI RC to dynamically allocate StreamIDs on an SMMU
>       within a fixed range. That would probably need some code in the bus
>       layer, so that a bus notifier can kick and call back to the relevant
>       SMMU.

I think first way of solving seems to be better, because we don't know how many

VF are used and i feel its not good idea to keep whole list of streamID [which is 

equal to max num vf] in DT. Again in this method we need to generate the stream ID

dynamically whenever VF is added in pci iov driver side. And then pass that 

stream ID to SMMU.

Is it ok this way?  Or you prefer 2nd way which is simpler.
>
>   (2) Describe the RID -> SID mapping in the device-tree. We probably want
>       to avoid an enormous table, so this would only work for simple `SID =
>       RID + offset' or 'SID = RID & mask' cases.
>
> How do your IDs map to each other?
>
> Will

-srikanth ts