From: Julien Grall <julien.grall@arm.com> To: Shannon Zhao <zhaoshenglong@huawei.com>, xen-devel@lists.xen.org Cc: stefano.stabellini@citrix.com, shannon.zhao@linaro.org, peter.huangpeng@huawei.com Subject: Re: [PATCH v6 16/22] arm/acpi: Configure SPI interrupt type and route to Dom0 dynamically Date: Tue, 22 Mar 2016 19:17:38 +0000 [thread overview] Message-ID: <56F19A52.30402@arm.com> (raw) In-Reply-To: <1458207668-12012-17-git-send-email-zhaoshenglong@huawei.com> Hi Shannon, On 17/03/16 09:41, Shannon Zhao wrote: > From: Shannon Zhao <shannon.zhao@linaro.org> > > Interrupt information is described in DSDT and is not available at the > time of booting. Check if the interrupt is permitted to access and set > the interrupt type, route it to guest dynamically only for SPI > and Dom0. > > Signed-off-by: Parth Dixit <parth.dixit@linaro.org> > Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> > --- > v6: coding style > --- > xen/arch/arm/vgic.c | 32 ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c > index ee35683..39d858c 100644 > --- a/xen/arch/arm/vgic.c > +++ b/xen/arch/arm/vgic.c > @@ -25,6 +25,8 @@ > #include <xen/irq.h> > #include <xen/sched.h> > #include <xen/perfc.h> > +#include <xen/iocap.h> > +#include <xen/acpi.h> > > #include <asm/current.h> > > @@ -334,6 +336,19 @@ void vgic_disable_irqs(struct vcpu *v, uint32_t r, int n) > } > } > > +#define VGIC_ICFG_MASK(intr) (1 << ((2 * ((intr) % 16)) + 1)) > + > +static inline unsigned int get_the_irq_type(struct vcpu *v, int n, int index) > +{ > + struct vgic_irq_rank *vr = vgic_get_rank(v, n); > + uint32_t tr = vr->icfg[index >> 4]; > + > + if ( tr & VGIC_ICFG_MASK(index) ) > + return IRQ_TYPE_EDGE_BOTH; > + else > + return IRQ_TYPE_LEVEL_MASK; > +} > + > void vgic_enable_irqs(struct vcpu *v, uint32_t r, int n) > { > const unsigned long mask = r; > @@ -342,9 +357,26 @@ void vgic_enable_irqs(struct vcpu *v, uint32_t r, int n) > unsigned long flags; > int i = 0; > struct vcpu *v_target; > + struct domain *d = v->domain; > + int ret; > > while ( (i = find_next_bit(&mask, 32, i)) < 32 ) { > irq = i + (32 * n); > + /* Set the irq type and route it to guest only for SPI and Dom0 */ > + if( irq_access_permitted(d, irq) && is_hardware_domain(d) && > + ( irq >= 32 ) && ( !acpi_disabled ) ) > + { > + ret = irq_set_spi_type(irq, get_the_irq_type(v, n, i)); > + if ( ret ) > + printk(XENLOG_WARNING "The irq type is not correct\n"); XENLOG_WARNING (and XENLOG_ERR) are not rate-limited. Therefore a domain (even if it's dom0) could flood the console. Please use XENLOG_G_* instead. However in this case, "v" is the current vCPU so you can use gprintk(XENLOG_WARNING, ...); > + > + vgic_reserve_virq(d, irq); > + > + ret = route_irq_to_guest(d, irq, irq, NULL); > + if ( ret ) > + printk(XENLOG_ERR "Unable to route IRQ %u to domain %u\n", > + irq, d->domain_id); I'm not against this solution for short term. But in long term we would benefit to split the IRQ configuration from the routing. The routing will be done before DOM0 is booting. The IRQ configuration will just end up to write in the ICFGR register. This will also help for PCI-passthrough as the guest will have to configure the SPIs (we can't expect DOM0 doing it for it). But the routing will be done ahead. > + } > v_target = __vgic_get_target_vcpu(v, irq); > p = irq_to_pending(v_target, irq); > set_bit(GIC_IRQ_GUEST_ENABLED, &p->status); > Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-22 19:17 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-03-17 9:40 [PATCH v6 00/22] Prepare UEFI and ACPI tables for Dom0 on ARM64 Shannon Zhao 2016-03-17 9:40 ` [PATCH v6 01/22] arm/acpi: Estimate memory required for acpi/efi tables Shannon Zhao 2016-03-18 18:44 ` Julien Grall 2016-03-21 13:01 ` Jan Beulich 2016-03-22 13:01 ` Shannon Zhao 2016-03-22 0:28 ` Julien Grall 2016-03-24 12:36 ` Stefano Stabellini 2016-03-17 9:40 ` [PATCH v6 02/22] arm/acpi: Add a helper function to get the acpi table offset Shannon Zhao 2016-03-21 12:16 ` Julien Grall 2016-03-24 12:32 ` Stefano Stabellini 2016-03-17 9:40 ` [PATCH v6 03/22] arm/acpi: Prepare FADT table for Dom0 Shannon Zhao 2016-03-21 12:25 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 04/22] arm/gic: Add a new callback for creating MADT " Shannon Zhao 2016-03-21 15:18 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 05/22] arm/acpi: Prepare " Shannon Zhao 2016-03-21 15:26 ` Julien Grall 2016-03-21 15:51 ` Jan Beulich 2016-03-17 9:40 ` [PATCH v6 06/22] arm/acpi: Prepare STAO " Shannon Zhao 2016-03-21 15:31 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 07/22] arm/acpi: Prepare XSDT " Shannon Zhao 2016-03-21 15:43 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 08/22] arm/acpi: Prepare RSDP " Shannon Zhao 2016-03-21 15:47 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 09/22] arm/p2m: Add helper functions to map memory regions Shannon Zhao 2016-03-21 15:52 ` Julien Grall 2016-03-22 13:05 ` Shannon Zhao 2016-03-22 15:59 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 10/22] arm/acpi: Map all other tables for Dom0 Shannon Zhao 2016-03-21 15:57 ` Julien Grall 2016-03-17 9:40 ` [PATCH v6 11/22] arm/acpi: Prepare EFI system table " Shannon Zhao 2016-03-21 16:10 ` Julien Grall 2016-03-22 13:06 ` Shannon Zhao 2016-03-22 13:24 ` Jan Beulich 2016-03-17 9:40 ` [PATCH v6 12/22] arm/acpi: Prepare EFI memory descriptor " Shannon Zhao 2016-03-21 16:51 ` Julien Grall 2016-03-22 13:16 ` Shannon Zhao 2016-03-22 16:04 ` Julien Grall 2016-03-24 15:06 ` Shannon Zhao 2016-03-24 15:23 ` Julien Grall 2016-03-24 12:39 ` Stefano Stabellini 2016-03-17 9:40 ` [PATCH v6 13/22] arm/acpi: Map the new created EFI and ACPI tables to Dom0 Shannon Zhao 2016-03-22 0:42 ` Julien Grall 2016-03-22 13:18 ` Shannon Zhao 2016-03-22 16:16 ` Julien Grall 2016-03-24 14:59 ` Shannon Zhao 2016-03-24 15:35 ` Julien Grall 2016-03-17 9:41 ` [PATCH v6 14/22] arm/acpi: Create min DT stub for Dom0 Shannon Zhao 2016-03-22 1:07 ` Julien Grall 2016-03-22 13:23 ` Shannon Zhao 2016-03-17 9:41 ` [PATCH v6 15/22] arm/acpi: Permit access all Xen unused SPIs " Shannon Zhao 2016-03-22 18:18 ` Julien Grall 2016-03-24 15:01 ` Shannon Zhao 2016-03-24 15:37 ` Julien Grall 2016-03-25 7:13 ` Shannon Zhao 2016-03-17 9:41 ` [PATCH v6 16/22] arm/acpi: Configure SPI interrupt type and route to Dom0 dynamically Shannon Zhao 2016-03-22 19:17 ` Julien Grall [this message] 2016-03-24 12:41 ` Stefano Stabellini 2016-03-17 9:41 ` [PATCH v6 17/22] arm/gic: Add a new callback to deny Dom0 access to GIC regions Shannon Zhao 2016-03-22 19:33 ` Julien Grall 2016-03-24 12:45 ` Stefano Stabellini 2016-03-24 15:03 ` Shannon Zhao 2016-03-24 15:39 ` Julien Grall 2016-03-17 9:41 ` [PATCH v6 18/22] arm/acpi: Permit MMIO access of Xen unused devices for Dom0 Shannon Zhao 2016-03-23 11:50 ` Julien Grall 2016-03-17 9:41 ` [PATCH v6 19/22] hvm/params: Add a new delivery type for event-channel in HVM_PARAM_CALLBACK_IRQ Shannon Zhao 2016-03-17 10:42 ` Jan Beulich 2016-03-17 11:04 ` Shannon Zhao 2016-03-17 11:29 ` Jan Beulich 2016-03-17 11:56 ` Shannon Zhao 2016-03-17 12:42 ` Jan Beulich 2016-03-17 9:41 ` [PATCH v6 20/22] xen/acpi: Fix event-channel interrupt when booting with ACPI Shannon Zhao 2016-03-23 12:15 ` Julien Grall 2016-03-17 9:41 ` [PATCH v6 21/22] xen/arm: Add a hypercall for device mmio mapping Shannon Zhao 2016-03-17 9:41 ` [PATCH v6 22/22] xen/arm64: Add ACPI support Shannon Zhao 2016-03-17 10:52 ` Jan Beulich 2016-03-17 11:03 ` Shannon Zhao 2016-03-17 11:31 ` Jan Beulich 2016-03-17 13:10 ` Shannon Zhao 2016-03-17 13:24 ` Jan Beulich
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=56F19A52.30402@arm.com \ --to=julien.grall@arm.com \ --cc=peter.huangpeng@huawei.com \ --cc=shannon.zhao@linaro.org \ --cc=stefano.stabellini@citrix.com \ --cc=xen-devel@lists.xen.org \ --cc=zhaoshenglong@huawei.com \ --subject='Re: [PATCH v6 16/22] arm/acpi: Configure SPI interrupt type and route to Dom0 dynamically' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).