All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Fleming <matt@console-pimps.org>
To: dyoung@redhat.com
Cc: linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org,
	x86@kernel.org, mjg59@srcf.ucam.org, hpa@zytor.com,
	James.Bottomley@HansenPartnership.com, vgoyal@redhat.com,
	ebiederm@xmission.com, horms@verge.net.au,
	kexec@lists.infradead.org, bp@alien8.de
Subject: Re: [patch 5/7 v2] export efi runtime memory mapping to sysfs
Date: Wed, 13 Nov 2013 15:50:27 +0000	[thread overview]
Message-ID: <20131113155027.GC17248@console-pimps.org> (raw)
In-Reply-To: <20131105082718.185728964@dhcp-16-126.nay.redhat.com>

On Tue, 05 Nov, at 04:20:12PM, dyoung@redhat.com wrote:
> kexec kernel will need exactly same mapping for
> efi runtime memory ranges. Thus here export the
> runtime ranges mapping to sysfs, kexec-tools
> will assemble them and pass to 2nd kernel via
> setup_data.
> 
> Introducing a new directly /sys/firmware/efi/efi-runtime-map
> Just like /sys/firmware/memmap. Containing below attribute
> in each file of that directory:
> attribute  num_pages  phys_addr  type  virt_addr
> 
> It will not work for efi 32bit. Only x86_64 currently.
> 
> Signed-off-by: Dave Young <dyoung@redhat.com>
> ---
>  Documentation/ABI/testing/sysfs-efi-runtime-map |   45 ++++++
>  arch/x86/include/asm/efi.h                      |    3 
>  arch/x86/platform/efi/efi.c                     |   11 +
>  drivers/firmware/efi/Kconfig                    |   10 +
>  drivers/firmware/efi/Makefile                   |    1 
>  drivers/firmware/efi/efi-runtime-map.c          |  164 ++++++++++++++++++++++++
>  drivers/firmware/efi/efi.c                      |    3 
>  include/linux/efi.h                             |    6 
>  8 files changed, 242 insertions(+), 1 deletion(-)

[...]

> @@ -852,6 +855,14 @@ static void efi_map_regions(void **new_m
>  
>  		memcpy(*new_memmap + (*count * memmap.desc_size), md,
>  		       memmap.desc_size);
> +		if (md->type != EFI_BOOT_SERVICES_CODE &&
> +			md->type != EFI_BOOT_SERVICES_DATA) {
> +			efi_runtime_map = krealloc(efi_runtime_map,
> +					(nr_efi_runtime_map + 1) *
> +					sizeof(efi_memory_desc_t), GFP_KERNEL);
> +			*(efi_runtime_map + nr_efi_runtime_map) = *md;
> +			nr_efi_runtime_map++;
> +		}
>  		(*count)++;
>  	}

You really need to be using 'memmap.desc_size' here and not
sizeof(efi_memory_desc_t) as the two may differ. Also, you should be
checking for failure of krealloc() and using memcpy() instead of
directly dereferencing 'md'.

> --- linux-2.6.orig/drivers/firmware/efi/Makefile
> +++ linux-2.6/drivers/firmware/efi/Makefile
> @@ -4,3 +4,4 @@
>  obj-y					+= efi.o vars.o
>  obj-$(CONFIG_EFI_VARS)			+= efivars.o
>  obj-$(CONFIG_EFI_VARS_PSTORE)		+= efi-pstore.o
> +obj-$(CONFIG_EFI_RUNTIME_MAP)		+= efi-runtime-map.o
> --- /dev/null
> +++ linux-2.6/drivers/firmware/efi/efi-runtime-map.c

Small nit but I wouldn't bother prefixing the filename with "efi-",
since you can't build this file as a module.

> +/*
> + * These are default attributes that are added for every memmap entry.
> + */
> +static struct attribute *def_attrs[] = {
> +	&map_type_attr.attr,
> +	&map_phys_addr_attr.attr,
> +	&map_virt_addr_attr.attr,
> +	&map_num_pages_attr.attr,
> +	&map_attribute_attr.attr,
> +	NULL
> +};

If the UEFI spec ever releases an update for the memory descriptor
structure, and bumps 'memmap.desc_version', how are we going to signal
the incompatibility to legacy versions of kexec tools?

-- 
Matt Fleming, Intel Open Source Technology Center

WARNING: multiple messages have this Message-ID (diff)
From: Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
To: dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: mjg59-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org,
	linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	James.Bottomley-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org,
	horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org,
	bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org,
	ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
	hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
	vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [patch 5/7 v2] export efi runtime memory mapping to sysfs
Date: Wed, 13 Nov 2013 15:50:27 +0000	[thread overview]
Message-ID: <20131113155027.GC17248@console-pimps.org> (raw)
In-Reply-To: <20131105082718.185728964-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>

On Tue, 05 Nov, at 04:20:12PM, dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org wrote:
> kexec kernel will need exactly same mapping for
> efi runtime memory ranges. Thus here export the
> runtime ranges mapping to sysfs, kexec-tools
> will assemble them and pass to 2nd kernel via
> setup_data.
> 
> Introducing a new directly /sys/firmware/efi/efi-runtime-map
> Just like /sys/firmware/memmap. Containing below attribute
> in each file of that directory:
> attribute  num_pages  phys_addr  type  virt_addr
> 
> It will not work for efi 32bit. Only x86_64 currently.
> 
> Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
>  Documentation/ABI/testing/sysfs-efi-runtime-map |   45 ++++++
>  arch/x86/include/asm/efi.h                      |    3 
>  arch/x86/platform/efi/efi.c                     |   11 +
>  drivers/firmware/efi/Kconfig                    |   10 +
>  drivers/firmware/efi/Makefile                   |    1 
>  drivers/firmware/efi/efi-runtime-map.c          |  164 ++++++++++++++++++++++++
>  drivers/firmware/efi/efi.c                      |    3 
>  include/linux/efi.h                             |    6 
>  8 files changed, 242 insertions(+), 1 deletion(-)

[...]

> @@ -852,6 +855,14 @@ static void efi_map_regions(void **new_m
>  
>  		memcpy(*new_memmap + (*count * memmap.desc_size), md,
>  		       memmap.desc_size);
> +		if (md->type != EFI_BOOT_SERVICES_CODE &&
> +			md->type != EFI_BOOT_SERVICES_DATA) {
> +			efi_runtime_map = krealloc(efi_runtime_map,
> +					(nr_efi_runtime_map + 1) *
> +					sizeof(efi_memory_desc_t), GFP_KERNEL);
> +			*(efi_runtime_map + nr_efi_runtime_map) = *md;
> +			nr_efi_runtime_map++;
> +		}
>  		(*count)++;
>  	}

You really need to be using 'memmap.desc_size' here and not
sizeof(efi_memory_desc_t) as the two may differ. Also, you should be
checking for failure of krealloc() and using memcpy() instead of
directly dereferencing 'md'.

> --- linux-2.6.orig/drivers/firmware/efi/Makefile
> +++ linux-2.6/drivers/firmware/efi/Makefile
> @@ -4,3 +4,4 @@
>  obj-y					+= efi.o vars.o
>  obj-$(CONFIG_EFI_VARS)			+= efivars.o
>  obj-$(CONFIG_EFI_VARS_PSTORE)		+= efi-pstore.o
> +obj-$(CONFIG_EFI_RUNTIME_MAP)		+= efi-runtime-map.o
> --- /dev/null
> +++ linux-2.6/drivers/firmware/efi/efi-runtime-map.c

Small nit but I wouldn't bother prefixing the filename with "efi-",
since you can't build this file as a module.

> +/*
> + * These are default attributes that are added for every memmap entry.
> + */
> +static struct attribute *def_attrs[] = {
> +	&map_type_attr.attr,
> +	&map_phys_addr_attr.attr,
> +	&map_virt_addr_attr.attr,
> +	&map_num_pages_attr.attr,
> +	&map_attribute_attr.attr,
> +	NULL
> +};

If the UEFI spec ever releases an update for the memory descriptor
structure, and bumps 'memmap.desc_version', how are we going to signal
the incompatibility to legacy versions of kexec tools?

-- 
Matt Fleming, Intel Open Source Technology Center

WARNING: multiple messages have this Message-ID (diff)
From: Matt Fleming <matt@console-pimps.org>
To: dyoung@redhat.com
Cc: mjg59@srcf.ucam.org, linux-efi@vger.kernel.org, x86@kernel.org,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	James.Bottomley@HansenPartnership.com, horms@verge.net.au,
	bp@alien8.de, ebiederm@xmission.com, hpa@zytor.com,
	vgoyal@redhat.com
Subject: Re: [patch 5/7 v2] export efi runtime memory mapping to sysfs
Date: Wed, 13 Nov 2013 15:50:27 +0000	[thread overview]
Message-ID: <20131113155027.GC17248@console-pimps.org> (raw)
In-Reply-To: <20131105082718.185728964@dhcp-16-126.nay.redhat.com>

On Tue, 05 Nov, at 04:20:12PM, dyoung@redhat.com wrote:
> kexec kernel will need exactly same mapping for
> efi runtime memory ranges. Thus here export the
> runtime ranges mapping to sysfs, kexec-tools
> will assemble them and pass to 2nd kernel via
> setup_data.
> 
> Introducing a new directly /sys/firmware/efi/efi-runtime-map
> Just like /sys/firmware/memmap. Containing below attribute
> in each file of that directory:
> attribute  num_pages  phys_addr  type  virt_addr
> 
> It will not work for efi 32bit. Only x86_64 currently.
> 
> Signed-off-by: Dave Young <dyoung@redhat.com>
> ---
>  Documentation/ABI/testing/sysfs-efi-runtime-map |   45 ++++++
>  arch/x86/include/asm/efi.h                      |    3 
>  arch/x86/platform/efi/efi.c                     |   11 +
>  drivers/firmware/efi/Kconfig                    |   10 +
>  drivers/firmware/efi/Makefile                   |    1 
>  drivers/firmware/efi/efi-runtime-map.c          |  164 ++++++++++++++++++++++++
>  drivers/firmware/efi/efi.c                      |    3 
>  include/linux/efi.h                             |    6 
>  8 files changed, 242 insertions(+), 1 deletion(-)

[...]

> @@ -852,6 +855,14 @@ static void efi_map_regions(void **new_m
>  
>  		memcpy(*new_memmap + (*count * memmap.desc_size), md,
>  		       memmap.desc_size);
> +		if (md->type != EFI_BOOT_SERVICES_CODE &&
> +			md->type != EFI_BOOT_SERVICES_DATA) {
> +			efi_runtime_map = krealloc(efi_runtime_map,
> +					(nr_efi_runtime_map + 1) *
> +					sizeof(efi_memory_desc_t), GFP_KERNEL);
> +			*(efi_runtime_map + nr_efi_runtime_map) = *md;
> +			nr_efi_runtime_map++;
> +		}
>  		(*count)++;
>  	}

You really need to be using 'memmap.desc_size' here and not
sizeof(efi_memory_desc_t) as the two may differ. Also, you should be
checking for failure of krealloc() and using memcpy() instead of
directly dereferencing 'md'.

> --- linux-2.6.orig/drivers/firmware/efi/Makefile
> +++ linux-2.6/drivers/firmware/efi/Makefile
> @@ -4,3 +4,4 @@
>  obj-y					+= efi.o vars.o
>  obj-$(CONFIG_EFI_VARS)			+= efivars.o
>  obj-$(CONFIG_EFI_VARS_PSTORE)		+= efi-pstore.o
> +obj-$(CONFIG_EFI_RUNTIME_MAP)		+= efi-runtime-map.o
> --- /dev/null
> +++ linux-2.6/drivers/firmware/efi/efi-runtime-map.c

Small nit but I wouldn't bother prefixing the filename with "efi-",
since you can't build this file as a module.

> +/*
> + * These are default attributes that are added for every memmap entry.
> + */
> +static struct attribute *def_attrs[] = {
> +	&map_type_attr.attr,
> +	&map_phys_addr_attr.attr,
> +	&map_virt_addr_attr.attr,
> +	&map_num_pages_attr.attr,
> +	&map_attribute_attr.attr,
> +	NULL
> +};

If the UEFI spec ever releases an update for the memory descriptor
structure, and bumps 'memmap.desc_version', how are we going to signal
the incompatibility to legacy versions of kexec tools?

-- 
Matt Fleming, Intel Open Source Technology Center

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

  reply	other threads:[~2013-11-13 15:50 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-05  8:20 [patch 0/7 v2] kexec kernel efi runtime support dyoung
2013-11-05  8:20 ` dyoung
2013-11-05  8:20 ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-05  8:20 ` [patch 1/7 v2] Add function efi_remap_region for remapping to saved virt address dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-13 15:50   ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-14  1:38     ` Dave Young
2013-11-14  1:38       ` Dave Young
2013-11-14  1:38       ` Dave Young
2013-11-15 23:02   ` Toshi Kani
2013-11-15 23:02     ` Toshi Kani
2013-11-15 23:02     ` Toshi Kani
2013-11-18  2:09     ` Dave Young
2013-11-18  2:09       ` Dave Young
2013-11-18  2:09       ` Dave Young
2013-11-18  9:37       ` Dave Young
2013-11-18  9:37         ` Dave Young
2013-11-18  9:37         ` Dave Young
2013-11-05  8:20 ` [patch 2/7 v2] x86 efi: reserve boot service fix dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-15 23:10   ` Toshi Kani
2013-11-15 23:10     ` Toshi Kani
2013-11-15 23:10     ` Toshi Kani
2013-11-05  8:20 ` [patch 3/7 v2] Cleanup efi_enter_virtual_mode function dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-13 15:50   ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-14  1:39     ` Dave Young
2013-11-14  1:39       ` Dave Young
2013-11-14  1:39       ` Dave Young
2013-11-15 23:21   ` Toshi Kani
2013-11-15 23:21     ` Toshi Kani
2013-11-15 23:21     ` Toshi Kani
2013-11-18  2:08     ` Dave Young
2013-11-18  2:08       ` Dave Young
2013-11-18  2:08       ` Dave Young
2013-11-05  8:20 ` [patch 4/7 v2] export more efi table variable to sysfs dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-12  0:40   ` Greg KH
2013-11-12  0:40     ` Greg KH
2013-11-12  0:40     ` Greg KH
2013-11-12  8:19     ` Dave Young
2013-11-12  8:19       ` Dave Young
2013-11-12  8:19       ` Dave Young
2013-11-12  8:24       ` Dave Young
2013-11-12  8:24         ` Dave Young
2013-11-12  8:24         ` Dave Young
2013-11-12  8:31         ` Greg KH
2013-11-12  8:31           ` Greg KH
2013-11-12  8:31           ` Greg KH
2013-11-05  8:20 ` [patch 5/7 v2] export efi runtime memory mapping " dyoung
2013-11-05  8:20   ` dyoung
2013-11-13 15:50   ` Matt Fleming [this message]
2013-11-13 15:50     ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-14  1:50     ` Dave Young
2013-11-14  1:50       ` Dave Young
2013-11-14  1:50       ` Dave Young
2013-11-18  2:16       ` Dave Young
2013-11-18  2:16         ` Dave Young
2013-11-18  2:16         ` Dave Young
2013-11-19 12:18         ` Matt Fleming
2013-11-19 12:18           ` Matt Fleming
2013-11-19 12:18           ` Matt Fleming
2013-11-05  8:20 ` [patch 6/7 v2] passing kexec necessary efi data via setup_data dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-13 15:50   ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-14  1:52     ` Dave Young
2013-11-14  1:52       ` Dave Young
2013-11-14  1:52       ` Dave Young
2013-11-05  8:20 ` [patch 7/7 v2] x86: add xloadflags bit for efi runtime support on kexec dyoung
2013-11-05  8:20   ` dyoung
2013-11-05  8:20   ` dyoung-H+wXaHxf7aLQT0dZR+AlfA
2013-11-13 15:50   ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-13 15:50     ` Matt Fleming
2013-11-14  1:53     ` Dave Young
2013-11-14  1:53       ` Dave Young
2013-11-14  1:53       ` Dave Young
2013-11-13 16:20   ` H. Peter Anvin
2013-11-13 16:20     ` H. Peter Anvin
2013-11-13 16:20     ` H. Peter Anvin
2013-11-14  1:36     ` Dave Young
2013-11-14  1:36       ` Dave Young
2013-11-14  1:36       ` Dave Young
2013-11-05 14:40 ` [patch 0/7 v2] kexec kernel efi runtime support Borislav Petkov
2013-11-05 14:40   ` Borislav Petkov
2013-11-05 14:40   ` Borislav Petkov
2013-11-08 14:31 ` Matt Fleming
2013-11-08 14:31   ` Matt Fleming
2013-11-08 14:31   ` Matt Fleming
2013-11-09  3:57   ` Dave Young
2013-11-09  3:57     ` Dave Young
2013-11-09  3:57     ` Dave Young
2013-11-09  5:01     ` H. Peter Anvin
2013-11-09  5:01       ` H. Peter Anvin
2013-11-09  5:01       ` H. Peter Anvin
2013-11-11  2:13       ` Dave Young
2013-11-11  2:13         ` Dave Young
2013-11-11  2:13         ` Dave Young
2013-11-11  2:21         ` H. Peter Anvin
2013-11-11  2:21           ` H. Peter Anvin
2013-11-11  2:21           ` H. Peter Anvin
2013-11-11  2:47           ` Dave Young
2013-11-11  2:47             ` Dave Young
2013-11-11  2:47             ` Dave Young

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=20131113155027.GC17248@console-pimps.org \
    --to=matt@console-pimps.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=bp@alien8.de \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=horms@verge.net.au \
    --cc=hpa@zytor.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=vgoyal@redhat.com \
    --cc=x86@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.