Hi,
the root cause of https://marc.info/?t=154824821000001&r=1&w=2 was fixed in gcc trunk (only) and it's now available in gcc-9.0.1-0.4.fc30.
Something like the patch bellow is needed, but things get complicated, because the new constraint won't be available in gcc < 9 (afaik). A scratch build succeeded - https://koji.fedoraproject.org/koji/taskinfo?taskID=32736584
What I changed - updated 0001-s390-jump_label-Correct-asm-contraint.patch and added as Patch5xx - reverted the *config* part of 1b48caa (Disable CONFIG_JUMP_LABEL on s390x)
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h index e2d3e6c43395..41dabfd8518d 100644 --- a/arch/s390/include/asm/jump_label.h +++ b/arch/s390/include/asm/jump_label.h @@ -22,7 +22,7 @@ static inline bool arch_static_branch(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n" - : : "X" (&((char *)key)[branch]) : : label); + : : "jdd" (&((char *)key)[branch]) : : label); return false; label: return true; @@ -36,7 +36,7 @@ static inline bool arch_static_branch_jump(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n" - : : "X" (&((char *)key)[branch]) : : label); + : : "jdd" (&((char *)key)[branch]) : : label); return false; label: return true;
With regards,
Dan
On Mon, 11 Feb 2019 14:57:18 +0100 Dan Horák dan@danny.cz wrote:
Hi,
the root cause of https://marc.info/?t=154824821000001&r=1&w=2 was fixed in gcc trunk (only) and it's now available in gcc-9.0.1-0.4.fc30.
https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/s390/constraints.md?revisio...
Dan
On 2/11/19 1:57 PM, Dan Horák wrote:
Hi,
the root cause of https://marc.info/?t=154824821000001&r=1&w=2 was fixed in gcc trunk (only) and it's now available in gcc-9.0.1-0.4.fc30.
Something like the patch bellow is needed, but things get complicated, because the new constraint won't be available in gcc < 9 (afaik). A scratch build succeeded - https://koji.fedoraproject.org/koji/taskinfo?taskID=32736584
What I changed
- updated 0001-s390-jump_label-Correct-asm-contraint.patch and added as Patch5xx
- reverted the *config* part of 1b48caa (Disable CONFIG_JUMP_LABEL on s390x)
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h index e2d3e6c43395..41dabfd8518d 100644 --- a/arch/s390/include/asm/jump_label.h +++ b/arch/s390/include/asm/jump_label.h @@ -22,7 +22,7 @@ static inline bool arch_static_branch(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n"
: : "X" (&((char *)key)[branch]) : : label);
label: return true;: : "jdd" (&((char *)key)[branch]) : : label); return false;
@@ -36,7 +36,7 @@ static inline bool arch_static_branch_jump(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n"
: : "X" (&((char *)key)[branch]) : : label);
: : "jdd" (&((char *)key)[branch]) : : label); return false;
label: return true;
With regards,
Dan
Thanks for following up. I committed the proposal from https://marc.info/?l=linux-kernel&m=154937077018072&w=2 and reenabled CONIFG_JUMP_LABEL on today's -rc6 build. I'm guessing that patch will get committed so I suggest we watch that and continue to follow up upstream.
Thanks, Laura
On Mon, 11 Feb 2019 10:07:18 -0800 Laura Abbott labbott@redhat.com wrote:
On 2/11/19 1:57 PM, Dan Horák wrote:
Hi,
the root cause of https://marc.info/?t=154824821000001&r=1&w=2 was fixed in gcc trunk (only) and it's now available in gcc-9.0.1-0.4.fc30.
Something like the patch bellow is needed, but things get complicated, because the new constraint won't be available in gcc < 9 (afaik). A scratch build succeeded - https://koji.fedoraproject.org/koji/taskinfo?taskID=32736584
What I changed
- updated 0001-s390-jump_label-Correct-asm-contraint.patch and
added as Patch5xx
- reverted the *config* part of 1b48caa (Disable CONFIG_JUMP_LABEL
on s390x)
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h index e2d3e6c43395..41dabfd8518d 100644 --- a/arch/s390/include/asm/jump_label.h +++ b/arch/s390/include/asm/jump_label.h @@ -22,7 +22,7 @@ static inline bool arch_static_branch(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n"
: : "X" (&((char *)key)[branch]) : :
label);
: : "jdd" (&((char *)key)[branch]) : :
label); return false; label: return true; @@ -36,7 +36,7 @@ static inline bool arch_static_branch_jump(struct static_key *key, bool branch) ".long 0b-.,%l[label]-.\n" ".quad %0-.\n" ".popsection\n"
: : "X" (&((char *)key)[branch]) : :
label);
: : "jdd" (&((char *)key)[branch]) : :
label); return false; label: return true;
With regards,
Dan
Thanks for following up. I committed the proposal from https://marc.info/?l=linux-kernel&m=154937077018072&w=2 and reenabled CONIFG_JUMP_LABEL on today's -rc6 build. I'm guessing that patch will get committed so I suggest we watch that and continue to follow up upstream.
and an upstream kernel fix is now available the s390 tree in https://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git/commit/?h=fea...
Dan
kernel@lists.fedoraproject.org