Hi Marc, On 3/4/20 9:33 PM, Marc Zyngier wrote: > Tell KVM that we support v4.1. Nothing uses this information so far. > > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> > Reviewed-by: Zenghui Yu <yuzenghui@xxxxxxxxxx> Reviewed-by: Eric Auger <eric.auger@xxxxxxxxxx> Thanks Eric > --- > drivers/irqchip/irq-gic-v3-its.c | 9 ++++++++- > drivers/irqchip/irq-gic-v3.c | 2 ++ > include/linux/irqchip/arm-gic-common.h | 2 ++ > 3 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c > index fc5788584df7..bcc1a0957cda 100644 > --- a/drivers/irqchip/irq-gic-v3-its.c > +++ b/drivers/irqchip/irq-gic-v3-its.c > @@ -4870,6 +4870,7 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, > struct device_node *of_node; > struct its_node *its; > bool has_v4 = false; > + bool has_v4_1 = false; > int err; > > gic_rdists = rdists; > @@ -4890,8 +4891,14 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, > if (err) > return err; > > - list_for_each_entry(its, &its_nodes, entry) > + list_for_each_entry(its, &its_nodes, entry) { > has_v4 |= is_v4(its); > + has_v4_1 |= is_v4_1(its); > + } > + > + /* Don't bother with inconsistent systems */ > + if (WARN_ON(!has_v4_1 && rdists->has_rvpeid)) > + rdists->has_rvpeid = false; > > if (has_v4 & rdists->has_vlpis) { > if (its_init_vpe_domain() || > diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c > index ba405becab53..03e4eadefb00 100644 > --- a/drivers/irqchip/irq-gic-v3.c > +++ b/drivers/irqchip/irq-gic-v3.c > @@ -1785,6 +1785,7 @@ static void __init gic_of_setup_kvm_info(struct device_node *node) > gic_v3_kvm_info.vcpu = r; > > gic_v3_kvm_info.has_v4 = gic_data.rdists.has_vlpis; > + gic_v3_kvm_info.has_v4_1 = gic_data.rdists.has_rvpeid; > gic_set_kvm_info(&gic_v3_kvm_info); > } > > @@ -2100,6 +2101,7 @@ static void __init gic_acpi_setup_kvm_info(void) > } > > gic_v3_kvm_info.has_v4 = gic_data.rdists.has_vlpis; > + gic_v3_kvm_info.has_v4_1 = gic_data.rdists.has_rvpeid; > gic_set_kvm_info(&gic_v3_kvm_info); > } > > diff --git a/include/linux/irqchip/arm-gic-common.h b/include/linux/irqchip/arm-gic-common.h > index b9850f5f1906..fa8c0455c352 100644 > --- a/include/linux/irqchip/arm-gic-common.h > +++ b/include/linux/irqchip/arm-gic-common.h > @@ -32,6 +32,8 @@ struct gic_kvm_info { > struct resource vctrl; > /* vlpi support */ > bool has_v4; > + /* rvpeid support */ > + bool has_v4_1; > }; > > const struct gic_kvm_info *gic_get_kvm_info(void); >