Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: James Morse <james.morse@arm.com>
To: Pavel Tatashin <pasha.tatashin@soleen.com>
Cc: sashal@kernel.org, mark.rutland@arm.com, vladimir.murzin@arm.com,
	corbet@lwn.net, catalin.marinas@arm.com, bhsharma@redhat.com,
	steve.capper@arm.com, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org, jmorris@namei.org,
	linux-mm@kvack.org, rfontana@redhat.com, ebiederm@xmission.com,
	maz@kernel.org, matthias.bgg@gmail.com, tglx@linutronix.de,
	will@kernel.org, selindag@gmail.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v9 08/18] arm64: kexec: move relocation function setup
Date: Wed, 29 Apr 2020 18:01:26 +0100	[thread overview]
Message-ID: <ea2b39d7-d496-d9ac-23c9-c279ec29f5d5@arm.com> (raw)
In-Reply-To: <20200326032420.27220-9-pasha.tatashin@soleen.com>

Hi Pavel,

On 26/03/2020 03:24, Pavel Tatashin wrote:
> Currently, kernel relocation function is configured in machine_kexec()
> at the time of kexec reboot by using control_code_page.
> 
> This operation, however, is more logical to be done during kexec_load,
> and thus remove from reboot time. Move, setup of this function to
> newly added machine_kexec_post_load().

This would avoid the need to special-case the cache maintenance, so its a good cleanup...


> Because once MMU is enabled, kexec control page will contain more than
> relocation kernel, but also vector table, add pointer to the actual
> function within this page arch.kern_reloc. Currently, it equals to the
> beginning of page, we will add offsets later, when vector table is
> added.

If the vector table always comes second, wouldn't this be extra work to hold the value 0?
You can control the layout of this relocation code, as it has to be written in assembly.
I don't get why this would be necessary.


> diff --git a/arch/arm64/kernel/machine_kexec.c b/arch/arm64/kernel/machine_kexec.c
> index ae1bad0156cd..ec71a153cc2d 100644
> --- a/arch/arm64/kernel/machine_kexec.c
> +++ b/arch/arm64/kernel/machine_kexec.c
> @@ -58,6 +59,17 @@ void machine_kexec_cleanup(struct kimage *kimage)
>  	/* Empty routine needed to avoid build errors. */
>  }
>  
> +int machine_kexec_post_load(struct kimage *kimage)
> +{
> +	void *reloc_code = page_to_virt(kimage->control_code_page);
> +
> +	memcpy(reloc_code, arm64_relocate_new_kernel,
> +	       arm64_relocate_new_kernel_size);
> +	kimage->arch.kern_reloc = __pa(reloc_code);

Could we move the two cache maintenance calls for this area in here too. Keeping it next
to the modification makes it clearer why it is required.

In this case we can use flush_icache_range() instead of its __variant because this now
happens much earlier.


> +	return 0;
> +}

Regardless,
Reviewed-by: James Morse <james.morse@arm.com>


Thanks,

James

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  parent reply	other threads:[~2020-04-29 17:01 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200326032420.27220-1-pasha.tatashin@soleen.com>
     [not found] ` <20200326032420.27220-2-pasha.tatashin@soleen.com>
2020-04-29 17:00   ` [PATCH v9 01/18] arm64: kexec: make dtb_mem always enabled James Morse
2021-01-23  0:17     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-3-pasha.tatashin@soleen.com>
2020-04-29 17:00   ` [PATCH v9 02/18] arm64: hibernate: move page handling function to new trans_pgd.c James Morse
2021-01-23  0:18     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-4-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 03/18] arm64: trans_pgd: make trans_pgd_map_page generic James Morse
2021-01-22 21:52     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-5-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 04/18] arm64: trans_pgd: pass allocator trans_pgd_create_copy James Morse
2021-01-23  0:20     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-6-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 05/18] arm64: trans_pgd: pass NULL instead of init_mm to *_populate functions James Morse
2021-01-23  0:22     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-8-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 07/18] arm64: trans_pgd: hibernate: idmap the single page that holds the copy page routines James Morse
2021-01-23  0:35     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-9-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` James Morse [this message]
2021-01-23  1:01     ` [PATCH v9 08/18] arm64: kexec: move relocation function setup Pavel Tatashin
     [not found] ` <20200326032420.27220-10-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 09/18] arm64: kexec: call kexec_image_info only once James Morse
     [not found] ` <20200326032420.27220-11-pasha.tatashin@soleen.com>
2020-04-29 17:01   ` [PATCH v9 10/18] arm64: kexec: cpu_soft_restart change argument types James Morse
2021-01-23  1:14     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-16-pasha.tatashin@soleen.com>
2020-04-29 17:35   ` [PATCH v9 15/18] arm64: kexec: kexec EL2 vectors Marc Zyngier
2021-01-25 19:07     ` Pavel Tatashin
2020-05-07 16:21   ` James Morse
     [not found] ` <20200326032420.27220-12-pasha.tatashin@soleen.com>
2020-05-07 16:22   ` [PATCH v9 11/18] arm64: kexec: arm64_relocate_new_kernel clean-ups James Morse
     [not found] ` <20200326032420.27220-14-pasha.tatashin@soleen.com>
2020-05-07 16:22   ` [PATCH v9 13/18] arm64: kexec: add expandable argument to relocation function James Morse
2021-01-23  2:49     ` Pavel Tatashin
     [not found] ` <20200326032420.27220-13-pasha.tatashin@soleen.com>
2020-05-07 16:22   ` [PATCH v9 12/18] arm64: kexec: arm64_relocate_new_kernel don't use x0 as temp James Morse
     [not found] ` <20200326032420.27220-15-pasha.tatashin@soleen.com>
2020-05-07 16:22   ` [PATCH v9 14/18] arm64: kexec: offset for relocation function James Morse
     [not found] ` <20200326032420.27220-17-pasha.tatashin@soleen.com>
2020-05-07 16:22   ` [PATCH v9 16/18] arm64: kexec: configure trans_pgd page table for kexec James Morse

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=ea2b39d7-d496-d9ac-23c9-c279ec29f5d5@arm.com \
    --to=james.morse@arm.com \
    --cc=bhsharma@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=ebiederm@xmission.com \
    --cc=jmorris@namei.org \
    --cc=kexec@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=maz@kernel.org \
    --cc=pasha.tatashin@soleen.com \
    --cc=rfontana@redhat.com \
    --cc=sashal@kernel.org \
    --cc=selindag@gmail.com \
    --cc=steve.capper@arm.com \
    --cc=tglx@linutronix.de \
    --cc=vladimir.murzin@arm.com \
    --cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox