On Mon, 5 Jul 2021 at 18:04, <shashi.mall...@linaro.org> wrote: > > On Mon, 2021-07-05 at 17:25 +0100, Peter Maydell wrote: > > On Mon, 5 Jul 2021 at 16:55, <shashi.mall...@linaro.org> wrote: > > > On Mon, 2021-07-05 at 15:58 +0100, Peter Maydell wrote: > > > > On Wed, 30 Jun 2021 at 16:32, Shashi Mallela < > > > > shashi.mall...@linaro.org> wrote: > > > > > Added register definitions relevant to ITS,implemented overall > > > > > ITS device framework with stubs for ITS control and translater > > > > > regions read/write,extended ITS common to handle mmio init > > > > > between > > > > > existing kvm device and newer qemu device. > > > > > > > > > > Signed-off-by: Shashi Mallela <shashi.mall...@linaro.org> > > > > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> > > > > > +static void gicv3_arm_its_realize(DeviceState *dev, Error > > > > > **errp) > > > > > +{ > > > > > + GICv3ITSState *s = ARM_GICV3_ITS_COMMON(dev); > > > > > + > > > > > + gicv3_its_init_mmio(s, &gicv3_its_control_ops, > > > > > &gicv3_its_translation_ops); > > > > > + > > > > > + if (s->gicv3->cpu->gicr_typer & GICR_TYPER_PLPIS) { > > > > > > > > Can you remind me why we make this check, please? When would we > > > > have created an ITS device but not have a GICv3 with LPI support? > > > This check applies to GIC's physical LPI support only as against > > > GIC's > > > virtual LPI support. > > > > Right, but when would we have a GIC with no physical LPI support > > but an ITS is present ? > If we only support Direct injection of virtual interrupts (which can > have their own vPEID and the vPE table),then the ITS present could havejust > virtual LPI support
This patchset does not support a virtual-LPI-only ITS, though: it doesn't support virtual LPIs at all. If you use it with CPUs without physical LPI support , this code will skip entirely setting GITS_TYPER and will make reset do nothing, and then the rest of the ITS implementation will misbehave. I think what we should do is: * in realize, check every CPU to make sure its redistributor supports physical LPIs, and return an error from realize if not * in reset, don't check anything If we add virtual-LPI-only ITS support later, we can always update this code appropriately. thanks -- PMM