|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 05/17] xen/arm: ITS: implement hw_irq_controller for LPIs
On Wed, 2015-07-15 at 10:26 +0200, Julien Grall wrote:
> >>> @@ -149,7 +173,7 @@ int gic_route_irq_to_guest(struct domain *d, unsigned
> >>> int virq,
> >>> test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) )
> >>> goto out;
> >>>
> >>> - desc->handler = gic_hw_ops->gic_guest_irq_type;
> >>> + desc->handler = get_guest_hw_irq_controller(desc->irq);
> >>> set_bit(_IRQ_GUEST, &desc->status);
> >>>
> >>> gic_set_irq_properties(desc, cpumask_of(v_target->processor),
> >>> priority);
> >>> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
> >>> index 2dd43ee..ba8528a 100644
> >>> --- a/xen/arch/arm/irq.c
> >>> +++ b/xen/arch/arm/irq.c
> >>> @@ -35,7 +35,13 @@ static DEFINE_SPINLOCK(local_irqs_type_lock);
> >>> struct irq_guest
> >>> {
> >>> struct domain *d;
> >>> - unsigned int virq;
> >>> + union
> >>> + {
> >>> + /* virq refer to virtual irq in case of spi */
> >>> + unsigned int virq;
> >>> + /* virq refer to event ID in case of lpi */
> >>> + unsigned int vid;
> >>
> >>
> >> Why can't we store the event ID in the irq_guest? As said on v3, this is
> >> not
> >
> > Are you referring to irq_desc in above statement?
>
> Yes sorry.
I'm afraid I don't follow your suggestion here, are you suggesting that
the vid field added above should be moved to irq_desc?
But the vid _is_ domain specific, it is the virtual event ID which is
per-domain (it's the thing looked up in the ITT to get a vLPI to be
injected). I think it is a pretty direct analogue of the virq field used
for non-LPI irq_guest structs.
If we had need for the physical event id then that would like belong in
the irq_desc.
Your proposal on v3 looks to be around moving the its_device pointer to
the irq_desc, which appears to have been done here, along with turning
the virq+vid into a union as requested there too.
> >> It has been suggested by Ian to move col_id in the its_device in the
> >> previous version [4]. Any reason to not doing it?
> >
> > In round robin fashion each plpi is attached to col_id. So storing
> > in its_device is not possible. In linux latest col_id is stored in
> > its_device
> > structure for which set_affinity is called.
Are you saying that in Linux all Events/LPIs associated with a given ITS
device are routed to the same collection?
> You could do round robin on its_device... It would be exactly the same
Routing all LPIs associated with a given its_device to the same
collection is not exactly the same as round robin-ing all LPIs from the
device over the collections.
> and save 2 byte if not more with the alignment per irq_desc.
If this is a concern then I would say we would either want a separate
array of per-pLPI information which we do not want in irq_desc because
it is irq specific, or do add a pointer to its_desc which points to an
array of per-event information.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |