* [PATCH RFC 0/1] QOM type names and QAPI
@ 2021-01-29 8:15 Markus Armbruster
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-01-29 8:15 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, mst, mark.cave-ayland, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz,
pbonzini
QAPI has naming rules. docs/devel/qapi-code-gen.txt:
=== Naming rules and reserved names ===
All names must begin with a letter, and contain only ASCII letters,
digits, hyphen, and underscore. There are two exceptions: enum values
may start with a digit, and names that are downstream extensions (see
section Downstream extensions) start with underscore.
[More on reserved names, upper vs. lower case, '-' vs. '_'...]
The generator enforces the rules.
Naming rules help in at least three ways:
1. They help with keeping names in interfaces consistent and
predictable.
2. They make avoiding collisions with the users' names in the
generator simpler.
3. They enable quote-less, evolvable syntax.
For instance, keyval_parse() syntax consists of names, values, and
special characters ',', '=', '.'
Since names cannot contain special characters, there is no need for
quoting[*]. Simple.
Values are unrestricted, but only ',' is special there. We quote
it by doubling.
Together, we get exactly the same quoting as in QemuOpts. This is
a feature.
If we ever decice to extend key syntax, we have plenty of special
characters to choose from. This is also a feature.
Both features rely on naming rules.
QOM has no naming rules whatsoever. Actual names aren't nearly as bad
as they could be. Still, there are plenty of "funny" names. This
will become a problem when we
* Switch from QemuOpts to keyval_parse()
QOM type names must not contain special characters, unless we
introduce more quoting. Which we shouldn't, because the value of
special characters in names is negligible compared to the hassle of
having to quote them.
* QAPIfy (the compile-time static parts of) QOM
QOM type names become QAPI enum values. They must conform to QAPI
naming rules.
Adopting QAPI naming rules for QOM type names takes care of both.
Let's review the existing offenders.
1. We have a few type names containing ',', and one containing ' '.
The former require QemuOpts / keyval quoting (double the comma),
the latter requires shell quoting. There is no excuse for making
our users remember and do such crap. PATCH 1 eliminates it.
2. We have some 550 type names containing '.'. QAPI's naming rules
could be relaxed to accept '.', but keyval_parse()'s can't.
Aside: I wish keyval_parse() would use '/' instead of '.', but it's
designed to be compatible to the block layer's existing use of
dotted keys (shoehorned into QemuOpts).
3. We have six type names containing '+'. Four of them also contain
'.'. Naming rules could be relaxed to accept '+'. I'm not sure
it's worthwhile.
4. We have 19 names starting with a digit. Three of them also contain
'.'. Leading digit is okay as QAPI enum, not okay as
keyval_parse() key fragment. We can either rename these types, or
make keyval_parse() a bit less strict.
Of the type names containing '.' or '+'[**], 293 are CPUs, 107 are
machines, and 150 are something else. 48 of them can be plugged with
-device, all s390x or spapr CPUs.
Can we get rid of '.'?
I figure we could keep old names as deprecated aliases if we care.
Perhaps just the ones that can be plugged with -device.
[*] Paolo's "[PATCH 04/25] keyval: accept escaped commas in implied
option" provides for comma-quoting. I'm ignoring it here for brevity.
I assure you it doesn't weaken my argument.
[**] They are:
603e_v1.1-powerpc-cpu
603e_v1.1-powerpc64-cpu
603e_v1.2-powerpc-cpu
603e_v1.2-powerpc64-cpu
603e_v1.3-powerpc-cpu
603e_v1.3-powerpc64-cpu
603e_v1.4-powerpc-cpu
603e_v1.4-powerpc64-cpu
603e_v2.2-powerpc-cpu
603e_v2.2-powerpc64-cpu
603e_v4.1-powerpc-cpu
603e_v4.1-powerpc64-cpu
604e_v1.0-powerpc-cpu
604e_v1.0-powerpc64-cpu
604e_v2.2-powerpc-cpu
604e_v2.2-powerpc64-cpu
604e_v2.4-powerpc-cpu
604e_v2.4-powerpc64-cpu
7400_v1.0-powerpc-cpu
7400_v1.0-powerpc64-cpu
7400_v1.1-powerpc-cpu
7400_v1.1-powerpc64-cpu
7400_v2.0-powerpc-cpu
7400_v2.0-powerpc64-cpu
7400_v2.1-powerpc-cpu
7400_v2.1-powerpc64-cpu
7400_v2.2-powerpc-cpu
7400_v2.2-powerpc64-cpu
7400_v2.6-powerpc-cpu
7400_v2.6-powerpc64-cpu
7400_v2.7-powerpc-cpu
7400_v2.7-powerpc64-cpu
7400_v2.8-powerpc-cpu
7400_v2.8-powerpc64-cpu
7400_v2.9-powerpc-cpu
7400_v2.9-powerpc64-cpu
740_v1.0-powerpc-cpu
740_v1.0-powerpc64-cpu
740_v2.0-powerpc-cpu
740_v2.0-powerpc64-cpu
740_v2.1-powerpc-cpu
740_v2.1-powerpc64-cpu
740_v2.2-powerpc-cpu
740_v2.2-powerpc64-cpu
740_v3.0-powerpc-cpu
740_v3.0-powerpc64-cpu
740_v3.1-powerpc-cpu
740_v3.1-powerpc64-cpu
7410_v1.0-powerpc-cpu
7410_v1.0-powerpc64-cpu
7410_v1.1-powerpc-cpu
7410_v1.1-powerpc64-cpu
7410_v1.2-powerpc-cpu
7410_v1.2-powerpc64-cpu
7410_v1.3-powerpc-cpu
7410_v1.3-powerpc64-cpu
7410_v1.4-powerpc-cpu
7410_v1.4-powerpc64-cpu
7441_v2.1-powerpc-cpu
7441_v2.1-powerpc64-cpu
7441_v2.10-powerpc-cpu
7441_v2.10-powerpc64-cpu
7441_v2.3-powerpc-cpu
7441_v2.3-powerpc64-cpu
7445_v1.0-powerpc-cpu
7445_v1.0-powerpc64-cpu
7445_v2.1-powerpc-cpu
7445_v2.1-powerpc64-cpu
7445_v3.2-powerpc-cpu
7445_v3.2-powerpc64-cpu
7445_v3.3-powerpc-cpu
7445_v3.3-powerpc64-cpu
7445_v3.4-powerpc-cpu
7445_v3.4-powerpc64-cpu
7447_v1.0-powerpc-cpu
7447_v1.0-powerpc64-cpu
7447_v1.1-powerpc-cpu
7447_v1.1-powerpc64-cpu
7447a_v1.0-powerpc-cpu
7447a_v1.0-powerpc64-cpu
7447a_v1.1-powerpc-cpu
7447a_v1.1-powerpc64-cpu
7447a_v1.2-powerpc-cpu
7447a_v1.2-powerpc64-cpu
7448_v1.0-powerpc-cpu
7448_v1.0-powerpc64-cpu
7448_v1.1-powerpc-cpu
7448_v1.1-powerpc64-cpu
7448_v2.0-powerpc-cpu
7448_v2.0-powerpc64-cpu
7448_v2.1-powerpc-cpu
7448_v2.1-powerpc64-cpu
7450_v1.0-powerpc-cpu
7450_v1.0-powerpc64-cpu
7450_v1.1-powerpc-cpu
7450_v1.1-powerpc64-cpu
7450_v1.2-powerpc-cpu
7450_v1.2-powerpc64-cpu
7450_v2.0-powerpc-cpu
7450_v2.0-powerpc64-cpu
7450_v2.1-powerpc-cpu
7450_v2.1-powerpc64-cpu
7451_v2.10-powerpc-cpu
7451_v2.10-powerpc64-cpu
7451_v2.3-powerpc-cpu
7451_v2.3-powerpc64-cpu
7455_v1.0-powerpc-cpu
7455_v1.0-powerpc64-cpu
7455_v2.1-powerpc-cpu
7455_v2.1-powerpc64-cpu
7455_v3.2-powerpc-cpu
7455_v3.2-powerpc64-cpu
7455_v3.3-powerpc-cpu
7455_v3.3-powerpc64-cpu
7455_v3.4-powerpc-cpu
7455_v3.4-powerpc64-cpu
7457_v1.0-powerpc-cpu
7457_v1.0-powerpc64-cpu
7457_v1.1-powerpc-cpu
7457_v1.1-powerpc64-cpu
7457_v1.2-powerpc-cpu
7457_v1.2-powerpc64-cpu
7457a_v1.0-powerpc-cpu
7457a_v1.0-powerpc64-cpu
7457a_v1.1-powerpc-cpu
7457a_v1.1-powerpc64-cpu
7457a_v1.2-powerpc-cpu
7457a_v1.2-powerpc64-cpu
745_v1.0-powerpc-cpu
745_v1.0-powerpc64-cpu
745_v1.1-powerpc-cpu
745_v1.1-powerpc64-cpu
745_v2.0-powerpc-cpu
745_v2.0-powerpc64-cpu
745_v2.1-powerpc-cpu
745_v2.1-powerpc64-cpu
745_v2.2-powerpc-cpu
745_v2.2-powerpc64-cpu
745_v2.3-powerpc-cpu
745_v2.3-powerpc64-cpu
745_v2.4-powerpc-cpu
745_v2.4-powerpc64-cpu
745_v2.5-powerpc-cpu
745_v2.5-powerpc64-cpu
745_v2.6-powerpc-cpu
745_v2.6-powerpc64-cpu
745_v2.7-powerpc-cpu
745_v2.7-powerpc64-cpu
745_v2.8-powerpc-cpu
745_v2.8-powerpc64-cpu
750_v1.0-powerpc-cpu
750_v1.0-powerpc64-cpu
750_v2.0-powerpc-cpu
750_v2.0-powerpc64-cpu
750_v2.1-powerpc-cpu
750_v2.1-powerpc64-cpu
750_v2.2-powerpc-cpu
750_v2.2-powerpc64-cpu
750_v3.0-powerpc-cpu
750_v3.0-powerpc64-cpu
750_v3.1-powerpc-cpu
750_v3.1-powerpc64-cpu
750cl_v1.0-powerpc-cpu
750cl_v1.0-powerpc64-cpu
750cl_v2.0-powerpc-cpu
750cl_v2.0-powerpc64-cpu
750cx_v1.0-powerpc-cpu
750cx_v1.0-powerpc64-cpu
750cx_v2.0-powerpc-cpu
750cx_v2.0-powerpc64-cpu
750cx_v2.1-powerpc-cpu
750cx_v2.1-powerpc64-cpu
750cx_v2.2-powerpc-cpu
750cx_v2.2-powerpc64-cpu
750cxe_v2.1-powerpc-cpu
750cxe_v2.1-powerpc64-cpu
750cxe_v2.2-powerpc-cpu
750cxe_v2.2-powerpc64-cpu
750cxe_v2.3-powerpc-cpu
750cxe_v2.3-powerpc64-cpu
750cxe_v2.4-powerpc-cpu
750cxe_v2.4-powerpc64-cpu
750cxe_v2.4b-powerpc-cpu
750cxe_v2.4b-powerpc64-cpu
750cxe_v3.0-powerpc-cpu
750cxe_v3.0-powerpc64-cpu
750cxe_v3.1-powerpc-cpu
750cxe_v3.1-powerpc64-cpu
750cxe_v3.1b-powerpc-cpu
750cxe_v3.1b-powerpc64-cpu
750fx_v1.0-powerpc-cpu
750fx_v1.0-powerpc64-cpu
750fx_v2.0-powerpc-cpu
750fx_v2.0-powerpc64-cpu
750fx_v2.1-powerpc-cpu
750fx_v2.1-powerpc64-cpu
750fx_v2.2-powerpc-cpu
750fx_v2.2-powerpc64-cpu
750fx_v2.3-powerpc-cpu
750fx_v2.3-powerpc64-cpu
750gx_v1.0-powerpc-cpu
750gx_v1.0-powerpc64-cpu
750gx_v1.1-powerpc-cpu
750gx_v1.1-powerpc64-cpu
750gx_v1.2-powerpc-cpu
750gx_v1.2-powerpc64-cpu
750l_v2.0-powerpc-cpu
750l_v2.0-powerpc64-cpu
750l_v2.1-powerpc-cpu
750l_v2.1-powerpc64-cpu
750l_v2.2-powerpc-cpu
750l_v2.2-powerpc64-cpu
750l_v3.0-powerpc-cpu
750l_v3.0-powerpc64-cpu
750l_v3.2-powerpc-cpu
750l_v3.2-powerpc64-cpu
755_v1.0-powerpc-cpu
755_v1.0-powerpc64-cpu
755_v1.1-powerpc-cpu
755_v1.1-powerpc64-cpu
755_v2.0-powerpc-cpu
755_v2.0-powerpc64-cpu
755_v2.1-powerpc-cpu
755_v2.1-powerpc64-cpu
755_v2.2-powerpc-cpu
755_v2.2-powerpc64-cpu
755_v2.3-powerpc-cpu
755_v2.3-powerpc64-cpu
755_v2.4-powerpc-cpu
755_v2.4-powerpc64-cpu
755_v2.5-powerpc-cpu
755_v2.5-powerpc64-cpu
755_v2.6-powerpc-cpu
755_v2.6-powerpc64-cpu
755_v2.7-powerpc-cpu
755_v2.7-powerpc64-cpu
755_v2.8-powerpc-cpu
755_v2.8-powerpc64-cpu
970_v2.2-powerpc64-cpu
970_v2.2-spapr-cpu-core
970fx_v1.0-powerpc64-cpu
970fx_v2.0-powerpc64-cpu
970fx_v2.1-powerpc64-cpu
970fx_v3.0-powerpc64-cpu
970fx_v3.1-powerpc64-cpu
970mp_v1.0-powerpc64-cpu
970mp_v1.0-spapr-cpu-core
970mp_v1.1-powerpc64-cpu
970mp_v1.1-spapr-cpu-core
ALTR.timer
Sun-UltraSparc-IIIi+-sparc64-cpu
Sun-UltraSparc-IV+-sparc64-cpu
arm.cortex-a9-global-timer
aspeed.fmc-ast2400
aspeed.fmc-ast2500
aspeed.fmc-ast2600
aspeed.gpio
aspeed.gpio-ast2400
aspeed.gpio-ast2500
aspeed.gpio-ast2600
aspeed.gpio-ast2600-1_8v
aspeed.i2c
aspeed.i2c-ast2400
aspeed.i2c-ast2500
aspeed.i2c-ast2600
aspeed.rtc
aspeed.scu
aspeed.scu-ast2400
aspeed.scu-ast2500
aspeed.scu-ast2600
aspeed.sdhci
aspeed.sdmc
aspeed.sdmc-ast2400
aspeed.sdmc-ast2500
aspeed.sdmc-ast2600
aspeed.smc
aspeed.smc-ast2400
aspeed.spi1-ast2400
aspeed.spi1-ast2500
aspeed.spi1-ast2600
aspeed.spi2-ast2500
aspeed.spi2-ast2600
aspeed.timer
aspeed.timer-ast2400
aspeed.timer-ast2500
aspeed.timer-ast2600
aspeed.vic
aspeed.wdt
aspeed.wdt-ast2400
aspeed.wdt-ast2500
aspeed.wdt-ast2600
aspeed.xdma
cadence.sdhci
cfi.pflash01
cfi.pflash02
exynos4210.clk
exynos4210.combiner
exynos4210.fimd
exynos4210.gic
exynos4210.i2c
exynos4210.irq_gate
exynos4210.mct
exynos4210.pmu
exynos4210.pwm
exynos4210.rng
exynos4210.rtc
exynos4210.uart
imx.avic
imx.ccm
imx.enet
imx.epit
imx.fec
imx.gpio
imx.i2c
imx.rngc
imx.serial
imx.spi
imx.usbphy
imx2.wdt
imx25.ccm
imx25.gpt
imx31.ccm
imx31.gpt
imx6.ccm
imx6.gpt
imx6.src
imx6ul.ccm
imx7.analog
imx7.ccm
imx7.gpr
imx7.gpt
imx7.snvs
loongson.liointc
mchp.pfsoc.ddr_cfg
mchp.pfsoc.ddr_sgmii_phy
mchp.pfsoc.ioscb
mchp.pfsoc.sysreg
microbit.i2c
microchip.pfsoc
nrf51_soc.gpio
nrf51_soc.nvm
nrf51_soc.rng
nrf51_soc.timer
nrf51_soc.uart
pc-1.0-machine
pc-1.1-machine
pc-1.2-machine
pc-1.3-machine
pc-i440fx-1.4-machine
pc-i440fx-1.5-machine
pc-i440fx-1.6-machine
pc-i440fx-1.7-machine
pc-i440fx-2.0-machine
pc-i440fx-2.1-machine
pc-i440fx-2.10-machine
pc-i440fx-2.11-machine
pc-i440fx-2.12-machine
pc-i440fx-2.2-machine
pc-i440fx-2.3-machine
pc-i440fx-2.4-machine
pc-i440fx-2.5-machine
pc-i440fx-2.6-machine
pc-i440fx-2.7-machine
pc-i440fx-2.8-machine
pc-i440fx-2.9-machine
pc-i440fx-3.0-machine
pc-i440fx-3.1-machine
pc-i440fx-4.0-machine
pc-i440fx-4.1-machine
pc-i440fx-4.2-machine
pc-i440fx-5.0-machine
pc-i440fx-5.1-machine
pc-i440fx-5.2-machine
pc-i440fx-6.0-machine
pc-q35-2.10-machine
pc-q35-2.11-machine
pc-q35-2.12-machine
pc-q35-2.4-machine
pc-q35-2.5-machine
pc-q35-2.6-machine
pc-q35-2.7-machine
pc-q35-2.8-machine
pc-q35-2.9-machine
pc-q35-3.0-machine
pc-q35-3.1-machine
pc-q35-4.0-machine
pc-q35-4.0.1-machine
pc-q35-4.1-machine
pc-q35-4.2-machine
pc-q35-5.0-machine
pc-q35-5.1-machine
pc-q35-5.2-machine
pc-q35-6.0-machine
power10_v1.0-pnv-chip
power10_v1.0-powernv-cpu-core
power10_v1.0-powerpc64-cpu
power10_v1.0-spapr-cpu-core
power5+_v2.1-powerpc64-cpu
power5+_v2.1-spapr-cpu-core
power7+_v2.1-powerpc64-cpu
power7+_v2.1-spapr-cpu-core
power7_v2.3-powerpc64-cpu
power7_v2.3-spapr-cpu-core
power8_v2.0-pnv-chip
power8_v2.0-powernv-cpu-core
power8_v2.0-powerpc64-cpu
power8_v2.0-spapr-cpu-core
power8e_v2.1-pnv-chip
power8e_v2.1-powernv-cpu-core
power8e_v2.1-powerpc64-cpu
power8e_v2.1-spapr-cpu-core
power8nvl_v1.0-pnv-chip
power8nvl_v1.0-powernv-cpu-core
power8nvl_v1.0-powerpc64-cpu
power8nvl_v1.0-spapr-cpu-core
power9_v1.0-powerpc64-cpu
power9_v1.0-spapr-cpu-core
power9_v2.0-pnv-chip
power9_v2.0-powernv-cpu-core
power9_v2.0-powerpc64-cpu
power9_v2.0-spapr-cpu-core
pseries-2.1-machine
pseries-2.10-machine
pseries-2.11-machine
pseries-2.12-machine
pseries-2.12-sxxm-machine
pseries-2.2-machine
pseries-2.3-machine
pseries-2.4-machine
pseries-2.5-machine
pseries-2.6-machine
pseries-2.7-machine
pseries-2.8-machine
pseries-2.9-machine
pseries-3.0-machine
pseries-3.1-machine
pseries-4.0-machine
pseries-4.1-machine
pseries-4.2-machine
pseries-5.0-machine
pseries-5.1-machine
pseries-5.2-machine
pseries-6.0-machine
qemu:dummy
qemu:iommu-memory-region
qemu:memory-region
riscv.hart_array
riscv.lowrisc.ibex.soc
riscv.sifive.clint
riscv.sifive.e.prci
riscv.sifive.e.soc
riscv.sifive.plic
riscv.sifive.test
riscv.sifive.u.otp
riscv.sifive.u.prci
riscv.sifive.u.soc
s390-ccw-virtio-2.10-machine
s390-ccw-virtio-2.11-machine
s390-ccw-virtio-2.12-machine
s390-ccw-virtio-2.4-machine
s390-ccw-virtio-2.5-machine
s390-ccw-virtio-2.6-machine
s390-ccw-virtio-2.7-machine
s390-ccw-virtio-2.8-machine
s390-ccw-virtio-2.9-machine
s390-ccw-virtio-3.0-machine
s390-ccw-virtio-3.1-machine
s390-ccw-virtio-4.0-machine
s390-ccw-virtio-4.1-machine
s390-ccw-virtio-4.2-machine
s390-ccw-virtio-5.0-machine
s390-ccw-virtio-5.1-machine
s390-ccw-virtio-5.2-machine
s390-ccw-virtio-6.0-machine
sifive.pdma
sifive_soc.gpio
virt-2.10-machine
virt-2.11-machine
virt-2.12-machine
virt-2.6-machine
virt-2.7-machine
virt-2.8-machine
virt-2.9-machine
virt-3.0-machine
virt-3.1-machine
virt-4.0-machine
virt-4.1-machine
virt-4.2-machine
virt-5.0-machine
virt-5.1-machine
virt-5.2-machine
virt-6.0-machine
xenfv-3.1-machine
xenfv-4.2-machine
xlnx-zynmp.rtc
xlnx.axi-dma
xlnx.axi-ethernet
xlnx.dpdma
xlnx.pmu_io_intc
xlnx.ps7-dev-cfg
xlnx.ps7-qspi
xlnx.ps7-spi
xlnx.usmp-gqspi
xlnx.v-dp
xlnx.versal-usb2
xlnx.versal-usb2-ctrl-regs
xlnx.xps-ethernetlite
xlnx.xps-intc
xlnx.xps-spi
xlnx.xps-timer
xlnx.xps-uartlite
xlnx.zdma
xlnx.zynqmp-can
xlnx.zynqmp_ipi
z10BC.2-base-s390x-cpu
z10BC.2-s390x-cpu
z10EC.2-base-s390x-cpu
z10EC.2-s390x-cpu
z10EC.3-base-s390x-cpu
z10EC.3-s390x-cpu
z13.2-base-s390x-cpu
z13.2-s390x-cpu
z14.2-base-s390x-cpu
z14.2-s390x-cpu
z196.2-base-s390x-cpu
z196.2-s390x-cpu
z890.2-base-s390x-cpu
z890.2-s390x-cpu
z890.3-base-s390x-cpu
z890.3-s390x-cpu
z900.2-base-s390x-cpu
z900.2-s390x-cpu
z900.3-base-s390x-cpu
z900.3-s390x-cpu
z990.2-base-s390x-cpu
z990.2-s390x-cpu
z990.3-base-s390x-cpu
z990.3-s390x-cpu
z990.4-base-s390x-cpu
z990.4-s390x-cpu
z990.5-base-s390x-cpu
z990.5-s390x-cpu
z9BC.2-base-s390x-cpu
z9BC.2-s390x-cpu
z9EC.2-base-s390x-cpu
z9EC.2-s390x-cpu
z9EC.3-base-s390x-cpu
z9EC.3-s390x-cpu
zEC12.2-base-s390x-cpu
zEC12.2-s390x-cpu
Markus Armbruster (1):
hw: Replace anti-social QOM type names
include/hw/arm/armv7m.h | 2 +-
include/hw/arm/fsl-imx25.h | 2 +-
include/hw/arm/fsl-imx31.h | 2 +-
include/hw/arm/fsl-imx6.h | 2 +-
include/hw/arm/fsl-imx6ul.h | 2 +-
include/hw/arm/fsl-imx7.h | 2 +-
include/hw/arm/xlnx-zynqmp.h | 2 +-
include/hw/cris/etraxfs.h | 2 +-
include/hw/i386/ich9.h | 2 +-
include/hw/misc/grlib_ahb_apb_pnp.h | 4 ++--
include/hw/misc/zynq-xadc.h | 2 +-
include/hw/register.h | 2 +-
include/hw/sparc/grlib.h | 6 +++---
hw/arm/xilinx_zynq.c | 2 +-
hw/audio/cs4231.c | 2 +-
hw/block/fdc.c | 4 ++--
hw/char/etraxfs_ser.c | 2 +-
hw/cris/axis_dev88.c | 6 +++---
hw/display/tcx.c | 2 +-
hw/intc/etraxfs_pic.c | 2 +-
hw/microblaze/xlnx-zynqmp-pmu.c | 2 +-
hw/misc/zynq_slcr.c | 2 +-
hw/sparc/sun4m.c | 12 ++++++------
hw/timer/etraxfs_timer.c | 2 +-
softmmu/vl.c | 2 +-
tests/vmstate-static-checker-data/dump1.json | 4 ++--
tests/vmstate-static-checker-data/dump2.json | 4 ++--
27 files changed, 40 insertions(+), 40 deletions(-)
--
2.26.2
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH RFC 1/1] hw: Replace anti-social QOM type names
2021-01-29 8:15 [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
@ 2021-01-29 8:15 ` Markus Armbruster
2021-01-29 9:06 ` Paolo Bonzini
2021-02-01 20:45 ` Mark Cave-Ayland
2021-01-29 9:17 ` [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
` (2 subsequent siblings)
3 siblings, 2 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-01-29 8:15 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, mst, mark.cave-ayland, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz,
pbonzini
Several QOM type names contain ',':
ARM,bitband-memory
etraxfs,pic
etraxfs,serial
etraxfs,timer
fsl,imx25
fsl,imx31
fsl,imx6
fsl,imx6ul
fsl,imx7
grlib,ahbpnp
grlib,apbpnp
grlib,apbuart
grlib,gptimer
grlib,irqmp
qemu,register
SUNW,bpp
SUNW,CS4231
SUNW,DBRI
SUNW,DBRI.prom
SUNW,fdtwo
SUNW,sx
SUNW,tcx
xilinx,zynq_slcr
xlnx,zynqmp
xlnx,zynqmp-pmu-soc
xlnx,zynq-xadc
These are all device types. They can't be plugged with -device /
device_add, except for xlnx,zynqmp-pmu-soc, and I doubt that one
actually works.
They *can* be used with -device / device_add to request help.
Usability is poor, though: you have to double the comma, like this:
$ qemu-system-x86_64 -device SUNW,,fdtwo,help
Trap for the unwary. The fact that this was broken in
device-introspect-test for more than six years until commit e27bd49876
fixed it demonstrates that "the unwary" includes seasoned developers.
One QOM type name contains ' ': "ICH9 SMB". Because having to
remember just one way to quote would be too easy.
Summarily replace ',' and ' ' by '-'.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
include/hw/arm/armv7m.h | 2 +-
include/hw/arm/fsl-imx25.h | 2 +-
include/hw/arm/fsl-imx31.h | 2 +-
include/hw/arm/fsl-imx6.h | 2 +-
include/hw/arm/fsl-imx6ul.h | 2 +-
include/hw/arm/fsl-imx7.h | 2 +-
include/hw/arm/xlnx-zynqmp.h | 2 +-
include/hw/cris/etraxfs.h | 2 +-
include/hw/i386/ich9.h | 2 +-
include/hw/misc/grlib_ahb_apb_pnp.h | 4 ++--
include/hw/misc/zynq-xadc.h | 2 +-
include/hw/register.h | 2 +-
include/hw/sparc/grlib.h | 6 +++---
hw/arm/xilinx_zynq.c | 2 +-
hw/audio/cs4231.c | 2 +-
hw/block/fdc.c | 4 ++--
hw/char/etraxfs_ser.c | 2 +-
hw/cris/axis_dev88.c | 6 +++---
hw/display/tcx.c | 2 +-
hw/intc/etraxfs_pic.c | 2 +-
hw/microblaze/xlnx-zynqmp-pmu.c | 2 +-
hw/misc/zynq_slcr.c | 2 +-
hw/sparc/sun4m.c | 12 ++++++------
hw/timer/etraxfs_timer.c | 2 +-
softmmu/vl.c | 2 +-
tests/vmstate-static-checker-data/dump1.json | 4 ++--
tests/vmstate-static-checker-data/dump2.json | 4 ++--
27 files changed, 40 insertions(+), 40 deletions(-)
diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h
index 0791dcb68a..189b23a8ce 100644
--- a/include/hw/arm/armv7m.h
+++ b/include/hw/arm/armv7m.h
@@ -15,7 +15,7 @@
#include "target/arm/idau.h"
#include "qom/object.h"
-#define TYPE_BITBAND "ARM,bitband-memory"
+#define TYPE_BITBAND "ARM-bitband-memory"
OBJECT_DECLARE_SIMPLE_TYPE(BitBandState, BITBAND)
struct BitBandState {
diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
index c1603b2ac2..1b1086e945 100644
--- a/include/hw/arm/fsl-imx25.h
+++ b/include/hw/arm/fsl-imx25.h
@@ -34,7 +34,7 @@
#include "target/arm/cpu.h"
#include "qom/object.h"
-#define TYPE_FSL_IMX25 "fsl,imx25"
+#define TYPE_FSL_IMX25 "fsl-imx25"
OBJECT_DECLARE_SIMPLE_TYPE(FslIMX25State, FSL_IMX25)
#define FSL_IMX25_NUM_UARTS 5
diff --git a/include/hw/arm/fsl-imx31.h b/include/hw/arm/fsl-imx31.h
index b9792d58ae..c116a73e0b 100644
--- a/include/hw/arm/fsl-imx31.h
+++ b/include/hw/arm/fsl-imx31.h
@@ -30,7 +30,7 @@
#include "target/arm/cpu.h"
#include "qom/object.h"
-#define TYPE_FSL_IMX31 "fsl,imx31"
+#define TYPE_FSL_IMX31 "fsl-imx31"
OBJECT_DECLARE_SIMPLE_TYPE(FslIMX31State, FSL_IMX31)
#define FSL_IMX31_NUM_UARTS 2
diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h
index 29cc425acc..83291457cf 100644
--- a/include/hw/arm/fsl-imx6.h
+++ b/include/hw/arm/fsl-imx6.h
@@ -36,7 +36,7 @@
#include "cpu.h"
#include "qom/object.h"
-#define TYPE_FSL_IMX6 "fsl,imx6"
+#define TYPE_FSL_IMX6 "fsl-imx6"
OBJECT_DECLARE_SIMPLE_TYPE(FslIMX6State, FSL_IMX6)
#define FSL_IMX6_NUM_CPUS 4
diff --git a/include/hw/arm/fsl-imx6ul.h b/include/hw/arm/fsl-imx6ul.h
index f8ebfba4f9..7812e516a5 100644
--- a/include/hw/arm/fsl-imx6ul.h
+++ b/include/hw/arm/fsl-imx6ul.h
@@ -40,7 +40,7 @@
#include "cpu.h"
#include "qom/object.h"
-#define TYPE_FSL_IMX6UL "fsl,imx6ul"
+#define TYPE_FSL_IMX6UL "fsl-imx6ul"
OBJECT_DECLARE_SIMPLE_TYPE(FslIMX6ULState, FSL_IMX6UL)
enum FslIMX6ULConfiguration {
diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
index 161fdc36da..f5d527a490 100644
--- a/include/hw/arm/fsl-imx7.h
+++ b/include/hw/arm/fsl-imx7.h
@@ -41,7 +41,7 @@
#include "cpu.h"
#include "qom/object.h"
-#define TYPE_FSL_IMX7 "fsl,imx7"
+#define TYPE_FSL_IMX7 "fsl-imx7"
OBJECT_DECLARE_SIMPLE_TYPE(FslIMX7State, FSL_IMX7)
enum FslIMX7Configuration {
diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h
index 6f45387a17..7941e29c29 100644
--- a/include/hw/arm/xlnx-zynqmp.h
+++ b/include/hw/arm/xlnx-zynqmp.h
@@ -36,7 +36,7 @@
#include "qom/object.h"
#include "net/can_emu.h"
-#define TYPE_XLNX_ZYNQMP "xlnx,zynqmp"
+#define TYPE_XLNX_ZYNQMP "xlnx-zynqmp"
OBJECT_DECLARE_SIMPLE_TYPE(XlnxZynqMPState, XLNX_ZYNQMP)
#define XLNX_ZYNQMP_NUM_APU_CPUS 4
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 9e99380e0c..8b01ed67d3 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -41,7 +41,7 @@ static inline DeviceState *etraxfs_ser_create(hwaddr addr,
DeviceState *dev;
SysBusDevice *s;
- dev = qdev_new("etraxfs,serial");
+ dev = qdev_new("etraxfs-serial");
s = SYS_BUS_DEVICE(dev);
qdev_prop_set_chr(dev, "chardev", chr);
sysbus_realize_and_unref(s, &error_fatal);
diff --git a/include/hw/i386/ich9.h b/include/hw/i386/ich9.h
index d1ea000d3d..23ee8e371b 100644
--- a/include/hw/i386/ich9.h
+++ b/include/hw/i386/ich9.h
@@ -216,7 +216,7 @@ struct ICH9LPCState {
/* D31:F3 SMBus controller */
-#define TYPE_ICH9_SMB_DEVICE "ICH9 SMB"
+#define TYPE_ICH9_SMB_DEVICE "ICH9-SMB"
#define ICH9_A2_SMB_REVISION 0x02
#define ICH9_SMB_PI 0x00
diff --git a/include/hw/misc/grlib_ahb_apb_pnp.h b/include/hw/misc/grlib_ahb_apb_pnp.h
index 341451bff6..bab0b5f47f 100644
--- a/include/hw/misc/grlib_ahb_apb_pnp.h
+++ b/include/hw/misc/grlib_ahb_apb_pnp.h
@@ -25,10 +25,10 @@
#define GRLIB_AHB_APB_PNP_H
#include "qom/object.h"
-#define TYPE_GRLIB_AHB_PNP "grlib,ahbpnp"
+#define TYPE_GRLIB_AHB_PNP "grlib-ahbpnp"
OBJECT_DECLARE_SIMPLE_TYPE(AHBPnp, GRLIB_AHB_PNP)
-#define TYPE_GRLIB_APB_PNP "grlib,apbpnp"
+#define TYPE_GRLIB_APB_PNP "grlib-apbpnp"
OBJECT_DECLARE_SIMPLE_TYPE(APBPnp, GRLIB_APB_PNP)
void grlib_ahb_pnp_add_entry(AHBPnp *dev, uint32_t address, uint32_t mask,
diff --git a/include/hw/misc/zynq-xadc.h b/include/hw/misc/zynq-xadc.h
index 602bfb4ab1..2017b7a803 100644
--- a/include/hw/misc/zynq-xadc.h
+++ b/include/hw/misc/zynq-xadc.h
@@ -23,7 +23,7 @@
#define ZYNQ_XADC_NUM_ADC_REGS 128
#define ZYNQ_XADC_FIFO_DEPTH 15
-#define TYPE_ZYNQ_XADC "xlnx,zynq-xadc"
+#define TYPE_ZYNQ_XADC "xlnx-zynq-xadc"
OBJECT_DECLARE_SIMPLE_TYPE(ZynqXADCState, ZYNQ_XADC)
struct ZynqXADCState {
diff --git a/include/hw/register.h b/include/hw/register.h
index 03c8926d27..b480e3882c 100644
--- a/include/hw/register.h
+++ b/include/hw/register.h
@@ -87,7 +87,7 @@ struct RegisterInfo {
void *opaque;
};
-#define TYPE_REGISTER "qemu,register"
+#define TYPE_REGISTER "qemu-register"
DECLARE_INSTANCE_CHECKER(RegisterInfo, REGISTER,
TYPE_REGISTER)
diff --git a/include/hw/sparc/grlib.h b/include/hw/sparc/grlib.h
index 2104f493f3..ef1946c7f8 100644
--- a/include/hw/sparc/grlib.h
+++ b/include/hw/sparc/grlib.h
@@ -32,14 +32,14 @@
*/
/* IRQMP */
-#define TYPE_GRLIB_IRQMP "grlib,irqmp"
+#define TYPE_GRLIB_IRQMP "grlib-irqmp"
void grlib_irqmp_ack(DeviceState *dev, int intno);
/* GPTimer */
-#define TYPE_GRLIB_GPTIMER "grlib,gptimer"
+#define TYPE_GRLIB_GPTIMER "grlib-gptimer"
/* APB UART */
-#define TYPE_GRLIB_APB_UART "grlib,apbuart"
+#define TYPE_GRLIB_APB_UART "grlib-apbuart"
#endif /* GRLIB_H */
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index b72772bc82..8db6cfd47f 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -231,7 +231,7 @@ static void zynq_init(MachineState *machine)
clock_set_hz(zynq_machine->ps_clk, PS_CLK_FREQUENCY);
/* Create slcr, keep a pointer to connect clocks */
- slcr = qdev_new("xilinx,zynq_slcr");
+ slcr = qdev_new("xilinx-zynq_slcr");
qdev_connect_clock_in(slcr, "ps_clk", zynq_machine->ps_clk);
sysbus_realize_and_unref(SYS_BUS_DEVICE(slcr), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(slcr), 0, 0xF8000000);
diff --git a/hw/audio/cs4231.c b/hw/audio/cs4231.c
index 209c05a0a0..8be716ee83 100644
--- a/hw/audio/cs4231.c
+++ b/hw/audio/cs4231.c
@@ -37,7 +37,7 @@
#define CS_DREGS 32
#define CS_MAXDREG (CS_DREGS - 1)
-#define TYPE_CS4231 "SUNW,CS4231"
+#define TYPE_CS4231 "SUNW-CS4231"
typedef struct CSState CSState;
DECLARE_INSTANCE_CHECKER(CSState, CS4231,
TYPE_CS4231)
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 7fc547c62d..0dd158bf73 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -2547,7 +2547,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
DeviceState *dev;
FDCtrlSysBus *sys;
- dev = qdev_new("SUNW,fdtwo");
+ dev = qdev_new("SUNW-fdtwo");
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
sys = SYSBUS_FDC(dev);
sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq);
@@ -2945,7 +2945,7 @@ static void sun4m_fdc_class_init(ObjectClass *klass, void *data)
}
static const TypeInfo sun4m_fdc_info = {
- .name = "SUNW,fdtwo",
+ .name = "SUNW-fdtwo",
.parent = TYPE_SYSBUS_FDC,
.instance_init = sun4m_fdc_initfn,
.class_init = sun4m_fdc_class_init,
diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index 6bee3ee18e..e8c3017724 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -50,7 +50,7 @@
#define STAT_TR_IDLE 22
#define STAT_TR_RDY 24
-#define TYPE_ETRAX_FS_SERIAL "etraxfs,serial"
+#define TYPE_ETRAX_FS_SERIAL "etraxfs-serial"
typedef struct ETRAXSerial ETRAXSerial;
DECLARE_INSTANCE_CHECKER(ETRAXSerial, ETRAX_SERIAL,
TYPE_ETRAX_FS_SERIAL)
diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index b0cb6d84af..af5a0e3517 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -289,7 +289,7 @@ void axisdev88_init(MachineState *machine)
&gpio_state.iomem);
- dev = qdev_new("etraxfs,pic");
+ dev = qdev_new("etraxfs-pic");
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
sysbus_mmio_map(s, 0, 0x3001c000);
@@ -323,8 +323,8 @@ void axisdev88_init(MachineState *machine)
}
/* 2 timers. */
- sysbus_create_varargs("etraxfs,timer", 0x3001e000, irq[0x1b], nmi[1], NULL);
- sysbus_create_varargs("etraxfs,timer", 0x3005e000, irq[0x1b], nmi[1], NULL);
+ sysbus_create_varargs("etraxfs-timer", 0x3001e000, irq[0x1b], nmi[1], NULL);
+ sysbus_create_varargs("etraxfs-timer", 0x3005e000, irq[0x1b], nmi[1], NULL);
for (i = 0; i < 4; i++) {
etraxfs_ser_create(0x30026000 + i * 0x2000, irq[0x14 + i], serial_hd(i));
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index 965f92ff6b..b584d39a01 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -56,7 +56,7 @@
#define TCX_THC_CURSMASK 0x900
#define TCX_THC_CURSBITS 0x980
-#define TYPE_TCX "SUNW,tcx"
+#define TYPE_TCX "SUNW-tcx"
OBJECT_DECLARE_SIMPLE_TYPE(TCXState, TCX)
struct TCXState {
diff --git a/hw/intc/etraxfs_pic.c b/hw/intc/etraxfs_pic.c
index 54ed4c77f7..bd37d1cca0 100644
--- a/hw/intc/etraxfs_pic.c
+++ b/hw/intc/etraxfs_pic.c
@@ -38,7 +38,7 @@
#define R_R_GURU 4
#define R_MAX 5
-#define TYPE_ETRAX_FS_PIC "etraxfs,pic"
+#define TYPE_ETRAX_FS_PIC "etraxfs-pic"
DECLARE_INSTANCE_CHECKER(struct etrax_pic, ETRAX_FS_PIC,
TYPE_ETRAX_FS_PIC)
diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c
index 1d1b4b5c19..5a2016672a 100644
--- a/hw/microblaze/xlnx-zynqmp-pmu.c
+++ b/hw/microblaze/xlnx-zynqmp-pmu.c
@@ -28,7 +28,7 @@
/* Define the PMU device */
-#define TYPE_XLNX_ZYNQMP_PMU_SOC "xlnx,zynqmp-pmu-soc"
+#define TYPE_XLNX_ZYNQMP_PMU_SOC "xlnx-zynqmp-pmu-soc"
OBJECT_DECLARE_SIMPLE_TYPE(XlnxZynqMPPMUSoCState, XLNX_ZYNQMP_PMU_SOC)
#define XLNX_ZYNQMP_PMU_ROM_SIZE 0x8000
diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c
index 66504a9d3a..12290ab8f6 100644
--- a/hw/misc/zynq_slcr.c
+++ b/hw/misc/zynq_slcr.c
@@ -182,7 +182,7 @@ REG32(DDRIOB, 0xb40)
#define ZYNQ_SLCR_MMIO_SIZE 0x1000
#define ZYNQ_SLCR_NUM_REGS (ZYNQ_SLCR_MMIO_SIZE / 4)
-#define TYPE_ZYNQ_SLCR "xilinx,zynq_slcr"
+#define TYPE_ZYNQ_SLCR "xilinx-zynq_slcr"
OBJECT_DECLARE_SIMPLE_TYPE(ZynqSLCRState, ZYNQ_SLCR)
struct ZynqSLCRState {
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 38ca1e33c7..d1a7bb79c3 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -496,7 +496,7 @@ static void tcx_init(hwaddr addr, qemu_irq irq, int vram_size, int width,
DeviceState *dev;
SysBusDevice *s;
- dev = qdev_new("SUNW,tcx");
+ dev = qdev_new("SUNW-tcx");
qdev_prop_set_uint32(dev, "vram_size", vram_size);
qdev_prop_set_uint16(dev, "width", width);
qdev_prop_set_uint16(dev, "height", height);
@@ -970,7 +970,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
}
if (hwdef->sx_base) {
- create_unimplemented_device("SUNW,sx", hwdef->sx_base, 0x2000);
+ create_unimplemented_device("SUNW-sx", hwdef->sx_base, 0x2000);
}
dev = qdev_new("sysbus-m48t08");
@@ -1045,23 +1045,23 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
slavio_irq[30], fdc_tc);
if (hwdef->cs_base) {
- sysbus_create_simple("SUNW,CS4231", hwdef->cs_base,
+ sysbus_create_simple("SUNW-CS4231", hwdef->cs_base,
slavio_irq[5]);
}
if (hwdef->dbri_base) {
/* ISDN chip with attached CS4215 audio codec */
/* prom space */
- create_unimplemented_device("SUNW,DBRI.prom",
+ create_unimplemented_device("SUNW-DBRI.prom",
hwdef->dbri_base + 0x1000, 0x30);
/* reg space */
- create_unimplemented_device("SUNW,DBRI",
+ create_unimplemented_device("SUNW-DBRI",
hwdef->dbri_base + 0x10000, 0x100);
}
if (hwdef->bpp_base) {
/* parallel port */
- create_unimplemented_device("SUNW,bpp", hwdef->bpp_base, 0x20);
+ create_unimplemented_device("SUNW-bpp", hwdef->bpp_base, 0x20);
}
initrd_size = 0;
diff --git a/hw/timer/etraxfs_timer.c b/hw/timer/etraxfs_timer.c
index 48f2e3ade2..5379006086 100644
--- a/hw/timer/etraxfs_timer.c
+++ b/hw/timer/etraxfs_timer.c
@@ -48,7 +48,7 @@
#define R_INTR 0x50
#define R_MASKED_INTR 0x54
-#define TYPE_ETRAX_FS_TIMER "etraxfs,timer"
+#define TYPE_ETRAX_FS_TIMER "etraxfs-timer"
typedef struct ETRAXTimerState ETRAXTimerState;
DECLARE_INSTANCE_CHECKER(ETRAXTimerState, ETRAX_TIMER,
TYPE_ETRAX_FS_TIMER)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 81766cd568..19b69e8c5f 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -917,7 +917,7 @@ static const VGAInterfaceInfo vga_interfaces[VGA_TYPE_MAX] = {
[VGA_TCX] = {
.opt_name = "tcx",
.name = "TCX framebuffer",
- .class_names = { "SUNW,tcx" },
+ .class_names = { "SUNW-tcx" },
},
[VGA_CG3] = {
.opt_name = "cg3",
diff --git a/tests/vmstate-static-checker-data/dump1.json b/tests/vmstate-static-checker-data/dump1.json
index 786ca0b484..8d024d99c4 100644
--- a/tests/vmstate-static-checker-data/dump1.json
+++ b/tests/vmstate-static-checker-data/dump1.json
@@ -823,8 +823,8 @@
]
}
},
- "SUNW,fdtwo": {
- "Name": "SUNW,fdtwo",
+ "SUNW-fdtwo": {
+ "Name": "SUNW-fdtwo",
"version_id": 2,
"minimum_version_id": 2,
"Description": {
diff --git a/tests/vmstate-static-checker-data/dump2.json b/tests/vmstate-static-checker-data/dump2.json
index 75719f5ec9..45d0126d77 100644
--- a/tests/vmstate-static-checker-data/dump2.json
+++ b/tests/vmstate-static-checker-data/dump2.json
@@ -628,8 +628,8 @@
]
}
},
- "SUNW,fdtwo": {
- "Name": "SUNW,fdtwo",
+ "SUNW-fdtwo": {
+ "Name": "SUNW-fdtwo",
"version_id": 2,
"minimum_version_id": 2,
"Description": {
--
2.26.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 1/1] hw: Replace anti-social QOM type names
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
@ 2021-01-29 9:06 ` Paolo Bonzini
2021-01-29 9:18 ` Markus Armbruster
2021-02-01 20:45 ` Mark Cave-Ayland
1 sibling, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2021-01-29 9:06 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel
Cc: peter.maydell, mst, mark.cave-ayland, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz
On 29/01/21 09:15, Markus Armbruster wrote:
> diff --git a/hw/block/fdc.c b/hw/block/fdc.c
> index 7fc547c62d..0dd158bf73 100644
> --- a/hw/block/fdc.c
> +++ b/hw/block/fdc.c
> @@ -2547,7 +2547,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
> DeviceState *dev;
> FDCtrlSysBus *sys;
>
> - dev = qdev_new("SUNW,fdtwo");
> + dev = qdev_new("SUNW-fdtwo");
> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
> sys = SYSBUS_FDC(dev);
> sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq);
Missing:
fdc_name = object_get_typename(OBJECT(fdc_dev));
drive_suffix = !strcmp(fdc_name, "SUNW,fdtwo") ? "" : i ? "B" :
"A";
warn_report("warning: property %s.drive%s is deprecated",
fdc_name, drive_suffix);
error_printf("Use -device floppy,unit=%d,drive=... instead.\n", i);
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 8:15 [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
@ 2021-01-29 9:17 ` Markus Armbruster
2021-01-29 11:54 ` Markus Armbruster
2021-01-29 12:01 ` Peter Maydell
3 siblings, 0 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-01-29 9:17 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, mst, mark.cave-ayland, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz,
pbonzini
Forgot to mention:
Based-on: <20210125162402.1807394-1-armbru@redhat.com>
[PATCH 0/3] Drop deprecated floppy config & bogus -drive if=T
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 1/1] hw: Replace anti-social QOM type names
2021-01-29 9:06 ` Paolo Bonzini
@ 2021-01-29 9:18 ` Markus Armbruster
0 siblings, 0 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-01-29 9:18 UTC (permalink / raw)
To: Paolo Bonzini
Cc: peter.maydell, mst, mark.cave-ayland, qemu-devel,
frederic.konrad, kraxel, edgar.iglesias, mreitz, qemu-block,
quintela, andrew.smirnov, marcandre.lureau, atar4qemu, ehabkost,
alistair, dgilbert, chouteau, qemu-arm, peter.chubb, jsnow,
kwolf, berrange, jcd
Paolo Bonzini <pbonzini@redhat.com> writes:
> On 29/01/21 09:15, Markus Armbruster wrote:
>> diff --git a/hw/block/fdc.c b/hw/block/fdc.c
>> index 7fc547c62d..0dd158bf73 100644
>> --- a/hw/block/fdc.c
>> +++ b/hw/block/fdc.c
>> @@ -2547,7 +2547,7 @@ void sun4m_fdctrl_init(qemu_irq irq, hwaddr io_base,
>> DeviceState *dev;
>> FDCtrlSysBus *sys;
>> - dev = qdev_new("SUNW,fdtwo");
>> + dev = qdev_new("SUNW-fdtwo");
>> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
>> sys = SYSBUS_FDC(dev);
>> sysbus_connect_irq(SYS_BUS_DEVICE(sys), 0, irq);
>
>
> Missing:
>
> fdc_name = object_get_typename(OBJECT(fdc_dev));
> drive_suffix = !strcmp(fdc_name, "SUNW,fdtwo") ? "" : i ? "B"
> : "A";
> warn_report("warning: property %s.drive%s is deprecated",
> fdc_name, drive_suffix);
> error_printf("Use -device floppy,unit=%d,drive=... instead.\n", i);
You're right. I based on my "[PATCH 0/3] Drop deprecated floppy config
& bogus -drive if=T", where this is gone, then forgot to mention it in
my cover letter. Apologies!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 8:15 [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
2021-01-29 9:17 ` [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
@ 2021-01-29 11:54 ` Markus Armbruster
2021-01-29 12:01 ` Peter Maydell
3 siblings, 0 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-01-29 11:54 UTC (permalink / raw)
To: qemu-devel
Cc: peter.maydell, mst, mark.cave-ayland, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz,
pbonzini
Markus Armbruster <armbru@redhat.com> writes:
> QAPI has naming rules. docs/devel/qapi-code-gen.txt:
>
> === Naming rules and reserved names ===
>
> All names must begin with a letter, and contain only ASCII letters,
> digits, hyphen, and underscore. There are two exceptions: enum values
> may start with a digit, and names that are downstream extensions (see
> section Downstream extensions) start with underscore.
>
> [More on reserved names, upper vs. lower case, '-' vs. '_'...]
>
> The generator enforces the rules.
>
> Naming rules help in at least three ways:
>
> 1. They help with keeping names in interfaces consistent and
> predictable.
>
> 2. They make avoiding collisions with the users' names in the
> generator simpler.
>
> 3. They enable quote-less, evolvable syntax.
>
> For instance, keyval_parse() syntax consists of names, values, and
> special characters ',', '=', '.'
>
> Since names cannot contain special characters, there is no need for
> quoting[*]. Simple.
>
> Values are unrestricted, but only ',' is special there. We quote
> it by doubling.
>
> Together, we get exactly the same quoting as in QemuOpts. This is
> a feature.
>
> If we ever decice to extend key syntax, we have plenty of special
> characters to choose from. This is also a feature.
>
> Both features rely on naming rules.
>
> QOM has no naming rules whatsoever. Actual names aren't nearly as bad
> as they could be. Still, there are plenty of "funny" names. This
> will become a problem when we
>
> * Switch from QemuOpts to keyval_parse()
>
> QOM type names must not contain special characters, unless we
> introduce more quoting. Which we shouldn't, because the value of
> special characters in names is negligible compared to the hassle of
> having to quote them.
>
> * QAPIfy (the compile-time static parts of) QOM
>
> QOM type names become QAPI enum values. They must conform to QAPI
> naming rules.
>
> Adopting QAPI naming rules for QOM type names takes care of both.
>
> Let's review the existing offenders.
>
> 1. We have a few type names containing ',', and one containing ' '.
> The former require QemuOpts / keyval quoting (double the comma),
> the latter requires shell quoting. There is no excuse for making
> our users remember and do such crap. PATCH 1 eliminates it.
>
> 2. We have some 550 type names containing '.'. QAPI's naming rules
> could be relaxed to accept '.', but keyval_parse()'s can't.
Thinko: keyval_parse() copes. QOM type names occur as *value*, not as
key.
One more thing on QAPI naming rules. QAPI names get mapped to (parts
of) C identifiers. These mappings are not injective. The basic mapping
is simple: replace characters other than letters and digits by '_'.
This means names distinct QAPI names can clash in C. Fairly harmless
when the only "other" characters are '-' and '_'. The more "others" we
permit, the more likely confusing clashes become. Not a show stopper,
"merely" an issue of ergonomics.
> Aside: I wish keyval_parse() would use '/' instead of '.', but it's
> designed to be compatible to the block layer's existing use of
> dotted keys (shoehorned into QemuOpts).
>
> 3. We have six type names containing '+'. Four of them also contain
> '.'. Naming rules could be relaxed to accept '+'. I'm not sure
> it's worthwhile.
>
> 4. We have 19 names starting with a digit. Three of them also contain
> '.'. Leading digit is okay as QAPI enum, not okay as
> keyval_parse() key fragment. We can either rename these types, or
> make keyval_parse() a bit less strict.
>
> Of the type names containing '.' or '+'[**], 293 are CPUs, 107 are
> machines, and 150 are something else. 48 of them can be plugged with
> -device, all s390x or spapr CPUs.
>
> Can we get rid of '.'?
>
> I figure we could keep old names as deprecated aliases if we care.
> Perhaps just the ones that can be plugged with -device.
>
>
> [*] Paolo's "[PATCH 04/25] keyval: accept escaped commas in implied
> option" provides for comma-quoting. I'm ignoring it here for brevity.
> I assure you it doesn't weaken my argument.
>
> [**] They are:
> 603e_v1.1-powerpc-cpu
[...]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 8:15 [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
` (2 preceding siblings ...)
2021-01-29 11:54 ` Markus Armbruster
@ 2021-01-29 12:01 ` Peter Maydell
2021-01-29 12:17 ` Daniel P. Berrangé
3 siblings, 1 reply; 13+ messages in thread
From: Peter Maydell @ 2021-01-29 12:01 UTC (permalink / raw)
To: Markus Armbruster
Cc: Michael S. Tsirkin, Mark Cave-Ayland, QEMU Developers,
KONRAD Frederic, Gerd Hoffmann, Edgar E. Iglesias,
Jean-Christophe DUBOIS, Qemu-block, Juan Quintela,
Andrey Smirnov, Marc-André Lureau, Artyom Tarasenko,
Eduardo Habkost, Alistair Francis, Dr. David Alan Gilbert,
Fabien Chouteau, qemu-arm, Peter Chubb, John Snow, Kevin Wolf,
Daniel P. Berrange, Max Reitz, Paolo Bonzini
On Fri, 29 Jan 2021 at 08:15, Markus Armbruster <armbru@redhat.com> wrote:
> 2. We have some 550 type names containing '.'. QAPI's naming rules
> could be relaxed to accept '.', but keyval_parse()'s can't.
>
> Aside: I wish keyval_parse() would use '/' instead of '.', but it's
> designed to be compatible to the block layer's existing use of
> dotted keys (shoehorned into QemuOpts).
> Of the type names containing '.' or '+'[**], 293 are CPUs, 107 are
> machines, and 150 are something else. 48 of them can be plugged with
> -device, all s390x or spapr CPUs.
>
> Can we get rid of '.'?
On this one, my vote would be "no". "Versioned machine names
include the QEMU version number" is pretty well entrenched,
and requiring users to remember that when they want version 4.2
they need to remember some other way of writing it than "4.2"
seems rather unfriendly. And 550 uses of '.' is a lot.
thanks
-- PMM
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 12:01 ` Peter Maydell
@ 2021-01-29 12:17 ` Daniel P. Berrangé
2021-01-29 13:25 ` Paolo Bonzini
0 siblings, 1 reply; 13+ messages in thread
From: Daniel P. Berrangé @ 2021-01-29 12:17 UTC (permalink / raw)
To: Peter Maydell
Cc: Michael S. Tsirkin, Mark Cave-Ayland, QEMU Developers,
KONRAD Frederic, Gerd Hoffmann, Edgar E. Iglesias, Max Reitz,
Qemu-block, Juan Quintela, Andrey Smirnov, Markus Armbruster,
Marc-André Lureau, Artyom Tarasenko, Eduardo Habkost,
Alistair Francis, Dr. David Alan Gilbert, Fabien Chouteau,
qemu-arm, Peter Chubb, John Snow, Kevin Wolf,
Jean-Christophe DUBOIS, Paolo Bonzini
On Fri, Jan 29, 2021 at 12:01:53PM +0000, Peter Maydell wrote:
> On Fri, 29 Jan 2021 at 08:15, Markus Armbruster <armbru@redhat.com> wrote:
> > 2. We have some 550 type names containing '.'. QAPI's naming rules
> > could be relaxed to accept '.', but keyval_parse()'s can't.
> >
> > Aside: I wish keyval_parse() would use '/' instead of '.', but it's
> > designed to be compatible to the block layer's existing use of
> > dotted keys (shoehorned into QemuOpts).
>
> > Of the type names containing '.' or '+'[**], 293 are CPUs, 107 are
> > machines, and 150 are something else. 48 of them can be plugged with
> > -device, all s390x or spapr CPUs.
> >
> > Can we get rid of '.'?
>
> On this one, my vote would be "no". "Versioned machine names
> include the QEMU version number" is pretty well entrenched,
> and requiring users to remember that when they want version 4.2
> they need to remember some other way of writing it than "4.2"
> seems rather unfriendly. And 550 uses of '.' is a lot.
We can't make keyval_parse() accept "/" instead of ".", but can
we make it accept "/" in addition to ".", and then encourage "/" ?
People simply wouldnt be able to use "." as keyval separator if
they're using typenames containing "." (or would have to escape
the typename.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 12:17 ` Daniel P. Berrangé
@ 2021-01-29 13:25 ` Paolo Bonzini
2021-02-01 21:31 ` Eduardo Habkost
0 siblings, 1 reply; 13+ messages in thread
From: Paolo Bonzini @ 2021-01-29 13:25 UTC (permalink / raw)
To: Daniel P. Berrangé, Peter Maydell
Cc: Michael S. Tsirkin, Mark Cave-Ayland, QEMU Developers,
KONRAD Frederic, Gerd Hoffmann, Edgar E. Iglesias, Max Reitz,
Qemu-block, Juan Quintela, Andrey Smirnov, Markus Armbruster,
Marc-André Lureau, Artyom Tarasenko, Eduardo Habkost,
Alistair Francis, Dr. David Alan Gilbert, Fabien Chouteau,
qemu-arm, Peter Chubb, John Snow, Kevin Wolf,
Jean-Christophe DUBOIS
On 29/01/21 13:17, Daniel P. Berrangé wrote:
>> On this one, my vote would be "no". "Versioned machine names
>> include the QEMU version number" is pretty well entrenched,
>> and requiring users to remember that when they want version 4.2
>> they need to remember some other way of writing it than "4.2"
>> seems rather unfriendly. And 550 uses of '.' is a lot.
> We can't make keyval_parse() accept "/" instead of ".", but can
> we make it accept "/" in addition to ".", and then encourage "/" ?
>
> People simply wouldnt be able to use "." as keyval separator if
> they're using typenames containing "." (or would have to escape
> the typename.
'.' is much more common than '/', and is shared by about all programming
languages that have JSON-ish data structures natively. So using '/'
seems decidedly worse to me.
Paolo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 1/1] hw: Replace anti-social QOM type names
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
2021-01-29 9:06 ` Paolo Bonzini
@ 2021-02-01 20:45 ` Mark Cave-Ayland
2021-02-02 9:21 ` Markus Armbruster
1 sibling, 1 reply; 13+ messages in thread
From: Mark Cave-Ayland @ 2021-02-01 20:45 UTC (permalink / raw)
To: Markus Armbruster, qemu-devel
Cc: peter.maydell, mst, frederic.konrad, kraxel, edgar.iglesias,
mreitz, qemu-block, quintela, andrew.smirnov, marcandre.lureau,
atar4qemu, ehabkost, alistair, dgilbert, chouteau, qemu-arm,
peter.chubb, jsnow, kwolf, berrange, jcd, pbonzini
On 29/01/2021 08:15, Markus Armbruster wrote:
> Several QOM type names contain ',':
>
> ARM,bitband-memory
> etraxfs,pic
> etraxfs,serial
> etraxfs,timer
> fsl,imx25
> fsl,imx31
> fsl,imx6
> fsl,imx6ul
> fsl,imx7
> grlib,ahbpnp
> grlib,apbpnp
> grlib,apbuart
> grlib,gptimer
> grlib,irqmp
> qemu,register
> SUNW,bpp
> SUNW,CS4231
> SUNW,DBRI
> SUNW,DBRI.prom
> SUNW,fdtwo
> SUNW,sx
> SUNW,tcx
My personal preference for the SUNW prefix would be to either drop it completely or
change it to "sun-" instead. The reason being that the "SUNW," prefix is the standard
way to reference Sun devices/packages, and looking at the replacements which still
have a SUNW prefix in captials makes me thing the hyphen is either a typo or my
fingers go on autopilot and type a comma anyway...
ATB,
Mark.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-01-29 13:25 ` Paolo Bonzini
@ 2021-02-01 21:31 ` Eduardo Habkost
2021-02-02 9:28 ` Markus Armbruster
0 siblings, 1 reply; 13+ messages in thread
From: Eduardo Habkost @ 2021-02-01 21:31 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Peter Maydell, Michael S. Tsirkin, Mark Cave-Ayland,
QEMU Developers, KONRAD Frederic, Gerd Hoffmann,
Edgar E. Iglesias, Max Reitz, Qemu-block, Juan Quintela,
Andrey Smirnov, Markus Armbruster, Marc-André Lureau,
Artyom Tarasenko, Alistair Francis, Dr. David Alan Gilbert,
Fabien Chouteau, qemu-arm, Peter Chubb, John Snow, Kevin Wolf,
Daniel P. Berrangé,
Jean-Christophe DUBOIS
On Fri, Jan 29, 2021 at 02:25:56PM +0100, Paolo Bonzini wrote:
> On 29/01/21 13:17, Daniel P. Berrangé wrote:
> > > On this one, my vote would be "no". "Versioned machine names
> > > include the QEMU version number" is pretty well entrenched,
> > > and requiring users to remember that when they want version 4.2
> > > they need to remember some other way of writing it than "4.2"
> > > seems rather unfriendly. And 550 uses of '.' is a lot.
> > We can't make keyval_parse() accept "/" instead of ".", but can
> > we make it accept "/" in addition to ".", and then encourage "/" ?
> >
> > People simply wouldnt be able to use "." as keyval separator if
> > they're using typenames containing "." (or would have to escape
> > the typename.
>
> '.' is much more common than '/', and is shared by about all programming
> languages that have JSON-ish data structures natively. So using '/' seems
> decidedly worse to me.
Worse than what, exactly?
Accepting "/" when "." is ambiguous seems decidedly better than
the following alternatives:
- renaming machine types to names like "q35-5-0"; or
- having to escape "." in the command line.
--
Eduardo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 1/1] hw: Replace anti-social QOM type names
2021-02-01 20:45 ` Mark Cave-Ayland
@ 2021-02-02 9:21 ` Markus Armbruster
0 siblings, 0 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-02-02 9:21 UTC (permalink / raw)
To: Mark Cave-Ayland
Cc: peter.maydell, mst, qemu-devel, frederic.konrad, kraxel,
edgar.iglesias, jcd, qemu-block, quintela, andrew.smirnov,
marcandre.lureau, atar4qemu, ehabkost, alistair, dgilbert,
chouteau, qemu-arm, peter.chubb, jsnow, kwolf, berrange, mreitz,
pbonzini
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> writes:
> On 29/01/2021 08:15, Markus Armbruster wrote:
>
>> Several QOM type names contain ',':
>> ARM,bitband-memory
>> etraxfs,pic
>> etraxfs,serial
>> etraxfs,timer
>> fsl,imx25
>> fsl,imx31
>> fsl,imx6
>> fsl,imx6ul
>> fsl,imx7
>> grlib,ahbpnp
>> grlib,apbpnp
>> grlib,apbuart
>> grlib,gptimer
>> grlib,irqmp
>> qemu,register
>> SUNW,bpp
>> SUNW,CS4231
>> SUNW,DBRI
>> SUNW,DBRI.prom
>> SUNW,fdtwo
>> SUNW,sx
>> SUNW,tcx
>
> My personal preference for the SUNW prefix would be to either drop it
> completely or change it to "sun-" instead. The reason being that the
> "SUNW," prefix is the standard way to reference Sun devices/packages,
> and looking at the replacements which still have a SUNW prefix in
> captials makes me thing the hyphen is either a typo or my fingers go
> on autopilot and type a comma anyway...
Works form me.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH RFC 0/1] QOM type names and QAPI
2021-02-01 21:31 ` Eduardo Habkost
@ 2021-02-02 9:28 ` Markus Armbruster
0 siblings, 0 replies; 13+ messages in thread
From: Markus Armbruster @ 2021-02-02 9:28 UTC (permalink / raw)
To: Eduardo Habkost
Cc: Peter Maydell, Michael S. Tsirkin, Mark Cave-Ayland,
QEMU Developers, KONRAD Frederic, Gerd Hoffmann,
Edgar E. Iglesias, Jean-Christophe DUBOIS, Qemu-block,
Juan Quintela, Andrey Smirnov, Marc-André Lureau,
Artyom Tarasenko, Alistair Francis, Dr. David Alan Gilbert,
Fabien Chouteau, qemu-arm, Peter Chubb, John Snow, Kevin Wolf,
Daniel P. Berrangé,
Max Reitz, Paolo Bonzini
Eduardo Habkost <ehabkost@redhat.com> writes:
> On Fri, Jan 29, 2021 at 02:25:56PM +0100, Paolo Bonzini wrote:
>> On 29/01/21 13:17, Daniel P. Berrangé wrote:
>> > > On this one, my vote would be "no". "Versioned machine names
>> > > include the QEMU version number" is pretty well entrenched,
>> > > and requiring users to remember that when they want version 4.2
>> > > they need to remember some other way of writing it than "4.2"
>> > > seems rather unfriendly. And 550 uses of '.' is a lot.
>> > We can't make keyval_parse() accept "/" instead of ".", but can
>> > we make it accept "/" in addition to ".", and then encourage "/" ?
>> >
>> > People simply wouldnt be able to use "." as keyval separator if
>> > they're using typenames containing "." (or would have to escape
>> > the typename.
>>
>> '.' is much more common than '/', and is shared by about all programming
>> languages that have JSON-ish data structures natively. So using '/' seems
>> decidedly worse to me.
>
> Worse than what, exactly?
>
> Accepting "/" when "." is ambiguous seems decidedly better than
> the following alternatives:
> - renaming machine types to names like "q35-5-0"; or
> - having to escape "." in the command line.
Yes.
However, the ambiguity arises only when type names occur as key, as I
noted in my followup Message-ID: <875z3g2c1f.fsf@dusky.pond.sub.org>.
I figure we could relax the QAPI enum naming rules to permit '.', with
drawbacks that feel tolerable. One of them: if we ever manage to put
QAPI enums in a key position, we're screwed :)
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-02-02 9:30 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 8:15 [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
2021-01-29 8:15 ` [PATCH RFC 1/1] hw: Replace anti-social QOM type names Markus Armbruster
2021-01-29 9:06 ` Paolo Bonzini
2021-01-29 9:18 ` Markus Armbruster
2021-02-01 20:45 ` Mark Cave-Ayland
2021-02-02 9:21 ` Markus Armbruster
2021-01-29 9:17 ` [PATCH RFC 0/1] QOM type names and QAPI Markus Armbruster
2021-01-29 11:54 ` Markus Armbruster
2021-01-29 12:01 ` Peter Maydell
2021-01-29 12:17 ` Daniel P. Berrangé
2021-01-29 13:25 ` Paolo Bonzini
2021-02-01 21:31 ` Eduardo Habkost
2021-02-02 9:28 ` Markus Armbruster
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).