> On 7. Mar 2026, at 16:48, Philippe Mathieu-Daudé <[email protected]> wrote:
> 
> On 7/3/26 16:31, Mohamed Mediouni wrote:
>> Signed-off-by: Mohamed Mediouni <[email protected]>
>> ---
>>  accel/hvf/hvf-all.c    |  1 +
>>  accel/stubs/hvf-stub.c |  1 +
>>  hw/arm/virt.c          |  5 +++++
>>  include/system/hvf.h   |  5 +++++
>>  target/arm/hvf/hvf.c   | 42 ++++++++++++++++++++++++++++++++++++++++--
>>  5 files changed, 52 insertions(+), 2 deletions(-)
> 
> 
>> diff --git a/include/system/hvf.h b/include/system/hvf.h
>> index dc8da85979..0f0632f7ae 100644
>> --- a/include/system/hvf.h
>> +++ b/include/system/hvf.h
>> @@ -28,9 +28,14 @@ extern bool hvf_allowed;
>>  #define hvf_enabled() (hvf_allowed)
>>  extern bool hvf_kernel_irqchip;
>>  #define hvf_irqchip_in_kernel()  (hvf_kernel_irqchip)
>> +extern bool hvf_nested_virt;
>> +#define hvf_nested_virt_enabled()  (hvf_nested_virt)
>> +#define hvf_nested_virt_enable(enable) hvf_nested_virt = enable
> 
> Unsafe macro. Better expose the method and add a stub.
> 
Does this look saner? If so can send a rev with it…

diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c
index 1c1437b467..66c3b48608 100644
--- a/accel/hvf/hvf-all.c
+++ b/accel/hvf/hvf-all.c
@@ -26,6 +26,10 @@ bool hvf_allowed;
 bool hvf_kernel_irqchip;
 bool hvf_nested_virt;
 
+void hvf_nested_virt_enable(bool nested_virt) {
+    hvf_nested_virt = nested_virt;
+}
+
 const char *hvf_return_string(hv_return_t ret)
 {
     switch (ret) {
diff --git a/accel/stubs/hvf-stub.c b/accel/stubs/hvf-stub.c
index cec1cbb056..dc365c5307 100644
--- a/accel/stubs/hvf-stub.c
+++ b/accel/stubs/hvf-stub.c
@@ -12,3 +12,12 @@
 bool hvf_allowed;
 bool hvf_kernel_irqchip;
 bool hvf_nested_virt;
+
+void hvf_nested_virt_enable(bool nested_virt) {
+    /*
+     * This is called unconditionally from hw/arm/virt.c
+     * because we don't know if HVF is going to be used
+     * as that step of initialisation happens later.
+     * As such, do nothing here instead of marking as unreachable.
+     */
+}
diff --git a/include/system/hvf.h b/include/system/hvf.h
index 0f0632f7ae..a961df8b95 100644
--- a/include/system/hvf.h
+++ b/include/system/hvf.h
@@ -30,14 +30,14 @@ extern bool hvf_kernel_irqchip;
 #define hvf_irqchip_in_kernel()  (hvf_kernel_irqchip)
 extern bool hvf_nested_virt;
 #define hvf_nested_virt_enabled()  (hvf_nested_virt)
-#define hvf_nested_virt_enable(enable) hvf_nested_virt = enable
 #else /* !CONFIG_HVF_IS_POSSIBLE */
 #define hvf_enabled() 0
 #define hvf_irqchip_in_kernel() 0
 #define hvf_nested_virt_enabled() 0
-#define hvf_nested_virt_enable(enable) 0
 #endif /* !CONFIG_HVF_IS_POSSIBLE */
 
+void hvf_nested_virt_enable(bool nested_virt);
+
 #define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf")
 
 typedef struct HVFState HVFState;

>>  #else /* !CONFIG_HVF_IS_POSSIBLE */
>>  #define hvf_enabled() 0
>>  #define hvf_irqchip_in_kernel() 0
>> +#define hvf_nested_virt_enabled() 0
>> +#define hvf_nested_virt_enable(enable) 0
>>  #endif /* !CONFIG_HVF_IS_POSSIBLE */
> 
> 


Reply via email to