public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 1/3] kvm: x86: check kvm_apic_sw_enabled() is enough
       [not found] <20190401021723.5682-1-richardw.yang@linux.intel.com>
@ 2019-06-04  3:11 ` Wei Yang
       [not found] ` <20190401021723.5682-2-richardw.yang@linux.intel.com>
  1 sibling, 0 replies; 3+ messages in thread
From: Wei Yang @ 2019-06-04  3:11 UTC (permalink / raw)
  To: Wei Yang; +Cc: kvm, x86, pbonzini, rkrcmar

Ping...

On Mon, Apr 01, 2019 at 10:17:21AM +0800, Wei Yang wrote:
>On delivering irq to apic, we iterate on vcpu and do the check like
>this:
>
>    kvm_apic_present(vcpu)
>    kvm_lapic_enabled(vpu)
>        kvm_apic_present(vcpu) && kvm_apic_sw_enabled(vcpu->arch.apic)
>
>Since we have already checked kvm_apic_present(), it is reasonable to
>replace kvm_lapic_enabled() with kvm_apic_sw_enabled().
>
>Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
>---
> arch/x86/kvm/irq_comm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/arch/x86/kvm/irq_comm.c b/arch/x86/kvm/irq_comm.c
>index 3cc3b2d130a0..188beb301cc5 100644
>--- a/arch/x86/kvm/irq_comm.c
>+++ b/arch/x86/kvm/irq_comm.c
>@@ -86,7 +86,7 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src,
> 			if (r < 0)
> 				r = 0;
> 			r += kvm_apic_set_irq(vcpu, irq, dest_map);
>-		} else if (kvm_lapic_enabled(vcpu)) {
>+		} else if (kvm_apic_sw_enabled(vcpu->arch.apic)) {
> 			if (!kvm_vector_hashing_enabled()) {
> 				if (!lowest)
> 					lowest = vcpu;
>-- 
>2.19.1

-- 
Wei Yang
Help you, Help me

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

* Re: [PATCH 2/3] kvm: x86: use same convention to name apic_clear_vector()
       [not found] ` <20190401021723.5682-2-richardw.yang@linux.intel.com>
@ 2019-06-06 12:07   ` Paolo Bonzini
  2019-06-06 15:43     ` Wei Yang
  0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2019-06-06 12:07 UTC (permalink / raw)
  To: Wei Yang, kvm, x86; +Cc: rkrcmar

On 01/04/19 04:17, Wei Yang wrote:
> apic_clear_vector() is the counterpart of kvm_lapic_clear_vector(),
> while they have different naming convention.
> 
> Rename it and move together to arch/x86/kvm/lapic.h. Also fix one typo
> in comment by hand.

You mean "of kvm_lapic_set_vector()".  Queued all three with only this
change to the commit log, sorry for the delay.

Paolo

> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
> ---
>  arch/x86/kvm/lapic.c | 17 +++++++----------
>  arch/x86/kvm/lapic.h |  5 +++++
>  2 files changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> index c4533d05c214..d8b3cbba8e29 100644
> --- a/arch/x86/kvm/lapic.c
> +++ b/arch/x86/kvm/lapic.c
> @@ -88,11 +88,6 @@ bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector)
>  		apic_test_vector(vector, apic->regs + APIC_IRR);
>  }
>  
> -static inline void apic_clear_vector(int vec, void *bitmap)
> -{
> -	clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
> -}
> -
>  static inline int __apic_test_and_set_vector(int vec, void *bitmap)
>  {
>  	return __test_and_set_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
> @@ -445,12 +440,12 @@ static inline void apic_clear_irr(int vec, struct kvm_lapic *apic)
>  
>  	if (unlikely(vcpu->arch.apicv_active)) {
>  		/* need to update RVI */
> -		apic_clear_vector(vec, apic->regs + APIC_IRR);
> +		kvm_lapic_clear_vector(vec, apic->regs + APIC_IRR);
>  		kvm_x86_ops->hwapic_irr_update(vcpu,
>  				apic_find_highest_irr(apic));
>  	} else {
>  		apic->irr_pending = false;
> -		apic_clear_vector(vec, apic->regs + APIC_IRR);
> +		kvm_lapic_clear_vector(vec, apic->regs + APIC_IRR);
>  		if (apic_search_irr(apic) != -1)
>  			apic->irr_pending = true;
>  	}
> @@ -1053,9 +1048,11 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
>  
>  		if (apic_test_vector(vector, apic->regs + APIC_TMR) != !!trig_mode) {
>  			if (trig_mode)
> -				kvm_lapic_set_vector(vector, apic->regs + APIC_TMR);
> +				kvm_lapic_set_vector(vector,
> +						     apic->regs + APIC_TMR);
>  			else
> -				apic_clear_vector(vector, apic->regs + APIC_TMR);
> +				kvm_lapic_clear_vector(vector,
> +						       apic->regs + APIC_TMR);
>  		}
>  
>  		if (vcpu->arch.apicv_active)
> @@ -2278,7 +2275,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
>  
>  	/*
>  	 * APIC is created enabled. This will prevent kvm_lapic_set_base from
> -	 * thinking that APIC satet has changed.
> +	 * thinking that APIC state has changed.
>  	 */
>  	vcpu->arch.apic_base = MSR_IA32_APICBASE_ENABLE;
>  	static_key_slow_inc(&apic_sw_disabled.key); /* sw disabled at reset */
> diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
> index ff6ef9c3d760..339ee029be6e 100644
> --- a/arch/x86/kvm/lapic.h
> +++ b/arch/x86/kvm/lapic.h
> @@ -127,6 +127,11 @@ void kvm_lapic_exit(void);
>  #define VEC_POS(v) ((v) & (32 - 1))
>  #define REG_POS(v) (((v) >> 5) << 4)
>  
> +static inline void kvm_lapic_clear_vector(int vec, void *bitmap)
> +{
> +	clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
> +}
> +
>  static inline void kvm_lapic_set_vector(int vec, void *bitmap)
>  {
>  	set_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
> 


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

* Re: [PATCH 2/3] kvm: x86: use same convention to name apic_clear_vector()
  2019-06-06 12:07   ` [PATCH 2/3] kvm: x86: use same convention to name apic_clear_vector() Paolo Bonzini
@ 2019-06-06 15:43     ` Wei Yang
  0 siblings, 0 replies; 3+ messages in thread
From: Wei Yang @ 2019-06-06 15:43 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Wei Yang, kvm, x86, rkrcmar

On Thu, Jun 06, 2019 at 02:07:39PM +0200, Paolo Bonzini wrote:
>On 01/04/19 04:17, Wei Yang wrote:
>> apic_clear_vector() is the counterpart of kvm_lapic_clear_vector(),
>> while they have different naming convention.
>> 
>> Rename it and move together to arch/x86/kvm/lapic.h. Also fix one typo
>> in comment by hand.
>
>You mean "of kvm_lapic_set_vector()".  Queued all three with only this
>change to the commit log, sorry for the delay.
>

Thanks :-)

>Paolo
>
>> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
>> ---
>>  arch/x86/kvm/lapic.c | 17 +++++++----------
>>  arch/x86/kvm/lapic.h |  5 +++++
>>  2 files changed, 12 insertions(+), 10 deletions(-)
>> 
>> diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
>> index c4533d05c214..d8b3cbba8e29 100644
>> --- a/arch/x86/kvm/lapic.c
>> +++ b/arch/x86/kvm/lapic.c
>> @@ -88,11 +88,6 @@ bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector)
>>  		apic_test_vector(vector, apic->regs + APIC_IRR);
>>  }
>>  
>> -static inline void apic_clear_vector(int vec, void *bitmap)
>> -{
>> -	clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
>> -}
>> -
>>  static inline int __apic_test_and_set_vector(int vec, void *bitmap)
>>  {
>>  	return __test_and_set_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
>> @@ -445,12 +440,12 @@ static inline void apic_clear_irr(int vec, struct kvm_lapic *apic)
>>  
>>  	if (unlikely(vcpu->arch.apicv_active)) {
>>  		/* need to update RVI */
>> -		apic_clear_vector(vec, apic->regs + APIC_IRR);
>> +		kvm_lapic_clear_vector(vec, apic->regs + APIC_IRR);
>>  		kvm_x86_ops->hwapic_irr_update(vcpu,
>>  				apic_find_highest_irr(apic));
>>  	} else {
>>  		apic->irr_pending = false;
>> -		apic_clear_vector(vec, apic->regs + APIC_IRR);
>> +		kvm_lapic_clear_vector(vec, apic->regs + APIC_IRR);
>>  		if (apic_search_irr(apic) != -1)
>>  			apic->irr_pending = true;
>>  	}
>> @@ -1053,9 +1048,11 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
>>  
>>  		if (apic_test_vector(vector, apic->regs + APIC_TMR) != !!trig_mode) {
>>  			if (trig_mode)
>> -				kvm_lapic_set_vector(vector, apic->regs + APIC_TMR);
>> +				kvm_lapic_set_vector(vector,
>> +						     apic->regs + APIC_TMR);
>>  			else
>> -				apic_clear_vector(vector, apic->regs + APIC_TMR);
>> +				kvm_lapic_clear_vector(vector,
>> +						       apic->regs + APIC_TMR);
>>  		}
>>  
>>  		if (vcpu->arch.apicv_active)
>> @@ -2278,7 +2275,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
>>  
>>  	/*
>>  	 * APIC is created enabled. This will prevent kvm_lapic_set_base from
>> -	 * thinking that APIC satet has changed.
>> +	 * thinking that APIC state has changed.
>>  	 */
>>  	vcpu->arch.apic_base = MSR_IA32_APICBASE_ENABLE;
>>  	static_key_slow_inc(&apic_sw_disabled.key); /* sw disabled at reset */
>> diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h
>> index ff6ef9c3d760..339ee029be6e 100644
>> --- a/arch/x86/kvm/lapic.h
>> +++ b/arch/x86/kvm/lapic.h
>> @@ -127,6 +127,11 @@ void kvm_lapic_exit(void);
>>  #define VEC_POS(v) ((v) & (32 - 1))
>>  #define REG_POS(v) (((v) >> 5) << 4)
>>  
>> +static inline void kvm_lapic_clear_vector(int vec, void *bitmap)
>> +{
>> +	clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
>> +}
>> +
>>  static inline void kvm_lapic_set_vector(int vec, void *bitmap)
>>  {
>>  	set_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
>> 

-- 
Wei Yang
Help you, Help me

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

end of thread, other threads:[~2019-06-06 15:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20190401021723.5682-1-richardw.yang@linux.intel.com>
2019-06-04  3:11 ` [PATCH 1/3] kvm: x86: check kvm_apic_sw_enabled() is enough Wei Yang
     [not found] ` <20190401021723.5682-2-richardw.yang@linux.intel.com>
2019-06-06 12:07   ` [PATCH 2/3] kvm: x86: use same convention to name apic_clear_vector() Paolo Bonzini
2019-06-06 15:43     ` Wei Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox