From: Markus Armbruster <armbru@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Zhao Liu" <zhao1.liu@intel.com>,
"Xiaoyao Li" <xiaoyao.li@intel.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
qemu-devel@nongnu.org,
"Richard Henderson" <richard.henderson@linaro.org>,
kvm@vger.kernel.org, "Gerd Hoffmann" <kraxel@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>,
"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
"Yi Liu" <yi.l.liu@intel.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Daniel Henrique Barboza" <dbarboza@ventanamicro.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
qemu-riscv@nongnu.org, "Weiwei Li" <liwei1518@gmail.com>,
"Amit Shah" <amit@kernel.org>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Helge Deller" <deller@gmx.de>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
"Clément Mathieu--Drif" <clement.mathieu--drif@eviden.com>,
qemu-arm@nongnu.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Huacai Chen" <chenhuacai@kernel.org>,
"Jason Wang" <jasowang@redhat.com>
Subject: Re: How to mark internal properties
Date: Mon, 12 May 2025 12:54:26 +0200 [thread overview]
Message-ID: <87jz6mqeu5.fsf@pond.sub.org> (raw)
In-Reply-To: <aCG6MuDLrQpoTqpg@redhat.com> ("Daniel P. Berrangé"'s message of "Mon, 12 May 2025 10:06:58 +0100")
Daniel P. Berrangé <berrange@redhat.com> writes:
> On Mon, May 12, 2025 at 09:46:30AM +0100, Peter Maydell wrote:
>> On Fri, 9 May 2025 at 11:04, Thomas Huth <thuth@redhat.com> wrote:
>> > Thanks for your clarifications, Zhao! But I think this shows again the
>> > problem that we have hit a couple of times in the past already: Properties
>> > are currently used for both, config knobs for the users and internal
>> > switches for configuration of the machine. We lack a proper way to say "this
>> > property is usable for the user" and "this property is meant for internal
>> > configuration only".
>> >
>> > I wonder whether we could maybe come up with a naming scheme to better
>> > distinguish the two sets, e.g. by using a prefix similar to the "x-" prefix
>> > for experimental properties? We could e.g. say that all properties starting
>> > with a "q-" are meant for QEMU-internal configuration only or something
>> > similar (and maybe even hide those from the default help output when running
>> > "-device xyz,help" ?)? Anybody any opinions or better ideas on this?
>>
>> I think a q-prefix is potentially a bit clunky unless we also have
>> infrastructure to say eg DEFINE_INTERNAL_PROP_BOOL("foo", ...)
>> and have it auto-add the prefix, and to have the C APIs for
>> setting properties search for both "foo" and "q-foo" so you
>> don't have to write qdev_prop_set_bit(dev, "q-foo", ...).
If we make intent explicit with DEFINE_INTERNAL_PROP_FOO(), is repeating
intent in the name useful?
> I think it is also not obvious enough that a 'q-' prefix means private.
Concur.
> Perhaps borrow from the C world and declare that a leading underscore
> indicates a private property. People are more likely to understand and
> remember that, than 'q-'.
This is fine for device properties now. It's not fine for properties of
user-creatable objects, because these are defined in QAPI, and QAPI
prohibits names starting with a single underscore. I append relevant
parts of docs/devel/qapi-code-gen.rst for your convenience.
Why does QAPI prohibit leading underscores? Chiefly because such names
are reserved identifiers in C. Instead of complicating the mapping from
QAPI name to C identifier, we restrict QAPI names and call it a day.
The mapping between device property name and C identifiers is entirely
manual. When a property is backed by a member of the device state
struct, naming the member exactly like the property makes sense. Having
to mentally strip / insert a leading underscore would hardly be
terrible, just a bit of friction. I'd prefer not to.
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.
Names beginning with ``q_`` are reserved for the generator, which uses
them for munging QMP names that resemble C keywords or other
problematic strings. For example, a member named ``default`` in qapi
becomes ``q_default`` in the generated C code.
[...]
Downstream extensions
---------------------
QAPI schema names that are externally visible, say in the Client JSON
Protocol, need to be managed with care. Names starting with a
downstream prefix of the form __RFQDN_ are reserved for the downstream
who controls the valid, reverse fully qualified domain name RFQDN.
RFQDN may only contain ASCII letters, digits, hyphen and period.
Example: Red Hat, Inc. controls redhat.com, and may therefore add a
downstream command ``__com.redhat_drive-mirror``.
next prev parent reply other threads:[~2025-05-12 10:54 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-08 13:35 [PATCH v4 00/27] hw/i386/pc: Remove deprecated 2.6 and 2.7 PC machines Philippe Mathieu-Daudé
2025-05-08 13:35 ` [PATCH v4 01/27] hw/i386/pc: Remove deprecated pc-q35-2.6 and pc-i440fx-2.6 machines Philippe Mathieu-Daudé
2025-05-09 15:23 ` Igor Mammedov
2025-06-02 6:13 ` Thomas Huth
2025-06-02 8:53 ` Philippe Mathieu-Daudé
2025-06-02 10:26 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 02/27] hw/i386/pc: Remove PCMachineClass::legacy_cpu_hotplug field Philippe Mathieu-Daudé
2025-05-09 15:18 ` Igor Mammedov
2025-10-31 14:28 ` [PATCH v5] " Igor Mammedov
2025-10-31 23:27 ` BALATON Zoltan
2025-11-03 9:42 ` Igor Mammedov
2025-11-03 15:10 ` Zhao Liu
2025-11-26 15:37 ` Zhao Liu
2025-12-01 9:23 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 03/27] hw/nvram/fw_cfg: Rename fw_cfg_init_mem() with '_nodma' suffix Philippe Mathieu-Daudé
2025-05-09 2:49 ` Zhao Liu
2025-05-09 15:33 ` Igor Mammedov
2025-05-15 8:04 ` Xiaoyao Li
2025-05-08 13:35 ` [PATCH v4 04/27] hw/mips/loongson3_virt: Prefer using fw_cfg_init_mem_nodma() Philippe Mathieu-Daudé
2025-05-09 2:49 ` Zhao Liu
2025-05-09 15:35 ` Igor Mammedov
2025-05-15 8:05 ` Xiaoyao Li
2025-05-08 13:35 ` [PATCH v4 05/27] hw/nvram/fw_cfg: Factor fw_cfg_init_mem_internal() out Philippe Mathieu-Daudé
2025-05-09 2:50 ` Zhao Liu
2025-05-09 15:38 ` Igor Mammedov
2025-05-15 8:08 ` Xiaoyao Li
2025-12-02 14:37 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 06/27] hw/nvram/fw_cfg: Rename fw_cfg_init_mem_wide() -> fw_cfg_init_mem_dma() Philippe Mathieu-Daudé
2025-05-09 2:52 ` Zhao Liu
2025-05-09 6:51 ` Zhao Liu
2025-05-09 15:39 ` Igor Mammedov
2025-05-15 8:17 ` Xiaoyao Li
2025-05-08 13:35 ` [PATCH v4 07/27] hw/i386/x86: Remove X86MachineClass::fwcfg_dma_enabled field Philippe Mathieu-Daudé
2025-05-09 3:23 ` Zhao Liu
2025-05-09 15:41 ` Igor Mammedov
2025-05-09 15:44 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 08/27] hw/i386/pc: Remove multiboot.bin Philippe Mathieu-Daudé
2025-05-09 6:11 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 09/27] hw/nvram/fw_cfg: Remove fw_cfg_io_properties::dma_enabled Philippe Mathieu-Daudé
2025-05-09 6:37 ` Zhao Liu
2025-05-09 16:00 ` Igor Mammedov
2025-11-27 14:28 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 10/27] hw/i386/pc: Remove linuxboot.bin Philippe Mathieu-Daudé
2025-05-09 6:53 ` Zhao Liu
2025-05-09 16:04 ` Igor Mammedov
2025-11-27 14:34 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 11/27] hw/i386/pc: Remove pc_compat_2_6[] array Philippe Mathieu-Daudé
2025-05-09 6:54 ` Zhao Liu
2025-05-12 8:19 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 12/27] target/i386/cpu: Remove CPUX86State::enable_cpuid_0xb field Philippe Mathieu-Daudé
2025-05-09 6:49 ` Xiaoyao Li
2025-05-09 7:32 ` Zhao Liu
2025-05-09 10:04 ` How to mark internal properties (was: Re: [PATCH v4 12/27] target/i386/cpu: Remove CPUX86State::enable_cpuid_0xb field) Thomas Huth
2025-05-12 2:45 ` Zhao Liu
2025-05-12 6:34 ` How to mark internal properties Markus Armbruster
2025-05-12 8:46 ` How to mark internal properties (was: Re: [PATCH v4 12/27] target/i386/cpu: Remove CPUX86State::enable_cpuid_0xb field) Peter Maydell
2025-05-12 9:06 ` Daniel P. Berrangé
2025-05-12 10:54 ` Markus Armbruster [this message]
2025-05-12 13:33 ` How to mark internal properties Xiaoyao Li
2025-05-12 14:41 ` BALATON Zoltan
2025-05-13 8:16 ` Thomas Huth
2025-05-12 14:48 ` Mark Cave-Ayland
2025-05-13 8:18 ` Markus Armbruster
2025-05-13 9:26 ` BALATON Zoltan
2025-05-13 9:32 ` Daniel P. Berrangé
2025-05-13 10:38 ` Markus Armbruster
2025-05-13 11:01 ` Markus Armbruster
2025-05-26 8:58 ` Markus Armbruster
2025-05-12 15:22 ` Igor Mammedov
2025-05-13 8:08 ` Markus Armbruster
2025-05-12 15:00 ` [PATCH v4 12/27] target/i386/cpu: Remove CPUX86State::enable_cpuid_0xb field Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 13/27] target/i386/cpu: Remove CPUX86State::fill_mtrr_mask field Philippe Mathieu-Daudé
2025-05-09 9:30 ` Zhao Liu
2025-05-12 15:24 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 14/27] hw/intc/apic: Remove APICCommonState::legacy_instance_id field Philippe Mathieu-Daudé
2025-05-09 9:30 ` Zhao Liu
2025-05-13 8:34 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 15/27] hw/core/machine: Remove hw_compat_2_6[] array Philippe Mathieu-Daudé
2025-05-09 9:31 ` Zhao Liu
2025-05-13 8:36 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 16/27] hw/virtio/virtio-mmio: Remove VirtIOMMIOProxy::format_transport_address field Philippe Mathieu-Daudé
2025-05-09 9:33 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 17/27] hw/i386/pc: Remove deprecated pc-q35-2.7 and pc-i440fx-2.7 machines Philippe Mathieu-Daudé
2025-05-09 9:33 ` Zhao Liu
2025-05-13 8:53 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 18/27] hw/i386/pc: Remove pc_compat_2_7[] array Philippe Mathieu-Daudé
2025-05-09 9:35 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 19/27] target/i386/cpu: Remove CPUX86State::full_cpuid_auto_level field Philippe Mathieu-Daudé
2025-05-09 9:37 ` Zhao Liu
2025-05-13 11:02 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 20/27] target/i386/cpu: Remove CPUX86State::enable_l3_cache field Philippe Mathieu-Daudé
2025-05-09 9:11 ` Zhao Liu
2025-05-13 11:14 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 21/27] hw/audio/pcspk: Remove PCSpkState::migrate field Philippe Mathieu-Daudé
2025-05-09 9:38 ` Zhao Liu
2025-05-13 9:02 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 22/27] hw/core/machine: Remove hw_compat_2_7[] array Philippe Mathieu-Daudé
2025-05-09 9:38 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 23/27] hw/i386/intel_iommu: Remove IntelIOMMUState::buggy_eim field Philippe Mathieu-Daudé
2025-05-09 9:41 ` Zhao Liu
2025-05-13 9:16 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 24/27] hw/intc/ioapic: Remove IOAPICCommonState::version field Philippe Mathieu-Daudé
2025-05-09 10:32 ` Zhao Liu
2025-05-13 10:28 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 25/27] hw/virtio/virtio-pci: Remove VirtIOPCIProxy::ignore_backend_features field Philippe Mathieu-Daudé
2025-05-09 9:43 ` Zhao Liu
2025-05-13 10:30 ` Igor Mammedov
2025-05-08 13:35 ` [PATCH v4 26/27] hw/char/virtio-serial: Do not expose the 'emergency-write' property Philippe Mathieu-Daudé
2025-05-09 9:13 ` Mark Cave-Ayland
2025-05-09 9:46 ` Zhao Liu
2025-05-08 13:35 ` [PATCH v4 27/27] hw/virtio/virtio-pci: Remove VIRTIO_PCI_FLAG_PAGE_PER_VQ definition Philippe Mathieu-Daudé
2025-05-09 10:19 ` Zhao Liu
2025-05-13 10:48 ` Igor Mammedov
2025-05-13 11:23 ` [PATCH v4 00/27] hw/i386/pc: Remove deprecated 2.6 and 2.7 PC machines Igor Mammedov
2025-05-30 11:35 ` Michael S. Tsirkin
2025-05-30 12:08 ` Peter Krempa
2025-05-30 12:50 ` Jiri Denemark
2025-06-17 6:54 ` Zhao Liu
2025-10-31 10:33 ` Igor Mammedov
2025-10-31 10:51 ` Philippe Mathieu-Daudé
2025-10-31 14:14 ` Zhao Liu
2025-10-31 14:23 ` Igor Mammedov
2025-11-03 15:05 ` Zhao Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jz6mqeu5.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=alistair.francis@wdc.com \
--cc=amit@kernel.org \
--cc=anisinha@redhat.com \
--cc=berrange@redhat.com \
--cc=chenhuacai@kernel.org \
--cc=clement.mathieu--drif@eviden.com \
--cc=dbarboza@ventanamicro.com \
--cc=deller@gmx.de \
--cc=eduardo@habkost.net \
--cc=farosas@suse.de \
--cc=imammedo@redhat.com \
--cc=jasowang@redhat.com \
--cc=jiaxun.yang@flygoat.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=liwei1518@gmail.com \
--cc=lvivier@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
--cc=wangyanan55@huawei.com \
--cc=xiaoyao.li@intel.com \
--cc=yi.l.liu@intel.com \
--cc=zhao1.liu@intel.com \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.