* [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header @ 2022-11-21 12:16 Yanteng Si 2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si 2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si 0 siblings, 2 replies; 5+ messages in thread From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw) To: chenhuacai, corbet, alexs, seakeel Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc, loongarch, siyanteng01 v1: * Add boot image header. * Translate boot-image-header into Chinese. Yanteng Si (2): docs/LoongArch: Add boot image header docs/zh_CN: Add boot-image-header Chinese translation Documentation/loongarch/boot-image-header.rst | 76 ++++++++++++++++++ Documentation/loongarch/index.rst | 1 + .../zh_CN/loongarch/boot-image-header.rst | 77 +++++++++++++++++++ .../translations/zh_CN/loongarch/index.rst | 1 + 4 files changed, 155 insertions(+) create mode 100644 Documentation/loongarch/boot-image-header.rst create mode 100644 Documentation/translations/zh_CN/loongarch/boot-image-header.rst -- 2.31.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v1 1/2] docs/LoongArch: Add boot image header 2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si @ 2022-11-21 12:16 ` Yanteng Si 2022-11-21 16:58 ` Wu XiangCheng 2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si 1 sibling, 1 reply; 5+ messages in thread From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw) To: chenhuacai, corbet, alexs, seakeel Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc, loongarch, siyanteng01, Xiaotian Wu Describes the meaning and value of the image header field. Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn> Signed-off-by: Yanteng Si <siyanteng@loongson.cn> --- Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++ Documentation/loongarch/index.rst | 1 + 2 files changed, 77 insertions(+) create mode 100644 Documentation/loongarch/boot-image-header.rst diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst new file mode 100644 index 000000000000..92a953a6f2e6 --- /dev/null +++ b/Documentation/loongarch/boot-image-header.rst @@ -0,0 +1,76 @@ +.. SPDX-License-Identifier: GPL-2.0 + +==================================== +Boot image header in LoongArch Linux +==================================== + +:Author: Yanteng Si <siyanteng@loongson.cn> +:Date: 18 Nov 2022 + +This document only describes the boot image header details for +LoongArch Linux. + +The following 64-byte header is present in decompressed Linux +kernel image:: + + u32 MZ_MAGIC /* "MZ", MS-DOS header */ + u32 res0 = 0 /* reserved */ + u64 kernel_entry /* Kernel entry point */ + u64 _end - _text /* Kernel image effective size */ + u64 0 /* Kernel image load offset from start of RAM */ + u64 res1 = 0 /* reserved */ + u64 res2 = 0 /* reserved */ + u64 res3 = 0 /* reserved */ + u32 res4 = 0 /* reserved */ + u32 pe_header - _head /* Offset to the PE header */ + + +Header notes +============ + +Currently, LoongArch has removed the "magic" field. + +According to the EFI specification, the PE/COFF image file header is +required at the beginning of the kernel image; the LoongArch kernel +supports the EFI stub, so the first two bytes of the kernel image header +are "MZ" magic characters, and 0x3c should point to the rest of the +PE/COFF file header, between which The kernel entry point, image +effectivesize, and image load offset layout are as follows:: + + +-----------------------------------------------+ + 0x0: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + +-----------------------------------------------+ + 0x8: | MZ_MAGIC | res0 | + +-----------------------------------------------+ + 0x10: | kernel_entry | + +-----------------------------------------------+ + 0x18: | _end - _text | + +-----------------------------------------------+ + 0x20: | 0 | + +-----------------------------------------------+ + 0x28: | res1 | + +-----------------------------------------------+ + 0x30: | res2 | + +-----------------------------------------------+ + 0x38: | res3 | + +-----------------------------------------------+ + 0x40: | res14 | PE header | + +-----------------------------------------------+ + + +All bit fields are in little endian: + + - MZ: Effective length of 2 bytes; + + - kernel entry point: leaving 6 bytes blank in front, starting + from 0x8, with a effective length of 8 bytes; + + - kernel image effective size: Immediately following the kernel + entry point, with a effective length of 8 bytes, this field is + required for the bootloader; + + - kernel image load offset: Immediately following the kernel + image effective size, with a effective length of 8 bytes; + + - Offset to the PE header: leaving 28 bytes blank in front, + starting from 0x3c, with a effective length of 4 bytes. diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst index aaba648db907..97419821adf9 100644 --- a/Documentation/loongarch/index.rst +++ b/Documentation/loongarch/index.rst @@ -10,6 +10,7 @@ LoongArch Architecture introduction irq-chip-model + boot-image-header features -- 2.31.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v1 1/2] docs/LoongArch: Add boot image header 2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si @ 2022-11-21 16:58 ` Wu XiangCheng 2022-11-24 7:10 ` Yanteng Si 0 siblings, 1 reply; 5+ messages in thread From: Wu XiangCheng @ 2022-11-21 16:58 UTC (permalink / raw) To: Yanteng Si Cc: chenhuacai, corbet, alexs, seakeel, kernel, jiaxun.yang, linux-doc, loongarch, siyanteng01, Xiaotian Wu, Yun Liu +Cc: Yun Liu <liuyun@loongson.cn> 2022-11-21 (一) 20:16:30 +0800 Yanteng Si 曰: > Describes the meaning and value of the image header field. > > Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn> > Signed-off-by: Yanteng Si <siyanteng@loongson.cn> > --- > Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++ > Documentation/loongarch/index.rst | 1 + > 2 files changed, 77 insertions(+) > create mode 100644 Documentation/loongarch/boot-image-header.rst > > diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst > new file mode 100644 > index 000000000000..92a953a6f2e6 > --- /dev/null > +++ b/Documentation/loongarch/boot-image-header.rst > @@ -0,0 +1,76 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +==================================== > +Boot image header in LoongArch Linux > +==================================== > + > +:Author: Yanteng Si <siyanteng@loongson.cn> > +:Date: 18 Nov 2022 > + > +This document only describes the boot image header details for > +LoongArch Linux. > + > +The following 64-byte header is present in decompressed Linux > +kernel image:: > + > + u32 MZ_MAGIC /* "MZ", MS-DOS header */ > + u32 res0 = 0 /* reserved */ > + u64 kernel_entry /* Kernel entry point */ > + u64 _end - _text /* Kernel image effective size */ > + u64 0 /* Kernel image load offset from start of RAM */ > + u64 res1 = 0 /* reserved */ > + u64 res2 = 0 /* reserved */ > + u64 res3 = 0 /* reserved */ > + u32 res4 = 0 /* reserved */ > + u32 pe_header - _head /* Offset to the PE header */ > + Any code related need to be linked here? > + > +Header notes > +============ > + > +Currently, LoongArch has removed the "magic" field. > + > +According to the EFI specification, the PE/COFF image file header is > +required at the beginning of the kernel image; the LoongArch kernel > +supports the EFI stub, so the first two bytes of the kernel image header > +are "MZ" magic characters, and 0x3c should point to the rest of the > +PE/COFF file header, between which The kernel entry point, image > +effectivesize, and image load offset layout are as follows:: > + > + +-----------------------------------------------+ > + 0x0: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | > + +-----------------------------------------------+ > + 0x8: | MZ_MAGIC | res0 | > + +-----------------------------------------------+ > + 0x10: | kernel_entry | > + +-----------------------------------------------+ > + 0x18: | _end - _text | > + +-----------------------------------------------+ > + 0x20: | 0 | > + +-----------------------------------------------+ > + 0x28: | res1 | > + +-----------------------------------------------+ > + 0x30: | res2 | > + +-----------------------------------------------+ > + 0x38: | res3 | > + +-----------------------------------------------+ > + 0x40: | res14 | PE header | > + +-----------------------------------------------+ > + emmm, this figure... So MZ_MAGIC start from 0x08 ? Or 0 1 2 3 4 5 6 7 +-----------------------+-----------------------+ 0x00 | MZ_MAGIC | res0 | +-----------------------+-----------------------+ 0x08 | kernel_entry | +-----------------------------------------------+ 0x10 | _end - _text | +-----------------------------------------------+ 0x18 | 0 | +-----------------------------------------------+ 0x20 | res1 | +-----------------------------------------------+ 0x28 | res2 | +-----------------------------------------------+ 0x30 | res3 | +-----------------------+-----------------------+ 0x38 | res14 | PE header | +-----------------------+-----------------------+ If the figure is too difficult to draw, a simple table can also be used to instead. Offset Name Size Note ... > + > +All bit fields are in little endian: > + > + - MZ: Effective length of 2 bytes; > + > + - kernel entry point: leaving 6 bytes blank in front, starting > + from 0x8, with a effective length of 8 bytes; > + > + - kernel image effective size: Immediately following the kernel > + entry point, with a effective length of 8 bytes, this field is > + required for the bootloader; > + > + - kernel image load offset: Immediately following the kernel > + image effective size, with a effective length of 8 bytes; > + > + - Offset to the PE header: leaving 28 bytes blank in front, > + starting from 0x3c, with a effective length of 4 bytes. > diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst > index aaba648db907..97419821adf9 100644 > --- a/Documentation/loongarch/index.rst > +++ b/Documentation/loongarch/index.rst > @@ -10,6 +10,7 @@ LoongArch Architecture > > introduction > irq-chip-model > + boot-image-header > > features > > -- > 2.31.1 > -- Wu XiangCheng 0x32684A40BCA7AEA7 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v1 1/2] docs/LoongArch: Add boot image header 2022-11-21 16:58 ` Wu XiangCheng @ 2022-11-24 7:10 ` Yanteng Si 0 siblings, 0 replies; 5+ messages in thread From: Yanteng Si @ 2022-11-24 7:10 UTC (permalink / raw) To: Wu XiangCheng Cc: chenhuacai, corbet, alexs, seakeel, kernel, jiaxun.yang, linux-doc, loongarch, siyanteng01, Xiaotian Wu, Yun Liu On 11/22/22 00:58, Wu XiangCheng wrote: > +Cc: Yun Liu <liuyun@loongson.cn> > > 2022-11-21 (一) 20:16:30 +0800 Yanteng Si 曰: >> Describes the meaning and value of the image header field. >> >> Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn> >> Signed-off-by: Yanteng Si <siyanteng@loongson.cn> >> --- >> Documentation/loongarch/boot-image-header.rst | 76 +++++++++++++++++++ >> Documentation/loongarch/index.rst | 1 + >> 2 files changed, 77 insertions(+) >> create mode 100644 Documentation/loongarch/boot-image-header.rst >> >> diff --git a/Documentation/loongarch/boot-image-header.rst b/Documentation/loongarch/boot-image-header.rst >> new file mode 100644 >> index 000000000000..92a953a6f2e6 >> --- /dev/null >> +++ b/Documentation/loongarch/boot-image-header.rst >> @@ -0,0 +1,76 @@ >> +.. SPDX-License-Identifier: GPL-2.0 >> + >> +==================================== >> +Boot image header in LoongArch Linux >> +==================================== >> + >> +:Author: Yanteng Si <siyanteng@loongson.cn> >> +:Date: 18 Nov 2022 >> + >> +This document only describes the boot image header details for >> +LoongArch Linux. >> + >> +The following 64-byte header is present in decompressed Linux >> +kernel image:: >> + >> + u32 MZ_MAGIC /* "MZ", MS-DOS header */ >> + u32 res0 = 0 /* reserved */ >> + u64 kernel_entry /* Kernel entry point */ >> + u64 _end - _text /* Kernel image effective size */ >> + u64 0 /* Kernel image load offset from start of RAM */ >> + u64 res1 = 0 /* reserved */ >> + u64 res2 = 0 /* reserved */ >> + u64 res3 = 0 /* reserved */ >> + u32 res4 = 0 /* reserved */ >> + u32 pe_header - _head /* Offset to the PE header */ >> + > Any code related need to be linked here? The related code is in line 22 of the arch/loongarch/kernel/head.S, which is not very readable. > >> + >> +Header notes >> +============ >> + >> +Currently, LoongArch has removed the "magic" field. >> + >> +According to the EFI specification, the PE/COFF image file header is >> +required at the beginning of the kernel image; the LoongArch kernel >> +supports the EFI stub, so the first two bytes of the kernel image header >> +are "MZ" magic characters, and 0x3c should point to the rest of the >> +PE/COFF file header, between which The kernel entry point, image >> +effectivesize, and image load offset layout are as follows:: >> + >> + +-----------------------------------------------+ >> + 0x0: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | >> + +-----------------------------------------------+ >> + 0x8: | MZ_MAGIC | res0 | >> + +-----------------------------------------------+ >> + 0x10: | kernel_entry | >> + +-----------------------------------------------+ >> + 0x18: | _end - _text | >> + +-----------------------------------------------+ >> + 0x20: | 0 | >> + +-----------------------------------------------+ >> + 0x28: | res1 | >> + +-----------------------------------------------+ >> + 0x30: | res2 | >> + +-----------------------------------------------+ >> + 0x38: | res3 | >> + +-----------------------------------------------+ >> + 0x40: | res14 | PE header | >> + +-----------------------------------------------+ >> + > emmm, this figure... > > So MZ_MAGIC start from 0x08 ? Form 0x00. > > Or > > 0 1 2 3 4 5 6 7 > +-----------------------+-----------------------+ > 0x00 | MZ_MAGIC | res0 | > +-----------------------+-----------------------+ > 0x08 | kernel_entry | > +-----------------------------------------------+ > 0x10 | _end - _text | > +-----------------------------------------------+ > 0x18 | 0 | > +-----------------------------------------------+ > 0x20 | res1 | > +-----------------------------------------------+ > 0x28 | res2 | > +-----------------------------------------------+ > 0x30 | res3 | > +-----------------------+-----------------------+ > 0x38 | res14 | PE header | > +-----------------------+-----------------------+ Great! In patch V2: res14 -> res4, I don't know why, I misspelled. Thanks, Yanteng > > If the figure is too difficult to draw, a simple table can also be used > to instead. > > Offset Name Size Note > ... > >> + >> +All bit fields are in little endian: >> + >> + - MZ: Effective length of 2 bytes; >> + >> + - kernel entry point: leaving 6 bytes blank in front, starting >> + from 0x8, with a effective length of 8 bytes; >> + >> + - kernel image effective size: Immediately following the kernel >> + entry point, with a effective length of 8 bytes, this field is >> + required for the bootloader; >> + >> + - kernel image load offset: Immediately following the kernel >> + image effective size, with a effective length of 8 bytes; >> + >> + - Offset to the PE header: leaving 28 bytes blank in front, >> + starting from 0x3c, with a effective length of 4 bytes. >> diff --git a/Documentation/loongarch/index.rst b/Documentation/loongarch/index.rst >> index aaba648db907..97419821adf9 100644 >> --- a/Documentation/loongarch/index.rst >> +++ b/Documentation/loongarch/index.rst >> @@ -10,6 +10,7 @@ LoongArch Architecture >> >> introduction >> irq-chip-model >> + boot-image-header >> >> features >> >> -- >> 2.31.1 >> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation 2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si 2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si @ 2022-11-21 12:16 ` Yanteng Si 1 sibling, 0 replies; 5+ messages in thread From: Yanteng Si @ 2022-11-21 12:16 UTC (permalink / raw) To: chenhuacai, corbet, alexs, seakeel Cc: Yanteng Si, kernel, wu.xiangcheng, jiaxun.yang, linux-doc, loongarch, siyanteng01, Xiaotian Wu Translate ../loongarch/boot-image-header.rst into Chinese. Suggested-by: Xiaotian Wu <wuxiaotian@loongson.cn> Signed-off-by: Yanteng Si <siyanteng@loongson.cn> --- .../zh_CN/loongarch/boot-image-header.rst | 77 +++++++++++++++++++ .../translations/zh_CN/loongarch/index.rst | 1 + 2 files changed, 78 insertions(+) create mode 100644 Documentation/translations/zh_CN/loongarch/boot-image-header.rst diff --git a/Documentation/translations/zh_CN/loongarch/boot-image-header.rst b/Documentation/translations/zh_CN/loongarch/boot-image-header.rst new file mode 100644 index 000000000000..826bce5bf550 --- /dev/null +++ b/Documentation/translations/zh_CN/loongarch/boot-image-header.rst @@ -0,0 +1,77 @@ +.. SPDX-License-Identifier: GPL-2.0 + +.. include:: ../disclaimer-zh_CN.rst + +:Original: Documentation/loongarch/boot-image-header.rst + +:翻译: + + 司延腾 Yanteng Si <siyanteng@loongson.cn> + +============================= +LoongArch Linux启动镜像文件头 +============================= + +:作者: 司延腾 <siyanteng@loongson.cn> +:日期: 18 Nov 2022 + +此文档仅描述LoongArch Linux 启动文件头详情。 + + +在非压缩的Linux内核镜像中存在以下64字节的文件头:: + + u32 MZ_MAGIC /* "MZ", MS-DOS 头 */ + u32 res0 = 0 /* 保留 */ + u64 kernel_entry /* 内核入口点 */ + u64 _end - _text /* 内核镜像有效大小 */ + u64 0 /* 从RAM开始的加载内核镜像的偏移量 */ + u64 res1 = 0 /* 保留 */ + u64 res2 = 0 /* 保留 */ + u64 res3 = 0 /* 保留 */ + u32 res4 = 0 /* 保留 */ + u32 pe_header - _head /* 到PE头的偏移量 */ + + +镜像头注释 +========== + +目前LoongArch已经移除“magic”结构体成员。 + +按照EFI规范的规定,在内核镜像的开始需要PE/COFF镜像文件头。当前LoongArch内核支持 +EFI stub,故内核镜像头最开始两字节为“MZ”魔术字符,且0x3c处应指向PE/COFF文件头的 +其余部分,在此之间,内核的入口点、有效镜像大小、镜像加载偏移布局如下:: + + +-----------------------------------------------+ + 0x0: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + +-----------------------------------------------+ + 0x8: | MZ_MAGIC | res0 | + +-----------------------------------------------+ + 0x10: | kernel_entry | + +-----------------------------------------------+ + 0x18: | _end - _text | + +-----------------------------------------------+ + 0x20: | 0 | + +-----------------------------------------------+ + 0x28: | res1 | + +-----------------------------------------------+ + 0x30: | res2 | + +-----------------------------------------------+ + 0x38: | res3 | + +-----------------------------------------------+ + 0x40: | res14 | PE header | + +-----------------------------------------------+ + + + + +所有的位域都是小端序: + + - MZ:有效长度为2字节; + + - 内核入口点: 前留空6个字节,自0x8开始,有效长度为8字节; + + - 内核镜像有效大小: 紧接内核入口点,有效长度为8字节,该成员对于引导器来说是必须的; + + - 内核镜像加载偏移: 紧接内核镜像有效大小,有效长度为8字节; + + - 到PE头的偏移量: 前留空28字节,自0x3c开始,有效长度为4字节。 diff --git a/Documentation/translations/zh_CN/loongarch/index.rst b/Documentation/translations/zh_CN/loongarch/index.rst index 7d23eb78379d..625597792fd9 100644 --- a/Documentation/translations/zh_CN/loongarch/index.rst +++ b/Documentation/translations/zh_CN/loongarch/index.rst @@ -15,6 +15,7 @@ LoongArch体系结构 introduction irq-chip-model + boot-image-header features -- 2.31.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-24 7:22 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-11-21 12:16 [PATCH v1 0/2] docs/LoongArch: Add English and Chinese versions of boot image header Yanteng Si 2022-11-21 12:16 ` [PATCH v1 1/2] docs/LoongArch: Add " Yanteng Si 2022-11-21 16:58 ` Wu XiangCheng 2022-11-24 7:10 ` Yanteng Si 2022-11-21 12:16 ` [PATCH v1 2/2] docs/zh_CN: Add boot-image-header Chinese translation Yanteng Si
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox