[v5,2/5] KVM: introduce kvm_arch_is_virtual_intc_initialized

Message ID 1417622832-5460-3-git-send-email-eric.auger@linaro.org
State New
Headers show

Commit Message

Auger Eric Dec. 3, 2014, 4:07 p.m.
Introduce __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED define and
associated kvm_arch_is_virtual_intc_initialized function. This latter
allows to test whether the virtual interrupt controller is initialized
and ready to accept virtual IRQ injection. On some architectures,
the virtual interrupt controller is dynamically instantiated, justifying
that kind of check.

Signed-off-by: Eric Auger <eric.auger@linaro.org>
---
 include/linux/kvm_host.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Christoffer Dall Jan. 11, 2015, 9:11 p.m. | #1
On Wed, Dec 03, 2014 at 05:07:09PM +0100, Eric Auger wrote:
> Introduce __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED define and
> associated kvm_arch_is_virtual_intc_initialized function. This latter
> allows to test whether the virtual interrupt controller is initialized
> and ready to accept virtual IRQ injection. On some architectures,
> the virtual interrupt controller is dynamically instantiated, justifying
> that kind of check.
> 
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> ---
>  include/linux/kvm_host.h | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> index ea53b04..45fea3c 100644
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -696,6 +696,18 @@ static inline wait_queue_head_t *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu)
>  #endif
>  }
>  
> +#ifndef __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED

maybe you can drop the _virtual_ from all these names to make it
slightly shorter.

alternatively to this approach you could expose a function from the
irqfd layer that KVM intc implementations call into to say "I'm
ready"...  Not sure if it would look nicer.

> +/*
> + * returns trues if the virtual interrupt controller is initialized and
> + * ready to accept virtual IRQ. On some architectures the virtual interrupt
> + * controller is dynamically instantiated and this is not always true.
> + */
> +static inline bool kvm_arch_is_virtual_intc_initialized(struct kvm *kvm)
> +{
> +	return true;
> +}

don't you need to define a prototype if the architecture does define the
symbol?

> +#endif
> +
>  int kvm_arch_init_vm(struct kvm *kvm, unsigned long type);
>  void kvm_arch_destroy_vm(struct kvm *kvm);
>  void kvm_arch_sync_events(struct kvm *kvm);
> -- 
> 1.9.1
>
Auger Eric Jan. 12, 2015, 1:39 p.m. | #2
Hi Christoffer,
On 01/11/2015 10:11 PM, Christoffer Dall wrote:
> On Wed, Dec 03, 2014 at 05:07:09PM +0100, Eric Auger wrote:
>> Introduce __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED define and
>> associated kvm_arch_is_virtual_intc_initialized function. This latter
>> allows to test whether the virtual interrupt controller is initialized
>> and ready to accept virtual IRQ injection. On some architectures,
>> the virtual interrupt controller is dynamically instantiated, justifying
>> that kind of check.
>>
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>> ---
>>  include/linux/kvm_host.h | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
>> index ea53b04..45fea3c 100644
>> --- a/include/linux/kvm_host.h
>> +++ b/include/linux/kvm_host.h
>> @@ -696,6 +696,18 @@ static inline wait_queue_head_t *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu)
>>  #endif
>>  }
>>  
>> +#ifndef __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED
> 
> maybe you can drop the _virtual_ from all these names to make it
> slightly shorter.
ok. I chose that name to differentiate from the host irqchip. I will
drop "virtual".
> 
> alternatively to this approach you could expose a function from the
> irqfd layer that KVM intc implementations call into to say "I'm
> ready"...  Not sure if it would look nicer.
> 
>> +/*
>> + * returns trues if the virtual interrupt controller is initialized and
>> + * ready to accept virtual IRQ. On some architectures the virtual interrupt
>> + * controller is dynamically instantiated and this is not always true.
>> + */
>> +static inline bool kvm_arch_is_virtual_intc_initialized(struct kvm *kvm)
>> +{
>> +	return true;
>> +}
> 
> don't you need to define a prototype if the architecture does define the
> symbol?

yes I will move the declaration here

Thanks

Eric
> 
>> +#endif
>> +
>>  int kvm_arch_init_vm(struct kvm *kvm, unsigned long type);
>>  void kvm_arch_destroy_vm(struct kvm *kvm);
>>  void kvm_arch_sync_events(struct kvm *kvm);
>> -- 
>> 1.9.1
>>

Patch

diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index ea53b04..45fea3c 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -696,6 +696,18 @@  static inline wait_queue_head_t *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu)
 #endif
 }
 
+#ifndef __KVM_HAVE_ARCH_VIRTUAL_INTC_INITIALIZED
+/*
+ * returns trues if the virtual interrupt controller is initialized and
+ * ready to accept virtual IRQ. On some architectures the virtual interrupt
+ * controller is dynamically instantiated and this is not always true.
+ */
+static inline bool kvm_arch_is_virtual_intc_initialized(struct kvm *kvm)
+{
+	return true;
+}
+#endif
+
 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type);
 void kvm_arch_destroy_vm(struct kvm *kvm);
 void kvm_arch_sync_events(struct kvm *kvm);