When we're writing config for the doorbell interrupt, get_vlpi_map() will get confused by doorbell's d->parent_data hack and find the wrong its_dev as chip data and the wrong event. Fix this issue by making sure no doorbells will be involved before invoking get_vlpi_map(), which restore some of the logic in lpi_write_config(). Fixes: c1d4d5cd203c ("irqchip/gic-v3-its: Add its_vlpi_map helpers") Signed-off-by: Zenghui Yu <yuzenghui@xxxxxxxxxx> --- This is based on mainline and can't be directly applied to the current irqchip-next. drivers/irqchip/irq-gic-v3-its.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index e05673bcd52b..cc8a4fcbd6d6 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -1181,12 +1181,13 @@ static struct its_vlpi_map *get_vlpi_map(struct irq_data *d) static void lpi_write_config(struct irq_data *d, u8 clr, u8 set) { - struct its_vlpi_map *map = get_vlpi_map(d); irq_hw_number_t hwirq; void *va; u8 *cfg; - if (map) { + if (irqd_is_forwarded_to_vcpu(d)) { + struct its_vlpi_map *map = get_vlpi_map(d); + va = page_address(map->vm->vprop_page); hwirq = map->vintid; -- 2.19.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm