diff mbox

[v7,02/16] arm64: Use update{,_tsk}_thread_flag()

Message ID 1525882385-29181-3-git-send-email-Dave.Martin@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dave Martin May 9, 2018, 4:12 p.m. UTC
This patch uses the new update_thread_flag() helpers to simplify a
couple of if () set; else clear; constructs.

No functional change.

Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
---
 arch/arm64/kernel/fpsimd.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

Comments

Will Deacon May 9, 2018, 4:17 p.m. UTC | #1
Hi Dave,

On Wed, May 09, 2018 at 05:12:51PM +0100, Dave Martin wrote:
> This patch uses the new update_thread_flag() helpers to simplify a
> couple of if () set; else clear; constructs.
> 
> No functional change.
> 
> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm64/kernel/fpsimd.c | 19 +++++++------------
>  1 file changed, 7 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
> index 87a3536..0c4e7e0 100644
> --- a/arch/arm64/kernel/fpsimd.c
> +++ b/arch/arm64/kernel/fpsimd.c
> @@ -618,10 +618,8 @@ int sve_set_vector_length(struct task_struct *task,
>  	task->thread.sve_vl = vl;
>  
>  out:
> -	if (flags & PR_SVE_VL_INHERIT)
> -		set_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
> -	else
> -		clear_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
> +	update_tsk_thread_flag(task, TIF_SVE_VL_INHERIT,
> +			       flags & PR_SVE_VL_INHERIT);
>  
>  	return 0;
>  }
> @@ -902,7 +900,7 @@ void fpsimd_thread_switch(struct task_struct *next)
>  	if (current->mm)
>  		task_fpsimd_save();
>  
> -	if (next->mm) {
> +	if (next->mm)
>  		/*
>  		 * If we are switching to a task whose most recent userland
>  		 * FPSIMD state is already in the registers of *this* cpu,
> @@ -910,13 +908,10 @@ void fpsimd_thread_switch(struct task_struct *next)
>  		 * the TIF_FOREIGN_FPSTATE flag so the state will be loaded
>  		 * upon the next return to userland.
>  		 */
> -		if (__this_cpu_read(fpsimd_last_state.st) ==
> -			&next->thread.uw.fpsimd_state
> -		    && next->thread.fpsimd_cpu == smp_processor_id())
> -			clear_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
> -		else
> -			set_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
> -	}
> +		update_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE,
> +			__this_cpu_read(fpsimd_last_state.st) !=
> +				&next->thread.uw.fpsimd_state ||
> +			next->thread.fpsimd_cpu != smp_processor_id());

Given the multi-line comment and this multi-line call, I'd be inclined to
leave the curlies in place and then use a local bool for the complex
condition.

With that:

Acked-by: Will Deacon <will.deacon@arm.com>

Will
Dave Martin May 9, 2018, 4:27 p.m. UTC | #2
On Wed, May 09, 2018 at 05:17:28PM +0100, Will Deacon wrote:
> Hi Dave,
> 
> On Wed, May 09, 2018 at 05:12:51PM +0100, Dave Martin wrote:
> > This patch uses the new update_thread_flag() helpers to simplify a
> > couple of if () set; else clear; constructs.
> > 
> > No functional change.
> > 
> > Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> > Acked-by: Marc Zyngier <marc.zyngier@arm.com>
> > Cc: Catalin Marinas <catalin.marinas@arm.com>
> > Cc: Will Deacon <will.deacon@arm.com>
> > ---
> >  arch/arm64/kernel/fpsimd.c | 19 +++++++------------
> >  1 file changed, 7 insertions(+), 12 deletions(-)
> > 
> > diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
> > index 87a3536..0c4e7e0 100644
> > --- a/arch/arm64/kernel/fpsimd.c
> > +++ b/arch/arm64/kernel/fpsimd.c

[...]

> > @@ -902,7 +900,7 @@ void fpsimd_thread_switch(struct task_struct *next)
> >  	if (current->mm)
> >  		task_fpsimd_save();
> >  
> > -	if (next->mm) {
> > +	if (next->mm)
> >  		/*
> >  		 * If we are switching to a task whose most recent userland
> >  		 * FPSIMD state is already in the registers of *this* cpu,
> > @@ -910,13 +908,10 @@ void fpsimd_thread_switch(struct task_struct *next)
> >  		 * the TIF_FOREIGN_FPSTATE flag so the state will be loaded
> >  		 * upon the next return to userland.
> >  		 */
> > -		if (__this_cpu_read(fpsimd_last_state.st) ==
> > -			&next->thread.uw.fpsimd_state
> > -		    && next->thread.fpsimd_cpu == smp_processor_id())
> > -			clear_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
> > -		else
> > -			set_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
> > -	}
> > +		update_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE,
> > +			__this_cpu_read(fpsimd_last_state.st) !=
> > +				&next->thread.uw.fpsimd_state ||
> > +			next->thread.fpsimd_cpu != smp_processor_id());
> 
> Given the multi-line comment and this multi-line call, I'd be inclined to
> leave the curlies in place and then use a local bool for the complex
> condition.

Hey, curlies cost money, you know.

> With that:
> 
> Acked-by: Will Deacon <will.deacon@arm.com>

Are you content to see this merged without the change?  It doesn't seem
worth a respin of the whole series just for this.  I agree the code
would be clearer, but this patch doesn't actually make it worse IMHO.

If I respin for some reason though, I can address this and add your Ack.

Cheers
---Dave
Marc Zyngier May 9, 2018, 4:55 p.m. UTC | #3
On 09/05/18 17:27, Dave Martin wrote:
> On Wed, May 09, 2018 at 05:17:28PM +0100, Will Deacon wrote:
>> Hi Dave,
>>
>> On Wed, May 09, 2018 at 05:12:51PM +0100, Dave Martin wrote:
>>> This patch uses the new update_thread_flag() helpers to simplify a
>>> couple of if () set; else clear; constructs.
>>>
>>> No functional change.
>>>
>>> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
>>> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
>>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>>> Cc: Will Deacon <will.deacon@arm.com>
>>> ---
>>>  arch/arm64/kernel/fpsimd.c | 19 +++++++------------
>>>  1 file changed, 7 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
>>> index 87a3536..0c4e7e0 100644
>>> --- a/arch/arm64/kernel/fpsimd.c
>>> +++ b/arch/arm64/kernel/fpsimd.c
> 
> [...]
> 
>>> @@ -902,7 +900,7 @@ void fpsimd_thread_switch(struct task_struct *next)
>>>  	if (current->mm)
>>>  		task_fpsimd_save();
>>>  
>>> -	if (next->mm) {
>>> +	if (next->mm)
>>>  		/*
>>>  		 * If we are switching to a task whose most recent userland
>>>  		 * FPSIMD state is already in the registers of *this* cpu,
>>> @@ -910,13 +908,10 @@ void fpsimd_thread_switch(struct task_struct *next)
>>>  		 * the TIF_FOREIGN_FPSTATE flag so the state will be loaded
>>>  		 * upon the next return to userland.
>>>  		 */
>>> -		if (__this_cpu_read(fpsimd_last_state.st) ==
>>> -			&next->thread.uw.fpsimd_state
>>> -		    && next->thread.fpsimd_cpu == smp_processor_id())
>>> -			clear_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
>>> -		else
>>> -			set_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
>>> -	}
>>> +		update_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE,
>>> +			__this_cpu_read(fpsimd_last_state.st) !=
>>> +				&next->thread.uw.fpsimd_state ||
>>> +			next->thread.fpsimd_cpu != smp_processor_id());
>>
>> Given the multi-line comment and this multi-line call, I'd be inclined to
>> leave the curlies in place and then use a local bool for the complex
>> condition.
> 
> Hey, curlies cost money, you know.
> 
>> With that:
>>
>> Acked-by: Will Deacon <will.deacon@arm.com>
> 
> Are you content to see this merged without the change?  It doesn't seem
> worth a respin of the whole series just for this.  I agree the code
> would be clearer, but this patch doesn't actually make it worse IMHO.
> 
> If I respin for some reason though, I can address this and add your Ack.

I'm happy to perform the change myself when applying the series if there
is no additional comment that would lead to a respin.

Thanks,

	M.
Catalin Marinas May 10, 2018, 4:16 p.m. UTC | #4
On Wed, May 09, 2018 at 05:12:51PM +0100, Dave P Martin wrote:
> This patch uses the new update_thread_flag() helpers to simplify a
> couple of if () set; else clear; constructs.
> 
> No functional change.
> 
> Signed-off-by: Dave Martin <Dave.Martin@arm.com>
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
diff mbox

Patch

diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 87a3536..0c4e7e0 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -618,10 +618,8 @@  int sve_set_vector_length(struct task_struct *task,
 	task->thread.sve_vl = vl;
 
 out:
-	if (flags & PR_SVE_VL_INHERIT)
-		set_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
-	else
-		clear_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
+	update_tsk_thread_flag(task, TIF_SVE_VL_INHERIT,
+			       flags & PR_SVE_VL_INHERIT);
 
 	return 0;
 }
@@ -902,7 +900,7 @@  void fpsimd_thread_switch(struct task_struct *next)
 	if (current->mm)
 		task_fpsimd_save();
 
-	if (next->mm) {
+	if (next->mm)
 		/*
 		 * If we are switching to a task whose most recent userland
 		 * FPSIMD state is already in the registers of *this* cpu,
@@ -910,13 +908,10 @@  void fpsimd_thread_switch(struct task_struct *next)
 		 * the TIF_FOREIGN_FPSTATE flag so the state will be loaded
 		 * upon the next return to userland.
 		 */
-		if (__this_cpu_read(fpsimd_last_state.st) ==
-			&next->thread.uw.fpsimd_state
-		    && next->thread.fpsimd_cpu == smp_processor_id())
-			clear_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
-		else
-			set_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
-	}
+		update_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE,
+			__this_cpu_read(fpsimd_last_state.st) !=
+				&next->thread.uw.fpsimd_state ||
+			next->thread.fpsimd_cpu != smp_processor_id());
 }
 
 void fpsimd_flush_thread(void)