On Fri, 2023-04-28 at 19:59 +0100, Marc Zyngier wrote: > External email : Please do not click links or open attachments until > you have verified the sender or the content. > > > On 2023-04-28 11:36, Yi-De Wu wrote: > > From: "Yingshiuan Pan" <yingshiuan.pan@xxxxxxxxxxxx> > > > > Enable GenieZone to handle virtual interrupt injection request. > > > > Signed-off-by: Yingshiuan Pan <yingshiuan.pan@xxxxxxxxxxxx> > > Signed-off-by: Yi-De Wu <yi-de.wu@xxxxxxxxxxxx> > > --- > > arch/arm64/geniezone/Makefile | 2 +- > > arch/arm64/geniezone/gzvm_arch.c | 24 ++++++-- > > arch/arm64/geniezone/gzvm_arch.h | 11 ++++ > > arch/arm64/geniezone/gzvm_irqchip.c | 88 > > +++++++++++++++++++++++++++++ > > drivers/virt/geniezone/gzvm_vm.c | 75 ++++++++++++++++++++++++ > > include/linux/gzvm_drv.h | 4 ++ > > include/uapi/linux/gzvm.h | 38 ++++++++++++- > > 7 files changed, 235 insertions(+), 7 deletions(-) > > create mode 100644 arch/arm64/geniezone/gzvm_irqchip.c > > [...] > > > +++ b/arch/arm64/geniezone/gzvm_irqchip.c > > @@ -0,0 +1,88 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright (c) 2023 MediaTek Inc. > > + */ > > + > > +#include <linux/irqchip/arm-gic-v3.h> > > +#include <kvm/arm_vgic.h> > > NAK. > > There is no way you can rely on anything from KVM in > your own hypervisor code. > Same with previous discussion, we'd like to copy or rename the related part from KVM and keep the maintainance at our own if it's ok. > > + > > +#include <linux/gzvm.h> > > +#include <linux/gzvm_drv.h> > > +#include "gzvm_arch.h" > > + > > +/** > > + * gzvm_sync_vgic_state() - Check all LRs synced from gz > > hypervisor > > + * > > + * Traverse all LRs, see if any EOIed vint, notify_acked_irq if > > any. > > + * GZ does not fold/unfold everytime KVM_RUN, so we have to > > traverse > > all saved > > + * LRs. It will not takes much more time comparing to fold/unfold > > everytime > > + * GZVM_RUN, because there are only few LRs. > > + */ > > +void gzvm_sync_vgic_state(struct gzvm_vcpu *vcpu) > > +{ > > +} > > + > > +/* is_irq_valid() - Check the irq number and irq_type are matched > > */ > > +static bool is_irq_valid(u32 irq, u32 irq_type) > > +{ > > + switch (irq_type) { > > + case GZVM_IRQ_TYPE_CPU: > > + /* 0 ~ 15: SGI */ > > + if (likely(irq <= GZVM_IRQ_CPU_FIQ)) > > + return true; > > + break; > > + case GZVM_IRQ_TYPE_PPI: > > + /* 16 ~ 31: PPI */ > > + if (likely(irq >= VGIC_NR_SGIS && irq < > > VGIC_NR_PRIVATE_IRQS)) > > What happens if I redefine all these macros tomorrow? None of > this code should rely on anything that is *INTERNAL* to KVM. > > M. > -- > Jazz is not dead. It just smells funny...