On Fri, 27 Dec 2024 at 21:41, Philippe Mathieu-Daudé <phi...@linaro.org> wrote:
> On 27/12/24 21:12, Phil Dennis-Jordan wrote: > > > > diff --git a/hw/vmapple/Kconfig b/hw/vmapple/Kconfig > > > index bcd1be63e3..6a4c4a7fa2 100644 > > > --- a/hw/vmapple/Kconfig > > > +++ b/hw/vmapple/Kconfig > > > @@ -10,3 +10,23 @@ config VMAPPLE_CFG > > > config VMAPPLE_VIRTIO_BLK > > > bool > > > > > > +config VMAPPLE > > > + bool > > > + depends on ARM > > > + depends on HVF > > > + default y if ARM > > > + imply PCI_DEVICES > > > + select ARM_GIC > > > > Hmmm I'm getting ...: > > > > qemu-system-aarch64: unknown type 'arm-gicv3' > > > > > + select PLATFORM_BUS > > > + select PCI_EXPRESS > > > + select PCI_EXPRESS_GENERIC_BRIDGE > > > + select PL011 # UART > > > + select PL031 # RTC > > > + select PL061 # GPIO > > > + select GPIO_PWR > > > + select PVPANIC_MMIO > > > + select VMAPPLE_AES > > > + select VMAPPLE_BDIF > > > + select VMAPPLE_CFG > > > + select MAC_PVG_MMIO > > > + select VMAPPLE_VIRTIO_BLK > > > > > > > +static void create_gic(VMAppleMachineState *vms, MemoryRegion > *mem) > > > +{ > > > + MachineState *ms = MACHINE(vms); > > > + /* We create a standalone GIC */ > > > + SysBusDevice *gicbusdev; > > > + QList *redist_region_count; > > > + int i; > > > + unsigned int smp_cpus = ms->smp.cpus; > > > + > > > + vms->gic = qdev_new(gicv3_class_name()); > > > > ... I suppose due to this call ^^^. > > > > $ git grep arm-gicv3 > > hw/intc/arm_gicv3_kvm.c:45:#define TYPE_KVM_ARM_GICV3 "kvm-arm-gicv3" > > include/hw/intc/arm_gicv3.h:18:#define TYPE_ARM_GICV3 "arm-gicv3" > > $ git grep TYPE_ARM_GICV3 > > hw/intc/arm_gicv3.c:466: .name = TYPE_ARM_GICV3, > > $ git grep -FW arm_gicv3.c > > hw/intc/meson.build=9=system_ss.add(when: 'CONFIG_ARM_GICV3_TCG', > > if_true: files( > > hw/intc/meson.build:10: 'arm_gicv3.c', > > ... > > > > > > Ahhh, good catch! I suppose this is with —disable-tcg (or equivalent) > > Yes, this is how I test HVF. > > > > > > > I think commit a8a5546798c ("hw/intc/arm_gicv3: Introduce > > CONFIG_ARM_GIC_TCG Kconfig selector") is invalid as being > > too restrictive. > > > > I can go a bit further with these changes on top (ignoring > > renaming ARM_GICV3_TCG -> ARM_GICV3): > > > > > > -- >8 -- > > diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig > > index dd405bdb5d2..9e06c05b449 100644 > > --- a/hw/intc/Kconfig > > +++ b/hw/intc/Kconfig > > @@ -26 +26 @@ config ARM_GIC > > - select ARM_GICV3_TCG if TCG > > + select ARM_GICV3_TCG if TCG || HVF > > @@ -32 +32 @@ config ARM_GICV3_TCG > > - depends on ARM_GIC && TCG > > + depends on ARM_GIC && (TCG || HVF) > > Now implemented as [*]: > > https://lore.kernel.org/qemu-devel/20241227202435.48055-1-phi...@linaro.org/ > > > diff --git a/hw/vmapple/Kconfig b/hw/vmapple/Kconfig > > index 6a4c4a7fa2e..374a89f6a8f 100644 > > --- a/hw/vmapple/Kconfig > > +++ b/hw/vmapple/Kconfig > > @@ -19 +19 @@ config VMAPPLE > > - select ARM_GIC > > + select ARM_GICV3_TCG > > > > > > Is this last part necessary/advisable? It would seem like the above > > changes in hw/intc/Kconfig should make ARM_GIC work too? > > (The PVG dependency means we currently can’t support anything other than > > macOS host systems and thus HVF or theoretically TCG anyway, but if QEMU > > gained support for the HVF-provided GIC implementation, we’d need to > > change this line again.) > > Hmm indeed we can skip it, but vmapple machine enforces rev=3: > > > > + qdev_prop_set_uint32(vms->gic, "revision", 3); > > So directly selecting ARM_GICV3 sounds more explicit to me. > That's true. We can sort out the HVF GICV3 if and when that ever gets implemented. > The diff is now (on top of [*]): > > - select ARM_GIC > + select ARM_GICV3 > > WDYT? > Sounds good.