[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH v2 13/22] xen/arm: its: Add virtual ITS command support
On Mon, May 4, 2015 at 6:34 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote: > > > On 04/05/2015 13:58, Vijay Kilari wrote: >> >> On Thu, Apr 30, 2015 at 7:59 PM, Julien Grall <julien.grall@xxxxxxxxxx> >> wrote: >>> >>> Hi, >>> >>> On 30/04/15 14:47, Stefano Stabellini wrote: >>>>>>> >>>>>>> >>>>>>> If the devid is not within this range, the ITS won't recognize the >>>>>>> value and >>>>>>> won't be able to send the interrupt. >>>>>>> >>>>>>> So this is clearly not the right value. >>>>>> >>>>>> >>>>>> Sure, in that case the maximum value allowed by GITS_TYPER.Devbits. >>>>>> Vijay, what is the value of GITS_TYPER.Devbits on your platform? >>>>> >>>>> >>>>> It is 21 bits >>>> >>>> >>>> I would imagine that 21 bits would be plenty to find an unused devid. >>>> >>>> Alternatively we could use an inexistent function of a real device, such >>>> as 00:00.1 (function 1 of the host bridge). >>> >>> >>> As discussed IRL, this idea sounds good to me. >>> >>> Although I would be happy with any other way which ensure the devid is >>> free. >> >> >> Has prototyped with 00.00.1 as device id. But I see that Dom0 boot is >> slow compared to polling mode. This could be because Dom0 has to keep >> trapping on creader to check if creader is updated or not. > > > How did you implement the interrupt mode? Could it be improve? 1) In physical ITS driver its_device is created with devID 00:00.1 with 256 MSI-x are reserved and is named as completion_dev, which is global. 2) In Domain init, - one irq (called completion_irq) is allocated per domain for this device and irq desc is allocated to this domain. This way we can get vITS context when interrupt is received. - An array of 32 requests(its_requests) is allocated which stores all the information about the ITS commands that are converted and written to physical ITS queue and each request info contains [CReader vITS] [CWriter vITS] [Physical Q Index] [Number of commands] [Completion irq] [ status ] 3) When vITS received ITS command. This command is converted to physical command and written to physical queue, INT command is appended with completion_irq and entry is made in its_requests. 4) On receiving completion_irq, vITS structure and its_requests info is parsed and Creader of vITS is upstated with [ Cwriter vITS ] stored for this request and this request is removed from its_requests. I am adding one INT per command. This can be improved to add one INT cmd for all the pending commands. Existing Linux driver sends 2 commands at a time. Regards Vijay _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |