From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [Linaro-acpi] Touching the initrd before paging_init
Date: Tue, 15 Dec 2015 10:22:21 +0000 [thread overview]
Message-ID: <20151215102220.GA31299@leverpostej> (raw)
In-Reply-To: <566F9C3D.4090306@redhat.com>
On Mon, Dec 14, 2015 at 11:51:09PM -0500, Jon Masters wrote:
> Addendum. I was able to get the initrd based ACPI table override
> working...HOWEVER...
>
> *** I had to implement a custom memcpy routine to do so ***
>
> Per some internal suggestions, I tried moving map_mem earlier (prior to
> doing boot time ACPI table parsing, in order to avoid needing to abuse
> fixmaps to touch the initrd contents), which works. For reading the
> ramdisk cpio content (the kernel code still uses a fixmap in the initrd
> override driver code to map the newly created tables in memory).
>
> But the reading of that cpio content into the new table locations is
> done using the kernel memcpy routine to early_ioremap'd memory (Device
> memory), which is architecturally sensitive to missaligned accesses. The
> in-kernel memcpy routine only checks the alignment of the source pointed
> when it begins copying, and doesn't handle the case that the natural
> alignment differs between source and destination. Therefore, the kernel
> rolls over and plays dead unless I provide a hacked up jcm_memcpy that
> just does byte copies. Then everything "works".
You don't need a custom memcpy. All you need to do is use
early_memremap, as we do for relocate_initrd, to get a Normal Cacheable
mapping. See:
setup_arch()
relocate_initrd()
copy_from_early_mem()
early_memremap()
memcpy()
early_memunmap()
Mark.
next prev parent reply other threads:[~2015-12-15 10:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-13 8:47 Touching the initrd before paging_init Jon Masters
2015-12-07 6:05 ` Mark Rutland
2015-12-13 16:54 ` [Linaro-acpi] " G Gregory
2015-12-13 16:59 ` Leif Lindholm
2015-12-13 21:36 ` Jon Masters
2015-12-13 22:02 ` Jon Masters
2015-12-13 22:15 ` G Gregory
2015-12-13 22:19 ` Jon Masters
2015-12-15 11:19 ` G Gregory
2015-12-15 15:36 ` Jon Masters
2015-12-15 16:13 ` G Gregory
2015-12-15 16:28 ` G Gregory
2015-12-15 16:31 ` Jon Masters
2015-12-15 17:08 ` G Gregory
2015-12-15 19:22 ` G Gregory
2015-12-13 22:15 ` Jon Masters
2015-12-15 4:51 ` Jon Masters
2015-12-15 10:14 ` Leif Lindholm
2015-12-15 10:22 ` Mark Rutland [this message]
2015-12-15 11:43 ` Måns Rullgård
2015-12-15 15:29 ` Jon Masters
2015-12-15 15:42 ` Mark Rutland
2015-12-15 16:31 ` Måns Rullgård
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=20151215102220.GA31299@leverpostej \
--to=mark.rutland@arm.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 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.