linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@c-s.fr>
To: Aaro Koskinen <aaro.koskinen@iki.fi>,
	Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [BISECTED] kexec regression on PowerBook G4
Date: Wed, 22 May 2019 07:44:56 +0000	[thread overview]
Message-ID: <a8f8a0d7-1737-4c83-4587-8d4dc87c3ecb@c-s.fr> (raw)
In-Reply-To: <90f3557b-400b-60b5-9ff8-d5605adeee79@c-s.fr>

Hi Again,

On 05/22/2019 06:14 AM, Christophe Leroy wrote:
> Hi Aero,
> 
> Le 22/05/2019 à 00:18, Aaro Koskinen a écrit :
>> Hi,
>>
>> I was trying to upgrade from v5.0 -> v5.1 on PowerBook G4, but when 
>> trying
>> to kexec a kernel the system gets stuck (no errors seen on the console).
> 
> Do you mean you are trying to kexec a v5.1 kernel from a v5.0 kernel, or 
> do you have a working v5.1 kernel, but kexec doesn't work with it ?
> 
>>
>> Bisected to: 93c4a162b014 ("powerpc/6xx: Store PGDIR physical address
>> in a SPRG"). This commit doesn't revert cleanly anymore but I tested
>> that the one before works OK.
> 
> Not sure that's the problem. There was a problem with that commit, but 
> it was fixed by 4622a2d43101 ("powerpc/6xx: fix setup and use of 
> SPRN_SPRG_PGDIR for hash32").
> You probably hit some commit between those two during bisect, that's 
> likely the reason why you ended here.
> 
> Can you restart your bisect from 4622a2d43101 ?
> 
> If you have CONFIG_SMP, maybe you should also consider taking 
> 397d2300b08c ("powerpc/32s: fix flush_hash_pages() on SMP"). Stable 
> 5.1.4 includes it.
> 
>>
>> With current Linus HEAD (9c7db5004280), it gets a bit further but still
>> doesn't work: now I get an error on the console after kexec "Starting
>> new kernel! ... Bye!":
>>
>>     kernel tried to execute exec-protected page (...) - exploit attempt?
> 
> Interesting.
> 
> Do you have CONFIG_STRICT_KERNEL_RWX=y in your .config ? If so, can you 
> retry without it ?

After looking at the code, I don't thing CONFIG_STRICT_KERNEL_RWX will 
make any difference. Can you try the patch below ?

 From 8c1039da0d0f26cdf995156a905fc97fe7bda36c Mon Sep 17 00:00:00 2001
From: Christophe Leroy <christophe.leroy@c-s.fr>
Date: Wed, 22 May 2019 07:28:42 +0000
Subject: [PATCH] Fix Kexec

---
  arch/powerpc/include/asm/pgtable.h     | 2 ++
  arch/powerpc/kernel/machine_kexec_32.c | 4 ++++
  arch/powerpc/mm/pgtable_32.c           | 2 +-
  3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/pgtable.h 
b/arch/powerpc/include/asm/pgtable.h
index 3f53be60fb01..642eea937229 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -140,6 +140,8 @@ static inline void pte_frag_set(mm_context_t *ctx, 
void *p)
  }
  #endif

+int change_page_attr(struct page *page, int numpages, pgprot_t prot);
+
  #endif /* __ASSEMBLY__ */

  #endif /* _ASM_POWERPC_PGTABLE_H */
diff --git a/arch/powerpc/kernel/machine_kexec_32.c 
b/arch/powerpc/kernel/machine_kexec_32.c
index affe5dcce7f4..4f719501e6ae 100644
--- a/arch/powerpc/kernel/machine_kexec_32.c
+++ b/arch/powerpc/kernel/machine_kexec_32.c
@@ -54,6 +54,10 @@ void default_machine_kexec(struct kimage *image)
  	memcpy((void *)reboot_code_buffer, relocate_new_kernel,
  						relocate_new_kernel_size);

+	change_page_attr(image->control_code_page,
+			 ALIGN(KEXEC_CONTROL_PAGE_SIZE, PAGE_SIZE) >> PAGE_SHIFT,
+			 PAGE_KERNEL_TEXT);
+
  	flush_icache_range(reboot_code_buffer,
  				reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE);
  	printk(KERN_INFO "Bye!\n");
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index 16ada373b32b..0e4651d803fc 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -340,7 +340,7 @@ static int __change_page_attr_noflush(struct page 
*page, pgprot_t prot)
   *
   * THIS DOES NOTHING WITH BAT MAPPINGS, DEBUG USE ONLY
   */
-static int change_page_attr(struct page *page, int numpages, pgprot_t prot)
+int change_page_attr(struct page *page, int numpages, pgprot_t prot)
  {
  	int i, err = 0;
  	unsigned long flags;
-- 
2.13.3

  reply	other threads:[~2019-05-22  7:47 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-21 22:18 [BISECTED] kexec regression on PowerBook G4 Aaro Koskinen
2019-05-22  6:14 ` Christophe Leroy
2019-05-22  7:44   ` Christophe Leroy [this message]
2019-05-22 20:13     ` Aaro Koskinen
2019-05-22 20:33       ` LEROY Christophe
     [not found]         ` <20190522211724.GC456@darkstar.musicnaut.iki.fi>
2019-05-23  5:24           ` [RFC PATCH] powerpc: fix kexec failure on book3s/32 Christophe Leroy
2019-05-23  5:33           ` [BISECTED] kexec regression on PowerBook G4 Christophe Leroy
2019-05-23 17:27             ` Aaro Koskinen
2019-05-23 18:58               ` Christophe Leroy
2019-05-23 22:23                 ` Aaro Koskinen
2019-05-24  5:46                   ` Christophe Leroy
2019-05-24  6:08                     ` Christophe Leroy
2019-05-24  7:36                       ` Aaro Koskinen
2019-05-24  7:40                         ` Christophe Leroy
2019-05-24 13:29                           ` Aaro Koskinen
2019-05-24 13:35                             ` Christophe Leroy
2019-05-24  6:05           ` [RFC PATCH v2] powerpc: fix kexec failure on book3s/32 Christophe Leroy
2019-05-24 13:38             ` Christophe Leroy
2019-05-22 20:07   ` [BISECTED] kexec regression on PowerBook G4 Aaro Koskinen

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=a8f8a0d7-1737-4c83-4587-8d4dc87c3ecb@c-s.fr \
    --to=christophe.leroy@c-s.fr \
    --cc=aaro.koskinen@iki.fi \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).