Message ID | 20180124181058.6157-2-andre.przywara@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | ARM: VGIC/GIC separation cleanups | expand |
Hi Andre, On 24/01/18 18:10, Andre Przywara wrote: > In gic_restore_pending_irqs() we push our pending virtual IRQs into the > list registers. This function is called once from gic_inject(), just > before we return to the guest, but also in gic_restore_state(), when > we context-switch a VCPU. Having a closer look it turns out that the > later call is not needed, since we will always call gic_inject() anyway. > So remove that call (and the forward declaration) to streamline this > interface and make separating the GIC from the VGIC world later. > > Signed-off-by: Andre Przywara <andre.przywara@linaro.org> Reviewed-by: Julien Grall <julien.grall@arm.com> Cheers, > --- > xen/arch/arm/gic.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c > index bac8ada2bb..721a17a9d7 100644 > --- a/xen/arch/arm/gic.c > +++ b/xen/arch/arm/gic.c > @@ -36,8 +36,6 @@ > #include <asm/vgic.h> > #include <asm/acpi.h> > > -static void gic_restore_pending_irqs(struct vcpu *v); > - > static DEFINE_PER_CPU(uint64_t, lr_mask); > > #define lr_all_full() (this_cpu(lr_mask) == ((1 << gic_hw_ops->info->nr_lrs) - 1)) > @@ -91,8 +89,6 @@ void gic_restore_state(struct vcpu *v) > gic_hw_ops->restore_state(v); > > isb(); > - > - gic_restore_pending_irqs(v); > } > > /* desc->irq needs to be disabled before calling this function */ >
On Wed, 24 Jan 2018, Andre Przywara wrote: > In gic_restore_pending_irqs() we push our pending virtual IRQs into the > list registers. This function is called once from gic_inject(), just > before we return to the guest, but also in gic_restore_state(), when > we context-switch a VCPU. Having a closer look it turns out that the > later call is not needed, since we will always call gic_inject() anyway. > So remove that call (and the forward declaration) to streamline this > interface and make separating the GIC from the VGIC world later. > > Signed-off-by: Andre Przywara <andre.przywara@linaro.org> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > xen/arch/arm/gic.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c > index bac8ada2bb..721a17a9d7 100644 > --- a/xen/arch/arm/gic.c > +++ b/xen/arch/arm/gic.c > @@ -36,8 +36,6 @@ > #include <asm/vgic.h> > #include <asm/acpi.h> > > -static void gic_restore_pending_irqs(struct vcpu *v); > - > static DEFINE_PER_CPU(uint64_t, lr_mask); > > #define lr_all_full() (this_cpu(lr_mask) == ((1 << gic_hw_ops->info->nr_lrs) - 1)) > @@ -91,8 +89,6 @@ void gic_restore_state(struct vcpu *v) > gic_hw_ops->restore_state(v); > > isb(); > - > - gic_restore_pending_irqs(v); > } > > /* desc->irq needs to be disabled before calling this function */ > -- > 2.14.1 >
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index bac8ada2bb..721a17a9d7 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -36,8 +36,6 @@ #include <asm/vgic.h> #include <asm/acpi.h> -static void gic_restore_pending_irqs(struct vcpu *v); - static DEFINE_PER_CPU(uint64_t, lr_mask); #define lr_all_full() (this_cpu(lr_mask) == ((1 << gic_hw_ops->info->nr_lrs) - 1)) @@ -91,8 +89,6 @@ void gic_restore_state(struct vcpu *v) gic_hw_ops->restore_state(v); isb(); - - gic_restore_pending_irqs(v); } /* desc->irq needs to be disabled before calling this function */
In gic_restore_pending_irqs() we push our pending virtual IRQs into the list registers. This function is called once from gic_inject(), just before we return to the guest, but also in gic_restore_state(), when we context-switch a VCPU. Having a closer look it turns out that the later call is not needed, since we will always call gic_inject() anyway. So remove that call (and the forward declaration) to streamline this interface and make separating the GIC from the VGIC world later. Signed-off-by: Andre Przywara <andre.przywara@linaro.org> --- xen/arch/arm/gic.c | 4 ---- 1 file changed, 4 deletions(-)