diff mbox

[RFC] Remove duplicate setting of the B field in tlbie

Message ID 4bbac7fd-ed99-a5c4-1bda-94345b88f18c@gmail.com
State Superseded
Headers show

Commit Message

Balbir Singh Sept. 13, 2016, 7:45 a.m. UTC
Remove duplicate setting of the the "B" field when doing a tlbie(l).
In compute_tlbie_rb(), the "B" field is set again just before
returning the rb value to be used for tlbie(l).

Signed-off-by: Balbir Singh <bsingharora@gmail.com>
---
Quickly boot tested a VM with these changes in kvm with 64k
as the page size for the guest.

 arch/powerpc/include/asm/kvm_book3s_64.h | 1 -
 1 file changed, 1 deletion(-)

Comments

Aneesh Kumar K.V Sept. 14, 2016, 4:55 a.m. UTC | #1
Balbir Singh <bsingharora@gmail.com> writes:

> Remove duplicate setting of the the "B" field when doing a tlbie(l).
> In compute_tlbie_rb(), the "B" field is set again just before
> returning the rb value to be used for tlbie(l).
>
> Signed-off-by: Balbir Singh <bsingharora@gmail.com>
> ---
> Quickly boot tested a VM with these changes in kvm with 64k
> as the page size for the guest.
>
>  arch/powerpc/include/asm/kvm_book3s_64.h | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h
> index 88d17b4..63b6900 100644
> --- a/arch/powerpc/include/asm/kvm_book3s_64.h
> +++ b/arch/powerpc/include/asm/kvm_book3s_64.h
> @@ -159,7 +159,6 @@ static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r,
>  	/* This covers 14..54 bits of va*/
>  	rb = (v & ~0x7fUL) << 16;		/* AVA field */
>
> -	rb |= (v >> HPTE_V_SSIZE_SHIFT) << 8;	/*  B field */
>  	/*
>  	 * AVA in v had cleared lower 23 bits. We need to derive
>  	 * that from pteg index

Can we keep this and remove the other. This is much easier to follow
than

	rb |= (v >> 54) & 0x300;		/* B field */

-aneesh

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Balbir Singh Sept. 14, 2016, 6:15 a.m. UTC | #2
On 14/09/16 14:55, Aneesh Kumar K.V wrote:
> Balbir Singh <bsingharora@gmail.com> writes:
> 
>> Remove duplicate setting of the the "B" field when doing a tlbie(l).
>> In compute_tlbie_rb(), the "B" field is set again just before
>> returning the rb value to be used for tlbie(l).
>>
>> Signed-off-by: Balbir Singh <bsingharora@gmail.com>
>> ---
>> Quickly boot tested a VM with these changes in kvm with 64k
>> as the page size for the guest.
>>
>>  arch/powerpc/include/asm/kvm_book3s_64.h | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h
>> index 88d17b4..63b6900 100644
>> --- a/arch/powerpc/include/asm/kvm_book3s_64.h
>> +++ b/arch/powerpc/include/asm/kvm_book3s_64.h
>> @@ -159,7 +159,6 @@ static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r,
>>  	/* This covers 14..54 bits of va*/
>>  	rb = (v & ~0x7fUL) << 16;		/* AVA field */
>>
>> -	rb |= (v >> HPTE_V_SSIZE_SHIFT) << 8;	/*  B field */
>>  	/*
>>  	 * AVA in v had cleared lower 23 bits. We need to derive
>>  	 * that from pteg index
> 
> Can we keep this and remove the other. This is much easier to follow
> than
> 
> 	rb |= (v >> 54) & 0x300;		/* B field */
> 

OK, but I think for 64K page size

                rb &= ~((1ul << mmu_psize_defs[a_psize].shift) - 1);

ends up cleaning up the "B" field. That is why we've had the two "B" field settings.

Let me double check with some coffee.

Balbir Singh.
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" 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/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h
index 88d17b4..63b6900 100644
--- a/arch/powerpc/include/asm/kvm_book3s_64.h
+++ b/arch/powerpc/include/asm/kvm_book3s_64.h
@@ -159,7 +159,6 @@  static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r,
 	/* This covers 14..54 bits of va*/
 	rb = (v & ~0x7fUL) << 16;		/* AVA field */
 
-	rb |= (v >> HPTE_V_SSIZE_SHIFT) << 8;	/*  B field */
 	/*
 	 * AVA in v had cleared lower 23 bits. We need to derive
 	 * that from pteg index