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.
Why is it mapped as device memory?
If that is a legal thing, shouldn't drivers/acpi/osl.c be using memcpy_fromio(), which (on ARM*) does the alignment fixups if required, without going full-bytewise?
/ Leif