On 12/02/2017 03:24 PM, Benjamin Herrenschmidt wrote: > On Tue, 2017-11-28 at 17:40 +1100, David Gibson wrote: >>> @@ -368,6 +368,10 @@ static void spapr_xive_realize(DeviceState *dev, Error >>> **errp) >>> /* Allocate the IVT (Interrupt Virtualization Table) */ >>> xive->ivt = g_malloc0(xive->nr_irqs * sizeof(XiveIVE)); >>> >>> + /* All sources are emulated under the XIVE object and share the >>> + * same characteristic */ >>> + xive->flags = XIVE_SRC_TRIGGER; >> >> You never actually use this field. And since it always has the same >> value, is there a point to storing it? > > Some HW sources don't have it, so with pass-through maybe...
Hmm, yes. So, the current design for sPAPR handles all sources under the same XIVE object with a global memory region for all the ESBs. The first RFC had a mechanism to register source objects into the XIVE main one, allocating the IRQs per source and mapping the ESBs in the overall region. A bit like OPAL does. I then simplified for the sake of clarity and merged everything under the same XIVE object. Shall I reintroduce multiples sources support ? and provide a default one for IPIs and virtual devices of the machine. Thanks, C.