target arm queue:
* handle broken AArch64 kernels which assume DTB won't cross a 2MB boundary * correct broken SCTLR_EL3 reset value -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCAAGBQJVpok4AAoJEDwlJe0UNgzerQcP/3Ko9kiRmhUhFGE5tvUafXms cCuZzk12+WWsucUVrYG7FNDK1us0uzaaQTxb9Oe1wH8F2KnI7zbhzBKh+02LiwT8 yO8k+shVT76g7c1kNRKPhEO5OvsfyYhhdA+5mxCyBMH3qnfHbcpLDHkwTZsBbn69 stYSwiVF0oD1bLTq9gVsLkfTpmtBEXu9eXg9lSoSXXROWtN6VnElddzNCqN2ML7S 8QoS9QSWagXxuTbdXdum/+WDRZLMLaat9Nj/qpMbGQIYDFgE6SxV28t0kdjYDthr O2UJpLZibvgodKgAWoSIMKTjVp42Rkd3kpM9xV4iuBBXmWMNvfHvtm1EoIp0VXnD TTNh/+7lyGoOSl3hy6l/Emhk0NN/if5BDAJnwbTwrzisks5Em1nLigkRZ2reFqYj y876ynrn5mrgtZgQSX9j9yT0UGI5uoMybed9VUgrTJeRuaZjSObBkQqmurS8yIG4 FOm8FMFb6vhSJmH1B550UoxxoQ8uWogeTy0p2S9/bsgTePEH+R0NHAfSIYugSZwR r0VvonWnQido8+9P8bAyb8yvSMhRyq/qSfnrRW6Bd7eNOyJNwVj2bVFX1IL3LABf HN9kiH13wXWiXtujq5tdIY7OAYarVueyKt3gZJ54OmMfVKzq6UOKkv31xwRYOmzA YotfqWATmS9LkE6/T5O4 =JXJo -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20150715' into staging target arm queue: * handle broken AArch64 kernels which assume DTB won't cross a 2MB boundary * correct broken SCTLR_EL3 reset value # gpg: Signature made Wed Jul 15 17:24:24 2015 BST using RSA key ID 14360CDE # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" * remotes/pmaydell/tags/pull-target-arm-20150715: hw/arm/boot: Increase fdt alignment target-arm: Fix broken SCTLR_EL3 reset Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
7692401a08
@ -735,12 +735,28 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
|
||||
* we point to the kernel args.
|
||||
*/
|
||||
if (have_dtb(info)) {
|
||||
/* Place the DTB after the initrd in memory. Note that some
|
||||
* kernels will trash anything in the 4K page the initrd
|
||||
* ends in, so make sure the DTB isn't caught up in that.
|
||||
*/
|
||||
hwaddr dtb_start = QEMU_ALIGN_UP(info->initrd_start + initrd_size,
|
||||
4096);
|
||||
hwaddr align;
|
||||
hwaddr dtb_start;
|
||||
|
||||
if (elf_machine == EM_AARCH64) {
|
||||
/*
|
||||
* Some AArch64 kernels on early bootup map the fdt region as
|
||||
*
|
||||
* [ ALIGN_DOWN(fdt, 2MB) ... ALIGN_DOWN(fdt, 2MB) + 2MB ]
|
||||
*
|
||||
* Let's play safe and prealign it to 2MB to give us some space.
|
||||
*/
|
||||
align = 2 * 1024 * 1024;
|
||||
} else {
|
||||
/*
|
||||
* Some 32bit kernels will trash anything in the 4K page the
|
||||
* initrd ends in, so make sure the DTB isn't caught up in that.
|
||||
*/
|
||||
align = 4096;
|
||||
}
|
||||
|
||||
/* Place the DTB after the initrd in memory with alignment. */
|
||||
dtb_start = QEMU_ALIGN_UP(info->initrd_start + initrd_size, align);
|
||||
if (load_dtb(dtb_start, info, 0) < 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
@ -2752,6 +2752,7 @@ static const ARMCPRegInfo el3_cp_reginfo[] = {
|
||||
.access = PL3_RW, .writefn = vbar_write, .resetvalue = 0,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.mvbar) },
|
||||
{ .name = "SCTLR_EL3", .state = ARM_CP_STATE_AA64,
|
||||
.type = ARM_CP_ALIAS, /* reset handled by AArch32 view */
|
||||
.opc0 = 3, .opc1 = 6, .crn = 1, .crm = 0, .opc2 = 0,
|
||||
.access = PL3_RW, .raw_writefn = raw_write, .writefn = sctlr_write,
|
||||
.fieldoffset = offsetof(CPUARMState, cp15.sctlr_el[3]) },
|
||||
|
Loading…
Reference in New Issue
Block a user