Re: [PATCH v2 11/12] target/arm/kvm: spe: Enable userspace irqchip support.

2020-09-08 Thread Haibo Xu
On Tue, 8 Sep 2020 at 19:35, Andrew Jones  wrote:
>
> On Tue, Sep 08, 2020 at 08:13:29AM +, Haibo Xu wrote:
> > Since the current kernel patches haven't enabled the
> > userspace irqchip support, this patch is not verified yet!
> >
> > Signed-off-by: Haibo Xu 
> > ---
> >  linux-headers/linux/kvm.h | 1 +
> >  target/arm/kvm.c  | 5 +
> >  2 files changed, 6 insertions(+)
> >
> > diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> > index 8840cbb01c..35ef0ae842 100644
> > --- a/linux-headers/linux/kvm.h
> > +++ b/linux-headers/linux/kvm.h
> > @@ -1672,6 +1672,7 @@ struct kvm_assigned_msix_entry {
> >  #define KVM_ARM_DEV_EL1_VTIMER   (1 << 0)
> >  #define KVM_ARM_DEV_EL1_PTIMER   (1 << 1)
> >  #define KVM_ARM_DEV_PMU  (1 << 2)
> > +#define KVM_ARM_DEV_SPE  (1 << 3)
>
> kernel header changes should be separate patches
>

Will move this line to patch 01 in v3.

Thanks,
Haibo

> >
> >  struct kvm_hyperv_eventfd {
> >   __u32 conn_id;
> > diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> > index 58f991e890..7950ff1d83 100644
> > --- a/target/arm/kvm.c
> > +++ b/target/arm/kvm.c
> > @@ -820,6 +820,11 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct 
> > kvm_run *run)
> >  switched_level &= ~KVM_ARM_DEV_PMU;
> >  }
> >
> > +if (switched_level & KVM_ARM_DEV_SPE) {
> > +qemu_set_irq(cpu->spe_interrupt,
> > + !!(run->s.regs.device_irq_level & 
> > KVM_ARM_DEV_SPE));
> > +switched_level &= ~KVM_ARM_DEV_SPE;
> > +}
> >  if (switched_level) {
> >  qemu_log_mask(LOG_UNIMP, "%s: unhandled in-kernel device IRQ 
> > %x\n",
> >__func__, switched_level);
> > --
> > 2.17.1
> >
>
> Otherwise
>
> Reviewed-by: Andrew Jones 
>



Re: [PATCH v2 11/12] target/arm/kvm: spe: Enable userspace irqchip support.

2020-09-08 Thread Andrew Jones
On Tue, Sep 08, 2020 at 08:13:29AM +, Haibo Xu wrote:
> Since the current kernel patches haven't enabled the
> userspace irqchip support, this patch is not verified yet!
> 
> Signed-off-by: Haibo Xu 
> ---
>  linux-headers/linux/kvm.h | 1 +
>  target/arm/kvm.c  | 5 +
>  2 files changed, 6 insertions(+)
> 
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index 8840cbb01c..35ef0ae842 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -1672,6 +1672,7 @@ struct kvm_assigned_msix_entry {
>  #define KVM_ARM_DEV_EL1_VTIMER   (1 << 0)
>  #define KVM_ARM_DEV_EL1_PTIMER   (1 << 1)
>  #define KVM_ARM_DEV_PMU  (1 << 2)
> +#define KVM_ARM_DEV_SPE  (1 << 3)

kernel header changes should be separate patches

>  
>  struct kvm_hyperv_eventfd {
>   __u32 conn_id;
> diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> index 58f991e890..7950ff1d83 100644
> --- a/target/arm/kvm.c
> +++ b/target/arm/kvm.c
> @@ -820,6 +820,11 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct 
> kvm_run *run)
>  switched_level &= ~KVM_ARM_DEV_PMU;
>  }
>  
> +if (switched_level & KVM_ARM_DEV_SPE) {
> +qemu_set_irq(cpu->spe_interrupt,
> + !!(run->s.regs.device_irq_level & KVM_ARM_DEV_SPE));
> +switched_level &= ~KVM_ARM_DEV_SPE;
> +}
>  if (switched_level) {
>  qemu_log_mask(LOG_UNIMP, "%s: unhandled in-kernel device IRQ 
> %x\n",
>__func__, switched_level);
> -- 
> 2.17.1
> 

Otherwise 

Reviewed-by: Andrew Jones 




[PATCH v2 11/12] target/arm/kvm: spe: Enable userspace irqchip support.

2020-09-08 Thread Haibo Xu
Since the current kernel patches haven't enabled the
userspace irqchip support, this patch is not verified yet!

Signed-off-by: Haibo Xu 
---
 linux-headers/linux/kvm.h | 1 +
 target/arm/kvm.c  | 5 +
 2 files changed, 6 insertions(+)

diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index 8840cbb01c..35ef0ae842 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -1672,6 +1672,7 @@ struct kvm_assigned_msix_entry {
 #define KVM_ARM_DEV_EL1_VTIMER (1 << 0)
 #define KVM_ARM_DEV_EL1_PTIMER (1 << 1)
 #define KVM_ARM_DEV_PMU(1 << 2)
+#define KVM_ARM_DEV_SPE(1 << 3)
 
 struct kvm_hyperv_eventfd {
__u32 conn_id;
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index 58f991e890..7950ff1d83 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -820,6 +820,11 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run 
*run)
 switched_level &= ~KVM_ARM_DEV_PMU;
 }
 
+if (switched_level & KVM_ARM_DEV_SPE) {
+qemu_set_irq(cpu->spe_interrupt,
+ !!(run->s.regs.device_irq_level & KVM_ARM_DEV_SPE));
+switched_level &= ~KVM_ARM_DEV_SPE;
+}
 if (switched_level) {
 qemu_log_mask(LOG_UNIMP, "%s: unhandled in-kernel device IRQ %x\n",
   __func__, switched_level);
-- 
2.17.1