From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [RFC PATCH-for-10.1 27/39] system/hvf: Expose hvf_enabled() to common code
Date: Fri, 4 Apr 2025 18:05:14 -0700 [thread overview]
Message-ID: <e80d0ac6-6be0-4bd5-93b2-c9e7b0b427d3@linaro.org> (raw)
In-Reply-To: <ed3f2bd6-2628-4d58-b426-c41ec587759a@linaro.org>
On 4/4/25 14:56, Philippe Mathieu-Daudé wrote:
> +Paolo
>
> On 4/4/25 20:23, Pierrick Bouvier wrote:
>> On 4/3/25 16:58, Philippe Mathieu-Daudé wrote:
>>> Currently hvf_enabled() is restricted to target-specific code.
>>> By defining CONFIG_HVF_IS_POSSIBLE we allow its use anywhere.
>>>
>>
>> Instead, we can simply make hvf_enabled present for common and target
>> specific code, and link correct implementation, based on what we build.
>>
>> I don't think *_IS_POSSIBLE was a good idea to start with.
>
> IIUC the point of *_IS_POSSIBLE is to elide code, which we
> aren't interested anymore for host-related configs, so we
> can also remove CONFIG_KVM_IS_POSSIBLE and CONFIG_XEN_IS_POSSIBLE.
> Is that correct?
>
Ideally, yes, we should not have any CONFIG_{accel}, of any
CONFIG_{accel}_IS_POSSIBLE in the code.
It should only be used in build system to include selectively
implementations based on host supporting it or not.
It's not needed to clean that right now, but if we can avoid to
reproduce this for HVF, it's better.
>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>> MAINTAINERS | 1 +
>>> include/system/hvf.h | 14 +++++++++-----
>>> accel/stubs/hvf-stub.c | 12 ++++++++++++
>>> accel/stubs/meson.build | 1 +
>>> 4 files changed, 23 insertions(+), 5 deletions(-)
>>> create mode 100644 accel/stubs/hvf-stub.c
>>>
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index c7083ab1d93..00ef33be0e2 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -525,6 +525,7 @@ R: Phil Dennis-Jordan <phil@philjordan.eu>
>>> W: https://wiki.qemu.org/Features/HVF
>>> S: Maintained
>>> F: accel/hvf/
>>> +F: accel/stubs/hvf-stub.c
>>> F: include/system/hvf.h
>>> F: include/system/hvf_int.h
>>> diff --git a/include/system/hvf.h b/include/system/hvf.h
>>> index d50049e1a1a..7b45a2e1988 100644
>>> --- a/include/system/hvf.h
>>> +++ b/include/system/hvf.h
>>> @@ -19,15 +19,19 @@
>>> #include "qom/object.h"
>>> #ifdef COMPILING_PER_TARGET
>>> +# ifdef CONFIG_HVF
>>> +# define CONFIG_HVF_IS_POSSIBLE
>>> +# endif /* !CONFIG_HVF */
>>> +#else
>>> +# define CONFIG_HVF_IS_POSSIBLE
>>> +#endif /* COMPILING_PER_TARGET */
>>> -#ifdef CONFIG_HVF
>>> +#ifdef CONFIG_HVF_IS_POSSIBLE
>>> extern bool hvf_allowed;
>>> #define hvf_enabled() (hvf_allowed)
>>> -#else /* !CONFIG_HVF */
>>> +#else /* !CONFIG_HVF_IS_POSSIBLE */
>>> #define hvf_enabled() 0
>>> -#endif /* !CONFIG_HVF */
>>> -
>>> -#endif /* COMPILING_PER_TARGET */
>>> +#endif /* !CONFIG_HVF_IS_POSSIBLE */
>>> #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf")
>>> diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c
>>> new file mode 100644
>>> index 00000000000..42eadc5ca92
>>> --- /dev/null
>>> +++ b/accel/stubs/hvf-stub.c
>>> @@ -0,0 +1,12 @@
>>> +/*
>>> + * HVF stubs for QEMU
>>> + *
>>> + * Copyright (c) Linaro
>>> + *
>>> + * SPDX-License-Identifier: GPL-2.0-or-later
>>> + */
>>> +
>>> +#include "qemu/osdep.h"
>>> +#include "system/hvf.h"
>>> +
>>> +bool hvf_allowed;
>>> diff --git a/accel/stubs/meson.build b/accel/stubs/meson.build
>>> index 91a2d219258..8ca1a4529e2 100644
>>> --- a/accel/stubs/meson.build
>>> +++ b/accel/stubs/meson.build
>>> @@ -2,5 +2,6 @@ system_stubs_ss = ss.source_set()
>>> system_stubs_ss.add(when: 'CONFIG_XEN', if_false: files('xen-stub.c'))
>>> system_stubs_ss.add(when: 'CONFIG_KVM', if_false: files('kvm-stub.c'))
>>> system_stubs_ss.add(when: 'CONFIG_TCG', if_false: files('tcg-stub.c'))
>>> +system_stubs_ss.add(when: 'CONFIG_HVF', if_false: files('hvf-stub.c'))
>>> specific_ss.add_all(when: ['CONFIG_SYSTEM_ONLY'], if_true:
>>> system_stubs_ss)
>>
>
next prev parent reply other threads:[~2025-04-05 1:05 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 23:57 [RFC PATCH-for-10.1 00/39] single-binary: Make hw/arm/ common Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 01/39] target/arm: Implement per-binary TargetInfo structures Philippe Mathieu-Daudé
2025-04-04 18:16 ` Pierrick Bouvier
2025-04-03 23:57 ` [RFC PATCH-for-10.1 02/39] target/arm: Register TYPE_BINARY_QEMU_SYSTEM_ARM/AARCH64 interfaces Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 03/39] target/arm: Filter CPU types for binary Philippe Mathieu-Daudé
2025-04-04 18:17 ` Pierrick Bouvier
2025-04-03 23:57 ` [RFC PATCH-for-10.1 04/39] hw/arm: Filter machine " Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 05/39] hw/arm/aspeed: " Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 06/39] hw/arm/aspeed: Build objects once Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 07/39] hw/arm/raspi: Filter machine types for binary Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 08/39] hw/arm/raspi: Build objects once Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 09/39] target/arm/cpregs: Include missing 'target/arm/cpu.h' header Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 10/39] hw/arm/boot: Include missing 'system/memory.h' header Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 11/39] hw/arm: Use full "target/arm/cpu.h" path to include target's "cpu.h" Philippe Mathieu-Daudé
2025-04-04 18:20 ` Pierrick Bouvier
2025-04-04 21:53 ` Philippe Mathieu-Daudé
2025-04-05 1:03 ` Pierrick Bouvier
2025-04-05 14:27 ` Philippe Mathieu-Daudé
2025-04-07 17:13 ` Pierrick Bouvier
2025-04-03 23:57 ` [RFC PATCH-for-10.1 12/39] target/arm/cpu-features: Include missing 'cpu.h' header Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 13/39] target/arm/qmp: " Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 14/39] target/arm/kvm: Include missing 'cpu-qom.h' header Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 15/39] target/arm/hvf: " Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 16/39] hw/arm: Remove unnecessary 'cpu.h' header Philippe Mathieu-Daudé
2025-04-03 23:57 ` [RFC PATCH-for-10.1 17/39] target/arm: Restrict inclusion of 'multiprocessing.h' Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 18/39] target/arm: Move some definitions from 'cpu.h' to 'multiprocessing.h' Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 19/39] hw/arm: Include missing 'target/arm/gtimer.h' header Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 20/39] target/arm: Extract PSCI definitions to 'psci.h' Philippe Mathieu-Daudé
2025-04-04 18:21 ` Pierrick Bouvier
2025-04-04 21:54 ` Philippe Mathieu-Daudé
2025-04-05 1:03 ` Pierrick Bouvier
2025-04-05 14:43 ` Philippe Mathieu-Daudé
2025-04-07 17:25 ` Pierrick Bouvier
2025-04-03 23:58 ` [RFC PATCH-for-10.1 21/39] target/arm: Extract feature definitions to 'cpu_has_feature.h' header Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 22/39] target/arm: Add arm_cpu_has_feature() helper Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 23/39] hw/arm/realview: Replace arm_feature() -> arm_cpu_has_feature() Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 24/39] hw/arm/virt-acpi: " Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 25/39] hw/arm: Build virt-acpi-build.c once Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 26/39] system/hvf: Avoid including 'cpu.h' Philippe Mathieu-Daudé
2025-05-06 14:14 ` Philippe Mathieu-Daudé
2025-05-06 15:00 ` Pierrick Bouvier
2025-04-03 23:58 ` [RFC PATCH-for-10.1 27/39] system/hvf: Expose hvf_enabled() to common code Philippe Mathieu-Daudé
2025-04-04 18:23 ` Pierrick Bouvier
2025-04-04 21:56 ` Philippe Mathieu-Daudé
2025-04-05 1:05 ` Pierrick Bouvier [this message]
2025-04-03 23:58 ` [RFC PATCH-for-10.1 28/39] exec: Do not poison hardware accelerators Philippe Mathieu-Daudé
2025-04-04 18:25 ` Pierrick Bouvier
2025-04-04 22:00 ` Philippe Mathieu-Daudé
2025-04-05 1:07 ` Pierrick Bouvier
2025-04-03 23:58 ` [RFC PATCH-for-10.1 29/39] hw/arm: Build sbsa-ref.c once Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 30/39] target/arm: Replace target_ulong -> hwaddr in ARMMMUFaultInfo Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 31/39] target/arm: Replace target_ulong -> uint64_t for HWBreakpoint Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 32/39] target/arm: Replace target_ulong -> vaddr for CPUWatchpoint Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 33/39] hw/core/machine: Allow dynamic registration of valid CPU types Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 34/39] hw/arm/virt: Register valid CPU types dynamically Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 35/39] hw/arm/virt: Replace TARGET_AARCH64 -> target_long_bits() Philippe Mathieu-Daudé
2025-04-04 18:28 ` Pierrick Bouvier
2025-04-04 22:05 ` Philippe Mathieu-Daudé
2025-04-05 1:10 ` Pierrick Bouvier
2025-04-03 23:58 ` [RFC PATCH-for-10.1 36/39] target/arm: Expose Aarch64 helpers indistinctly Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 37/39] hw/arm: Build virt.c once Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 38/39] hw/arm: Move xen files to arm_common_ss[] Philippe Mathieu-Daudé
2025-04-04 14:40 ` Philippe Mathieu-Daudé
2025-04-03 23:58 ` [RFC PATCH-for-10.1 39/39] hw/arm/meson: Remove arm_ss[] source set Philippe Mathieu-Daudé
2025-04-04 17:12 ` [RFC PATCH-for-10.1 00/39] single-binary: Make hw/arm/ common Pierrick Bouvier
2025-04-04 18:04 ` Philippe Mathieu-Daudé
2025-04-04 18:30 ` Pierrick Bouvier
2025-04-04 18:33 ` Pierrick Bouvier
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=e80d0ac6-6be0-4bd5-93b2-c9e7b0b427d3@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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 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).