From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: James Morris <jmorris@namei.org>, Sasha Levin <sashal@kernel.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
kexec mailing list <kexec@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Catalin Marinas <catalin.marinas@arm.com>,
will@kernel.org,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Marc Zyngier <marc.zyngier@arm.com>,
James Morse <james.morse@arm.com>,
Vladimir Murzin <vladimir.murzin@arm.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Bhupesh Sharma <bhsharma@redhat.com>
Subject: Re: [RFC v2 0/8] arm64: MMU enabled kexec relocation
Date: Wed, 31 Jul 2019 12:40:51 -0400 [thread overview]
Message-ID: <CA+CK2bAYUFBBGo-LHBK4UWRK1tpx3AZ4Z9NkDxiDK0UYEDozaQ@mail.gmail.com> (raw)
In-Reply-To: <20190731163258.GH39768@lakrids.cambridge.arm.com>
On Wed, Jul 31, 2019 at 12:33 PM Mark Rutland <mark.rutland@arm.com> wrote:
>
> Hi Pavel,
>
> Generally, the cover letter should state up-front what the goal is (or
> what problem you're trying to solve). It would be really helpful to have
> that so that we understand what you're trying to achieve, and why.
>
> Messing with the MMU is often fraught with danger (and very painful to
> debug, as you are now aware), and so far we've tried to minimize the
> number of places where we have to do so.
Hi Mark,
I understand, this is why I first went another route of solving this
problem: pre-reserving contiguous memory, and avoid relocation
entirely (the same as what happens during crash reboot). But, that
solution was not accepted because it introduces a change to the common
code to solve ARM specific problem. So, James Morse, and other
suggested that I take a look at the root of the problem, and enable
MMU during relocation by doing what is already done during hibernate
restore.
>
> On Wed, Jul 31, 2019 at 11:38:49AM -0400, Pavel Tatashin wrote:
> > Changelog from previous RFC:
> > - Added trans_table support for both hibernate and kexec.
> > - Fixed performance issue, where enabling MMU did not yield the
> > actual performance improvement.
> >
> > Bug:
> > With the current state, this patch series works on kernels booted with EL1
> > mode, but for some reason, when elevated to EL2 mode reboot freezes in
> > both QEMU and on real hardware.
> >
> > The freeze happens in:
> >
> > arch/arm64/kernel/relocate_kernel.S
> > turn_on_mmu()
> >
> > Right after sctlr_el2 is written (MMU on EL2 is enabled)
> >
> > msr sctlr_el2, \tmp1
> >
> > I've been studying all the relevant control registers for EL2, but do not
> > see what might be causing this hang:
> >
> > MAIR_EL2 is set to be exactly the same as MAIR_EL1 0xbbff440c0400
> >
> > TCR_EL2 0x80843510
> > Enabled bits:
> > PS Physical Address Size. (0b100 44 bits, 16TB.)
> > SH0 Shareability 11 Inner Shareable
> > ORGN0 Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cach.
> > IRGN0 Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cach.
> > T0SZ 01 0000
> >
> > SCTLR_EL2 0x30e5183f
> > RES1 : Reserve ones
> > M : MMU enabled
> > A : Align check
> > C : Cacheability control
> > SA : SP Alignment check enable
> > IESB : Implicit Error Synchronization event
> > I : Instruction access Cacheability
> >
> > TTBR0_EL2 0x1b3069000 (address of trans_table)
> >
> > Any suggestion of what else might be missing that causes this freeze when
> > MMU is enabled in EL2?
> >
> > =====
>
> > Here is the current data from the real hardware:
> > (because of bug, I forced EL1 mode by setting el2_switch always to zero in
> > cpu_soft_restart()):
> >
> > For this experiment, the size of kernel plus initramfs is 25M. If initramfs
> > was larger, than the improvements would be even greater, as time spent in
> > relocation is proportional to the size of relocation.
> >
> > Previously:
> > kernel shutdown 0.022131328s
> > relocation 0.440510736s
> > kernel startup 0.294706768s
>
> In total this takes ~0.76s...
>
> >
> > Relocation was taking: 58.2% of reboot time
> >
> > Now:
> > kernel shutdown 0.032066576s
> > relocation 0.022158152s
> > kernel startup 0.296055880s
>
> ... and this takes ~0.35s
>
> So do we really need this complexity for a few blinks of an eye?
Yes, we have an extremely tight reboot budget, 0.35s is not an acceptable waste.
>
> Thanks,
> Mark.
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Sasha Levin <sashal@kernel.org>,
Vladimir Murzin <vladimir.murzin@arm.com>,
Jonathan Corbet <corbet@lwn.net>,
Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Bhupesh Sharma <bhsharma@redhat.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
kexec mailing list <kexec@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
James Morris <jmorris@namei.org>,
James Morse <james.morse@arm.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
will@kernel.org, Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC v2 0/8] arm64: MMU enabled kexec relocation
Date: Wed, 31 Jul 2019 12:40:51 -0400 [thread overview]
Message-ID: <CA+CK2bAYUFBBGo-LHBK4UWRK1tpx3AZ4Z9NkDxiDK0UYEDozaQ@mail.gmail.com> (raw)
In-Reply-To: <20190731163258.GH39768@lakrids.cambridge.arm.com>
On Wed, Jul 31, 2019 at 12:33 PM Mark Rutland <mark.rutland@arm.com> wrote:
>
> Hi Pavel,
>
> Generally, the cover letter should state up-front what the goal is (or
> what problem you're trying to solve). It would be really helpful to have
> that so that we understand what you're trying to achieve, and why.
>
> Messing with the MMU is often fraught with danger (and very painful to
> debug, as you are now aware), and so far we've tried to minimize the
> number of places where we have to do so.
Hi Mark,
I understand, this is why I first went another route of solving this
problem: pre-reserving contiguous memory, and avoid relocation
entirely (the same as what happens during crash reboot). But, that
solution was not accepted because it introduces a change to the common
code to solve ARM specific problem. So, James Morse, and other
suggested that I take a look at the root of the problem, and enable
MMU during relocation by doing what is already done during hibernate
restore.
>
> On Wed, Jul 31, 2019 at 11:38:49AM -0400, Pavel Tatashin wrote:
> > Changelog from previous RFC:
> > - Added trans_table support for both hibernate and kexec.
> > - Fixed performance issue, where enabling MMU did not yield the
> > actual performance improvement.
> >
> > Bug:
> > With the current state, this patch series works on kernels booted with EL1
> > mode, but for some reason, when elevated to EL2 mode reboot freezes in
> > both QEMU and on real hardware.
> >
> > The freeze happens in:
> >
> > arch/arm64/kernel/relocate_kernel.S
> > turn_on_mmu()
> >
> > Right after sctlr_el2 is written (MMU on EL2 is enabled)
> >
> > msr sctlr_el2, \tmp1
> >
> > I've been studying all the relevant control registers for EL2, but do not
> > see what might be causing this hang:
> >
> > MAIR_EL2 is set to be exactly the same as MAIR_EL1 0xbbff440c0400
> >
> > TCR_EL2 0x80843510
> > Enabled bits:
> > PS Physical Address Size. (0b100 44 bits, 16TB.)
> > SH0 Shareability 11 Inner Shareable
> > ORGN0 Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cach.
> > IRGN0 Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cach.
> > T0SZ 01 0000
> >
> > SCTLR_EL2 0x30e5183f
> > RES1 : Reserve ones
> > M : MMU enabled
> > A : Align check
> > C : Cacheability control
> > SA : SP Alignment check enable
> > IESB : Implicit Error Synchronization event
> > I : Instruction access Cacheability
> >
> > TTBR0_EL2 0x1b3069000 (address of trans_table)
> >
> > Any suggestion of what else might be missing that causes this freeze when
> > MMU is enabled in EL2?
> >
> > =====
>
> > Here is the current data from the real hardware:
> > (because of bug, I forced EL1 mode by setting el2_switch always to zero in
> > cpu_soft_restart()):
> >
> > For this experiment, the size of kernel plus initramfs is 25M. If initramfs
> > was larger, than the improvements would be even greater, as time spent in
> > relocation is proportional to the size of relocation.
> >
> > Previously:
> > kernel shutdown 0.022131328s
> > relocation 0.440510736s
> > kernel startup 0.294706768s
>
> In total this takes ~0.76s...
>
> >
> > Relocation was taking: 58.2% of reboot time
> >
> > Now:
> > kernel shutdown 0.032066576s
> > relocation 0.022158152s
> > kernel startup 0.296055880s
>
> ... and this takes ~0.35s
>
> So do we really need this complexity for a few blinks of an eye?
Yes, we have an extremely tight reboot budget, 0.35s is not an acceptable waste.
>
> Thanks,
> Mark.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Tatashin <pasha.tatashin@soleen.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Sasha Levin <sashal@kernel.org>,
Vladimir Murzin <vladimir.murzin@arm.com>,
Jonathan Corbet <corbet@lwn.net>,
Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Bhupesh Sharma <bhsharma@redhat.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
kexec mailing list <kexec@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
James Morris <jmorris@namei.org>,
James Morse <james.morse@arm.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
will@kernel.org, Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC v2 0/8] arm64: MMU enabled kexec relocation
Date: Wed, 31 Jul 2019 12:40:51 -0400 [thread overview]
Message-ID: <CA+CK2bAYUFBBGo-LHBK4UWRK1tpx3AZ4Z9NkDxiDK0UYEDozaQ@mail.gmail.com> (raw)
In-Reply-To: <20190731163258.GH39768@lakrids.cambridge.arm.com>
On Wed, Jul 31, 2019 at 12:33 PM Mark Rutland <mark.rutland@arm.com> wrote:
>
> Hi Pavel,
>
> Generally, the cover letter should state up-front what the goal is (or
> what problem you're trying to solve). It would be really helpful to have
> that so that we understand what you're trying to achieve, and why.
>
> Messing with the MMU is often fraught with danger (and very painful to
> debug, as you are now aware), and so far we've tried to minimize the
> number of places where we have to do so.
Hi Mark,
I understand, this is why I first went another route of solving this
problem: pre-reserving contiguous memory, and avoid relocation
entirely (the same as what happens during crash reboot). But, that
solution was not accepted because it introduces a change to the common
code to solve ARM specific problem. So, James Morse, and other
suggested that I take a look at the root of the problem, and enable
MMU during relocation by doing what is already done during hibernate
restore.
>
> On Wed, Jul 31, 2019 at 11:38:49AM -0400, Pavel Tatashin wrote:
> > Changelog from previous RFC:
> > - Added trans_table support for both hibernate and kexec.
> > - Fixed performance issue, where enabling MMU did not yield the
> > actual performance improvement.
> >
> > Bug:
> > With the current state, this patch series works on kernels booted with EL1
> > mode, but for some reason, when elevated to EL2 mode reboot freezes in
> > both QEMU and on real hardware.
> >
> > The freeze happens in:
> >
> > arch/arm64/kernel/relocate_kernel.S
> > turn_on_mmu()
> >
> > Right after sctlr_el2 is written (MMU on EL2 is enabled)
> >
> > msr sctlr_el2, \tmp1
> >
> > I've been studying all the relevant control registers for EL2, but do not
> > see what might be causing this hang:
> >
> > MAIR_EL2 is set to be exactly the same as MAIR_EL1 0xbbff440c0400
> >
> > TCR_EL2 0x80843510
> > Enabled bits:
> > PS Physical Address Size. (0b100 44 bits, 16TB.)
> > SH0 Shareability 11 Inner Shareable
> > ORGN0 Normal memory, Outer Write-Back Read-Allocate Write-Allocate Cach.
> > IRGN0 Normal memory, Inner Write-Back Read-Allocate Write-Allocate Cach.
> > T0SZ 01 0000
> >
> > SCTLR_EL2 0x30e5183f
> > RES1 : Reserve ones
> > M : MMU enabled
> > A : Align check
> > C : Cacheability control
> > SA : SP Alignment check enable
> > IESB : Implicit Error Synchronization event
> > I : Instruction access Cacheability
> >
> > TTBR0_EL2 0x1b3069000 (address of trans_table)
> >
> > Any suggestion of what else might be missing that causes this freeze when
> > MMU is enabled in EL2?
> >
> > =====
>
> > Here is the current data from the real hardware:
> > (because of bug, I forced EL1 mode by setting el2_switch always to zero in
> > cpu_soft_restart()):
> >
> > For this experiment, the size of kernel plus initramfs is 25M. If initramfs
> > was larger, than the improvements would be even greater, as time spent in
> > relocation is proportional to the size of relocation.
> >
> > Previously:
> > kernel shutdown 0.022131328s
> > relocation 0.440510736s
> > kernel startup 0.294706768s
>
> In total this takes ~0.76s...
>
> >
> > Relocation was taking: 58.2% of reboot time
> >
> > Now:
> > kernel shutdown 0.032066576s
> > relocation 0.022158152s
> > kernel startup 0.296055880s
>
> ... and this takes ~0.35s
>
> So do we really need this complexity for a few blinks of an eye?
Yes, we have an extremely tight reboot budget, 0.35s is not an acceptable waste.
>
> Thanks,
> Mark.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2019-07-31 16:41 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-31 15:38 [RFC v2 0/8] arm64: MMU enabled kexec relocation Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 1/8] kexec: quiet down kexec reboot Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 2/8] arm64, mm: transitional tables Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 3/8] arm64: hibernate: switch to transtional page tables Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 4/8] kexec: add machine_kexec_post_load() Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 5/8] arm64, kexec: move relocation function setup and clean up Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 6/8] arm64, kexec: add expandable argument to relocation function Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 7/8] arm64, kexec: configure transitional page table for kexec Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` [RFC v2 8/8] arm64, kexec: enable MMU during kexec relocation Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:38 ` Pavel Tatashin
2019-07-31 15:50 ` Mark Rutland
2019-07-31 15:50 ` Mark Rutland
2019-07-31 15:50 ` Mark Rutland
2019-07-31 16:01 ` Pavel Tatashin
2019-07-31 16:01 ` Pavel Tatashin
2019-07-31 16:01 ` Pavel Tatashin
2019-07-31 16:32 ` [RFC v2 0/8] arm64: MMU enabled " Mark Rutland
2019-07-31 16:32 ` Mark Rutland
2019-07-31 16:32 ` Mark Rutland
2019-07-31 16:40 ` Pavel Tatashin [this message]
2019-07-31 16:40 ` Pavel Tatashin
2019-07-31 16:40 ` Pavel Tatashin
2019-07-31 16:50 ` Mark Rutland
2019-07-31 16:50 ` Mark Rutland
2019-07-31 16:50 ` Mark Rutland
2019-07-31 17:04 ` Pavel Tatashin
2019-07-31 17:04 ` Pavel Tatashin
2019-07-31 17:04 ` Pavel Tatashin
2019-08-01 13:24 ` Pavel Tatashin
2019-08-01 13:24 ` Pavel Tatashin
2019-08-01 13:24 ` Pavel Tatashin
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=CA+CK2bAYUFBBGo-LHBK4UWRK1tpx3AZ4Z9NkDxiDK0UYEDozaQ@mail.gmail.com \
--to=pasha.tatashin@soleen.com \
--cc=bhsharma@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=ebiederm@xmission.com \
--cc=james.morse@arm.com \
--cc=jmorris@namei.org \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=sashal@kernel.org \
--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 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.