On 09/02/18 14:39, Andre Przywara wrote:
The Xen core code requires an interrupt controller emulation to implement
arch_move_irqs(), to move the affinity of an hardware mapped virtual IRQ
to another core. In the moment we don't implement this
physical-follow-virtual regime in our new VGIC, so just provide an empty
stub implementation to make the linker happy.

physical-follow-virtual is a must feature for the new vGIC. This has shown better interrupt latency.

Similarily vgic_clear_pending_irqs() is required by the ARM code,
although it is suspected that it is actually not necessary. Go with a
stub for now.

Signed-off-by: Andre Przywara <andre.przyw...@linaro.org>
  xen/arch/arm/vgic/vgic.c | 13 +++++++++++++
  1 file changed, 13 insertions(+)

diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c
index d91028bd43..77fa756329 100644
--- a/xen/arch/arm/vgic/vgic.c
+++ b/xen/arch/arm/vgic/vgic.c
@@ -770,6 +770,19 @@ void gic_dump_vgic_info(struct vcpu *v)
                 irq->active ? "" : "not ", irq->enabled ? "" : "not ");
+void vgic_clear_pending_irqs(struct vcpu *v)
+    /*
+     * TODO: It is unclear whether we really need this, so we might instead
+     * remove it on the caller site.
+     */

I remember some issue with the current vGIC when not removing pending interrupts on PSCI CPU ON. But that was a while ago. I will have another try and see if we can drop it.

+void arch_move_irqs(struct vcpu *v)
+    /* TODO: implement this (?) */

Here you would need to go through the interrupt and modify the affinity of the physical IRQs routed to that vCPU.

  struct irq_desc *vgic_get_hw_irq_desc(struct domain *d, struct vcpu *v,
                                        unsigned int virq)


Julien Grall

Xen-devel mailing list

Reply via email to