All of lore.kernel.org
 help / color / mirror / Atom feed
* Request for 4.19.x backport (with conflicts)
@ 2019-06-21 12:51 Laura Abbott
  2019-06-21 13:11 ` Heiko Carstens
  0 siblings, 1 reply; 6+ messages in thread
From: Laura Abbott @ 2019-06-21 12:51 UTC (permalink / raw)
  To: Ilya Leoshkevich, Heiko Carstens, stable; +Cc: Major Hayden

Hi,

We're attempting to build stable kernels with gcc9. 4.19.x fails to build with
gcc9 as 146448524bdd ("s390/jump_label: Use "jdd" constraint on gcc9") is missing.
This doesn't apply cleanly to 4.19.x as it needs changes from 13ddb52c165b
("s390/jump_label: Switch to relative references")

Which is better, taking both 13ddb52c165b and 146448524bdd or doing
a backport of 146448524bdd?

Thanks,
Laura

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

* Re: Request for 4.19.x backport (with conflicts)
  2019-06-21 12:51 Request for 4.19.x backport (with conflicts) Laura Abbott
@ 2019-06-21 13:11 ` Heiko Carstens
  2019-06-21 14:48   ` Laura Abbott
  0 siblings, 1 reply; 6+ messages in thread
From: Heiko Carstens @ 2019-06-21 13:11 UTC (permalink / raw)
  To: Laura Abbott; +Cc: Ilya Leoshkevich, stable, Major Hayden

Hello Laura,

> We're attempting to build stable kernels with gcc9. 4.19.x fails to build with
> gcc9 as 146448524bdd ("s390/jump_label: Use "jdd" constraint on gcc9") is missing.
> This doesn't apply cleanly to 4.19.x as it needs changes from 13ddb52c165b
> ("s390/jump_label: Switch to relative references")
> 
> Which is better, taking both 13ddb52c165b and 146448524bdd or doing
> a backport of 146448524bdd?

I don't know which kernel version you are referring to exactly,
however 4.19.53 from linux-stable does not contain the common code
infrastructure for relative jump labels. The infrastructure was merged
with 4.20: commit 50ff18ab497aa ("jump_label: Implement generic
support for relative references").

Therefore a backport of only 146448524bdd seems to be the way to go.


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

* Re: Request for 4.19.x backport (with conflicts)
  2019-06-21 13:11 ` Heiko Carstens
@ 2019-06-21 14:48   ` Laura Abbott
  2019-06-21 15:39     ` [PATCH] s390/jump_label: Use "jdd" constraint on gcc9 Ilya Leoshkevich
  0 siblings, 1 reply; 6+ messages in thread
From: Laura Abbott @ 2019-06-21 14:48 UTC (permalink / raw)
  To: Heiko Carstens; +Cc: Ilya Leoshkevich, stable, Major Hayden

On 6/21/19 9:11 AM, Heiko Carstens wrote:
> Hello Laura,
> 
>> We're attempting to build stable kernels with gcc9. 4.19.x fails to build with
>> gcc9 as 146448524bdd ("s390/jump_label: Use "jdd" constraint on gcc9") is missing.
>> This doesn't apply cleanly to 4.19.x as it needs changes from 13ddb52c165b
>> ("s390/jump_label: Switch to relative references")
>>
>> Which is better, taking both 13ddb52c165b and 146448524bdd or doing
>> a backport of 146448524bdd?
> 
> I don't know which kernel version you are referring to exactly,
> however 4.19.53 from linux-stable does not contain the common code
> infrastructure for relative jump labels. The infrastructure was merged
> with 4.20: commit 50ff18ab497aa ("jump_label: Implement generic
> support for relative references").
> 
> Therefore a backport of only 146448524bdd seems to be the way to go.
> 

Ah okay, I didn't realize there was more needed, I was just looking at
the clean cherry-pick. I'm not sure how to do the backport, if you
give me the patch I can verify.

Thanks,
Laura

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

* [PATCH] s390/jump_label: Use "jdd" constraint on gcc9
  2019-06-21 14:48   ` Laura Abbott
@ 2019-06-21 15:39     ` Ilya Leoshkevich
  2019-06-21 17:46       ` Laura Abbott
  0 siblings, 1 reply; 6+ messages in thread
From: Ilya Leoshkevich @ 2019-06-21 15:39 UTC (permalink / raw)
  To: Laura Abbott
  Cc: Heiko Carstens, stable, Major Hayden, Ilya Leoshkevich,
	Martin Schwidefsky

> Ah okay, I didn't realize there was more needed, I was just looking at
> the clean cherry-pick. I'm not sure how to do the backport, if you
> give me the patch I can verify.

Please find the cherry-picked 146448524bdd below.

I also had to cherry-pick 159491f3b509 to fix an unrelated compilation
error and make the build fully work.

Best regards,
Ilya

----

[heiko.carstens@de.ibm.com]:
-----
Laura Abbott reported that the kernel doesn't build anymore with gcc 9,
due to the "X" constraint. Ilya provided the gcc 9 patch "S/390:
Introduce jdd constraint" which introduces the new "jdd" constraint
which fixes this.
-----

The support for section anchors on S/390 introduced in gcc9 has changed
the behavior of "X" constraint, which can now produce register
references. Since existing constraints, in particular, "i", do not fit
the intended use case on S/390, the new machine-specific "jdd"
constraint was introduced. This patch makes jump labels use "jdd"
constraint when building with gcc9.

Reported-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
---
 arch/s390/include/asm/jump_label.h | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h
index 40f651292aa7..9c7dc970e966 100644
--- a/arch/s390/include/asm/jump_label.h
+++ b/arch/s390/include/asm/jump_label.h
@@ -10,6 +10,12 @@
 #define JUMP_LABEL_NOP_SIZE 6
 #define JUMP_LABEL_NOP_OFFSET 2
 
+#if __GNUC__ < 9
+#define JUMP_LABEL_STATIC_KEY_CONSTRAINT "X"
+#else
+#define JUMP_LABEL_STATIC_KEY_CONSTRAINT "jdd"
+#endif
+
 /*
  * We use a brcl 0,2 instruction for jump labels at compile time so it
  * can be easily distinguished from a hotpatch generated instruction.
@@ -19,9 +25,9 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran
 	asm_volatile_goto("0:	brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n"
 		".pushsection __jump_table, \"aw\"\n"
 		".balign 8\n"
-		".quad 0b, %l[label], %0\n"
+		".quad 0b, %l[label], %0+%1\n"
 		".popsection\n"
-		: : "X" (&((char *)key)[branch]) : : label);
+		: : JUMP_LABEL_STATIC_KEY_CONSTRAINT (key), "i" (branch) : : label);
 
 	return false;
 label:
@@ -33,9 +39,9 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
 	asm_volatile_goto("0:	brcl 15, %l[label]\n"
 		".pushsection __jump_table, \"aw\"\n"
 		".balign 8\n"
-		".quad 0b, %l[label], %0\n"
+		".quad 0b, %l[label], %0+%1\n"
 		".popsection\n"
-		: : "X" (&((char *)key)[branch]) : : label);
+		: : JUMP_LABEL_STATIC_KEY_CONSTRAINT (key), "i" (branch) : : label);
 
 	return false;
 label:
-- 
2.21.0


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

* Re: [PATCH] s390/jump_label: Use "jdd" constraint on gcc9
  2019-06-21 15:39     ` [PATCH] s390/jump_label: Use "jdd" constraint on gcc9 Ilya Leoshkevich
@ 2019-06-21 17:46       ` Laura Abbott
  2019-06-23  2:00         ` Sasha Levin
  0 siblings, 1 reply; 6+ messages in thread
From: Laura Abbott @ 2019-06-21 17:46 UTC (permalink / raw)
  To: Ilya Leoshkevich; +Cc: Heiko Carstens, stable, Major Hayden, Martin Schwidefsky

On 6/21/19 11:39 AM, Ilya Leoshkevich wrote:
>> Ah okay, I didn't realize there was more needed, I was just looking at
>> the clean cherry-pick. I'm not sure how to do the backport, if you
>> give me the patch I can verify.
> 
> Please find the cherry-picked 146448524bdd below.
> 
> I also had to cherry-pick 159491f3b509 to fix an unrelated compilation
> error and make the build fully work.
> 

Yes, this worked for me (plus 159491f3b509). Thanks!

> Best regards,
> Ilya
> 
> ----
> 
> [heiko.carstens@de.ibm.com]:
> -----
> Laura Abbott reported that the kernel doesn't build anymore with gcc 9,
> due to the "X" constraint. Ilya provided the gcc 9 patch "S/390:
> Introduce jdd constraint" which introduces the new "jdd" constraint
> which fixes this.
> -----
> 
> The support for section anchors on S/390 introduced in gcc9 has changed
> the behavior of "X" constraint, which can now produce register
> references. Since existing constraints, in particular, "i", do not fit
> the intended use case on S/390, the new machine-specific "jdd"
> constraint was introduced. This patch makes jump labels use "jdd"
> constraint when building with gcc9.
> 
> Reported-by: Laura Abbott <labbott@redhat.com>
> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
> ---
>   arch/s390/include/asm/jump_label.h | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h
> index 40f651292aa7..9c7dc970e966 100644
> --- a/arch/s390/include/asm/jump_label.h
> +++ b/arch/s390/include/asm/jump_label.h
> @@ -10,6 +10,12 @@
>   #define JUMP_LABEL_NOP_SIZE 6
>   #define JUMP_LABEL_NOP_OFFSET 2
>   
> +#if __GNUC__ < 9
> +#define JUMP_LABEL_STATIC_KEY_CONSTRAINT "X"
> +#else
> +#define JUMP_LABEL_STATIC_KEY_CONSTRAINT "jdd"
> +#endif
> +
>   /*
>    * We use a brcl 0,2 instruction for jump labels at compile time so it
>    * can be easily distinguished from a hotpatch generated instruction.
> @@ -19,9 +25,9 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran
>   	asm_volatile_goto("0:	brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n"
>   		".pushsection __jump_table, \"aw\"\n"
>   		".balign 8\n"
> -		".quad 0b, %l[label], %0\n"
> +		".quad 0b, %l[label], %0+%1\n"
>   		".popsection\n"
> -		: : "X" (&((char *)key)[branch]) : : label);
> +		: : JUMP_LABEL_STATIC_KEY_CONSTRAINT (key), "i" (branch) : : label);
>   
>   	return false;
>   label:
> @@ -33,9 +39,9 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key, bool
>   	asm_volatile_goto("0:	brcl 15, %l[label]\n"
>   		".pushsection __jump_table, \"aw\"\n"
>   		".balign 8\n"
> -		".quad 0b, %l[label], %0\n"
> +		".quad 0b, %l[label], %0+%1\n"
>   		".popsection\n"
> -		: : "X" (&((char *)key)[branch]) : : label);
> +		: : JUMP_LABEL_STATIC_KEY_CONSTRAINT (key), "i" (branch) : : label);
>   
>   	return false;
>   label:
> 


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

* Re: [PATCH] s390/jump_label: Use "jdd" constraint on gcc9
  2019-06-21 17:46       ` Laura Abbott
@ 2019-06-23  2:00         ` Sasha Levin
  0 siblings, 0 replies; 6+ messages in thread
From: Sasha Levin @ 2019-06-23  2:00 UTC (permalink / raw)
  To: Laura Abbott
  Cc: Ilya Leoshkevich, Heiko Carstens, stable, Major Hayden,
	Martin Schwidefsky

On Fri, Jun 21, 2019 at 01:46:46PM -0400, Laura Abbott wrote:
>On 6/21/19 11:39 AM, Ilya Leoshkevich wrote:
>>>Ah okay, I didn't realize there was more needed, I was just looking at
>>>the clean cherry-pick. I'm not sure how to do the backport, if you
>>>give me the patch I can verify.
>>
>>Please find the cherry-picked 146448524bdd below.
>>
>>I also had to cherry-pick 159491f3b509 to fix an unrelated compilation
>>error and make the build fully work.
>>
>
>Yes, this worked for me (plus 159491f3b509). Thanks!

I've queued the backport of 146448524bdd and 159491f3b509 to 4.19, thank
you.

--
Thanks,
Sasha

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

end of thread, other threads:[~2019-06-23  2:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-21 12:51 Request for 4.19.x backport (with conflicts) Laura Abbott
2019-06-21 13:11 ` Heiko Carstens
2019-06-21 14:48   ` Laura Abbott
2019-06-21 15:39     ` [PATCH] s390/jump_label: Use "jdd" constraint on gcc9 Ilya Leoshkevich
2019-06-21 17:46       ` Laura Abbott
2019-06-23  2:00         ` Sasha Levin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.