All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman.id.au>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: Paul Mackerras <paulus@samba.org>,
	linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] powerpc/32: Add missing context synchronisation with CONFIG_VMAP_STACK
Date: Sun, 26 Jan 2020 00:28:04 +1100	[thread overview]
Message-ID: <87o8urhdi3.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20200125140052.Horde.0-n2_EcIdGahTxfDVj913w1@messagerie.si.c-s.fr>

Christophe Leroy <christophe.leroy@c-s.fr> writes:
> Michael Ellerman <mpe@ellerman.id.au> a écrit :
>> Christophe Leroy <christophe.leroy@c-s.fr> writes:
...
>>> diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h
>>> index 73a035b40dbf..a6a5fbbf8504 100644
>>> --- a/arch/powerpc/kernel/head_32.h
>>> +++ b/arch/powerpc/kernel/head_32.h
>>> @@ -43,6 +43,7 @@
>>>  	.ifeq	\for_rtas
>>>  	li	r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */
>>>  	mtmsr	r11
>>> +	isync
>>
>> Actually this one leads to:
>>
>>   /home/michael/linux/arch/powerpc/kernel/head_8xx.S: Assembler messages:
>>   /home/michael/linux/arch/powerpc/kernel/head_8xx.S:151: Error:  
>> attempt to move .org backwards
>>   make[3]: *** [/home/michael/linux/scripts/Makefile.build:348:  
>> arch/powerpc/kernel/head_8xx.o] Error 1
>>
>> For mpc885_ads_defconfig.
>>
>> That's the alignment exception overflowing into the program check
>> handler:
>>
>> /* Alignment exception */
>> 	. = 0x600
>> Alignment:
>> 	EXCEPTION_PROLOG handle_dar_dsisr=1
>> 	save_dar_dsisr_on_stack r4, r5, r11
>> 	li	r6, RPN_PATTERN
>> 	mtspr	SPRN_DAR, r6	/* Tag DAR, to be used in DTLB Error */
>> 	addi	r3,r1,STACK_FRAME_OVERHEAD
>> 	EXC_XFER_STD(0x600, alignment_exception)
>>
>> /* Program check exception */
>> 	EXCEPTION(0x700, ProgramCheck, program_check_exception, EXC_XFER_STD)
>>
>>
>> Can't see an obvious/easy way to fix it.
>
> Argh !
>
> I think the easiest is to move the EXC_XFER_STD(0x600,  
> alignment_exception) somewhere else and branch to it. There is some  
> space at .0xa00

That works, or builds at least. I'm not setup to boot test it.

Does this look OK?

cheers


From 40e7d671aa27cf4411188f978b2cd06b30a9cb6c Mon Sep 17 00:00:00 2001
From: Michael Ellerman <mpe@ellerman.id.au>
Date: Sun, 26 Jan 2020 00:20:16 +1100
Subject: [PATCH] powerpc/8xx: Move tail of alignment exception out of line

When we enable VMAP_STACK there will not be enough room for the
alignment handler at 0x600 in head_8xx.S. For now move the tail of the
alignment handler out of line, and branch to it.

Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/kernel/head_8xx.S | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 477933b36bde..9922306ae512 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -145,7 +145,7 @@ _ENTRY(_start);
 	li	r6, RPN_PATTERN
 	mtspr	SPRN_DAR, r6	/* Tag DAR, to be used in DTLB Error */
 	addi	r3,r1,STACK_FRAME_OVERHEAD
-	EXC_XFER_STD(0x600, alignment_exception)
+	b	.Lalignment_exception_ool
 
 /* Program check exception */
 	EXCEPTION(0x700, ProgramCheck, program_check_exception, EXC_XFER_STD)
@@ -153,6 +153,11 @@ _ENTRY(_start);
 /* Decrementer */
 	EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
 
+	/* With VMAP_STACK there's not enough room for this at 0x600 */
+	. = 0xa00
+.Lalignment_exception_ool:
+	EXC_XFER_STD(0x600, alignment_exception)
+
 /* System call */
 	. = 0xc00
 SystemCall:
-- 
2.21.1




WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	Paul Mackerras <paulus@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: [PATCH] powerpc/32: Add missing context synchronisation with CONFIG_VMAP_STACK
Date: Sun, 26 Jan 2020 00:28:04 +1100	[thread overview]
Message-ID: <87o8urhdi3.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <20200125140052.Horde.0-n2_EcIdGahTxfDVj913w1@messagerie.si.c-s.fr>

Christophe Leroy <christophe.leroy@c-s.fr> writes:
> Michael Ellerman <mpe@ellerman.id.au> a écrit :
>> Christophe Leroy <christophe.leroy@c-s.fr> writes:
...
>>> diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h
>>> index 73a035b40dbf..a6a5fbbf8504 100644
>>> --- a/arch/powerpc/kernel/head_32.h
>>> +++ b/arch/powerpc/kernel/head_32.h
>>> @@ -43,6 +43,7 @@
>>>  	.ifeq	\for_rtas
>>>  	li	r11, MSR_KERNEL & ~(MSR_IR | MSR_RI) /* can take DTLB miss */
>>>  	mtmsr	r11
>>> +	isync
>>
>> Actually this one leads to:
>>
>>   /home/michael/linux/arch/powerpc/kernel/head_8xx.S: Assembler messages:
>>   /home/michael/linux/arch/powerpc/kernel/head_8xx.S:151: Error:  
>> attempt to move .org backwards
>>   make[3]: *** [/home/michael/linux/scripts/Makefile.build:348:  
>> arch/powerpc/kernel/head_8xx.o] Error 1
>>
>> For mpc885_ads_defconfig.
>>
>> That's the alignment exception overflowing into the program check
>> handler:
>>
>> /* Alignment exception */
>> 	. = 0x600
>> Alignment:
>> 	EXCEPTION_PROLOG handle_dar_dsisr=1
>> 	save_dar_dsisr_on_stack r4, r5, r11
>> 	li	r6, RPN_PATTERN
>> 	mtspr	SPRN_DAR, r6	/* Tag DAR, to be used in DTLB Error */
>> 	addi	r3,r1,STACK_FRAME_OVERHEAD
>> 	EXC_XFER_STD(0x600, alignment_exception)
>>
>> /* Program check exception */
>> 	EXCEPTION(0x700, ProgramCheck, program_check_exception, EXC_XFER_STD)
>>
>>
>> Can't see an obvious/easy way to fix it.
>
> Argh !
>
> I think the easiest is to move the EXC_XFER_STD(0x600,  
> alignment_exception) somewhere else and branch to it. There is some  
> space at .0xa00

That works, or builds at least. I'm not setup to boot test it.

Does this look OK?

cheers


From 40e7d671aa27cf4411188f978b2cd06b30a9cb6c Mon Sep 17 00:00:00 2001
From: Michael Ellerman <mpe@ellerman.id.au>
Date: Sun, 26 Jan 2020 00:20:16 +1100
Subject: [PATCH] powerpc/8xx: Move tail of alignment exception out of line

When we enable VMAP_STACK there will not be enough room for the
alignment handler at 0x600 in head_8xx.S. For now move the tail of the
alignment handler out of line, and branch to it.

Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/kernel/head_8xx.S | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index 477933b36bde..9922306ae512 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -145,7 +145,7 @@ _ENTRY(_start);
 	li	r6, RPN_PATTERN
 	mtspr	SPRN_DAR, r6	/* Tag DAR, to be used in DTLB Error */
 	addi	r3,r1,STACK_FRAME_OVERHEAD
-	EXC_XFER_STD(0x600, alignment_exception)
+	b	.Lalignment_exception_ool
 
 /* Program check exception */
 	EXCEPTION(0x700, ProgramCheck, program_check_exception, EXC_XFER_STD)
@@ -153,6 +153,11 @@ _ENTRY(_start);
 /* Decrementer */
 	EXCEPTION(0x900, Decrementer, timer_interrupt, EXC_XFER_LITE)
 
+	/* With VMAP_STACK there's not enough room for this at 0x600 */
+	. = 0xa00
+.Lalignment_exception_ool:
+	EXC_XFER_STD(0x600, alignment_exception)
+
 /* System call */
 	. = 0xc00
 SystemCall:
-- 
2.21.1




  reply	other threads:[~2020-01-25 13:31 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-24 17:03 [PATCH] powerpc/32: Add missing context synchronisation with CONFIG_VMAP_STACK Christophe Leroy
2020-01-24 17:03 ` Christophe Leroy
2020-01-25 10:30 ` Michael Ellerman
2020-01-25 10:30   ` Michael Ellerman
2020-01-25 12:15 ` Michael Ellerman
2020-01-25 12:15   ` Michael Ellerman
2020-01-25 13:00   ` Christophe Leroy
2020-01-25 13:00     ` Christophe Leroy
2020-01-25 13:28     ` Michael Ellerman [this message]
2020-01-25 13:28       ` Michael Ellerman
2020-01-25 14:35       ` Christophe Leroy
2020-01-25 14:35         ` Christophe Leroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o8urhdi3.fsf@mpe.ellerman.id.au \
    --to=mpe@ellerman.id.au \
    --cc=christophe.leroy@c-s.fr \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.