linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
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

  parent reply	other threads:[~2014-10-10  5:30 UTC|newest]

Thread overview: 65+ 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 ` [PATCH 2/7] arm64: Convert hcalls to use ISS field Geoff Levand
2014-10-03 10:51   ` Mark Rutland
2014-10-03 21:56     ` Geoff Levand
2014-10-06 10:13       ` Mark Rutland
2014-09-25  0:23 ` [PATCH 3/7] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2014-09-25  0:23 ` [PATCH 4/7] arm64: Add EL2 switch to soft_restart Geoff Levand
2014-09-25  0:23 ` [PATCH 1/7] arm64/kvm: Fix assembler compatibility of macros Geoff Levand
2014-10-03 10:26   ` Mark Rutland
2014-10-03 22:27     ` Geoff Levand
2014-10-06 10:10       ` Mark Rutland
2014-09-25  0:23 ` [PATCH 5/7] arm64: Move proc-macros.S to include/asm Geoff Levand
2014-09-25  0:23 ` [PATCH 6/7] arm64/kexec: Add core kexec support Geoff Levand
2014-09-25 18:28   ` Vivek Goyal
2014-09-25 19:02     ` Geoff Levand
2014-09-25 19:08       ` Vivek Goyal
2014-09-30 18:18   ` Vivek Goyal
2014-09-30 19:54     ` Geoff Levand
2014-10-01 14:56       ` Vivek Goyal
2014-10-03 18:35         ` Geoff Levand
2014-10-07 13:44           ` Vivek Goyal
2014-10-07 18:42             ` Geoff Levand
2014-10-07 18:45               ` Vivek Goyal
2014-10-07 20:12                 ` Geoff Levand
2014-10-07 20:22                   ` Vivek Goyal
2014-10-09 22:26                     ` Geoff Levand
2014-10-23 23:08                       ` Geoff Levand
2014-10-08  9:28                   ` Mark Rutland
2014-10-07 18:48               ` Vivek Goyal
2014-10-01 16:16       ` Mark Rutland
2014-10-01 17:36         ` Vivek Goyal
2014-10-01 17:56           ` Mark Rutland
2014-10-01 17:47         ` Vivek Goyal
2014-10-01 18:03           ` Mark Rutland
2014-10-01 18:09             ` Vivek Goyal
2014-10-01 18:19               ` Mark Rutland
2014-10-01 18:31                 ` Vivek Goyal
2014-10-01 19:22             ` Vivek Goyal
2014-10-02 10:26               ` Mark Rutland
2014-10-02 13:54                 ` Vivek Goyal
2014-10-02 16:53                   ` Mark Rutland
2014-09-30 23:59   ` [PATCH V2 " Geoff Levand
2014-09-25  0:23 ` [PATCH 7/7] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2014-09-30 20:29 ` [PATCH 0/7] arm64 kexec kernel patches V3 Vivek Goyal
2014-09-30 21:27   ` Geoff Levand
2014-10-02 19:08     ` Vivek Goyal
2014-10-02 22:59       ` Geoff Levand
2014-10-07 13:43         ` Vivek Goyal
2014-10-07 14:06           ` Mark Rutland
2014-10-01 15:19 ` Vivek Goyal
2014-10-03 21:16   ` Geoff Levand
2014-10-07 13:40     ` Vivek Goyal
2014-10-07 18:29       ` Geoff Levand
2014-10-08  9:42       ` Mark Rutland
2014-10-09  3:21         ` Dave Young
2014-10-09 10:09           ` Mark Rutland
2014-10-09 10:19             ` Ard Biesheuvel
2014-10-10  5:30             ` Dave Young [this message]
2014-10-07 15:22     ` Mark Rutland
2014-10-07 18:28       ` Geoff Levand
2014-10-07 18:09 ` Vivek Goyal
2014-10-07 20:07   ` Geoff Levand
2014-10-08  9:52     ` Leif Lindholm
2014-10-08 10:07       ` Mark Rutland
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=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).