|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] Revert "xen: arm: Update arm64 image header"
commit 3572f2fa7b0f6f20eb145bdccaf5888c76be8960
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Wed Jun 29 19:13:20 2016 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Wed Jun 29 19:13:20 2016 +0100
Revert "xen: arm: Update arm64 image header"
This reverts commit 14eedf8e7169b05e383220b682656a449e5f1c08.
This patch is breaking boot on any ARM64 platform (UEFI and bootwrapper).
Requested-by: Julien Grall <julien.grall@xxxxxxx>
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/arm/kernel.c | 43 ++++++++++++++++---------------------------
1 file changed, 16 insertions(+), 27 deletions(-)
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 00be235..3f6cce3 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -29,7 +29,7 @@
#define ZIMAGE32_MAGIC 0x016f2818
#define ZIMAGE64_MAGIC_V0 0x14000008
-#define ZIMAGE64_MAGIC 0x644d5241 /* "ARM\x64" */
+#define ZIMAGE64_MAGIC_V1 0x644d5241 /* "ARM\x64" */
struct minimal_dtb_header {
uint32_t magic;
@@ -335,19 +335,17 @@ static int kernel_zimage64_probe(struct kernel_info *info,
{
/* linux/Documentation/arm64/booting.txt */
struct {
- union {
- uint32_t code0;
- uint32_t magic0; /* Old header magic */
- };
- uint32_t code1;
- uint64_t text_offset; /* Image load offset, little endian */
- uint64_t image_size; /* Effective Image size, little endian */
- uint64_t flags;
+ uint32_t magic0;
+ uint32_t res0;
+ uint64_t text_offset; /* Image load offset */
+ uint64_t res1;
uint64_t res2;
+ /* zImage V1 only from here */
uint64_t res3;
uint64_t res4;
- uint32_t magic; /* Magic number, little endian, "ARM\x64" */
- uint32_t res5;
+ uint64_t res5;
+ uint32_t magic1;
+ uint32_t res6;
} zimage;
uint64_t start, end;
@@ -356,29 +354,20 @@ static int kernel_zimage64_probe(struct kernel_info *info,
copy_from_paddr(&zimage, addr, sizeof(zimage));
- if ( zimage.magic != ZIMAGE64_MAGIC ) {
- if ( zimage.magic0 == ZIMAGE64_MAGIC_V0 )
- printk(XENLOG_ERR "No valid magic found in header! Kernel too
old\n");
+ if ( zimage.magic0 != ZIMAGE64_MAGIC_V0 &&
+ zimage.magic1 != ZIMAGE64_MAGIC_V1 )
return -EINVAL;
- }
+ /* Currently there is no length in the header, so just use the size */
start = 0;
+ end = size;
/*
- * Where image_size is non-zero image_size is little-endian
- * and must be respected.
+ * Given the above this check is a bit pointless, but leave it
+ * here in case someone adds a length field in the future.
*/
- if ( zimage.image_size )
- end = zimage.image_size;
- else
- end = size;
-
- if ( (end - start) > size ) {
- printk(XENLOG_ERR "Error: Kernel Image size: %lu bytes > bootmodule
size: %lu bytes\n",
- zimage.image_size, (uint64_t)size);
- printk(XENLOG_ERR "The field 'size' does not match the size of
blob!\n");
+ if ( (end - start) > size )
return -EINVAL;
- }
info->zimage.kernel_addr = addr;
info->zimage.len = end - start;
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |