On 2/11/19 7:42 AM, Benjamin Herrenschmidt wrote: > On Mon, 2019-02-11 at 13:38 +1100, David Gibson wrote: >> >> 1) All in kernel >> >> The offset always maps directly to guest irq number and the kernel >> somehow binds it either to an IPI or a host irq as necessary. >> Cédric's original code attempts this, but the mechanism of keeping a >> pointer to the VMA can't work. > > Why do you need a pointer to the VMA anyway ? unmap_mapping_range() > doesn't need a VMA for the unmap part, and faults/mmaps have the VMA. > >> But.. remapping the irqs should be sufficiently infrequent that it >> might be ok to consider simply stepping through all the hosting >> process's VMAs to do this. > > Which unmap_mapping_range() does for you as I explained previously. You > only need the address space. See how spufs does it (among others). and the different CAPI drivers. This is much better and it works fine. On the same topic, the XIVE IC on P10 will use IPI ESB pages for the PHB interrupts sources. We will still need this kind of remapping but the pages will be from the same controller. Thanks, C.