|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 29/49] ARM: new VGIC: Add CTLR, TYPER and IIDR handlers
Hi, On 09/02/18 14:39, Andre Przywara wrote: Those three registers are v2 emulation specific, so their implementation lives entirely in vgic-mmio-v2.c. Also they are handled in one function, as their implementation is pretty simple. When the guest enables the distributor, we kick all VCPUs to get potentially pending interrupts serviced. This is based on Linux commit 2b0cda878965, written by Marc Zyngier. Signed-off-by: Andre Przywara <andre.przywara@xxxxxxxxxx> --- xen/arch/arm/vgic/vgic-mmio-v2.c | 48 +++++++++++++++++++++++++++++++++++++++- xen/arch/arm/vgic/vgic.c | 15 +++++++++++++ xen/arch/arm/vgic/vgic.h | 4 ++++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/vgic/vgic-mmio-v2.c b/xen/arch/arm/vgic/vgic-mmio-v2.c index ee685a5a07..0926b3243e 100644 --- a/xen/arch/arm/vgic/vgic-mmio-v2.c +++ b/xen/arch/arm/vgic/vgic-mmio-v2.c @@ -20,9 +20,55 @@ #include "vgic.h" #include "vgic-mmio.h"+static unsigned long vgic_mmio_read_v2_misc(struct vcpu *vcpu,+ paddr_t addr, unsigned int len) Indentation. Please use uint32_t. + + switch (addr & 0x0c) Coding style switch ( ... ). But I do admit the mask is actually quite confusing. You rely on the caller only call it with the right reg here. It is probably worth to have a comment explaining it. We probably want to use _ID_XEN here. + break; + default: + return 0; + } + + return value; +} + +static void vgic_mmio_write_v2_misc(struct vcpu *vcpu, + paddr_t addr, unsigned int len, + unsigned long val) Indentation. Ditto for coding style switch and the mask. On Xen, this code is definitely not atomic if you have multiple callers.
Unblock will not notify a vCPU running. You want also want to send SGI if the CPU is running. + } +} + /* * Local variables: * mode: C diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h index 7747d3f3e0..82fe902e26 100644 --- a/xen/arch/arm/vgic/vgic.h +++ b/xen/arch/arm/vgic/vgic.h @@ -17,6 +17,9 @@ #ifndef __XEN_ARM_VGIC_NEW_H__ #define __XEN_ARM_VGIC_NEW_H__+#define PRODUCT_ID_KVM 0x4b /* ASCII code K */+#define IMPLEMENTER_ARM 0x43b + #define vgic_irq_is_sgi(intid) ((intid) < VGIC_NR_SGIS)static inline bool irq_is_pending(struct vgic_irq *irq) Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |