diff mbox

[2/6] KVM: x86: decouple irqchip_in_kernel() and pic_irqchip()

Message ID 20161124172104.GA17619@potion (mailing list archive)
State New, archived
Headers show

Commit Message

Radim Krčmář Nov. 24, 2016, 5:21 p.m. UTC
2016-11-24 11:55-0500, Paolo Bonzini:
>> irqchip_in_kernel() tried to save a bit by reusing pic_irqchip(), but it
>> just complicated the code.
>> Add kvm->arch.irqchip_kvm that matches kvm->arch.irqchip_split.
>> (Turning them into an exclusive type would be nicer.)
> 
> Then do it. ;)

It is hard to name! :)

I would squash something like this if the names were ok:

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Paolo Bonzini Nov. 25, 2016, 8:59 a.m. UTC | #1
----- Original Message -----
> From: "Radim Krčmář" <rkrcmar@redhat.com>
> To: "Paolo Bonzini" <pbonzini@redhat.com>
> Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
> Sent: Thursday, November 24, 2016 6:21:04 PM
> Subject: Re: [PATCH 2/6] KVM: x86: decouple irqchip_in_kernel() and pic_irqchip()
> 
> 2016-11-24 11:55-0500, Paolo Bonzini:
> >> irqchip_in_kernel() tried to save a bit by reusing pic_irqchip(), but it
> >> just complicated the code.
> >> Add kvm->arch.irqchip_kvm that matches kvm->arch.irqchip_split.
> >> (Turning them into an exclusive type would be nicer.)
> > 
> > Then do it. ;)
> 
> It is hard to name! :)
> 
> I would squash something like this if the names were ok:
> 
> diff --git a/arch/x86/include/asm/kvm_host.h
> b/arch/x86/include/asm/kvm_host.h
> index 929228ec2839..726235f0e3f3 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -706,6 +706,12 @@ struct kvm_hv {
>  	HV_REFERENCE_TSC_PAGE tsc_ref;
>  };
>  
> +enum kvm_kernel_irqchip {

kvm_kernel_irqchip_mode?

> +	KVM_IRQCHIP_NONE,
> +	KVM_IRQCHIP_KVM,          /* created in KVM_CREATE_IRQCHIP */
> +	KVM_IRQCHIP_SPLIT,        /* created in KVM_CAP_SPLIT_IRQCHIP */

Since you pretty much asked to nitpick, KVM_IRQCHIP_KERNEL would
match irqchip_in_kernel better.  Also, s/in/with/? :)

> +};
> +
>  struct kvm_arch {
>  	unsigned int n_used_mmu_pages;
>  	unsigned int n_requested_mmu_pages;
> @@ -778,8 +784,7 @@ struct kvm_arch {
>  
>  	u64 disabled_quirks;
>  
> -	bool irqchip_kvm;
> -	bool irqchip_split;
> +	enum kvm_kernel_irqchip irqchip;

irqchip_mode?

>  	u8 nr_reserved_ioapic_pins;
>  
>  	bool disabled_lapic_found;
> diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h
> index a80515e38645..f90ca9e0affc 100644
> --- a/arch/x86/kvm/irq.h
> +++ b/arch/x86/kvm/irq.h
> @@ -93,12 +93,12 @@ static inline int pic_in_kernel(struct kvm *kvm)
>  
>  static inline int irqchip_split(struct kvm *kvm)
>  {
> -	return kvm->arch.irqchip_split;
> +	return kvm->arch.irqchip == KVM_IRQCHIP_SPLIT;
>  }
>  
>  static inline int irqchip_kvm(struct kvm *kvm)
>  {
> -	return kvm->arch.irqchip_kvm;
> +	return kvm->arch.irqchip == KVM_IRQCHIP_KVM;
>  }
>  
>  static inline int irqchip_in_kernel(struct kvm *kvm)
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 4c364a13b17c..99c63b73dd35 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -3834,7 +3834,7 @@ static int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
>  			goto split_irqchip_unlock;
>  		/* Pairs with irqchip_in_kernel. */
>  		smp_wmb();
> -		kvm->arch.irqchip_split = true;
> +		kvm->arch.irqchip = KVM_IRQCHIP_SPLIT;
>  		kvm->arch.nr_reserved_ioapic_pins = cap->args[0];
>  		r = 0;
>  split_irqchip_unlock:
> @@ -3931,7 +3931,7 @@ long kvm_arch_vm_ioctl(struct file *filp,
>  		}
>  		/* Write kvm->irq_routing before enabling irqchip_in_kernel. */
>  		smp_wmb();
> -		kvm->arch.irqchip_kvm = true;
> +		kvm->arch.irqchip = KVM_IRQCHIP_KVM;
>  	create_irqchip_unlock:
>  		mutex_unlock(&kvm->lock);
>  		break;
> 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Radim Krčmář Nov. 25, 2016, 5:11 p.m. UTC | #2
2016-11-25 03:59-0500, Paolo Bonzini:
> ----- Original Message -----
>> From: "Radim Krčmář" <rkrcmar@redhat.com>
>> To: "Paolo Bonzini" <pbonzini@redhat.com>
>> Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
>> Sent: Thursday, November 24, 2016 6:21:04 PM
>> Subject: Re: [PATCH 2/6] KVM: x86: decouple irqchip_in_kernel() and pic_irqchip()
>> 
>> 2016-11-24 11:55-0500, Paolo Bonzini:
>> >> irqchip_in_kernel() tried to save a bit by reusing pic_irqchip(), but it
>> >> just complicated the code.
>> >> Add kvm->arch.irqchip_kvm that matches kvm->arch.irqchip_split.
>> >> (Turning them into an exclusive type would be nicer.)
>> > 
>> > Then do it. ;)
>> 
>> It is hard to name! :)
>> 
>> I would squash something like this if the names were ok:
>> 
>> diff --git a/arch/x86/include/asm/kvm_host.h
>> b/arch/x86/include/asm/kvm_host.h
>> index 929228ec2839..726235f0e3f3 100644
>> --- a/arch/x86/include/asm/kvm_host.h
>> +++ b/arch/x86/include/asm/kvm_host.h
>> @@ -706,6 +706,12 @@ struct kvm_hv {
>>  	HV_REFERENCE_TSC_PAGE tsc_ref;
>>  };
>>  
>> +enum kvm_kernel_irqchip {
> 
> kvm_kernel_irqchip_mode?

If we append the mode, what about just "kvm_irqchip_mode"?

irqchip_in_kernel() tells which one is in the kernel.

>> +	KVM_IRQCHIP_NONE,
>> +	KVM_IRQCHIP_KVM,          /* created in KVM_CREATE_IRQCHIP */
>> +	KVM_IRQCHIP_SPLIT,        /* created in KVM_CAP_SPLIT_IRQCHIP */
> 
> Since you pretty much asked to nitpick,

I am always interested in nitpicks!

>                                         KVM_IRQCHIP_KERNEL would
> match irqchip_in_kernel better.

Matching the enum name prefix would be nice, so I'd rename it to
enum kvm_irqchip_kernel_mode then.  I'd keep them this way if we go with
enum kvm_irqchip_mode.

>                                  Also, s/in/with/? :)

Ok.

>> +};
>> +
>>  struct kvm_arch {
>>  	unsigned int n_used_mmu_pages;
>>  	unsigned int n_requested_mmu_pages;
>> @@ -778,8 +784,7 @@ struct kvm_arch {
>>  
>>  	u64 disabled_quirks;
>>  
>> -	bool irqchip_kvm;
>> -	bool irqchip_split;
>> +	enum kvm_kernel_irqchip irqchip;
> 
> irqchip_mode?

Yes, thanks.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paolo Bonzini Nov. 25, 2016, 5:22 p.m. UTC | #3
On 25/11/2016 18:11, Radim Krčmář wrote:
> 2016-11-25 03:59-0500, Paolo Bonzini:
>> ----- Original Message -----
>>> From: "Radim Krčmář" <rkrcmar@redhat.com>
>>> To: "Paolo Bonzini" <pbonzini@redhat.com>
>>> Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
>>> Sent: Thursday, November 24, 2016 6:21:04 PM
>>> Subject: Re: [PATCH 2/6] KVM: x86: decouple irqchip_in_kernel() and pic_irqchip()
>>>
>>> 2016-11-24 11:55-0500, Paolo Bonzini:
>>>>> irqchip_in_kernel() tried to save a bit by reusing pic_irqchip(), but it
>>>>> just complicated the code.
>>>>> Add kvm->arch.irqchip_kvm that matches kvm->arch.irqchip_split.
>>>>> (Turning them into an exclusive type would be nicer.)
>>>>
>>>> Then do it. ;)
>>>
>>> It is hard to name! :)
>>>
>>> I would squash something like this if the names were ok:
>>>
>>> diff --git a/arch/x86/include/asm/kvm_host.h
>>> b/arch/x86/include/asm/kvm_host.h
>>> index 929228ec2839..726235f0e3f3 100644
>>> --- a/arch/x86/include/asm/kvm_host.h
>>> +++ b/arch/x86/include/asm/kvm_host.h
>>> @@ -706,6 +706,12 @@ struct kvm_hv {
>>>  	HV_REFERENCE_TSC_PAGE tsc_ref;
>>>  };
>>>  
>>> +enum kvm_kernel_irqchip {
>>
>> kvm_kernel_irqchip_mode?
> 
> If we append the mode, what about just "kvm_irqchip_mode"?
> 
> irqchip_in_kernel() tells which one is in the kernel.
> 
>>> +	KVM_IRQCHIP_NONE,
>>> +	KVM_IRQCHIP_KVM,          /* created in KVM_CREATE_IRQCHIP */
>>> +	KVM_IRQCHIP_SPLIT,        /* created in KVM_CAP_SPLIT_IRQCHIP */
>>
>> Since you pretty much asked to nitpick,
> 
> I am always interested in nitpicks!
> 
>>                                         KVM_IRQCHIP_KERNEL would
>> match irqchip_in_kernel better.
> 
> Matching the enum name prefix would be nice, so I'd rename it to
> enum kvm_irqchip_kernel_mode then.  I'd keep them this way if we go with
> enum kvm_irqchip_mode.

kvm_irqchip_mode is best I think (NONE/KERNEL/SPLIT).

Paolo

>>                                  Also, s/in/with/? :)
> 
> Ok.
> 
>>> +};
>>> +
>>>  struct kvm_arch {
>>>  	unsigned int n_used_mmu_pages;
>>>  	unsigned int n_requested_mmu_pages;
>>> @@ -778,8 +784,7 @@ struct kvm_arch {
>>>  
>>>  	u64 disabled_quirks;
>>>  
>>> -	bool irqchip_kvm;
>>> -	bool irqchip_split;
>>> +	enum kvm_kernel_irqchip irqchip;
>>
>> irqchip_mode?
> 
> Yes, thanks.
> 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 929228ec2839..726235f0e3f3 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -706,6 +706,12 @@  struct kvm_hv {
 	HV_REFERENCE_TSC_PAGE tsc_ref;
 };
 
+enum kvm_kernel_irqchip {
+	KVM_IRQCHIP_NONE,
+	KVM_IRQCHIP_KVM,          /* created in KVM_CREATE_IRQCHIP */
+	KVM_IRQCHIP_SPLIT,        /* created in KVM_CAP_SPLIT_IRQCHIP */
+};
+
 struct kvm_arch {
 	unsigned int n_used_mmu_pages;
 	unsigned int n_requested_mmu_pages;
@@ -778,8 +784,7 @@  struct kvm_arch {
 
 	u64 disabled_quirks;
 
-	bool irqchip_kvm;
-	bool irqchip_split;
+	enum kvm_kernel_irqchip irqchip;
 	u8 nr_reserved_ioapic_pins;
 
 	bool disabled_lapic_found;
diff --git a/arch/x86/kvm/irq.h b/arch/x86/kvm/irq.h
index a80515e38645..f90ca9e0affc 100644
--- a/arch/x86/kvm/irq.h
+++ b/arch/x86/kvm/irq.h
@@ -93,12 +93,12 @@  static inline int pic_in_kernel(struct kvm *kvm)
 
 static inline int irqchip_split(struct kvm *kvm)
 {
-	return kvm->arch.irqchip_split;
+	return kvm->arch.irqchip == KVM_IRQCHIP_SPLIT;
 }
 
 static inline int irqchip_kvm(struct kvm *kvm)
 {
-	return kvm->arch.irqchip_kvm;
+	return kvm->arch.irqchip == KVM_IRQCHIP_KVM;
 }
 
 static inline int irqchip_in_kernel(struct kvm *kvm)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4c364a13b17c..99c63b73dd35 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3834,7 +3834,7 @@  static int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
 			goto split_irqchip_unlock;
 		/* Pairs with irqchip_in_kernel. */
 		smp_wmb();
-		kvm->arch.irqchip_split = true;
+		kvm->arch.irqchip = KVM_IRQCHIP_SPLIT;
 		kvm->arch.nr_reserved_ioapic_pins = cap->args[0];
 		r = 0;
 split_irqchip_unlock:
@@ -3931,7 +3931,7 @@  long kvm_arch_vm_ioctl(struct file *filp,
 		}
 		/* Write kvm->irq_routing before enabling irqchip_in_kernel. */
 		smp_wmb();
-		kvm->arch.irqchip_kvm = true;
+		kvm->arch.irqchip = KVM_IRQCHIP_KVM;
 	create_irqchip_unlock:
 		mutex_unlock(&kvm->lock);
 		break;