[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 5/6] xen/arm: Add function to query IRQ 'ownership'.
On Mon, Sep 05, 2016 at 06:14:00AM -0400, Kyle Temkin wrote: > From: "Kyle J. Temkin" <temkink@xxxxxxxxxxxx> > > The addition of new IRQ-related platform hooks now allow platforms to > perform platform-specific interrupt logic; allowing e.g. virtualization > of platform-specific interrupt controller hardware. > > This commit adds the ability to for the platform to identify the domain > a given IRQ routes to, allowing platform logic to e.g. deny access to > registers associated with a given IRQ unless the requesting domain > 'owns' the IRQ. This will be used on Tegra platforms, where the hardware > domain needs access to its legacy interrupt controller, but should not > be able to control registers that correspond to other domains' IRQs, or > sections associated with IRQs routed to Xen. > > Signed-off-by: Kyle Temkin <temkink@xxxxxxxxxxxx> > --- > xen/arch/arm/irq.c | 10 ++++++++++ > xen/include/asm-arm/irq.h | 2 ++ > 2 files changed, 12 insertions(+) > > diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c > index dc42817..c6e1a24 100644 > --- a/xen/arch/arm/irq.c > +++ b/xen/arch/arm/irq.c > @@ -144,6 +144,16 @@ static inline struct domain *irq_get_domain(struct > irq_desc *desc) > return irq_get_guest_info(desc)->d; > } > > +domid_t irq_get_domain_id(struct irq_desc *desc) > +{ > + // If this domain isn't routed to a guest, return DOMID_XEN. So that is some odd style > + if(!test_bit(_IRQ_GUEST, &desc->status)) Ditto here? I think your v1 should have at least these fixed.. > + return DOMID_XEN; > + > + // Otherise, get the guest domain's information. > + return irq_get_domain(desc)->domain_id; > +} > + > void irq_set_affinity(struct irq_desc *desc, const cpumask_t *cpu_mask) > { > if ( desc != NULL ) > diff --git a/xen/include/asm-arm/irq.h b/xen/include/asm-arm/irq.h > index 8f7a167..55300a8 100644 > --- a/xen/include/asm-arm/irq.h > +++ b/xen/include/asm-arm/irq.h > @@ -45,6 +45,8 @@ int route_irq_to_guest(struct domain *d, unsigned int virq, > unsigned int irq, const char *devname); > int release_guest_irq(struct domain *d, unsigned int irq); > > +domid_t irq_get_domain_id(struct irq_desc *desc); > + > void arch_move_irqs(struct vcpu *v); > > #define arch_evtchn_bind_pirq(d, pirq) ((void)((d) + (pirq))) > -- > 2.9.2 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |