From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Date: Thu, 11 Jul 2013 13:06:52 -0600 Subject: [U-Boot] [PATCH] image: Don't relocate ramdisk to highmem In-Reply-To: <20130711182117.92DC0383003@gemini.denx.de> References: <1373500071-6476-1-git-send-email-thierry.reding@gmail.com> <20130711094619.E6D2B383003@gemini.denx.de> <20130711123928.GA13531@bill-the-cat> <20130711150014.GA2198@dhcp-172-17-186-34.nvidia.com> <20130711182117.92DC0383003@gemini.denx.de> Message-ID: <51DF024C.2080102@wwwdotorg.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 07/11/2013 12:21 PM, Wolfgang Denk wrote: > Dear Thierry Reding, > > In message <20130711150014.GA2198@dhcp-172-17-186-34.nvidia.com> you wrote: >> >>> I'm pretty sure it's all architectures, and this is a problem for device >>> trees as well. The tricks done to deal with highmem mean it's not >>> suitable for certain tasks, if I recall things right (it's been a >>> while). >> >> Yes, that's my understanding as well. The same changes were done for >> fdt_high a few months back and ramdisks aren't any different in this >> respect. I was a bit surprised that this hadn't been fixed yet, but >> maybe people just aren't using ramdisks anymore these days, or they >> worked around it by setting initrd_high explicitly. > > This depends a lot on a number of things. For example, you should be > able to use a ramdisk in NOR flash directly, i. e. without loading it > to RAM first - especially if it;s a comprtessed ramdis image, and the > Kernel will copy/uncompress it anyway. That would be nice, but I don't believe the kernel supports that (at least not on ARM): arch/arm/mm/init.c:arm_memblock_init(): > #ifdef CONFIG_BLK_DEV_INITRD > if (phys_initrd_size && > !memblock_is_region_memory(phys_initrd_start, phys_initrd_size)) { > pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region - disabling initrd\n", > (u64)phys_initrd_start, phys_initrd_size); > phys_initrd_start = phys_initrd_size = 0; > } (where "memory" in this context is RAM specifically, IIUC).