qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available
@ 2024-12-27 20:24 Philippe Mathieu-Daudé
  2024-12-27 20:24 ` [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3 Philippe Mathieu-Daudé
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-12-27 20:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Phil Dennis-Jordan, Paolo Bonzini, qemu-arm,
	Philippe Mathieu-Daudé

ARM_GICV3 is not restricted to TCG and can be used on HVF.

Philippe Mathieu-Daudé (2):
  hw/intc: Remove TCG dependency on ARM_GICV3
  hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available

 hw/intc/Kconfig     | 6 +++---
 hw/intc/meson.build | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

-- 
2.47.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3
  2024-12-27 20:24 [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
@ 2024-12-27 20:24 ` Philippe Mathieu-Daudé
  2024-12-28 10:45   ` Phil Dennis-Jordan
  2024-12-27 20:24 ` [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
  2025-03-03 15:34 ` [PATCH 0/2] hw/intc: Select generic " Philippe Mathieu-Daudé
  2 siblings, 1 reply; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-12-27 20:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Phil Dennis-Jordan, Paolo Bonzini, qemu-arm,
	Philippe Mathieu-Daudé

The TYPE_ARM_GICV3 model doesn't have any particular
dependency on TCG, remove it. Rename the Kconfig selector
ARM_GICV3_TCG -> ARM_GICV3.

Fixes: a8a5546798c ("hw/intc/arm_gicv3: Introduce CONFIG_ARM_GIC_TCG Kconfig selector")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/intc/Kconfig     | 6 +++---
 hw/intc/meson.build | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
index dd405bdb5d2..7547528f2c2 100644
--- a/hw/intc/Kconfig
+++ b/hw/intc/Kconfig
@@ -23,13 +23,13 @@ config APIC
 
 config ARM_GIC
     bool
-    select ARM_GICV3_TCG if TCG
+    select ARM_GICV3 if TCG
     select ARM_GIC_KVM if KVM
     select MSI_NONBROKEN
 
-config ARM_GICV3_TCG
+config ARM_GICV3
     bool
-    depends on ARM_GIC && TCG
+    depends on ARM_GIC
 
 config ARM_GIC_KVM
     bool
diff --git a/hw/intc/meson.build b/hw/intc/meson.build
index 510fdfb6886..602da304b02 100644
--- a/hw/intc/meson.build
+++ b/hw/intc/meson.build
@@ -6,7 +6,7 @@ system_ss.add(when: 'CONFIG_ARM_GIC', if_true: files(
   'arm_gicv3_common.c',
   'arm_gicv3_its_common.c',
 ))
-system_ss.add(when: 'CONFIG_ARM_GICV3_TCG', if_true: files(
+system_ss.add(when: 'CONFIG_ARM_GICV3', if_true: files(
   'arm_gicv3.c',
   'arm_gicv3_dist.c',
   'arm_gicv3_its.c',
@@ -39,7 +39,7 @@ endif
 
 specific_ss.add(when: 'CONFIG_APIC', if_true: files('apic.c', 'apic_common.c'))
 specific_ss.add(when: 'CONFIG_ARM_GIC', if_true: files('arm_gicv3_cpuif_common.c'))
-specific_ss.add(when: 'CONFIG_ARM_GICV3_TCG', if_true: files('arm_gicv3_cpuif.c'))
+specific_ss.add(when: 'CONFIG_ARM_GICV3', if_true: files('arm_gicv3_cpuif.c'))
 specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true: files('arm_gic_kvm.c'))
 specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true: files('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c'))
 specific_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c'))
-- 
2.47.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available
  2024-12-27 20:24 [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
  2024-12-27 20:24 ` [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3 Philippe Mathieu-Daudé
@ 2024-12-27 20:24 ` Philippe Mathieu-Daudé
  2024-12-28 10:48   ` Phil Dennis-Jordan
  2025-03-03 15:34 ` [PATCH 0/2] hw/intc: Select generic " Philippe Mathieu-Daudé
  2 siblings, 1 reply; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-12-27 20:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Phil Dennis-Jordan, Paolo Bonzini, qemu-arm,
	Philippe Mathieu-Daudé

When the KVM accelerator is selected, the Kconfig ARM_GIC key
selects the KVM GIC implementation (ARM_GIC_KVM).
For other accelerators (TCG, HVF, ...), select the generic
implementation.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/intc/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
index 7547528f2c2..762139d8df3 100644
--- a/hw/intc/Kconfig
+++ b/hw/intc/Kconfig
@@ -23,7 +23,7 @@ config APIC
 
 config ARM_GIC
     bool
-    select ARM_GICV3 if TCG
+    select ARM_GICV3 if !KVM
     select ARM_GIC_KVM if KVM
     select MSI_NONBROKEN
 
-- 
2.47.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3
  2024-12-27 20:24 ` [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3 Philippe Mathieu-Daudé
@ 2024-12-28 10:45   ` Phil Dennis-Jordan
  0 siblings, 0 replies; 8+ messages in thread
From: Phil Dennis-Jordan @ 2024-12-28 10:45 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Peter Maydell, Paolo Bonzini, qemu-arm

[-- Attachment #1: Type: text/plain, Size: 2331 bytes --]

On Fri, 27 Dec 2024 at 21:24, Philippe Mathieu-Daudé <philmd@linaro.org>
wrote:

> The TYPE_ARM_GICV3 model doesn't have any particular
> dependency on TCG, remove it. Rename the Kconfig selector
> ARM_GICV3_TCG -> ARM_GICV3.
>
> Fixes: a8a5546798c ("hw/intc/arm_gicv3: Introduce CONFIG_ARM_GIC_TCG
> Kconfig selector")
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>

Reviewed-by: Phil Dennis-Jordan <phil@philjordan.eu>
Tested-by: Phil Dennis-Jordan <phil@philjordan.eu>


> ---
>  hw/intc/Kconfig     | 6 +++---
>  hw/intc/meson.build | 4 ++--
>  2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
> index dd405bdb5d2..7547528f2c2 100644
> --- a/hw/intc/Kconfig
> +++ b/hw/intc/Kconfig
> @@ -23,13 +23,13 @@ config APIC
>
>  config ARM_GIC
>      bool
> -    select ARM_GICV3_TCG if TCG
> +    select ARM_GICV3 if TCG
>      select ARM_GIC_KVM if KVM
>      select MSI_NONBROKEN
>
> -config ARM_GICV3_TCG
> +config ARM_GICV3
>      bool
> -    depends on ARM_GIC && TCG
> +    depends on ARM_GIC
>
>  config ARM_GIC_KVM
>      bool
> diff --git a/hw/intc/meson.build b/hw/intc/meson.build
> index 510fdfb6886..602da304b02 100644
> --- a/hw/intc/meson.build
> +++ b/hw/intc/meson.build
> @@ -6,7 +6,7 @@ system_ss.add(when: 'CONFIG_ARM_GIC', if_true: files(
>    'arm_gicv3_common.c',
>    'arm_gicv3_its_common.c',
>  ))
> -system_ss.add(when: 'CONFIG_ARM_GICV3_TCG', if_true: files(
> +system_ss.add(when: 'CONFIG_ARM_GICV3', if_true: files(
>    'arm_gicv3.c',
>    'arm_gicv3_dist.c',
>    'arm_gicv3_its.c',
> @@ -39,7 +39,7 @@ endif
>
>  specific_ss.add(when: 'CONFIG_APIC', if_true: files('apic.c',
> 'apic_common.c'))
>  specific_ss.add(when: 'CONFIG_ARM_GIC', if_true:
> files('arm_gicv3_cpuif_common.c'))
> -specific_ss.add(when: 'CONFIG_ARM_GICV3_TCG', if_true:
> files('arm_gicv3_cpuif.c'))
> +specific_ss.add(when: 'CONFIG_ARM_GICV3', if_true:
> files('arm_gicv3_cpuif.c'))
>  specific_ss.add(when: 'CONFIG_ARM_GIC_KVM', if_true:
> files('arm_gic_kvm.c'))
>  specific_ss.add(when: ['CONFIG_ARM_GIC_KVM', 'TARGET_AARCH64'], if_true:
> files('arm_gicv3_kvm.c', 'arm_gicv3_its_kvm.c'))
>  specific_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('armv7m_nvic.c'))
> --
> 2.47.1
>
>

[-- Attachment #2: Type: text/html, Size: 3337 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available
  2024-12-27 20:24 ` [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
@ 2024-12-28 10:48   ` Phil Dennis-Jordan
  2025-01-07 16:05     ` Phil Dennis-Jordan
  0 siblings, 1 reply; 8+ messages in thread
From: Phil Dennis-Jordan @ 2024-12-28 10:48 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Peter Maydell, Paolo Bonzini, qemu-arm

[-- Attachment #1: Type: text/plain, Size: 1031 bytes --]

On Fri, 27 Dec 2024 at 21:24, Philippe Mathieu-Daudé <philmd@linaro.org>
wrote:

> When the KVM accelerator is selected, the Kconfig ARM_GIC key
> selects the KVM GIC implementation (ARM_GIC_KVM).
> For other accelerators (TCG, HVF, ...), select the generic
> implementation.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  hw/intc/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
> index 7547528f2c2..762139d8df3 100644
> --- a/hw/intc/Kconfig
> +++ b/hw/intc/Kconfig
> @@ -23,7 +23,7 @@ config APIC
>
>  config ARM_GIC
>      bool
> -    select ARM_GICV3 if TCG
> +    select ARM_GICV3 if !KVM
>

Wouldn't this disable the ARM_GICV3 by default when building with
--enable-tcg --enable-kvm? And then there would be no GIC available when
running the built QEMU in TCG mode. (Bear with me, I'm a relative Meson
newbie.)


>      select ARM_GIC_KVM if KVM
>      select MSI_NONBROKEN
>
> --
> 2.47.1
>
>

[-- Attachment #2: Type: text/html, Size: 1659 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available
  2024-12-28 10:48   ` Phil Dennis-Jordan
@ 2025-01-07 16:05     ` Phil Dennis-Jordan
  2025-02-19 13:42       ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 8+ messages in thread
From: Phil Dennis-Jordan @ 2025-01-07 16:05 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Peter Maydell, Paolo Bonzini, qemu-arm

[-- Attachment #1: Type: text/plain, Size: 2176 bytes --]

On Sat, 28 Dec 2024 at 11:48, Phil Dennis-Jordan <phil@philjordan.eu> wrote:

>
>
> On Fri, 27 Dec 2024 at 21:24, Philippe Mathieu-Daudé <philmd@linaro.org>
> wrote:
>
>> When the KVM accelerator is selected, the Kconfig ARM_GIC key
>> selects the KVM GIC implementation (ARM_GIC_KVM).
>> For other accelerators (TCG, HVF, ...), select the generic
>> implementation.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>  hw/intc/Kconfig | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
>> index 7547528f2c2..762139d8df3 100644
>> --- a/hw/intc/Kconfig
>> +++ b/hw/intc/Kconfig
>> @@ -23,7 +23,7 @@ config APIC
>>
>>  config ARM_GIC
>>      bool
>> -    select ARM_GICV3 if TCG
>> +    select ARM_GICV3 if !KVM
>>
>
> Wouldn't this disable the ARM_GICV3 by default when building with
> --enable-tcg --enable-kvm? And then there would be no GIC available when
> running the built QEMU in TCG mode. (Bear with me, I'm a relative Meson
> newbie.)
>
>


OK, I've managed to answer my own question now by setting up a RPi5 with
aarch64 RPOS and building QEMU on that with --enable-kvm --enable-tcg. With
patch 1/2 applied on current upstream master, I get:

$ build/qemu-system-aarch64 -accel tcg -M virt,gic-version=3 -smp 4 -m 4G
*[runs successfully]*

with 2/2 applied as well:

$ build/qemu-system-aarch64 -accel tcg -M virt,gic-version=3 -smp 4 -m 4G
qemu-system-aarch64: tcg does not support GICv3 emulation
$

In other words, with the proposed change, ARM_GICV3 is indeed deselected if
KVM is selected even if TCG is also selected.


Possibly very basic question: is there any support for kernel-irqchip=off
on aarch64/KVM?
If yes, don't we need ARM_GICV3 in that case anyway, so we should drop any
accel dependency on it in the first place?


If we definitely don't need the software GIC in KVM-only builds, I guess
we're down to listing each accel that needs it individually. Is that:

select ARM_GICV3 if TCG || HVF || NVMM || WHPX || XEN_EMU || XEN

or can we drop any of those? Have I missed anything? What about QTest?

[-- Attachment #2: Type: text/html, Size: 3474 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available
  2025-01-07 16:05     ` Phil Dennis-Jordan
@ 2025-02-19 13:42       ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-02-19 13:42 UTC (permalink / raw)
  To: Phil Dennis-Jordan, Alex Bennée, Gustavo Romero
  Cc: qemu-devel, Peter Maydell, Paolo Bonzini, qemu-arm

On 7/1/25 17:05, Phil Dennis-Jordan wrote:
> 
> 
> On Sat, 28 Dec 2024 at 11:48, Phil Dennis-Jordan <phil@philjordan.eu 
> <mailto:phil@philjordan.eu>> wrote:
> 
> 
> 
>     On Fri, 27 Dec 2024 at 21:24, Philippe Mathieu-Daudé
>     <philmd@linaro.org <mailto:philmd@linaro.org>> wrote:
> 
>         When the KVM accelerator is selected, the Kconfig ARM_GIC key
>         selects the KVM GIC implementation (ARM_GIC_KVM).
>         For other accelerators (TCG, HVF, ...), select the generic
>         implementation.
> 
>         Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org
>         <mailto:philmd@linaro.org>>
>         ---
>           hw/intc/Kconfig | 2 +-
>           1 file changed, 1 insertion(+), 1 deletion(-)
> 
>         diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
>         index 7547528f2c2..762139d8df3 100644
>         --- a/hw/intc/Kconfig
>         +++ b/hw/intc/Kconfig
>         @@ -23,7 +23,7 @@ config APIC
> 
>           config ARM_GIC
>               bool
>         -    select ARM_GICV3 if TCG
>         +    select ARM_GICV3 if !KVM
> 
> 
>     Wouldn't this disable the ARM_GICV3 by default when building with --
>     enable-tcg --enable-kvm? And then there would be no GIC available
>     when running the built QEMU in TCG mode. (Bear with me, I'm a
>     relative Meson newbie.)
> 
> 
> 
> OK, I've managed to answer my own question now by setting up a RPi5 with 
> aarch64 RPOS and building QEMU on that with --enable-kvm --enable-tcg. 
> With patch 1/2 applied on current upstream master, I get:
> 
> $ build/qemu-system-aarch64 -accel tcg -M virt,gic-version=3 -smp 4 -m 4G
> /[runs successfully]/
> 
> with 2/2 applied as well:
> 
> $ build/qemu-system-aarch64 -accel tcg -M virt,gic-version=3 -smp 4 -m 4G
> qemu-system-aarch64: tcg does not support GICv3 emulation
> $
> 
> In other words, with the proposed change, ARM_GICV3 is indeed deselected 
> if KVM is selected even if TCG is also selected.
> 
> 
> Possibly very basic question: is there any support for kernel- 
> irqchip=off on aarch64/KVM?
> If yes, don't we need ARM_GICV3 in that case anyway, so we should drop 
> any accel dependency on it in the first place?

Cc'ing Alex & Gustavo who are more familiar with GIC devices.

> If we definitely don't need the software GIC in KVM-only builds, I guess 
> we're down to listing each accel that needs it individually. Is that:
> 
> select ARM_GICV3 if TCG || HVF || NVMM || WHPX || XEN_EMU || XEN
> 
> or can we drop any of those? Have I missed anything? What about QTest?
> 



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available
  2024-12-27 20:24 [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
  2024-12-27 20:24 ` [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3 Philippe Mathieu-Daudé
  2024-12-27 20:24 ` [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
@ 2025-03-03 15:34 ` Philippe Mathieu-Daudé
  2 siblings, 0 replies; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-03 15:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Phil Dennis-Jordan, Paolo Bonzini, qemu-arm

Hi,

On 27/12/24 21:24, Philippe Mathieu-Daudé wrote:
> ARM_GICV3 is not restricted to TCG and can be used on HVF.
> 
> Philippe Mathieu-Daudé (2):
>    hw/intc: Remove TCG dependency on ARM_GICV3

First reviewed/tested patch queued via hw-misc tree.

Thanks,

Phil.


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-03-03 15:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-27 20:24 [PATCH 0/2] hw/intc: Select generic ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
2024-12-27 20:24 ` [PATCH 1/2] hw/intc: Remove TCG dependency on ARM_GICV3 Philippe Mathieu-Daudé
2024-12-28 10:45   ` Phil Dennis-Jordan
2024-12-27 20:24 ` [PATCH 2/2] hw/intc: Have ARM_GIC select ARM_GICV3 when KVM is not available Philippe Mathieu-Daudé
2024-12-28 10:48   ` Phil Dennis-Jordan
2025-01-07 16:05     ` Phil Dennis-Jordan
2025-02-19 13:42       ` Philippe Mathieu-Daudé
2025-03-03 15:34 ` [PATCH 0/2] hw/intc: Select generic " Philippe Mathieu-Daudé

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).