Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1033387AbbKEQNb (ORCPT ); Thu, 5 Nov 2015 11:13:31 -0500 Received: from foss.arm.com ([217.140.101.70]:37887 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1033088AbbKEQN3 (ORCPT ); Thu, 5 Nov 2015 11:13:29 -0500 Date: Thu, 5 Nov 2015 16:13:15 +0000 From: Mark Rutland To: Leo Yan Cc: Rob Herring , Catalin Marinas , Will Deacon , Pawel Moll , Ian Campbell , Kumar Gala , Bintian Wang , Haojian Zhuang , Wei Xu , Yiping Xu , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Mark Brown , Tyler Baker Subject: Re: [PATCH 1/4] arm64: dts: Reserve memory regions for hi6220 Message-ID: <20151105161315.GE32247@leverpostej> References: <1444365376-10728-1-git-send-email-leo.yan@linaro.org> <1444365376-10728-2-git-send-email-leo.yan@linaro.org> <20151009133028.GB21629@leverpostej> <20151009142034.GB528@leoy-linaro> <20151029083301.GB16063@leoy-linaro> <20151105135449.GD27192@leoy-linaro> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20151105135449.GD27192@leoy-linaro> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7597 Lines: 156 On Thu, Nov 05, 2015 at 09:54:50PM +0800, Leo Yan wrote: > On Thu, Oct 29, 2015 at 04:33:01PM +0800, Leo Yan wrote: > > On Wed, Oct 28, 2015 at 11:32:29PM -0500, Rob Herring wrote: > > > On Fri, Oct 9, 2015 at 9:20 AM, Leo Yan wrote: > > > > On Fri, Oct 09, 2015 at 08:50:13AM -0500, Rob Herring wrote: > > > >> On Fri, Oct 9, 2015 at 8:30 AM, Mark Rutland wrote: > > > >> > On Fri, Oct 09, 2015 at 08:17:16AM -0500, Rob Herring wrote: > > > >> >> On Thu, Oct 8, 2015 at 11:36 PM, Leo Yan wrote: > > > >> >> > On Hi6220, below memory regions in DDR have specific purpose: > > > >> >> > > > > >> >> > 0x05e0,0000 - 0x05ef,ffff: For MCU firmware using at runtime; > > > >> >> > 0x06df,f000 - 0x06df,ffff: For mailbox message data; > > > >> >> > 0x0740,f000 - 0x0740,ffff: For MCU firmware's section; > > > >> >> > 0x3e00,0000 - 0x3fff,ffff: For OP-TEE. > > > >> >> > > > > >> >> > This patch reserves these memory regions in DT. > > > >> >> > > > > >> >> > Signed-off-by: Leo Yan > > > >> >> > --- > > > >> >> > arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts | 16 ++++++++++++---- > > > >> >> > 1 file changed, 12 insertions(+), 4 deletions(-) > > > >> >> > > > > >> >> > diff --git a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts > > > >> >> > index e36a539..e3f4cb3 100644 > > > >> >> > --- a/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts > > > >> >> > +++ b/arch/arm64/boot/dts/hisilicon/hi6220-hikey.dts > > > >> >> > @@ -7,9 +7,6 @@ > > > >> >> > > > > >> >> > /dts-v1/; > > > >> >> > > > > >> >> > -/*Reserved 1MB memory for MCU*/ > > > >> >> > -/memreserve/ 0x05e00000 0x00100000; > > > >> >> > - > > > >> >> > > > >> >> Why does memreserve not work for you? You can have multiple entries. > > > >> >> > > > >> >> > #include "hi6220.dtsi" > > > >> >> > > > > >> >> > / { > > > >> >> > @@ -24,8 +21,19 @@ > > > >> >> > stdout-path = "serial0:115200n8"; > > > >> >> > }; > > > >> >> > > > > >> >> > + /* > > > >> >> > + * Reserve below regions from memory node: > > > >> >> > + * > > > >> >> > + * - 0x05e0,0000 - 0x05ef,ffff: MCU firmware runtime using > > > >> >> > + * - 0x06df,f000 - 0x06df,ffff: Mailbox message data > > > >> >> > + * - 0x0740,f000 - 0x0740,ffff: MCU firmware section > > > >> >> > + * - 0x3e00,0000 - 0x3fff,ffff: OP-TEE > > > >> >> > + */ > > > >> >> > memory@0 { > > > >> >> > device_type = "memory"; > > > >> >> > - reg = <0x0 0x0 0x0 0x40000000>; > > > >> >> > + reg = <0x00000000 0x00000000 0x00000000 0x05e00000>, > > > >> >> > + <0x00000000 0x05f00000 0x00000000 0x00eff000>, > > > >> >> > + <0x00000000 0x06e00000 0x00000000 0x0060f000>, > > > >> >> > + <0x00000000 0x07410000 0x00000000 0x36bf0000>; > > > >> >> > > > >> >> No, don't do this. Please use memreserve or reserved-memory binding[1] > > > >> >> or combination of both. Probably reserved-memory if you need the > > > >> >> kernel to access some of these regions. > > > >> > > > > >> > I disagree at least for those portions owned by the secure world. The > > > >> > kernel shouldn't map those at all, so memreserve isn't appropriate. That > > > >> > covers OP-TEE and the MCU firmware regions, and I'd expec the EFI memory > > > >> > map to not list those as available to the kernel. > > > >> > > > >> I'm fine carving out the beginning or end, but otherwise think memory > > > >> should correspond to the physical memory. We have a way to describe > > > >> holes to keep out, so we should use them. If secure world uses the DT, > > > >> then it would either want to know its region in memory or add the DT > > > >> data to say what it is using. We need that to be easy to find or easy > > > >> to set, respectively. The size secure world needs could vary as well. > > > >> > > > >> The fact that the kernel maps the memory is the kernel's problem, not > > > >> a DT problem. > > > >> > > > > > > > > Just give more input here. In previous time, we have long discussion [1]; > > > > So actually your suggestion is exactly same what my old patch. > > > > > > > > From previous discussion, i think here have an assumtion: Use UEFI as > > > > bootloader, the kernel will ignore (or remove) memreserve and reserved-memory > > > > nodes, so just like Mark said "the EFI memory map to not list those > > > > as available to the kernel". My new patch is just to follow this and > > > > also make sure they have same behavior for different bootloader > > > > (between UEFI and uboot). > > > > > > I've read thru the thread and see 2 main conclusions. Using > > > reserved-memory is problematic since things like grub don't support > > > that. That is fine and we should stick with /mem-reserve/ for now. > > > > Thanks for reviewing, Rob. > > > > One thing should note: after booting with UEFI, /memreserve/ nodes > > will be deleted by UEFI stub; and _ONLY_ can use /reserved-memory/ > > node to reserve memory regions. > > > > Ard have another patch [1], after applied this patch, then all > > /memreserve/ nodes and /reserved-memory/ nodes nodes will be ignored > > to scan after booting with UEFI stub. > > > > This is make sense, that means UEFI need provide exactly correct memory > > map info by self and totally not depend on DT structures. > > > > Another minor difference between /memreserve/ node and /reserved-memory/ > > node is: we can add property "no-map" for /reserved-memory/; so that > > means it will totally remove region from memory block. it's more safe > > for the memory region will NOT be mapped twice with different mapping > > attribution. > > > > [1] http://archive.arm.linux.org.uk/lurker/message/20150922.002128.46757034.en.html > > > > > The other thing is the desire to have the memory presented to the kernel > > > be the same whether it comes from UEFI or DT structures. I can see why > > > there is some desire to have that alignment, but that doesn't really > > > buy us anything. We can't eliminate some code path in the kernel doing > > > so. So I still think that the memory node should reflect all of memory > > > as defined by the h/w and mem-reserve should be used for any software > > > defined reserved regions. > > > > i think before we engaged much thinking for UEFI, that's meaningful for > > we found what's correct implementation for UEFI. We need make sure UEFI > > will do correct thing for itself. > > > > If only consider purly from DT's usage, i have no strong opinion to > > stick to use memory node to carve memory regions out. It's okay for me to > > go back to use /reserved-memory/ to reserved regions. > > > > Mark, do you agree with this? > > Ping ... > > Hi Mark, > > Could u help confirm for this? i'm planning to resend new version > patch series in tommorrow, but it's better can get your feedback > firstly. Sorry for the delay. I'm still of the opinion that given the kernel has no business even reading this memory, it does not make sense to use a memreserve. Given that, and the points about other software not knowing aobut /reserved-memory/, I don't think it makes sense to describe the region in the memory nodes. Thanks, Mark. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/