[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 09/39] ARM: new VGIC: Add accessor to new struct vgic_irq instance
On Thu, 22 Mar 2018, Julien Grall wrote: > Hi Andre, > > On 03/21/2018 04:32 PM, Andre Przywara wrote: > > The new VGIC implementation centers around a struct vgic_irq instance > > per virtual IRQ. > > Provide a function to retrieve the right instance for a given IRQ > > number and (in case of private interrupts) the right VCPU. > > This also includes the corresponding put function, which does nothing > > for private interrupts and SPIs, but handles the ref-counting for LPIs. > > > > This is based on Linux commit 64a959d66e47, written by Christoffer Dall. > > > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxx> > > --- > > Changelog v2 ... v3: > > - extend comments to note preliminary nature of vgic_get_lpi() > > Thank you for the update. > > > > > Changelog v1 ... v2: > > - reorder header file inclusion > > > > xen/arch/arm/vgic/vgic.c | 134 > > +++++++++++++++++++++++++++++++++++++++++++++++ > > xen/arch/arm/vgic/vgic.h | 41 +++++++++++++++ > > 2 files changed, 175 insertions(+) > > create mode 100644 xen/arch/arm/vgic/vgic.c > > create mode 100644 xen/arch/arm/vgic/vgic.h > > > > diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c > > new file mode 100644 > > index 0000000000..a818e382b1 > > --- /dev/null > > +++ b/xen/arch/arm/vgic/vgic.c > > @@ -0,0 +1,134 @@ > > +/* > > + * Copyright (C) 2015, 2016 ARM Ltd. > > + * Imported from Linux ("new" KVM VGIC) and heavily adapted to Xen. > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License version 2 as > > + * published by the Free Software Foundation. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + * > > + * You should have received a copy of the GNU General Public License > > + * along with this program. If not, see <http://www.gnu.org/licenses/>. > > + */ > > + > > +#include <xen/sched.h> > > +#include <asm/bug.h> > > +#include <asm/new_vgic.h> > > + > > +#include "vgic.h" > > + > > +/* > > + * Iterate over the VM's list of mapped LPIs to find the one with a > > + * matching interrupt ID and return a reference to the IRQ structure. > > + * > > + * TODO: This is more documentation of how it should be done. A list is > > + * not a good data structure for Dom0's LPIs, it merely serves as an > > + * example here how to properly do the locking, allocation and refcounting. > > + * So lpi_list_head should be replaced with something more appropriate. > > + */ > > +static struct vgic_irq *vgic_get_lpi(struct domain *d, u32 intid) > > It looks like I forgot to mention it on previous version. Please replace u32 > with uint32_t. > > [...] > > > +struct vgic_irq *vgic_get_irq(struct domain *d, struct vcpu *vcpu, > > + u32 intid) > > Here too. > > > +{ > > + /* SGIs and PPIs */ > > + if ( intid <= VGIC_MAX_PRIVATE ) > > + return &vcpu->arch.vgic.private_irqs[intid]; > > + > > + /* SPIs */ > > + if ( intid <= VGIC_MAX_SPI ) > > + return &d->arch.vgic.spis[intid - VGIC_NR_PRIVATE_IRQS]; > > + > > + /* LPIs */ > > + if ( intid >= VGIC_MIN_LPI ) > > + return vgic_get_lpi(d, intid); > > + > > + ASSERT_UNREACHABLE(); > > + > > + return NULL; > > +} > > + > > [...] > > > diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h > > new file mode 100644 > > index 0000000000..a3befd386b > > --- /dev/null > > +++ b/xen/arch/arm/vgic/vgic.h > > [...] > > > +struct vgic_irq *vgic_get_irq(struct domain *d, struct vcpu *vcpu, > > + u32 intid); > > And here too. > > With that: > > Acked-by: Julien Grall <julien.grall@xxxxxxx> same here: Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |