From bd4eaedc2dda6e7b365eb5e104c07c5d114528e6 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Mon, 14 Nov 2016 13:06:14 +1100 Subject: xive: Add helper to retrieve an IPI trigger port To be used by such things as VAS Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Stewart Smith --- hw/xive.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'hw') diff --git a/hw/xive.c b/hw/xive.c index 1237cd9..a9150ed 100644 --- a/hw/xive.c +++ b/hw/xive.c @@ -1295,6 +1295,25 @@ uint32_t xive_alloc_ipi_irqs(uint32_t chip_id, uint32_t count, uint32_t align) return base; } +void *xive_get_trigger_port(uint32_t girq) +{ + struct xive *x; + uint32_t idx; + + /* Find XIVE on which the IVE resides */ + x = xive_from_isn(girq); + if (!x) + return NULL; + + /* Make sure it's an IPI on that chip */ + if (girq < x->int_base || + girq >= x->int_ipi_top) + return NULL; + + idx = girq - x->int_base; + return x->esb_mmio + idx * 0x20000; +} + uint64_t xive_get_notify_port(uint32_t chip_id, uint32_t ent) { struct proc_chip *chip = get_chip(chip_id); -- cgit v1.1