All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Geoff Levand <geoff@infradead.org>,
	"grant.likely@linaro.org" <grant.likely@linaro.org>
Cc: Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Marc Zyngier <Marc.Zyngier@arm.com>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	Will Deacon <Will.Deacon@arm.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"christoffer.dall@linaro.org" <christoffer.dall@linaro.org>
Subject: Re: [PATCH 05/10] arm64: Convert dts to use reserved-memory nodes
Date: Fri, 24 Oct 2014 11:51:11 +0100	[thread overview]
Message-ID: <20141024105111.GD24265@leverpostej> (raw)
In-Reply-To: <411296ab915959b862923d827e730a1db2ff9b4e.1414099246.git.geoff@infradead.org>

On Fri, Oct 24, 2014 at 12:10:58AM +0100, Geoff Levand wrote:
> Device tree regions described by /memreserve/ entries are not available in
> /proc/device-tree, and hence are not available to user space utilities that use
> /proc/device-tree.  In order for these regions to be available, convert any
> arm64 DTS files using /memreserve/ entries to use reserved-memory nodes.

The limitation here is in the kernel (and a partially in userspace), so
modifying the dts files is a workaround rather than a fix.

It's perfectly valid for people to remain using /memreserve/, so this
isn't sufficient. There are also existing DTBs using /memreserve/ which
we can't rely on being modified to use reserved-memory.

I think we need to expose memreserves to userspace somehow, potentially
along with other DTB header fields. Grant, ideas?

Are other architectures not affected by this limitation?

> This change is required for kexec re-boot to work properly when a user does not
> specify a second stage DTB via the kexec --dtb option.  When the --dtb option is
> not specified kexec will prepare the second stage DTB using data from
> /proc/device-tree.
> 
> Signed-off-by: Geoff Levand <geoff@infradead.org>
> ---
>  arch/arm64/boot/dts/foundation-v8.dts  | 13 +++++++++++--
>  arch/arm64/boot/dts/rtsm_ve-aemv8a.dts | 13 +++++++++++--
>  2 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/foundation-v8.dts b/arch/arm64/boot/dts/foundation-v8.dts
> index 4a06090..2b76c2d 100644
> --- a/arch/arm64/boot/dts/foundation-v8.dts
> +++ b/arch/arm64/boot/dts/foundation-v8.dts
> @@ -6,8 +6,6 @@
>  
>  /dts-v1/;
>  
> -/memreserve/ 0x80000000 0x00010000;
> -
>  / {
>  	model = "Foundation-v8A";
>  	compatible = "arm,foundation-aarch64", "arm,vexpress";
> @@ -64,6 +62,17 @@
>  		      <0x00000008 0x80000000 0 0x80000000>;
>  	};
>  
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		firmware-memory@0x80000000 {
> +			no-map;
> +			reg = <0x0 0x80000000 0x0 0x00010000>;
> +		};
> +	};
> +

For the spin-table code at present we currently permit cacheable
mappings (that's part of the definition of /memreserve/), so it's not
strictly necessary to have no-map. Until recently we accessed the
cpu-release-addr through a cacheable mapping, and I don't know what
other spin-table users (e.g. Xen) do.

Linux should be able to handle this from now on, however.

Thanks,
Mark.

>  	gic: interrupt-controller@2c001000 {
>  		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
>  		#interrupt-cells = <3>;
> diff --git a/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts b/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> index 572005e..0f80807 100644
> --- a/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> +++ b/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> @@ -9,8 +9,6 @@
>  
>  /dts-v1/;
>  
> -/memreserve/ 0x80000000 0x00010000;
> -
>  / {
>  	model = "RTSM_VE_AEMv8A";
>  	compatible = "arm,rtsm_ve,aemv8a", "arm,vexpress";
> @@ -67,6 +65,17 @@
>  		      <0x00000008 0x80000000 0 0x80000000>;
>  	};
>  
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		firmware-memory@0x80000000 {
> +			no-map;
> +			reg = <0x0 0x80000000 0x0 0x00010000>;
> +		};
> +	};
> +
>  	gic: interrupt-controller@2c001000 {
>  		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
>  		#interrupt-cells = <3>;
> -- 
> 1.9.1
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

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

WARNING: multiple messages have this Message-ID (diff)
From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/10] arm64: Convert dts to use reserved-memory nodes
Date: Fri, 24 Oct 2014 11:51:11 +0100	[thread overview]
Message-ID: <20141024105111.GD24265@leverpostej> (raw)
In-Reply-To: <411296ab915959b862923d827e730a1db2ff9b4e.1414099246.git.geoff@infradead.org>

On Fri, Oct 24, 2014 at 12:10:58AM +0100, Geoff Levand wrote:
> Device tree regions described by /memreserve/ entries are not available in
> /proc/device-tree, and hence are not available to user space utilities that use
> /proc/device-tree.  In order for these regions to be available, convert any
> arm64 DTS files using /memreserve/ entries to use reserved-memory nodes.

The limitation here is in the kernel (and a partially in userspace), so
modifying the dts files is a workaround rather than a fix.

It's perfectly valid for people to remain using /memreserve/, so this
isn't sufficient. There are also existing DTBs using /memreserve/ which
we can't rely on being modified to use reserved-memory.

I think we need to expose memreserves to userspace somehow, potentially
along with other DTB header fields. Grant, ideas?

Are other architectures not affected by this limitation?

> This change is required for kexec re-boot to work properly when a user does not
> specify a second stage DTB via the kexec --dtb option.  When the --dtb option is
> not specified kexec will prepare the second stage DTB using data from
> /proc/device-tree.
> 
> Signed-off-by: Geoff Levand <geoff@infradead.org>
> ---
>  arch/arm64/boot/dts/foundation-v8.dts  | 13 +++++++++++--
>  arch/arm64/boot/dts/rtsm_ve-aemv8a.dts | 13 +++++++++++--
>  2 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/foundation-v8.dts b/arch/arm64/boot/dts/foundation-v8.dts
> index 4a06090..2b76c2d 100644
> --- a/arch/arm64/boot/dts/foundation-v8.dts
> +++ b/arch/arm64/boot/dts/foundation-v8.dts
> @@ -6,8 +6,6 @@
>  
>  /dts-v1/;
>  
> -/memreserve/ 0x80000000 0x00010000;
> -
>  / {
>  	model = "Foundation-v8A";
>  	compatible = "arm,foundation-aarch64", "arm,vexpress";
> @@ -64,6 +62,17 @@
>  		      <0x00000008 0x80000000 0 0x80000000>;
>  	};
>  
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		firmware-memory at 0x80000000 {
> +			no-map;
> +			reg = <0x0 0x80000000 0x0 0x00010000>;
> +		};
> +	};
> +

For the spin-table code at present we currently permit cacheable
mappings (that's part of the definition of /memreserve/), so it's not
strictly necessary to have no-map. Until recently we accessed the
cpu-release-addr through a cacheable mapping, and I don't know what
other spin-table users (e.g. Xen) do.

Linux should be able to handle this from now on, however.

Thanks,
Mark.

>  	gic: interrupt-controller at 2c001000 {
>  		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
>  		#interrupt-cells = <3>;
> diff --git a/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts b/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> index 572005e..0f80807 100644
> --- a/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> +++ b/arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
> @@ -9,8 +9,6 @@
>  
>  /dts-v1/;
>  
> -/memreserve/ 0x80000000 0x00010000;
> -
>  / {
>  	model = "RTSM_VE_AEMv8A";
>  	compatible = "arm,rtsm_ve,aemv8a", "arm,vexpress";
> @@ -67,6 +65,17 @@
>  		      <0x00000008 0x80000000 0 0x80000000>;
>  	};
>  
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		firmware-memory at 0x80000000 {
> +			no-map;
> +			reg = <0x0 0x80000000 0x0 0x00010000>;
> +		};
> +	};
> +
>  	gic: interrupt-controller at 2c001000 {
>  		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
>  		#interrupt-cells = <3>;
> -- 
> 1.9.1
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

  reply	other threads:[~2014-10-24 10:51 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-23 23:10 [PATCH 00/10] arm64 kexec kernel patches V5 Geoff Levand
2014-10-23 23:10 ` Geoff Levand
2014-10-23 23:10 ` [PATCH 05/10] arm64: Convert dts to use reserved-memory nodes Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24 10:51   ` Mark Rutland [this message]
2014-10-24 10:51     ` Mark Rutland
2014-10-24 10:59     ` Grant Likely
2014-10-24 10:59       ` Grant Likely
2014-10-24 12:27       ` Mark Rutland
2014-10-24 12:27         ` Mark Rutland
2014-10-24 14:45         ` Grant Likely
2014-10-24 14:45           ` Grant Likely
2014-10-31 23:44         ` Geoff Levand
2014-10-31 23:44           ` Geoff Levand
2014-11-03 20:02           ` Mark Rutland
2014-11-03 20:02             ` Mark Rutland
2014-11-03 22:26           ` Rob Herring
2014-11-03 22:26             ` Rob Herring
2014-11-04 11:35             ` Mark Rutland
2014-11-04 11:35               ` Mark Rutland
2014-11-04 11:37             ` Grant Likely
2014-11-04 11:37               ` Grant Likely
2014-10-23 23:10 ` [PATCH 03/10] arm64: Add new hcall HVC_CALL_FUNC Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-23 23:10 ` [PATCH 08/10] arm64/kexec: Add core kexec support Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24 10:28   ` Mark Rutland
2014-10-24 10:28     ` Mark Rutland
2014-11-13  2:19     ` Geoff Levand
2014-11-13  2:19       ` Geoff Levand
2014-11-17 16:38       ` Mark Rutland
2014-11-17 16:38         ` Mark Rutland
2014-11-17 20:20         ` Geoff Levand
2014-11-17 20:20           ` Geoff Levand
2014-11-07 11:01   ` Arun Chandran
2014-11-07 11:01     ` Arun Chandran
2014-11-12 21:54     ` Geoff Levand
2014-11-13  9:52       ` Arun Chandran
2014-11-17  3:52       ` Dave Young
2014-10-23 23:10 ` [PATCH 07/10] arm64: Move proc-macros.S to include/asm Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-23 23:10 ` [PATCH 06/10] arm64: Update booting.txt to reserved-memory nodes Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24 10:54   ` Mark Rutland
2014-10-24 10:54     ` Mark Rutland
2014-10-24 11:04     ` Grant Likely
2014-10-24 11:04       ` Grant Likely
2014-10-24 12:18       ` Mark Rutland
2014-10-24 12:18         ` Mark Rutland
2014-10-24 13:54         ` Grant Likely
2014-10-24 13:54           ` Grant Likely
2014-10-24 14:10           ` Mark Rutland
2014-10-24 14:10             ` Mark Rutland
2014-10-24 14:47             ` Grant Likely
2014-10-24 14:47               ` Grant Likely
2014-10-23 23:10 ` [PATCH 02/10] arm64: Convert hcalls to use ISS field Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-23 23:10 ` [PATCH 04/10] arm64: Add EL2 switch to soft_restart Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24 10:57   ` Mark Rutland
2014-10-24 10:57     ` Mark Rutland
2014-10-31 23:47     ` Geoff Levand
2014-10-31 23:47       ` Geoff Levand
2014-10-23 23:10 ` [PATCH 01/10] arm64/kvm: Fix assembler compatibility of macros Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24  9:24   ` Mark Rutland
2014-10-24  9:24     ` Mark Rutland
2014-10-27 12:13     ` Will Deacon
2014-10-27 12:13       ` Will Deacon
2014-10-27 12:45       ` Christoffer Dall
2014-10-27 12:45         ` Christoffer Dall
2014-10-31 23:06       ` [PATCH V2 " Geoff Levand
2014-10-31 23:06         ` Geoff Levand
2014-10-23 23:10 ` [PATCH 09/10] arm64/kexec: Enable kexec in the arm64 defconfig Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-24 10:31   ` Mark Rutland
2014-10-24 10:31     ` Mark Rutland
2014-10-31 23:50     ` Geoff Levand
2014-10-31 23:50       ` Geoff Levand
2014-11-03 20:05       ` Mark Rutland
2014-11-03 20:05         ` Mark Rutland
2014-11-04  1:49         ` Geoff Levand
2014-11-04  1:49           ` Geoff Levand
2014-10-23 23:10 ` [PATCH 10/10] arm64/kexec: Add pr_devel output Geoff Levand
2014-10-23 23:10   ` Geoff Levand
2014-10-31  7:52 ` [PATCH 00/10] arm64 kexec kernel patches V5 Dave Young
2014-10-31  7:52   ` Dave Young
2014-10-31 23:25   ` Geoff Levand
2014-10-31 23:25     ` Geoff Levand
2014-11-06  2:01     ` Dave Young
2014-11-06  2:01       ` Dave Young
2014-11-13  8:37     ` Dave Young
2014-11-13  8:37       ` Dave Young
2014-11-13 23:50       ` Geoff Levand
2014-11-13 23:50         ` Geoff Levand
2014-11-17  3:49         ` Dave Young
2014-11-17  3:49           ` Dave Young
2014-11-03 19:46   ` Mark Rutland
2014-11-03 19:46     ` Mark Rutland
2014-11-06  1:56     ` Dave Young
2014-11-06  1:56       ` Dave Young
2014-11-06 15:08       ` Mark Rutland
2014-11-06 15:08         ` Mark Rutland
2014-11-07  0:41         ` Grant Likely
2014-11-07  0:41           ` Grant Likely
2014-11-07 10:16           ` Mark Rutland
2014-11-07 10:16             ` Mark Rutland
2014-11-07 10:41             ` Ard Biesheuvel
2014-11-07 10:41               ` Ard Biesheuvel
2014-11-07 10:45               ` Ard Biesheuvel
2014-11-07 10:45                 ` Ard Biesheuvel
2014-11-07 10:46                 ` Ard Biesheuvel
2014-11-07 10:46                   ` Ard Biesheuvel
2014-11-07 11:35               ` Mark Rutland
2014-11-07 11:35                 ` Mark Rutland
2014-11-07 11:42                 ` Ard Biesheuvel
2014-11-07 11:42                   ` Ard Biesheuvel
2014-11-07 22:34                 ` Grant Likely
2014-11-07 22:34                   ` Grant Likely
2014-11-06 12:16 ` Arun Chandran
2014-11-06 12:16   ` Arun Chandran
2014-11-06 15:28   ` Mark Rutland
2014-11-06 15:28     ` Mark Rutland
2014-11-06 16:13     ` Arun Chandran
2014-11-06 16:13       ` Arun Chandran
2014-11-06 18:25       ` Geoff Levand
2014-11-06 18:25         ` Geoff Levand
2014-11-07  6:26         ` Arun Chandran
2014-11-07  6:26           ` Arun Chandran
2014-11-06 18:39       ` Mark Rutland
2014-11-06 18:39         ` Mark Rutland
2014-11-07  6:36         ` Arun Chandran
2014-11-07  6:36           ` Arun Chandran
2014-11-10  7:17       ` Dave Young
2014-11-10  7:17         ` Dave Young
2014-11-10  8:35         ` Arun Chandran
2014-11-10  8:35           ` Arun Chandran
2014-11-10  9:24           ` Dave Young
2014-11-10  9:24             ` Dave Young
2014-11-12  9:56           ` Dave Young
2014-11-12  9:56             ` 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=20141024105111.GD24265@leverpostej \
    --to=mark.rutland@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=Marc.Zyngier@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=geoff@infradead.org \
    --cc=grant.likely@linaro.org \
    --cc=ian.campbell@citrix.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=stefano.stabellini@eu.citrix.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.