Patchwork KVM: Fix compiles when KVM_CAP_IRQ_ROUTING is not defined

login
register
mail settings
Submitter Benjamin Collins
Date June 5, 2012, 6:08 p.m.
Message ID <ADDCD993-5E32-4B8C-AE47-8B9B73914176@ubuntu.com>
Download mbox | patch
Permalink /patch/163124/
State New
Headers show

Comments

Benjamin Collins - June 5, 2012, 6:08 p.m.
Things like kroute and direct_msi were not protected by ifdef's for when
this feature is not enabled. Also, virtio-pci was referencing
kvm_irqchip_release_virq() which was not defined without KVM_CAP_IRQ_ROUTING
but when KVM was enabled.

Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Cc: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
---
 kvm-all.c |    8 ++++++++
 1 file changed, 8 insertions(+)
Jan Kiszka - June 5, 2012, 6:15 p.m.
On 2012-06-05 20:08, Ben Collins wrote:
> Things like kroute and direct_msi were not protected by ifdef's for when
> this feature is not enabled. Also, virtio-pci was referencing
> kvm_irqchip_release_virq() which was not defined without KVM_CAP_IRQ_ROUTING
> but when KVM was enabled.

There is [1] already which I prefer for the first two issues. Would you
like to adjust your patch, or should I adopt the
kvm_irqchip_release_virq fix?

Thanks,
Jan

[1] http://thread.gmane.org/gmane.comp.emulators.qemu/153940

> 
> Signed-off-by: Ben Collins <bcollins@ubuntu.com>
> Cc: Avi Kivity <avi@redhat.com>
> Cc: Marcelo Tosatti <mtosatti@redhat.com>
> ---
>  kvm-all.c |    8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index 489ee53..b0f6e06 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -63,7 +63,9 @@ typedef struct KVMSlot
>  typedef struct kvm_dirty_log KVMDirtyLog;
>  
>  typedef struct KVMMSIRoute {
> +#ifdef KVM_CAP_IRQ_ROUTING
>      struct kvm_irq_routing_entry kroute;
> +#endif
>      QTAILQ_ENTRY(KVMMSIRoute) entry;
>  } KVMMSIRoute;
>  
> @@ -1143,6 +1145,10 @@ static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int virq, bool assign)
>  {
>      abort();
>  }
> +
> +void kvm_irqchip_release_virq(KVMState *s, int virq)
> +{
> +}
>  #endif /* !KVM_CAP_IRQ_ROUTING */
>  
>  int kvm_irqchip_add_irqfd(KVMState *s, int fd, int virq)
> @@ -1286,7 +1292,9 @@ int kvm_init(void)
>      s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
>  #endif
>  
> +#ifdef KVM_CAP_IRQ_ROUTING
>      s->direct_msi = (kvm_check_extension(s, KVM_CAP_SIGNAL_MSI) > 0);
> +#endif
>  
>      ret = kvm_arch_init(s);
>      if (ret < 0) {
Benjamin Collins - June 5, 2012, 7:02 p.m.
Please just adopt the remaining portion. Perhaps just merge it with your patch for one complete fix.

Thanks

On Jun 5, 2012, at 2:15 PM, Jan Kiszka wrote:

> On 2012-06-05 20:08, Ben Collins wrote:
>> Things like kroute and direct_msi were not protected by ifdef's for when
>> this feature is not enabled. Also, virtio-pci was referencing
>> kvm_irqchip_release_virq() which was not defined without KVM_CAP_IRQ_ROUTING
>> but when KVM was enabled.
> 
> There is [1] already which I prefer for the first two issues. Would you
> like to adjust your patch, or should I adopt the
> kvm_irqchip_release_virq fix?
> 
> Thanks,
> Jan
> 
> [1] http://thread.gmane.org/gmane.comp.emulators.qemu/153940
> 
>> 
>> Signed-off-by: Ben Collins <bcollins@ubuntu.com>
>> Cc: Avi Kivity <avi@redhat.com>
>> Cc: Marcelo Tosatti <mtosatti@redhat.com>
>> ---
>> kvm-all.c |    8 ++++++++
>> 1 file changed, 8 insertions(+)
>> 
>> diff --git a/kvm-all.c b/kvm-all.c
>> index 489ee53..b0f6e06 100644
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -63,7 +63,9 @@ typedef struct KVMSlot
>> typedef struct kvm_dirty_log KVMDirtyLog;
>> 
>> typedef struct KVMMSIRoute {
>> +#ifdef KVM_CAP_IRQ_ROUTING
>>     struct kvm_irq_routing_entry kroute;
>> +#endif
>>     QTAILQ_ENTRY(KVMMSIRoute) entry;
>> } KVMMSIRoute;
>> 
>> @@ -1143,6 +1145,10 @@ static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int virq, bool assign)
>> {
>>     abort();
>> }
>> +
>> +void kvm_irqchip_release_virq(KVMState *s, int virq)
>> +{
>> +}
>> #endif /* !KVM_CAP_IRQ_ROUTING */
>> 
>> int kvm_irqchip_add_irqfd(KVMState *s, int fd, int virq)
>> @@ -1286,7 +1292,9 @@ int kvm_init(void)
>>     s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
>> #endif
>> 
>> +#ifdef KVM_CAP_IRQ_ROUTING
>>     s->direct_msi = (kvm_check_extension(s, KVM_CAP_SIGNAL_MSI) > 0);
>> +#endif
>> 
>>     ret = kvm_arch_init(s);
>>     if (ret < 0) {
> 
> -- 
> Siemens AG, Corporate Technology, CT T DE IT 1
> Corporate Competence Center Embedded Linux

--
Bluecherry: http://www.bluecherrydvr.com/
SwissDisk : http://www.swissdisk.com/
Ubuntu    : http://www.ubuntu.com/
My Blog   : http://ben-collins.blogspot.com/

Patch

diff --git a/kvm-all.c b/kvm-all.c
index 489ee53..b0f6e06 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -63,7 +63,9 @@  typedef struct KVMSlot
 typedef struct kvm_dirty_log KVMDirtyLog;
 
 typedef struct KVMMSIRoute {
+#ifdef KVM_CAP_IRQ_ROUTING
     struct kvm_irq_routing_entry kroute;
+#endif
     QTAILQ_ENTRY(KVMMSIRoute) entry;
 } KVMMSIRoute;
 
@@ -1143,6 +1145,10 @@  static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int virq, bool assign)
 {
     abort();
 }
+
+void kvm_irqchip_release_virq(KVMState *s, int virq)
+{
+}
 #endif /* !KVM_CAP_IRQ_ROUTING */
 
 int kvm_irqchip_add_irqfd(KVMState *s, int fd, int virq)
@@ -1286,7 +1292,9 @@  int kvm_init(void)
     s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
 #endif
 
+#ifdef KVM_CAP_IRQ_ROUTING
     s->direct_msi = (kvm_check_extension(s, KVM_CAP_SIGNAL_MSI) > 0);
+#endif
 
     ret = kvm_arch_init(s);
     if (ret < 0) {