From: Dave Young <dyoung@redhat.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"ard.biesheuvel@linaro.org" <ard.biesheuvel@linaro.org>,
Geoff Levand <geoff@infradead.org>,
Catalin Marinas <Catalin.Marinas@arm.com>,
Will Deacon <Will.Deacon@arm.com>,
"leif.lindholm@linaro.org" <leif.lindholm@linaro.org>,
"roy.franz@linaro.org" <roy.franz@linaro.org>,
Marc Zyngier <Marc.Zyngier@arm.com>,
Vivek Goyal <vgoyal@redhat.com>,
"msalter@redhat.com" <msalter@redhat.com>,
"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
"christoffer.dall@linaro.org" <christoffer.dall@linaro.org>
Subject: Re: [PATCH 0/7] arm64 kexec kernel patches V3
Date: Fri, 10 Oct 2014 13:30:52 +0800 [thread overview]
Message-ID: <20141010053052.GA1981@darkstar.nay.redhat.com> (raw)
In-Reply-To: <20141009100919.GF3869@leverpostej>
On 10/09/14 at 11:09am, Mark Rutland wrote:
> On Thu, Oct 09, 2014 at 04:21:30AM +0100, Dave Young wrote:
> > On 10/08/14 at 10:42am, Mark Rutland wrote:
> > > [Cc'ing the arm efi guys]
> > >
> > > On Tue, Oct 07, 2014 at 02:40:06PM +0100, Vivek Goyal wrote:
> > > > On Fri, Oct 03, 2014 at 02:16:11PM -0700, Geoff Levand wrote:
> > > > > Hi,
> > > > >
> > > > > On Wed, 2014-10-01 at 11:19 -0400, Vivek Goyal wrote:
> > > > > > On Thu, Sep 25, 2014 at 12:23:26AM +0000, Geoff Levand wrote:
> > > > > > > Hi All,
> > > > > > >
> > > > > > > This series adds the core support for kexec re-boots on arm64. I have tested
> > > > > > > with the ARM VE fast model using various kernel config options for both the
> > > > > > > first and second stage kernels.
> > > > > >
> > > > > > Does this patch series work with kexec on UEFI machines?
> > > > >
> > > > > I have not done much more than some simple re-boot tests using the
> > > > > base model (FVP_Base_AEMv8A-AEMv8A) and the Linaro 14.08 efi build,
> > > > > but yes, it should work.
> > > >
> > > > [CC Dave Young ]
> > > >
> > > > I have not looked at the user space patches but are you preparing efi
> > > > setup data and passing all the runtime map information to second kernel.
> > > >
> > > > I am hoping on arm64 we have the CONFIG_EFI_RUNTIME_MAP=y and it works
> > > > well.
> > >
> > > From a quick look at mainline that config option just gates exposing
> > > that info under sysfs, and we never call efi_runtime_map_setup on arm64.
> > > I gues the x86 kexec tool parses that and sets up some data structure?
> > >
> > > For arm64 we have runtime map information in the initial DTB, and this
> > > should have been copied into the DTB we pass to the second kernel. See
> > > Documentation/arm/uefi.txt and drivers/firmware/efi/libstub/fdt.c.
> > >
> > > Is that sufficient?
> >
> > That will be sufficient for runtime maps, but several phys addresses need to be
> > saved: /sys/firmware/efi/{fw_vendor,runtime,config_table}
> >
> > From uefi spec these addresses are updated to virtual addresses after entering
> > virtual mode.
>
> Ouch. That sounds painful.
>
> I'd prefer to not have to duplicate these in the DTB if we can. Given we
> should have the memmmap with the virtual<->physical mappings, could we
> not do a lookup there before early dereferences if we happen to already
> be in virtual mode?
I do not have an idea to skip defeference these variables, see below usage:
arch/arm64/kernel/efi.c, uefi_init():
c16 = early_memremap(efi.systab->fw_vendor,
sizeof(vendor));
if (c16) {
for (i = 0; i < (int) sizeof(vendor) - 1 && *c16; ++i)
vendor[i] = c16[i];
vendor[i] = '\0';
}
drivers/firmware/efi/efi.c, efi_config_init():
config_tables = early_memremap(efi.systab->tables,
efi.systab->nr_tables * sz)
It's strange to me that in arm64 code systab->runtime is used directly without
ioremapping. but in x86 code, we do below:
arch/x86/platform/efi/efi.c, efi_runtime_init64():
runtime = early_ioremap((unsigned long)efi.systab->runtime,
sizeof(efi_runtime_services_64_t));
for arm64 we have below:
efi.systab = (__force void *)efi_lookup_mapped_addr(efi_system_table);
if (efi.systab)
set_bit(EFI_SYSTEM_TABLES, &efi.flags);
[snip]
/* Call SetVirtualAddressMap with the physical address of the map */
runtime = efi.systab->runtime;
efi.set_virtual_address_map = runtime->set_virtual_address_map;
efi_lookup_mapped_addr is only valid after set_virtual_address_mapp callback, so
it's questionable to use it above, the runtime should be physical address and should
be ioremapped as what's in x86 code.
>
> > Though it should work without the runtime map exporting to sysfs, It's not bad
> > to export them, it's good to have for debugging purpose and it will be consistant
> > across different arches.
>
> Exporting the sysfs entries makes sense for debug, but I'd very much
> prefer that it were not our default solution for passing the maps to the
> next kernel.
Agreed.
Thanks
Dave
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: dyoung@redhat.com (Dave Young)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/7] arm64 kexec kernel patches V3
Date: Fri, 10 Oct 2014 13:30:52 +0800 [thread overview]
Message-ID: <20141010053052.GA1981@darkstar.nay.redhat.com> (raw)
In-Reply-To: <20141009100919.GF3869@leverpostej>
On 10/09/14 at 11:09am, Mark Rutland wrote:
> On Thu, Oct 09, 2014 at 04:21:30AM +0100, Dave Young wrote:
> > On 10/08/14 at 10:42am, Mark Rutland wrote:
> > > [Cc'ing the arm efi guys]
> > >
> > > On Tue, Oct 07, 2014 at 02:40:06PM +0100, Vivek Goyal wrote:
> > > > On Fri, Oct 03, 2014 at 02:16:11PM -0700, Geoff Levand wrote:
> > > > > Hi,
> > > > >
> > > > > On Wed, 2014-10-01 at 11:19 -0400, Vivek Goyal wrote:
> > > > > > On Thu, Sep 25, 2014 at 12:23:26AM +0000, Geoff Levand wrote:
> > > > > > > Hi All,
> > > > > > >
> > > > > > > This series adds the core support for kexec re-boots on arm64. I have tested
> > > > > > > with the ARM VE fast model using various kernel config options for both the
> > > > > > > first and second stage kernels.
> > > > > >
> > > > > > Does this patch series work with kexec on UEFI machines?
> > > > >
> > > > > I have not done much more than some simple re-boot tests using the
> > > > > base model (FVP_Base_AEMv8A-AEMv8A) and the Linaro 14.08 efi build,
> > > > > but yes, it should work.
> > > >
> > > > [CC Dave Young ]
> > > >
> > > > I have not looked at the user space patches but are you preparing efi
> > > > setup data and passing all the runtime map information to second kernel.
> > > >
> > > > I am hoping on arm64 we have the CONFIG_EFI_RUNTIME_MAP=y and it works
> > > > well.
> > >
> > > From a quick look at mainline that config option just gates exposing
> > > that info under sysfs, and we never call efi_runtime_map_setup on arm64.
> > > I gues the x86 kexec tool parses that and sets up some data structure?
> > >
> > > For arm64 we have runtime map information in the initial DTB, and this
> > > should have been copied into the DTB we pass to the second kernel. See
> > > Documentation/arm/uefi.txt and drivers/firmware/efi/libstub/fdt.c.
> > >
> > > Is that sufficient?
> >
> > That will be sufficient for runtime maps, but several phys addresses need to be
> > saved: /sys/firmware/efi/{fw_vendor,runtime,config_table}
> >
> > From uefi spec these addresses are updated to virtual addresses after entering
> > virtual mode.
>
> Ouch. That sounds painful.
>
> I'd prefer to not have to duplicate these in the DTB if we can. Given we
> should have the memmmap with the virtual<->physical mappings, could we
> not do a lookup there before early dereferences if we happen to already
> be in virtual mode?
I do not have an idea to skip defeference these variables, see below usage:
arch/arm64/kernel/efi.c, uefi_init():
c16 = early_memremap(efi.systab->fw_vendor,
sizeof(vendor));
if (c16) {
for (i = 0; i < (int) sizeof(vendor) - 1 && *c16; ++i)
vendor[i] = c16[i];
vendor[i] = '\0';
}
drivers/firmware/efi/efi.c, efi_config_init():
config_tables = early_memremap(efi.systab->tables,
efi.systab->nr_tables * sz)
It's strange to me that in arm64 code systab->runtime is used directly without
ioremapping. but in x86 code, we do below:
arch/x86/platform/efi/efi.c, efi_runtime_init64():
runtime = early_ioremap((unsigned long)efi.systab->runtime,
sizeof(efi_runtime_services_64_t));
for arm64 we have below:
efi.systab = (__force void *)efi_lookup_mapped_addr(efi_system_table);
if (efi.systab)
set_bit(EFI_SYSTEM_TABLES, &efi.flags);
[snip]
/* Call SetVirtualAddressMap with the physical address of the map */
runtime = efi.systab->runtime;
efi.set_virtual_address_map = runtime->set_virtual_address_map;
efi_lookup_mapped_addr is only valid after set_virtual_address_mapp callback, so
it's questionable to use it above, the runtime should be physical address and should
be ioremapped as what's in x86 code.
>
> > Though it should work without the runtime map exporting to sysfs, It's not bad
> > to export them, it's good to have for debugging purpose and it will be consistant
> > across different arches.
>
> Exporting the sysfs entries makes sense for debug, but I'd very much
> prefer that it were not our default solution for passing the maps to the
> next kernel.
Agreed.
Thanks
Dave
next prev parent reply other threads:[~2014-10-10 5:30 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-25 0:23 [PATCH 0/7] arm64 kexec kernel patches V3 Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-25 0:23 ` [PATCH 2/7] arm64: Convert hcalls to use ISS field Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-10-03 10:51 ` Mark Rutland
2014-10-03 10:51 ` Mark Rutland
2014-10-03 21:56 ` Geoff Levand
2014-10-03 21:56 ` Geoff Levand
2014-10-06 10:13 ` Mark Rutland
2014-10-06 10:13 ` Mark Rutland
2014-09-25 0:23 ` [PATCH 4/7] arm64: Add EL2 switch to soft_restart Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-25 0:23 ` [PATCH 3/7] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-25 0:23 ` [PATCH 1/7] arm64/kvm: Fix assembler compatibility of macros Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-10-03 10:26 ` Mark Rutland
2014-10-03 10:26 ` Mark Rutland
2014-10-03 22:27 ` Geoff Levand
2014-10-03 22:27 ` Geoff Levand
2014-10-06 10:10 ` Mark Rutland
2014-10-06 10:10 ` Mark Rutland
2014-09-25 0:23 ` [PATCH 7/7] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-25 0:23 ` [PATCH 6/7] arm64/kexec: Add core kexec support Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-25 18:28 ` Vivek Goyal
2014-09-25 18:28 ` Vivek Goyal
2014-09-25 19:02 ` Geoff Levand
2014-09-25 19:02 ` Geoff Levand
2014-09-25 19:08 ` Vivek Goyal
2014-09-25 19:08 ` Vivek Goyal
2014-09-30 18:18 ` Vivek Goyal
2014-09-30 18:18 ` Vivek Goyal
2014-09-30 19:54 ` Geoff Levand
2014-09-30 19:54 ` Geoff Levand
2014-10-01 14:56 ` Vivek Goyal
2014-10-01 14:56 ` Vivek Goyal
2014-10-03 18:35 ` Geoff Levand
2014-10-03 18:35 ` Geoff Levand
2014-10-07 13:44 ` Vivek Goyal
2014-10-07 13:44 ` Vivek Goyal
2014-10-07 18:42 ` Geoff Levand
2014-10-07 18:42 ` Geoff Levand
2014-10-07 18:45 ` Vivek Goyal
2014-10-07 18:45 ` Vivek Goyal
2014-10-07 20:12 ` Geoff Levand
2014-10-07 20:12 ` Geoff Levand
2014-10-07 20:22 ` Vivek Goyal
2014-10-07 20:22 ` Vivek Goyal
2014-10-09 22:26 ` Geoff Levand
2014-10-09 22:26 ` Geoff Levand
2014-10-23 23:08 ` Geoff Levand
2014-10-23 23:08 ` Geoff Levand
2014-10-08 9:28 ` Mark Rutland
2014-10-08 9:28 ` Mark Rutland
2014-10-07 18:48 ` Vivek Goyal
2014-10-07 18:48 ` Vivek Goyal
2014-10-01 16:16 ` Mark Rutland
2014-10-01 16:16 ` Mark Rutland
2014-10-01 17:36 ` Vivek Goyal
2014-10-01 17:36 ` Vivek Goyal
2014-10-01 17:56 ` Mark Rutland
2014-10-01 17:56 ` Mark Rutland
2014-10-01 17:47 ` Vivek Goyal
2014-10-01 17:47 ` Vivek Goyal
2014-10-01 18:03 ` Mark Rutland
2014-10-01 18:03 ` Mark Rutland
2014-10-01 18:09 ` Vivek Goyal
2014-10-01 18:09 ` Vivek Goyal
2014-10-01 18:19 ` Mark Rutland
2014-10-01 18:19 ` Mark Rutland
2014-10-01 18:31 ` Vivek Goyal
2014-10-01 18:31 ` Vivek Goyal
2014-10-01 19:22 ` Vivek Goyal
2014-10-01 19:22 ` Vivek Goyal
2014-10-02 10:26 ` Mark Rutland
2014-10-02 10:26 ` Mark Rutland
2014-10-02 13:54 ` Vivek Goyal
2014-10-02 13:54 ` Vivek Goyal
2014-10-02 16:53 ` Mark Rutland
2014-10-02 16:53 ` Mark Rutland
2014-09-30 23:59 ` [PATCH V2 " Geoff Levand
2014-09-30 23:59 ` Geoff Levand
2014-09-25 0:23 ` [PATCH 5/7] arm64: Move proc-macros.S to include/asm Geoff Levand
2014-09-25 0:23 ` Geoff Levand
2014-09-30 20:29 ` [PATCH 0/7] arm64 kexec kernel patches V3 Vivek Goyal
2014-09-30 20:29 ` Vivek Goyal
2014-09-30 21:27 ` Geoff Levand
2014-09-30 21:27 ` Geoff Levand
2014-10-02 19:08 ` Vivek Goyal
2014-10-02 19:08 ` Vivek Goyal
2014-10-02 22:59 ` Geoff Levand
2014-10-02 22:59 ` Geoff Levand
2014-10-07 13:43 ` Vivek Goyal
2014-10-07 13:43 ` Vivek Goyal
2014-10-07 14:06 ` Mark Rutland
2014-10-07 14:06 ` Mark Rutland
2014-10-01 15:19 ` Vivek Goyal
2014-10-01 15:19 ` Vivek Goyal
2014-10-03 21:16 ` Geoff Levand
2014-10-03 21:16 ` Geoff Levand
2014-10-07 13:40 ` Vivek Goyal
2014-10-07 13:40 ` Vivek Goyal
2014-10-07 18:29 ` Geoff Levand
2014-10-07 18:29 ` Geoff Levand
2014-10-08 9:42 ` Mark Rutland
2014-10-08 9:42 ` Mark Rutland
2014-10-09 3:21 ` Dave Young
2014-10-09 3:21 ` Dave Young
2014-10-09 10:09 ` Mark Rutland
2014-10-09 10:09 ` Mark Rutland
2014-10-09 10:19 ` Ard Biesheuvel
2014-10-09 10:19 ` Ard Biesheuvel
2014-10-10 5:30 ` Dave Young [this message]
2014-10-10 5:30 ` Dave Young
2014-10-07 15:22 ` Mark Rutland
2014-10-07 15:22 ` Mark Rutland
2014-10-07 18:28 ` Geoff Levand
2014-10-07 18:28 ` Geoff Levand
2014-10-07 18:09 ` Vivek Goyal
2014-10-07 18:09 ` Vivek Goyal
2014-10-07 20:07 ` Geoff Levand
2014-10-07 20:07 ` Geoff Levand
2014-10-08 9:52 ` Leif Lindholm
2014-10-08 9:52 ` Leif Lindholm
2014-10-08 10:07 ` Mark Rutland
2014-10-08 10:07 ` Mark Rutland
2014-10-09 9:22 ` Will Deacon
2014-10-09 9:22 ` Will Deacon
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=20141010053052.GA1981@darkstar.nay.redhat.com \
--to=dyoung@redhat.com \
--cc=Catalin.Marinas@arm.com \
--cc=Marc.Zyngier@arm.com \
--cc=Will.Deacon@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=christoffer.dall@linaro.org \
--cc=geoff@infradead.org \
--cc=kexec@lists.infradead.org \
--cc=leif.lindholm@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=msalter@redhat.com \
--cc=roy.franz@linaro.org \
--cc=vgoyal@redhat.com \
/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.